]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/fr/notation/changing-defaults.itely
Merge branch 'translation' into staging
[lilypond.git] / Documentation / fr / notation / changing-defaults.itely
index 0a0a4de8f10b10a8136739fcfe41bc919a5a7193..d0444f25471a4612245667f23d7074a06a80a39b 100644 (file)
@@ -1,14 +1,13 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
-
 @ignore
-    Translation of GIT committish: 98f5cb86133b03c2c4739cab384d48021e5d11df
+    Translation of GIT committish: 049bdd90b5ae67fe463bf85e926c2eabf51acf74
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.12.0"
+@c \version "2.16.0"
 
 @c Translators: Valentin Villenave, Jean-Charles Malahieude
 @c Translation checkers: Gilles Thibault
 
 LilyPond est conçu pour engendrer, par défaut, des partitions de la
 plus haute qualité.  Cependant, on peut parfois avoir à modifier cette
-mise en page par défaut.  Celle-ci est réglée par tout un ensemble de
-@qq{leviers et manettes}, dont ce chapitre ne cherche pas à faire
-l'inventaire exhaustif.  Le propos est plutôt ici de mettre en évidence
-les différents groupes auxquels s'apparentent ces contrôles, et d'expliquer
-comment trouver le bon levier pour obtenir tel ou tel effet en particulier.
+mise en forme par défaut.  Celle-ci est réglée par tout un ensemble de
+@qq{leviers et manettes} plus connus sous le terme de @qq{propriétés},
+dont ce chapitre ne cherche pas à faire l'inventaire exhaustif -- le
+chapitre @rlearning{Retouche de partition} du manuel d'initiation vous
+en propose un aperçu.  Le propos est plutôt ici de mettre en évidence
+les différents groupes auxquels s'apparentent ces contrôles, et
+d'expliquer comment trouver le bon levier pour obtenir tel ou tel effet
+en particulier.
 
 @cindex Référence des propriétés internes
 
-Les moyens de contrôle des différents réglages sont décrits dans un document
-séparé, la
-@iftex
-référence des propriétés internes
-@end iftex
-@ifnottex
-@ref{Top,Référence des propriétés internes,,lilypond-internals}.
-@end ifnottex
-Ce guide répertorie toutes les variables, fonctions et autres options que
-LilyPond met à votre disposition.  Il est consultable
+Les moyens de contrôle des différents réglages sont décrits dans un
+document séparé, @rinternalsnamed{Top,la référence des propriétés
+internes}.  Ce guide répertorie toutes les variables, fonctions et
+autres options que LilyPond met à votre disposition.  Il est consultable
 @c leave the @uref as one long line.
-@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/user/@/lilypond@/-internals/,en@tie{}ligne},
-au format HTML, mais est également inclus dans la documentation
+@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/internals/,en ligne},
+au format HTML ; il est également inclus dans la documentation
 fournie avec le logiciel.
 
-Il est quatre domaines dans lesquels on peut modifier les réglages par
-défaut :
-
-@itemize @bullet
-@item
-La notation automatique, ce qui revient à modifier la manière dont les
-éléments de notation sont automatiquement créés -- par exemple, les
-règles de ligature. 
-
-@item
-L'apparence, qui se rapporte aux objets pris individuellement -- ainsi
-de la direction des hampes, du placement des indications textuelles.
-
-@item
-Les contextes, qui recouvrent la manière dont les évènements musicaux
-sont représentés sous forme de notation -- par exemple, le fait
-d'attribuer un chiffre de mesure distinct à chaque portée. 
-
-@item
-La mise en page, autrement dit les marges, l'espacement, la taille du
-papier ; tous ces facteurs font l'objet des chapitres 
-@ref{Généralités en matière d'entrée et sortie} et @ref{Gestion de l'espace}.
-@end itemize
-
-En sous-main, LilyPond se sert du langage Scheme (un dérivé du LISP) comme
-infrastructure.  Modifier les choix de mise en page revient à pénétrer dans
-les entrailles du programme, et de ce fait requiert l'emploi du Scheme.
-Les fragments de Scheme, dans un fichier @code{.ly}, sont introduits par le
-caractère @q{hash}, (@code{#}, improprement surnommé @q{dièse}).@footnote{Le
-@rlearning{Tutoriel Scheme} fournit quelques notions de base pour saisir
-des nombres, des listes, des chaînes de caractères ou des symboles, en
-Scheme.} 
-
+En sous-main, LilyPond se sert du langage Scheme (un dérivé du LISP)
+comme infrastructure.  Modifier les choix de mise en page revient à
+pénétrer dans les entrailles du programme, et de ce fait requiert
+l'emploi du Scheme.  Les fragments de Scheme, dans un fichier
+@file{.ly}, sont introduits par le caractère @emph{hash} (@code{#}),
+improprement surnommé @qq{dièse}.
+@footnote{Le @rextend{Tutoriel Scheme} fournit quelques notions de base
+pour saisir des nombres, des listes, des chaînes de caractères ou des
+symboles, en Scheme.}
 
 @menu
 * Contextes d'interprétation::
-* En quoi consiste la référence du programme::
+* En quoi consiste la référence des propriétés internes::
 * Modification de propriétés::
 * Propriétés et contextes utiles::
 * Retouches avancées::
+* Utilisation de fonctions musicales::
 @end menu
 
+
 @node Contextes d'interprétation
 @section Contextes d'interprétation
 @translationof Interpretation contexts
@@ -98,20 +72,19 @@ Cette section traite des contextes.
 * Modification des greffons de contexte::
 * Modification des réglages par défaut d'un contexte::
 * Définition de nouveaux contextes::
-* Alignement des contextes::
+* Ordonnancement des contextes::
 @end menu
 
-
 @seealso
 Manuel d'initiation :
 @rlearning{Contextes et graveurs}.
 
 Fichiers d'initialisation :
-@file{ly/@/engraver@/-init@/.ly},
-@file{ly/@/performer@/-init@/.ly}.
+@file{ly/engraver-init.ly},
+@file{ly/performer-init.ly}.
 
 Morceaux choisis :
-@rlsr{Contexts and engravers}.
+@rlsrnamed{Contexts and engravers, Contextes et graveurs}.
 
 Référence des propriétés internes :
 @rinternals{Contexts},
@@ -147,6 +120,7 @@ further explanation and with links to the IR.
 
 @c TODO Describe propagation of property values -td
 
+Les contextes sont hiérarchisés :
 
 @menu
 * Score -- le père de tous les contextes::
@@ -155,88 +129,509 @@ further explanation and with links to the IR.
 * Contextes de bas niveau -- les voix::
 @end menu
 
+
 @node Score -- le père de tous les contextes
 @unnumberedsubsubsec Score -- le père de tous les contextes
 @translationof Score - the master of all contexts
 
-@untranslated
+Il s'agit en l'occurrence du contexte le plus élevé, autrement dit le
+plus important, en matière de notation.  En effet, c'est au niveau de la
+partition -- @emph{score} en anglais -- que se gèrent le temps et la
+tonalité ; c'est donc là qu'il faut s'assurer que les différents
+éléments, tels les clefs, métriques et armures sont bien répercutés sur
+toutes les portées.
+
+Dès lors que LilyPond rencontre un bloc @code{\score @{@dots{}@}}
+ou @code{\layout @{@dots{}@}}, se crée implicitement un contexte
+@code{Score}.
 
 
 @node Contextes de haut niveau -- les systèmes
 @unnumberedsubsubsec Contextes de haut niveau -- les systèmes
 @translationof Top-level contexts - staff containers
 
-@untranslated
+De nombreuses partitions sont écrites sur plus d'une portée.  Ces
+portées peuvent être regroupées de différentes manières.
+
+@strong{@emph{StaffGroup}}
+
+Le groupe de portées est attaché par un crochet, et les barres de mesure
+sont d'un seul tenant, de la première à la dernière portée.  Le
+@code{StaffGroup} constitue le regroupement le plus simple.
+
+@strong{@emph{ChoirStaff}}
+
+Ce regroupement est identique au @code{StaffGroup}, à ceci près que les
+barres de mesure ne traversent pas l'espace inter-portées.
+
+@strong{@emph{GrandStaff}}
+
+Le groupe de portées est attaché par une accolade sur la gauche, et les
+barres de mesure sont d'un seul tenant.
+
+@strong{@emph{PianoStaff}}
+
+Ce regroupement est identique au @code{GrandStaff}, à ceci près que le
+nom de l'instrument sera directement attaché au système.
 
 
 @node Contextes de niveau intermédiaire -- les portées
 @unnumberedsubsubsec Contextes de niveau intermédiaire -- les portées
 @translationof Intermediate-level contexts - staves
 
-@untranslated
+@strong{@emph{Staff}}
+
+La portée prend en charge les clefs, barres de mesure, armures et les
+altérations accidentelles.  Un contexte @code{Staff} peut contenir
+plusieurs contextes @code{Voice}.
+
+@strong{@emph{RhythmicStaff}}
+
+De même nature qu'un @code{Staff}, mais destiné à n'imprimer que du
+rythme.  Quelle que soit la hauteur, les notes seront imprimées sur une
+même et unique ligne.
+
+@strong{@emph{TabStaff}}
+
+Ce contexte permet de générer des tablatures.  La mise en forme par
+défaut correspond à une tablature pour guitare, sur six lignes.
+
+@strong{@emph{DrumStaff}}
+
+Contexte dévolu tout spécialement aux parties de percussion ; il
+peut contenir plusieurs @code{DrumVoice}.
+
+@strong{@emph{VaticanaStaff}}
+
+Identique au contexte @code{Staff}, à ceci près qu'il est tout
+particulièrement adapté au grégorien.
+
+@strong{@emph{MensuralStaff}}
+
+Identique au contexte @code{Staff}, à ceci près qu'il est tout
+particulièrement adapté au style mensural de musique ancienne.
 
 
 @node Contextes de bas niveau -- les voix
 @unnumberedsubsubsec Contextes de bas niveau -- les voix
 @translationof Bottom-level contexts - voices
 
-@untranslated
+Les contextes de niveau @qq{voix} initialisent un certain nombre de
+propriétés et activent les graveurs appropriés.  S'agissant de contextes
+du plus bas niveau, ils ne sauraient contenir d'autre contexte.
+
+@strong{@emph{Voice}}
+
+Correspond à une voix positionnée sur une portée.  Le contexte
+@code{Voice} s'occupe des indications de nuance, des hampes, des
+ligatures, des scripts placés au-dessus ou au-dessous de la portée, des
+différentes liaisons et des silences.  Lorsque plusieurs voix doivent
+cohabiter sur la même portée, il est indispensable de les instancier
+explicitement.
+
+@strong{@emph{VaticanaVoice}}
+
+Fonctionnant comme le contexte @code{Voice}, il est tout
+particulièrement destiné à gérer le grégorien.
+
+@strong{@emph{MensuralVoice}}
+
+Fonctionnant comme le contexte @code{Voice}, il est tout
+particulièrement adapté aux musiques anciennes.
+
+@strong{@emph{Lyrics}}
+
+Correspond à une voix contenant des paroles.  Le contexte @code{Lyrics}
+gère l'impression d'une ligne de paroles.
+
+@strong{@emph{DrumVoice}}
+
+Contexte de voix dévolu à une portée de percussions.
+
+@strong{@emph{FiguredBass}}
+
+Contexte prenant en charge les objets @code{BassFigure} -- la basse
+chiffrée -- créés à partir de ce qui a été saisi en mode
+@code{\figuremode}.
+
+@strong{@emph{TabVoice}}
+
+Contexte de voix dévolu au contexte @code{TabStaff}, il est
+habituellement créé implicitement.
+
+@strong{@emph{CueVoice}}
+
+Contexte de voix utilisé essentiellement dans le cadre de citations
+ajoutées à une portée -- voir @ref{Mise en forme d'une citation}.  Il
+est habituellement créé implicitement.
+
+@strong{@emph{ChordNames}}
+
+Permet d'imprimer des noms d'accord.
+
+@ignore
+TODO
+
+Then the following, which I don't know what to do with:
+
+    * GregorianTranscriptionVoice
+    * GregorianTranscriptionStaff
+
+    * FretBoards
+        Engraves fretboards from chords. Not easy... Not
+documented.
+        There is now some documentation on FretBoards in the NR, under
+         instrument-specific notation -- cds.
+
+    * NoteNames
+
+    * Global
+        Hard coded entry point for LilyPond. Cannot be tuned.
+    * Devnull
+        Silently discards all musical information given to this
+context.
+
+@end ignore
 
 
 @node Création d'un contexte
 @subsection Création d'un contexte
 @translationof Creating contexts
 
-@untranslated
+@c TODO more complete descriptions rather than learning style
+
+Lorsqu'une partition ne comporte qu'une portée avec une seule voix, les
+contextes sont créés automatiquement.  Dès que la structure s'étoffe, il
+devient nécessaire de les créer explicitement, en suivant l'une des
+trois méthodes suivantes :
+
+@itemize
+
+@item
+La commande la plus simple à utiliser est @code{\new} ; c'est aussi
+la plus courte.  Elle se place juste avant une expression musicale et se
+libelle ainsi :
+
+@funindex \new
+@cindex nouveau contexte
+@cindex contexte, création
+
+@example
+\new @var{type} @var{expression_musicale}
+@end example
+
+@noindent
+où @var{type} est le nom d'un contexte (par ex. @code{Staff} ou
+@code{Voice}).  Cette commande crée un nouveau contexte et y interprète
+le contenu de l'@var{expression_musicale}.
+
+C'est ce qui se passe lorsqu'une partition comporte plusieurs portées :
+chaque partie qui doit apparaître sur une portée spécifique est précédée
+d'un @code{\new Staff}.
+
+@lilypond[quote,verbatim,relative=2,ragged-right]
+<<
+  \new Staff { c4 c }
+  \new Staff { d4 d }
+>>
+@end lilypond
+
+La commande @code{\new} vous permet aussi d'attribuer un nom au
+contexte que vous créez.
+
+@example
+\new @var{type} = @var{nom} @var{musique}
+@end example
+Le nom que vous spécifiez ne pourra être utilisé que s'il n'a pas déjà
+été attribué à un autre contexte.
+
+@funindex \context
+@item
+Tout comme @code{\new}, la commande @code{\context} affectera une
+expression musicale à un objet contextuel ; elle lui attribuera de
+surcroît un nom.  La commande @code{\context} s'emploie de la façon
+suivante :
+
+@example
+\context @var{type} = @var{nom} @var{musique}
+@end example
+
+LilyPond va dans un premier temps vérifier l'existence d'un contexte du
+type @var{type} appelé @var{nom}.  En l'absence d'un tel contexte,
+LilyPond crée un nouveau contexte du nom que vous avez spécifié.  Cette
+procédure est tout à fait pertinente lorsque vous faites appel à ce
+contexte particulier par la suite.  Prenons le cas d'un chant :
+nous commençons par nommer la ligne mélodique,
+
+@example
+\context Voice = "@b{tenor}" @var{musique}
+@end example
+
+@noindent
+de telle sorte que le texte s'aligne correctement sur les notes :
+
+@example
+\new Lyrics \lyricsto "@b{tenor}" @var{paroles}
+@end example
+
+@noindent
+
+L'une des autres utilisations de contextes explicitement nommés consiste
+à fusionner deux expressions musicales dans un même contexte.  Dans
+l'exemple qui suit, notes et articulations sont saisies indépendamment.
+
+@example
+music = @{ c4 c4 @}
+arts = @{ s4-. s4-> @}
+@end example
+
+Elles sont ensuite fusionnées par affectation au même contexte
+@code{Voice} :
+
+@example
+<<
+  \new Staff \context Voice = "A" \music
+  \context Voice = "A" \arts
+>>
+@end example
+@lilypond[quote,ragged-right]
+music = { c4 c4 }
+arts = { s4-. s4-> }
+\relative c'' <<
+  \new Staff \context Voice = "A" \music
+  \context Voice = "A" \arts
+>>
+@end lilypond
+
+Grâce à ce mécanisme, vous pouvez tout à fait générer une version
+@qq{Urtext} (édition originale) et optionnellement ajouter distinctement
+des articulations à ces mêmes notes.
+
+@cindex création de contextes
+
+@item
+Voici une troisième manière de créer un contexte :
+
+@example
+\context @var{type} @var{musique}
+@end example
+
+@noindent
+Très comparable à une déclaration @code{\context = @var{nom}},
+cette méthode permet de s'affranchir du type de contexte.
+
+Cette variante s'utilise lorsque les expression musicales peuvent être
+interprétées à différents niveaux, comme par exemple lorsque intervient
+la commande @code{\applyOutput} -- pour de plus amples détails, voir
+@rextend{Application d'une fonction à tous les objets de mise en forme}.
+En l'absence de @code{\context} explicite, LilyPond considère qu'il
+s'agit de @code{Voice}.
+
+@example
+\applyOutput #'@var{contexte} #@var{fonction}   % s'applique à Voice
+@end example
+
+Vous devrez respecter ces formulations si la fonction doit
+s'interpréter au niveau @code{Score} ou @code{Staff} :
+
+@example
+\applyOutput #'Score #@var{fonction}
+\applyOutput #'Staff #@var{fonction}
+@end example
+
+@end itemize
 
 
 @node Conservation d'un contexte
 @subsection Conservation d'un contexte
 @translationof Keeping contexts alive
 
-@untranslated
+@cindex contextes, maintien actif
+@cindex contextes, durée de vie
+
+En règle générale, un contexte disparaît dès qu'il n'y a plus rien à
+faire.  Autrement dit, un contexte @code{Voice} disparaît dès après le
+dernier événement qu'il contient, et un contexte @code{Staff} dès que
+les contextes @code{Voice} qu'il supporte ne contiennent plus rien.
+Ceci peut avoir des conséquences néfastes lorsqu'il est fait référence à
+un contexte alors disparu, comme dans le cas d'un changement de portée
+introduit par la commande @code{\change}, l'association de paroles à
+l'aide de la commande @code{\lyricsto} ou si des événements surviennent
+à nouveau pour ce contexte précédemment actif.
+
+Une exception cependant à cette règle : en présence d'un contexte
+@code{Staff} ou dans une construction @code{<<...>>}, un seul des
+contextes @code{Voice} inclus restera actif jusqu'à la fin du contexte
+@code{Staff} ou de la construction @code{<<...>>}, y compris s'il y
+a des @qq{trous}.  Le contexte alors persistant sera le premier
+rencontré dans la construction @code{@{...@}} sans tenir compte des
+éventuels @code{<<...>>} qu'elle pourrait contenir.
+
+Un contexte restera actif dès lors qu'il s'y passera toujours quelque
+chose.  Un contexte @code{Staff} restera actif si l'une des voix qu'il
+supporte est toujours active.  L'un des moyens de s'en assurer
+consiste à ajouter des silences invisibles parallèlement à la musique.
+Vous devrez les ajouter dans tous les contextes @code{Voice} qui doivent
+rester actifs.  Nous vous conseillons, lorsque plusieurs voix
+interviennent de manière sporadique, de toutes les maintenir actives
+plutôt que de vous fier aux exceptions mentionnées plus haut.
+
+Dans l'exemple suivant, les deux voix A et B sont maintenues actives
+jusqu'à la fin du morceau :
+
+@lilypond[quote,verbatim]
+musicA = \relative c'' { d4 d d d }
+musicB = \relative c'' { g4 g g g }
+keepVoicesAlive = {
+  <<
+    \new Voice = "A" { s1*5 }  % Keep Voice "A" alive for 5 bars
+    \new Voice = "B" { s1*5 }  % Keep Voice "B" alive for 5 bars
+  >>
+}
+
+music = {
+  \context Voice = "A" {
+    \voiceOneStyle
+    \musicA
+  }
+  \context Voice = "B" {
+    \voiceTwoStyle
+    \musicB
+  }
+  \context Voice = "A" { \musicA }
+  \context Voice = "B" { \musicB }
+  \context Voice = "A" { \musicA }
+}
+
+\score {
+  \new Staff <<
+    \keepVoicesAlive
+    \music
+  >>
+}
+@end lilypond
+
+@cindex paroles, alignement sur une mélodie épisodique
+
+L'exemple suivant illustre la manière d'écrire selon cette méthode une
+mélodie discontinue à laquelle se rattachent des paroles.  Dans la
+réalité, mélodie et accompagnement feraient l'objet de portées séparées.
+
+@lilypond[quote,verbatim]
+melody = \relative c'' { a4 a a a }
+accompaniment = \relative c' { d4 d d d }
+words = \lyricmode { These words fol -- low the mel -- o -- dy }
+\score {
+  <<
+    \new Staff = "music" {
+      <<
+        \new Voice = "melody" {
+          \voiceOne
+          s1*4  % Keep Voice "melody" alive for 4 bars
+        }
+        {
+          \new Voice = "accompaniment" {
+            \voiceTwo
+            \accompaniment
+          }
+          <<
+            \context Voice = "melody" { \melody }
+            \context Voice = "accompaniment" { \accompaniment }
+          >>
+          \context Voice = "accompaniment" { \accompaniment }
+          <<
+            \context Voice = "melody" { \melody }
+            \context Voice = "accompaniment" { \accompaniment }
+          >>
+        }
+      >>
+    }
+    \new Lyrics \with { alignAboveContext = #"music" }
+    \lyricsto "melody" { \words }
+  >>
+}
+@end lilypond
+
+Une autre méthode, qui s'avère plus productive dans nombre de cas,
+consiste à maintenir active la ligne mélodique en y insérant des
+silences invisibles tout au long de l'accompagnement :
+
+@lilypond[quote,verbatim]
+melody = \relative c'' {
+  s1  % skip a bar
+  a4 a a a
+  s1  % skip a bar
+  a4 a a a
+}
+accompaniment = \relative c' {
+  d4 d d d
+  d4 d d d
+  d4 d d d
+  d4 d d d
+}
+words = \lyricmode { These words fol -- low the mel -- o -- dy }
+
+\score {
+  <<
+    \new Staff = "music" {
+      <<
+        \new Voice = "melody" {
+          \voiceOne
+          \melody
+        }
+        \new Voice = "accompaniment" {
+          \voiceTwo
+          \accompaniment
+        }
+      >>
+    }
+    \new Lyrics \with { alignAboveContext = #"music" }
+    \lyricsto "melody" { \words }
+  >>
+}
+@end lilypond
 
 
 @node Modification des greffons de contexte
 @subsection Modification des greffons de contexte
 @translationof Modifying context plug-ins
 
+@c TODO Should this be Modifying engravers or Modifying contexts?
+
 Les contextes, tels que @code{Score} ou @code{Staff}, ne contiennent
-pas que des propriétés ; ils mettent également en œuvre certains
-sous-programmes (@q{plug-ins}, pour employer le terme consacré) nommés
-@q{graveurs} (@q{engravers}, pour reprendre le terme anglais).
+pas que des propriétés ; ils mettent également en œuvre certains
+sous-programmes (@emph{plug-ins} pour employer le terme consacré) nommés
+@qq{graveurs} (@emph{engravers} pour reprendre le terme anglais).
 Ces sous-programmes sont chargés de créer les différents éléments de
-notation : 
-On trouve ainsi dans le contexte @code{Voice}, un graveur
-@code{Note_head_engraver}, 
-chargé des têtes de notes, et dans le contexte @code{Staff}, un graveur
-@code{Key_signature_engraver}, chargé de l'armure.
+notation : on trouve ainsi dans le contexte @code{Voice} un graveur
+@code{Note_heads_engraver}, chargé des têtes de notes et, dans le
+contexte @code{Staff}, un graveur @code{Key_engraver}, chargé de
+l'armure.
 
 Vous trouverez une description exhaustive de chaque graveur dans
 @ifhtml
 @rinternals{Engravers and Performers}.
 @end ifhtml
 @ifnothtml
-Program reference @expansion{} Translation @expansion{} Engravers.
+Référence des propriétés internes @expansion{} Translation @expansion{} Engravers.
 @end ifnothtml
 Chaque contexte mentionné dans
 @ifhtml
 @rinternals{Contexts}
 @end ifhtml
 @ifnothtml
-Program reference @expansion{} Translation @expansion{} Context.
+Référence des propriétés internes @expansion{} Translation @expansion{} Context.
 @end ifnothtml
 répertorie les graveurs mis en œuvre.
 
-
 On peut faire, au moyen de ces graveurs, sa propre @qq{cuisine}, en
 modifiant les contextes à volonté.
 
-
-Lorsque un contexte est créé, par la commande @code{\new} ou @code{\context}, on peut
-y adjoindre un bloc @code{\with} (en anglais @q{avec}), dans lequel il est possible
-d'ajouter (commande @code{\consists}) ou d'enlever (commande @code{\remove})
-des graveurs :
+Lorsqu'un contexte est créé, par la commande @code{\new} ou
+@code{\context}, on peut y adjoindre un bloc @code{\with} (en anglais
+@qq{avec}), dans lequel il est possible d'ajouter (commande
+@code{\consists}) ou d'enlever (commande @code{\remove}) des
+graveurs :
 
 @funindex \with
 
@@ -254,12 +649,12 @@ des graveurs :
 @end example
 
 @noindent
-Ici les points de suspension @dots{} devront être remplacés par les noms
+Ici les points de suspension @dots{} devront être remplacés par le nom
 des graveurs désirés.  Dans l'exemple suivant, on enlève du contexte
-@code{Staff}, le chiffre de mesure (graveur @code{Time_signature_engraver})
-et la clé (graveur @code{Clef_engraver}).
+@code{Staff}, la métrique (graveur @code{Time_signature_engraver})
+et la clef (graveur @code{Clef_engraver}).
 
-@lilypond[quote,relative=1,verbatim,fragment]
+@lilypond[quote,relative=1,verbatim]
 <<
   \new Staff {
     f2 g
@@ -273,238 +668,436 @@ et la clé (graveur @code{Clef_engraver}).
 >>
 @end lilypond
 
-La clé et le chiffre de mesure ont disparu de la deuxième portée.  C'est
-une méthode quelque peu radicale, puisqu'elle affectera toute la portée
-jusqu'à la fin de la partition.  L'espacement s'en trouve également
-affecté, ce qui peut être ou non l'effet recherché.  Une méthode plus
-sophistiquée aurait été de rendre ces objets transparents (voir
-@rlearning{Visibilité et couleur des objets}). 
+La clef et le chiffre de mesure ont disparu de la deuxième portée.
+C'est une méthode quelque peu radicale, puisqu'elle affectera toute la
+portée jusqu'à la fin de la partition.  L'espacement s'en trouve
+également affecté, ce qui peut être ou non l'effet recherché.  Une
+méthode plus sophistiquée aurait été de rendre ces objets transparents
+(voir @rlearning{Visibilité et couleur des objets}).
 
 Dans l'exemple suivant, voici une mise en pratique plus utile.  En temps
-normal, les barres de mesure et la métrique sont synchronisées verticalement
-dans toute la partition.  Les graveurs qui en sont responsables se nomment
-@code{Timing_translator} et @code{Default_bar_line_engraver}.
-En les enlevant du contexte @code{Score} pour les attribuer au contexte
-@code{Staff}, chaque portée peut désormais avoir sa propre métrique.
+normal, les barres de mesure et la métrique sont synchronisées
+verticalement dans toute la partition.  Les graveurs qui en sont
+responsables se nomment @code{Timing_translator} et
+@code{Default_bar_line_engraver}.  En les enlevant du contexte
+@code{Score} pour les attribuer au contexte @code{Staff}, chaque portée
+peut désormais avoir sa propre métrique.
 
 @cindex polymétrique, partition
-@cindex Chiffres de mesure multiples
-
-@lilypond[quote,relative=1,ragged-right,verbatim,fragment]
-\new Score \with {
-  \remove "Timing_translator"
-  \remove "Default_bar_line_engraver"
-} <<
+@cindex chiffres de mesure multiples
+
+@lilypond[quote,verbatim]
+\score {
+  <<
+    \new Staff \with {
+      \consists "Timing_translator"
+      \consists "Default_bar_line_engraver"
+    } {
+        \time 3/4
+        c4 c c c c c
+    }
   \new Staff \with {
     \consists "Timing_translator"
     \consists "Default_bar_line_engraver"
   } {
-      \time 3/4
+      \time 2/4
       c4 c c c c c
   }
-  \new Staff \with {
-    \consists "Timing_translator"
-    \consists "Default_bar_line_engraver"
-  } {
-       \time 2/4
-       c4 c c c c c
-  }
 >>
+\layout {
+  \context {
+    \Score
+    \remove "Timing_translator"
+    \remove "Default_bar_line_engraver"
+    }
+  }
+}
 @end lilypond
 
+@knownissues
 
-@c deprecated node: delete. --fv
-@ignore
-@n ode Retouches de mise en forme au sein des contextes
-@s ubsection Retouches de mise en forme au sein des contextes
-@t ranslationof Layout tunings within contexts
+L'ordre dans lequel les graveurs sont spécifiés correspond à leur ordre
+d'apparition dans le processus d'élaboration de la partition.
+En règle générale, l'ordre dans lequel les graveurs sont mentionnés
+importe peu.  Il se peut toutefois qu'un graveur écrive une propriété
+qui sera interprétée par un autre, ou qu'un graveur crée un objet
+graphique qui sera traité par un autre ; l'ordre d'apparition de
+ces graveurs prendra alors tout son importance.
 
-Chaque contexte est chargé de créer plusieurs types d'objets graphiques.
-Il contient également les réglages nécessaires pour chacun de ces objets.
-Si l'on modifie ces réglages, les objets n'auront plus la même apparence.
+Pour information, les ordonnancements suivants sont importants :
 
-La syntaxe employée pour ce faire est
+@itemize
+@item
+le @code{Bar_engraver} devrait toujours être le premier ;
 
-@example
-\override @var{contexte}.@var{objet} #'@var{propriété} = #@var{valeur}
-@end example
+@item
+le @code{New_fingering_engraver} doit toujours précéder le
+@code{Script_column_engraver} ;
 
-Ici @var{objet} est un objet graphique, tel que @code{Stem} (les hampes)
-ou @code{NoteHead} (les têtes de note) ; @var{propriété} est une variable
-(désignée par un symbole, ce qui explique l'apostrophe) employée par le système
-de mise en page.  La sous-section @ref{Élaboration d'une retouche} vous
-aidera à savoir quoi mettre à la place de @var{objet}, @var{propriété} et
-@var{valeur} ; notre propos n'est ici que d'examiner l'emploi de cette commande.
+@item
+le @code{Timing_translator} doit toujours précéder le
+@code{Bar_number_engraver}.
 
-La commande suivante :
+@end itemize
 
-@verbatim
-\override Staff.Stem #'thickness = #4.0
-@end verbatim
+@seealso
+Fichiers d'initialisation :
+@file{ly/engraver-init.ly}.
 
-@noindent
-rend les hampes plus épaisses (la valeur par défaut est 1.3, ce qui signifie qu'elles
-sont 1,3 fois plus épaisses que les lignes de la portée).  Dans la mesure où nous avons
-indiqué @code{Staff} comme contexte, ce réglage ne s'appliquera qu'à la portée courante ;
-les autres portées demeureront intactes.
 
 
-@lilypond[quote,verbatim,relative=2,fragment]
-c4
-\override Staff.Stem #'thickness = #4.0
-c4
-c4
-c4
-@end lilypond
+@node Modification des réglages par défaut d'un contexte
+@subsection Modification des réglages par défaut d'un contexte
+@translationof Changing context default settings
 
-La commande @code{\override} modifie donc la définition de l'objet @code{Stem}
-dans le contexte @code{Staff} ; toutes les hampes qui suivent seront affectées.
+@cindex réglages par défaut, modification
+@cindex contexte, modification des propriétés par défaut
 
-Tout comme avec la commande @code{\set}, l'argument @var{contexte} peut être omis, auquel
-cas le contexte par défaut (ici, @code{Voice}) sera employé.  La commande @code{\once}
-permet de n'appliquer la modification qu'une seule fois.
+Les propriétés des contextes et objets graphiques se modifient à l'aide
+des commandes @code{\set} et @code{\override}, comme indiqué à la
+rubrique @ref{Modification de propriétés}.  Ces commandes créent des
+événements musicaux qui feront que la modification produira ses effets
+dès l'instant où la musique est traitée.
 
-@lilypond[quote,fragment,verbatim,relative=2]
-c4
-\once \override Stem #'thickness = #4.0
-c4
-c4
-@end lilypond
+Le propos est ici de voir comment modifier les valeurs @emph{par défaut}
+des propriétés de contexte ou d'objet graphique dès la création de ces
+contextes.  Deux manières de procéder sont envisageables : l'une
+consiste à modifier les valeurs pour tous les contextes d'un même type,
+l'autre s'attache à adapter les valeurs par défaut d'une instance
+particulière d'un contexte.
 
-La commande @code{\override} doit être entrée @emph{avant} l'objet concerné.
-Ainsi, lorsque l'on veut altérer un objet qui se prolonge, tel qu'une liaison,
-une ligature ou tout autre objet dit @emph{Spanner}, la commande @code{\override}
-doit être saisie avant que l'objet soit créé.
+@menu
+* Modification de tous les contextes d'un même type::
+* Modification d'un contexte particulier::
+* Ordre de préséance::
+@end menu
 
-@lilypond[quote,fragment,verbatim,relative=2]
-\override Slur #'thickness = #3.0
-c8[( c
-\override Beam #'thickness = #0.6
-c8 c])
-@end lilypond
 
-@noindent
-Dans cet exemple, la liaison (@emph{Slur}) est épaissie, mais non la ligature
-(@emph{Beam}).  En effet, le code qui lui est relatif n'a pas été inséré avant le début de
-la ligature, et demeure donc sans effet.
+@node Modification de tous les contextes d'un même type
+@unnumberedsubsubsec Modification de tous les contextes d'un même type
+@translationof Changing all contexts of the same type
 
-De même que la commande @code{\unset}, la commande @code{\revert} défait
-ce qui a été fait par une commande @code{\override}.  Tout comme avec @code{\unset},
-elle ne peut annuler que les réglages effectués dans le même contexte.
-Ainsi dans l'exemple suivant, la commande @code{\revert} est sans effet.
+@cindex \context dans un bloc \layout
 
-@example
-\override Voice.Stem #'thickness = #4.0
-\revert Staff.Stem #'thickness
-@end example
+@funindex \context
+@funindex \layout
 
-Il existe, à l'intérieur même de certaines propriétés, des options que l'on
-nomme @q{sous-propriétés}.  La syntaxe est alors
+La personnalisation des réglages par défaut d'un contexte, qu'il
+s'agisse de @code{Score}, @code{Staff} ou @code{Voice}, peut se réaliser
+indépendamment de la musique dans un bloc @code{\layout} -- placé dans
+le bloc @code{\score} auquel ces modifications doivent s'appliquer -- au
+moyen d'un bloc @code{\context}.
 
-@c leave this as a long long
 @example
-\override @var{contexte}.@var{objet} #'@var{propriété} #'@var{sous-propriété} = #@var{valeur}
+\layout @{
+  \context @{
+    \Voice
+    [réglage de contexte pour tous les contextes @emph{Voice}]
+  @}
+  \context @{
+    \Staff
+    [réglage de contexte pour tous les contextes @emph{Staff}]
+  @}
+@}
 @end example
 
-@noindent
-Ainsi, par exemple :
+La spécification des adaptations peut se faire de différentes manières :
 
-@example
-\override Stem #'(details beamed-lengths) = #'(4 4 3)
-@end example
+@itemize
+@item
+à l'aide d'une commande @code{\override}, sans lui adjoindre le nom du
+contexte :
 
+@c KEEP LY
+@lilypond[quote,verbatim]
+\score {
+  \relative c'' {
+    a4^"Hampes épaisses" a a a
+    a4 a a\ff a
+  }
+  \layout {
+    \context {
+      \Staff
+      \override Stem #'thickness = #4.0
+    }
+  }
+}
+@end lilypond
 
-@seealso
-Référence du programme : @rinternals{OverrideProperty}, @rinternals{RevertProperty},
-@rinternals{PropertySet}, @rinternals{Backend}, et
-@rinternals{All layout objects}.
+@item
+en définissant directement une propriété de contexte :
 
+@c KEEP LY
+@lilypond[quote,verbatim]
+\score {
+  \relative c'' {
+    a4^"Fontes plus petites" a a a
+    a4 a a\ff a
+  }
+  \layout {
+    \context {
+      \Staff
+      fontSize = #-4
+    }
+  }
+}
+@end lilypond
 
-@knownissues
 
-La sous-couche Scheme ne vérifie pas la saisie des propriétés de façon
-très stricte.  Des références cycliques dans des valeurs Scheme peuvent
-de ce fait interrompre, ou faire planter le programme -- ou bien les deux.
-@end ignore
+@item
+à l'aide d'une commande prédéfinie comme @code{\dynamicUp}, ou bien une
+expression musicale telle que @code{\accidentalStyle "dodecaphonic"} :
 
-@node Modification des réglages par défaut d'un contexte
-@subsection Modification des réglages par défaut d'un contexte
-@translationof Changing context default settings
+@c KEEP LY
+@lilypond[quote,verbatim]
+\score {
+  \relative c'' {
+    a4^"Nuance en surplomb" a a a
+    a4 a a\ff a
+  }
+  \layout {
+    \context {
+      \Voice
+      \dynamicUp
+    }
+    \context {
+      \Staff
+      \accidentalStyle "dodecaphonic"
+    }
+  }
+}
+@end lilypond
 
-Les réglages montrés dans les sous-sections @ref{La commande de fixation (set)}, @ref{Modification des greffons de contexte} et
-@ref{Retouches de mise en forme au sein des contextes} peuvent également être saisis indépendamment
-de la musique dans le bloc @code{\layout}, au moyen de la commande @code{\context} :
+@item
+à l'aide d'une variable personnalisée contenant un bloc @code{\with} :
+pour de plus amples iformations sur le bloc @code{\with}, voir
+@ref{Modification d'un contexte particulier}.
 
-@example
-\layout @{
-  @dots{}
-  \context @{
-    \Staff
+@c KEEP LY
+@lilypond[quote,verbatim]
+StaffDefauts = \with {
+  fontSize = #-4
+}
 
-    \set fontSize = #-2
-    \override Stem #'thickness = #4.0
-    \remove "Time_signature_engraver"
-  @}
-@}
-@end example
+\score {
+  \new Staff {
+    \relative c'' {
+      a4^"Petite police" a a a
+      a4 a a a
+    }
+  }
+  \layout {
+    \context {
+      \Staff
+      \StaffDefauts
+    }
+  }
+}
+@end lilypond
 
-Le raccourci @code{\Staff} invoque les définitions inhérentes au contexte
-@code{Staff}, de façon à ce qu'elles puissent être modifiées.
+@end itemize
 
-Les lignes suivantes affecteront toutes les portées (tous les contextes @code{Staff})
-dans la partition.
-@example
-\set fontSize = #-2
-\override Stem #'thickness = #4.0
-\remove "Time_signature_engraver"
-@end example
+Les instructions destinées à modifier les propriétés peuvent se placer
+dans un bloc @code{\layout} sans pour autant être incluses dans un bloc
+@code{\context}.  Expliciter des réglages de la sorte équivaut à inclure
+les commandes de modification des propriétés au début de chacun des
+contextes du type en question.  Lorsque le contexte n'est pas spécifié,
+@emph{tous} les contextes de bas niveau seront affectés -- voir
+@ref{Contextes de bas niveau -- les voix}.  La syntaxe appropriée répond
+aux mêmes critères que si la commande était écrite dans le flot
+musical.
 
-@noindent
-Les autres contextes peuvent être modifiés de même manière.
+@c KEEP LY
+@lilypond[quote,verbatim]
+\score {
+  \new Staff {
+    \relative c'' {
+      a4^"Petite police" a a a
+      a4 a a a
+    }
+  }
+  \layout {
+    \accidentalStyle "dodecaphonic"
+    \set fontSize = #-4
+    \override Voice.Stem #'thickness = #4.0
+  }
+}
+@end lilypond
+
+
+@node Modification d'un contexte particulier
+@unnumberedsubsubsec Modification d'un contexte particulier
+@translationof Changing just one specific context
+
+@cindex \with
+@funindex \with
 
-La commande @code{\set}, dans le bloc @code{\layout}, est facultative ; aussi
-les lignes suivantes produiront-elles le même effet.
+Dans le cas d'un contexte pris individuellement, ses propriétés se
+modifient à l'aide d'un bloc @code{\with}.  Toutes les autres instances
+de contexte appartenant au même type seront affectés des réglages
+prédéfinis par LilyPond, modifiés le cas échéant par un bloc
+@code{\layout}.  Le bloc @code{\with} se place directement à la suite de
+la commande @code{\new} @var{type-de-contexte}.
 
 @example
-\context @{
-  @dots{}
-  fontSize = #-2
+\new Staff
+\with @{
+  [réglages pour ce contexte pris individuellement]
+@} @{
+...
 @}
 @end example
 
+La spécification des adaptations peut se faire de différentes manières :
 
-@knownissues
+@itemize
+@item
+à l'aide d'une commande @code{\override}, sans lui adjoindre le nom du
+contexte :
+
+@c KEEP LY
+@lilypond[quote,verbatim]
+\score {
+  \new Staff {
+    \new Voice
+    \with {
+      \override Stem #'thickness = #4.0
+    }
+    {
+      \relative c'' {
+        a4^"Hampes épaisses" a a a
+        a4 a a a
+      }
+    }
+  }
+}
+@end lilypond
+
+@item
+en définissant directement une propriété de contexte :
+
+@lilypond[quote,verbatim]
+\score {
+  <<
+    \new Staff {
+      \relative c'' {
+        a4^"Default font" a a a
+        a4 a a a
+      }
+    }
+    \new Staff
+    \with {
+      fontSize = #-4
+    } {
+      \relative c'' {
+        a4^"Smaller font" a a a
+        a4 a a a
+      }
+    }
+  >>
+}
+@end lilypond
 
-Il est impossible de stocker des modifications de contexte dans un identificateur.
+@item
+à l'aide d'une commande prédéfinie comme @code{\dynamicUp} :
 
-Le raccourci @code{\RemoveEmptyStaffContext} détruit tous les réglages
-du contexte @code{\Staff}.  Pour modifier des propriétés de portées gouvernées
-par @code{\RemoveEmptyStaffContext}, il faut le faire impérativement @emph{après}
-avoir invoqué @code{\RemoveEmptyStaffContext} :
+@c KEEP LY
+@lilypond[quote,verbatim]
+\score {
+  <<
+    \new Staff {
+      \new Voice {
+        \relative c'' {
+          a4^"Nuances en dessous" a a a
+          a4 a a\ff a
+        }
+      }
+    }
+    \new Staff
+    \with { \accidentalStyle "dodecaphonic" }
+    {
+      \new Voice
+      \with { \dynamicUp }
+      {
+        \relative c'' {
+          a4^"Nuances en surplomb" a a a
+          a4 a a\ff a
+        }
+      }
+    }
+  >>
+}
+@end lilypond
 
-@example
-\layout @{
-  \context @{
-    \RemoveEmptyStaffContext
+@end itemize
 
-    \override Stem #'thickness = #4.0
-  @}
-@}
-@end example
+
+@node Ordre de préséance
+@unnumberedsubsubsec Ordre de préséance
+@translationof Order of precedence
+
+La valeur d'une propriété qui doit s'appliquer à un instant particulier
+est déterminée comme suit :
+
+@itemize
+@item
+s'il y a une instruction @code{\override} ou @code{\set} active dans le
+flot d'information, sa valeur s'applique,
+
+@item
+en l'absence de quoi sera utilisée la valeur par défaut telle que
+définie dans une clause @code{\with} stipulée à l'initialisation du
+contexte,
+
+@item
+en l'absence de quoi sera retenue la valeur par défaut issue du bloc
+@code{\context} approprié le plus récent dans le bloc @code{\layout},
+
+@item
+en l'absence de quoi s'appliqueront les réglages prédéfinis de LilyPond.
+@end itemize
+
+@seealso
+Manuel d'initiation :
+@rlearning{Modification des propriétés d'un contexte}.
+
+Manuel de notation :
+@ref{Tout savoir sur les contextes},
+@ref{Contextes de bas niveau -- les voix},
+@ref{La commande de fixation (set)},
+@ref{La commande de dérogation (override)},
+@ref{Le bloc \layout}.
 
 
 @node Définition de nouveaux contextes
 @subsection Définition de nouveaux contextes
 @translationof Defining new contexts
 
+@cindex contexte, création
+@cindex graveur, affectation à un contexte
+
+@funindex \alias
+@funindex alias
+@funindex \name
+@funindex name
+@funindex \type
+@funindex type
+@funindex \consists
+@funindex consists
+@funindex \accepts
+@funindex accepts
+@funindex \denies
+@funindex denies
+
 Les contextes tels que @code{Staff} ou @code{Voice} sont faits
-de briques de constructions empilées.  En combinant divers graveurs,
+de briques de construction empilées.  En combinant divers graveurs,
 il est possible de créer de nouveaux types de contextes.
 
-Dans l'exemple suivant, on construit, de zéro, un nouveau contexte très
-semblable à @code{Voice}, mais qui n'imprime que des têtes de notes en forme
-de barres obliques au centre de la portée.  Un tel contexte, par exemple, peut
-servir à indiquer un passage improvisé dans un morceau de jazz.
+Dans l'exemple suivant on construit, de zéro, un nouveau contexte très
+semblable à @code{Voice}, mais qui n'imprime que des têtes de notes en
+forme de barre oblique au centre de la portée.  Un tel contexte peut
+servir, par exemple, à indiquer un passage improvisé dans un morceau de
+jazz.
 
 @c KEEP LY
 @lilypond[quote,ragged-right]
@@ -514,10 +1107,11 @@ servir à indiquer un passage improvisé dans un morceau de jazz.
   \consists "Note_heads_engraver"
   \consists "Rhythmic_column_engraver"
   \consists "Text_engraver"
-  \consists Pitch_squash_engraver
+  \consists "Pitch_squash_engraver"
   squashedPosition = #0
   \override NoteHead #'style = #'slash
   \override Stem #'transparent = ##t
+  \override Flag #'transparent = ##t
   \alias Voice
 }
 \context { \Staff
@@ -531,9 +1125,8 @@ servir à indiquer un passage improvisé dans un morceau de jazz.
 }
 @end lilypond
 
-
-On a rassemblé les réglages dans un bloc @code{\context}, lui-même dans
-le bloc @code{\layout} :
+On a rassemblé les réglages dans un bloc @code{\context}, lui-même placé
+dans le bloc @code{\layout} :
 
 @example
 \layout @{
@@ -543,62 +1136,63 @@ le bloc @code{\layout} :
 @}
 @end example
 
-En lieu et place des points (@dots{}), voici les éléments à saisir :
+En lieu et place des points (@dots{}), voici les éléments à saisir :
 
-@itemize @bullet
-@item Tout d'abord, il convient de donner un nom @code{\name} à notre nouveau contexte :
+Tout d'abord, il convient de donner un nom à notre nouveau contexte :
 
 @example
 \name ImproVoice
 @end example
 
-@item Comme il est très semblable à @code{Voice}, nous souhaitons que toutes les
-commandes associées au @code{Voice} déjà existant, restent valables.  D'où nécessité
-de la commande @code{\alias}, qui va l'associer au contexte @code{Voice} :
+Comme il est très semblable à @code{Voice}, nous souhaitons que
+toutes les commandes associées au @code{Voice} déjà existant restent
+valables.  D'où nécessité de la commande @code{\alias}, qui va
+l'associer au contexte @code{Voice} :
 
 @example
 \alias Voice
 @end example
 
-@item Ce contexte doit pouvoir imprimer des notes, et des indications textuelles ;
-on ajoute donc les graveurs appropriés.
+Ce contexte doit pouvoir imprimer des notes et des indications
+textuelles ; on ajoute donc les graveurs appropriés :
 
 @example
-\consists Note_heads_engraver
-\consists Text_engraver
+\consists "Note_heads_engraver"
+\consists "Text_engraver"
 @end example
 
-@item Cependant, on veut que les notes s'affichent toutes au centre de la portée :
+Cependant, on veut que les notes s'affichent toutes au centre de
+la portée :
 
 @example
-\consists Pitch_squash_engraver
+\consists "Pitch_squash_engraver"
 squashedPosition = #0
 @end example
 
-@noindent
-Le graveur @rinternals{Pitch_squash_engraver} intercepte les notes créées par
-@rinternals{Note_heads_engraver}, et les @q{écrase} pour qu'elles aient toutes la
-même position verticale, définie par @code{squashedPosition} : ici il s'agit de la
-valeur@tie{}@code{0}, c'est-à-dire la ligne du milieu.
+Le graveur @rinternals{Pitch_squash_engraver} intercepte les notes
+créées par le @rinternals{Note_heads_engraver}, et les @qq{écrase} pour
+qu'elles aient toutes la même position verticale, définie par
+@code{squashedPosition} : ici il s'agit de la valeur @code{0},
+c'est-à-dire la ligne du milieu.
 
-@item On veut que les notes aient la forme d'une barre oblique, sans aucune hampe :
+On veut que les notes aient la forme d'une barre oblique, sans
+aucune hampe :
 
 @example
 \override NoteHead #'style = #'slash
 \override Stem #'transparent = ##t
+\override Flag #'transparent = ##t
 @end example
 
-@item Afin que tous ces graveurs puissent travailler de concert, on leur adjoint un
-sous-programme spécial, introduit par la commande @code{\type} : il s'agit de
-@code{Engraver_group},
+Afin que tous ces graveurs puissent travailler de concert, on leur
+adjoint un sous-programme spécial, introduit par la commande
+@code{\type} : il s'agit de @code{Engraver_group},
 
 @example
 \type "Engraver_group"
 @end example
 
-@end itemize
-
-Récapitulons -- on se retrouve avec le bloc suivant :
+Récapitulons ; on se retrouve avec le bloc suivant :
 
 @example
 \context @{
@@ -606,20 +1200,22 @@ Récapitulons -- on se retrouve avec le bloc suivant :
   \type "Engraver_group"
   \consists "Note_heads_engraver"
   \consists "Text_engraver"
-  \consists Pitch_squash_engraver
+  \consists "Pitch_squash_engraver"
   squashedPosition = #0
   \override NoteHead #'style = #'slash
   \override Stem #'transparent = ##t
+  \override Flag #'transparent = ##t
   \alias Voice
 @}
 @end example
 
 @funindex \accepts
+
 Ce n'est pas tout.  En effet, on veut intégrer le nouveau contexte
 @code{ImproVoice} dans la hiérarchie des contextes.  Tout comme le
 contexte @code{Voice}, sa place est au sein du contexte @code{Staff}.
 Nous allons donc modifier le contexte @code{Staff},
-au moyen de la commande @code{\accepts} :
+au moyen de la commande @code{\accepts} :
 
 @example
 \context @{
@@ -629,12 +1225,12 @@ au moyen de la commande @code{\accepts} :
 @end example
 
 @funindex \denies
-Le contraire de @code{\accepts} est @code{\denies},
-qui est parfois utile lorsque l'on recycle des définitions de
-contextes déjà existantes.
+
+Le contraire de @code{\accepts} est @code{\denies} ; il est parfois
+utile lorsque l'on recycle des définitions de contextes déjà existantes.
 
 Enfin, tout cela doit prendre place dans le bloc @code{\layout},
-comme suit :
+comme ici :
 
 @example
 \layout @{
@@ -649,7 +1245,7 @@ comme suit :
 @}
 @end example
 
-On peut alors saisir la musique, comme dans l'exemple plus haut :
+On peut alors saisir la musique, comme dans l'exemple plus haut :
 
 @example
 \relative c'' @{
@@ -664,64 +1260,147 @@ On peut alors saisir la musique, comme dans l'exemple plus haut :
 @end example
 
 
-@node Alignement des contextes
-@subsection Alignement des contextes
-@translationof Aligning contexts
+@node Ordonnancement des contextes
+@subsection Ordonnancement des contextes
+@translationof Context layout order
 
+@cindex contextes, ordonnancement
 
-Il est possible d'aligner verticalement chaque nouveau contexte,
-en-dessous ou au-dessus, par exemple dans le cas de musique vocale
-(@rlearning{Ensemble vocal}) ou d'@qq{ossias}.
+@funindex \accepts
+@funindex \denies
 
-@cindex ossia
-@findex alignAboveContext
-@findex alignBelowContext
+Les contextes viennent en principe se positionner selon leur ordre
+d'apparition dans le fichier source.  Lorsque plusieurs contextes sont
+imbriqués, le contexte englobant supportera les différents contextes
+mentionnés dans le fichier source, à la stricte condition qu'ils soient
+dûment @qq{agréés}.  Les contextes imbriqués qui ne font pas partie de
+la @qq{liste d'agréments} du contexte englobant se retrouveront en
+dessous de celui-ci au lieu d'y être imbriqués.
+
+La liste des @qq{agréments} d'un contexte se gère à l'aide des
+instructions @code{\accepts} et @code{\denies} -- @code{\accepts} pour
+ajouter un contexte à la liste, et @code{\denies} pour retirer
+l'agrément.  Il est par exemple peu conventionnel que les accords nommés
+apparaissent dans un contexte @code{Staff} ; autrement dit, le
+contexte @code{ChordNames} ne fait pas partie de la @qq{liste
+d'agréments} du contexte @code{Staff} par défaut.  Néanmoins, et s'il
+devait en être ainsi, vous pourriez le spécifier.
+
+@lilypond[verbatim,quote]
+\score {
+  \new Staff {
+    c' d' e' f'
+    \chords { d1:m7 b1:min7.5- }
+  }
+}
+@end lilypond
 
-@lilypond[quote,ragged-right]
-ossia = { f4 f f f }
-\score{
-  \relative c' \new Staff = "main" {
-    c4 c c c
-    <<
-      \new Staff \with { alignAboveContext = #"main" } \ossia
-      { d8 f d f d f d f }
-    >>
+@lilypond[verbatim,quote]
+\score {
+  \new Staff {
+    c' d' e' f'
+    \chords { d1:m7 b1:min7.5- }
+  }
+  \layout {
+    \context {
+      \Staff
+      \accepts "ChordNames"
+    }
   }
 }
 @end lilypond
 
+L'instruction @code{\denies} permet, lorsqu'un nouveau contexte reprend
+les définitions d'un contexte existant, d'en ajuster les composantes.
+C'est par exemple le cas du contexte @code{VaticanaStaff}, réplique du
+contexte @code{Staff} au sein duquel le contexte @code{VaticanaVoice} se
+substitue au contexte @code{Voice} dans la @qq{liste d'agrément}.
+
+Gardez à l'esprit que, face à une instruction qui ne s'appliquerait à
+aucun contexte déjà existant, LilyPond créera un nouveau contexte
+implicite.  Ceci peut engendrer une nouvelle portée ou une autre
+partition.
+
+@cindex alignAboveContext
+@cindex alignBelowContext
+@funindex alignAboveContext
+@funindex alignBelowContext
+
+Il arrive qu'un contexte ne doive exister que pendant un court instant,
+ce qui est le cas par exemple pour une @emph{ossia}.  Le plus simple
+consiste alors à initialiser la définition d'un contexte à l'endroit
+approprié, en parallèle avec le fragment correspondant dans la musique
+principale.  Ce contexte temporaire sera par défaut positionné sous les
+autres contextes existants.  Le repositionner au-dessus du contexte
+« principal » demande de le définir ainsi :
+
+@example
+@code{\new Staff \with @{ alignAboveContext = #"principal" @} }
+@end example
+
+Il en va de même pour les contextes temporaires de paroles au sein d'un
+système à plusieurs portées comme un @code{ChoirStaff} lorsque, par
+exemple, un couplet supplémentaire apparaît à l'occasion d'une
+reprise.  Ce contexte de paroles temporaire se place par défaut sous les
+portées inférieures.  Lui adjoindre une instruction
+@code{alignBelowContext} dès son initialisation permet de l'accoler au
+contexte de paroles (nommé) qui contient le premier couplet.
+
+Des exemples de repositionnement de contexte temporaire sont disponibles
+aux rubriques @rlearning{Expressions musicales imbriquées},
+@ref{Modification de portées individuelles} et
+@ref{Situations particulières en matière de paroles}.
+
+@seealso
+Manuel d'initiation :
+@rlearning{Expressions musicales imbriquées}.
+
+Manuel de notation :
+@ref{Modification de portées individuelles},
+@ref{Situations particulières en matière de paroles}.
+
+Manuel d'utilisation :
+@rprogram{Apparition d'une portée supplémentaire}.
+
+Fichiers d'initialisation :
+@file{ly/engraver-init.ly}.
+
 
 @node En quoi consiste la référence des propriétés internes
 @section En quoi consiste la référence des propriétés internes
 @translationof Explaining the Internals Reference
 
-
 @menu
-* Navigation dans la référence du programme::
+* Navigation dans les références du programme::
 * Interfaces de rendu::
 * Détermination de la propriété d'un objet graphique (grob)::
 * Conventions de nommage::
 @end menu
 
-@node Navigation dans la référence du programme
-@subsection Navigation dans la référence du programme
+
+@node Navigation dans les références du programme
+@subsection Navigation dans les références du programme
 @translationof Navigating the program reference
 
-Comment, par exemple, déplacer le doigté dans le fragment suivant ?
+@c TODO remove this (it's in the LM)
+@c Replace with more factual directions
 
-@lilypond[quote,fragment,relative=2,verbatim]
+Comment, par exemple, déplacer le doigté dans le fragment suivant ?
+
+@lilypond[quote,relative=2,verbatim]
 c-2
 \stemUp
 f
 @end lilypond
 
 Sur la page de la documentation relative aux doigtés, c'est-à-dire
-@ref{Doigtés}, se trouve l'indication suivante :
-
+@ref{Doigtés}, se trouve l'indication suivante :
 
-@seealso
-Référence du programme : @rinternals{Fingering}.
+@quotation
+@strong{Voir aussi}
 
+Référence des propriétés internes : @rinternals{Fingering}.
+@end quotation
 
 @c  outdated info; probably will delete.
 @ignore
@@ -761,10 +1440,10 @@ manual.
 @end ignore
 
 @ifnothtml
-Ladite référence est disponible au format HTML, ce qui rend la navigation bien
-plus aisée.  Il est possible soit de la lire en ligne, soit de la télécharger
-dans ce format.  La démarche présentée ici sera plus difficle à comprendre
-dans un document au format PDF.
+Ladite référence est disponible au format HTML, ce qui rend la
+navigation bien plus aisée.  Il est possible soit de la lire en ligne,
+soit de la télécharger dans ce format.  La démarche présentée ici sera
+plus difficile à comprendre dans un document au format PDF.
 @end ifnothtml
 
 Suivons le lien @rinternals{Fingering}.  En haut de la nouvelle page,
@@ -779,10 +1458,10 @@ En d'autres termes, @emph{Les indications de doigtés}
 (@code{Fingering} en anglais) @emph{sont créées par les graveurs
 @rinternals{Fingering_engraver} et @rinternals{New_fingering_engraver}.}
 
-En suivant derechef les liens propres à la référence du programme, on suit en fait
-le cheminement qui aboutit à la création de la partition :
+En suivant derechef les liens propres à la référence du programme, on
+suit en fait le cheminement qui aboutit à la création de la partition :
 
-@itemize @bullet
+@itemize
 
 @item @rinternals{Fingering}:
 @rinternals{Fingering} objects are created by:
@@ -796,31 +1475,31 @@ Music event type @code{fingering-event} is in Music expressions named
 @rinternals{FingeringEvent}
 @end itemize
 
-Ce cheminement se produit, bien sûr, en sens inverse : nous sommes ici partis
-du résultat, et avons abouti aux évènements (en anglais @q{Events}) engendrés
-par le fichier d'entrée.  L'inverse est également possible : on peut partir d'un
-évènement, et suivre le cheminement de LilyPond qui aboutit à la création d'un
-ou plusieurs objets graphiques.
+Ce cheminement se produit, bien sûr, en sens inverse : nous sommes
+ici partis du résultat, et avons abouti aux évènements (en anglais
+@emph{Events}) engendrés par le fichier d'entrée.  L'inverse est
+également possible : on peut partir d'un évènement, et suivre le
+cheminement de LilyPond qui aboutit à la création d'un ou plusieurs
+objets graphiques.
 
-La référence du programme peut également se parcourir comme un document normal.
-On y trouve des chapitres tels que
+La référence des propriétés internes peut également se parcourir comme
+un document normal. On y trouve des chapitres tels que
 @ifhtml
 @rinternals{Music definitions},
 @end ifhtml
 @ifnothtml
 @code{Music definitions}
 @end ifnothtml
-@rinternals{Translation}, ou encore @rinternals{Backend}.  Chaque chapitre
-recense toutes les définitions employées, et les propriétés sujettes à
-ajustements.
+@rinternals{Translation}, ou encore @rinternals{Backend}.  Chaque
+chapitre recense toutes les définitions employées, et les propriétés
+sujettes à ajustements.
 
 @c -- what about adding a link to the glossary here ? -vv
-@ignore
-La Référence du programme n'est pas traduite en français -- notamment du fait
-qu'elle est en évolution constante, tout comme LilyPond.  En revanche, les termes
-musicaux font l'objet d'un @commentfairelelien{glossaire} fort utile pour les utilisateurs
+La Référence des propriétés internes n'est pas traduite en français --
+notamment du fait qu'elle est en évolution constante, tout comme
+LilyPond.  En revanche, les termes musicaux font l'objet d'un
+@rglosnamed{Top, glossaire} fort utile pour les utilisateurs
 francophones.
-@end ignore
 
 
 @node Interfaces de rendu
@@ -831,15 +1510,16 @@ francophones.
 @cindex rendu, interfaces de
 @cindex objets graphiques
 
-Tous les éléments de notation sont considérés comme des objets graphiques
-(en anglais @q{Graphical Object}, d'où le diminutif @emph{Grob}).
-Chaque objet est doté d'un certain nombre de propriétés (l'épaisseur du trait,
-l'orientation, etc.), et lié à d'autres objets.
-Le fonctionnement de ces objets est décrit en détail dans @rinternals{grob-interface}.
+Tous les éléments de notation sont considérés comme des objets
+graphiques (en anglais @emph{Graphical Object}, d'où le diminutif
+@emph{Grob}).  Chaque objet est doté d'un certain nombre de propriétés
+(l'épaisseur du trait, l'orientation,  etc.), et lié à d'autres objets.
+Le fonctionnement de ces objets est décrit en détail dans
+@rinternals{grob-interface}.
 
-Prenons l'exemple des doigtés (en anglais @q{Fingering}).
-La page @code{Fingering} de la Référence du programme établit une liste de définitions
-propres à ce type d'objets :
+Prenons l'exemple des doigtés (en anglais @emph{Fingering}).  La page
+@code{Fingering} de la Référence des propriétés internes établit une
+liste de définitions propres à ce type d'objet :
 
 @quotation
 @code{padding} (dimension, in staff space):
@@ -848,37 +1528,42 @@ propres à ce type d'objets :
 @end quotation
 
 @noindent
-Ce qui signifie que les doigtés doivent être maintenus à une certaine distance (@emph{padding})
-des notes : 0,5 unités @emph{staff-space} (espace de portée).
-
+Ce qui signifie que les doigtés doivent être maintenus à une certaine
+distance (@emph{padding}) des notes : 0,5 unités @emph{staff-space}
+(espace de portée).
 
-Chaque objet peut avoir plusieurs attributs, en tant qu'élément typographique
-ou musical.  Ainsi, un doigté (objet @q{Fingering}) possède les attributs suivants :
+Chaque objet peut avoir plusieurs attributs, en tant qu'élément
+typographique ou musical.  Ainsi, un doigté (objet @emph{Fingering})
+possède les attributs suivants :
 
-
-@itemize @bullet
+@itemize
 @item
-Sa taille ne dépend pas de l'espacement horizontal, contrairement aux liaisons ou ligatures.
+Sa taille ne dépend pas de l'espacement horizontal, contrairement aux
+liaisons ou ligatures.
 
 @item
 C'est du texte -- un texte vraiment court, certes.
 
 @item
-Ce texte est imprimé au moyen d'une fonte, contrairement aux liaisons ou ligatures.
+Ce texte est imprimé au moyen d'une fonte, contrairement aux liaisons ou
+ligatures.
 
 @item
-Sur l'axe horizontal, le centre de ce symbole doit être aligné avec le centre de la note.
+Sur l'axe horizontal, le centre de ce symbole doit être aligné avec le
+centre de la note.
 
 @item
-Sur l'axe vertical, le symbole doit être proche de la note et de la portée.
+Sur l'axe vertical, le symbole doit être proche de la note et de la
+portée.
 
 @item
-Sur l'axe vertical encore, il doit également s'ordonner avec les éventuels
-autres symboles, ponctuations, ou éléments textuels.
+Sur l'axe vertical encore, il doit également s'ordonner avec les
+éventuels autres symboles, ponctuations ou éléments textuels.
 @end itemize
 
-Faire appliquer ces différents attributs est le rôle des @emph{interfaces},
-que l'on trouve en bas de la page @rinternals{Fingering}.
+Faire appliquer ces différents attributs est le rôle des
+@emph{interfaces}, que l'on trouve en bas de la page
+@rinternals{Fingering}.
 
 @quotation
 This object supports the following interfaces:
@@ -893,20 +1578,20 @@ This object supports the following interfaces:
 En français,
 
 @quotation
-Cet objet admet les interfaces suivantes :
+Cet objet admet les interfaces suivantes :
 @end quotation
 
-Suit la liste des interfaces en question, présentées comme autant de liens,
-qui conduisent sur les pages dédiées à chacune d'entre elles.
-Chaque interface est dotée d'un certain nombre de propriétés, dont certaines
-peuvent être modifiées, et d'autres non (les @q{Internal properties}, ou
-propriétés internes).
+Suit la liste des interfaces en question, présentées comme autant de
+liens qui conduisent aux pages dédiées à chacune d'entre elles.
+Chaque interface est dotée d'un certain nombre de propriétés, dont
+certaines peuvent être modifiées, et d'autres non (les @emph{Internal
+properties}, ou propriétés internes).
 
 Pour aller encore plus loin, plutôt que de simplement parler de l'objet
-@code{Fingering}, ce qui ne nous avance pas à grand chose, on peut aller explorer
-son âme même, dans les fichiers source de LilyPond (voir
-@rlearning{Autres sources de documentation}), en l'occurence le fichier
-@file{scm/@/define@/-grobs@/.scm} :
+@code{Fingering}, ce qui ne nous avance pas à grand chose, on peut aller
+explorer son âme même, dans les fichiers source de LilyPond (voir
+@rlearning{Autres sources de documentation}), en l'occurrence le fichier
+@file{scm/define-grobs.scm} :
 
 @example
 (Fingering
@@ -919,7 +1604,7 @@ son âme même, dans les fichiers source de LilyPond (voir
      (script-priority . 100)
      (stencil . ,ly:text-interface::print)
      (direction . ,ly:script-interface::calc-direction)
-     (font-encoding . fetaNumber)
+     (font-encoding . fetaText)
      (font-size . -5)          ; don't overlap when next to heads.
      (meta . ((class . Item)
      (interfaces . (finger-interface
@@ -932,28 +1617,33 @@ son âme même, dans les fichiers source de LilyPond (voir
 @end example
 
 @noindent
-@dots{}où l'on découvre que l'objet @code{Fingering} n'est rien de plus qu'un
-amas de variables et de réglages.  La page de la Référence du programme est
-en fait directement engendrée par cette définition.
+@dots{}où l'on découvre que l'objet @code{Fingering} n'est rien de plus
+qu'un amas de variables et de réglages.  La page de la Référence des
+propriétés internes est en fait directement engendrée par cette
+définition.
 
 
 @node Détermination de la propriété d'un objet graphique (grob)
 @subsection Détermination de la propriété d'un objet graphique (grob)
 @translationof Determining the grob property
 
+@c TODO remove this (it's in the LM)
+@c Replace with more factual directions
 
-Nous voulions changer la position du chiffre @b{2} dans le fragment suivant :
+Nous voulions changer la position du chiffre @b{2} dans le fragment
+suivant :
 
-@lilypond[quote,fragment,relative=2,verbatim]
+@lilypond[quote,relative=2,verbatim]
 c-2
 \stemUp
 f
 @end lilypond
 
-Dans la mesure où le @b{2} est placé, verticalement, à proximité de la note qui lui
-correspond, nous allons devoir trouver l'interface en charge de ce placement, qui se
-trouve être @code{side-position-interface}.  Sur la page de cette interface, on
-peut lire :
+Dans la mesure où le @b{2} est placé, verticalement, à proximité de la
+note qui lui correspond, nous allons devoir trouver l'interface en
+charge de ce placement, qui se trouve être
+@code{side-position-interface}.  Sur la page de cette interface, on peut
+lire :
 
 @quotation
 @code{side-position-interface}
@@ -969,13 +1659,14 @@ Ce qui signifie
 @code{side-position-interface}
 
 Placer l'objet affecté à proximité d'autres objets.  La propriété
-@code{direction} indique où placer l'objet (à droite ou à gauche,
+@code{direction} indique où positionner l'objet (à droite ou à gauche,
 en haut ou en bas).
 @end quotation
 
 @cindex padding
 @noindent
-En-dessous de cette description se trouve décrite la variable @code{padding} :
+En dessous de cette description se trouve décrite la variable
+@code{padding} :
 
 @quotation
 @table @code
@@ -994,27 +1685,29 @@ autres.
 @end quotation
 
 @noindent
-En augmentant la valeur de @code{padding}, on peut donc éloigner le doigté de la
-note.  La commande suivante insère trois unités d'espace vide entre la note et le doigté :
+En augmentant la valeur de @code{padding}, on peut donc éloigner le
+doigté de la note.  La commande suivante insère trois unités d'espace
+vide entre la note et le doigté :
 
 @example
 \once \override Voice.Fingering #'padding = #3
 @end example
 
-En ajoutant cette commande avant la création du doigté (de l'objet @q{Fingering}),
-donc avant @code{c2}, on obtient le résultat suivant :
+En ajoutant cette commande avant la création du doigté (de l'objet
+@code{Fingering}), donc avant @code{c2}, on obtient le résultat
+suivant :
 
-@lilypond[quote,relative=2,fragment,verbatim]
+@lilypond[quote,relative=2,verbatim]
 \once \override Voice.Fingering #'padding = #3
 c-2
 \stemUp
 f
 @end lilypond
 
-
 Dans le cas présent, le réglage intervient dans le contexte @code{Voice},
-ce qui pouvait également se déduire de la Référence du programme, où la page
-du graveur @rinternals{Fingering_engraver} indique :
+ce qui pouvait également se déduire de la Référence des propriétés
+internes, où la page du graveur @rinternals{Fingering_engraver}
+indique :
 
 @quotation
 Fingering_engraver is part of contexts: @dots{} @rinternals{Voice}
@@ -1023,7 +1716,8 @@ Fingering_engraver is part of contexts: @dots{} @rinternals{Voice}
 @noindent
 Ce qui signifie
 @quotation
-Le graveur Fingering_engraver fait partie des contextes : @dots{} @rinternals{Voice}
+Le graveur Fingering_engraver fait partie des contextes : @dots{}
+@rinternals{Voice}
 @end quotation
 
 
@@ -1031,7 +1725,35 @@ Le graveur Fingering_engraver fait partie des contextes : @dots{} @rinternals{Vo
 @subsection Conventions de nommage
 @translationof Naming conventions
 
-@untranslated
+Afin de s'y retrouver plus aisément et d'éviter les erreurs de frappe,
+voici quelques conventions en matière de nommage :
+
+@itemize
+@item fonctions scheme :
+ minuscule-avec-trait-d-union (y compris noms en mot-unique)
+@item fonctions scheme :
+ ly:plus-style-scheme
+@item événements, classes et propriétés musicaux :
+ identique-aux-fonctions-scheme
+@item interfaces d'objet graphique :
+ style-scheme
+@item propriétés d'arrière plan :
+ style-scheme (mais X et Y pour les axes)
+@item contextes (ainsi que MusicExpressions et grobs) :
+ Capitale initiale ou Camélisation (CamelCase)
+@item propriétés de contexte :
+ minusculeSuivieDeCamélisation
+@item graveurs :
+ Capitale_initiale_puis_minuscules_séparées_par_un_souligné
+@end itemize
+
+Les questions que vous devez vous poser sont :
+@itemize
+@item Qu'est-ce qui relève des conventions, et qu'est-ce qui relève de
+la règle ?
+@item Qu'est-ce qui relève des règles du langage sous-jacent, et
+qu'est-ce qui est propre à LilyPond ?
+@end itemize
 
 
 @node Modification de propriétés
@@ -1046,128 +1768,274 @@ Le graveur Fingering_engraver fait partie des contextes : @dots{} @rinternals{Vo
 @menu
 * Vue d'ensemble de la modification des propriétés::
 * La commande de fixation (set)::
-* La commande de dérogation (@emph{override})::
-* Élaboration d'une retouche::
-* La commande d'affinage (@emph{tweak})::
+* La commande de dérogation (override)::
+* La commande d'affinage (tweak)::
 * set ou override::
+* Modification de listes associatives::
 @end menu
 
+
 @node Vue d'ensemble de la modification des propriétés
 @subsection Vue d'ensemble de la modification des propriétés
 @translationof Overview of modifying properties
 
-@untranslated
+Chaque contexte est chargé de créer plusieurs types d'objets graphiques.
+Il contient également les réglages nécessaires pour chacun de ces
+objets.  Si l'on modifie ces réglages, les objets n'auront plus la même
+apparence.
+
+Les contextes comportent deux types différents de propriétés : des
+propriétés de contexte et des propriétés d'objet graphique.  Les
+propriétés de contexte sont celles qui s'appliqueront globalement au
+contexte en tant que tel ; elles gèrent la manière dont le contexte
+apparaîtra.  Les propriétés d'objet graphique, par contre, s'appliquent
+à des types particuliers d'objet qui apparaissent dans le contexte en
+question.
+
+Les commandes @code{\set} et @code{\unset} permettent de modifier les
+valeurs des propriétés de contexte.  Les commandes @code{\override} et
+@code{\revert} permettent de modifier les valeurs des propriétés des
+objets graphiques.
+
+@ignore
+La syntaxe employée pour ce faire est
+
+@example
+\override @var{contexte}.@var{objet} #'@var{propriété} = #@var{valeur}
+@end example
+
+Ici @var{objet} est un objet graphique, tel que @code{Stem} (les hampes)
+ou @code{NoteHead} (les têtes de note) ; @var{propriété} est une
+variable (désignée par un symbole, ce qui explique l'apostrophe)
+employée par le système de mise en page.  La sous-section
+@ref{Élaboration d'une retouche} vous aidera à savoir quoi mettre à la
+place de @var{objet}, @var{propriété} et @var{valeur} ; notre propos
+n'est ici que d'examiner l'emploi de cette commande.
+
+La commande suivante :
+
+@verbatim
+\override Staff.Stem #'thickness = #4.0
+@end verbatim
+
+@noindent
+rend les hampes plus épaisses (la valeur par défaut est 1.3, ce qui
+signifie qu'elles sont 1,3 fois plus épaisses que les lignes de la
+portée).  Dans la mesure où nous avons indiqué @code{Staff} comme
+contexte, ce réglage ne s'appliquera qu'à la portée courante ; les
+autres portées demeureront intactes.
+
+@lilypond[quote,verbatim,relative=2,fragment]
+c4
+\override Staff.Stem #'thickness = #4.0
+c4
+c4
+c4
+@end lilypond
+
+La commande @code{\override} modifie donc la définition de l'objet
+@code{Stem} dans le contexte @code{Staff} ; toutes les hampes qui
+suivent seront affectées.
+
+Tout comme avec la commande @code{\set}, l'argument @var{contexte} peut
+être omis, auquel cas le contexte par défaut (ici, @code{Voice}) sera
+employé.  La commande @code{\once} permet de n'appliquer la modification
+qu'une seule fois.
+
+@lilypond[quote,fragment,verbatim,relative=2]
+c4
+\once \override Stem #'thickness = #4.0
+c4
+c4
+@end lilypond
+
+La commande @code{\override} doit être entrée @emph{avant} l'objet
+concerné.  Ainsi, lorsque l'on veut altérer un objet qui se prolonge,
+tel qu'une liaison, une ligature ou tout autre objet dit @emph{Spanner},
+la commande @code{\override} doit être saisie avant que l'objet soit
+créé.
+
+@lilypond[quote,fragment,verbatim,relative=2]
+\override Slur #'thickness = #3.0
+c8[( c
+\override Beam #'beam-thickness = #0.6
+c8 c])
+@end lilypond
+
+@noindent
+Dans cet exemple, la liaison (@emph{Slur}) est épaissie, mais non la
+ligature (@emph{Beam}).  En effet, le code qui lui est relatif n'a pas
+été inséré avant le début de la ligature, et demeure donc sans effet.
+
+De même que la commande @code{\unset}, la commande @code{\revert} défait
+ce qui a été fait par une commande @code{\override}.  Tout comme avec
+@code{\unset}, elle ne peut annuler que les réglages effectués dans le
+même contexte.  Ainsi dans l'exemple suivant, la commande @code{\revert}
+est sans effet.
+
+@example
+\override Voice.Stem #'thickness = #4.0
+\revert Staff.Stem #'thickness
+@end example
+
+Il existe, à l'intérieur même de certaines propriétés, des options que
+l'on nomme @qq{sous-propriétés}.  La syntaxe est alors
+
+@c leave this as a long long
+@example
+\override @var{contexte}.@var{objet} #'@var{propriété} #'@var{sous-propriété} = #@var{valeur}
+@end example
+
+@noindent
+Ainsi, par exemple :
+
+@example
+\override Stem #'(details beamed-lengths) = #'(4 4 3)
+@end example
+
+@end ignore
+
+@seealso
+Référence des propriétés internes :
+@rinternals{Backend},
+@rinternals{All layout objects},
+@rinternals{OverrideProperty},
+@rinternals{RevertProperty},
+@rinternals{PropertySet}.
+
+@knownissues
+La sous-couche Scheme ne vérifie pas la saisie des propriétés de façon
+très stricte.  Des références cycliques dans des valeurs Scheme peuvent
+de ce fait interrompre ou faire planter le programme -- ou bien les
+deux.
 
 
 @node La commande de fixation (set)
-@subsection La commande @code{\set}
+@subsection La commande de fixation @code{@bs{}set}
 @translationof The set command
 
 @cindex propriétés
-@funindex \set
 @cindex modifier des propriétés
+@funindex \set
 
-Chaque contexte peut avoir plusieurs @emph{propriétés}, c'est-à-dire
-des variables qu'il inclut.  Ces dernières peuvent être modifiées @qq{à la volée},
-c'est-à-dire pendant que la compilation s'accomplit.  C'est là le rôle de la
-commande @code{\set}.
+Chaque contexte peut avoir plusieurs @strong{propriétés}, c'est-à-dire
+des variables qu'il inclut.  Ces dernières peuvent être modifiées @qq{à
+la volée}, c'est-à-dire pendant que la compilation s'accomplit.  C'est
+ici le rôle de la commande @code{\set}.
 
 @example
 \set @var{contexte}.@var{propriété} = #@var{valeur}
 @end example
 
-Ainsi :
-@lilypond[quote,verbatim,relative=2,fragment]
+Dans la mesure où @var{valeur} est constituée d'un objet Scheme, elle
+doit être précédée du caractère @code{#}.
+
+Les propriétés des contextes se libellent sous la forme
+@code{minusculeMajuscule}.  Leur rôle consiste principalement à traduire
+la musique en notation : par exemple, @code{localKeySignature}
+déterminera quand imprimer une altération accidentelle, et
+@code{measurePosition} quand imprimer une barre de mesure.  La valeur
+des propriétés des contextes peuvent évoluer au fur et à mesure que l'on
+avance dans le morceau -- @code{measurePosition} en est l'illustration
+parfaite.
+
+Ainsi la propriété de contexte @code{skipBars} permet de condenser les
+mesures vides de notes, en des silences multimesures.  Il s'agit d'un
+objet Scheme, auquel on attribue la valeur booléenne @qq{vrai},
+c'est-à-dire la lettre @code{#t} pour @qq{True} en anglais :
+
+@lilypond[quote,verbatim,relative=2]
 R1*2
 \set Score.skipBars = ##t
 R1*2
 @end lilypond
 
-Cette commande permet de condenser les mesures vides de notes, en des silences
-multi-mesures.  Il s'agit d'un objet Scheme, auquel on attribue la valeur booléenne
-@q{vrai}, c'est-à-dire la lettre @code{#t} pour @q{True} en anglais.
-
-Ce changement étant appliqué @q{à la volée}, il n'affecte que le second groupe de notes.
-
-Si l'argument @var{contexte} n'est pas spécifié, alors la propriété cherchera à s'appliquer
-dans le contexte le plus restreint où elle est employée : le plus souvent
- @code{ChordNames}, @code{Voice}, ou @code{Lyrics}.  Dans l'exemple suivant,
+Si l'argument @var{contexte} n'est pas spécifié, alors la propriété
+cherchera à s'appliquer dans le contexte le plus restreint où elle est
+employée : le plus souvent  @code{ChordNames}, @code{Voice} ou
+@code{Lyrics}.
 
-@lilypond[quote,verbatim,relative=2,fragment]
-c8 c c c
-\set autoBeaming = ##f
-c8 c c c
+@lilypond[quote,verbatim,relative=2]
+\set Score.autoBeaming = ##f
+<<
+  {
+    e8 e e e
+    \set autoBeaming = ##t
+    e8 e e e
+  } \\ {
+    c8 c c c c8 c c c
+  }
+>>
 @end lilypond
 
-@noindent
-aucun argument @var{contexte} n'a été donné à la commande @code{\set}.
-De ce fait, les ligatures automatiques sont désactivées dans le
-contexte actuel, c'est-à-dire @rinternals{Voice}.  Notez que le
-contexte le plus restreint n'est pas toujours le bon,
-et peut ne pas contenir la propriété qui vous intéresse : ainsi, la propriété
-@code{skipBars}, évoquée plus haut, ne relève pas du contexte @code{Voice},
-et le code suivant ne fonctionnera pas.
+Ce changement étant appliqué @qq{à la volée}, il n'affecte que le second
+groupe de notes.
 
-@lilypond[quote,verbatim,relative=2,fragment]
+Notez que le contexte le plus restreint n'est pas toujours le bon, et
+peut ne pas contenir la propriété qui vous intéresse : ainsi, la
+propriété @code{skipBars}, évoquée plus haut, ne relève pas du contexte
+@code{Voice}, mais du contexte @code{Score} -- le code suivant ne
+fonctionnera pas.
+
+@lilypond[quote,verbatim,relative=2]
 R1*2
 \set skipBars = ##t
 R1*2
 @end lilypond
 
-Les contextes s'organisent de façon hiérarchique : aussi, lorsqu'un contexte de niveau
-supérieur est spécifié (par exemple @code{Staff}), la propriété sera modifée dans
-tous les contextes inférieurs (tous les contextes @code{Voice}, par exemple)
-qu'il contient.
+Les contextes s'organisent de façon hiérarchique : aussi, lorsqu'un
+contexte de niveau supérieur est spécifié (par exemple @code{Staff}), la
+propriété sera modifiée dans tous les contextes inférieurs (tous les
+contextes @code{Voice}, par exemple) qu'il contient.
 
 @funindex \unset
 
-La commande @code{\unset} permet d'annuler la définition d'une propriété :
+La commande @code{\unset} permet d'annuler la définition d'une
+propriété :
 
 @example
 \unset @var{contexte}.@var{propriété}
 @end example
 
 @noindent
-si et seulement si cette propriété à été définie dans ce @var{contexte}
-précis ; ainsi,
-
-@example
-\set Staff.autoBeaming = ##f
-@end example
-
-@noindent
-même s'il s'applique à tous les contextes @code{Voice} contenus dans le
-contexte @code{Staff}, ne peut être annulé au niveau @code{Voice}.  Le code
-suivant sera sans effet.
+si et seulement si cette @var{propriété} a été définie dans ce
+@var{contexte} précis.  En d'autres termes, la commande @code{\unset}
+doit impérativement affecter le même contexte que la commande
+@code{\set} d'origine, même en cas d'imbrication.
 
-@example
-\unset Voice.autoBeaming
-@end example
-
-@noindent
-En d'autres termes, la commande @code{\unset} doit impérativement être
-accompagnée du même contexte que la commande @code{\set} d'origine.
-Pour annuler l'effet, dans notre exemple, de @code{Staff.autoBeaming = ##f},
-il faut donc entrer :
-@example
-\unset Staff.autoBeaming
-@end example
-
-Si l'on se trouve dans le contexte le plus restreint, il n'est pas obligatoire,
-là encore, de spécifier le @var{contexte}.  Ainsi, les deux lignes suivantes sont équivalentes.
+@lilypond[quote,verbatim,relative=2]
+\set Score.autoBeaming = ##t
+<<
+  {
+    \unset autoBeaming
+    e8 e e e
+    \unset Score.autoBeaming
+    e8 e e e
+  } \\ {
+    c8 c c c c8 c c c
+  }
+>>
+@end lilypond
 
+Si l'on se trouve dans le contexte le plus restreint, il n'est pas
+obligatoire, là encore, de spécifier le @var{contexte}.  Ainsi, les deux
+lignes suivantes
 
 @example
 \set Voice.autoBeaming = ##t
 \set autoBeaming = ##t
 @end example
 
+@noindent
+sont équivalentes elles apparaissent dans un contexte @code{Voice}.
 
 @cindex \once
-Pour modifier une propriété de façon à ce qu'elle ne s'applique qu'une seule fois,
-il convient d'employer la commande @code{\once} :
 
-@lilypond[quote,verbatim,relative=2,fragment]
+Pour modifier une propriété de façon à ce que l'accommodement ne
+s'applique qu'une seule fois, il convient d'adjoindre l'instruction
+@code{\once} à la commande @code{\set} :
+
+@lilypond[quote,verbatim,relative=2]
 c4
 \once \set fontSize = #4.7
 c4
@@ -1176,8 +2044,8 @@ c4
 
 Ici le changement de taille est annulé aussitôt après la note concernée.
 
-La référence du programme contient une description exhaustive de toutes les
-propriétés contexte par contexte : voir
+La référence des propriétés internes contient une description exhaustive
+de toutes les propriétés, contexte par contexte : voir
 @ifhtml
 @rinternals{Tunable context properties}.
 @end ifhtml
@@ -1186,28 +2054,138 @@ Translation @expansion{} Tunable context properties.
 @end ifnothtml
 
 
-@node La commande de dérogation (@emph{override})
-@subsection La commande @code{\override}
+@seealso
+Référence des propriétés internes :
+@rinternals{Tunable context properties}.
+
+
+@node La commande de dérogation (override)
+@subsection La commande de dérogation @code{@bs{}override}
 @translationof The override command
 
+@cindex grob, propriétés
+@cindex objet graphique, propriétés
+@cindex propriétés d'un grob
+@cindex propriétés d'objet graphique
+
+@funindex \override
+
+La commande @code{\override} permet de modifier la mise en forme des
+objets graphiques.  Les descriptions d'objet graphique, dont les noms
+commencent par une majuscule, puis comprennent une ou plusieurs
+majuscules (de style @code{TotoTata}), contiennent les réglages @qq{par
+défaut} pour les objets graphiques.  Ces réglages sont sous forme de
+liste Scheme ; on peut les consulter dans le fichier
+@file{scm/define-grobs.scm}.
 
-La commande @code{\override} permet de modifier la mise en page
-en détail.  Examinons son utilisation concrètementet dans les détails.
-La syntaxe de cette commande ressemble généralement à :
+@code{\override} est en fait un raccourci :
 
 @example
-\override @var{contexte}.@var{objet} #'@var{propriété} = #@var{valeur}
+\override @var{contexte}.@var{NomObjet} #'@var{propriété} = #@var{valeur}
+@end example
+
+@noindent
+plus ou moins équivalent à
+
+@c  leave this long line -gp
+@example
+\set @var{contexte}.@var{NomObjet}  =
+  #(cons (cons '@var{propriété} @var{valeur})
+         <valeur antérieure de @var{contexte}.@var{NomObjet}>)
 @end example
 
-La propriété @var{propriété} de l'objet @var{objet}, appartenant au contexte
-@var{contexte}, se voit ainsi attribuer la valeur @var{valeur}.
+La valeur de @var{contexte}.@var{NomObjet} (une liste associative, ou
+@emph{alist}) permet d'initialiser les propriétés des objets un par un.
+Les objets eux-mêmes ont leurs propriétés, dont les noms, dans la
+tradition du langage Scheme, comprennent un trait d'union
+(@code{toto-titi}).  Ces propriétés internes changent constamment au
+cours de la mise en page : en fait, la gravure d'une page n'est autre
+que le calcul de toutes ces propriétés au moyen de fonctions de rappel.
+
+Nous pouvons donc par exemple accroître l'épaisseur des hampes en jouant
+sur la propriété @code{thickness} de l'objet @code{stem} :
+
+@lilypond[quote,verbatim,relative=2]
+c4 c
+\override Voice.Stem #'thickness = #3.0
+c4 c
+@end lilypond
+
+Lorsqu'aucun contexte n'est spécifié dans une clause @code{\override},
+celle-ci s'appliquera au contexte le plus bas :
+
+@lilypond[quote,verbatim,relative=2]
+{ \override Staff.Stem #'thickness = #3.0
+  <<
+    {
+      e4 e
+      \override Stem #'thickness = #0.5
+      e4 e
+    } \\ {
+      c4 c c c
+    }
+  >>
+}
+@end lilypond
+
+@cindex annulation d'un override
+@cindex override, annulation des effets
+@funindex \revert
+
+Les effets d'un @code{\override} prennent fin à l'aide de l'instruction
+@code{\revert} :
+
+@lilypond[quote,verbatim,relative=2]
+c4
+\override Voice.Stem #'thickness = #3.0
+c4 c
+\revert Voice.Stem #'thickness
+c4
+@end lilypond
 
+Les effets d'un @code{\override} ou d'un @code{\revert} s'appliquent dès
+l'endroit où ils apparaissent, et à tous les objets dans le contexte
+mentionné :
+
+@lilypond[quote,verbatim,relative=2]
+{
+  <<
+    {
+      e4
+      \override Staff.Stem #'thickness = #3.0
+      e4 e e
+    } \\ {
+      c4 c c
+      \revert Staff.Stem #'thickness
+      c4
+    }
+  >>
+}
+@end lilypond
 
-@c deprecated node. Delete. --fv
-@node Élaboration d'une retouche
-@subsection Élaboration d'une retouche
-@translationof Constructing a tweak
+@cindex override ponctuel
+@funindex \once
+
+L'instruction @code{\override} doit être précédée d'un @code{\once} dès
+lors que les effets de l'accommodement ne concernent que l'événement qui
+la suit directement :
+
+@lilypond[quote,verbatim,relative=2]
+{
+  <<
+    {
+      \override Stem #'thickness = #3.0
+      e4 e e e
+    } \\ {
+      c4
+      \once \override Stem #'thickness = #3.0
+      c4 c c
+    }
+  >>
+}
+@end lilypond
 
+@ignore
 Les commandes permettant de modifier l'apparence de la partition
 ressemblent en général à
 
@@ -1216,17 +2194,19 @@ ressemblent en général à
 @end example
 
 @noindent
-Pour élaborer un réglage de ce type, on a besoin de connaître précisément :
+Pour élaborer un réglage de ce type, on a besoin de connaître
+précisément :
 
 @itemize
-@item le contexte : ici @code{Voice} (la voix).
-@item l'objet à affecter : ici @code{Stem} (les hampes).
-@item la propriété à modifier : ici @code{thickness} (l'épaisseur du trait).
-@item la valeur désirée : ici @code{3.0} (par défaut, elle est de 1.3).
+@item le contexte : ici @code{Voice} (la voix).
+@item l'objet à affecter : ici @code{Stem} (les hampes).
+@item la propriété à modifier : ici @code{thickness} (l'épaisseur
+du trait).
+@item la valeur désirée : ici @code{3.0} (par défaut, elle est de 1.3).
 @end itemize
 
-Certaines @q{sous-propriétés} sont parfois contenues dans une propriété.
-La commande devient alors :
+Certaines @qq{sous-propriétés} sont parfois contenues dans une
+propriété.  La commande devient alors :
 
 @example
 \override Stem #'(details beamed-lengths) = #'(4 4 3)
@@ -1239,183 +2219,1016 @@ La commande devient alors :
 @funindex \override
 
 Pour bien des propriétés, quel que soit le type de valeur requise,
-attribuer la valeur @q{faux} (@code{##f} en Scheme) reviendra à désactiver
-complètement l'action de la propriété qui se trouve ainsi purement
-ignorée par LilyPond.  Cela peut s'avérer fort utile pour des propriétés
-causant des désagréments.
+attribuer la valeur @qq{faux} (@code{##f} en Scheme) reviendra à
+désactiver complètement l'action de la propriété qui se trouve ainsi
+purement ignorée par LilyPond.  Cela peut s'avérer fort utile pour des
+propriétés causant des désagréments.
 
-@c such announcements are to be avoided -vv
-@ignore
-We demonstrate how to glean this information from the notation manual
-and the program reference.
 @end ignore
 
+@seealso
+Référence des propriétés internes :
+@rinternals{Backend}
+
 
-@node La commande d'affinage (@emph{tweak})
-@subsection La commande @code{\tweak}
+@node La commande d'affinage (tweak)
+@subsection La commande d'affinage @code{@bs{}tweak}
 @translationof The tweak command
 
-
+@cindex retouche (tweak)
+@cindex affinage (tweak)
+@cindex ajustement (tweak)
+@cindex tweak (retouche, affinage)
 @funindex \tweak
 
+L'utilisation d'un @code{\override} pour modifier les propriétés d'un
+objet graphique affectera toutes les instances de l'objet en question au
+sein du contexte, et ce dès son apparition.  Il peut parfois être
+préférable de n'affecter qu'un seul objet en particulier plutôt que tous
+les objets du contexte.  C'est là rôle de l'instruction @code{\tweak},
+dont la syntaxe est :
+
+@example
+\tweak @var{objet-de-rendu} #'@code{objet-propriété} @code{valeur}
+@end example
+
+Mention de l'@var{objet-de-rendu} est optionnel.
+La commande @code{\tweak} s'applique à l'objet qui apparaît
+immédiatement après @code{valeur}.
+
+@ignore
 Dans certains cas, on peut passer par un raccourci pour arranger les
-objets graphiques.  Lorsqu'un objet est directement engendré par un élément distinct
-du fichier source, on peut utiliser la commande @code{\tweak}.
+objets graphiques.  Lorsqu'un objet est directement engendré par un
+élément distinct du fichier source, on peut utiliser la commande
+@code{\tweak}.
 
-Dans l'accord suivant, les notes sont modifiées une par une :
+Dans l'accord suivant, les notes sont modifiées une par une :
 
-@lilypond[relative=2,fragment,verbatim,ragged-right]
+@lilypond[relative=2,verbatim,ragged-right]
 <
   c
-  \tweak #'color #red d
+  \tweak #'color #red
+  d
   g
-  \tweak #'duration-log #1  a
->4-\tweak #'padding #10 -.
+  \tweak #'duration-log #1 
+   a
+>4
+-\tweak #'padding #8
+-^
 @end lilypond
 
 Comme on peut le voir, les propriétés sont ici modifiées directement
-en même temps que les objets sont saisis.  Il n'est plus besoin de spécifier ni
-le nom de l'objet (@emph{grob}), ni le contexte dans lequel cela doit s'appliquer.
+en même temps que les objets sont saisis.  Il n'est plus besoin de
+spécifier ni le nom de l'objet (@emph{grob}), ni le contexte dans lequel
+cela doit s'appliquer.  Ce procédé ne marche que pour des objets
+directement liés aux événements (@rinternals{Event}) du fichier source.
+Par exemple :
 
-Ce procédé ne marche que pour des objets directement liés aux évènements
-(@rinternals{Event}) du fichier source.  Par exemple :
+@itemize
+@item Les têtes de notes au sein d'un accord, qui sont directement
+engendrées par les hauteurs indiquées
 
-@itemize @bullet
-@item Les têtes de notes au sein d'un accord, qui sont directement engendrées par
-les hauteurs indiquées
-@item Les signes d'articulation, engendrés par les indications de ponctuation.
+@item Les signes d'articulation, engendrés par les indications de
+ponctuation.
 @end itemize
 
-En revanche, les hampes ou les altérations sont engendrées par les têtes de notes,
-et non par des évènements dans le fichier source.  De même pour les clés, qui ne
-sont pas directement engendrées par le fichier source, mais plutôt par le
-changement d'une propriété interne.
+En revanche, les hampes ou les altérations sont engendrées par les têtes
+de notes, et non par des évènements dans le fichier source.  De même
+pour les clés, qui ne sont pas directement engendrées par le fichier
+source, mais plutôt par le changement d'une propriété interne.
 
-En fait, très peu d'objets passent @emph{directement} du code source à la partition.
-Une note toute simple, par exemple @code{c4}, fait l'objet d'un traitement et n'est donc
-pas directement rendue ; c'est pourquoi le code suivant ne sera d'aucun effet :
+En fait, très peu d'objets passent @emph{directement} du code source à
+la partition. Une note toute simple, par exemple @code{c4}, fait l'objet
+d'un traitement et n'est donc pas directement rendue ; c'est
+pourquoi le code suivant ne sera d'aucun effet :
 
 @example
 \tweak #'color #red c4
 @end example
 
 @noindent
-Voir pour plus de détails @ref{Affichage d'expressions musicales}.
+Voir pour plus de détails
+@rextend{Affichage d'expressions musicales}.
+@end ignore
+
+Pour une introduction à la syntaxe et l'utilisation des retouches, voir
+le chapitre @rlearning{Méthodes de retouche}.
+
+Lorsque plusieurs éléments de même nature surviennent au même instant,
+il devient impossible d'utiliser l'instruction @code{\override} pour
+n'en modifier qu'un seul individuellement, d'où l'intérêt de la commande
+@code{\tweak}.  Entre autres éléments qui sont susceptibles de se
+produire au même instant, nous citerons :
+
+@c TODO expand to include any further uses of \tweak
+@itemize
+@item les têtes de notes au sein d'un accord,
+@item les signes d'articulation,
+@item les liaisons de prolongation sur des notes d'un accord,
+@item les crochets de nolets démarrant au même instant
+@end itemize
+
+@c TODO add examples of these
+
+Dans l'exemple suivant, l'une des têtes de note de l'accord est
+colorisée, et l'aspect d'une autre est changé.
+
+@lilypond[relative=2,verbatim,quote]
+< c
+  \tweak #'color #red
+  d
+  g
+  \tweak #'duration-log #1
+  a
+> 4
+@end lilypond
+
+L'instruction @code{\tweak} permet aussi de modifier l'aspect d'une
+liaison :
+
+@lilypond[verbatim,quote,relative=1]
+c-\tweak #'thickness #5 ( d e f)
+@end lilypond
+
+La commande @code{\tweak} ne sera pleinement fonctionnelle que si elle
+est directement rattachée à l'objet auquel elle doit s'appliquer alors
+que le fichier source est converti en flux musical.  Vouloir modifier la
+globalité d'un accord est sans résultat dans la mesure où il ne
+constitue qu'un conteneur pour des événements musicaux et que tous les
+objets seront créés à partir d'événements appartenant à un
+@code{EventChord} (un événement d'accord) :
+
+@lilypond[relative=2,verbatim,quote]
+\tweak #'color #red c4
+\tweak #'color #red <c e>4
+<\tweak #'color #red c>4
+@end lilypond
+
+La commande @code{\tweak} simple ne saurait servir à modifier un élément
+qui ne serait pas explicitement mentionné dans le fichier source.  C'est
+notamment le cas des hampes, ligatures automatiques ou altérations, dans
+la mesure où elles seront ultérieurement générées et après les têtes de
+note (objets @code{NoteHead}, plutôt qu'au fil des éléments musicaux
+saisis.
+
+De tels objets créés indirectement peuvent être ajustés que par une
+forme dévelppée de la commande @code{\tweak} :
+
+@lilypond[relative=2,verbatim,quote]
+\tweak Stem #'color #red
+\tweak Beam #'color #green c8 e
+<c e \tweak Accidental #'font-size #-3 ges>4
+@end lilypond
+
+La commande @code{\tweak} ne peut non plus servir à modifier clefs ou
+métriques, puisqu'elles seront immanquablement séparées du @code{\tweak}
+par l'insertion automatique d'autres éléments requis pour spécifier le
+contexte.
+
+Plusieurs commandes @code{\tweak} en enfilade permettent d'affecter un
+même élément de notation :
+
+@lilypond[verbatim,quote,relative=1]
+c
+-\tweak #'style #'dashed-line
+-\tweak #'dash-fraction #0.2
+-\tweak #'thickness #3
+-\tweak #'color #red
+ \glissando
+f'
+@end lilypond
+
+Vous pouvez examiner le flux musical généré par une portion d'un
+fichier source, y compris les éléments automatiquement insérés, en
+suivant les indications portées à la rubrique
+@rextend{Affichage d'expressions musicales}.  Ceci s'avère tout à fait
+approprié pour déterminer ce qui peut se modifier à l'aide d'un
+@code{\tweak} ou bien aider à rectifier votre source de telle sorte
+que le @code{\tweak} produise ses effets.
+
+@seealso
+Manuel d'initiation :
+@rlearning{Méthodes de retouche}.
+
+Manuel d'extension :
+@rextend{Affichage d'expressions musicales}.
+
+@knownissues
+
+@cindex tweak et points de contrôle
+@cindex points de contrôle et tweak
+
+Lorsqu'il y a plusieurs liaisons de prolongation dans un accord, la
+commande @code{\tweak} ne permet de modifier les points de contrôle que
+pour la première rencontrée dans le fichier source.
 
 
 @node set ou override
 @subsection @code{\set} ou @code{\override}
 @translationof set versus override
 
+@c TODO -- This section is probably unnecessary now.
 
-Si les propriétés peuvent être modifiées de deux façons, par les commandes
-@code{\set} et @code{\override}, c'est qu'il y a deux types de propriétés.
+@ignore
+Si les propriétés peuvent être modifiées de deux façons, par les
+commandes @code{\set} et @code{\override}, c'est qu'il y a deux types de
+propriétés.
 
-Les contextes peuvent avoir des propriétés, dont les noms commencent par une
-minuscule puis comprennent une ou plusieurs majuscules (de style
-@code{totoTutu}).  Elles ont surtout trait
-à la notation des éléments musicaux : par exemple, @code{localKeySignature} permet
-de choisir s'il faut ou non imprimer une altération, ou @code{measurePosition} permet
-de choisir quand il faut imprimer une barre de mesure.  Ces propriétés de contextes
-sont appelées à changer au long de l'interprétation de la partition :
-@code{measurePosition} en est un exemple évident.  Ces propriétés doivent
-être modifiées avec la commande @code{\set}.
+La propriété @code{fontSize} est une exception : c'est un raccourci, qui
+équivaudrait à saisir @w{@code{\override @dots{} #'font-size}} pour tous
+les objets textuels.  Dans la mesure où il s'agit d'une manipulation
+très courante, une propriété spéciale a été créée.  Elle doit être
+modifiée avec la commande @code{\set}.
 
-Il existe un type particulier de propriétés : les descriptions
-d'éléments.  Ces propriétés, dont les noms commencent par une majuscule, puis comprennent
-une ou plusieurs majuscules (de style @code{TotoTata}), contiennent les réglages
-@q{par défaut} pour les objets graphiques.  Ces réglages sont sous forme de liste Scheme ; on
-peut les consulter dans le fichier @file{scm/@/define@/-grobs@/.scm}.
-Les descriptions d'éléments doivent être modifiées avec la commande @code{\override}.
+@end ignore
+
+
+@node Modification de listes associatives
+@subsection Modification de listes associatives
+@translationof Modifying alists
 
-@code{\override} est en fait un raccourci :
+Certaines propriétés configurables par l'utilisateur se présentent en
+interne comme étant des listes associatives -- les puristes diront des
+@emph{alists}.  Une @emph{alist} est en fait constituée de plusieurs
+paires de @emph{clés} et @emph{valeurs} ; sa structure ressemble à :
 
 @example
-\override @var{contexte}.@var{objet} #'@var{propriété} = #@var{valeur}
+'((@var{clé1} . @var{valeur1})
+  (@var{clé2} . @var{valeur2})
+  (@var{clé3} . @var{valeur3})
+  @dots{})
 @end example
 
-@noindent
-est plus ou moins l'équivalent de
+Dans le cas où cette liste représente les propriétés d'un objet
+graphique ou bien l'une des variables du bloc @code{\paper}, chaque clé
+peut être modifiée individuellement sans que cela n'affecte les autres.
+
+Par exemple, pour réduire l'espacement entre deux portées adjacentes
+d'un même système, on utilisera la propriété @code{staff-staff-spacing}
+qui est attachée à l'objet graphique @code{StaffGrouper}.  Cette
+propriété est constituée d'une liste de quatre clés :
+@code{basic-distance}, @code{minimum-distance}, @code{padding} et
+@code{stretchability}.  Ses réglages par défaut tels que mentionnés à la
+rubrique @emph{Backend} de la référence des propriétés internes -- voir
+@rinternals{StaffGrouper} -- sont :
 
-@c  leave this long line -gp
 @example
-\set @var{contexte}.@var{objet} #'@var{propriété} = #(cons (cons '@var{propriété} @var{valeur}) <valeur précédente de @var{contexte})
+'((basic-distance . 9)
+  (minimum-distance . 7)
+  (padding . 1)
+  (stretchability . 5))
 @end example
 
-La valeur de @code{context} (la liste Scheme, ou @q{alist}) sert à initialiser
-les propriétés des objets un par un.  Les objets eux-même ont leurs propriétés,
-dont les noms, dans la tradition du langage Scheme, comprennent un trait d'union
-(@code{toto-titi}).  Ces propriétés internes changent constamment au cours de la mise
-en page : en fait, la gravure d'une page n'est autre que le calcul de toutes
-ces propriétés, au moyen de fonctions de rappel.
+Afin de rapprocher nos deux portées, il suffit de réduire la valeur
+(@code{9}) de la clé @code{basic-distance} au niveau de celle de la clé
+@code{minimum-distance} (@code{7}).  La modification d'une seule clé
+individuellement peut se réaliser sous la forme d'une @emph{déclaration
+imbriquée} :
+
+@lilypond[quote,verbatim]
+% default space between staves
+\new PianoStaff <<
+  \new Staff { \clef treble c''1 }
+  \new Staff { \clef bass   c1   }
+>>
 
-La propriété @code{fontSize} est une exception : c'est un raccourci, qui équivaudrait
-à saisir @code{\override @dots{} #'font-size} pour tous les objets
-textuels.  Dans la mesure où il s'agit d'une manipulation très
-courante, une propriété spéciale a été créée.  Elle doit
-être modifiée avec la commande @code{\set}.
+% reduced space between staves
+\new PianoStaff \with {
+  % this is the nested declaration
+  \override StaffGrouper #'staff-staff-spacing #'basic-distance = #7
+} <<
+  \new Staff { \clef treble c''1 }
+  \new Staff { \clef bass   c1   }
+>>
+@end lilypond
 
+Le recours à une déclaration imbriquée touchera la clé indiquée
+(@code{basic-distance} dans l'exemple ci-dessus) sans pour autant
+modifier les autres clés de la propriété considérée.
+
+Considérons maintenant que nous souhaitions que les portées soient le
+plus proche possible les unes des autres, à la limite du chevauchement.
+Il suffirait de mettre les quatre clés à zéro.  Nous pourrions saisir
+quatre déclarations, chacune d'elles touchant une clé.  Nous pouvons
+tout aussi bien redéfinir la propriété en une seule clause, sous la
+forme d'une liste associative :
+
+@lilypond[quote,verbatim]
+\new PianoStaff \with {
+  \override StaffGrouper #'staff-staff-spacing =
+    #'((basic-distance . 0)
+       (minimum-distance . 0)
+       (padding . 0)
+       (stretchability . 0))
+} <<
+  \new Staff { \clef treble c''1 }
+  \new Staff { \clef bass   c1   }
+>>
+@end lilypond
+
+N'oubliez pas que dès lors qu'une clé n'apparaît pas dans la liste, elle
+retourne à sa valeur @emph{sauf-mention-contraire}.  Autrement dit, dans
+le cas de @code{staff-staff-spacing} qui nous occupe, toutes les clés
+non mentionnées seront ramenées à zéro -- à l'exception de
+@code{stretchability} qui prend par défaut la valeur de
+@code{basic-distance}.  Les deux assertions suivantes sont donc
+équivalentes.
+
+@example
+\override StaffGrouper #'staff-staff-spacing =
+  #'((basic-distance . 7))
+
+\override StaffGrouper #'staff-staff-spacing =
+  #'((basic-distance . 7)
+     (minimum-distance . 0)
+     (padding . 0)
+     (stretchability . 7))
+@end example
+
+L'une des conséquences, parfois involontaire, de ceci est la suppression
+de réglages standards effectués par un fichier d'initialisation chargé à
+chaque compilation d'un fichier source.  Dans l'exemple précédent, les
+réglages standards de @code{padding} et @code{minimum-distance}, tels
+que déterminés par @file{scm/define-grobs.scm}, se voient ramenés à leur
+valeur @emph{si-non-définie} ; autrement dit, les deux clés sont mises à
+zéro.  La définition d'une propriété ou d'une variable sous forme de
+liste associative, quelle qu'en soit la taille, réinitialisera toujours
+les clés non mentionnées à leur valeur @emph{si-non-définie}.  Si telle
+n'est pas votre intention, nous vous recommandons alors de régler la
+valeur des clés individuellement par des déclarations imbriquées.
+
+@warning{Les déclarations imbriquées ne sont pas fonctionnelles dans le
+cas des listes associatives des propriétés de contexte -- telles
+@code{beamExceptions}, @code{keySignature},
+@code{timeSignatureSettings}, etc.  Ces propriétés ne sont modifiables
+qu'au travers d'une complète redéfinition de leur liste associative.}
 
 
 @node Propriétés et contextes utiles
 @section Propriétés et contextes utiles
 @translationof Useful concepts and properties
 
-
 @menu
 * Modes de saisie::
 * Direction et positionnement::
 * Distances et unités de mesure::
-* Propriétés des lignes de portée::
+* Propriétés des symboles de la portée::
 * Extenseurs et prolongateurs::
 * Visibilité des objets::
 * Styles de ligne::
 * Rotation des objets::
 @end menu
 
+
 @node Modes de saisie
 @subsection Modes de saisie
 @translationof Input modes
 
-@untranslated
+La manière dont sera interprétée la notation contenue dans un fichier
+source dépend du mode affecté à la saisie.
+
+@strong{Mode accords}
+
+Ce mode, activé par la commande @code{\chordmode}, permet d'interpréter
+les saisies comme étant des accords, qui seront imprimés sous forme
+de notes sur une portée -- voir @ref{Notation des accords}.
+
+Le mode accords s'active aussi par la commande @code{\chords}, qui
+créera un contexte @code{ChordNames}.  Les saisies, interprétées comme
+étant des accords, seront alors rendues sous forme nominale dans ce
+contexte @code{ChordNames} -- voir @ref{Impression des noms d'accord}.
+
+@strong{Mode percussions}
+
+Ce mode, activé par la commande @code{\drummode}, permet d'interpréter
+les saisies comme étant de la notation pour percussions -- voir
+@ref{Notation de base pour percussions}.
+
+Le mode percussions s'active aussi par la commande @code{\drums}, qui
+créera un contexte @code{DrumStaff}.  Les saisies, interprétées comme
+étant de la notation pour percussions, seront alors rendues sous
+forme symbolique sur une portée de percussions -- voir
+@ref{Notation de base pour percussions}.
+
+@strong{Mode figures}
+
+Ce mode, activé par la commande @code{\figuremode}, permet d'interpréter
+les saisies comme étant de la basse chiffrée (ou figurée) -- voir
+@ref{Saisie de la basse chiffrée}.
+
+Le mode figures s'active aussi par la commande @code{\figures}, qui
+créera un contexte @code{FiguredBass}.  Les saisies interprétées comme
+étant de la basse chiffrée, seront alors rendues sous forme symbolique
+dans le contexte @code{FiguredBass} -- voir
+@ref{Introduction à la basse chiffrée}.
+
+@strong{Mode frets et tablatures}
+
+Il n'existe pas de mode spécifique pour saisir des symboles de fret ou
+de tablature.
+
+Notes ou accords saisis en mode note puis affectés à un contexte
+@code{TabStaff} seront rendus sous forme de diagramme de tablature --
+voir @ref{Tablatures par défaut}.
+
+Deux options différentes permettent d'obtenir des diagrammes de fret en
+surplomb d'une portée : directement à l'aide d'un contexte
+@code{FretBoards} -- voir @ref{Tablatures automatiques} -- ou en
+attachant aux notes des @emph{markups} créés par la commande
+@code{\fret-diagram} -- voir @ref{Tablatures sous forme d'étiquette}.
+
+@strong{Mode paroles}
+
+Ce mode, activé par la commande @code{\lyricmode}, permet d'interpréter
+les saisies comme étant des syllabes, ayant éventuellement une durée, et
+des indications habituelles aux paroles -- voir @ref{Musique vocale}.
+
+Le mode paroles s'active aussi par la commande @code{\addlyrics}, qui
+créera un contexte @code{Lyrics} et ajoutera implicitement une commande
+@code{\lyricsto} afin d'associer les paroles qui suivent à la musique
+précédemment saisie.
+
+@strong{Mode @emph{markup}}
+
+Ce mode, activé par la commande @code{\markup}, permet d'interpréter les
+saisies comme étant des @emph{markups} (annotations ou étiquettes) --
+voir @rusernamed{Text markup commands,Commandes pour le mode markup}.
+
+
+@c silly work-around for texinfo broken-ness
+@c (@strong{Note...} causes a spurious cross-reference in Info)
+@b{Mode notes}
+
+Le mode notes est le mode par défaut dans LilyPond.  Il peut aussi
+s'activer par la commande @code{\notemode}.  Les saisies seront
+interprétées comme étant des hauteurs, durées, @emph{markups}, etc. qui
+seront rendues sous forme de notation musicale sur une portée.
+
+Nul n'est besoin de spécifier le mode notes de manière explicite, hormis
+dans certaines situations particulières, notamment lorsque vous êtes en
+mode paroles, accords, ou tout autre mode, et que vous deviez insérer
+un élément qui ne serait disponible que grâce à la syntaxe du mode
+notes.
+
+Il en va ainsi lorsque, par exemple, vous voulez ajouter une indication
+de nuance au numéro de couplet d'un chant choral :
+
+@lilypond[verbatim,relative=2,quote]
+{ c4 c4 c4 c4 }
+\addlyrics {
+  \notemode{\set stanza = \markup{ \dynamic f 1. } }
+  To be sung loudly
+}
+\addlyrics {
+  \notemode{\set stanza = \markup{ \dynamic p 2. } }
+  To be sung quietly
+}
+@end lilypond
 
 
 @node Direction et positionnement
 @subsection Direction et positionnement
 @translationof Direction and placement
 
-@untranslated
+En matière de typographie musicale, l'orientation et le positionnement
+de nombreux éléments est affaire de goût.  Par exemple, les hampes
+peuvent être ascendantes ou descendantes, les paroles, nuances ou autres
+indications d'expression peuvent apparaître au-dessus ou en dessous de
+la portée, les indications textuelles s'alignent tantôt par la gauche,
+tantôt par la droite, ou être centrées.  La plupart de ces choix peuvent
+être laissés à l'appréciation de LilyPond.  Il peut être préférable,
+dans certains cas, d'imposer l'orientation ou le positionnement des
+éléments.
+
+@strong{Indicateurs de position d'une articulation}
+
+Certains positionnements sont opérés par défaut -- toujours au-dessus ou
+toujours en dessous (nuances ou points d'orgue) -- alors que d'autres
+alterneront selon l'orientation des hampes (liaisons ou accents).
+
+@c TODO Add table showing these
+
+Le positionnement par défaut peut être outrepassé à l'aide d'un
+@emph{indicateur de positionnement}, qui vient s'insérer juste avant
+l'articulation.  LilyPond met à votre disposition trois indicateurs de
+positionnement : @code{^} (pour @qq{au-dessus}), @code{_} (pour
+@qq{au-dessous}), et @code{-} (pour @qq{appliquer le positionnement par
+défaut}).  L'indicateur de positionnement n'est pas obligatoire ;
+LilyPond considère alors qu'il y a un @code{-}.  Un indicateur de
+positionnement est cependant @strong{obligatoire} dans les cas
+suivants :
+
+@itemize
+@item une commande @code{\tweak},
+@item une commande @code{\markup},
+@item une commande @code{\tag},
+@item les indications de corde, par exemple @code{-"corde"},
+@item les indications de doigté, par exemple @w{@code{-1}},
+@item les raccourcis d'articulation, par exemple @w{@code{-.}},
+@w{@code{->}} ou @w{@code{--}}.
+@end itemize
+
+Les indicateurs de positionnement n'affectent que la note qui suit :
+
+@lilypond[verbatim,quote,relative=2]
+c2( c)
+c2_( c)
+c2( c)
+c2^( c)
+@end lilypond
+
+@strong{La propriété @code{direction}}
+
+Le positionnement ou l'orientation de nombreux objets de rendu sont
+gérés par la propriété @code{direction}.
+
+La propriété @code{direction} peut prendre la valeur @code{1}, qui
+signifie @qq{ascendant} ou @qq{au-dessus}, ou @w{@code{-1}}, qui
+signifie @qq{descendant} ou @qq{au-dessous}.  Les symboliques @code{UP}
+et @code{DOWN} peuvent remplacer respectivement @code{1} et
+@w{@code{-1}}.  Les valeurs @code{0} ou @code{CENTER} permettent de
+réaffecter à la propriété @code{direction} son comportement par défaut.
+Certaines commandes prédéfinies permettent par ailleurs de spécifier un
+comportement en matière d'orientation ou positionnement ; elles
+sont de la forme
+
+@example
+@code{\xxxUp}, @code{\xxxDown} et @code{\xxxNeutral}
+@end example
+
+@noindent
+auquel cas @code{\xxxNeutral} signifie @qq{retour au comportement par
+défaut} -- voir @rlearning{Objets inclus dans la portée}.
+
+Dans quelques cas particuliers, comme l'indication d'un @emph{arpeggio},
+la valeur affectée à la propriété @code{direction} déterminera si
+l'objet doit se placer à gauche ou à droite de son parent.  Un
+@w{@code{-1}} ou @code{LEFT} signifiera alors @qq{sur la gauche}, et un
+@code{1} ou @code{RIGHT} @qq{sur la droite}.  Comme de bien entendu, un
+@code{0} ou @code{CENTER} signifiera @qq{appliquer le positionnement par
+défaut}.
+
+@ignore
+These all have side-axis set to #X
+AmbitusAccidental - direction has no effect
+Arpeggio - works
+StanzaNumber - not tried
+TrillPitchAccidental - not tried
+TrillPitchGroup - not tried
+@end ignore
+
+Notez que ces commandes resteront effectives jusqu'à ce qu'elles soient
+annulées.
+
+@lilypond[verbatim,quote,relative=2]
+c2( c)
+\slurDown
+c2( c)
+c2( c)
+\slurNeutral
+c2( c)
+@end lilypond
+
+En matière de musique polyphonique, il est souvent plus judicieux
+d'utiliser des contextes @code{Voice} explicites que de modifier
+l'orientation des objets.  Pour de plus amples informations, voir
+@ref{Plusieurs voix}.
+
+@seealso
+Manuel d'initiation :
+@rlearning{Objets inclus dans la portée}.
+
+Manuel de notation :
+@ref{Plusieurs voix}.
 
 
 @node Distances et unités de mesure
 @subsection Distances et unités de mesure
 @translationof Distances and measurements
 
-@untranslated
+@cindex distance absolue
+@cindex distance relative
+@cindex distance extensible
+
+@funindex \mm
+@funindex \cm
+@funindex \in
+@funindex \pt
+
+LilyPond considère deux types de distances : les distances absolues
+et les distances relatives ou extensibles.
+
+Les distances absolues permettent de spécifier les marges, indentations
+et autres détails de mise en page ; elles s'expriment par défaut en
+millimètres.  Vous pouvez utiliser d'autres systèmes de mesure, dès lors
+que la quantité est suivie de la mesure : @code{\mm}, @code{\cm},
+@code{\in} (pouces) ou @code{\pt} (points, 1/72,27 pouce).
+Les mesures de mise en page peuvent aussi s'exprimer en unité extensible
+de portée @code{\staff-space} (voir ci-après).  Pour plus d'information
+concernant la mise en page, voir la rubrique
+@ref{Mise en forme de la page}.
+
+Les distances relatives ou extensibles s'expriment toujours en
+@qq{espace de portée} ou, plus rarement, en @qq{demi espace de portée}.
+L'espace de portée correspond à la distance qui sépare deux lignes
+adjacentes d'une portée.  Sa valeur par défaut est déterminée
+globalement par la taille de portée.  Elle peut aussi s'ajuster
+ponctuellement en jouant sur la propriété @code{staff-space} de l'objet
+@code{StaffSymbol}.  Les distances relatives s'ajustent automatiquement
+dès qu'une modification de la taille globale de portée ou bien de la
+propriété @code{staff-space} du @code{StaffSymbol} intervient.
+Cependant, les tailles de fonte ne s'ajusteront automatiquement que si
+la modification touche la taille globale des portées.  La taille globale
+de portée permet ainsi de gérer l'aspect général de la partition --
+voir @ref{Définition de la taille de portée}.
+
+@funindex magstep
+
+Lorsque seulement une portion de partition doit apparaître dans une
+taille, comme par exemple une portée d'ossia ou une note de bas de page,
+influer sur la taille globale de portée affecterait l'intégralité de la
+partition.  Il convient donc dans ce cas de modifier à la fois la
+propriété @code{staff-space} du @code{StaffSymbol} et la taille des
+fontes.  La fonction Scheme @code{magstep} est tout spécialement chargée
+d'adapter une modification du @code{staff-space} aux fontes.  Pour de
+plus amples informations, reportez-vous à la rubrique
+@rlearning{Longueur et épaisseur des objets}.
+
+@seealso
+Manuel d'initiation :
+@rlearning{Longueur et épaisseur des objets}.
+
+Manuel de notation :
+@ref{Définition de la taille de portée},
+@ref{Mise en forme de la page}.
 
 
-@node Propriétés des lignes de portée
-@subsection Propriétés des lignes de portée
+@node Propriétés des symboles de la portée
+@subsection Propriétés des symboles de la portée
 @translationof Staff symbol properties
 
-@untranslated
+@cindex ajustement des symboles de portée
+@cindex dessin des symboles de portée
+@cindex symboles de portée, dessin
+
+@c TODO Extend or remove this section.  See also NR 1.6.2 Staff symbol
+@c      Need to think of uses for these properties.  Eg 'line-positions
+@c      is used in a snippet to thicken centre line.
+@c      If retained, add @ref to here in 1.6.2  -td
+
+L'emplacement vertical et le nombre de lignes d'une portée se
+définissent conjointement.  Comme l'illustre l'exemple suivant, le
+positionnement des notes n'est en rien influencé par le positionnement
+des lignes de la portée.
+
+@warning{La propriété @code{'line-positions} écrase la propriété
+@code{'line-count}.  Le nombre de lignes d'une portée est implicitement
+défini par le nombre d'éléments dans la liste des valeurs de
+@code{'line-positions}.}
+
+@lilypond[verbatim,quote,relative=1]
+\new Staff \with {
+  \override StaffSymbol #'line-positions = #'(7 3 0 -4 -6 -7)
+}
+{ a4 e' f b | d1 }
+@end lilypond
+
+La largeur d'une portée, exprimée en espace de portée, peut être figée.
+L'espacement des objets inclus dans cette portée ne sera en rien affecté
+par ce réglage.
+
+@lilypond[verbatim,quote,relative=1]
+\new Staff \with {
+  \override StaffSymbol #'width = #23
+}
+{ a4 e' f b | d1 }
+@end lilypond
 
 
 @node Extenseurs et prolongateurs
 @subsection Extenseurs et prolongateurs
 @translationof Spanners
 
-@untranslated
+De nombreux objets de notation musicale s'étendent sur plusieurs notes,
+voire même sur plusieurs mesures.  Il en va ainsi des liaisons,
+ligatures, crochets de nolet, crochets de reprise, crescendos, trilles
+ou glissandos.  Ces objets, que l'on englobe sous l'appellation
+@qq{d'extenseur}, sont pourvus de propriétés spécifiques destinées à
+contrôler leur apparence et leur comportement.  Un certain nombre de ces
+propriétés sont communes à tous les extenseurs, d'autres n'affectent que
+certains d'entre eux.
+
+Tout extenseur dispose de la @code{spanner-interface}.  Quelques uns,
+tout particulièrement ceux chargés de dessiner une ligne droite entre
+deux objets, disposent aussi de la @code{line-spanner-interface}.
 
 
 @unnumberedsubsubsec Utilisation de @code{spanner-interface}
+@translationof Using the @code{spanner-interface}
+
+Cette interface fournit deux propriétés qui s'appliquent à certains
+extenseurs.
+
+@strong{@i{La propriété @code{minimum-length}}}
+
+La longueur minimale d'un extenseur est déterminée par la propriété
+@code{minimum-length}.  Au plus sa valeur est élevée, au plus
+l'espacement des notes qui le bornent sera grand.  Forcer sa valeur
+restera néanmoins sans effet pour un certain nombre d'extenseurs dont la
+longueur dépend d'autres considérations.  Voici quelques exemples de
+mise en œuvre de cette propriété.
+
+@ignore
+Cette propriété est pleinement fonctionnelle pour :
+  Tie (liaison de prolongation)
+  MultiMeasureRest (silence multimesures)
+  Hairpin (soufflet)
+  Slur (liaison d'articulation)
+  PhrasingSlur (liaison de phrasé)
+
+Cette propriété est fonctionnelle en présence d'un @emph{callback} :
+  Glissando
+  Beam (ligature)
+
+Cette propriété est sans effet sur :
+  LyricSpace
+  LyricHyphen
+  LyricExtender
+  TextSpanner
+  System
+
+@end ignore
+
+@lilypond[verbatim,quote,relative=2]
+a~a
+a
+% increase the length of the tie
+-\tweak #'minimum-length #5
+~a
+@end lilypond
+
+@lilypond[verbatim,quote,relative=2]
+a1
+\compressFullBarRests
+R1*23
+% increase the length of the rest bar
+\once \override MultiMeasureRest #'minimum-length = #20
+R1*23
+a1
+@end lilypond
+
+@lilypond[verbatim,quote,relative=2]
+a \< a a a \!
+% increase the length of the hairpin
+\override Hairpin #'minimum-length = #20
+a \< a a a \!
+@end lilypond
+
+Cette propriété permet aussi de jouer sur l'envergure d'une liaison
+d'articulation ou de phrasé.
+
+@lilypond[verbatim,quote,relative=2]
+a( a)
+a
+-\tweak #'minimum-length #5
+( a)
+
+a\( a\)
+a
+-\tweak #'minimum-length #5
+\( a\)
+@end lilypond
+
+Certains objets requièrent un appel explicite à la procédure
+@code{set-spacing-rods} pour que la propriété @code{minimum-length}
+produise ses effets.  La propriété @code{set-spacing-rods} doit alors
+prendre pour valeur @code{ly:spanner::set-spacing-rods}. Par exemple, la
+longueur minimale d'un glissando ne pourra être forcée tant que la
+propriété @code{springs-and-rods} n'est pas définie :
+
+@lilypond[verbatim,quote,relative=1]
+% default
+e \glissando c'
+
+% not effective alone
+\once \override Glissando #'minimum-length = #20
+e, \glissando c'
+
+% effective only when both overrides are present
+\once \override Glissando #'minimum-length = #20
+\once \override Glissando #'springs-and-rods = #ly:spanner::set-spacing-rods
+e, \glissando c'
+@end lilypond
+
+Il en va de même pour l'objet @code{Beam} (ligature) :
+
+@lilypond[verbatim,quote,relative=1]
+% not effective alone
+\once \override Beam #'minimum-length = #20
+e8 e e e
+
+% effective only when both overrides are present
+\once \override Beam #'minimum-length = #20
+\once \override Beam #'springs-and-rods = #ly:spanner::set-spacing-rods
+e8 e e e
+@end lilypond
+
+@strong{@i{La propriété @code{to-barline}}}
+
+La seconde propriété fournie par la @code{spanner-interface} est 
+@code{to-barline}.  Elle est activée par défaut, raison pour laquelle
+les soufflets et autres extenseurs finissant sur la première note d'une
+mesure s'arrêtent visuellement au niveau de la barre de mesure qui la
+précède.  Le fait de désactiver la propriété @code{to-barline} aura pour
+effet de prolonger l'extenseur au delà de la barre de mesure et jusqu'à
+la note qui le borne :
+
+@lilypond[verbatim,quote,relative=2]
+a \< a a a a \! a a a \break
+\override Hairpin #'to-barline = ##f
+a \< a a a a \! a a a
+@end lilypond
+
+Cette propriété n'est pas opérationnelle pour tous les extenseurs.  Il
+serait en effet quelque peu surprenant de l'activer (lui
+affecter @code{#t}) dans le cas d'une liaison d'articulation ou de
+phrasé !
+
+
 @unnumberedsubsubsec Utilisation de @code{line-spanner-interface}
+@translationof Using the @code{line-spanner-interface}
+
+Un certain nombre d'objets disposent de la propriété
+@code{line-spanner-interface}, entre autres :
+
+@itemize
+@item @code{DynamicTextSpanner}
+@item @code{Glissando}
+@item @code{TextSpanner}
+@item @code{TrillSpanner}
+@item @code{VoiceFollower}
+@end itemize
+
+La routine en charge de dessiner le stencil de ces extenseurs est
+@code{ly:line-interface::print}.  Elle va déterminer les deux points
+extrêmes et dessiner entre eux une ligne du style requis.  Bien que la
+localisation des deux bornes de l'extenseur soit calculée à la volée,
+vous pouvez cependant forcer leur ordonnée (coordonnée-Y).  Les
+propriétés que vous devrez ajuster résident au deuxième niveau dans la
+hiérarchie, mais la syntaxe de la commande @code{\override} nécessaire
+demeure relativement simple :
+
+@lilypond[relative=2,quote,verbatim]
+e2 \glissando b
+\once \override Glissando #'(bound-details left Y) = #3
+\once \override Glissando #'(bound-details right Y) = #-2
+e2 \glissando b
+@end lilypond
+
+La propriété @code{Y} est valorisée en unités de @code{staff-space}, la
+ligne médiane de la portée correspondant au point zéro.  Pour le
+glissando qui nous occupe, il s'agit du @code{Y} à l'aplomb
+(coordonnée-X) du centre de la tête de chacune des deux notes, si tant
+est que la ligne doive s'étendre entre ces deux points.
+
+Si le @code{Y} n'est pas défini, sa valeur sera calculée en fonction de
+la position verticale du point d'attachement de l'extenseur.
+
+Dans le cas où l'extenseur est interrompu par un saut de ligne, les
+terminaisons à cet endroit se gèrent grâce aux sous-clés
+@code{left-broken} et @code{right-broken} de @code{bound-details}, comme
+ci-dessous :
+
+@lilypond[relative=2,ragged-right,verbatim,quote]
+\override Glissando #'breakable = ##t
+\override Glissando #'(bound-details right-broken Y) = #-3
+c1 \glissando \break
+f1
+@end lilypond
+
+Les sous-propriétés @code{left} et @code{right} du @code{bound-details}
+disposent d'autres clés modifiables de la même manière que @code{Y} :
+
+@table @code
+@item Y
+Détermine l'ordonnée (coordonnée-Y) de la terminaison, avec un
+décalage en @code{staff-space} par rapport à la ligne médiane de la
+portée.  Il s'agit par défaut du centre de l'objet d'attachement, qui
+est le centre vertical de la tête de note pour un glissando.
+
+En ce qui concerne les extenseurs horizontaux, tels ceux comportant du
+texte ou les trilles, il est fixé à @code{0}.
+
+@item attach-dir
+Détermine le début et la fin de la ligne sur l'axe des abscisses,
+relativement à l'objet de rattachement.  Une valeur de @w{@code{-1}} (ou
+@code{LEFT}) aura pour effet de commencer ou terminer la ligne sur la
+gauche de la tête de note de rattachement.
+
+@item X
+Il s'agit de l'abscisse (coordonnée-X) absolue de la terminaison.  Elle
+se calcule à la volée, et son forçage n'apporte rien de plus.
+
+@item stencil
+Les extenseurs linéaires peuvent commencer ou finir par un symbole,
+enregistré dans cette sous-propriété.  Elle est conçue pour un usage
+interne, aussi nous vous conseillons de plutôt recourir à @code{text}.
+
+@item text
+Il s'agit d'un @emph{markup} qui se poursuivra par l'extenseur. C'est la
+sous-propriété utilisée pour ajouter @i{cresc.}, @i{tr} ou autre texte à
+un extenseur horizontal.
+
+@lilypond[quote,ragged-right,relative=2,verbatim]
+\override TextSpanner #'(bound-details left text)
+   = \markup { \small \bold Slower }
+c2\startTextSpan b c a\stopTextSpan
+@end lilypond
+
+@item stencil-align-dir-y
+@item stencil-offset
+Lorsqu'aucune de ces deux sous-propriétés n'est définie, le stencil est
+simplement positionné à l'extrémité, centré sur la ligne telle que
+définie par les sous-propriétés @code{X} et @code{Y}.  L'utilisation de
+@code{stencil-align-dir-y} ou @code{stencil-offset} permettra d'aligner
+le symbole verticalement par rapport au coin de la ligne :
+
+@lilypond[relative=1,quote,verbatim]
+\override TextSpanner
+  #'(bound-details left stencil-align-dir-y) = #-2
+\override TextSpanner
+  #'(bound-details right stencil-align-dir-y) = #UP
+
+\override TextSpanner
+  #'(bound-details left text) = #"ggg"
+\override TextSpanner
+  #'(bound-details right text) = #"hhh"
+c4^\startTextSpan c c c \stopTextSpan
+@end lilypond
+
+Vous n'aurez pas manqué de constater qu'une valeur négative place le
+texte @emph{en haut} -- contrairement à ce que l'on serait en droit
+d'attendre.  Ceci est dû au fait que la valeur @w{@code{-1}} ou
+@code{DOWN} signifie @qq{aligner le bord @emph{inférieur} du texte sur
+la ligne d'extension}.  Une valeur égale à @code{1} ou @code{UP}
+alignera le sommet du texte sur cette ligne d'extension.
+
+@item arrow
+L'activation de cette sous-propriété (lui affecter @code{#t}) ajoutera
+à l'extenseur une terminaison en flèche.
+
+@item padding
+Cette sous-propriété contrôle l'espace qui doit séparer l'extrémité de
+la ligne et la fin réelle de l'extenseur.  Sans ce @qq{décalage}, le
+trait indiquant un glissando commencerait et finirait au beau milieu de
+chacune des têtes de note.
+
+@end table
+
+La fonction @code{\endSpanners} permet d'interrompre l'extenseur qui
+vient dès la note suivante.  Autrement dit, il ne s'étendra que sur une
+seule note, ou jusqu'à la prochaine barre de mesure si @code{to-barline}
+a été activé et que survient une barre avant la note suivante.
+
+@lilypond[verbatim,quote,ragged-right,relative=2]
+\endSpanners
+c2 \startTextSpan c2 c2
+\endSpanners
+c2 \< c2 c2
+@end lilypond
+
+L'utilisation de @code{\endSpanners} permet de s'affranchir d'insérer un
+@code{\stopTextSpan} pour clôturer un @code{\startTextSpan} ou un
+@code{\!} pour terminer un soufflet.
+
+@seealso
+Référence des propriétés internes :
+@rinternals{Glissando},
+@rinternals{line-spanner-interface},
+@rinternals{TextSpanner},
+@rinternals{TrillSpanner},
+@rinternals{VoiceFollower}.
+
+
 @node Visibilité des objets
 @subsection Visibilité des objets
 @translationof Visibility of objects
 
-@untranslated
+@cindex objets, visibilité
+@cindex grobs, visibilité
+@cindex visibilité d'objets
+
+La visibilité des objets de rendu se contrôle de quatre façons
+différentes : vous pouvez supprimer leur stencil, les rendre
+transparents, les coloriser en blanc ou bien encore forcer leur
+propriété @code{break-visibility}.  Les trois premières options peuvent
+s'appliquer à tous les objets, la dernière étant réservée aux objets
+@emph{changeables}.  Le Manuel d'initiation contient une introduction à
+ces quatre techniques, à la rubrique
+@rlearning{Visibilité et couleur des objets}.
 
+LilyPond met en œuvre quelques techniques particulières adaptées à
+certains objets ; elles sont couvertes par une rubrique spécifique.
 
 @menu
 * Suppression des stencils::
@@ -1425,151 +3238,912 @@ courante, une propriété spéciale a été créée.  Elle doit
 * Considérations spécifiques::
 @end menu
 
+
 @node Suppression des stencils
 @unnumberedsubsubsec Suppression des stencils
 @translationof Removing the stencil
 
-@untranslated
+@cindex stencil, suppression
+
+Tout objet de rendu se voit attribuer une propriété @code{stencil}.
+Elle est par défaut définie par la fonction chargée de dessiner cet
+objet.  Lorsque cette propriété est désactivée de force -- en lui
+attribuant la valeur @code{#f} -- aucune fonction ne sera appelée ;
+l'objet ne sera donc pas dessiné.  Le retour au comportement par défaut
+s'opère à l'aide d'un @code{\revert}.
+
+@lilypond[quote,verbatim,relative=1]
+a1 a
+\override Score.BarLine #'stencil = ##f
+a a
+\revert Score.BarLine #'stencil
+a a a
+@end lilypond
 
 
 @node Transparence des objets
 @unnumberedsubsubsec Transparence des objets
 @translationof Making objects transparent
 
-@untranslated
+@cindex transparent, objet
+
+Tout objet de rendu dispose d'une propriété de transparence, qui est par
+défaut définie à @code{#f}.  Le fait de l'activer rendra l'objet
+transparent tout en préservant la place qu'il occupe.
+
+@lilypond[quote,verbatim,relative=2]
+a4 a
+\once \override NoteHead #'transparent = ##t
+a a
+@end lilypond
 
 
 @node Blanchiment des objets
 @unnumberedsubsubsec Blanchiment des objets
 @translationof Painting objects white
 
-@untranslated
+@cindex objets, couleur
+@cindex couleur d'objet
+@cindex layers
+@cindex calque
+@cindex impression, ordre
+@cindex surimpression d'objets
+@cindex objets, surimpression
+@cindex grobs, superposition
+
+Tout objet de rendu dispose d'une propriété couleur, par défaut définie
+à @code{black} (noir).  Le fait de la forcer à @code{white} (blanc)
+rendra l'objet indistinct du fond blanc.  Néanmoins, lorsque cet objet
+en recouvre d'autres, la couleur de leurs points de jonction dépendra de
+l'ordre dans lequel ils sont dessinés, ce qui peut laisser apparaître
+un fantôme de l'objet blanchi comme ci-dessous :
+
+@lilypond[quote,verbatim,relative=2]
+\override Staff.Clef #'color = #white
+a1
+@end lilypond
+
+Cet inconvénient peut être évité en modifiant l'ordre dans lequel les
+objets sont dessinés.  Chaque objet de rendu dispose d'une propriété
+@code{layer} (calque ou niveau) à laquelle est affecté un nombre entier.
+Les objets ayant la plus faible valeur sont dessinés en premier, puis
+les autres, de telle sorte qu'un objet ayant une valeur plus élevée les
+recouvrira.  La plupart des objet ont un @code{layer} valorisé
+à @code{1} -- quelques uns, dont @code{StaffSymbol} et
+@code{BarLine}, ont une valeur à @code{0}.  L'ordre d'impression
+d'objets ayant une même valeur de @code{layer} est indéterminé.
+
+La clef de l'exemple précédent a par défaut un @code{layer}
+à @code{1} ; elle est donc dessinée après les lignes de la
+portée -- @code{layer} valorisé par défaut à @code{0} -- et donc
+les recouvre.  Pour changer cet état de fait, l'objet @code{Clef} doit
+avoir un @code{layer} de valeur inférieure, disons @w{@code{-1}}, pour
+pouvoir être dessiné avant.
+
+@lilypond[quote,verbatim,relative=2]
+\override Staff.Clef #'color = #white
+\override Staff.Clef #'layer = #-1
+a1
+@end lilypond
 
 
 @node Utilisation de break-visibility
 @unnumberedsubsubsec Utilisation de break-visibility
 @translationof Using break-visibility
 
-@untranslated
+@c TODO Add making other objects breakable
+
+@cindex break-visibility
+
+La plupart des objets de rendu ne sont imprimés qu'une seule fois ;
+certains cependant, tels les barres de mesure, clefs, métriques ou
+armures, apparaîtront deux fois lors d'un saut de ligne -- une première
+fois en fin de ligne, puis à nouveau au début de la ligne suivante.  Ces
+objets, que l'on peut traiter de @emph{changeables} (@emph{breakable} en
+anglais) disposent de la propriété @code{break-visibility} spécialement
+chargée de contrôler leur visibilité aux trois endroits où il sont
+susceptibles d'apparaître : en début de ligne, en cours de ligne ou
+en fin de ligne -- si tant est qu'un changement s'y produise.
+
+Par exemple, la métrique est imprimée par défaut au début de la première
+ligne, et nulle part ailleurs.  En cas de modification, une nouvelle
+métrique sera imprimée à l'endroit du changement.  Dans le cas où ce
+changement intervient en fin de ligne, la nouvelle métrique s'imprime au
+début de la ligne suivante, et une métrique @qq{de précaution} viendra
+se placer au bout de la ligne précédente.
+
+Ce comportement est géré par la propriété @code{break-visibility}, dont
+vous trouverez une explication à la rubrique
+@rlearning{Visibilité et couleur des objets}.  Cette propriété est
+constituée d'un vecteur de trois booléens qui, dans l'ordre, déterminent
+si l'objet sera imprimé à la fin, en cours, et au début d'une ligne --
+on pourrait aussi dire avant un saut de ligne, là où il n'y a pas de
+saut de ligne, et après un saut de ligne.
+
+Les huit combinaisons possibles sont aussi disponibles sous la forme de
+fonctions prédéfinies, regroupées dans le fichier
+@file{scm/output-lib.scm}.  Le tableau suivant vous les présente ;
+les trois dernières colonnes indiquent l'endroit où l'objet sera visible.
+
+@multitable {@code{begin-of-line-invisible}} {@code{'#(#t #t #t)}} {apres} {apres} {apres}
+@headitem Forme                      @tab Forme                  @tab Avant @tab Hors    @tab Après
+@headitem fonctionnelle              @tab vectorielle            @tab saut  @tab saut    @tab saut
+
+@item @code{all-visible}             @tab @code{'#(#t #t #t)}    @tab oui    @tab oui    @tab oui
+@item @code{begin-of-line-visible}   @tab @code{'#(#f #f #t)}    @tab non    @tab non    @tab oui
+@item @code{center-visible}          @tab @code{'#(#f #t #f)}    @tab non    @tab oui    @tab non
+@item @code{end-of-line-visible}     @tab @code{'#(#t #f #f)}    @tab oui    @tab non    @tab non
+@item @code{begin-of-line-invisible} @tab @code{'#(#t #t #f)}    @tab oui    @tab oui    @tab non
+@item @code{center-invisible}        @tab @code{'#(#t #f #t)}    @tab oui    @tab non    @tab oui
+@item @code{end-of-line-invisible}   @tab @code{'#(#f #t #t)}    @tab non    @tab oui    @tab oui
+@item @code{all-invisible}           @tab @code{'#(#f #f #f)}    @tab non    @tab non    @tab non
+@end multitable
+
+Les réglages par défaut de la propriété @code{break-visibility}
+diffèrent selon l'objet de rendu.  Le tableau suivant présente, pour la
+plupart des  objets comportant la propriété @code{break-visibility},
+ces réglages par défaut.
+
+@multitable @columnfractions .3 .3 .4
+
+@headitem Objet de rendu   @tab Contexte habituel  @tab Réglage par défaut
+
+@c omit Ambitus as it appears not to be affected by break-visibility -td
+@c @item @code{Ambitus}          @tab as specified   @tab @code{begin-of-line-visible}
+@item @code{BarLine}             @tab @code{Score}          @tab calculé
+@item @code{BarNumber}           @tab @code{Score}          @tab @code{begin-of-line-visible}
+@c omit the following item until it can be explained -td
+@c @item @code{BreakAlignGroup}  @tab @code{Score}          @tab calculé
+@item @code{BreathingSign}       @tab @code{Voice}          @tab @code{begin-of-line-invisible}
+@item @code{Clef}                @tab @code{Staff}          @tab @code{begin-of-line-visible}
+@item @code{Custos}              @tab @code{Staff}          @tab @code{end-of-line-visible}
+@item @code{DoublePercentRepeat} @tab @code{Voice}          @tab @code{begin-of-line-invisible}
+@c omit KeyCancellation until it can be explained -td
+@c @item @code{KeyCancellation}  @tab ??             @tab @code{begin-of-line-invisible}
+@item @code{KeySignature}        @tab @code{Staff}          @tab @code{begin-of-line-visible}
+@c omit LeftEdge until it can be explained -td
+@c @item @code{LeftEdge}         @tab @code{Score}          @tab @code{center-invisible}
+@item @code{OctavateEight}       @tab @code{Staff}          @tab @code{begin-of-line-visible}
+@item @code{RehearsalMark}       @tab @code{Score}          @tab @code{end-of-line-invisible}
+@item @code{TimeSignature}       @tab @code{Staff}          @tab @code{all-visible}
+
+@end multitable
+
+Voici un exemple d'utilisation de la forme vectorielle pour contrôler la
+visibilité des barres de mesure :
+
+@lilypond[quote,verbatim,relative=1,ragged-right]
+f4 g a b
+f4 g a b
+% Remove bar line at the end of the current line
+\once \override Score.BarLine #'break-visibility = #'#(#f #t #t)
+\break
+f4 g a b
+f4 g a b
+@end lilypond
+
+Lors d'un forçage de @code{break-visibility} sous une forme vectorielle,
+les trois éléments doivent impérativement être mentionnés.  Ces formes
+vectorielles ne sont d'ailleurs pas prises en charge par tous les objets
+de rendu, et certaines combinaisons peuvent entraîner des erreurs ;
+nous citerons entre autres :
+
+@itemize @bullet
+@item Une barre de mesure ne peut s'imprimer en début de ligne.
+@item Un numéro de mesure ne peut apparaître au début de la première
+ligne, à moins d'être différent de 1.
+@item Clef -- voir ci-après.
+@item Les répétitions en pourcentage sont soit toutes imprimées, soit
+aucune.  Vous devrez utiliser @code{begin-of-line-invisible} pour les
+voir et @code{all-invisible} pour les masquer.
+@item Armure -- voir ci-après.
+@item Indication d'octaviation -- voir ci-après.
+@end itemize
 
 
 @node Considérations spécifiques
 @unnumberedsubsubsec Considérations spécifiques
 @translationof Special considerations
 
-@untranslated
+@strong{@emph{Visibilité après changement explicite}}
+
+@cindex armure, visibilité après changement explicite
+@cindex explicitKeySignatureVisibility
+@cindex clef, visibilité après changement explicite
+@cindex explicitClefVisibility
+
+La propriété @code{break-visibility} contrôle la visibilité des armures
+ou changements de clef en début de ligne uniquement, donc après un saut.
+Elle ne produit aucun effet sur la visibilité d'une armure ou d'une clef
+après un changement explicite de tonalité ou de clef, ni en cours, ni en
+fin de ligne.  Dans l'exemple suivant, l'armure est présente même après
+le passage en si bémol majeur malgré l'activation de
+@code{all-invisible} (@emph{tous invisibles}).
+
+@lilypond[quote,verbatim,relative=1,ragged-right]
+\key g \major
+f4 g a b
+% Try to remove all key signatures
+\override Staff.KeySignature #'break-visibility = #all-invisible
+\key bes \major
+f4 g a b
+\break
+f4 g a b
+f4 g a b
+@end lilypond
+
+La visibilité lors de ces changements explicites d'armure ou de clef est
+géré respectivement par les propriétés
+@code{explicitKeySignatureVisibility} et @code{explicitClefVisibility}.
+Leur fonctionnement est en tout point identique à celui de la propriété
+@code{break-visibility} -- forme vectorielle à trois éléments ou forme
+fonctionnelle comme indiqué ci-avant.  Toutes deux sont attachées au
+contexte @code{Staff} (la portée) et non directement aux objets de
+rendu ; elles sont de ce fait introduites par une instruction
+@code{\set}.  Leur valeur par défaut est de toujours imprimer les objets
+-- réglage sur @code{all-visible}.  Ces deux propriétés gèrent
+uniquement la visibilité des armures et clefs lors d'un changement
+explicite, et en dehors d'un début de ligne ; il faudra en pareil
+cas forcer la @code{break-visibility} de ces objets pour les supprimer.
+
+@lilypond[quote,verbatim,relative=1,ragged-right]
+\key g \major
+f4 g a b
+\set Staff.explicitKeySignatureVisibility = #all-invisible
+\override Staff.KeySignature #'break-visibility = #all-invisible
+\key bes \major
+f4 g a b \break
+f4 g a b
+f4 g a b
+@end lilypond
+
+@strong{@emph{Visibilité des altérations de précaution}}
+
+L'impression d'altérations de précaution au moment d'un changement
+explicite de tonalité sera annulée dès lors que vous aurez désactivé la
+propriété @code{printKeyCancellation} du contexte @code{Staff} :
+
+@lilypond[quote,verbatim,relative=1,ragged-right]
+\key g \major
+f4 g a b
+\set Staff.explicitKeySignatureVisibility = #all-invisible
+\set Staff.printKeyCancellation = ##f
+\override Staff.KeySignature #'break-visibility = #all-invisible
+\key bes \major
+f4 g a b \break
+f4 g a b
+f4 g a b
+@end lilypond
+
+Avec de tels réglages particuliers, seules les altérations accidentelles
+permettront d'indiquer le changement de tonalité.
+
+@c TODO Add visibility of cautionary accidentals before notes
+
+@strong{@emph{Barres de mesure automatiques}}
+
+@cindex automaticBars
+@cindex barres de mesure, suppression
+
+La désactivation de la propriété @code{automaticBars}, qui réside dans
+le contexte @code{Score}, permet de s'affranchir d'imprimer
+automatiquement les barres de mesure ; seules seront imprimées les
+barres explicitées à l'aide de la commande @code{\bar}.  Néanmoins, et
+contrairement à ce qui se passe avec la commande @code{\cadenzaOn}, le
+compteur de numéro de mesure continuera de s'incrémenter.  Les barres
+s'imprimeront à nouveau, au niveau où en est le compteur, dès que la
+propriété @code{automaticBars} sera réactivée.  Gardez à l'esprit que
+les sauts de ligne, lorsque cette propriété est désactivée,  ne peuvent
+intervenir qu'à l'occasion d'un @code{\bar} explicite.
+
+@c TODO Add example
+
+@strong{@emph{Clefs octaviées}}
+
+@cindex octaviation, visibilité de la clef
+@cindex visibilité d'un clef octaviée
+@cindex clef, visibilité de l'octaviation
+
+L'indication d'octaviation d'une clef est produite par l'objet de rendu
+@code{OctavateEight}.  Sa visibilité étant gérée par héritage direct de
+l'objet @code{Clef}, nul n'est besoin de forcer un quelconque
+@code{break-visibility} au niveau des objets @code{OctavateEight} pour
+éliminer une indication d'octaviation lorsque la clef est invisible.
+
+Lors d'un changement explicite de clef, la propriété
+@code{explicitClefVisibility} gère à la fois le symbole de la clef et
+l'indication d'octaviation qui lui est attachée.
+
+@seealso
+Manuel d'initiation :
+@rlearning{Visibilité et couleur des objets}
 
 
 @node Styles de ligne
 @subsection Styles de ligne
 @translationof Line styles
 
-@untranslated
+Certaines indications portées à l'attention de l'exécutant -- tels 
+@i{rallentando}, @i{accelerando} et @i{trilles} -- apparaissent sous la
+forme d'un texte qui peut s'étendre sur plusieurs mesures à l'aide d'une
+ligne parfois pointillée ou ondulée.
+
+En matière de dessin du texte et des lignes, ces indications font appel
+aux mêmes routines que le glissando ; leur comportement peut donc
+être affiné selon les mêmes préceptes, au moyen de la routine
+@code{ly:line-interface::print} qui est tout spécialement chargée de
+dessiner les extenseurs.  Cette routine détermine l'emplacement exact
+des deux points extrêmes de l'extenseur, puis trace une ligne du style
+demandé entre ces deux points.
+
+L'exemple ci-dessous indique les différents styles de ligne disponibles,
+ainsi que la manière de les spécifier.
+
+@lilypond[relative=2,ragged-right,verbatim,quote]
+d2 \glissando d'2
+\once \override Glissando #'style = #'dashed-line
+d,2 \glissando d'2
+\override Glissando #'style = #'dotted-line
+d,2 \glissando d'2
+\override Glissando #'style = #'zigzag
+d,2 \glissando d'2
+\override Glissando #'style = #'trill
+d,2 \glissando d'2
+@end lilypond
+
+Les points d'ancrage de l'extension sont calculés à la volée pour chaque
+objet graphique, mais rien ne vous empêche de les forcer :
+
+@c TODO Complete
+@lilypond[relative=2,ragged-right,verbatim,quote]
+e2 \glissando f
+\once \override Glissando #'(bound-details right Y) = #-2
+e2 \glissando f
+@end lilypond
+
+La valeur de @code{Y} est ainsi fixée à @w{@code{-2}} en ce qui concerne
+la borne droite.  Il en irait de même pour la borne gauche en spécifiant
+@code{left} (gauche) au lieu de @code{right} (droite).
+
+En l'absence de réglage du @code{Y}, celui-ci est calculé à partir de
+l'emplacement vertical des points d'attache gauche et droit de
+l'extenseur.
+
+De plus amples informations quant à l'ajustement des extenseurs font
+l'objet de la rubrique @ref{Extenseurs et prolongateurs}.
 
 
 @node Rotation des objets
 @subsection Rotation des objets
 @translationof Rotating objects
 
-@untranslated
-
+Qu'il s'agisse des objets de rendu ou d'éléments textuels sous forme de
+@emph{markup}, vous pouvez les faire pivoter selon vos désirs et à
+partir de n'importe quel point.  La méthode diffère cependant selon ce
+que vous désirez manipuler.
 
 @menu
 * Rotation des objets de mise en forme::
 * Rotation des étiquettes::
 @end menu
 
+
 @node Rotation des objets de mise en forme
 @unnumberedsubsubsec Rotation des objets de mise en forme
 @translationof Rotating layout objects
 
-@untranslated
+Tout objet de rendu disposant de la @code{grob-interface} est
+susceptible de pivoter, grâce à la propriété @code{rotation}.  Celle-ci
+prend en argument une liste de trois éléments : l'angle de rotation
+-- dans le sens inverse des aiguilles d'une montre -- ainsi que les
+coordonnées @code{x} et @code{y} du point appartenant à l'objet en
+question et à partir duquel doit s'effectuer cette rotation.  L'angle
+est exprimé en degrés, les coordonnées en espaces de portée.
+
+L'angle et les coordonnées ne peuvent se déterminer que par tâtonnement.
+
+@cindex soufflet penché
+
+Il existe assez peu de situation où faire pivoter un objet de mise en
+forme soit réellement opportun ; en voici une :
+
+@lilypond[quote,verbatim,relative=1]
+g4\< e' d' f\!
+\override Hairpin #'rotation = #'(20 -1 0)
+g,,4\< e' d' f\!
+@end lilypond
 
 
 @node Rotation des étiquettes
 @unnumberedsubsubsec Rotation des étiquettes
 @translationof Rotating markup
 
-@untranslated
+Tout texte faisant l'objet d'un @emph{markup} peut pivoter selon
+n'importe quel angle, à l'aide de la commande @code{\rotate}.  Celle-ci
+prend deux arguments : l'angle de rotation exprimé en degrés --
+dans le sens inverse des aiguilles d'une montre -- et le texte à
+basculer.  Il ne s'agit pas ici de faire pivoter les extrémités du
+texte ; celles-ci récupéreront leurs coordonnées x et y du@emph{markup}
+pivoté.  Dans l'exemple ci-dessous, la propriété
+@code{outside-staff-priority} à été fixée à @code{#f} afin de désactiver
+l'évitement automatique des collisions qui pourrait repousser certains
+textes trop haut.
+
+@c KEEP LY
+@lilypond[quote,verbatim,relative=1]
+\override TextScript #'outside-staff-priority = ##f
+g4^\markup { \rotate #30 "un sol" }
+b^\markup { \rotate #30 "un si" }
+des^\markup { \rotate #30 "un ré bémol" }
+fis^\markup { \rotate #30 "un fa dièse" }
+@end lilypond
 
 
 @node Retouches avancées
 @section Retouches avancées
 @translationof Advanced tweaks
 
-@untranslated
-
+Nous allons voir, au fil des paragraphes qui suivent, différentes
+approches permettant de fignoler l'apparence d'une partition.
 
 @menu
 * Alignement des objets::
 * Regroupement vertical d'objets graphiques::
 * Modification des stencils::
 * Modification de l'allure des éléments::
+* Conteneurs requalifiants::
 @end menu
 
+@seealso
+Manuel d'initiation :
+@rlearning{Autres sources de documentation},
+@rlearning{Retouche de partition}.
+
+Manuel de notation :
+@ref{En quoi consiste la référence des propriétés internes},
+@ref{Modification de propriétés}.
+
+Manuel d'extension :
+@rextend{Interfaces pour programmeurs}.
+
+Fichiers d'initialisation :
+@file{scm/define-grobs.scm}.
+
+Morceaux choisis :
+@rlsrnamed{Tweaks and overrides,Retouches}.
+
+Référence des propriétés internes :
+@rinternals{All layout objects}.
+
+
 @node Alignement des objets
 @subsection Alignement des objets
 @translationof Aligning objects
 
-@untranslated
-
+Les objets graphiques disposant des interfaces
+@code{self-alignment-interface} ou @code{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
+@rinternals{self-alignment-interface} et
+@rinternals{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 @code{X-offset} et @code{Y-offset}.  La valeur de
+@code{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
+@code{Y-offset} indique l'écart par rapport à la ligne médiane de la
+portée.  Les valeurs de @code{X-offset} et @code{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.
+
+@warning{Nombre d'objets sont affectés par des considérations
+spécifiques en matière de positionnement ; jouer sur les valeurs de
+@code{X-offset} ou @code{Y-offset} se révélera inefficace en pareil
+cas, même si l'objet dispose de la @code{self-alignment-interface}.
+Fixer arbitrairement les propriétés @code{X-offset} ou @code{Y-offset}
+annihilera alors les effets de la propriété @code{self-alignment}
+correspondante.}
+
+Par exemple, une altération peut se repositionner verticalement grâce à
+son @code{Y-offset} ; toute modification de son @code{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 @code{break-aligned-interface} --
+permettent de gérer le positionnement des indications de repère sur ces
+objets.
 
 @menu
-* Détermination directe de @code{X-offset} et @code{Y-offset}::
-* Utilisation de @code{side-position-interface}::
-* Utilisation de @code{self-alignment-interface}::
-* Utilisation de @code{break-aligned-interface}::
+* Détermination directe de X-offset et Y-offset::
+* Utilisation de side-position-interface::
+* Utilisation de self-alignment-interface::
+* Utilisation de break-aligned-interface::
 @end menu
 
-@node Détermination directe de @code{X-offset} et @code{Y-offset}
+@seealso
+Manuel de notation :
+@ref{Utilisation de break-aligned-interface}.
+
+Manuel d'extension :
+@rextend{Fonctions de rappel}.
+
+
+@node Détermination directe de X-offset et Y-offset
 @unnumberedsubsubsec Détermination directe de @code{X-offset} et @code{Y-offset}
-@translationof Setting @code{X-offset} and @code{Y-offset} directly
+@translationof Setting X-offset and Y-offset directly
+
+Vous pouvez fournir, pour de nombreux objets, des valeurs numériques aux
+propriétés @code{X-offset} et @code{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
+@code{X-offset} et du @code{Y-offset}.
+
+@lilypond[verbatim,quote,relative=2]
+a-3
+a
+-\tweak #'X-offset #0
+-\tweak #'Y-offset #0
+-3
+a
+-\tweak #'X-offset #-1
+-\tweak #'Y-offset #1
+-3
+@end lilypond
 
-@untranslated
+@c TODO write more
 
 
-@node Utilisation de @code{side-position-interface}
+@node Utilisation de side-position-interface
 @unnumberedsubsubsec Utilisation de @code{side-position-interface}
-@translationof Using the @code{side-position-interface}
+@translationof Using the side-position-interface
+
+Un objet disposant de la @code{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 une
+tête de note.
+
+Les valeurs des propriétés @code{side-axis} et @code{direction}
+détermineront l'endroit où viendra se positionner l'objet, selon les
+préceptes suivants :
 
-@untranslated
+@c TODO add an example of each to the table
 
+@multitable @columnfractions .3 .3 .3
+@headitem Propriété         @tab Propriété         @tab Positionnement
+@headitem @code{side-axis}  @tab @code{direction}  @tab
 
-@node Utilisation de @code{self-alignment-interface}
+@item     @code{0}          @tab @code{-1}         @tab gauche
+@item     @code{0}          @tab @code{1}          @tab droite
+@item     @code{1}          @tab @code{-1}         @tab en dessous
+@item     @code{1}          @tab @code{1}          @tab au-dessus
+
+@end multitable
+
+Pour un @code{side-axis} à @code{0}, le @code{X-offset} devrait engager
+la procédure @code{ly:side-position-interface::x-aligned-side}.
+Celle-ci renverra la valeur adéquate de @code{X-offset} permettant
+d'accoler l'objet sur la droite ou sur la gauche de son parent, selon la
+valeur de @code{direction}.
+
+Pour un @code{side-axis} à @code{1}, le @code{Y-offset} devrait engager
+la procédure @code{ly:side-position-interface::y-aligned-side}.
+Celle-ci renverra la valeur adéquate de @code{Y-offset} permettant
+d'accoler l'objet au-dessus ou en dessous de son parent, selon la
+valeur de @code{direction}.
+
+@c TODO Add examples
+
+
+@node Utilisation de self-alignment-interface
 @unnumberedsubsubsec Utilisation de @code{self-alignment-interface}
-@translationof Using the @code{self-alignment-interface}
+@translationof Using the self-alignment-interface
+
+@emph{Réalignement d'objets horizontalement}
+
+L'alignement horizontal d'un objet disposant de la
+@code{self-alignment-interface} dépend de la valeur de sa propriété
+@code{self-alignment-X}, si tant est que la propriété @code{X-offset} de
+cet objet engage la procédure
+@code{ly:self-alignment-interface::x-aligned-on-self}.
+La propriété @code{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 @code{0} permet de centrer l'objet sur
+le point de référence de son parent.  Une valeur de @w{@code{-1}}
+alignera le bord gauche de l'objet sur le point de référence de son
+parent, et une valeur de @code{1} alignera le bord droit de l'objet
+sur le point de référence de son parent.  Les valeurs symboliques
+@code{LEFT}, @code{CENTER} et @code{RIGHT} correspondent respectivement
+à @w{@code{-1}}, @code{0} et @code{1}.
+
+En règle générale, la valeur de @code{self-alignment-X} se modifie à
+l'aide d'une commande @code{\override}.  Le recours à la commande
+@code{\tweak} permet de traiter séparément plusieurs annotations
+affectées à une même note :
+
+@lilypond[quote,verbatim,relative=1]
+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"
+@end lilypond
+
+
+@emph{Réalignement d'objets verticalement}
+
+L'alignement vertical suit le même principe : la propriété
+@code{Y-offset} doit alors engager la procédure
+@code{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 @code{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 @w{@code{-1}}
+alignera le bord inférieur de l'objet sur le point de référence de son
+parent, et une valeur de @code{1} alignera le bord supérieur de
+l'objet sur le point de référence de son parent.  La
+valeur @code{0} permet de centrer l'objet sur le point de référence
+de son parent.  Les valeurs symboliques @code{DOWN}, @code{CENTER} et
+@code{UP} correspondent respectivement à @w{@code{-1}}, @code{0}
+et @code{1}.
+
+
+@emph{Réalignement d'objets sur les deux axes}
+
+Définir à la fois @code{X-offset} et @code{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.
+
+@lilypond[quote,verbatim,relative=2]
+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
+@end lilypond
+
 
-@untranslated
+@ignore
+@unnumberedsubsubsec Utilisation de @code{aligned-on-parent}
+
+@c Cannot document as they do not seem to operate consistently on all objects -td
+@c TODO investigate further
+
+The @code{aligned-on-parent} procedures are used in the same way
+as the @code{aligned-on-self} procedures, they difference being
+that they permit an object to be aligned with the @emph{edges} of
+the parent rather than the parent's reference point.  The following
+example shows the difference:
+
+@c TODO Add example
+
+@lilypond[verbatim,quote]
+@end lilypond
 
+@end ignore
+
+
+@ignore
+@c unnumberedsubsubsec Utilisation de @code{centered-on-parent}
+
+@c Cannot document as they do not seem to operate consistently on all objects -td
+@c TODO investigate further
 
-@unnumberedsubsubsec Utilisation des procédures @code{aligned-on-parent}
-@unnumberedsubsubsec Utilisation des procédures @code{centered-on-parent}
-@node Utilisation de @code{break-aligned-interface}
+@end ignore
+
+@c TODO The align-interface, BassFigureAlignment and VerticalAlignment
+
+
+@node Utilisation de break-aligned-interface
 @unnumberedsubsubsec Utilisation de @code{break-aligned-interface}
-@translationof Using the @code{break-alignable-interface}
+@translationof Using the break-alignable-interface
+
+@cindex alignement sur un objet
+@cindex break-align-symbols
+
+Indications de repère et numéros de mesure peuvent s'aligner sur des
+objets de notation autres qu'une barre de mesure.  Parmi ces objets,
+nous citerons @code{ambitus}, @code{breathing-sign}, @code{clef},
+@code{custos}, @code{staff-bar}, @code{left-edge},
+@code{key-cancellation}, @code{key-signature}, et @code{time-signature}.
+
+Ces indications et numéros de mesure sont par défaut centrés
+horizontalement au-dessus de l'objet :
+
+@lilypond[verbatim,quote,relative=1]
+% The rehearsal mark will be centered above the Clef
+\override Score.RehearsalMark #'break-align-symbols = #'(clef)
+\key a \major
+\clef treble
+\mark "↓"
+e1
+% The rehearsal mark will be centered above the Time Signature
+\override Score.RehearsalMark #'break-align-symbols = #'(time-signature)
+\key a \major
+\clef treble
+\time 3/4
+\mark "↓"
+e2.
+% The rehearsal mark will be centered above the Breath Mark
+\override Score.RehearsalMark #'break-align-symbols = #'(breathing-sign)
+\key a \major
+\clef treble
+\time 4/4
+e1
+\breathe
+\mark "↓"
+@end lilypond
 
-@untranslated
+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 @code{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.
+
+@lilypond[verbatim,quote,relative=1]
+% The rehearsal mark will be centered above the Key Signature
+\override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef)
+\key a \major
+\clef treble
+\mark "↓"
+e1
+% The rehearsal mark will be centered above the Clef
+\set Staff.explicitKeySignatureVisibility = #all-invisible
+\override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef)
+\key a \major
+\clef bass
+\mark "↓"
+gis,,1
+% The rehearsal mark will be centered above the Bar Line
+\set Staff.explicitKeySignatureVisibility = #all-invisible
+\set Staff.explicitClefVisibility = #all-invisible
+\override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef)
+\key a \major
+\clef treble
+\mark "↓"
+e''1
+@end lilypond
+
+L'alignement d'un repère 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.
+
+@lilypond[verbatim,quote,relative=1]
+% The RehearsalMark will be centered above the Key Signature
+\override Score.RehearsalMark #'break-align-symbols = #'(key-signature)
+\key a \major
+\clef treble
+\time 4/4
+\mark "↓"
+e1
+% The RehearsalMark will be aligned with the left edge of the Key Signature
+\once \override Score.KeySignature #'break-align-anchor-alignment = #LEFT
+\mark "↓"
+\key a \major
+e1
+% The RehearsalMark will be aligned with the right edge of the Key Signature
+\once \override Score.KeySignature #'break-align-anchor-alignment = #RIGHT
+\key a \major
+\mark "↓"
+e1
+@end lilypond
+
+Le bord gauche d'un repère peut se décaler arbitrairement sur la gauche
+ou la droite.  La valeur est exprimée en espaces de portée.
+
+@lilypond[verbatim,quote,relative=1]
+% The RehearsalMark will be aligned with the left edge of the Key Signature
+% and then shifted right by 3.5 staff-spaces
+\override Score.RehearsalMark #'break-align-symbols = #'(key-signature)
+\once \override Score.KeySignature #'break-align-anchor = #3.5
+\key a \major
+\mark "↓"
+e1
+% The RehearsalMark will be aligned with the left edge of the Key Signature
+% and then shifted left by 2 staff-spaces
+\once \override Score.KeySignature #'break-align-anchor = #-2
+\key a \major
+\mark "↓"
+e1
+@end lilypond
 
 
 @node Regroupement vertical d'objets graphiques
 @subsection Regroupement vertical d'objets graphiques
 @translationof Vertical grouping of grobs
 
+@c TODO Expand this section
+
 Les objets @code{VerticalAlignment} et @code{VerticalAxisGroup}
-travaillent de concert.  Comme leurs noms anglais l'indiquent,
+travaillent de concert.  Comme leur nom anglais l'indiquent,
 @code{VerticalAxisGroup} regroupe différents objets tels que les portées
-(@code{Staff}), les paroles (@code{Lyrics}) et ainsi de suite ; puis
-@code{VerticalAlignment} synchronise verticalement ces différents groupes.
-En général, il n'y a qu'un seul @code{VerticalAlignment} pour l'ensemble
-de la partition, mais chaque contexte @code{Staff}, @code{Lyrics}, etc.
-possède son propre @code{VerticalAxisGroup}.
+(@code{Staff}), les paroles (@code{Lyrics}) et ainsi de suite ;
+puis @code{VerticalAlignment} synchronise verticalement ces différents
+groupes.  En général, il n'y a qu'un seul @code{VerticalAlignment} pour
+l'ensemble de la partition, mais chaque contexte @code{Staff},
+@code{Lyrics}, etc. possède son propre @code{VerticalAxisGroup}.
 
 
 @node Modification des stencils
 @subsection Modification des stencils
 @translationof Modifying stencils
 
-@untranslated
+Tout objet de rendu dispose d'une propriété @code{stencil} attachée à la
+@code{grob-interface}.  En règle générale, cette propriété référence
+par défaut une fonction spécifique à l'objet et taillée sur mesure pour
+fournir le symbole qui va le représenter dans l'output.  Par exemple,
+le réglage standard de la propriété @code{stencil} de l'objet
+@code{MultiMeasureRest} est @code{ly:multi-measure-rest::print}.
+
+Le symbole standard d'un objet quel qu'il soit peut être remplacé à
+partir du moment où la propriété @code{stencil} référence une procédure
+différente et écrite à cet effet.  Ceci requiert une bonne maîtrise du
+fonctionnement interne de LilyPond, mais est grandement facilité dans
+bien des cas et permet d'obtenir le résultat escompté.
+
+En effet, rien ne nous interdit, à partir de la propriété
+@code{stencil}, d'appeler la procédure qui génère du texte,
+@code{ly:text-interface::print} en l'occurrence, et d'adjoindre à l'objet
+une propriété @code{text} qui contiendra, sous forme de @emph{markup},
+le symbole à dessein.  Grâce à l'extrême flexibilité des @emph{markups},
+vous pourrez parvenir à bien des choses -- voir à ce sujet
+@ref{Éléments graphiques dans du texte formaté}.
+
+C'est la technique employée ici, où l'une des têtes de note est
+remplacée par une croix inscrite dans un cercle :
+
+@lilypond[verbatim,quote]
+XinO = {
+  \once \override NoteHead  #'stencil = #ly:text-interface::print
+  \once \override NoteHead #'text = \markup {
+    \combine
+      \halign #-0.7 \draw-circle #0.85 #0.2 ##f
+      \musicglyph #"noteheads.s2cross"
+  }
+}
+\relative c'' {
+  a a \XinO a a
+}
+@end lilypond
+
+Tous les glyphes de la fonte Feta sont accessibles à l'aide de la
+commande de @emph{markup} @code{\musicglyph} -- voir
+@ref{La fonte Feta}.
+
+@c TODO Add inserting eps files or ref to later
+
+@c TODO Add inserting Postscript or ref to later
+
+@seealso
+Manuel de notation :
+@ref{Text markup commands},
+@ref{Éléments graphiques dans du texte formaté},
+@ref{La fonte Feta},
+@ref{Mise en forme du texte}.
 
 
 @node Modification de l'allure des éléments
@@ -1580,9 +4154,365 @@ possède son propre @code{VerticalAxisGroup}.
 * Modification des liaisons::
 @end menu
 
+
 @node Modification des liaisons
 @unnumberedsubsubsec Modification des liaisons
 @translationof Modifying ties and slurs
 
-@untranslated
+@cindex liaison, modification
+@cindex Bézier, points de contrôle d'une courbe
+@cindex points de contrôle, courbe de Bézier
+
+Les liaisons, qu'elles soient de prolongation, d'articulation ou de
+phrasé, sont dessinées sous la forme de courbes de Bézier de degré
+trois.  Lorsque l'aspect de la liaison automatiquement calculé n'est pas
+satisfaisant,  il peut être modifié manuellement, en fournissant
+explicitement les quatre points de contrôle qui permettront de définir
+cette courbe.
+
+Quatre points définissent une courbe de Bézier cubique. Les premier et
+quatrième points sont les points de départ et d'arrivée de la
+courbe ; les deux autres points de contrôle -- P1 et P2 -- en
+détermineront l'allure.  La courbe se trace en partant du point P0, en
+se dirigeant vers P1 et en arrivant au point P3 selon la direction
+@w{P2-P3}.  La courbe est à l'intérieur de l'enveloppe convexe des
+points de contrôle.
+
+Voici par exemple une liaison de prolongation dont l'allure n'est pas
+des plus heureuses, même en optant pour un @code{\tieDown}.
+
+@lilypond[verbatim,quote,relative=1]
+<<
+  { e1~ e }
+\\
+  { r4 <g c,> <g c,> <g c,> }
+>>
+@end lilypond
+
+L'un des moyens d'améliorer cette liaison consiste à modifier
+manuellement ses quatre points de contrôle.
+
+Les coordonnées des points de contrôle sont données en unités d'espace
+de portée.  L'abscisse est relative au point de référence de la note de
+départ de la liaison ; l'ordonnée est relative à la ligne médiane
+de la portée.  Les différentes coordonnées sont entrées sous la forme
+d'une liste de quatre paires de nombres décimaux (ou nombres réels).
+L'une des manières de procéder consiste à tout d'abord estimer les
+coordonnées des deux extrémités puis, par tâtonnement, déterminer les
+deux points intermédiaires.
+
+Remarque intéressante au sujet des courbes : une courbe sera
+symétrique si ses points de contrôle sont symétriques.  L'une des
+propriétés avantageuses des courbes de Bézier est que leur
+transformation -- déplacement, rotation ou échelonnement -- est
+réalisable en simplement corrigeant de manière identique ses points de
+contrôle.
+
+Pour l'exemple qui nous occupe, l'adaptation suivante nous permet
+d'obtenir un résultat plutôt satisfaisant.  Notez bien l'endroit où
+cette adaptation est stipulée : juste avant la note de départ de la
+liaison.
+
+@lilypond[verbatim,quote,relative=1]
+<<
+  {
+    \once \override Tie
+      #'control-points = #'((1 . -1) (3 . 0.6) (12.5 . 0.6) (14.5 . -1))
+     e1 ~ e
+  }
+\\
+  { r4 <g c,> <g c,> <g c,> }
+>>
+@end lilypond
+
+@knownissues
+Lorsque plusieurs liaisons, quelle qu'en soit la nature, commencent au
+même moment, jouer sur la propriété @code{control-points} est
+impossible, et la commande @code{\tweak} inefficace.  Vous pouvez
+néanmoins influer sur la propriété @code{tie-configuration} de l'objet
+@code{TieColumn} pour déterminer la ligne de départ et l'orientation.
+
+@seealso
+Référence des propriétés internes :
+@rinternals{TieColumn}.
+
+
+@node Conteneurs requalifiants
+@subsection Conteneurs requalifiants
+@translationof Unpure-pure containers
+
+@cindex Scheme, pure containers
+@cindex Scheme, unpure containers
+@cindex pure containers, Scheme
+@cindex unpure containers, Scheme
+@cindex espacement horizontal, affinage
+
+Les conteneurs requalifiants permettent de faciliter le calcul des
+espacements en cas de modification du @emph{Y-axis} -- plus
+particulièrement les composantes @code{Y-offset} et @code{Y-extent} -- à
+l'aide d'une fonction scheme en lieu et place de valeurs.
+
+L'envergure verticale (@code{Y-extent}) de certains objets dépend de la
+propriété @code{stencil} ; jouer sur leur stencil requiert alors une
+intervention supplémentaire au niveau du @code{Y-extent} à l'aide d'un
+conteneur transitoire.  Lorsqu'une fonction affecte un @code{Y-offset} ou
+un @code{Y-extent}, cela déclenche la détermination des sauts de ligne
+de manière anticipée dans la séquence des traitements.  Il en résulte
+que cette opération n'est en fait pas exécutée ; elle renvoie
+habituellement @code{0} ou @code{'(0 . 0)}, ce qui peut engendrer des
+collisions.  Une fonction @qq{pure} évitera d'avorter la construction
+des propriétés ou objets, qui de ce fait verront leurs arguments liés à
+la verticalité (@code{Y-axis}) correctement évalués.
+
+Il existe actuellement une trentaine de fonctions que l'on peut
+qualifier de @qq{pures}.  Le recours à un conteneur transitoire permet
+de requalifier une fonction de telle sorte qu'elle soit reconnue comme
+@qq{pure} et soit donc évaluée @strong{avant} détermination des sauts de
+ligne -- l'espacement horizontal sera de fait ajusté en temps et en heure.
+La fonction @qq{impure} sera ensuite évaluée @strong{après} le
+positionnement des sauts de ligne.
+
+@warning{Il n'est pas toujours facile d'avoir l'assurance qu'une
+fonction soit qualifiée de @qq{pure} ; aussi nous vous recommandons
+d'éviter d'utiliser les objets @code{Beam} or @code{VerticalAlignment}
+lorsque vous désirez en créer une.}
+
+Un conteneur requalifiant se construit selon la syntaxe
+
+@code{(ly:make-unpure-pure-container f0 f1)}
+
+où @code{f0} est une fonction prenant @var{n} arguments (@var{n_>=_1}),
+le premier devant être l'objet en question ; il s'agit de la
+fonction dont le résultat sera réutilisé.  @var{f1} est la fonction qui
+sera qualifiée de @qq{pure}.  Elle prend @var{n_+_2} arguments, le
+premier devant être lui aussi l'objet en question, et les second et
+troisième étant respectivement les @qq{point de départ} (@var{start}) et
+@qq{point d'arrivée} (@var{end}).
+
+@var{start} et @var{end} sont dans tous les cas des valeurs fictives qui
+trouveront leur utilité dans le cas d'objets de type @code{Spanner},
+tels les soufflets (@code{Hairpin}) ou barres de ligature (@code{Beam}),
+en retournant les différentes estimations de hauteur basées sur leurs
+début et fin d'extension.
+
+Viennent ensuite les autres arguments de la fonction initiale @code{f0}
+-- autrement dit aucun si @var{n_=_1}.
+
+Les résultats de la deuxième fonction (@code{f1}) permettent une
+approximation des valeurs qui seront ensuite utilisées par la fonction
+initiale aux fins d'ajustement lors des phases ultérieures d'espacement.
+
+@lilypond[verbatim,quote,ragged-right]
+#(define (square-line-circle-space grob)
+(let* ((pitch (ly:event-property (ly:grob-property grob 'cause) 'pitch))
+      (notename (ly:pitch-notename pitch)))
+ (if (= 0 (modulo notename 2))
+     (make-circle-stencil 0.5 0.0 #t)
+     (make-filled-box-stencil '(0 . 1.0)
+                              '(-0.5 . 0.5)))))
+
+squareLineCircleSpace = {
+  \override NoteHead #'stencil = #square-line-circle-space
+}
+
+smartSquareLineCircleSpace = {
+  \squareLineCircleSpace
+  \override NoteHead #'Y-extent =
+   #(ly:make-unpure-pure-container
+      ly:grob::stencil-height
+      (lambda (grob start end) (ly:grob::stencil-height grob)))
+}
+
+\new Voice \with { \remove "Stem_engraver" }
+\relative c'' {
+  \squareLineCircleSpace
+  cis4 ces disis d
+  \smartSquareLineCircleSpace
+  cis4 ces disis d
+}
+@end lilypond
+
+La première mesure de l'exemple ci-dessus ne fait pas appel à un
+conteneur requalifiant ; le moteur d'espacement n'a donc aucune
+connaissance de la largeur des têtes de note et ne peut empêcher
+qu'elles chevauchent les altérations.  Dans la deuxième mesure, par
+contre, le recours à un conteneur requalifiant informe le moteur
+d'espacement de la largeur des têtes de note ; les collisions sont
+alors évitées du fait de l'espace réservé à chacune des têtes.
+
+Lorsqu'il s'agit de calculs simples, les fonctions, tant pour la partie
+@qq{pure} que pour la partie @qq{impure}, peuvent être identiques au
+détail près du nombre d'arguments utilisés ou du domaine d'intervention.
+
+@warning{Le fait de qualifier une fonction de @qq{pure} alors qu'elle ne
+l'est pas peut générer des résultats imprévisibles.}
+
+
+@node Utilisation de fonctions musicales
+@section Utilisation de fonctions musicales
+@translationof Using music functions
+
+@c TODO -- add @seealso, etc. to these subsections
+
+Une adaptation ou un affinage qui devient récurrent parce que doit
+s'appliquer à différentes expressions musicales peut faire l'objet d'une
+@emph{fonction musicale}.  Nous ne traiterons ici que des fonctions de
+@emph{substitution}, dont le but est de substituer une variable en un
+bout de code LilyPond.  D'autres fonctions, plus complexes, sont
+abordées au chapitre @rextend{Fonctions musicales}.
+
+@menu
+* Syntaxe d'une fonction de substitution::
+* Exemples de fonction de substitution::
+@end menu
+
+
+@node Syntaxe d'une fonction de substitution
+@subsection Syntaxe d'une fonction de substitution
+@translationof Substitution function syntax
+
+La rédaction d'une fonction chargée de substituer du code LilyPond à une
+variable est chose relativement aisée.  Une telle fonction est de la
+forme
+
+@example
+fonction =
+#(define-music-function
+     (parser location @var{arg1} @var{arg2} @dots{})
+     (@var{type1?} @var{type2?} @dots{})
+   #@{
+     @var{@dots{}musique@dots{}}
+   #@})
+@end example
+
+@noindent
+où
+
+@multitable @columnfractions .33 .66
+@item @code{@var{argN}}
+@tab @var{n}ième argument.
+
+@item @code{@var{typeN?}}
+@tab un @emph{type de prédicat} Scheme pour lequel @code{@var{argN}}
+doit renvoyer @code{#t}.
+
+@item @code{@var{@dots{}musique@dots{}}}
+@tab du code LilyPond tout ce qu'il y a de plus ordinaire, avec des
+@code{$} (là où seule une construction LilyPond est autorisée) et des
+@code{#} (lorsqu'il s'agit d'une valeur en Scheme, d'un argument de
+fonction musicale ou de musique faisant partie d'une liste) pour
+référencer les arguments (par ex. @samp{#arg1}).
+@end multitable
+
+Les arguments @code{parser} et @code{location} sont obligatoires ;
+ils sont utilisés dans certaines situations évoluées, comme indiqué dans
+le manuel d'extension des fonctionnalités à au chapitre
+@rextend{Fonctions musicales}.  Assurez-vous bien de ne pas les omettre
+dans vos fonctions de substitution.
+
+La liste des types de prédicat est elle aussi obligatoire.  Voici
+quelques uns des types de prédicat les plus utilisés dans les fonctions
+musicales :
+
+@example
+boolean?
+cheap-list?  @emph{(au lieu de }@qq{list?}@emph{, pour accélérer le traitement)}
+ly:duration?
+ly:music?
+ly:pitch?
+markup?
+number?
+pair?
+string?
+symbol?
+@end example
+
+@noindent
+Une liste plus fournie est disponible à l'annexe
+@ref{Types de prédicats prédéfinis}.  Vous pouvez par ailleurs définir
+vos propres types de prédicat.
+
+@seealso
+Manuel de notation :
+@ref{Types de prédicats prédéfinis}.
+
+Manuel d'extension :
+@rextend{Fonctions musicales}.
+
+Fichiers d'initialisation :
+@file{lily/music-scheme.cc},
+@file{scm/c++.scm},
+@file{scm/lily.scm}.
+
+
+@node Exemples de fonction de substitution
+@subsection Exemples de fonction de substitution
+@translationof Substitution function examples
+
+La présente rubrique regroupe quelques exemples de fonction
+substitutive.  Le propos est ici d'illustrer les possibilités qu'offrent
+les fonctions de substitution simple.
+
+Dans ce premier exemple, nous définissons une fonction dans le but de
+simplifier le réglage du décalage d'une annotation (un
+@code{TextScript}).
+
+@lilypond[quote,verbatim,ragged-right]
+padText =
+#(define-music-function
+     (parser location padding)
+     (number?)
+   #{
+     \once \override TextScript #'padding = #padding
+   #})
+
+\relative c''' {
+  c4^"piu mosso" b a b
+  \padText #1.8
+  c4^"piu mosso" d e f
+  \padText #2.6
+  c4^"piu mosso" fis a g
+}
+@end lilypond
+
+Nous pouvons utiliser autre chose que des nombres au sein d'une
+fonction, y compris une expression musicale :
+
+@lilypond[quote,verbatim,ragged-right]
+custosNote =
+#(define-music-function
+     (parser location note)
+     (ly:music?)
+   #{
+     \tweak NoteHead #'stencil #ly:text-interface::print
+     \tweak NoteHead #'text
+        \markup \musicglyph #"custodes.mensural.u0"
+     \tweak Stem #'stencil ##f
+     #note
+   #})
+
+\relative c' { c4 d e f \custosNote g }
+@end lilypond
+
+Une fonction de substitution peut traiter plusieurs arguments :
+
+@lilypond[quote,verbatim,ragged-right]
+tempoPadded =
+#(define-music-function
+     (parser location padding tempotext)
+     (number? markup?)
+   #{
+     \once \override Score.MetronomeMark #'padding = #padding
+     \tempo \markup { \bold #tempotext }
+   #})
+
+\relative c'' {
+  \tempo \markup { "Low tempo" }
+  c4 d e f g1
+  \tempoPadded #4.0 "High tempo"
+  g4 f e d c1
+}
+@end lilypond
+
+@c TODO: add appropriate @@ref's here.