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 à la
propriété 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
\once \override NonMusicalPaperColumn.line-break-system-details = #'((X-offset . 20)) \once \override NonMusicalPaperColumn.line-break-system-details = #'((Y-offset . 40)) \once \override NonMusicalPaperColumn.line-break-system-details = #'((X-offset . 20) (Y-offset . 40)) \once \override NonMusicalPaperColumn.line-break-system-details = #'((alignment-distances . (15))) \once \override 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 { \once \override Score.NonMusicalPaperColumn .line-break-system-details = #'((Y-offset . 0)) s1*5 \break \once \override Score.NonMusicalPaperColumn .line-break-system-details = #'((Y-offset . 40)) s1*5 \break \once \override 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 \once \override Score .NonMusicalPaperColumn .line-break-system-details = #'((extra-offset . (0 . 10))) s1*5 \break \once \override 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 { \once \override Score .NonMusicalPaperColumn .line-break-system-details = #'((Y-offset . 20) (alignment-distances . (10))) s1*5 \break \once \override Score .NonMusicalPaperColumn .line-break-system-details = #'((Y-offset . 60) (alignment-distances . (15))) s1*5 \break \once \override 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 { \once \override Score .NonMusicalPaperColumn .line-break-system-details = #'((Y-offset . 0) (alignment-distances . (30 10))) s1*5 \break \once \override Score .NonMusicalPaperColumn .line-break-system-details = #'((Y-offset . 60) (alignment-distances . (10 10))) s1*5 \break \once \override 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
etalignment-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.