| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Vertical spacing
La spaziatura verticale è regolata da tre elementi: la quantità di spazio disponibile (ovvero il formato e i margini), la quantità di spazio tra i sistemi e la quantità di spazio tra i righi di un sistema.
| 4.4.1 Spaziatura verticale flessibile all’interno dei sistemi | ||
| 4.4.2 Posizionamento esplicito di righi e sistemi | ||
| 4.4.3 Elusione delle collisioni verticali |
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Flexible vertical spacing within systems
Tre meccanismi distinti regolano la spaziatura verticale flessibile all’interno dei sistemi, uno per ognuna delle seguenti categorie:
ChoirStaff, etc.), e
Lyrics, ChordNames,
etc.).
L’altezza di ogni sistema è determinata in due fasi. Prima vengono spaziati tutti i righi in base alla quantità di spazio disponibile. Poi le linee che non sono righi sono distribuite tra i righi.
Nota che i meccanismi di spaziatura trattati in questa sezione regolano
soltanto la spaziatura verticale dei righi e delle linee (che non sono
righi) all’interno di singoli sistemi. La spaziatura verticale tra
sistemi, partiture, testi e margini separati è regolata dalle variabili
\paper trattate in
@ref{Flexible vertical spacing paper variables,,Variabili @code{\paper} della spaziatura verticale flessibile}.
| Proprietà della spaziatura dentro un sistema | ||
| Spaziatura dei righi non raggruppati | ||
| Spaziatura dei righi raggruppati | ||
| Spaziatura delle linee che non sono righi |
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Within-system spacing properties
I meccanismi di spaziatura verticale dentro un sistema sono regolati da
due gruppi di proprietà dei grob. Il primo gruppo è associato al grob
VerticalAxisGroup, creato da tutti i righi e tutte le linee che
non sono righi. Il secondo gruppo è associato al grob
StaffGrouper, che può essere creato da gruppi di righi, ma
solo se richiamato esplicitamente. Queste proprietà sono descritte
una per una alla fine di questa sezione.
Il nome di queste proprietà (con l’eccezione di staff-affinity)
hanno il formato elemento1-elemento2-spacing, dove
elemento1 e elemento2 sono gli elementi di
cui determinare la distanza. Nota che elemento2 non è
necessariamente sotto elemento1; per esempio,
nonstaff-relatedstaff-spacing prenderà le misure verso l’alto a
partire dalla linea che non è un rigo (nonstaff) se
staff-affinity è impostato su UP.
Ogni distanza è calcolata tra i punti di riferimento dei due
elementi. Il punto di riferimento di un rigo è il centro verticale
del suo StaffSymbol (ovvero la linea centrale se
line-count (il numero di linee) è dispari; lo spazio centrale
se line-count è pari). I punti di riferimento per ciascuna linea
che non è un rigo sono elencati nella seguente tabella:
| Linea non-rigo | Punto di riferimento |
|---|---|
ChordNames | linea di base |
NoteNames | linea di base |
Lyrics | linea di base |
Dynamics | metà altezza di ‘m’ |
FiguredBass | punto più alto |
FretBoards | linea più alta |
Nell’immagine seguente, le linee orizzontali indicano le posizioni di questi punti di riferimento:
Tutte le proprietà di spaziatura verticale del grob (eccetto
staff-affinity) usano la stessa struttura della lista
associativa usata dalle variabili di spaziatura di \paper
trattate in
@ref{Flexible vertical spacing paper variables,,Variabili @code{\paper} della spaziatura verticale flessibile}.
Metodi specifici per modificare queste liste sono spiegati in
Modifica delle liste associative. Le proprietà dei grob devono essere
modificate con un comando \override dentro un blocco
\score o \layout e non in un blocco
\paper.
L’esempio seguente illustra i due modi con cui si possono modificare queste liste associative (alist). La prima dichiarazione trasforma un elemento-valore singolarmente, mentre la seconda ridefinisce completamente la proprietà:
\new Staff \with {
\override VerticalAxisGroup.default-staff-staff-spacing.basic-distance = #10
} { … }
\new Staff \with {
\override VerticalAxisGroup.default-staff-staff-spacing =
#'((basic-distance . 10)
(minimum-distance . 9)
(padding . 1)
(stretchability . 10))
} { … }
|
Per cambiare le impostazioni di spaziatura globalmente, inserirle in
un blocco \layout:
\layout {
\context {
\Staff
\override VerticalAxisGroup.default-staff-staff-spacing.basic-distance = #10
}
}
|
Le impostazioni predefinite delle proprietà di spaziatura verticale dei
grob sono elencate in
(internals)VerticalAxisGroup section ‘VerticalAxisGroup’ in Guida al Funzionamento Interno e
(internals)StaffGrouper section ‘StaffGrouper’ in Guida al Funzionamento Interno. Le modifiche predefinite con \override
per tipologie specifiche di linee che non sono righi sono elencate
nelle descrizioni del relativo contesto in
(internals)Contexts section ‘Contexts’ in Guida al Funzionamento Interno.
VerticalAxisGroupLe proprietà di VerticalAxisGroup sono solitamente modificate
con un \override nel livello Staff (o equivalente).
staff-staff-spacingUsata per determinare la distanza tra il rigo corrente e il rigo
inferiore nello stesso sistema, anche se tra i due si trovano una o
più linee che non sono righi (come Lyrics).
Non è applicata all’ultimo rigo di un sistema.
Inizialmente, la proprietà staff-staff-spacing di un
VerticalAxisGroup è una funzione Scheme che applica le
proprietà di StaffGrouper se il rigo fa parte di un
gruppo, o la proprietà default-staff-staff-spacing del rigo
altrimenti. Questo permette ai righi di essere spaziati diversamente
quando sono raggruppati. Per ottenere una spaziatura uniforme
indipendentemente dal raggruppamento, questa funzione può essere
sostituita da un alist di spaziatura flessibile, usando la forma
di override che ridefinisce completamente la variabile, come mostrato
prima.
default-staff-staff-spacingUn alist di spaziatura flessibile che definisce la proprietà
staff-staff-spacing usata per i righi isolati, a meno che
staff-staff-spacing non sia stata impostata esplicitamente
con un \override.
staff-affinityLa direzione del rigo da usare per spaziare la linea che non è un rigo.
Le opzioni sono UP (su), DOWN (giù) e
CENTER (centro). Se impostata su CENTER, la linea
fuori dal rigo si troverà in un punto equidistante tra i due righi
più vicini su qualunque lato, a meno che delle collisioni o altre
costrizioni di spazio non lo impediscano. Linee (che non sono righi)
adiacenti dovrebbero avere un valore di staff-affinity che
non cresce: per esempio, una linea che non è un rigo impostata su
UP non deve seguire immediatamente una linea impostata su
DOWN. Linee che non sono righi in cima a un sistema devono usare
DOWN; quelle in fondo UP. Impostando
staff-affinity per un rigo, questo sarà trattato come
una linea che non è un rigo. Impostando staff-affinity su #f,
una linea che non è un rigo sarà trattata come un rigo. Impostando
staff-affinity su UP, CENTER o DOWN,
un rigo verrà spaziato come se fosse una linea che non è un rigo.
nonstaff-relatedstaff-spacingLa distanza fra la linea (che non è un rigo) corrente e il rigo più
vicino nella direzione di staff-affinity, se non ci sono
linee che non sono righi tra le due e staff-affinity è
impostato su UP o DOWN. Se staff-affinity è
impostato su CENTER, viene usato nonstaff-relatedstaff-spacing
per i righi più vicini su entrambi i lati, anche se appaiono
altre linee tra quella corrente e uno qualsiasi dei righi. Ciò
significa che il posizionamento di una linea dipende sia dai righi
che dalle linee circostanti. Impostando la proprietà stretchability
di uno di questi tipi di spaziatura su un piccolo valore, quella spaziatura
sarà dominante. Impostando stretchability su un grande valore, quella
spaziatura avrà poco effetto.
nonstaff-nonstaff-spacingLa distanza fra la linea (che non è un rigo) corrente e quella successiva
nella direzione di staff-affinity, se entrambe sono sullo stesso
lato del rigo in questione e se staff-affinity è impostata su
UP o DOWN.
nonstaff-unrelatedstaff-spacingLa distanza fra la linea (che non è un rigo) corrente e il rigo nella
direzione opposta rispetto a staff-affinity, se non ci sono
altre linee tra i due e se staff-affinity è impostato su
UP o DOWN. Ciò può servire, per esempio, a imporre
un padding minimo tra una linea Lyrics e il rigo al quale non
appartiene.
StaffGrouperLe proprietà di StaffGrouper sono solitamente modificate con un
\override nel livello StaffGroup (o livello equivalente).
staff-staff-spacingLa distanza tra righi consecutivi del gruppo di righi
corrente. La proprietà staff-staff-spacing del grob
VerticalAxisGroup di un singolo rigo può essere
sovrascritta con varie impostazioni di spaziatura per quel rigo.
staffgroup-staff-spacingLa distanza tra l’ultimo rigo del gruppo di righi corrente e
il rigo immediatamente successivo nello stesso sistema, anche se
tra i due righi ci sono una o più linee che non sono righi (come
Lyrics). Non è applicata al rigo inferiore di un sistema. La
proprietà staff-staff-spacing del grob VerticalAxisGroup
di un singolo rigo può essere sovrascritta con varie impostazioni di
spaziatura per quel rigo.
Guida alla notazione: @ref{Flexible vertical spacing paper variables,,Variabili @code{\paper} della spaziatura verticale flessibile}, Modifica delle liste associative.
File installati: ‘ly/engraver-init.ly’, ‘scm/define-grobs.scm’.
Guida al funzionamento interno: (internals)Contexts section ‘Contexts’ in Guida al Funzionamento Interno, (internals)VerticalAxisGroup section ‘VerticalAxisGroup’ in Guida al Funzionamento Interno, (internals)StaffGrouper section ‘StaffGrouper’ in Guida al Funzionamento Interno.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Spacing of ungrouped staves
I righi (come Staff, DrumStaff,
TabStaff, etc.) sono contesti che possono contenere uno o
più contesti voce, ma non possono contenere altri righi.
Le seguenti proprietà influenzano la spaziatura di righi non raggruppati:
VerticalAxisGroup:
default-staff-staff-spacing
staff-staff-spacing
Queste proprietà del grob sono state descritte una a una in precedenza; vedi @ref{Within-system spacing properties}.
Altre proprietà entrano in gioco per i righi che sono parte di un gruppo; vedi @ref{Spacing of grouped staves}.
L’esempio seguente mostra come la proprietà default-staff-staff-spacing
possa influenzare la spaziatura di righi non raggruppati. Le stesse
modifiche applicate a staff-staff-spacing avrebbero lo stesso
effetto, ma verrebbero applicate anche nel caso in cui i righi siano
combinati in uno o più gruppi.
\layout { \context { \Staff \override VerticalAxisGroup.default-staff-staff-spacing = #'((basic-distance . 8) (minimum-distance . 7) (padding . 1)) } } << % Questa nota molto bassa ha bisogno di più spazio di quanto 'basic-distance % possa fornirne, dunque la distanza tra questo rigo e quello successivo % è determinato da 'padding. \new Staff { b,2 r | } % Qui 'basic-distance fornisce abbastanza spazio, e non c'è bisogno % di comprimere lo spazio (verso 'minimum-distance) per far spazio % per qualcos'altro sulla pagina, dunque la distanza tra questo % rigo e quello successivo è determinato da 'basic-distance. \new Staff { \clef bass g2 r | } % Impostando 'padding su un valore negativo, è possibile far sì che % i righi entrino in collisione. Il più basso valore accettabile per % 'basic-distance è 0. \new Staff \with { \override VerticalAxisGroup.default-staff-staff-spacing = #'((basic-distance . 3.5) (padding . -10)) } { \clef bass g2 r | } \new Staff { \clef bass g2 r | } >>
File installati: ‘scm/define-grobs.scm’.
Frammenti: (snippets)Spacing section ‘Spacing’ in Frammenti di codice.
Guida al funzionamento interno: (internals)VerticalAxisGroup section ‘VerticalAxisGroup’ in Guida al Funzionamento Interno.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Spacing of grouped staves
Nelle partiture orchestrali e in alte grosse partiture, di norma i righi vengono raggruppati. Lo spazio tra i gruppi è più ampio dello spazio tra i righi dello stesso gruppo.
I gruppi di righi (come StaffGroup, ChoirStaff,
etc.) sono contesti che possono contenere uno o più righi
simultaneamente.
Le seguenti proprietà influenzano la spaziatura dei righi nei gruppi:
VerticalAxisGroup:
staff-staff-spacing
StaffGrouper:
staff-staff-spacing
staffgroup-staff-spacing
Queste proprietà dei grob sono descritte una a una in una sezione precedente; vedi @ref{Within-system spacing properties}.
L’esempio seguente mostra come le proprietà del grob
StaffGrouper possano influenzare la spaziatura dei righi raggruppati:
\layout { \context { \Score \override StaffGrouper.staff-staff-spacing.padding = #0 \override StaffGrouper.staff-staff-spacing.basic-distance = #1 } } << \new PianoStaff \with { \override StaffGrouper.staffgroup-staff-spacing.basic-distance = #20 } << \new Staff { c'1 } \new Staff { c'1 } >> \new StaffGroup << \new Staff { c'1 } \new Staff { c'1 } >> >>
File installati: ‘scm/define-grobs.scm’.
Frammenti: (snippets)Spacing section ‘Spacing’ in Frammenti di codice.
Guida al funzionamento interno: (internals)VerticalAxisGroup section ‘VerticalAxisGroup’ in Guida al Funzionamento Interno, (internals)StaffGrouper section ‘StaffGrouper’ in Guida al Funzionamento Interno.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Spacing of non-staff lines
Le linee che non sono righi (come Lyrics, ChordNames,
etc.) sono contesti i cui oggetti della formattazione sono disposti come se
fossero su dei righi (ovvero su linee orizzontali all’interno dei sistemi).
Precisamente, le linee che non sono righi sono contesti non-rigo che contengono
l’incisore
(internals)Axis_group_engraver section ‘Axis_group_engraver’ in Guida al Funzionamento Interno.
Le seguenti proprietà influenzano la spaziatura delle linee che non sono righi:
VerticalAxisGroup:
staff-affinity
nonstaff-relatedstaff-spacing
nonstaff-nonstaff-spacing
nonstaff-unrelatedstaff-spacing
Queste proprietà del grob sono descritte una a una in una sezione precedente, vedi @ref{Within-system spacing properties}.
L’esempio seguente mostra come la proprietà
nonstaff-nonstaff-spacing influenza la spaziatura di linee
che non sono un rigo consecutive. Impostando l’elemento
stretchability su un valore molto alto, il testo vocale
riesce a allungarsi molto più del solito:
\layout { \context { \Lyrics \override VerticalAxisGroup.nonstaff-nonstaff-spacing.stretchability = #1000 } } \new StaffGroup << \new Staff \with { \override VerticalAxisGroup.staff-staff-spacing = #'((basic-distance . 30)) } { c'1 } \new Lyrics \with { \override VerticalAxisGroup.staff-affinity = #UP } \lyricmode { up } \new Lyrics \with { \override VerticalAxisGroup.staff-affinity = #CENTER } \lyricmode { center } \new Lyrics \with { \override VerticalAxisGroup.staff-affinity = #DOWN } \lyricmode { down } \new Staff { c'1 } >>
File installati: ‘ly/engraver-init.ly’, ‘scm/define-grobs.scm’.
Frammenti: (snippets)Spacing section ‘Spacing’ in Frammenti di codice.
Guida al funzionamento interno: (internals)Contexts section ‘Contexts’ in Guida al Funzionamento Interno, (internals)VerticalAxisGroup section ‘VerticalAxisGroup’ in Guida al Funzionamento Interno.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Explicit staff and system positioning
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:
\context
\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:
alignment-distances, il testo vocale e altre linee
che non sono righi non contano come rigo.
X-offset,
Y-offset, extra-offset e alignment-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ù.
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.
Frammenti: (snippets)Spacing section ‘Spacing’ in Frammenti di codice.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Vertical collision avoidance
Intuitivamente, ci sono alcuni oggetti della notazione musicale che appartengono al rigo e altri che devono essere disposti fuori dal rigo. Gli oggetti esterni al rigo comprendono i numeri di chiamata, il testo e le dinamiche (d’ora in avanti tutti questi elementi saranno chiamati oggetti esterni al rigo). La regola di LilyPond per il posizionamento verticale degli oggetti esterni al rigo è di disporli il più vicino possibile al rigo ma non così vicino da farli collidere con un altro oggetto.
LilyPond usa la proprietà outside-staff-priority per determinare
se un grob è un oggetto fuori dal rigo: se outside-staff-priority
è un numero, il grob è un oggetto esterno al rigo. outside-staff-priority
indica a LilyPond anche in quale ordine disporre gli oggetti.
LilyPond posiziona prima tutti gli oggetti che non sono esterni al
rigo. Quindi ordina gli oggetti esterni al rigo in base al loro valore
di outside-staff-priority (in ordine crescente). Uno per volta, LilyPond
prende gli oggetti esterni al rigo e li dispone in modo che non entrino in
collisione con alcun oggetto che sia già stato disposto. Ovvero, se due
grob esterni al rigo si contendono lo stesso spazio, quello col valore
di outside-staff-priority più basso sarà posto più vicino al rigo.
Un elenco delle proprietà esterne al rigo si trova in (learning)La proprietà outside-staff-priority section ‘La proprietà outside-staff-priority’ in Manuale di Apprendimento.
\relative c'' { c4_"Testo"\pp r2. \once \override TextScript.outside-staff-priority = #1 c4_"Testo"\pp % stavolta il testo sarà più vicino al rigo r2. % impostando outside-staff-priority su un non-numero, % disabilitiamo l'elusione automatica delle collisioni \once \override TextScript.outside-staff-priority = ##f \once \override DynamicLineSpanner.outside-staff-priority = ##f c4_"Testo"\pp % qui entrano in collisione }
Il padding verticale intorno agli oggetti esterni al rigo
può essere regolato con outside-staff-padding.
\relative { \once \override TextScript.outside-staff-padding = #0 a'4-"outside-staff-padding = #0" \once \override TextScript.outside-staff-padding = #3 d-"outside-staff-padding = #3" c-"outside-staff-padding predefinito" b-"outside-staff-padding predefinito" R1 }
Per impostazione predefinita, gli oggetti esterni al rigo sono disposti
in modo da evitare la collisione orizzontale con grob posizionati
precedentemente. Ciò può portare a situazioni in cui gli oggetti
sono posizionati uno vicino all’altro orizzontalmente.
Come è dimostrato nell’esempio successivo, impostando outside-staff-horizontal-padding
si aumenta la spaziatura orizzontale richiesta e in questo caso si sposta
in su il testo per impedire che si avvicini troppo ai tagli addizionali.
\relative { c''4^"Parola" c c''2 R1 \once \override TextScript.outside-staff-horizontal-padding = #1 c,,4^"Parola" c c''2 }
Frammenti: (snippets)Spacing section ‘Spacing’ in Frammenti di codice.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] |
This document was generated by gub on Luglio 13, 2020 using texi2html 1.82.
Altre lingue: English, català, deutsch, español, français, 日本語.
A proposito della selezione automatica della lingua.