5.4.9 Alignement des objets

Les objets graphiques disposant des interfaces self-alignment-interface ou side-position-interface peuvent s’aligner par rapport à un objet précédemment positionné, ce de différentes manières. Ces objets sont référencés aux rubriques self-alignment-interface et side-position-interface.

Tous les objets graphiques ont un point de référence, une étendue horizontale et une étendue verticale. L’étendue horizontale est représentée par une paire de nombres indiquant l’écart entre le point de référence et les bords gauche et droit – l’écart à gauche étant négatif. L’étendue verticale est représentée par une paire de nombres indiquant l’écart entre le point de référence et les bords inférieur et supérieur – l’écart vers le bas étant négatif.

La position d’un objet sur la portée est donnée par la valeur des propriétés X-offset et Y-offset. La valeur de X-offset indique l’écart en abscisse (coordonnée X) par rapport au point de référence de l’objet parent ; la valeur de Y-offset indique l’écart par rapport à la ligne médiane de la portée. Les valeurs de X-offset et Y-offset peuvent être fournies arbitrairement, ou bien être calculé par des procédures spécifiques qui détermineront l’alignement par rapport à l’objet parent.

Note : Nombre d’objets sont affectés par des considérations spécifiques en matière de positionnement ; jouer sur les valeurs de X-offset ou Y-offset se révélera inefficace en pareil cas, même si l’objet dispose de la self-alignment-interface. Fixer arbitrairement les propriétés X-offset ou Y-offset annihilera alors les effets de la propriété self-alignment correspondante.

Par exemple, une altération peut se repositionner verticalement grâce à son Y-offset ; toute modification de son X-offset restera par contre sans effet.

Les indications de repère s’alignent sur des objets de rupture – tels les barres de mesure, clefs, métriques et armures. Certaines propriétés spécifiques – dépendant de la break-aligned-interface – permettent de gérer le positionnement des indications de repère sur ces objets.

Voir aussi

Manuel de notation : Utilisation de break-aligned-interface.

Manuel d’extension : Fonctions de rappel.


Détermination directe de X-offset et Y-offset

Vous pouvez fournir, pour de nombreux objets, des valeurs numériques aux propriétés X-offset et Y-offset. Voici par exemple une note avec indication du doigté tout d’abord avec un positionnement par défaut, puis repositionnement par modification successive du X-offset et du Y-offset.

a'-3
a'
-\tweak X-offset #0
-\tweak Y-offset #0
-3
a'
-\tweak X-offset #-1
-\tweak Y-offset #1
-3

[image of music]


Utilisation de side-position-interface

Un objet disposant de la side-position-interface peut se voir accolé à son voisin de telle sorte que les bords des deux objets se touchent. Un tel objet peut se positionner au-dessus, en dessous, à droite ou à gauche de son parent. Ce parent ne saurait être stipulé ; il est déterminé par l’ordre d’apparition des éléments dans le flux des saisies. La plupart de ces objets ont pour parent la tête de note qui leur est associée.

Les valeurs des propriétés side-axis et direction détermineront l’endroit où viendra se positionner l’objet, selon les préceptes suivants :

Propriété side-axisPropriété directionPositionnement
0-1gauche
01droite
1-1en dessous
11au-dessus

Pour un side-axis à 0, le X-offset devrait engager la procédure ly:side-position-interface::x-aligned-side. Celle-ci renverra la valeur adéquate de X-offset permettant d’accoler l’objet sur la droite ou sur la gauche de son parent, selon la valeur de direction.

Pour un side-axis à 1, le Y-offset devrait engager la procédure ly:side-position-interface::y-aligned-side. Celle-ci renverra la valeur adéquate de Y-offset permettant d’accoler l’objet au-dessus ou en dessous de son parent, selon la valeur de direction.


Utilisation de self-alignment-interface

Réalignement d’objets horizontalement

L’alignement horizontal d’un objet disposant de la self-alignment-interface dépend de la valeur de sa propriété self-alignment-X, si tant est que la propriété X-offset de cet objet engage la procédure ly:self-alignment-interface::x-aligned-on-self. La propriété self-alignment-X peut contenir un nombre réel, l’unité de base étant la moitié de l’étendue horizontale de l’objet. Une valeur négative décalera l’objet vers la droite, une valeur positive vers la gauche. La valeur 0 permet de centrer l’objet sur le point de référence de son parent. Une valeur de -1 alignera le bord gauche de l’objet sur le point de référence de son parent, et une valeur de 1 alignera le bord droit de l’objet sur le point de référence de son parent. Les valeurs symboliques LEFT, CENTER et RIGHT correspondent respectivement à -1, 0 et 1.

En règle générale, la valeur de self-alignment-X se modifie à l’aide d’une commande \override. Le recours à la commande \tweak permet de traiter séparément plusieurs annotations affectées à une même note :

a'
-\tweak self-alignment-X #-1
^"left-aligned"
-\tweak self-alignment-X #0
^"center-aligned"
-\tweak self-alignment-X #RIGHT
^"right-aligned"
-\tweak self-alignment-X #-2.5
^"aligned further to the right"

[image of music]

Réalignement d’objets verticalement

L’alignement vertical suit le même principe : la propriété Y-offset doit alors engager la procédure ly:self-alignment-interface::y-aligned-on-self. Toutefois, il arrive bien souvent que d’autres mécanismes interviennent dans l’alignement vertical. La valeur de Y-offset n’étant que l’une des variables qui seront prises en compte, l’ajustement pour certains objets peut se révéler fastidieux. L’unité de base est relativement réduite, puisqu’elle est de la moitié de l’étendue verticale de l’objet ; le nombre à fournir en argument pourrait donc être relativement élevé. Une valeur de -1 alignera le bord inférieur de l’objet sur le point de référence de son parent, et une valeur de 1 alignera le bord supérieur de l’objet sur le point de référence de son parent. La valeur 0 permet de centrer l’objet sur le point de référence de son parent. Les valeurs symboliques DOWN, CENTER et UP correspondent respectivement à -1, 0 et 1.

Réalignement d’objets sur les deux axes

Définir à la fois X-offset et Y-offset permet de réaligner un objet sur les deux axes.

Dans l’exemple ci-dessous, nous ajustons l’indication de doigté de telle sorte qu’elle se place au plus près de la tête de note.

a'
-\tweak self-alignment-X #0.5  % move horizontally left
-\tweak Y-offset #ly:self-alignment-interface::y-aligned-on-self
-\tweak self-alignment-Y #-1  % move vertically up
-3  % third finger

[image of music]


Utilisation de break-aligned-interface

Indications de repère, marques textuelles, numéros de mesure et plus généralement tous les objets disposant de la break-alignable-interface – que l’on pourrait regrouper sous l’apellation de « jalons » – sont susceptibles de se positionner sur des objets de notation tels que barre de mesure, armure, métrique et plus communément tout objet disposant de la break-aligned-interface. Pour être plus précis, ces derniers disposent d’une propriété break-align-symbol, qui est un symbole Scheme. Un jalon, donc un objet disposant de break-alignable-interface, peut définir son point d’ancrage aux éléments disposant de break-aligned-interface, ce au moyen d’une liste de symboles qui correspondent aux valeurs de break-align-symbol des éléments sur lesquels il peut s’aligner. Une liste exhaustive des symboles est disponible au chapitre break-alignment-interface.

Chaque objet possède son propre point de référence par défaut, sur lequel viendront s’aligner les jalons :

\override Score.TextMark.self-alignment-X = #CENTER
% Le repère textuel s'alignera
% sur la droite de la clef
\override Score.TextMark.break-align-symbols =
            #'(clef)
\key a \major
\clef treble
\textMark "↓"
e'1
% Le repère textuel s'alignera
% sur la gauche de la métrique
\override Score.TextMark.break-align-symbols =
            #'(time-signature)
\key a \major
\clef treble
\time 3/4
\textMark "↓"
e'2.
% Le repère textuel sera centré
% au-dessus de la respiration
\override Score.TextMark.break-align-symbols =
            #'(breathing-sign)
\key a \major
\clef treble
\time 4/4
e'1
\breathe
\textEndMark "↓"

[image of music]

Les différents objets sur lesquels l’alignement pourrait intervenir seront regroupés dans une liste. Si l’un des objets est invisible à l’endroit voulu, en raison d’un réglage de break-visibility ou bien par forçage de la visibilité des armures et clefs, le repère ou le numéro de mesure viendra s’aligner sur le premier élément de cette liste qui soit visible. Dans le cas où aucun objet de la liste n’est visible, l’alignement se fera sur la barre de mesure ou, dans le cas où la barre de mesure est invisible, à l’endroit même où la barre prendrait place.

\override Score.TextMark.self-alignment-X = #CENTER
% Le repère textuel s'alignera
% sur la droite de l'armure
\override Score.TextMark.break-align-symbols =
            #'(key-signature clef)
\key a \major
\clef treble
\textMark "↓"
e'1
% Le repère textuel s'alignera
% sur la droite de la clef
\set Staff.explicitKeySignatureVisibility = #all-invisible
\override Score.TextMark.break-align-symbols =
            #'(key-signature clef)
\key a \major
\clef bass
\textMark "↓"
gis,1
% Le repère textuel sera centré
% au-dessus de la barre de mesure
\set Staff.explicitKeySignatureVisibility = #all-invisible
\set Staff.explicitClefVisibility = #all-invisible
\override Score.TextMark.break-align-symbols =
            #'(key-signature clef)
\key a \major
\clef treble
\textMark "↓"
e'1

[image of music]

L’alignement d’un jalon sur un objet de notation peut se modifier, comme l’illustre l’exemple suivant. Toutefois, si la partition comporte plusieurs portées, ce réglage devra apparaître dans chacune des portées.

\override Score.TextMark.self-alignment-X = #CENTER
% Le repère textuel s'alignera
% sur la droite de l'armure
\override Score.TextMark.break-align-symbols =
            #'(key-signature)
\key a \major
\clef treble
\time 4/4
\textMark "↓"
e'1
% Le repère textuel sera centré
% au-dessus de l'armure
\once \override Score.KeySignature.break-align-anchor-alignment =
                  #CENTER
\textMark "↓"
\key a \major
e'1
% Le repère textuel s'alignera
% sur la gauche de l'armure
\once \override Score.KeySignature.break-align-anchor-alignment =
                  #LEFT
\key a \major
\textMark "↓"
e'1

[image of music]

Le bord gauche d’un jalon peut se décaler arbitrairement sur la gauche ou sur la droite. La valeur est exprimée en espaces de portée.

\override Score.TextMark.self-alignment-X = #CENTER
% Le repère textuel s'alignera
% sur la gauche de l'armure
% puis décalé de 3,5 espaces de portée vers la droite
\override Score.TextMark.break-align-symbols =
            #'(key-signature)
\once \override Score.KeySignature.break-align-anchor = #3.5
\key a \major
\textMark "↓"
e'1
% Le repère textuel s'alignera
% sur la gauche de l'armure
% puis sera décalé de 2 espaces de portée vers la gauche
\once \override Score.KeySignature.break-align-anchor = #-2
\key a \major
\textMark "↓"
e'1

[image of music]


LilyPond — Manuel de notation v2.24.4 (branche stable).