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 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:

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.


Guida alla Notazione di LilyPond v2.25.22 (development-branch).