+
+@noindent
+On utilise @code{\set} car @code{fingeringOrientations} est une propriété
+du contexte @code{Voice}, créée et utilisée par le graveur
+@code{New_fingering_engraver}.
+
+On peut attribuer à cette propriété une liste composée de une à trois
+valeurs. Celles-ci déterminent si l'indication de doigté doit être
+placée au-dessus (lorsque @code{up} apparaît dans la liste), au-dessous
+(lorsque @code{down} apparaît), à gauche (lorsque @code{left} apparaît)
+ou à droite (lorsque @code{right} apparaît). En revanche, si une valeur
+n'est pas sur la liste, aucun doigté n'ira à cet emplacement. LilyPond
+garde ces contraintes en mémoire et recherche le meilleur emplacement
+pour le doigté des notes des accords suivants. Vous remarquerez que
+@code{left} et @code{right} s'excluent l'un l'autre -- l'indication de
+doigté ne peut être placée que d'un côté ou de l'autre, pas des deux.
+
+@warning{Ppour contrôler à l'aide de cette commande le placement du
+doigté sur une note simple, il faut la saisir comme un accord composé
+d'une note unique, en l'encadrant de chevrons.}
+
+Voici quelques exemples :
+
+@cindex doigtés, exemple
+@cindex @code{\set}, exemple d'utilisation
+@cindex fingeringOrientations, exemple de propriété
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+\set fingeringOrientations = #'(left)
+<f-2>
+< c-1 e-2 g-3 b-5 > 4
+\set fingeringOrientations = #'(left)
+<f-2>
+< c-1 e-2 g-3 b-5 > 4
+\set fingeringOrientations = #'(up left down)
+<f-2>
+< c-1 e-2 g-3 b-5 > 4
+\set fingeringOrientations = #'(up left)
+<f-2>
+< c-1 e-2 g-3 b-5 > 4
+\set fingeringOrientations = #'(right)
+<f-2>
+< c-1 e-2 g-3 b-5 > 4
+@end lilypond
+
+@noindent
+Si les indications de doigtés paraissent un peu serrées, on peut
+toujours réduire la taille de police (@code{font-size}). La valeur
+par défaut donnée dans la RPI à la page de l'objet
+@code{Fingering} étant @code{-5}, essayons @code{-7} :
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+\override Fingering #'font-size = #-7
+\set fingeringOrientations = #'(left)
+<f-2>
+< c-1 e-2 g-3 b-5 > 4
+\set fingeringOrientations = #'(left)
+<f-2>
+< c-1 e-2 g-3 b-5 > 4
+\set fingeringOrientations = #'(up left down)
+<f-2>
+< c-1 e-2 g-3 b-5 > 4
+\set fingeringOrientations = #'(up left)
+<f-2>
+< c-1 e-2 g-3 b-5 > 4
+\set fingeringOrientations = #'(right)
+<f-2>
+< c-1 e-2 g-3 b-5 > 4
+@end lilypond
+
+
+@node Outside staff objects
+@subsection Outside staff objects
+
+Les objets extérieurs à la portée sont placés automatiquement de façon à
+éviter les collisions. Les objets avec la plus petite valeur de la
+propriété @code{outside-staff-priority} sont placés au plus près de la
+portée, tandis que les autres sont écartés autant qu'il faut pour éviter
+les collisions. La @code{outside-staff-priority} est définie dans la
+@code{grob-interface} ; elle est donc une propriété commune à tous les
+objets de rendu. Par défaut, elle est réglée sur @code{#f} pour tous
+les objets de la portée, et porte une valeur numérique appropriée à
+chacun des objets extérieurs à la portée, à mesure qu'ils sont créés.
+Le tableau suivant montre la valeur numérique par défaut pour
+quelques-uns des objets extérieurs à la portée les plus courants qui
+sont placés, par défaut, dans les contextes @code{Staff} ou
+@code{Voice}.
+
+@multitable @columnfractions .3 .3 .3
+@headitem Objet de rendu
+ @tab Priorité
+ @tab Contrôle la position de :
+@item @code{MultiMeasureRestText}
+ @tab @code{450}
+ @tab Texte sur les silences qui couvrent des mesures entières
+@item @code{TextScript}
+ @tab @code{450}
+ @tab Texte des @emph{markup} (ou étiquettes)
+@item @code{OttavaBracket}
+ @tab @code{400}
+ @tab Indication d'octaviation
+@item @code{TextSpanner}
+ @tab @code{350}
+ @tab Bandeau ou extension de texte
+@item @code{DynamicLineSpanner}
+ @tab @code{250}
+ @tab Toutes les marques de nuances
+@item @code{VoltaBracketSpanner}
+ @tab @code{100}
+ @tab Bandeau de répétition
+@item @code{TrillSpanner}
+ @tab @code{50}
+ @tab Bandeau de trille
+@end multitable
+
+Voici un exemple qui montre le placement par défaut de certains
+d'entre eux.
+
+@cindex text spanner
+@cindex ottava bracket
+
+@funindex \startTextSpan
+@funindex startTextSpan
+@funindex \stopTextSpan
+@funindex stopTextSpan
+
+@cindex TextSpanner, exemple de dérogation
+@cindex bound-details, exemple de propriété
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+% Set details for later Text Spanner
+\override TextSpanner #'bound-details #'left #'text
+ = \markup { \small \bold Slower }
+% Place dynamics above staff
+\dynamicUp
+% Start Ottava Bracket
+\ottava #1
+c' \startTextSpan
+% Add Dynamic Text
+c\pp
+% Add Dynamic Line Spanner
+c\<
+% Add Text Script
+c^Text
+c c
+% Add Dynamic Text
+c\ff c \stopTextSpan
+% Stop Ottava Bracket
+\ottava #0
+c, c c c
+@end lilypond
+
+Cet exemple montre comment créer des extensions de texte (@emph{Text
+Spanners} en anglais ) -- texte avec des longues lignes au-dessus d'un
+passage musical. L'extension s'étend depuis la commande
+@code{\startTextSpan} jusqu'à la commande @code{\stopTextSpan} et le
+format de texte est défini par la commande @code{\override TextSpanner}.
+Pour de plus amples détails, voir @ruser{Text spanners}.
+
+Il montre aussi comment créer des marques d'octaviation.
+
+@cindex modification du positionnement des numéros de mesure
+@cindex numéros de mesure, modification du positionnement
+@cindex modification du positionnement des indications métronomiques
+@cindex indications métronomiques, modification du positionnement
+@cindex modification du positionnement des marques de repère
+@cindex marques de repère, modification du positionnement
+
+Vous aurez remarqué que les numéros de mesure, l'indication métronomique
+et les marques de répétition n'apparaissent pas. Par défaut, ils sont
+créés dans le contexte @code{Score} et leur
+@code{outside-staff-priority} est ignorée face aux objets qui sont créés
+dans le contexte @code{Staff}. Si vous voulez faire apparaître les
+numéros de mesure, l'indication métronomique ou les marques de
+répétition conformément à la valeur de leur
+@code{outside-staff-priority}, il vous faudra retirer respectivement le
+@code{Bar_number_engraver}, le @code{Metronome_mark_engraver} oule
+@code{Mark_engraver} du contexte @code{Score} et les placer en haut du
+contexte @code{Staff}. Après quoi ces marques porteront les valeurs de
+@code{outside-staff-priority} par défaut suivantes :
+
+@multitable @columnfractions .3 .3
+@headitem Objet de rendu @tab Priorité
+@item @code{RehearsalMark} @tab @code{1500}
+@item @code{MetronomeMark} @tab @code{1000}
+@item @code{BarNumber} @tab @code{ 100}
+@end multitable
+
+Si les valeurs de @code{outside-staff-priority} par défaut ne donnent
+pas les résultats que vous attendez, il suffit de modifier la priorité
+de l'un de ces objets. Supposons que vous vouliez placer l'indication
+d'octaviation sous le bandeau de texte, dans l'exemple précédent. Tout
+ce que nous devons faire, c'est regarder la priorité de
+@code{OttavaBracket} dans la RPI ou dans le tableau plus haut, et la
+ramener à une valeur plus basse que celle de @code{TextSpanner}, en
+gardant à l'esprit que @code{OttavaBracket} est créé dans le contexte
+@code{Staff} :
+
+@cindex TextSpanner, exemple de dérogation
+@cindex bound-details, exemple de propriété
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+% Set details for later Text Spanner
+\override TextSpanner #'bound-details #'left #'text
+ = \markup { \small \bold Slower }
+% Place dynamics above staff
+\dynamicUp
+%Place following Ottava Bracket below Text Spanners
+\once \override Staff.OttavaBracket #'outside-staff-priority = #340
+% Start Ottava Bracket
+\ottava #1
+c' \startTextSpan
+% Add Dynamic Text
+c\pp
+% Add Dynamic Line Spanner
+c\<
+% Add Text Script
+c^Text
+c c
+% Add Dynamic Text
+c\ff c \stopTextSpan
+% Stop Ottava Bracket
+\ottava #0
+c, c c c
+@end lilypond
+
+Le fait de changer la @code{outside-staff-priority} peut aussi servir à
+contrôler le positionnement vertical des objets individuels, quoique le
+résultat ne soit pas toujours formidable. Imaginons que nous voulions
+placer @qq{Text3} au-dessus de @qq{Text4} dans l'exemple de la section
+Comportement automatique, plus haut (voir @ref{Automatic behavior}). Il
+nous suffit pour cela de regarder dans la RPI ou dans le tableau plus
+haut la priorité de @code{TextScript}, et d'augmenter la priorité de
+@qq{Text3} jusqu'à une valeur très haute :
+
+@cindex TextScript, exemple de dérogation
+@cindex outside-staff-priority, exemple de propriété
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+c2^"Text1"
+c^"Text2"
+\once \override TextScript #'outside-staff-priority = #500
+c^"Text3"
+c^"Text4"
+@end lilypond
+
+S'il est vrai que cela place @qq{Text3} au-dessus de @qq{Text4}, ça le
+place aussi plus haut que @qq{Text2} tandis que @qq{Text4} dégringole.
+Ce n'est peut-être pas si bien que ça. En fait, ce que nous aimerions
+faire, c'est placer toutes les annotations à égale distance de la
+portée. Pour cela, nous avons besoin d'espacer horizontalement les
+notes pour laisser plus de place au texte. C'est possible grâce à la
+commande @code{textLengthOn}.
+
+@subheading \textLengthOn
+
+@cindex notes, répartition selon le texte
+
+@funindex \textLengthOn
+@funindex textLengthOn
+@funindex \textLengthOff
+@funindex textLengthOff
+
+Par défaut, l'espacement horizontal d'un texte produit sous forme de
+@emph{markup} (ou d'étiquette) n'est pas pris en compte, dans la mesure
+où ce qui est concerné n'entre pas dans la musique. La commande
+@code{\textLengthOn} inverse ce comportement, faisant en sorte que les
+notes soient espacées autant qu'il faut pour s'adapter au texte :
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+\textLengthOn % Cause notes to space out to accommodate text
+c2^"Text1"
+c^"Text2"
+c^"Text3"
+c^"Text4"
+@end lilypond
+
+La commande qui permet de revenir au comportement par défaut est
+@code{\textLengthOff}. Rappelez-vous que @code{\once} ne
+fonctionne qu'avec @code{\override}, @code{\set}, @code{\revert} ou
+@code{\unset}, et donc ne peut pas être utilisé avec
+@code{\textLengthOn}.
+
+@cindex markup text, allowing collisions
+
+Les textes des @emph{markup} éviteront également les notes qui
+s'échappent au-dessus de la portée. Si ce n'est pas notre souhait, il
+est possible de supprimer ce déplacement automatique vers le haut en
+attribuant à la priorité la valeur @code{#f}. Voici un exemple qui
+montre comment les textes des @emph{markup} interagissent avec ces types
+de notes.
+
+@cindex TextScript, exemple de dérogation
+@cindex outside-staff-priority, exemple de propriété
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+% This markup is short enough to fit without collision
+c2^"Tex"
+c''2
+R1
+% This is too long to fit, so it is displaced upwards
+c,,2^"Text"
+c''2
+R1
+% Turn off collision avoidance
+\once \override TextScript #'outside-staff-priority = ##f
+c,,2^"Long Text "
+c''2
+R1
+% Turn off collision avoidance
+\once \override TextScript #'outside-staff-priority = ##f
+\textLengthOn % and turn on textLengthOn
+c,,2^"Long Text " % Spaces at end are honored
+c''2
+@end lilypond
+
+
+@subheading Dynamics
+
+@cindex modifier le positionnement des nuances
+@cindex nuances, modifier le positionnement
+
+Les indications de nuances se placent normalement sous la portée mais on
+peut les placer au-dessus avec la commande @code{dynamicUp}. Elles se
+positionnent verticalement par rapport à la note à laquelle elles sont
+liées et se décalent vers le bas (ou le haut) en fonction des objets de
+la portée comme les liaisons de phrasé ou les numéros de mesure. Cela
+peut donner d'assez bons résultats, comme le montre cet exemple :
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+\clef "bass"
+\key aes \major
+\time 9/8
+\dynamicUp
+bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
+ees,2.~\)\mf ees4 r8 |
+@end lilypond
+
+De toute façon, si les notes et les nuances qui leur sont liées sont
+trop proches, le positionnement automatique évitera les collisions en
+déplaçant davantage les nuances suivantes, mais le résultat peut ne
+pas être très satisfaisant, comme le montre cet exemple artificiel :
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+\dynamicUp
+a4\f b\mf c\mp b\p
+@end lilypond
+
+@noindent
+Si une telle situation devait survenir dans de la musique @qq{réelle},
+il serait préférable d'espacer un peu plus les notes, de façon que les
+indications de nuance puissent toutes se situer à la même distance de la
+portée. Il était possible de faire cela pour les textes de
+@emph{markup} grâce à la commande @code{\textLengthOn} mais il n'existe
+pas d'équivalent pour les indications de nuance. Il nous faut donc
+chercher à faire cela avec la commande @code{\override}.
+
+@subheading Grob sizing
+
+@cindex grob, dimensionnement
+@cindex dimensionnement des grobs
+
+Tout d'abord, nous devons apprendre ce qui détermine la dimension des
+grobs. Tous les grobs portent en eux un point de référence qui est
+utilisé pour les positionner par rapport à leur objet parent. Ce point du
+grob est placé à une distance horizontale, @code{X-offset},
+et à une distance verticale, @code{Y-offset}, de son parent.
+L'étendue horizontale de l'objet est fixée par une paire de
+nombres, @code{X-extent}, qui donnent la position du coin
+gauche et du coin droit par rapport au point de référence. De
+même, l'étendue verticale est fixée par une paire de nombre,
+@code{Y-extent}. Ce sont des propriétés communes à tous les
+grobs et que gère la @code{grob-interface}.
+
+@cindex @code{extra-spacing-width}
+
+Par défaut, la largeur des objets extérieurs à la portée est donnée
+comme étant nulle, si bien qu'ils peuvent se chevaucher
+horizontalement. Pour arriver à cela, on a ajouté l'infini à
+l'extension gauche et moins l'infini à l'extension droite, en
+attribuant à @code{extra-spacing-width} la valeur
+ @code{'(+inf.0 . -inf.0)}. Pour être sûr que les objets ne se
+chevaucheront pas horizontalement, nous devons donc corriger
+cette valeur de @code{extra-spacing-width} en @code{'(0 . 0)},
+afin que leur vraie largeur se manifeste. La commande pour y
+parvenir avec des indications de nuances est :
+
+@example
+\override DynamicText #'extra-spacing-width = #'(0 . 0)
+@end example
+
+@noindent
+Voyons si ça marche sur notre exemple précédent :
+
+@cindex DynamicText, example of overriding
+@cindex extra-spacing-width property, example
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+\dynamicUp
+\override DynamicText #'extra-spacing-width = #'(0 . 0)
+a4\f b\mf c\mp b\p
+@end lilypond
+
+@noindent
+Bon, cela a mis un terme aux déplacements verticaux des
+nuances mais il reste deux problèmes. Il faudrait que les
+nuances soient un peu plus écartées et ce serait mieux si
+elles étaient toutes à la même distance de la portée. Le
+premier problème est simple à résoudre. Au lieu d'attribuer
+à @code{extra-spacing-width} la valeur zéro, nous pourrions
+mettre un peu plus. L'unité est la distance entre deux lignes
+de portée, donc en écartant le bord gauche d'une demi-unité
+et le bord droit d'une demi-unité, on obtient :
+
+@cindex DynamicText, example of overriding
+@cindex extra-spacing-width property, example
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+\dynamicUp
+% Extend width by 1 staff space
+\override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
+a4\f b\mf c\mp b\p
+@end lilypond
+
+@noindent
+C'est mieux mais nous voulons peut-être aligner les indications de
+nuances sur une même ligne plutôt que de les voir monter et
+descendre avec les notes. La propriété qui gère cela est
+@code{staff-padding} ; la section suivante lui est consacrée.
+
+
+@node Collisions of objects
+@section Collisions of objects
+
+
+@menu
+* Moving objects::
+* Fixing overlapping notation::
+* Real music example::
+@end menu
+
+@node Moving objects
+@subsection Moving objects
+
+Aussi surprenant que cela puisse paraître, LilyPond n'est pas parfait.
+Certains éléments sur la partition peuvent se chevaucher, ce qui est
+regrettable mais, le plus souvent, facile à corriger. En général, quand
+on déplace des objets, c'est pour des raisons de lisibilité ou
+d'esthétique -- ils rendraient mieux avec un peu plus ou un peu moins
+d'espace autour d'eux.
+
+Il y a trois façons de résoudre les problèmes de chevauchement. Il est
+préférable de les aborder dans l'ordre suivant :
+
+@enumerate
+@item
+L'@strong{orientation} d'un objet qui en chevauche un autre peut être
+changée grâce aux commandes prédéfinies dont la liste a été donnée
+plus haut à propos des objets de portée (voir @ref{Within-staff objects}).
+Les queues de notes, les liaisons de phrasé et de prolongation, les
+crochets, les nuances et les nolets peuvent facilement être repositionnés
+de cette manière. En contrepartie, vous n'avez le choix qu'entre deux
+positions, sans personnalisation possible.
+
+@item
+Les @strong{propriétés d'objet}, auxquelles LilyPond a recours pour
+positionner les objets, sont modifiables avec @code{\override}. Il y a deux
+avantages à changer ces propriétés : (a) d'autres objets pourront être
+déplacés automatiquement si nécessaire pour faire de la place, et (b)
+la même retouche peut s'appliquer à toutes les occurrences du même
+type d'objet. Ces propriétés sont :
+
+@itemize
+
+@item
+@code{direction}
+
+Ce point a déjà été traité en détails -- voir @ref{Within-staff objects}.
+
+@item
+@code{padding}, @code{left-padding},
+@code{right-padding}, @code{staff-padding}
+
+@cindex padding
+@cindex left-padding property
+@cindex padding property
+@cindex right-padding property
+@cindex staff-padding property
+
+Au moment de positionner un objet, la valeur de sa propriété
+@code{padding} détermine l'espace à laisser libre entre celui-ci et le
+coin le plus proche de l'objet à côté duquel il est placé. Vous remarquerez
+que c'est la valeur @code{padding} de l'objet @strong{à placer} qui
+compte ; la valeur @code{padding} de l'objet déjà placé est ignorée.
+Les espaces libres déterminés par @code{padding} s'appliquent à tous
+les objets associés à la @code{side-position-interface}.
+
+Le positionnement de groupes d'altérations est contrôlé par
+@code{left-padding} et @code{right-padding}, et non plus @code{padding}.
+Ces propriétés appartiennent à l'objet @code{AccidentalPlacement}, qui,
+vous le remarquerez, prend place dans le contexte @strong{Staff}. Dans le
+processus de composition, les têtes de notes sont composées en premier,
+puis les altérations, s'il y en a, sont ajoutées à gauche des têtes de notes
+suivant la propriété @code{right-padding} qui détermine l'espacement par
+rapport aux têtes de notes. C'est pourquoi seule la propriété
+@code{right-padding} de l'objet @code{AccidentalPlacement} joue sur le
+positionnement des altérations.
+
+La propriété @code{staff-padding} est très proche de la propriété
+@code{padding} : @code{padding} contrôle l'espace minimum entre un
+objet qui accepte la @code{side-position-interface} et l'objet le plus
+proche (généralement une note ou une ligne de portée) ; @code{staff-padding}
+ne s'applique qu'aux objets qui sont toujours placés en-dehors de la portée --
+il contrôle l'espace minimum à insérer entre l'objet et la portée. Attention :
+par défaut, @code{staff-padding} concerne les objets positionnés par rapport
+à la portée et n'a aucun effet sur les objets qui sont positionnés par
+rapport à une note ; il est toutefois possible de le régler pour
+fonctionner avec ces derniers.
+
+Pour trouver quelle propriété @q{padding} employer pour l'objet que vous
+cherchez à repositionner, il vous faut consulter les propriétés de l'objet dans
+la RPI. Prenez garde que les propriétés @q{padding} ne sont pas forcément
+traitées dans l'objet en question ; il faut alors regarder les objets
+qui semblent s'en rapprocher.
+
+Toutes les valeurs @q{padding} sont exprimées en espaces de portée.
+Pour la plupart des objets, la valeur par défaut est aux alentours de 1.0,
+parfois moins (cela dépend de chaque objet). Il est possible de la modifier
+lorsqu'on a besoin d'un espace vide plus grand (ou plus petit).
+
+
+@item
+@code{self-alignment-X}
+
+@cindex self-alignment-X property
+Cette propriété sert à aligner les objets sur la gauche, sur la droite ou
+à les centrer par rapport au point de référence des objets parents.
+Elle peut être utilisée avec tous les objets qui acceptent la
+@code{self-alignment-interface}. Il s'agit, en général, des objets qui
+contiennent du texte. Les valeurs admises sont @code{LEFT},
+@code{RIGHT} et @code{CENTER}. On peut aussi attribuer à
+la place une valeur numérique entre @code{-1} et @code{+1},
+où @code{-1} signifie alignement sur la gauche, @code{+1}
+alignement sur la droite, et les nombres intermédiaires déplacent
+progressivement le texte de la gauche vers la droite. Des valeurs
+numériques supérieures à @code{1} sont également admises
+pour déplacer le texte encore plus loin vers la gauche, ou des
+valeurs inférieures à @code{-1} pour déplacer le texte encore
+plus loin vers la droite. Un écart de @code{1} en valeur
+correspond à un déplacement de la moitié de la longueur du
+texte.
+
+@item
+@code{extra-spacing-width}
+
+@cindex extra-spacing-width property
+Cette propriété est utilisée pour tous les objets qui acceptent la
+@code{item-interface}. Elle reçoit deux nombres, le premier étant
+ajouté au bord gauche et le second au bord droit. Des nombres
+négatifs déplacent le coin vers la gauche, des nombres positifs
+vers la droite, si bien que pour élargir un objet, le premier nombre
+doit être négatif et le second positif. Attention : tous les objets
+n'acceptent pas forcément les deux nombres. Par exemple, l'objet
+@code{Accidental} ne retient que le premier nombre (coin gauche).
+
+
+@item
+@code{staff-position}
+
+@cindex staff-position property
+@code{staff-position} est une propriété de la
+@code{staff-symbol-referencer-interface}, qui s'applique aux objets
+positionnés par rapport à la portée. Elle indique, en demi-espaces de
+portée, la position verticale des objets par rapport à la ligne médiane
+de la portée. C'est bien pratique pour résoudre des problèmes de
+collision entre des objets comme les silences valant mesure entière,
+les liaisons et les notes de différentes voix.
+
+@item
+@code{force-hshift}
+
+@cindex force-hshift property
+Des notes très proches dans un accord, ou des notes simultanées dans
+différentes voix, peuvent être disposées sur deux colonnes, rarement
+plus, pour éviter que les têtes de notes ne se chevauchent. On parle
+alors de colonnes de notes et un objet appelé @code{NoteColumn}
+est créé pour placer les notes sur la colonne.
+
+La propriété @code{force-hshift} appartient à @code{NoteColumn} (en
+réalité à la @code{note-column-interface}). Le fait de la modifier permet
+de déplacer une colonne de notes selon l'unité appropriée aux colonnes
+de notes, à savoir la largeur des têtes de notes de la première voix. Son
+utilisation est réservée à des situations complexes dans lesquelles les
+commandes habituelles @code{\shiftOn}
+(voir @ref{Explicitly instantiating voices}) ne suffisent plus à résoudre les
+conflits. Elle est alors préférable à l'utilisation de la propriété
+@code{extra-offset}, dans la mesure où on n'a pas besoin d'exprimer
+la distance en espaces de portée et où le fait de déplacer les notes à
+l'intérieur ou à l'extérieur d'une @code{NoteColumn} affecte d'autres
+actions comme les fusionnements de notes.
+
+@end itemize
+
+@item
+Pour terminer, quand toutes les autres méthodes ont échoué, il est
+possible de repositionner verticalement les objets à la main par rapport
+à la ligne médiane de la portée, ou en les déplaçant à une distance
+donnée vers une nouvelle position. Les inconvénients sont qu'il faut
+individuellement pour chaque objet trouver les valeurs correctes de
+repositionnement, souvent par tâtonnement, et que, puisque le
+mouvement est opéré après que LilyPond a placé tous les autres
+objets, c'est à l'utilisateur de résoudre tous les problèmes de collisions
+qui pourraient survenir. Et le pire avec cette méthode est que, le jour
+où la musique est modifiée, il faut de nouveau rechercher les
+valeurs de repositionnement. Les propriétés à utiliser pour ce type de
+repositionnement manuel sont :
+
+
+@table @code
+@item extra-offset
+
+@cindex extra-offset property
+Cette propriété s'applique à tout objet acceptant la @code{grob-interface}.
+Elle reçoit une paire de nombre qui indiquent le déplacement supplémentaire
+dans le sens horizontal et vertical. Des nombres négatifs déplacent l'objet
+vers la gauche ou vers la droite. L'unité utilisée est l'espace de portée. Le
+déplacement supplémentaire intervient une fois que la composition des
+objets est achevée, si bien qu'un objet peut être repositionné à n'importe
+quel endroit sans que ça perturbe quoi que ce soit.
+
+@item positions
+
+@cindex positions property
+Cette propriété est très utile pour ajuster manuellement l'inclinaison et
+la hauteur des barres de croches, des liaisons et des nolets. Elle est
+suivie de deux nombres qui donnent la position des bords gauche et
+droit des barres, liaisons, etc., par rapport à la ligne médiane de la
+portée. L'unité de référence est l'intervalle de lignes de portée. Attention
+toutefois au fait que les liaisons et phrasés ne peuvent pas être repositionnés
+n'importe où. LilyPond commence par dresser la liste des emplacements
+possibles pour les liaisons et choisit par défaut la liaison qui @qq{semble
+la meilleure}. Si la propriété @code{positions} a été retouchée, la
+liaison la plus proche de la position demandée sera retenue dans la
+liste.
+@end table
+
+@end enumerate
+
+Il est possible qu'un objet ne dispose pas de toutes ces propriétés. Il
+est donc nécessaire de consulter la RPI pour vérifier quelles sont les
+propriétés disponibles pour l'objet en question.
+
+Voici une liste d'objets les plus couramment impliqués dans les
+collisions, avec le nom de l'objet à consulter dans la RPI afin de trouver
+les propriétés à retoucher pour obtenir un déplacement.
+
+
+@multitable @columnfractions .5 .5
+@headitem Type d'objet @tab Nom d'objet
+@item Articulations @tab @code{Script}
+@item Barres de croches @tab @code{Beam}
+@item Doigté @tab @code{Fingering}
+@item Liaisons de phrasé @tab @code{Slur}
+@item Liaisons de prolongation @tab @code{Tie}
+@item Nolets @tab @code{TupletBracket}
+@item Nuances (verticalement) @tab @code{DynamicLineSpanner}
+@item Nuances (horizontalement) @tab @code{DynamicText}
+@item Reprises / marques de texte @tab @code{RehearsalMark}
+@item Texte, p.ex. @code{^"texte"} @tab @code{TextScript}
+@end multitable
+
+
+@node Fixing overlapping notation
+@subsection Fixing overlapping notation
+
+Voyons maintenant comment les propriétés décrites dans la section
+précédente peuvent nous aider à résoudre les collisions.
+
+@subheading padding property
+
+@cindex padding
+@cindex fixing overlapping notation
+@cindex overlapping notation
+
+En jouant sur la propriété @code{padding} (littéralement
+@q{rembourrage}), on augmente (ou on diminue) la distance entre
+des symboles qui sont imprimés au-dessus ou en dessous des notes.
+
+@cindex Script, example of overriding
+@cindex padding property, example
+
+@lilypond[quote,fragment,relative=1,verbatim]
+c2\fermata
+\override Script #'padding = #3
+b2\fermata
+@end lilypond
+
+@cindex MetronomeMark, example of overriding
+@cindex padding property, example
+
+@lilypond[quote,fragment,relative=1,verbatim]
+% This will not work, see below:
+\override MetronomeMark #'padding = #3
+\tempo 4=120
+c1
+% This works:
+\override Score.MetronomeMark #'padding = #3
+\tempo 4=80
+d1
+@end lilypond
+
+Vous remarquerez dans le second exemple à quel point il est important de
+préciser le nom du contexte qui contient l'objet. Puisque l'objet
+@code{MetronomeMark} appartient au contexte @code{Score}, le fait de
+modifier la propriété dans le contexte @code{Voice} passera inaperçu.
+Pour plus de détails, voir @ruser{Modifying properties}.
+
+Si on augmente la propriété @code{padding} d'un objet alors que celui-ci
+fait partie d'un ensemble d'objets positionnés en fonction de leur
+@code{outside-staff-priority}, cet objet sera déplacé, ainsi que tous les
+autres objets du groupe.
+
+@subheading left-padding and right-padding
+
+@cindex left-padding property
+@cindex right-padding property
+
+La propriété @code{right-padding} joue sur l'espacement entre une
+altération et la note sur laquelle elle porte. On ne l'utilise pas souvent,
+mais l'exemple ci-dessous montre une situation où elle est nécessaire.
+Imaginons que nous voulions faire apparaître un accord qui contienne
+à la fois un si bécarre et un si bémol. Pour qu'il n'y ait pas de doute,
+nous chercherions à précéder la note d'un signe bécarre et d'un signe
+bémol. Voici différentes tentatives pour y parvenir :
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+<b bes>
+<b! bes>
+<b? bes>
+@end lilypond
+
+Pas une ne convient, et la seconde se solde même par une collision
+entre les deux signes.
+
+Une solution pour arriver à nos fins consiste à retoucher le stencil des
+altérations grâce à un markup qui contient les symboles bécarre et
+bémol, dans l'ordre que nous souhaitons, comme ceci :
+
+@cindex Accidental, example of overriding
+@cindex text property, example
+@cindex stencil property, example
+@cindex AccidentalPlacement, example of overriding
+@cindex right-padding property, example
+
+@lilypond[quote,ragged-right,verbatim]
+naturalplusflat = \markup { \natural \flat }
+\relative c'' {
+ \once \override Accidental
+ #'stencil = #ly:text-interface::print
+ \once \override Accidental #'text = #naturalplusflat
+ \once \override Score.AccidentalPlacement #'right-padding = #1.5
+ <b bes>
+}
+@end lilypond
+
+@noindent
+Cette méthode utilise, pour le stencil des altérations, une retouche
+qui ne sera par reprise par la suite. Le type de stencil est obligatoirement
+une procédure, qui consiste ici à imprimer le contenu de la propriété
+@code{text} de @code{Accidental}, déclaré comme étant un signe
+bécarre suivi d'un signe bémol. Celui-ci est ensuite repoussé devant la
+tête de note par la retouche de @code{right-padding}.
+
+@noindent
+
+@subheading staff-padding property
+
+@cindex aligning objects on a baseline
+@cindex objects, aligning on a baseline
+
+@code{staff-padding} sert à aligner des objets tels que des nuances
+sur une ligne fictive à une hauteur donnée par rapport à la portée, plutôt
+qu'à une hauteur qui varie en fonction de la position de la note sur laquelle
+porte l'objet. Ce n'est pas une propriété de @code{DynamicText} mais de
+@code{DynamicLineSpanner}. Car la ligne fictive est destinée à s'appliquer
+autant à @strong{toutes} les nuances, notamment celles qui sont créées
+comme des bandeaux en longueur (en anglais @q{Spanners}). Tel est donc
+le moyen d'aligner les indications de nuances, comme dans cet exemple
+repris de la section précédente :
+
+@cindex DynamicText, example of overriding
+@cindex extra-spacing-width property, example
+@cindex DynamicLineSpanner, example of overriding
+@cindex staff-padding property, example
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+\dynamicUp
+% Extend width by 1 unit
+\override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
+% Align dynamics to a base line 2 units above staff
+\override DynamicLineSpanner #'staff-padding = #2
+a4\f b\mf c\mp b\p
+@end lilypond
+
+
+@subheading self-alignment-X property
+L'exemple suivant montre comment résoudre une collision entre une indication
+de corde et une queue de note, en alignant le coin droit sur le point de
+référence de la note parente :
+
+@cindex StringNumber, example of overriding
+@cindex self-alignment-X property, example
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=3]
+\voiceOne
+< a \2 >
+\once \override StringNumber #'self-alignment-X = #RIGHT
+< a \2 >
+@end lilypond
+
+@subheading staff-position property
+
+@cindex object collision within a staff
+Dans une voix, un silence valant une mesure entière peut chevaucher les
+notes d'une autre voix. Vu que ces silences sont centrés entre les deux
+barres de mesure, il serait très compliqué de programmer LilyPond pour repérer
+ces risques de collisions, dans la mesure où, normalement, toutes les collisions
+entre notes ou entre notes et silences se produisent sur des notes et silences
+simultanés. Voici un exemple de collision de ce type :
+
+@lilypond[quote,verbatim,fragment,ragged-right, relative=1]
+<< {c c c c} \\ {R1} >>
+@end lilypond
+
+Ici, la meilleure solution consiste à déplacer le symbole de pause vers
+le bas -- puisque cette pause appartient à la voix deux. Par défaut, dans la
+@code{\voiceTwo} (c'est-à-dire dans la seconde voix d'une construction
+@code{<<@{...@} \\ @{...@}>>}), la propriété @code{staff-position} est
+réglée sur -4 pour les MultiMeasureRest ; nous avons donc besoin de la
+déplacer, disons, de quatre demi-intervalles vers le bas, ce qui donne
+@code{-8}.
+
+
+@cindex MultiMeasureRest, example of overriding
+@cindex staff-position property, example
+
+@lilypond[quote,verbatim,fragment,ragged-right, relative=1]
+<<
+ {c c c c}
+\\
+ \override MultiMeasureRest #'staff-position = #-8
+ {R1}
+>>
+@end lilypond
+
+C'est mieux que d'utiliser, par exemple, @code{extra-offset},
+car la ligne supplémentaire au-dessus du silence est insérée
+automatiquement.
+
+@subheading extra-offset property
+
+@cindex positioning objects
+@cindex positioning grobs
+@cindex objects, positioning
+@cindex grobs, positioning
+
+La propriété @code{extra-offset}
+La propriété @code{extra-offset} offre la possibilité de contrôler
+entièrement le placement d'un objet, aussi bien horizontalement que
+verticalement.
+
+Dans l'exemple suivant, la seconde indication de doigté est déplacée
+légèrement vers la gauche et de 1.8 intervalle de lignes vers le bas :
+
+@cindex Fingering, example of overriding
+@cindex extra-offset property, example
+
+@lilypond[quote,fragment,relative=1,verbatim]
+\stemUp
+f-5
+\once \override Fingering
+ #'extra-offset = #'(-0.3 . -1.8)
+f-5
+@end lilypond
+
+
+@subheading positions property
+
+@cindex controlling tuplets, slurs, phrasing slurs, and beams manually
+@cindex manually controlling tuplets, slurs, phrasing slurs, and beams
+@cindex tuplet beams, controlling manually
+@cindex slurs, controlling manually
+@cindex phrasing slurs, controlling manually
+@cindex beams, controlling manually
+
+La propriété @code{positions} permet de contrôler manuellement la
+position et l'inclinaison des nolets, coulés, liaisons de phrasé et barres
+de croches. Voici un exemple avec une horrible liaison de phrasé --
+horrible pour avoir tenté de contourner la liaison de l'acciaccature.
+
+@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
+r4 \acciaccatura e8\( d8 c ~c d c d\)
+@end lilypond
+
+@noindent
+Nous pourrions tout simplement déplacer la liaison de phrasé au-dessus des
+notes, et ce serait la meilleure solution :
+
+@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
+r4
+\phrasingSlurUp
+\acciaccatura e8\( d8 c ~c d c d\)
+@end lilypond
+
+@noindent
+Mais si, pour une quelconque raison, cette solution n'était pas
+envisageable, l'autre solution consiste à déplacer légèrement vers le
+bas l'extrémité gauche de la liaison de phrasé, grâce à la propriété
+@code{positions}. Cela corrige en même temps la forme plutôt
+disgracieuse de la liaison.
+
+@cindex PhrasingSlur, example of overriding
+@cindex positions property, example
+
+@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
+r4
+\once \override PhrasingSlur #'positions = #'(-4 . -3)
+\acciaccatura
+e8\( d8 c ~c d c d\)
+@end lilypond
+
+Voici un autre exemple, tiré du début de la partie de main gauche
+du Prélude de Chopin, Op. 28, No 2. Comme nous pouvons le
+constater, les barres de croches chevauchent les notes les plus hautes :
+
+@lilypond[quote,verbatim,fragment,ragged-right]
+{
+\clef "bass"
+<< {b,8 ais, b, g,} \\ {e, g e, g} >>
+<< {b,8 ais, b, g,} \\ {e, g e, g} >>
+}
+@end lilypond
+
+@noindent
+On peut y remédier en déplaçant manuellement vers le haut les deux
+extrémités des barres de croches, non plus à 2 intervalles au-dessus
+de la ligne médiane mais, disons, à 3 :
+
+@cindex Beam, example of overriding
+@cindex positions property, example
+
+@lilypond[quote,verbatim,fragment,ragged-right]
+{
+ \clef "bass"
+ <<
+ \override Beam #'positions = #'(3 . 3)
+ {b,8 ais, b, g,}
+ \\
+ {e, g e, g}
+ >>
+ << {b,8 ais, b, g,} \\ {e, g e, g} >>
+}
+@end lilypond
+
+@noindent
+Vous remarquerez que la retouche continue à s'appliquer au
+second bloc de croches de la première voix mais qu'il ne s'applique
+à aucune barre de la deuxième voix.
+
+@subheading force-hshift property
+
+@c FIXME: formatting stuff (ie not important right now IMO)
+@c @a nchor Chopin finally corrected TODOgp
+
+Maintenant, nous sommes prêts à appliquer les dernières corrections à
+l'exemple de Chopin présenté à la fin de @ref{I'm hearing Voices}, que
+nous avions laissé dans cet état :
+
+@lilypond[quote,verbatim,fragment,ragged-right]
+\new Staff \relative c'' {
+ \key aes \major
+ <<
+ { c2 aes4. bes8 } \\
+ { aes2 f4 fes } \\
+ { \voiceFour
+ <ees c>2
+ des2
+ }
+ >> |
+ <c ees aes c>1 |
+}
+@end lilypond
+
+@noindent
+Les deux plus basses notes du premier accord (c'est-à-dire celles de la
+troisième voix) ne devraient pas être décalées de la colonne des deux
+plus hautes notes. Pour y remédier, nous réglons le @code{force-hshift}
+-- qui est une propriété de @code{NoteColumn} -- de ces notes sur zéro.
+Ensuite, la note la plus basse du second accord serait mieux à droite des
+notes plus hautes. Pour cela, nous réglons le @code{force-hshift} de cette
+note sur 0.5 -- c'est-à-dire la moitié de la largeur d'une tête de note vers la
+droite de la colonne des notes plus hautes.
+
+Et voici le résultat final :
+
+@cindex NoteColumn, example of overriding
+@cindex force-hshift property, example
+
+@lilypond[quote,verbatim,fragment,ragged-right]
+\new Staff \relative c'' {
+ \key aes \major
+ <<
+ { c2 aes4. bes8 } \\
+ { aes2 f4 fes } \\
+ { \voiceFour
+ \once \override NoteColumn #'force-hshift = #0 <ees c>2
+ \once \override NoteColumn #'force-hshift = #0.5 des2
+ }
+ >> |
+ <c ees aes c>1 |
+}
+@end lilypond
+
+
+@node Real music example
+@subsection Real music example
+
+Pour terminer ce chapitre consacré aux retouches, voici, étape par
+étape, la mise en forme d'un exemple concret nécessitant un certain
+nombre de retouches jusqu'à l'obtention du résultat attendu. Cet exemple
+a été choisi en raison des problèmes inhabituels de notation qu'il soulevait
+et pour vous apprendre à les résoudre grâce au Manuel de notation. Il
+n'est pas représentatif d'une opération normale de gravure ; que ces
+difficultés ne vous découragent donc pas ! Des difficultés comme celles-ci
+ne sont, heureusement, pas courantes !
+
+Cet exemple est tiré de la Première Ballade de Chopin, Op. 23, mesures
+6 à 9 ; cela correspond à la transition entre le Lento d'ouverture et le
+Moderato. Voici, pour commencer, ce à quoi nous voulons que la
+partition ressemble ; pour limiter les complications, nous n'avons pas
+fait apparaître les indications de nuances, de doigté ni de pédale.
+
+
+@c The following should appear as music without code
+@c This example should not be indexed
+@lilypond[quote,ragged-right]
+rhMusic = \relative c'' {
+ r2
+ c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ \mergeDifferentlyHeadedOn
+ \mergeDifferentlyDottedOn
+ bes2.^\markup {\bold "Moderato"} r8
+ <<
+ {c,8[ d fis bes a] | }
+ \\
+ % Reposition the c2 to the right of the merged note
+ {c,8~ \once \override NoteColumn #'force-hshift = #1.0
+ % Move the c2 out of the main note column so the merge will work
+ \shiftOnn c2}
+ \\
+ % Stem on the d2 must be down to permit merging
+ {s8 \stemDown \once \override Stem #'transparent = ##t d2}
+ \\
+ {s4 fis4.}
+ >>
+ \mergeDifferentlyHeadedOff
+ \mergeDifferentlyDottedOff
+ g2.\)
+}
+
+lhMusic = \relative c' {
+ r2 <c g ees>2( |
+ <d g, d>1)\arpeggio |
+ r2. d,,4 r4 r |
+ r4
+}
+
+\score {
+ \new PianoStaff <<
+ \new Staff = "RH" <<
+ \key g \minor
+ \rhMusic
+ >>
+ \new Staff = "LH" <<
+ \key g \minor
+ \clef "bass"
+ \lhMusic
+ >>
+ >>
+}
+@end lilypond
+
+Nous constatons tout d'abord que, dans la troisième mesure, la main
+droite compte quatre voix. Ce sont les cinq croches avec une barre,
+le do avec liaison, le ré blanche qui se fond avec le ré croche, et le
+fa dièse noire pointée qui se fond lui aussi avec la croche de même
+hauteur. Tout le reste se réduit à une seule voix. Le plus simple est
+donc de créer temporairement ces quatre voix au moment opportun.
+Si vous avez oublié comment faire, reportez-vous à
+@ref{I'm hearing Voices}. Commençons par saisir les notes comme
+appartenant à deux variables, mettons en place l'ossature des
+portées dans un bloc score et voyons ce que LilyPond propose par
+défaut :
+
+@lilypond[quote,verbatim,ragged-right]
+rhMusic = \relative c'' {
+ r2 c4. g8 |
+ bes1~ |
+ \time 6/4
+ bes2. r8
+ % Start polyphonic section of four voices
+ <<
+ {c,8 d fis bes a | }
+ \\
+ {c,8~ c2 | }
+ \\
+ {s8 d2 | }
+ \\
+ {s4 fis4. | }
+ >>
+ g2.
+}
+
+lhMusic = \relative c' {
+ r2 <c g ees>2 |
+ <d g, d>1 |
+ r2. d,,4 r4 r |
+ r4
+}
+
+\score {
+ \new PianoStaff <<
+ \new Staff = "RH" <<
+ \key g \minor
+ \rhMusic
+ >>
+ \new Staff = "LH" <<
+ \key g \minor
+ \clef "bass"
+ \lhMusic
+ >>
+ >>
+}
+@end lilypond
+
+Toutes les notes sont correctes mais l'allure générale est loin d'être
+satisfaisante. La liaison se heurte à l'indication de mesure lors du
+changement de chiffrage, la barre des croches n'est pas bonne dans la
+troisième mesure, les notes ne sont pas fusionnées et il manque plusieurs
+éléments de notation. Commençons par le plus simple. Nous pouvons
+corriger la barre des croches en la créant manuellement et nous pouvons
+facilement ajouter les limites droite et gauche de la liaison de phrasé,
+puisque tout cela a déjà été traité dans le tutoriel. Voici le résultat :
+
+@lilypond[quote,verbatim,ragged-right]
+rhMusic = \relative c'' {
+ r2 c4.\( g8 |
+ bes1~ |
+ \time 6/4
+ bes2. r8
+ % Start polyphonic section of four voices
+ <<
+ {c,8[ d fis bes a] | }
+ \\
+ {c,8~ c2 | }
+ \\
+ {s8 d2 | }
+ \\
+ {s4 fis4. | }
+ >>
+ g2.\)
+}
+
+lhMusic = \relative c' {
+ r2 <c g ees>2( |
+ <d g, d>1) |
+ r2. d,,4 r4 r |
+ r4
+}
+
+\score {
+ \new PianoStaff <<
+ \new Staff = "RH" <<
+ \key g \minor
+ \rhMusic
+ >>
+ \new Staff = "LH" <<
+ \key g \minor
+ \clef "bass"
+ \lhMusic
+ >>
+ >>
+}
+@end lilypond
+
+La première mesure est maintenant correcte. La seconde contient un arpège
+et doit se terminer par une double barre. Comment faire, puisque cela n'a pas
+été traité dans le Manuel d'initiation ? C'est alors qu'il faut nous
+reporter au Manuel de notation. Quand on cherche @q{arpège} et @q{barre
+de mesure} dans l'index, on voit aisément qu'il faut ajouter
+@code{\arpeggio} à un accord pour produire un arpège et qu'une double
+barre est le résultat de la commande @code{\bar "||"}. Rien de plus
+facile ! Nous devons ensuite corriger la collision entre la liaison et
+l'indication de mesure. Le mieux est de déplacer la liaison vers le
+haut. La méthode pour déplacer les objets a déjà été présentée dans
+@ref{Moving objects}, et l'on sait que, pour des objets positionnés par
+rapport à la portée, il nous faut modifier leur propriété
+@code{staff-position}, exprimée en demi-intervalles de lignes par
+rapport à la ligne médiane de la portée. Voici donc la retouche à
+insérer juste devant la première note liée ; elle est censée déplacer la
+liaison vers le haut de 3,5 demi-intervalles de lignes au-dessus de la
+ligne médiane :
+
+@code{\once \override Tie #'staff-position = #3.5}
+
+Cela s'adjoint à la deuxième mesure, pour donner :
+
+@lilypond[quote,verbatim,ragged-right]
+rhMusic = \relative c'' {
+ r2 c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ bes2. r8
+ % Start polyphonic section of four voices
+ <<
+ {c,8[ d fis bes a] | }
+ \\
+ {c,8~ c2 | }
+ \\
+ {s8 d2 | }
+ \\
+ {s4 fis4. | }
+ >>
+ g2.\)
+}
+
+lhMusic = \relative c' {
+ r2 <c g ees>2( |
+ <d g, d>1)\arpeggio |
+ r2. d,,4 r4 r |
+ r4
+}
+
+\score {
+ \new PianoStaff <<
+ \new Staff = "RH" <<
+ \key g \minor
+ \rhMusic
+ >>
+ \new Staff = "LH" <<
+ \key g \minor
+ \clef "bass"
+ \lhMusic
+ >>
+ >>
+}
+@end lilypond
+
+Venons-en à la troisième mesure et au début de la section Moderato. Dans
+le Tutoriel, il est indiqué comment insérer du texte en gras à l'aide de la
+commande @code{\markup} ; pas de problème, du coup, pour ajouter
+@q{Moderato} en gras. Mais comment faire pour fusionner les notes de
+différentes voix ? C'est là que le Manuel de notation peut nous venir en
+aide. Une recherche sur @q{fusionnement de notes} dans l'index nous renvoie,
+dans @ruser{Collision resolution}, aux commandes pour fusionner les notes,
+différentes en fonction du type de note et selon que celles-ci sont
+pointées ou non. Dans notre exemple, pour la durée de la polyphonie de
+la troisième mesure, nous avons besoin de fusionner deux types de notes
+; grâce aux informations trouvées dans le Manuel de notation, nous
+ajoutons
+
+@example
+\mergeDifferentlyHeadedOn
+\mergeDifferentlyDottedOn
+@end example
+
+@noindent
+au début de cette section et
+
+@example
+\mergeDifferentlyHeadedOff
+\mergeDifferentlyDottedOff
+@end example
+
+@noindent
+à la fin, ce qui donne :
+
+@lilypond[quote,verbatim,ragged-right]
+rhMusic = \relative c'' {
+ r2 c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ bes2.^\markup {\bold "Moderato"} r8
+ \mergeDifferentlyHeadedOn
+ \mergeDifferentlyDottedOn
+ % Start polyphonic section of four voices
+ <<
+ {c,8[ d fis bes a] | }
+ \\
+ {c,8~ c2 | }
+ \\
+ {s8 d2 | }
+ \\
+ {s4 fis4. | }
+ >>
+ \mergeDifferentlyHeadedOff
+ \mergeDifferentlyDottedOff
+ g2.\)
+}
+
+lhMusic = \relative c' {
+ r2 <c g ees>2( |
+ <d g, d>1)\arpeggio |
+ r2. d,,4 r4 r |
+ r4
+}
+
+\score {
+ \new PianoStaff <<
+ \new Staff = "RH" <<
+ \key g \minor
+ \rhMusic
+ >>
+ \new Staff = "LH" <<
+ \key g \minor
+ \clef "bass"
+ \lhMusic
+ >>
+ >>
+}
+@end lilypond
+
+Ces retouches ont permis de fusionner les deux fa dièse mais pas les
+deux ré. Pourquoi ? La réponse se trouve dans la même section du
+Manuel de notation : les notes à fusionner doivent avoir des queues dans
+des directions opposées et deux notes ne peuvent pas être fusionnées s'il
+y a une troisième note dans la même colonne. Ici, les deux ré ont leur
+queue orientée vers le haut et il y a une troisième note, do. Nous
+savons changer l'orientation de la queue avec @code{\stemDown} et
+le Manuel de notation nous indique également comment déplacer le do
+-- en produisant un décalage grâce à l'une des commandes @code{\shift}.
+Mais laquelle ? Le do appartient à la deuxième voix et n'est pas décalé ;
+les deux ré appartiennent respectivement à la première et à la troisième
+voix, et l'un n'est pas décalé tandis que l'autre l'est. Il nous faut donc
+décaler largement le do avec la commande @code{\shiftOnn} pour
+éviter une interférence avec les deux ré. Voici ce que donnent ces
+modifications :
+
+@cindex Tie, example of overriding
+@cindex staff-position property, example
+
+@lilypond[quote,verbatim,ragged-right]
+rhMusic = \relative c'' {
+ r2 c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ bes2.^\markup {\bold "Moderato"} r8
+ \mergeDifferentlyHeadedOn
+ \mergeDifferentlyDottedOn
+ % Start polyphonic section of four voices
+ <<
+ {c,8[ d fis bes a] | }
+ \\
+ % Move the c2 out of the main note column so the merge will work
+ {c,8~ \shiftOnn c2 | }
+ \\
+ % Stem on the d2 must be down to permit merging
+ {s8 \stemDown d2 | }
+ \\
+ {s4 fis4. | }
+ >>
+ \mergeDifferentlyHeadedOff
+ \mergeDifferentlyDottedOff
+ g2.\)
+}
+
+lhMusic = \relative c' {
+ r2 <c g ees>2( |
+ <d g, d>1)\arpeggio |
+ r2. d,,4 r4 r |
+ r4
+}
+
+\score {
+ \new PianoStaff <<
+ \new Staff = "RH" <<
+ \key g \minor
+ \rhMusic
+ >>
+ \new Staff = "LH" <<
+ \key g \minor
+ \clef "bass"
+ \lhMusic
+ >>
+ >>
+}
+@end lilypond
+
+Pas loin. Il ne reste plus que deux problèmes : les ré une fois fusionnés
+ne devraient plus avoir de queue vers le bas, et le do serait mieux à la
+droite des ré. Nous savons remédier à ces deux problèmes grâce aux
+retouches précédentes : nous allons rendre la queue transparente et
+déplacer le do avec la propriété @code{force-hshift}. Et voici le
+résultat final :
+
+@cindex NoteColumn, example of overriding
+@cindex force-hshift property, example
+@cindex Stem, example of overriding
+@cindex transparent property, example
+
+@lilypond[quote,verbatim,ragged-right]
+rhMusic = \relative c'' {
+ r2
+ c4.\( g8 |
+ \once \override Tie #'staff-position = #3.5
+ bes1~ |
+ \bar "||"
+ \time 6/4
+ bes2.^\markup {\bold "Moderato"} r8
+ \mergeDifferentlyHeadedOn
+ \mergeDifferentlyDottedOn
+ <<
+ {c,8[ d fis bes a] | }
+ \\
+ % Reposition the c2 to the right of the merged note
+ {c,8~ \once \override NoteColumn #'force-hshift = #1.0
+ % Move the c2 out of the main note column so the merge will work
+ \shiftOnn c2}
+ \\
+ % Stem on the d2 must be down to permit merging
+ {s8 \stemDown \once \override Stem #'transparent = ##t d2}
+ \\
+ {s4 fis4.}
+ >>
+ \mergeDifferentlyHeadedOff
+ \mergeDifferentlyDottedOff
+ g2.\)
+}
+
+lhMusic = \relative c' {
+ r2 <c g ees>2( |
+ <d g, d>1)\arpeggio |
+ r2. d,,4 r4 r |
+ r4
+}
+
+\score {
+ \new PianoStaff <<
+ \new Staff = "RH" <<
+ \key g \minor
+ \rhMusic
+ >>
+ \new Staff = "LH" <<
+ \key g \minor
+ \clef "bass"
+ \lhMusic
+ >>
+ >>
+}
+
+@end lilypond
+
+
+@node Further tweaking
+@section Further tweaking
+
+@menu
+* Other uses for tweaks::
+* Using variables for tweaks::
+* Other sources of information::
+* Avoiding tweaks with slower processing::
+* Advanced tweaks with Scheme::
+@end menu
+
+@node Other uses for tweaks
+@subsection Other uses for tweaks
+
+@cindex transparent property, use of
+@cindex objects, making invisible
+@cindex removing objects
+@cindex objects, removing
+@cindex hiding objects
+@cindex objects, hiding
+@cindex invisible objects
+@cindex objects, invisible
+@cindex tying notes across voices
+
+@subheading Tying notes across voices
+
+Voici un exemple qui montre comment créer une liaison de
+prolongation entre des notes appartenant à des voix différentes. En
+temps normal, seules deux notes appartenant à une même voix
+peuvent être ainsi liées. La solution consiste à utiliser deux voix,
+dont l'une avec les notes liées
+
+@lilypond[quote,fragment,relative=2]
+<< { b8~ b8\noBeam }
+\\ { b[ g8] }
+>>
+@end lilypond
+
+@noindent
+et à rendre transparente la première queue de note de cette voix ;
+on a alors l'impression que la liaison couvre les deux voix.
+
+@cindex Stem, example of overriding
+@cindex transparent propery, example
+
+@lilypond[quote,fragment,relative=2,verbatim]
+<<
+ {
+ \once \override Stem #'transparent = ##t
+ b8~ b8\noBeam
+ }
+\\
+ { b[ g8] }
+>>
+@end lilypond
+
+Pour être sûr que la queue que nous avons rendue transparente
+n'empiète pas trop sur le trait de liaison, nous pouvons l'allonger en
+réglant la longueur (@code{length}) sur @code{8},
+
+@lilypond[quote,fragment,relative=2,verbatim]
+<<
+ {
+ \once \override Stem #'transparent = ##t
+ \once \override Stem #'length = #8
+ b8~ b8\noBeam
+ }
+\\
+ { b[ g8] }
+>>
+@end lilypond
+
+@subheading Simulating a fermata in MIDI
+
+@cindex stencil property, use of
+@cindex fermata, implementing in MIDI
+
+En ce qui concerne les objets extérieurs à la portée, quand on veut les
+faire disparaître de la partition imprimée , il est généralement préférable
+de modifier leur propriété @code{stencil} plutôt que leur propriété
+@code{transparent}. Le fait d'attribuer à la propriété @code{stencil}
+d'un objet la valeur @code{#f} supprimera entièrement celui-ci de la
+partition. Il ne risquera donc pas de gêner le placement d'autres objets.
+
+Par exemple, si nous voulons changer le réglage de métronome pour
+simuler un point d'orgue dans le fichier MIDI, nous ne voulons surtout
+pas que cette indication métronomique apparaisse sur la partition ni
+qu'elle influence l'espacement entre les deux systèmes ou la position
+des annotations voisines sur la portée. Le fait d'attribuer à la propriété
+@code{stencil} la valeur @code{#f} est donc la bonne solution. Nous
+montrons ci-dessous le résultat des deux méthodes :
+
+@cindex MetronomeMark, example of overriding
+@cindex transparent property, example
+
+@lilypond[quote,verbatim,ragged-right]
+\score {
+ \relative c'' {
+ % Visible tempo marking
+ \tempo 4=120
+ a4 a a
+ \once \override Score.MetronomeMark #'transparent = ##t
+ % Invisible tempo marking to lengthen fermata in MIDI
+ \tempo 4=80
+ a\fermata
+ % New tempo for next section
+ \tempo 4=100
+ a a a a
+ }
+ \layout { }
+ \midi { }
+}
+@end lilypond
+
+@cindex MetronomeMark, example of overriding
+@cindex stencil property, example
+
+@lilypond[quote,verbatim,ragged-right]
+\score {
+ \relative c'' {
+ % Visible tempo marking
+ \tempo 4=120
+ a4 a a
+ \once \override Score.MetronomeMark #'stencil = ##f
+ % Invisible tempo marking to lengthen fermata in MIDI
+ \tempo 4=80
+ a\fermata
+ % New tempo for next section
+ \tempo 4=100
+ a a a a
+ }
+ \layout { }
+ \midi { }
+}
+@end lilypond
+
+@noindent
+Les deux méthodes permettent l'enlever l'indication métronomique qui allonge
+le point d'orgue de la partition, et toutes deux modifient le rythme MIDI comme
+souhaité, mais, dans la première, l'indication métronomique transparente
+repousse vers le haut l'indication de tempo, contrairement à la seconde (avec
+le stencil désactivé) qui la laisse à sa place.
+
+
+@node Using variables for tweaks
+@subsection Using variables for tweaks
+
+@cindex variables, using for tweaks
+@cindex using variables for tweaks
+@cindex tweaks, using variables for
+
+Les commandes de retouche sont souvent longues et pénibles à
+taper, et ne tolèrent pas la moindre erreur. Lorsqu'on a besoin de
+faire plusieurs fois les mêmes retouches, il est préférable de
+définir des variables qui les contiennent. Imaginons que nous
+voulions accentuer certains mots dans des paroles en les mettant
+en italiques. Au lieu des commandes @code{\italic} et
+@code{\bold}, qui ne fonctionnent dans les paroles que si elles
+sont enchâssées dans un @code{\markup}, ce qui les rend
+pénibles à saisir, pouvons-nous employer les commandes
+@code{\override} et @code{\revert}?
+
+@example
+@code{\override Lyrics . LyricText #'font-shape = #'italic}
+@code{\override Lyrics . LyricText #'font-series = #'bold}
+
+@code{\revert Lyrics . LyricText #'font-shape}
+@code{\revert Lyrics . LyricText #'font-series}
+@end example
+
+Là encore, ce serait extrêmement pénible à saisir, surtout s'il y avait
+beaucoup de mots à retoucher de cette façon. Plutôt que cette
+solution, nous déclarons ces commandes comme étant deux variables
+et les utilisons comme suit -- quoique on choisirait sans doute pour les
+variables des noms plus courts pour simplifier la frappe :
+
+@cindex LyricText, example of overriding
+@cindex font-shape property, example
+@cindex font-series property, example
+
+@lilypond[quote,verbatim]
+emphasize = {
+ \override Lyrics . LyricText #'font-shape = #'italic
+ \override Lyrics . LyricText #'font-series = #'bold
+}
+normal = {
+ \revert Lyrics . LyricText #'font-shape
+ \revert Lyrics . LyricText #'font-series
+}
+
+global = { \time 4/4 \partial 4 \key c \major}
+SopranoMusic = \relative c' { c4 | e4. e8 g4 g | a a g }
+AltoMusic = \relative c' { c4 | c4. c8 e4 e | f f e }
+TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
+BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
+VerseOne = \lyrics { E -- | ter -- nal \emphasize Fa -- ther, \normal | strong to save, }
+VerseTwo = \lyricmode { O | \emphasize Christ, \normal whose voice the | wa -- ters heard, }
+VerseThree = \lyricmode { O | \emphasize Ho -- ly Spi -- rit, \normal | who didst brood }
+VerseFour = \lyricmode { O | \emphasize Tri -- ni -- ty \normal of | love and pow'r }
+
+\score {
+ \new ChoirStaff <<
+ \new Staff <<
+ \clef "treble"
+ \new Voice = "Soprano" { \voiceOne \global \SopranoMusic }
+ \new Voice = "Alto" { \voiceTwo \AltoMusic }
+ \new Lyrics \lyricsto "Soprano" { \VerseOne }
+ \new Lyrics \lyricsto "Soprano" { \VerseTwo }
+ \new Lyrics \lyricsto "Soprano" { \VerseThree }
+ \new Lyrics \lyricsto "Soprano" { \VerseFour }
+ >>
+ \new Staff <<
+ \clef "bass"
+ \new Voice = "Tenor" { \voiceOne \TenorMusic }
+ \new Voice = "Bass" { \voiceTwo \BassMusic }
+ >>
+ >>
+}
+@end lilypond
+
+
+@node Other sources of information
+@subsection Other sources of information
+
+La Référence du programme contient beaucoup d'informations sur
+LilyPond. Cependant vous pouvez en découvrir
+encore plus en consultant les fichiers internes de LilyPond. Pour cela,
+il vous faut d'abord connaître le répertoire ad hoc sur votre système.
+L'emplacement du répertoire dépend (a) du fait que, pour vous procurer
+LilyPond, vous avez téléchargé un paquet précompilé sur lilypond.org, ou
+vous l'avez installé grâce à votre gestionnaire de paquetages (c'est-à-dire
+distribué avec Linux ou installé avec fink ou cygwin), ou encore vous l'avez
+compilé directement à partir des sources ; et (b) du système d'exploitation
+sous lequel il tourne.
+
+@strong{Téléchargé depuis lilypond.org}
+
+@itemize @bullet
+@item Linux
+
+@file{@var{INSTALLDIR}/lilypond/usr/share/lilypond/current/}
+
+@item MacOS X
+
+@file{@var{INSTALLDIR}/LilyPond.app/Contents/Resources/share/lilypond/current/}
+Pour accéder à ce dossier, deux possibilités : soit, dans un Terminal,
+taper @code{cd} suivi du chemin complet ci-dessus ; soit
+Control-cliquer (ou clic droit) sur l'application LilyPond
+et sélectionner @q{Afficher le contenu du paquet}.
+
+@item Windows
+
+Dans l'Explorateur Windows, voir
+@file{@var{INSTALLDIR}/LilyPond/usr/share/lilypond/current/}
+
+@end itemize
+
+@strong{Installé par un gestionnaire de paquetages ou compilé d'après
+les sources}
+
+@file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/}, où
+@var{PREFIX} est déterminé par votre gestionnaire de paquetages ou par le script
+@code{configure}, et @var{X.Y.Z} est le numéro de version de LilyPond.
+
+@smallspace
+
+Dans ce répertoire, deux sous-répertoires sont particulièrement intéressants :
+
+@itemize
+@item @file{ly/} - contient les fichiers en format LilyPond
+@item @file{scm/} - contient les fichiers en format Scheme
+@end itemize
+
+Commençons par examiner quelques fichiers contenus dans @file{ly/}.
+Nous ouvrons @file{ly/property-init.ly} dans un éditeur de texte -- celui
+que vous avez l'habitude d'utiliser pour les fichiers @code{.ly} fera très
+bien l'affaire. Ce fichier contient les définitions de toutes les commandes
+standard prédéfinies de LilyPond, comme @code{\stemUp} et
+@code{\slurDotted}. Vous pouvez constater que ce n'est rien d'autre
+que des définitions de variables composées d'un ou plusieurs groupes
+de commandes @code{\override}. Par exemple, @code{\tieDotted}
+est défini comme :
+
+@example
+tieDotted = @{
+ \override Tie #'dash-period = #0.75
+ \override Tie #'dash-fraction = #0.1
+@}
+@end example
+
+Si vous n'aimez pas les valeurs par défaut, les commandes prédéfinies
+peuvent être facilement redéfinies, comme n'importe quelle autre variable,
+en tête de votre fichier d'entrée.
+
+Voici les fichiers les plus utiles dans le répertoire @file{ly/}:
+
+@multitable @columnfractions .4 .6
+@headitem Nom de fichier
+ @tab Contenu
+@item @file{ly/engraver-init.ly}
+ @tab Définitions des Contextes de graveurs
+@item @file{ly/paper-defaults-init.ly}
+ @tab Réglages papier par défaut
+@item @file{ly/performer-init.ly}
+ @tab Définitions des Contextes d'interprétation
+@item @file{ly/property-init.ly}
+ @tab Définitions de toutes les commandes prédéfinies courantes
+@item @file{ly/spanner-init.ly}
+ @tab Définitions des commandes prédéfinies pour les bandeaux
+@end multitable
+
+Les autres réglages (comme les définitions de commandes markup) sont
+conservés comme fichiers @code{.scm} (Scheme). Le langage de
+programmation Scheme offre une interface programmable dans le
+processus interne de LilyPond. De plus amples explications sur ces
+fichiers dépasseraient le cadre de ce manuel, dans la mesure où elles
+requièrent la connaissance du langage Scheme. Les utilisateurs qui
+souhaiteraient comprendre le fonctionnement de ces fichiers de
+configuration doivent être avertis que des connaissances techniques
+substantielles et beaucoup de temps sont nécessaires (voir
+@ref{Scheme tutorial}).
+
+Si c'est votre cas, les fichiers Scheme les plus utiles à connaître sont :
+
+@multitable @columnfractions .4 .6
+@headitem Nom de fichier
+ @tab Contenu
+@item @file{scm/auto-beam.scm}
+ @tab Régles par défaut des ligatures subalternes
+@item @file{scm/define-grobs.scm}
+ @tab Réglages par défaut des propriétés de grobs
+@item @file{scm/define-markup-commands.scm}
+ @tab Spécification de toutes les commandes de @emph{markup}
+@item @file{scm/midi.scm}
+ @tab Réglages par défaut pour les sorties MIDI
+@item @file{scm/output-lib.scm}
+ @tab Réglages affectant l'apparence des frets, couleurs, altérations,
+ barres de mesure, etc
+@item @file{scm/parser-clef.scm}
+ @tab Définition des clefs prises en charge
+@item @file{scm/script.scm}
+ @tab Réglages par défaut des articulations
+@end multitable
+
+
+
+@node Avoiding tweaks with slower processing
+@subsection Avoiding tweaks with slower processing
+
+LilyPond peut effectuer des vérifications supplémentaires lors du
+traitement des fichiers ; cependant, le rendu nécessitera alors plus de
+temps. En contrepartie, il y aura moins d'ajustements manuels à réaliser.
+Si une indication textuelle ou des paroles débordent dans la marge, ces
+vérifications auront pour effet de serrer la ligne suffisamment pour faire
+tenir le texte entre les marges.
+
+Pour pouvoir fonctionner en toutes circonstances, ces vérifications doivent
+être activées ; il faut pour cela placer les retouches dans un bloc Score
+@code{\with}, plutôt qu'à l'intérieur du fragment musical, comme ceci :
+
+@example
+\new Score \with @{
+ % Pour s'assurer que les indications textuelles et paroles
+ % seront à l'intérieur des marges de la page.
+ \override PaperColumn #'keep-inside-line = ##t
+ \override NonMusicalPaperColumn #'keep-inside-line = ##t
+@} @{
+ ..
+@}
+@end example
+
+
+@node Advanced tweaks with Scheme
+@subsection Advanced tweaks with Scheme
+
+Nous avons vu à quel point le résultat obtenu avec LilyPond peut
+être largement personnalisé à l'aide de commandes comme
+@code{\override} et @code{\tweak}. Et pourtant l'utilisation de
+Scheme ouvre des possibilités encore plus grandes.
+Le code écrit dans le langage de programmation Scheme peut être
+intégré directement dans le processus interne de LilyPond. Bien sûr,
+il faut pour cela connaître un minimum de programmation en langage
+Scheme. Pour des explications complètes là-dessus, consultez le
+@ref{Scheme tutorial}.
+
+En guise d'illustration - et ce n'est qu'une possibilité parmi tant
+d'autres -- nous allons attribuer à une propriété non pas une valeur
+préétablie mais une procédure Scheme qui sera lancée à chaque
+utilisation de la propriété par LilyPond. De cette façon, nous obtenons
+un réglage dynamique de la propriété par le simple fait d'invoquer la
+procédure. Dans cet exemple, nous colorons les têtes de notes en fonction
+de leur position sur la portée.
+
+
+@cindex x11-color function, example of using
+@cindex NoteHead, example of overriding
+@cindex color property, setting to Scheme procedure
+
+@lilypond[quote,verbatim,ragged-right]
+#(define (color-notehead grob)
+ "Color the notehead according to its position on the staff."
+ (let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7)))
+ (case mod-position
+ ;; Return rainbow colors
+ ((1) (x11-color 'red )) ; for C
+ ((2) (x11-color 'orange )) ; for D
+ ((3) (x11-color 'yellow )) ; for E
+ ((4) (x11-color 'green )) ; for F
+ ((5) (x11-color 'blue )) ; for G
+ ((6) (x11-color 'purple )) ; for A
+ ((0) (x11-color 'violet )) ; for B
+ )
+ )
+)
+
+\relative c' {
+ % Arrange to obtain color from color-notehead procedure
+ \override NoteHead #'color = #color-notehead
+ c2 c' |
+ b4 g8 a b4 c |
+ c,2 a' |
+ g1 |
+}
+\addlyrics {
+ Some -- where o -- ver the Rain -- bow, way up high,
+}
+@end lilypond
+
+Vous trouverez dans @ref{Tweaking with Scheme} d'autres exemples d'utilisation de ces interfaces programmables.
+