GNU LilyPond – Manuel de notation: 4.4.2 Positionnement explicite des portées et systèmes

### 4.4.2 Positionnement explicite des portées et systèmes

Pour bien comprendre comment fonctionnent les réglages de `VerticalAxisGroup` et de `\paper` abordés dans les deux rubriques précédentes, rien ne vaut une collection d’exemples illustrant les différentes mises au point du décalage vertical appliqué aux portées et systèmes distribués sur une page.

Une autre approche de l’espacement vertical est le recours à `NonMusicalPaperColumn.line-break-system-details`. Alors que `VerticalAxisGroup` et `\paper` gèrent un décalage vertical, `NonMusicalPaperColumn.line-break-system-details` spécifiera le positionnement vertical absolu sur la page.

`NonMusicalPaperColumn.line-break-system-details` prend en charge une liste associative de quatre mises au point :

- `X-offset`
- `Y-offset`
- `extra-offset`
- `alignment-distances`

Les dérogations en matière d’objet graphique, y compris celles concernant les `NonMusicalPaperColumn` ci-dessus, peuvent se placer à trois différents endroits de votre fichier source :

- directement au beau milieu des notes
- au sein d’un bloc `\context`
- dans un bloc `\with`

Le réglage de `NonMusicalPaperColumn` s’effectue à l’aide d’une simple commande `\override` au sein d’un bloc `\context` ou `\with`. Dans le cas où il est stipulé au fil des notes, c’est la commande spécifique `\overrideProperty` qui doit intervenir. Voici quelques exemples de réglages de `NonMusicalPaperColumn` à l’aide de la commande `\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)))

Nous allons maintenant voir ces différents réglages en action. Commençons par examiner un exemple dépourvu de toute mise au point.

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

Cette partition isole les informations de saut de ligne ou de page dans une voix spécifique. La mise en forme est ainsi séparée des événements musicaux ; ceci nous permettra d’y voir plus clair au fur et à mesure que nous avancerons. Pour plus de précisions, relisez Sauts.

Les `\break` explicites répartissent la musique en lignes de cinq mesures chacune. L’espacement vertical est celui que LilyPond attribue par défaut. Nous pouvons, afin de fixer explicitement le point d’attache vertical de chacun des systèmes, définir un doublet `Y-offset` en tant qu’attribut du `line-break-system-details` de l’objet `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' }
>           }
>         >>
>       }
>     }

Vous aurez remarqué que nous n’avons déterminé qu’une seule valeur, même si la liste associative de `line-break-system-details` peut en comporter un certain nombre. Vous aurez aussi noté que la propriété `Y-offset` détermine ici le point de départ de chacun des systèmes de la page.

Contrairement au positionnement absolu accessible par `Y-offset` et `X-offset`, il est possible d’opter pour un positionnement relatif à l’aide de la propriété `extra-offset` des `line-break-system-details`. Le placement sera relatif à la mise en forme par défaut ou au positionnement absolu géré par `X-offset` et `Y-offset`. La propriété `extra-offset` prend en argument une `paire` constituée des déplacements sur les axes horizontal et vertical.

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

Maintenant que chaque système est explicitement positionné, nous pouvons jouer sur la distance séparant les portées de chacun des systèmes, grâce à la sous-propriété `alignment-distances` de `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' }
>           }
>         >>
>       }
>     }

Nous avons maintenant assigné deux valeurs différentes à l’attribut `line-break-system-details` de l’objet `NonMusicalPaperColumn`. `line-break-system-details` pourrait prendre bien d’autres paramètres d’espacement, y compris un doublet `X-offset`, mais nous n’avons utilisé que `Y-offset` et `alignment-distances` pour contrôler le positionnement de chaque système et de chaque portée. Vous noterez enfin que `alignment-distances` traite le positionnement des portées, non d’un regroupement de portées.

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

Quelques points à prendre en considération :

- Lorsque vous utilisez `alignment-distances`, les paroles et autres lignes de non-portée ne comptent pas pour une portée.
- Les nombres fournis à `X-offset`, `Y-offset`, `extra-offset` et `alignment-distances` sont considérés comme des multiples de la distance entre des portées adjacentes. Des valeurs positives remontent les portées et paroles, des valeurs négatives les descendent.
- Dans la mesure où `NonMusicalPaperColumn.line-break-system-details` permet de positionner systèmes et portées n’importe où sur une page, vous pourriez être en contradiction avec les dimensionnements de la feuille ou bien aboutir à des surimpressions. Soyez donc raisonnable quant aux différentes valeurs que vous affectez à ces réglages.

#### Voir aussi

Morceaux choisis : Espacements.

#### LilyPond — Manuel de notation v2.22.2 (branche stable).