2
1

Ich möchte gerne ein Songbook erstellen. Dazu habe ich mir entsprechende Bereiche definiert für \begin{chorus}, \begin{verse} oder \begin{intro}. Akkorde füge ich per \makebox{} direkt im Text ein, bzw. habe mir den Befehl \c{AKKORD} dafür erstellt.

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
Code, hier editierbar zum Übersetzen:
\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}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

gefragt 11 Jul '14, 17:52

Momro's gravatar image

Momro
23115
Akzeptiert-Rate: 0%

bearbeitet 12 Jul '14, 15:25

cgnieder's gravatar image

cgnieder
22.1k253463

@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 :-)

(11 Jul '14, 18:50) Momro

@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 :-(

(11 Jul '14, 19:21) Momro

Du kannst Deine Songs gleich ins Dokument mit aufnehmen: http://texwelt.de/wissen/fragen/7890/ :()

(01 Aug '14, 18:32) cis

@cis Ich bevorzuge ja ein ausgedrucktes Dokument (Liederbuch), das ich zusammen mit meiner Gitarre mitnehmen kann. Da sind eingebundene Medien dann eher nutzlos :)

(01 Aug '14, 18:40) cgnieder

Touche - wohl aber als PDF in einem Smartphone / Tablett (also ich hab sowas nicht, aber viele schon).

(01 Aug '14, 18:42) cis

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
Code, hier editierbar zum Übersetzen:
\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
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Über das optionale Argument von \defchords und \usechords kann man auch mehrere unterschiedliche Akkordfolgen definieren und diese zu den aktuell aktiven Akkorden machen.

^ ist innerhalb von song (und nur da) wunschgemäß als eine Art Abkürzung von \nextchord definiert.

Um auf die Akkorde ganz zu verzichten, müsste man theoretisch einfach \renewcommand*\nextchord{} einfügen. Ausprobiert habe ich das aber nicht.

Permanenter link

beantwortet 11 Jul '14, 19:32

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 11 Jul '14, 19:53

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 songbook. Bei dem Paket kann man per Option auch wählen, ob man nur die Worte oder Worte und Akkorde haben will. In der Anleitung gibt es auch ein ausführliches Beispiel. Leider hat das zwei kleine Fehler. Hier eine korrigierte Fassung:

Open in writeLaTeX
Code, hier editierbar zum Übersetzen:
\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,
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Die erste Seite des Ergebnisses sieht dann so aus:

Beispielseite

Mit Option wordbk statt chordbk bekommt man dagegen eine Fassung, die nur den Text aber keine Akkorde enthält. Eine Erkennung für wiederkehrende Akkorde bietet dieses Paket allerdings nicht.

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.

Permanenter link

beantwortet 11 Jul '14, 18:12

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 11 Jul '14, 18:21

Du hast höchstwahrscheinlich ein Beispiel der Verwendung des songs-Pakets gesehen. Das ist mir gerade aufgefallen, als ich aus Neugierde die Handbücher von songs und songbook überflogen habe...

Die grundlegende Benutzung scheint recht einfach zu sein. Der Trick mit der ^-Syntax läuft offenbar so: in einer vorigen Strophe setzt man am Beginn \memorize. In den folgenden Stropen kann man dann an den entsprechenden Stellen ^ einfügen. Grundsätzlich werden Akkorde zwischen \beginverse ... \endverse (und anderen ähnlichen Strukturen) mit \[<Akkord>] eingegeben und lassen sich beispielsweise mit \transpose{<zahl>} auch um <zahl> Halbtöne transponieren.

Mit der Paket-Option lyric lassen sich alle Akkorde unterdrücken, die (voreingestellte) Option chorded ist das Gegenteil davon. Das Verhalten lässt sich auch im Dokument mit \chordsoff und \chordson jederzeit umschalten.

Open in writeLaTeX
Code, hier editierbar zum Übersetzen:
\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}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

alt text

Permanenter link

beantwortet 12 Jul '14, 14:11

cgnieder's gravatar image

cgnieder
22.1k253463
Akzeptiert-Rate: 60%

bearbeitet 14 Jul '14, 12:09

@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

@Ijon hab ich auch gedacht... :)

(14 Jul '14, 12:10) cgnieder

Die Frage hier hat mich dazu inspiriert, mein schon lange geplantes Paket leadsheets mal wieder ernsthaft zu verfolgen. In den letzten Wochen hat es einige Fortschritte gemacht. Ich warte noch auf Feedback (gerne auch von hier Interessierten!) zur Funktionalität (funktioniert was nicht wie beschrieben?, Bugs?, fehlende Features?) und werde es dann auf CTAN stellen. Update 7.2.2015: das Paket ist inzwischen auf CTAN und sowohl in TeX Live als auch MiKTeX verfügbar.

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
Code, hier editierbar zum Übersetzen:
\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$)
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

alt text

Permanenter link

beantwortet 01 Aug '14, 13:12

cgnieder's gravatar image

cgnieder
22.1k253463
Akzeptiert-Rate: 60%

bearbeitet 07 Feb '15, 18:00

@Ijon gute Idee! Das setze ich mal auf die TODO-Liste. Danke.

(01 Aug '14, 15:29) cgnieder

@Ijon Ich hab Deinen Vorschlag umgesetzt. Jetzt warte ich noch auf ein bisschen Feedback und dann kanns an die Veröffentlichung gehen.

(16 Aug '14, 19:17) cgnieder
Deine Antwort
[Vorschau ausblenden]

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Frage-Themen:

×5
×2
×1

gestellte Frage: 11 Jul '14, 17:52

Frage wurde gesehen: 16,175 Mal

zuletzt geändert: 07 Feb '15, 18:00

Willkommen, erstes Mal hier? Schau mal unter FAQ!

×