[ < ] [ > ]   [ << ] [ Su ] [ >> ]         [Inizio] [Contenuti] [Indice] [ ? ]

4.4 Spaziatura verticale

@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.


[ < ] [ > ]   [ << ] [ Su ] [ >> ]         [Inizio] [Contenuti] [Indice] [ ? ]

4.4.1 Spaziatura verticale flessibile all’interno dei sistemi

@translationof Flexible vertical spacing within systems

Tre meccanismi distinti regolano la spaziatura verticale flessibile all’interno dei sistemi, uno per ognuna delle seguenti categorie:

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


[ < ] [ > ]   [ << ] [ Su ] [ >> ]         [Inizio] [Contenuti] [Indice] [ ? ]

Proprietà della spaziatura dentro un sistema

@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-rigoPunto di riferimento
ChordNameslinea di base
NoteNameslinea di base
Lyricslinea di base
Dynamicsmetà altezza di ‘m’
FiguredBasspunto più alto
FretBoardslinea più alta

Nell’immagine seguente, le linee orizzontali indicano le posizioni di questi punti di riferimento:

[image of music]

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.

Proprietà del grob VerticalAxisGroup

Le proprietà di VerticalAxisGroup sono solitamente modificate con un \override nel livello Staff (o equivalente).

staff-staff-spacing

Usata 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-spacing

Un 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-affinity

La 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-spacing

La 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-spacing

La 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-spacing

La 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.

Proprietà del grob StaffGrouper

Le proprietà di StaffGrouper sono solitamente modificate con un \override nel livello StaffGroup (o livello equivalente).

staff-staff-spacing

La 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-spacing

La 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.

Vedi anche

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] [ ? ]

Spaziatura dei righi non raggruppati

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

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

[image of music]

Vedi anche

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] [ ? ]

Spaziatura dei righi raggruppati

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

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

[image of music]

Vedi anche

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] [ ? ]

Spaziatura delle linee che non sono righi

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

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

[image of music]

Vedi anche

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] [ ? ]

4.4.2 Posizionamento esplicito di righi e sistemi

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

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:

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

[image of music]

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

[image of music]

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

[image of music]

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

[image of music]

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

[image of music]

Alcuni punti da considerare:

Vedi anche

Frammenti: (snippets)Spacing section ‘Spacing’ in Frammenti di codice.


[ < ] [ > ]   [ << ] [ Su ] [ >> ]         [Inizio] [Contenuti] [Indice] [ ? ]

4.4.3 Elusione delle collisioni verticali

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

[image of music]

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
}

[image of music]

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
}

[image of music]

Vedi anche

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.