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:

  • songFormatAndSize definiert das Format, zum Beispiel a5 oder b6.

  • songMargin definiert den Seitenabstand.

  • songInfoFontSize definiert die Schriftgröße der Songinfo.

  • songInfoLineWidthFraction definiert die Breite der Songinfo in Prozent

  • songTitleSize definiert die Schriftgröße des Titels.

  • songTitleFont definiert die Schriftart des Titels. Der Name der Schriftart wird als String, also in Anführungszeichen übergeben.

  • songChordFont definiert die Schriftart der Akkorde. Der Name der Schriftart wird als String, also in Anführungszeichen übergeben.

  • songLyricFont definiert 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.

  • songTextChordAlignment ist nur für das „alte“ System notwendig, wenn also keine Noten im Spiel sind. Mit #'left werden die Akkorde dann über den Silben links ausgerichtet, mit #'center werden sie über der jeweiligen Silbe zentriert.

  • songScoreChordFontSize definiert die Größe der Akkordzeichen in den Noten.

  • songTextChordFontSize definiert die Größe der Akkordzeichen in den Strophen. Es empfiehlt sich, beide Variablen gleichzusetzen.

  • songTextChordDistance definiert den Abstand zwischen den Akkordzeichen in den Strophen zu den zugehörigen Lyrics (nur neues System).

  • songTextLineHeigth definiert den Abstand zwischen den Lyric-Zeilen. Da die Akkorde sich jeweils an den Lyrics orientieren, werden die bei Anpassung des Werts mit verschoben.

  • songTocColumns definiert die Anzahl der Spalten, die im Inhaltsverzeichnis genutzt werden sollen.

  • globalSize definiert die Größe des Notensatzes.

  • lyricSize definiert die Größe der Lyrics.

  • stanzaFormat definiert das Format für die Nummerierung der Strophen. Standardformat ist "~a.". ~a ist hierbei ein Platzhalter für die Strophennummer. Hier kann also definiert werden, ob als Ausgabe beispielsweise 1., 1.: oder 1) gewünscht ist.

  • romanStanzaFormat definiert 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 beim stanzaFormat.

  • refString definiert, welche Stanza beim \ref-Befehl übergeben werden soll.

  • refStringWithNumbers definiert das Format von nummerierten Refrains nach demselben Schema wie beim stanzaFormat.

  • repStart definiert den Befehl \repStart für das alte System, um typographisch korrekte Wiederholungszeichen zu setzen.

  • repStop siehe repStart.

Hinweis

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
  }
}

Fußnoten

  1. Scheme ist die Programmiersprache, in der LilyPond geschrieben ist.↩︎

  2. Bei Scheme wird mit dem Semikolon (;) auskommentiert.↩︎