LilyPond Benutzerhandbuch: 4.4.2 Explizite Positionierung von Systemen

### 4.4.2 Explizite Positionierung von Systemen

Man kann die flexiblen Einstellungen der vertikalen Abstände, wie sie im vorigen Abschnitt erklärt wurden, als eine Sammlung verschiedenerer Einstellmöglichkeiten verstehen, die vor allem die Größe des vertikalen Platzes zwischen Notensystemen und Gruppen auf der Seite kontrollieren.

Die vertikale Platzverteilung kann aber auch auf andere Weise eingestellt werden: mit den Optionen von `NonMusicalPaperColumn #'line-break-system-details`. Während der flexible vertikale Abstandsmechanismus vertikalen Füllplatz definiert, werden mit `NonMusicalPaperColumn #'line-break-system-details` absolute vertikale Positionen auf der Seite festgelegt.

`NonMusicalPaperColumn #'line-break-system-details` akzeptiert eine Liste aus drei unterschiedlichen Einstellungen:

- `X-offset`
- `Y-offset`
- `alignment-distances`

Veränderungen von Grobs (wozu auch `NonMusicalPaperColumn` gehört), können an drei unterschiedlichen Stellen in der Quelldatei vorgenommen werde:

- mitten im Notentext
- in einer `\context`-Umgebung
- in einer `\with`-Umgebung

Wenn der Grob `NonMusicalPaperColumn` verändert werden soll, wird der `\override`-Befehl in der `\context` oder `\with`-Umgebung eingesetzt. Wenn die Veränderungen aber mitten im Notentext stattfinden sollen, müssen Sie den Befehl `\overrideProperty` einsetzen. Einige Beispiele für eine Veränderungen von `NonMusicalPaperColumn` mit dem `\overrideProperty`-Befehl sind hier aufgelistet:

>     \overrideProperty NonMusicalPaperColumn.line-break-system-details #'((X-offset . 20))

>     \overrideProperty NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 40))

>     \overrideProperty NonMusicalPaperColumn.line-break-system-details #'((X-offset . 20)
>                                      (Y-offset . 40))

>     \overrideProperty NonMusicalPaperColumn.line-break-system-details #'((alignment-distances . (15)))

>     \overrideProperty NonMusicalPaperColumn.line-break-system-details #'((X-offset . 20)
>                                      (Y-offset . 40)
>                                      (alignment-distances . (15)))

Um zu verstehen, wie jede dieser unterschiedlichen Einstellungen funktioniert, wollen wir uns ein Beispiel vornehmen, dass überhaupt keine Einstellungen (d.h. `\override`-Befehle) enthält:

>     \header { tagline = ##f }
>     \paper { left-margin = 0\mm }
>     \book {
>       \score {
>         <<
>           \new Staff <<
>             \new Voice {
>               s1*5 \break
>               s1*5 \break
>               s1*5 \break
>             }
>             \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
>           >>
>           \new Staff {
>             \repeat unfold 15 { d'4 d' d' d' }
>           }
>         >>
>       }
>     }

Diese Partitur nimmt Zeilen- und Seitenumbruchinformationen in einer eigenen Stimme vor. Mit dieser Methode kann die Layout-Information einfach von den Noten getrennt werden, was sehr hilfreich ist, wenn das Beispiel komplizierter wird. Siehe auch Eine zusätzliche Stimme für Umbrüche benutzen.

Ausdrückliche `\break`-Befehle teilen die Noten in sechs Takte lange Zeilen. Die vertikale Platzverteilung wird von LilyPond errechnet. Um den vertikalen Beginn einer jeden Systemgruppe genau anzugeben, kann `Y-offset` in der `line-break-system-details`-Eigenschaft des `NonMusicalPaperColumn`-Grobs wie in dem Beispiel ersichtlich benutzt werden:

>     \header { tagline = ##f }
>     \paper { left-margin = 0\mm }
>     \book {
>       \score {
>         <<
>           \new Staff <<
>             \new Voice {
>               \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 0))
>               s1*5 \break
>               \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 40))
>               s1*5 \break
>               \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 80))
>               s1*5 \break
>             }
>             \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
>           >>
>           \new Staff {
>             \repeat unfold 15 { d'4 d' d' d' }
>           }
>         >>
>       }
>     }

In der `line-break-system-details`-Eigenschaft kann eine Liste mit vielen Einstellungen eingegeben werden, aber hier wird nur eine Einstellung angegeben. Die `Y-offset`-Eigenschaft bestimmt hier die exakte vertikale Position auf der Seite, an welcher jede neue Systemgruppe begonnen wird.

Da jetzt der exakte Beginn einer jeden Systemgruppe explizit festgelegt wurde, können wir auch den exakten Beginn eines jeden Notensystems in der Gruppe festlegen. Dies geschieht mit der `alignment-distances`-Eigenschaft von `line-break-system-details`.

>     \header { tagline = ##f }
>     \paper { left-margin = 0\mm }
>     \book {
>       \score {
>         <<
>           \new Staff <<
>             \new Voice {
>               \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 20)
>                                                (alignment-distances . (15)))
>               s1*5 \break
>               \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 60)
>                                                (alignment-distances . (15)))
>               s1*5 \break
>               \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 100)
>                                                (alignment-distances . (15)))
>               s1*5 \break
>             }
>             \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
>           >>
>           \new Staff {
>             \repeat unfold 15 { d'4 d' d' d' }
>           }
>         >>
>       }
>     }

Dem `line-break-system-details`-Attribut des `NonMusicalPaperColumn`-Grobs werden zwei unterschiedliche Eigenschaften zugewiesen. Auch wenn die Aliste der Attribute von `line-break-system-details` sehr viel mehr Platzierungsparameter akzeptiert (wie etwa ein korrespondierendes `X-offset`-Paar), müssen hier nur die Parameter `Y-offset` und `alignment-distances` gesetzt werden, um den vertikalen Beginn jedes Systems und jeder Systemgruppe zu kontrollieren. `Y-offset` bestimmt also die vertikale Position von Systemgruppen und `alignment-distances` die vertikale Position von einzelnen Notensystemen.

>     \header { tagline = ##f }
>     \paper { left-margin = 0\mm }
>     \book {
>       \score {
>         <<
>           \new Staff <<
>             \new Voice {
>               \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 0)
>                                                (alignment-distances . (30 10)))
>               s1*5 \break
>               \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 60)
>                                                (alignment-distances . (10 10)))
>               s1*5 \break
>               \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 100)
>                                                (alignment-distances . (10 30)))
>               s1*5 \break
>             }
>             \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
>           >>
>           \new StaffGroup <<
>             \new Staff { \repeat unfold 15 { d'4 d' d' d' } }
>             \new Staff { \repeat unfold 15 { e'4 e' e' e' } }
>           >>
>         >>
>       }
>     }

Einige Dinge sollten beachtet werden:

- Wenn `alignment-distances` benutzt wird, werden Gesangstextzeilen nicht als ein System gezählt.
- Die Einheiten der Zahlen, die für `X-offset`, `Y-offset` und `alignment-distances` benutzt werden, werden als Vielfaches des Abstandes zwischen zwei Notenlinien gewertet. Positive Werte verschieben Systeme und Gesangstext nach oben, negative Werte nach unten.
- Weil die Einstellungen von `NonMusicalPaperColumn #'line-break-system-details` es möglich machen, Notensysteme und Gruppen an beliebigen Stellen auf der Seite zu platzieren, kann man damit auch Ränder überschreiben oder sogar Notensysteme übereinander platzieren. Sinnvolle Werte für diese Parameter werden derartiges Verhalten vermeiden.

#### Siehe auch

Schnipsel: Spacing.

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