LilyPond Benutzerhandbuch: 4.2.1 Die \layout-Umgebung

### 4.2.1 Die `\layout`-Umgebung

Während die `\paper`-Umgebung Einstellungen für die Formatierung der Seiten eines gesamten Dokuments enthalten, enthält die `\layout`-Umgebung Einstellungen für einzelne Partituren. Um Layoutoptionen für Partituren global einzustellen, müssen sie in einer `\layout`-Umgebung gesetzt werden, die sich auf höchster Ebene in der Datei befindet. Um sie für einzelne Partituren festzulegen, muss die `\layout`-Umgebung innerhalb der `\score`-Umgebung nach den Noten eingetraten werden. Einstellungen, die in einer `\layout`-Umgebung vorkommen können, beinhalten:

- die `layout-set-staff-size`-Scheme-Funktion,
- Kontextveränderungen in `\context`-Umgebungen und
- `\paper`-Variablen, die das Aussehen einer Partitur beeinflussen.

Die `layout-set-staff-size`-Funktion wird im nächsten Abschnitt behandelt, Die Notensystemgröße einstellen. Kontextveränderungen werden in einem eigenen Kapitel behandelt, siehe Umgebungs-Plugins verändern and Die Standardeinstellungen von Kontexten ändern. Die `\paper`-Variablen, die innerhalb der `\layout`-Umgebungen erlaubt sind, sind:

- `line-width`, `ragged-right` und `ragged-last` (siehe `\paper`-Variablen für Breite und Ränder)
- `indent` und `short-indent` (siehe `\paper`-Variablen für Verschiebungen und Einrückungen)
- `system-count` (siehe `\paper`-Variablen für den Zeilenumbruch)

Hier ist ein Beispiel für eine `\layout`-Umgebung:

>     \layout {
>       indent = 2\cm
>       \context {
>         \StaffGroup
>         \override StaffGrouper.staff-staff-spacing.basic-distance = #8
>       }
>       \context {
>         \Voice
>         \override TextScript.padding = #1
>         \override Glissando.thickness = #3
>       }
>     }

Mehrfache `\layout`-Umbgebungen können als Ausdrücke auf höchster Ebene eingegeben werden. Das kann beispielsweise nützlich sein, wenn unterschiedliche Einstellungen in extra Dateien gespeichert werden und optional eingefügt werden. Intern wird eine Kopie der aktuellen `\layout`-Konfiguration gemacht, wenn eine `\layout`-Umgebung ausgewertet wird, dann erst werden Änderungen aus der Umgebung angewendet und das Ergebnis als die neue aktuelle Konfiguration gespeichert. Aus der Sicht des Benutzers werden die `\layout`-Umgebungen kombiniert, aber in Konfliktsituationen (wenn die gleiche Eigenschaft in unterschiedlichen Umgebungen geändert wird), erhält die spätere Definition den Vorrang.

Wenn also diese Umgebung:

>     \layout {
>       \context {
>         \Voice
>         \override TextScript.color = #magenta
>         \override Glissando.thickness = #1.5
>       }
>     }

nach der Umgebung aus dem vorherigen Beispiel geschrieben wird, werden die `'padding`- und `'color`-Einstellungen für `TextScript` kombiniert, aber die spätere `'thickness`-Einstellung für `Glissando` ersetzt (oder versteckt) die vorherige.

`\layout`-Umgebungen können einer Variable zur späteren Benutzung zugewiesen werden, aber die Funktionsweise dieser Zuweisung ist geringfügig aber deutlich unterschiedlich von der Variante, sie auszuschreiben.

Wenn eine Variable etwa so definiert wird:

>     layoutVariable = \layout {
>       \context {
>         \Voice
>         \override NoteHead.font-size = #4
>       }
>     }

dann enthält sie die aktuelle `\layout`-Konfiguration mit zusätzlicher Veränderung von `NoteHead #'font-size` (der Schriftgröße der Notenköpfe), aber diese Kombination wird nicht als nächste aktuelle Konfiguration gespeichert. Man muss sich im klaren sein, dass die „aktuelle Konfiguration“ gelesen wird, wenn die Variable erstellt wird, nicht wenn sie benutzt wird. Darum ist der Inhalt der Variable abhängig von ihrer Position in der Partitur.

Die Variable kann dann auch innerhalb einer anderen `\layout`-Umgebung eingesetzt werden, etwa:

>     \layout {
>       \layoutVariable
>       \context {
>         \Voice
>         \override NoteHead.color = #red
>       }
>     }

Eine `\layout`-Umgebung, die eine Variable enthält wie im Beispiel oben, kopiert die aktuelle Konfiguration nicht, sondern benützt den Inhalt von `\layoutVariable` als Basiskonfiguration für die weiteren Veränderungen. Das heißt, dass Änderungen, die zwischen der Definition der Variable und ihrer Benutzung definiert wurden, verloren gehen.

Wenn `layoutVariable` kurz vor ihrer Benutzung definiert wird (oder mit `\include` eingefügt wird), entspricht ihr Inhalt der aktuellen Konfiguration plus die Änderungen, die die Variable definiert. Das obige Beispiel, das den Einsatz von `\layoutVariable` zeigt, würde in seiner finalen Version folgende `\layout`-Umgebung haben:

>       TextScript.padding = #1
>       TextScript.color = #magenta
>       Glissando.thickness = #1.5
>       NoteHead.font-size = #4
>       NoteHead.color = #red

plus die Veränderungen an Einrückung (`indent`) und `StaffGrouper`.

Aber wenn die Variable vor der ersten `\layout`-Umgebung definiert wird, würde die aktuelle Konfiguration nur enthalten:

>       NoteHead.font-size= #4 % (written in the variable definition)
>       NoteHead.color = #red % (added after the use of the variable)

Wenn man sorgfältig plant, können `\layout`-Variablen ein wertvolles Instrument sein, um das Layout-Design von Quellen zu strukturieren und auch dazu dienen, die Layout-Einstellungen an einer bestimmten Stelle wieder zurückzusetzen.

#### Siehe auch

Notationsreferenz: Die Standardeinstellungen von Kontexten ändern, Die Notensystemgröße einstellen, Umgebungs-Plugins verändern.

Schnipsel: Spacing.

#### LilyPond – Notationsreferenz v2.22.2 (stabiler Zweig).