Ich möchte gerne ein Songbook erstellen. Dazu habe ich mir entsprechende Bereiche definiert für Nun habe ich in einem sehr fortgeschrittenen und komplizierten TeX-Songbook gesehen, dass dort per Batch-Datei das Songbook kompiliert und zusammengestellt wurde. Dabei konnte man auswählen, ob die Akkorde gar nicht angezeigt werden sollen, oder nur in der ersten Strophe/dem ersten Refrain, oder immer. Die Markierungen im TeX-File waren, glaube ich, einfach " ^ "-Zeichen, um die Position des Akkords zu signalisieren. Leider habe ich nur sehr grundlegende Kenntnisse von LaTeX; das ist mein erstes größeres Projekt, und ich wüsste gar nicht, wonach ich bezüglich dieser Herausforderung googlen sollte. Darum bin ich für jeden Tipp dankbar! :-) Ich hatte das bei golatex.de schon nachgefragt und wurde von dort hier her verwiesen. Ich versuche mal ein Minimalbeispiel (wie angefragt) zu posten: Open in writeLaTeX
\documentclass{article} \usepackage[showframe]{geometry} \renewcommand\c[1]{ \makebox[0pt]{\begin{tabular}[b]{l@{}@{}}#1\\\mbox{}\end{tabular}}} \newcommand\capo[1]{ \addvspace{15pt}[Capo] #1\newline} \newenvironment{song}[1] {\section{#1}} {} \renewenvironment{verse} {\par\noindent\addvspace{15pt}[Chorus]\newline} {\par\addvspace{\baselineskip}} \newenvironment{intro} {\par\noindent\addvspace{15pt}[Intro]\newline} {\par\addvspace{15pt}} \begin{document} \tableofcontents \begin{song}{Coldplay - Viva La Vida} \capo{1} \begin{intro} C D G Em (x2) \end{intro} \begin{verse} \c{(Em)}I used to \c{C}rule the \c{D}world\newline Seas would \c{G}rise when I gave the \c{Em}word\newline Now in the morning I \c{C}sleep al\c{D}one\newline Sweep the \c{G}streets I used to \c{Em}own \end{verse} \begin{verse} \c{(Em)}I used to \c{C}roll the \c{D}dice\newline Feel the \c{G}fear in my enemy's \c{Em}eyes\newline Listen as the \c{C}crowd would \c{D}sing:\newline "Now the \c{G}old king is dead! \c{Em}Long live the king!" \end{verse} \begin{verse} ^One minute I ^held the ^key\newline Next the ^walls were ^closed on me\newline And I discovered that my ^castles ^stand\newline Upon ^pillars of salt and ^pillars of sand \end{verse} \end{song} \end{document} |
Ich habe mal Dein Beispiel genommen, alles rausgeworfen, was nicht funktioniert und dafür ein paar neue Befehle definiert, mit denen man die Abfolge der Akkorde festlegen bzw. einfach den nächsten Akkord in der Abfolge setzen lassen kann: Open in writeLaTeX
\documentclass{article} \usepackage[showframe]{geometry} \renewcommand\c[1]{ \makebox[0pt]{\begin{tabular}[b]{l@{}@{}}#1\\\mbox{}\end{tabular}}} \newenvironment{song}[1] {\section{#1}\raggedright\activatenextchord} {} \renewenvironment{verse} {\flushleft[Chorus]\newline} {\endflushleft} \makeatletter \newcommand*{\defchords}[2][verse]{% \@namedef{chords@#1}{#2}% } \newcommand*{\active@chords}{} \newcommand*{\usechords}[1][verse]{% \edef\active@chords{\@nameuse{chords@#1}}% } \newcommand*{\nextchord}{% \def\reserved@a##1##2\@nil{% \if\relax\detokenize{##1}\relax \c{??}% \else \c{##1}% \fi \def\active@chords{##2}% }% \expandafter\reserved@a\active@chords\@nil } \newcommand*{\activatenextchord}{}% sozusagen den Befehl reservieren {% bevor er nachfolgend wirklich definiert wird. \catcode`\^\active \gdef\activatenextchord{\catcode`\^\active \let^\nextchord% } } \makeatother \begin{document} \tableofcontents \begin{song}{Coldplay - Viva La Vida} \defchords{{(Em)}{C}{D}{G}{Em}{C}{D}{G}{Em}} \usechords \begin{verse} ^I used to ^rule the ^world\\ Seas would ^rise when I gave the ^word\\ Now in the morning I ^sleep al^one\\ Sweep the ^streets I used to ^own \end{verse} \begin{verse} ^I used to ^roll the ^dice\\ Feel the ^fear in my enemy's ^eyes\\ Listen as the ^crowd would ^sing:\\ "Now the ^old king is dead! ^Long live the king!" \end{verse} \begin{verse} ^One minute I ^held the ^key\\ Next the ^walls were ^closed on me\\ And I discovered that my ^castles ^stand\\ Upon ^pillars of salt and ^pillars of sand \end{verse} \end{song} \end{document} Über das optionale Argument von
Um auf die Akkorde ganz zu verzichten, müsste man theoretisch einfach beantwortet 11 Jul '14, 19:32 gast3 Wow, super! Vielen herzlichen Dank :-) Das ist ja schonmal der erste Schritt. Ich glaub, was ich sonst noch brauche, formuliere ich später in einem zweiten Beitrag. Erstmal muss ich mir das hier genau anschauen, ausprobieren und lernen, was die Befehle alle bedeuten ;-)
(11 Jul '14, 19:42)
Momro
|
Es gibt für Liederbücher beispielsweise das Paket Open in writeLaTeX
\documentclass[12pt]{book} \usepackage[chordbk]{songbook} %% Words & Chords edition. %% % C.C.L.I. license number definition; for copyright licensing info. %% \newcommand{\CCLInumber}{\#999999} \newcommand{\CCLIed}{(CCLI \CCLInumber)} \newcommand{\NotCCLIed}{} \newcommand{\PGranted}{} \newcommand{\PPending}{(Permission Pending)} %% % Turn on index and table of contents. %% \makeTitleIndex %% Title and First Line Index. \makeTitleContents %% Table of Contents. \makeKeyIndex %% Song Key Index. \makeArtistIndex %% Index by Artist. \begin{document} %% % Songbook begins. %% \begin{song}{What A Mighty God We Serve}{C} {\SBPubDom} {\SBUnknownTag} {Isaiah 9:6} {\NotCCLIed} \SBRef{Give Thanks}{Hosanna! Music Tape HM-7} \SBRef{Hosanna! Music Book~I}{\#93} \begin{SBOpGroup} \Ch{C}{What} a mighty God we serve, What a mighty God we \Ch{G7}{serve}, \Ch{C}{An}gels bow before Him, \Ch{C}{Hea}ven and earth adore Him, \Ch{C}{What} a mighty \Ch{G7}{God} we \Ch{C}{serve!}\Ch{[}{}\Ch{F}{} \Ch{C}{}\Ch{]}{} \end{SBOpGroup} \begin{SBVerse} O \Ch{C}{Zion,} O \Ch{F}{Zion,} that \Ch{G7}{bring}est good \Ch{C}{tid}ings, Get thee \Ch{F}{up} into the \Ch{G7}{High} Moun\Ch{C}{tains} Je\Ch{C}{ru}salem, Je\Ch{F}{ru}salem, that \Ch{G7}{bring}est good \Ch{C}{tid}ings Lift up thy \Ch{F}{voice} with \Ch{G7}{all} thy \Ch{C}{strength} Lift it \Ch{F}{up,} be not afraid; Lift it \Ch{C}{up,} be not afraid Say \Ch{Am}{unto} the \Ch{C}{ci}ties of \Ch{G7}{Judah,} ``Behold your \Ch{C}{God,}\Ch{C7}{} Behold your \Ch{F}{God,} Be\Ch{C}{hold} \Ch{G7}{your} \Ch{C}{God!''} \end{SBVerse} \CBPageBrk \begin{SBExtraKeys}{% \STitle{What A Mighty God We Serve}{D} \begin{SBOpGroup} \Ch{D}{What} a mighty God we serve, What a mighty God we \Ch{A7}{serve}, \Ch{D}{An}gels bow before Him, \Ch{D}{Hea}ven and earth adore Him, \Ch{D}{What} a mighty \Ch{A7}{God} we \Ch{D}{serve!}\Ch{[}{}\Ch{G}{} \Ch{D}{}\Ch{]}{} \end{SBOpGroup} \begin{SBVerse} O \Ch{D}{Zion,} O \Ch{G}{Zion,} that \Ch{A7}{bring}est good \Ch{D}{tid}ings, Get thee \Ch{G}{up} to into the \Ch{A7}{High} Moun\Ch{D}{tains} Je\Ch{D}{ru}salem, Je\Ch{G}{ru}salem, that \Ch{A7}{bring}est good \Ch{D}{tid}ings Lift up thy \Ch{G}{voice} with \Ch{A7}{all} thy \Ch{D}{strength} Lift it \Ch{G}{up} be not afraid, Lift it \Ch{D}{up} be not afraid Say \Ch{Bm}{unto} the \Ch{D}{ci}ties of \Ch{A7}{Judah,} ``Behold your \Ch{D}{God,}\Ch{D7}{} Behold your \Ch{G}{God,} Be\Ch{D}{hold} \Ch{A7}{your} \Ch{D}{God!''} \end{SBVerse} }\end{SBExtraKeys} \end{song} \end{document} Die erste Seite des Ergebnisses sieht dann so aus: Mit Option Es gibt eine Reihe weiterer Pakete für diesen Zweck. Selbst verwendet habe ich bisher aber nur dieses. Daher weiß ich auch nicht, ob eines der anderen Pakete, eine Erkennung für wiederkehrende Akkorde besitzt. beantwortet 11 Jul '14, 18:12 gast3 |
Du hast höchstwahrscheinlich ein Beispiel der Verwendung des Die grundlegende Benutzung scheint recht einfach zu sein. Der Trick mit der Mit der Paket-Option Open in writeLaTeX
\documentclass{article} \usepackage{songs} \begin{document} \begin{songs}{} \beginsong{Viva La Vida}[by=Coldplay] \capo{I} \beginverse\noversenumbers \nolyrics Intro: \[C] \[D] \[G] \[Em] ($\times2$) \endverse \setcounter{versenum}{1} \beginverse\memorize \[Em]I used to \[C]rule the \[D]world Seas would \[G]rise when I gave the \[Em]word Now in the morning I \[C]sleep al\[D]one Sweep the \[G]streets I used to \[Em]own \endverse \beginverse ^I used to ^roll the ^dice Feel the ^fear in my enemy's ^eyes Listen as the ^crowd would ^sing: ``Now the ^old king is dead! ^Long live the king!'' \endverse \beginverse ^One minute I ^held the ^key Next the ^walls were ^closed on me And I discovered that my ^castles ^stand Upon ^pillars of salt and ^pillars of sand \endverse \endsong \end{songs} \end{document} beantwortet 12 Jul '14, 14:11 cgnieder @Clemens Wow, diese Lösung ist super! Ich werde mir das näher anschauen und damit rumprobieren. Vielen Dank!
(14 Jul '14, 10:40)
Momro
|
Die Frage hier hat mich dazu inspiriert, mein schon lange geplantes Paket Das Paket hat die hier gefragte Funktionalität der automatischen Akkord-Einfügung. Das folgende Beispiel demonstriert außerdem noch ein paar andere Features: Open in Online-Editor
\documentclass{article} \usepackage[ngerman]{babel} \usepackage{leadsheets} % Ein Template, das `\section' für die Überschriften verwendet und neben dem % Namen des Songs auch die Band notiert, falls angegeben. \definesongtitletemplate{custom}{% \ifsongmeasuring{}{ \section{\songproperty{title}\ifsongproperty{band}{ (von \songproperty{band})}{}} }% } % Ein paar Voreinstellungen, unter anderem Verwendung des neuen Templates: \setleadsheets{ title-template=custom , info/format = \itshape } \setchordnames{ format = \sffamily } \begin{document} \begin{song}[ remember-chords = true , verse/numbered = true , transpose-capo = true % funktioniert nur mit gesetzer `key'-Eigenschaft! % Damit werden dann die Akkordnamen geschrieben, die % man spielen muss, damit die klingende Notation % immer noch stimmt. Also: `Emi' statt `Fmi' mit % `capo = 1' als Songeigenschaft. ]{ title = Viva La Vida, band = Coldplay, capo = 1 , key = Fmi } \begin{info} \capo \end{info} \begin{intro} Intro: _{Db} _{Eb} _{Ab} _{Fmi} ($\times2$) \end{intro} \begin{verse} ^{Fmi}I used to ^{Db}rule the ^{Eb}world \\ Seas would ^{Ab}rise when I gave the ^{Fmi}word \\ Now in the morning I ^{Db}sleep al^{Eb}one \\ Sweep the ^{Ab}streets I used to ^{Fmi}own \end{verse} \begin{verse} ^I used to ^roll the ^dice \\ Feel the ^fear in my enemy's ^eyes \\ Listen as the ^crowd would ^sing: \\ ``Now the ^old king is dead! ^Long live the king!'' \end{verse} \begin{verse} ^One minute I ^held the ^key \\ Next the ^walls were ^closed on me \\ And I discovered that my ^castles ^stand \\ Upon ^pillars of salt and ^pillars of sand \end{verse} \end{song} \end{document} beantwortet 01 Aug '14, 13:12 cgnieder |
@Ijon Tichy hihi, ich dachte nicht, dass du es gleich kompilieren willst. Sorry! Ich hab's geändert und es sollte so funktionieren.
Ich habe noch zwei Strophen angefügt, um besser zu illustrieren, was ich will: Ich würde LaTeX gerne sagen können, dass zum Beispiel alle Akkorde aus der zweiten und dritten Strophe ausgeblendet werden. Oder ich möchte gerne sagen können, dass die " ^ " in Strophe 3 durch die vorher definierten Akkorde ersetzt werden sollen. Da bräuchte man keine selbständige Zählung - aber wie man's sonst realisiert, das weiß ich nicht :-)
@Ijon Tichy Bei mir kompiliert es mit einigen kleinen Fehlermeldungen, die aber keine dramatischen Auswirkungen haben (ich nutze TeXnicCenter).
Bei newenvironment{verse} muss ein renew... hin (oben korrigiert).
Ich weiß nicht, warum das sonst nicht funktionieren sollte :-(
Du kannst Deine Songs gleich ins Dokument mit aufnehmen: http://texwelt.de/wissen/fragen/7890/ :()
@cis Ich bevorzuge ja ein ausgedrucktes Dokument (Liederbuch), das ich zusammen mit meiner Gitarre mitnehmen kann. Da sind eingebundene Medien dann eher nutzlos :)
Touche - wohl aber als PDF in einem Smartphone / Tablett (also ich hab sowas nicht, aber viele schon).