4.4.2 Posizionamento esplicito di righi e sistemi
Un modo per comprendere i meccanismi di spaziatura verticale appena spiegati è di considerarli come un insieme di impostazioni che regolano la quantità di padding verticale tra righi e tra sistemi.
È possibile gestire la spaziatura verticale in un modo diverso
usando NonMusicalPaperColumn.line-break-system-details
.
Mentre i meccanismi di spaziatura verticale flessibile specificano
il padding verticale, NonMusicalPaperColumn.line-break-system-details
indica precisamente le posizioni verticali esatte sulla pagina.
NonMusicalPaperColumn.line-break-system-details
accetta una
lista associativa di quattro diverse impostazioni:
-
X-offset
-
Y-offset
-
extra-offset
-
alignment-distances
Le modifiche del grob con \override
, incluse quelle per NonMusicalPaperColumn
come nell’esempio successivo, possono trovarsi in uno di questi tre diversi
punti del file di input:
- direttamente in mezzo alle note
- in un blocco
\context
- nel blocco
\with
Quando si modifica NonMusicalPaperColumn
, si usa il solito
comando \override
nei blocchi \context
e nel blocco
\with
. Invece quando si modifica
NonMusicalPaperColumn
in mezzo alle note,
si usa il comando speciale \overrideProperty
. Ecco alcuni
esempi di modifiche di NonMusicalPaperColumn
col comando
speciale \overrideProperty
:
\overrideProperty NonMusicalPaperColumn.line-break-system-details #'((X-offset . 20)) \overrideProperty NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 40)) \overrideProperty NonMusicalPaperColumn.line-break-system-details #'((X-offset . 20) (Y-offset . 40)) \overrideProperty NonMusicalPaperColumn.line-break-system-details #'((alignment-distances . (15))) \overrideProperty NonMusicalPaperColumn.line-break-system-details #'((X-offset . 20) (Y-offset . 40) (alignment-distances . (15)))
Per comprendere come funziona ognuna di queste impostazioni, iniziamo vedendo un esempio che non contiene alcuna modifica.
\header { tagline = ##f } \paper { left-margin = 0\mm } \book { \score { << \new Staff << \new Voice { s1*5 \break s1*5 \break s1*5 \break } \new Voice { \repeat unfold 15 { c'4 c' c' c' } } >> \new Staff { \repeat unfold 15 { d'4 d' d' d' } } >> } }
Questa partitura isola l’informazione sulle interruzioni di linea e di pagina in una voce apposita. Questa tecnica di creare una voce per le interruzioni permette di tenere la formattazione separata dalla musica via via che il nostro esempio diventa più complicato. Vedi anche Interruzioni.
Usando comandi \break
espliciti, la musica viene divisa proporzionalmente
in cinque misure per linea. La spaziatura verticale è quella predefinita di
LilyPond ma il punto di inizio verticale di ogni sistema è impostato
esplicitamente con la coppia Y-offset
dell’attributo
line-break-system-details
del grob NonMusicalPaperColumn
:
\header { tagline = ##f } \paper { left-margin = 0\mm } \book { \score { << \new Staff << \new Voice { \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 0)) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 40)) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 60)) s1*5 \break } \new Voice { \repeat unfold 15 { c'4 c' c' c' } } >> \new Staff { \repeat unfold 15 { d'4 d' d' d' } } >> } }
Nota che line-break-system-details
accetta una lista associativa di
molti valori, ma ne abbiamo impostato solo uno in questo esempio. Nota
anche che la proprietà Y-offset
qui determina la posizione verticale
esatta sulla pagina in cui ogni nuovo sistema verrà visualizzato.
Oltre al posizionamento assoluto che si ottiene con Y-offset
e
X-offset
, è possibile anche il posizionamento relativo tramite
la proprietà extra-offset
di line-break-system-details
.
Il posizionamento è relativo alla formattazione predefinita o al posizionamento
assoluto determinato dall’uso di X-offset
e Y-offset
. La
proprietà extra-offset
accetta una coppia
di numeri che
determinano lo spostamento lungo gli assi X e Y.
\header { tagline = ##f } \paper { left-margin = 0\mm } \book { \score { << \new Staff << \new Voice { s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((extra-offset . (0 . 10))) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((extra-offset . (0 . 10))) s1*5 \break } \new Voice { \repeat unfold 15 { c'4 c' c' c' } } >> \new Staff { \repeat unfold 15 { d'4 d' d' d' } } >> } }
Ora che abbiamo impostato esplicitamente il punto di inizio verticale di
ogni sistema, possiamo impostare manualmente anche le distanze verticali
tra i righi. Per farlo usiamo la sottoproprietà alignment-distances
di line-break-system-details
.
\header { tagline = ##f } \paper { left-margin = 0\mm } \book { \score { << \new Staff << \new Voice { \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 20) (alignment-distances . (10))) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 60) (alignment-distances . (15))) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 85) (alignment-distances . (20))) s1*5 \break } \new Voice { \repeat unfold 15 { c'4 c' c' c' } } >> \new Staff { \repeat unfold 15 { d'4 d' d' d' } } >> } }
Nota che qui assegnamo due valori diversi all’attributo
line-break-system-details
del grob
NonMusicalPaperColumn
. Sebbene l’attributo alist
line-break-system-details
accetti molti altri parametri di
spaziatura (inclusa, per esempio, una coppia corrispondente
di X-offset
), è sufficiente impostare soltanto le coppie Y-offset
e alignment-distances
per regolare il punto di inizio verticale di
ogni sistema e ogni rigo. Infine nota che alignment-distances
specifica il posizionamento verticale dei righi ma non dei gruppi di righi.
\header { tagline = ##f } \paper { left-margin = 0\mm } \book { \score { << \new Staff << \new Voice { \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 0) (alignment-distances . (30 10))) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 60) (alignment-distances . (10 10))) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 100) (alignment-distances . (10 30))) s1*5 \break } \new Voice { \repeat unfold 15 { c'4 c' c' c' } } >> \new StaffGroup << \new Staff { \repeat unfold 15 { d'4 d' d' d' } } \new Staff { \repeat unfold 15 { e'4 e' e' e' } } >> >> } }
Alcuni punti da considerare:
- Quando si usa
alignment-distances
, il testo vocale e altre linee che non sono righi non contano come rigo. - Le unità dei numeri assegnati a
X-offset
,Y-offset
,extra-offset
ealignment-distances
sono interpretati come multipli della distanza tra linee del rigo adiacenti. Valori positivi spostano in su righi e testo, valori negativi li spostano in giù. - Dato che le impostazioni di
NonMusicalPaperColumn.line-break-system-details
illustrate qui permettono il posizionamento di righi e sistemi ovunque sulla pagina, è possibile violare i confini del foglio o dei margini o perfino sovrapporre righi e sistemi uno sopra l’altro. Ciò può essere evitato assegnando valori ragionevoli a queste diverse impostazioni.
Vedi anche
Frammenti: Spacing.