5.1.7 Reihenfolge des Kontextlayouts

Kontexte werden in einer Systemgruppe normalerweise von oben nach unten positioniert in der Reihenfolge, wie sie in der Quelldatei auftreten. Wenn Kontext verschachtelt ewrden, enthält der äußere Kontexte geschachtelte innere Kontexte, wie in der Quelldatei angegeben, vorausgesetzt, die inneren Kontexte befinden sich auch in der „accepts“-Liste. Geschachtelte Kontexte, die nicht in dieser „accepts“-Liste enthalten sind, werden unterhalb des äußeren Kontextes neu positioniert, anstatt innerhalb von ihm gesetzt zu werden.

Die „accepts“-Liste eines Kontextes kann mit dem Befehlen \accepts und \denies verändert werden. \accepts fügt einen Kontext zur „accepts“-Liste, und \denies entfernt einen Kontext aus der Liste. Akkordbezeichnungen sollen beispielsweise normalerweise nicht innerhalb eines Staff-Kontextes geschachtelt werden, sodass der ChordNames-Kontext nicht automatisch in der „accepts“-Liste des Staff-Kontextes geführt ist. Wenn er aber benötigt wird, kann er hinzugefügt werden:

\score {
  \new Staff {
    c' d' e' f'
    \chords { d1:m7 b1:min7.5- }
  }
}

[image of music]

\score {
  \new Staff {
    c' d' e' f'
    \chords { d1:m7 b1:min7.5- }
  }
  \layout {
    \context {
      \Staff
      \accepts ChordNames
    }
  }
}

[image of music]

\denies wird vorrangig eingesetzt, wenn ein neuer Kontext basierend auf einem existierenden erstellt wird, aber sein Schachtelungsverhalten sich unterscheidet. Der VaticanaStaff-Kontext beispielsweise basiert auf dem Staff-Kontext, hat aber den VaticanaVoice-Kontext anstellt des Voice-Kontexts in seiner „accepts“-Liste.

Zur Erinnerung: ein Kontext wird automatisch erstellt, wenn ein Befehl auftritt, der in den aktuellen Kontexten nicht enthalten sein kann. Dass kann zu unerwarteten neuen Systemgruppen oder Partituren führen.

Manchmal soll ein Kontext nur für einen kurzen Moment existieren, ein gutes Beispiel etwa ein System für ein Ossia. Das wird normalerweise erreicht, indem man die Kontextdefinition an der richtigen Stelle parallel mit dem existierenden Abschnitt der Hauptnoten anlegt. Standardmäßig wird der neue Kontext unter den existierenden Kontexten angelegt. Um ihn aber über dem Kontext mit der Bezeichnung „Hauptstimme“ zu positionieren, sollte er folgenderweise erstellt werden:

\new Staff \with { alignAboveContext = "Hauptstimme" }

Eine ähnliche Situation entsteht, wenn man einen zeitweiligen Gesangstext in einem Layout mit mehreren Notensystemen anlegen und positionieren will, etwa wenn eine zweite Strophe zu einem wiederholten Abschnitt in einem ChoirStaff hinzugefügt wird. Standardmäßig wird der neue Text unter dem untersten System angelegt. Wenn der Gesangstext mit der Eigenschaft alignBelowContext definiert wird, kann er korrekt unter dem (bezeichneten) Gesangstext positioniert werden, der die erste Strophe enthält.

Beispiele, die diese Neuordnung von temporären Kontexten zeigen, finden sich an anderen Stellen; siehe Musikalische Ausdrücke ineinander verschachteln, Einzelne Systeme verändern und Techniken für die Gesangstextnotation.

Siehe auch

Handbuch zum Lernen: Musikalische Ausdrücke ineinander verschachteln.

Notationsreferenz: Einzelne Systeme verändern, Techniken für die Gesangstextnotation.

Handbuch zur Benutzung: Ein zusätzliches System erscheint.

Installierte Dateien: ly/engraver-init.ly.


LilyPond Benutzerhandbuch v2.25.21 (Entwicklungszweig).