4.2.1 Il blocco \layout
Mentre il blocco \paper
contiene le impostazioni relative
alla formattazione della pagina per l’intero documento, il blocco
\layout
contiene impostazioni di formattazione specifica
di un brano. Per impostare globalmente le opzioni di formattazione
del brano, inserirle in un blocco \layout
del livello superiore.
Per impostare le impostazioni di formattazione per un singolo brano, inserirle
in un blocco \layout
racchiuso in un blocco \score
, dopo la
musica. Le impostazioni che possono apparire in un blocco
\layout
includono:
- la funzione Scheme
layout-set-staff-size
, - le modifiche di contesto nei blocchi
\context
e - le variabili
\paper
che agiscono sulla formattazione del brano.
La funzione layout-set-staff-size
è spiegata nella prossima
sezione, Impostare la dimensione del rigo. Le modifiche di contesto sono
trattate in un capitolo separato; vedi Modifica dei componenti aggiuntivi di un contesto e
Modifica delle impostazioni predefinite di un contesto.
Le variabili \paper
che possono apparire in un blocco \layout
,
con valori predefiniti presi dal blocco \paper
, sono:
-
line-width
,ragged-right
eragged-last
(vedi Variabili\paper
per larghezze e margini) -
indent
eshort-indent
(vedi Variabili\paper
per spostamenti e indentazioni) -
system-count
(vedi Variabili di\paper
per l’interruzione di linea)
Ecco un esempio di blocco \layout
:
\layout { indent = 2\cm \context { \StaffGroup \override StaffGrouper.staff-staff-spacing.basic-distance = #8 } \context { \Voice \override TextScript.padding = #1 \override Glissando.thickness = #3 } }
Si possono inserire molteplici blocchi \layout
come espressioni
di livello superiore. Ciò può essere utile, per esempio, se impostazioni
diverse sono salvate in file separati e incluse facoltativamente.
Internamente, quando un blocco \layout
viene elaborato, viene fatta
una copia della configurazione del blocco \layout
corrente, poi
qualsiasi modifica apportata nel blocco viene applicata e il risultato
viene salvato come la nuova configurazione corrente. Dalla prospettiva
dell’utente, i blocchi \layout
sono combinati, ma in situazioni di
conflitto (ovvero quando viene modificata la stessa proprietà in blocchi
diversi) hanno precedenza le definizioni più recenti.
Per esempio, se questo blocco
\layout { \context { \Voice \override TextScript.color = #magenta \override Glissando.thickness = #1.5 } }
viene posto dopo quello dell’esempio precedente, le sovrascritture di
'padding
e 'color
per TextScript
sono combinate, mentre
quella più recente di 'thickness
per Glissando
sostituisce
(o nasconde) quella precedente.
I blocchi \layout
possono essere assegnati a delle variabili per
poterli riusare successivamente, ma il modo in cui ciò funziona è
leggermente ma significativamente diverso rispetto a scriverle davvero.
Se una variabile è definita in questo modo,
layoutVariable = \layout { \context { \Voice \override NoteHead.font-size = #4 } }
manterrà la configurazione attuale di \layout
con l’aggiunta
della sovrascrittura NoteHead.font-size
, ma questa combinazione
non è salvata come la nuova configurazione corrente. Attenzione
al fatto che la “configurazione corrente” viene letta quando la variabile
è definita e non quando viene usata, dunque il contenuto della variabile
dipende dalla sua posizione nel file di input.
La variabile può quindi essere usata all’interno di un altro
blocco \layout
, per esempio:
\layout { \layoutVariable \context { \Voice \override NoteHead.color = #red } }
Un blocco \layout
che contiene una variabile, come nell’esempio
precedente, non copia la configurazione corrente bensì usa il
contenuto di \layoutVariable
come configurazione di base per
altre aggiunte. Ciò significa che qualsiasi modifica definita tra la
definizione della variabile e il momento in cui essa viene usata è perduta.
Se layoutVariable
è definita (o inclusa con \include
) subito
prima di essere usata, il suo contenuto comprende soltanto la configurazione
corrente più le sovrascritture definite al suo interno. Quindi nell’esempio
precedente che illustra l’uso di \layoutVariable
il blocco \layout
finale conterrebbe:
TextScript.padding = #1 TextScript.color = #magenta Glissando.thickness = #1.5 NoteHead.font-size = #4 NoteHead.color = #red
più le sovrascritture indent
e StaffGrouper
.
Ma se la variabile fosse già stata definita prima del primo blocco
\layout
, la configurazione corrente conterrebbe soltanto
NoteHead.font-size = #4 % (scritta nella definizione della variabile) NoteHead.color = #red % (aggiunta dopo l'uso della variabile)
Se ben organizzate, le variabili \layout
possono essere un
valido strumento per strutturare le formattazioni dei sorgenti, e anche
per ripristinare la configurazione di \layout
a uno stato conosciuto.
Vedi anche
Guida alla notazione: Modifica delle impostazioni predefinite di un contesto.
Frammenti: Spacing.