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- } } }
\score { \new Staff { c' d' e' f' \chords { d1:m7 b1:min7.5- } } \layout { \context { \Staff \accepts ChordNames } } }
\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’.