[ << Standardeinstellungen verändern ] | [Anfang][Inhalt][Index] | [ Notationsübersicht >> ] |
[ < set versus override ] | [ Nach oben : Eigenschaften verändern ] | [ Nützliche Konzepte und Eigenschaften > ] |
5.3.6 Alisten verändern
Einige vom Benutzer einstellbare Eigenschaften sind intern als alists (Assoziative Listen) dargestellt, die Paare von Schlüsseln und Werten speichern. Die Struktur einer Aliste ist:
'((Schlüssel1 . Wert1) (Schlüssel2 . Wert2) (Schlüssel3 . Wert3) …)
Wenn eine Aliste eine Grob-Eigenschaft oder eine Variable der
\paper
-Umgebung ist, können ihre Schlüssel einzeln verändert
werden, ohne andere Schlüssel zu beeinflussen.
Um beispielsweise den Freiraum zwischen benachbarten Systemen
in einer Systemgruppe zu verkleinern, kann man die
staff-staff-spacing
-Eigenschaft des
+StaffGrouper
-Grobs benutzen. Die Eigenschaft ist eine
Aliste mit vier Schlüsseln: : basic-distance
(Grund-Abstand),
minimum-distance
(minimaler Abstand), padding
(Verschiebung)
und stretchability
(Dehnbarkeit). Die Standardwerte dieser
Eigenschaft finden sich im Abschnitt „Backend“ der Referenz der
Interna (siehe
StaffGrouper):
'((basic-distance . 9) (minimum-distance . 7) (padding . 1) (stretchability . 5))
Eine Möglichkeit, die Systemen dichter zueinander zu zwingen,
ist es, der Wert des basic-distance
-Schlüssels (9
) zu
verändern, sodass der den gleichen Wert wie
minimum-distance
(7
) hat. Um einen einzelnen
Schlüssel zu verändern, wird ein geschachtelter Aufruf benutzt:
% default space between staves \new PianoStaff << \new Staff { \clef treble c''1 } \new Staff { \clef bass c1 } >> % reduced space between staves \new PianoStaff \with { % this is the nested declaration \override StaffGrouper.staff-staff-spacing.basic-distance = #7 } << \new Staff { \clef treble c''1 } \new Staff { \clef bass c1 } >>
Wenn man diese Art des geschachtelten Aufrufs einsetzt, wird der
spezifische Schlüssel (basic-distance
im obigen Beispiel) verändert,
ohne dass sich andere Wert für die gleiche Eigenschaft ändern würden.
Nun sollen die Systeme so dicht wie möglich gesetzt werden, ohne das Überlappungen vorkommen. Die einfachste Möglichkeit, das zu tun, wäre es, alle vier Wert auf 0 zu setzen. Man muss jedoch nicht vier Werte definieren, sondern die Eigenschaft kann mit einem Aufruf als Aliste vollständig verändert werden:
\new PianoStaff \with { \override StaffGrouper.staff-staff-spacing = #'((basic-distance . 0) (minimum-distance . 0) (padding . 0) (stretchability . 0)) } << \new Staff { \clef treble c''1 } \new Staff { \clef bass c1 } >>
Dabei sollte beachtet werden, dass alle Schlüssel, die bei dieser
Weise des Aufrufs nicht explizit aufgelistet sind, auf den Standardwert
gesetzt werden, den sie hätten, wenn sie nicht definiert werden.
Im Falle von staff-staff-spacing
würden alle nicht genannten
Schlüsselwerte auf 0 gesetzt (außer stretchability
, welche immer
den Wert von space
hat, wenn sie nicht definiert ist). Somit sind
folgende Aufrufe äquivalent:
\override StaffGrouper.staff-staff-spacing = #'((basic-distance . 7)) \override StaffGrouper.staff-staff-spacing = #'((basic-distance . 7) (minimum-distance . 0) (padding . 0) (stretchability . 7))
Eine möglicherweise ungewollte Konsequenz hiervon ist, dass alle
Standardwerte, die etwa in einer Initialisierungsdatei
zu Beginn einer LilyPond-Partitur geladen werden, nach dem Aufruf
rückgängig gemacht werden. Im obigen Beispiel werden die
initialisierten Standardwerte für padding
und minimum-distance
(definiert in ‘scm/define-grobs.scm’) auf den Standard zurückgesetzt,
den sie uninitialisiert hätten (0 in beiden Fällen). Wenn eine Eigenschaft oder
Variable in Form einer Aliste (jeder Größe) definiert wird, werden
immer alle Schlüsselwerte auf den uninitialisierten Zustand zurückgesetzt.
Es ist also sicherer, geschachtelte Aufrufe zu benutzen, wenn man nicht
bewusst alle Werte zurücksetzen will.
Achtung: Geschachtelte Aufrufe funktionieren nicht mit
Kontexteigenschaften (wie etwa beamExceptions
, keyAlterations
,
timeSignatureSettings
, usw.) Diese Eigenschaften können
nur verändert werden, indem man sie vollständig als Alisten umdefiniert.
[ << Standardeinstellungen verändern ] | [Anfang][Inhalt][Index] | [ Notationsübersicht >> ] |
[ < set versus override ] | [ Nach oben : Eigenschaften verändern ] | [ Nützliche Konzepte und Eigenschaften > ] |