Liederbuch-Layout
In diesem Teil der Doku geht es um die Layout-Konfigurationen, die in aller Regel für ein gesamtes Liederbuch gelten sollen, also zum Beispiel die Schriftart der Akkorde, der Lyrics, der Überschriften, Seitenränder, Kategorien und vieles mehr. Generell sind diese Konfigurationen im Ordner lilypond-custom-includes zu machen.
Einstellungen überschreiben
In der Datei lilypond-custom-includes/base_config.ly können unter anderem LilyPond-Einstellungen, die in den lilypond-common-includes definiert wurden, überschrieben werden, zum Beispiel die Einstellungen zu Versetzungszeichen oder Balkensetzungen.
Generelle Layout-Einstellungen
Die allermeisten liederbuchspezifischen Einstellungen, die man vermutlich verändern will, finden sich in der Datei lilypond-common-includes/default_style.ly. Die dortigen Einstellungen können angepasst werden, indem die entsprechenden Parameter in die Datei lilypond-custom-includes/custom_style_overrides.ly kopiert werden und die Werte entsprechend verändert werden. Sofern nicht anders angegeben, müssen numerische Werte übergeben werden. Folgende Parameter gibt es:
songFormatAndSizedefiniert das Format, zum Beispiela5oderb6.songMargindefiniert den Seitenabstand.songInfoFontSizedefiniert die Schriftgröße der Songinfo.songInfoLineWidthFractiondefiniert die Breite der Songinfo in ProzentsongTitleSizedefiniert die Schriftgröße des Titels.songTitleFontdefiniert die Schriftart des Titels. Der Name der Schriftart wird als String, also in Anführungszeichen übergeben.songChordFontdefiniert die Schriftart der Akkorde. Der Name der Schriftart wird als String, also in Anführungszeichen übergeben.songLyricFontdefiniert die Schriftart der Lyrics (Strophen). Der Name der Schriftart wird als String, also in Anführungszeichen übergeben.songChordFontSeries. Hier kann eingestellt werden, ob die Akkorde normal (#'normal) oder fett (#'bold) dargestellt werden sollen.songTextChordAlignmentist nur für das „alte“ System notwendig, wenn also keine Noten im Spiel sind. Mit#'leftwerden die Akkorde dann über den Silben links ausgerichtet, mit#'centerwerden sie über der jeweiligen Silbe zentriert.songScoreChordFontSizedefiniert die Größe der Akkordzeichen in den Noten.songTextChordFontSizedefiniert die Größe der Akkordzeichen in den Strophen. Es empfiehlt sich, beide Variablen gleichzusetzen.songTextChordDistancedefiniert den Abstand zwischen den Akkordzeichen in den Strophen zu den zugehörigen Lyrics (nur neues System).songTextLineHeigthdefiniert den Abstand zwischen den Lyric-Zeilen. Da die Akkorde sich jeweils an den Lyrics orientieren, werden die bei Anpassung des Werts mit verschoben.songTocColumnsdefiniert die Anzahl der Spalten, die im Inhaltsverzeichnis genutzt werden sollen.globalSizedefiniert die Größe des Notensatzes.lyricSizedefiniert die Größe der Lyrics.stanzaFormatdefiniert das Format für die Nummerierung der Strophen. Standardformat ist"~a.".~aist hierbei ein Platzhalter für die Strophennummer. Hier kann also definiert werden, ob als Ausgabe beispielsweise1.,1.:oder1)gewünscht ist.romanStanzaFormatdefiniert das Format für die römische Nummerierung der Strophen, also der Alternativnummerierung, die zum Beispiel für fremdsprachige Strophen genutzt werden kann. Das Prinzip ist dasselbe wie beimstanzaFormat.refStringdefiniert, welche Stanza beim\ref-Befehl übergeben werden soll.refStringWithNumbersdefiniert das Format von nummerierten Refrains nach demselben Schema wie beimstanzaFormat.repStartdefiniert den Befehl\repStartfür das alte System, um typographisch korrekte Wiederholungszeichen zu setzen.repStopsieherepStart.
Es empfiehlt sich, dass die Schriftart ebenfalls im Repo gespeichert wird, da nicht auf jedem Computer dieselben Schriftarten installiert sind.
Der Default-Style sieht so aus:
songFormatAndSize = "a5"
songMargin = 5
songInfoFontSize = 0
songInfoLineWidthFraction = 0.9
songTitleSize = 6
songTitleFont = "Liberation Sans"
songChordFont = "Liberation Sans"
songLyricFont = "Liberation Sans"
songChordFontSeries = #'bold
songTextChordAlignment = #'left
songScoreChordFontSize = 2
songTextChordFontSize = \songScoreChordFontSize
songTextChordDistance = 2.8
songTextLineHeigth = 5.8
songTocColumns = 3
globalSize = 15
lyricSize = 1.6
stanzaFormat = "~a."
romanStanzaFormat = "~@r."
refString = "Ref.:"
refStringWithNumbers = "Ref. ~a:"
% hübsche Wiederholungszeichen für den Liedtext
repStart = "𝄆"
repStop = "𝄇"Anpassung von Kanoneinsätzen
Der Stil, in dem Kanoneinsätze markiert werden, kann in den lilypond-custom-includes/base_config.ly eingestellt werden (unbedingt unter die general_include!). So sieht die Standardeinstellung aus:
\paper {
cueMarkup = \markup {
\italic
#(make-on-the-fly-markup (lambda (layout props m)
(interpret-markup layout props
(string-join (map (lambda (n) (format #f "~@r." n)) (chain-assoc-get 'cues props)) ", ")))
(make-null-markup))
}
}Relevant sind vermutlich die Auszeichnung (italic, bold). Das kann entsprechend angepasst werden. Außerdem das Ziffernformat, also römisch oder arabisch. Das funktioniert mit dem String "~@r.". Arabische Ziffern könnten mit dem String "~a." erreicht werden. Alle verfügbaren Formatspezifikationen gibt es in der Scheme-Doku zu finden.
Anpassung der Akkordsymbole
Auch die bestimmte Darstellung, spezieller Akkordsymbole kann in den custom_style_overrides.ly angepasst werden. Siehe dazu mehr in der LilyPond-Doku.
Kategorien
Mithilfe unserer Skripte ist es möglich, Lieder Kategorien zuzuordnen und sie optional mit Kategoriebildchen zu versehen. Auch ein Kategorienverzeichnist ist möglich (siehe Einführung). So funktioniert es:
Kategorien erstellen
Als erstes solltest du Kategorien in der Datei lilypond-custom-includes/categories.ly definieren. Die Datei sieht so aus:
#(define category-names '(
(see "See und\nPiraten")
;(categoriekey "Titel der Kategorie")
))
%% Path to Category images
#(define-public (category-image-path category)
(string-append "../../liederbuecher/beispiel_liederbuch/categories/"
category ".eps"))Das gehen wir jetzt Zeile für Zeile durch. In der ersten Zeile wird die Scheme1-Funktion definiert, das ist erstmal uninteressant. Ab der zweiten Zeile werden dann alle Kategorien und ihre Titel definiert. Das Schema wird im auskommentierten Teil beschrieben2: Erst kommt die ID der Kategorie und danach in Anführungszeichen der Titel. Auf die ID wird in der Lied-Layout-Datei referenziert. Der Titel ist der, der dann im Kategorienverzeichnis benutzt wird. Im obigen Beispiel ist also see die ID und "See und/nPiraten" der Titel. Das /n bewirkt übrigens einen Zeilenumbruch.
Im zweiten Teil wird der Pfad zu den Kategoriebildchen definiert. Der sollte auf jeden Fall angepasst werden und auf einen Ordner in deinem Liederbuch-Ordner verweisen. Die Dateinamen müssen dabei der ID entsprechen und das EPS-Format haben.
Liedern Kategorien zuweisen
In der Layout-Datei der Lieder können im zweiten Schritt dann Kategorien den Liedern zugewiesen werden, in dem in der categories-Variable alle betreffenden IDs durch Leerzeichen getrennt aufgeschrieben werden. Das könnte dann so aussehen:
HEADER = \bookpart {
\header {
\basicSongInfo
%infotext = ""
categories = "see abend andacht"
}
}Das Lied würde also den Kategorien mit den IDs see, abend und andacht zugewiesen werden.
Seitennummerierung beeinflussen
Die Seitennummerierung bei Liederbüchern folgt der grundsätzlichen Logik, dass gerade Seiten immer links sind und ungerade Seiten immer rechts. Die erste Seite ist grundsätzlich immer die Seite 0. Das führt unter Umständen zu folgendem Problem:
| Links | Rechts |
|---|---|
| 0 (Deckblatt) | 1 (Leerseite Einband, eigentlich links) |
| 2 (erstes Lied, eigentlich rechts) | 3 … |
Wie zu sehen, sollte das Deckblatt in diesem Fall (der vermutlich der Regelfall ist) eigentlich die Seite 1 haben. Die Lösung ist, dass im Paper-Block der Book-Umgebung in der Liederbuchdatei die Ziffer der ersten Seite definiert wird (diese folgt dann nach wie vor der oben genannten Logik):
\book {
\paper {
first-page-number = #1
}
%…
}Seitennummerierung ausblenden
Soll die Seitennummerierung ausgeblendet werden, kann dafür folgender Befehl in der Bookpart-Umgebung verwendet werden:
\bookpart {
\paper {
print-page-number = ##f
}
}