5.3.7 Modificació de les llistes-A

Certes propietats configurables per part de l’usuari es representen internament com llistes-A (llistes associatives), que emmagatzemen duples de claves i valors. L’estructura d’una llista-A és la següent:

'((clave1 . valor1)
 (clave2 . valor2)
 (clave3 . valor3)
 …)

Si una llista-A és una propietat d’un grob o una variable de \paper, les seves claus es poden modificar individualment sense que afecti a les altres claus.

Per exemple, per reduir l’espai entre pentagrames adjacents dins d’un grup, useu la propietat staff-staff-spacing del grob StaffGrouper. La propietat és una llista-A amb quatre claus: basic-distance (distància bàsica), minimum-distance (distància mínima), padding (farcit) i stretchability (ampliabilitat). Els ajustaments estàndard per a aquesta propietat es relacionen a la secció “Backend” de la Referència de Funcionament Intern (vegeu StaffGrouper):

'((basic-distance . 9)
 (minimum-distance . 7)
 (padding . 1)
 (stretchability . 5))

Una forma d’apropar els pentagrames entre sí és reduir el valor de la clau basic-distance (9) perquè es correspongui amb el valor de minimum-distance (7). Per modificar una única clau de forma individual, utilitzeu una declaració niuada:

% espai predeterminat entre pentagrames
\new PianoStaff <<
 \new Staff { \clef treble c''1 }
 \new Staff { \clef bass c1 }
>>
% espai reduït entre pentagrames
\new PianoStaff \with {
 % aquesta és la declaració niuada
 \override StaffGrouper.staff-staff-spacing.basic-distance = #7
} <<
 \new Staff { \clef treble c''1 }
 \new Staff { \clef bass c1 }
>>

[image of music]

La utilització d’una declaració niuada actualitza la clau especificada (com basic-distance a l’exemple anterior) sense alterar cap de les altres claus que ja s’havien establert per a la mateixa propietat.

Ara suposem que desitgem que els pentagrames estiguin tan propers com sigui possible sense que es superposin. La manera més senzilla de fer-lo és establir les quatre claus de la llista-A a zero. Malgrat això, no cal escriure quatre declaracions niuades, una per cada clau. En lloc d’això, es pot redefinir completament la propietat amb una sola declaració, com una llista-A:

\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 }
>>

[image of music]

Observeu que qualsevol clau que no hagi estat relacionada explícitament a la definició de la llista-A, serà reiniciada als seus valors predeterminats si no s’han fixat. En el cas de staff-staff-spacing, el valor de qualsevol clau no fixada es reiniciaria a zero (excepte stretchability, que agafa el valor de basic-distance si no es fixa). Aixi, les dues declaracions següents són equivalents:

\override StaffGrouper.staff-staff-spacing =
 #'((basic-distance . 7))
\override StaffGrouper.staff-staff-spacing =
 #'((basic-distance . 7)
 (minimum-distance . 0)
 (padding . 0)
 (stretchability . 7))

Una conseqüència d’això (possiblement no intencionada) és l’eliminació de qualsevol valor estàndard que s’estableixi en un fitxer d’inici i que es carrega cada cop que es compila un fitxer d’entrada. A l’exemple anterior, els ajustaments estàndard per a padding i minimum-distance (definits a ‘scm/define-grobs.scm’) es reinicien al seus valors predeterminats si no s’han fixat (zero per a les dues claus). La definició d’una propietat o variable com una llista-A (de qualsevol mida) sempre reinicia tots els valors de clau no establertes als seus valors predeterminats si no s’han fixat. A no ser que aquest sigui el resultat desitjat, és més segur actualitzar els valors de clau individualment amb una declaració niuada.

Nota: Les declaracions niuades no funcionen per a les llists-A de propietats de context (com beamExceptions, keyAlterations, timeSignatureSettings, etc.). Aquestes propietats sols es poden modificar redefinint-les completament com a llistes-A.


<< Torna a l'índex de la documentació

LilyPond — Referència de la notació v2.21.82 (branca de desenvolupament).

AltStyle によって変換されたページ (->オリジナル) /