LilyPond Benutzerhandbuch: 3.1.5 Die Dateistruktur

### 3.1.5 Die Dateistruktur

Eine ‘`.ly`’-Datei kann eine beliebige Anzahl an Ausdrücken auf der obersten Ebene beinhalten, wobei ein Ausdruck der obersten Ebene einer der folgenden sein kann:

- Eine Ausgabedefinition, wie `\paper`, `\midi` und `\layout`. Derartige Definitionen auf oberster Ebene verändern die globalen Einstellungen für das ganze „Buch“. Wenn mehr als eine derartige Definition desselben Typs angegeben wird, hat die spätere Vorrang.
- Ein direkter Scheme-Ausdruck, wie etwa `#(set-default-paper-size "a7" 'landscape)` oder `#(ly:set-option 'point-and-click #f)`.
- Eine `\header`-Umgebung. Damit wird die globale Titelei eingestellt. Das ist die Umgebung, in der sich Definition für das ganze Buch befinden, wie Komponist, Titel usw.
- Eine `\score`-Umgebung. Die in ihr enthaltene Partitur wird zusammen mit anderen vorkommenden `\score`-Umgebungen gesammelt und in ein `\book` zusammengefasst. Dieses Verhalten kann verändert werden, indem die Variable `toplevel-score-handler` auf höchster Ebene gesetzt wird. Die Definition des Standards findet sich in der Datei ‘`../scm/lily.scm`’.
- Eine `\book`-Umgebung fasst mehrere Sätze (d. h. mehrere `\score`-Umgebungen) logisch in ein Dokument zusammen. Wenn mehrere `\score`-Partituren vorkommen, wird für jede `\book`-Umgebung eine eigene Ausgabedatei erstellt, in der alle in der Umgebung enthaltenen Partituren zusammengefasst sind. Der einzige Grund, explizit eine `\book`-Umgebung zu setzen, ist, wenn mehrere Ausgabedateien aus einer einzigen Quelldatei erstellt werden sollen. Eine Ausnahme sind lilypond-book-Dokumente, in denen eine `\book`-Umgebung explizit hinzugefügt werden muss, wenn mehr als eine `\score`- oder `\markup`-Umgebung im gleichen Beispiel angezeigt werden soll. Dieses Verhalten kann verändert werden, indem die Variable `toplevel-book-handler` auf höchster Ebene gesetzt wird. Die Definition des Standards findet sich in der Datei ‘`../scm/lily.scm`’.
- Eine `\bookpart`-Umgebung. Ein Buch (`\book`) kann in mehrere Teile untergliedert sein, indem `\bookpart`-Umgebungen eingesetzt werden. Jeder Buchabschnitt beginnt auf einer neuen Seite und kann eigene Papierdefinitionen in einer `\paper`-Umgebung haben.
- Ein zusammengesetzter musikalischer Ausdruck wie etwa

  >     { c'4 d' e'2 }

  Dieses Beispiel wird von LilyPond automatisch in einer `\score`-Umgebung in einem Buch interpretiert und mit anderen `\score`-Umgebungen und musikalischen Ausdrücken auf der höchsten Ebene zusammen ausgegeben. Anders gesagt: eine Datei, die nur das obige Beispiel beinhaltet, wird übersetzt zu

  >     \book {
  >       \score {
  >         \new Staff {
  >           \new Voice {
  >             { c'4 d' e'2 }
  >           }
  >         }
  >       }
  >     	\layout { }
  >     	\header { }
  >     }

  Dieses Verhalten kann verändert werden, indem die Variable `toplevel-music-handler` auf der obersten Ebene gesetzt wird. Die Definition des Standards findet sich in der Datei ‘`../scm/lily.scm`’.

- Eine Textbeschriftung, eine Strophe etwa:

  >     \markup {
  >        2.  Die erste Zeile der zweiten Strophe.
  >     }

  Textbeschriftungen werden über, zwischen oder unter musikalischen Ausdrücken gesetzt, so wie sie notiert werde.

- Eine Variable, wie

  >     foo = { c4 d e d }

  Sie kann dann später in der Datei eingesetzt werden, indem `\foo` geschrieben wird. Die Bezeichnung der Variable darf nur aus alphabetischen Zeichen bestehen, keine Zahlen, Unter- oder Bindestriche.

Das folgende Beispiel zeigt drei Dinge, die auf der obersten Ebene notiert werden können:

>     \layout {
>       % Zeilen rechtsbündig setzen
>       ragged-right = ##t
>     }

>     \header {
>        title = "Do-re-mi"
>     }

>     { c'4 d' e2 }

An einer beliebigen Stelle der Datei kann jede der folgenden lexikalen Anweisungen notiert werden:

- `\version`
- `\include`
- `\sourcefilename`
- `\sourcefileline`
- Ein einzeiliger Kommentar, beginnend mit `%`.
- Ein mehrzeiliger Kommentar, umgeben von `%{ .. %}`.

Leerzeichen zwischen Einheiten in der Eingabe werden generell ignoriert und können nach Belieben weggelassen werden oder hinzugefügt werden, um die Lesbarkeit des Codes zu verbessern. Mindestens ein Leerzeichen sollte jedoch unter folgenden Umständen immer eingesetzt werden, um Fehler zu vermeiden:

- Vor und hinter jeder schließenden oder öffnenden Klammer,
- nach jedem Befehl oder jeder Variable, also jeder Einheit, die mit `\` beginnt,
- nach jeder Einheit, die als Scheme-Ausdruck interpretiert werden, also alle Einheiten, die mit `#` beginnen.
- Alle Einheiten von Scheme-Ausdrücken müssen mit Leerzeichen getrennt werden,
- in Gesangstextabschnitten (`lyricmode`) müssen Leerzeichen zwischen alle Ausdrücke in `\override`- und `\set`-Befehlen gesetzt werden. Insbesondere müssen um Punkte und Gleichzeitszeichen in Befehlen wie `\override Score . LyricTex #'font-size = #5)` und vor dem gesamten Befehl geschrieben werden.

#### Siehe auch

Handbuch zum Lernen: Wie eine LilyPond-Eingabe-Datei funktioniert.

Andere Sprachen: English, español, français, 日本語.

#### LilyPond – Notationsreferenz