4.4.3 Résolution des collisions verticales
Vous savez de manière intuitive qu’un certain nombre d’objets en matière de notation musicale appartiennent à la portée, et que d’autres se placent en dehors de la portée. Entre autres objets externes, nous avons les marques repères, les textes et les nuances ; nous les appellerons « objets extérieurs à la portée ». La règle adoptée par LilyPond pour positionner verticalement ces objets extérieurs consiste à les placer au plus près de la portée tout en prenant garde d’éviter qu’il y ait chevauchement.
LilyPond utilise la propriété outside-staff-priority
afin de
déterminer si un objet est ou non un objet extérieur à la portée :
lorsque la valeur de outside-staff-priority
est numérique, il
s’agit d’un objet extérieur à la portée. De plus, la propriété
outside-staff-priority
indique à LilyPond l’ordre dans lequel ces
objets doivent être disposés.
Tout d’abord, LilyPond dispose tous les objets qui ne sont pas externes.
Les objets extérieurs à la portée sont alors triés selon l’ordre
croissant de leur outside-staff-priority
. Enfin, LilyPond prend
chacun des ces objets et les positionne de telle sorte qu’il n’entrent
pas en collision avec ceux qui on déjà été placés. Autrement dit,
lorsque deux objets devraient se placer au même endroit, celui dont la
outside-staff-priority
est la plus faible sera disposé au plus
près de la portée.
c4_"Text"\pp r2. \once \override TextScript #'outside-staff-priority = #1 c4_"Text"\pp % this time the text will be closer to the staff r2. % by setting outside-staff-priority to a non-number, % we disable the automatic collision avoidance \once \override TextScript #'outside-staff-priority = ##f \once \override DynamicLineSpanner #'outside-staff-priority = ##f c4_"Text"\pp % now they will collide
Le décalage vertical entre un objet extérieur à la portée et celui qui
le précède se contrôle par la propriété outside-staff-padding
.
\once \override TextScript #'outside-staff-padding = #0 a'^"Ce texte est placé au plus près de la note" \once \override TextScript #'outside-staff-padding = #3 c^"Ce texte est décalé par rapport au texte précédent" c^"Ce texte est accolé au texte précédent"
Par défaut, les objets extérieurs à la portée sont positionnés en
évitant les collisions horizontales avec des objets précédemment
positionnés. Ceci peut cependant générer des situations où des objets
se trouvent horizontalement trop proches. L’espacement vertical entre
les portées peut dans une certaine mesure permettre de mieux intercaler
les objets extérieurs à la portée. La propriété
outside-staff-horizontal-padding
repoussera verticalement un
objet pour éviter ce genre de situation.
% the markup is too close to the following note c4^"Text" c4 c''2 % setting outside-staff-horizontal-padding fixes this R1 \once \override TextScript #'outside-staff-horizontal-padding = #1 c,,4^"Text" c4 c''2
Voir aussi
Morceaux choisis : Espacements.
Autres langues : English, deutsch, español, italiano, 日本語.
About automatic language selection.