+qui se place en début de fichier, ou @code{set-paper-size},
+
+@example
+\paper @{
+ #(set-paper-size "tabloid")
+@}
+@end example
+
+qui s'inscrit au sein d'un bloc @code{\paper}.
+
+@noindent
+La seule restriction à l'utilisation isolée de la fonction
+@code{set-default-paper-size} est qu'elle doit intervenir avant le
+premier bloc @code{\paper}. @code{set-default-paper-size} fixe le
+format pour toutes les pages, alors que @code{set-paper-size} détermine
+le format des feuilles rattachées à un bloc @code{\paper} particulier.
+Ainsi, lorsque le bloc @code{\paper} se trouve en tête de fichier, le
+format du papier s'appliquera à toutes les pages ; si @code{\paper}
+apparaît dans un bloc @code{\book}, la taille ne s'appliquera qu'au
+@emph{book} en question.
+
+À l'intérieur d'un bloc @code{\paper}, la fonction @code{set-paper-size}
+doit intervenir avant toute autre variable. Les raisons à ceci sont
+abordées à la rubrique @ref{Adaptation automatique au format}.
+
+Différents formats de papier sont définis dans le fichier
+@file{scm/paper.scm}. Bien que vous puissiez y ajouter votre propre
+format, sachez cependant que celui-ci est écrasé à chaque mise à jour de
+LilyPond.
+
+@c An appendix entry exists for paper sizes but is not auto-generated
+
+La commande suivante, inscrite dans votre fichier, vous permettra
+d'ajouter votre format personnalisé à ceux déjà connus, puis d'y faire
+appel à l'aide des fonctions @code{set-default-paper-size} et
+@code{set-paper-size} :
+
+@example
+#(set! paper-alist (cons '("mon format" . (cons (* 15 in) (* 3 in))) paper-alist))
+
+\paper @{
+ #(set-paper-size "mon format")
+@}
+@end example
+
+Les unités peuvent s'exprimer aussi bien en @code{in} (pouces), qu'en
+@code{cm} (centimètres) ou @code{mm} (millimètres).
+
+@cindex papier, orientation
+@cindex landscape, papier
+@cindex paysage, papier
+@cindex à l'italienne, papier
+
+Le fait d'ajouter l'argument @code{'landscape} à l'instruction
+stipulant le format du papier permet d'obtenir une présentation à
+l'italienne -- ou paysage si vous préférez -- et donc des lignes plus
+longues.
+
+@example
+#(set-default-paper-size "a6" 'landscape)
+@end example
+
+L'inversion des dimensions du papier sans pour autant basculer la
+présentation -- comme pour imprimer sur une carte postale ou créer un
+graphique destiné à inclusion -- s'obtient en ajoutant @samp{landscape}
+au nom du format de papier :
+
+@example
+#(set-default-paper-size "a6landscape")
+@end example
+
+Lorsque la taille du papier comporte explicitement @samp{landscape} ou
+@samp{portrait}, la présence d'un argument @code{'landscape} aura pour
+seul effet de modifier l'orientation de l'image et non les dimensions de
+la feuille.
+
+@seealso
+Manuel de notation :
+@ref{Adaptation automatique au format},
+@ref{Formats de papier prédéfinis}.
+
+Fichiers d'initialisation :
+@file{scm/paper.scm}.
+
+
+@node Adaptation automatique au format
+@unnumberedsubsubsec Adaptation automatique au format
+@translationof Automatic scaling to paper size
+
+Toute modification du format de papier à l'aide des fonctions Scheme
+@code{set-default-paper-size} ou @code{set-paper-size}, que nous avons
+vues à la rubrique @ref{Format du papier}, se traduira automatiquement
+par l'ajustement d'un certain nombre de variables attachées au bloc
+@code{\paper} afin qu'elles soient en concordance avec le format
+spécifié. Vous pouvez annuler l'ajustement automatique d'une variable
+particulière en redéfinissant sa valeur après avoir spécifié le format
+de papier utilisé. Notez bien que le simple fait d'affecter une valeur
+à @code{paper-height} ou @code{paper-width} ne déclenchera pas
+l'étalonnage automatique, bien que spécifier une largeur de papier
+@emph{(@code{paper-width})} peut influencer d'autres valeurs -- mais
+c'est une autre histoire dont nous parlerons plus tard et qui n'a rien à
+voir avec la mise à l'échelle.
+
+L'adaptation automatique affecte les dimensionnements verticaux
+@code{top-margin} et @code{bottom-margin} -- voir
+@ref{Variables d'espacement vertical fixe} --, ainsi que les
+dimensionnements horizontaux @code{left-margin}, @code{right-margin},
+@code{inner-margin}, @code{outer-margin}, @code{binding-offset},
+@code{indent} et @code{short-indent} -- voir
+@ref{Variables d'espacement horizontal}.
+
+Les valeurs par défaut de ces dimensionnements sont contenues dans le
+fichier @file{ly/paper-defaults-init.ly} et utilisent les variables
+internes @code{top-margin-default}, @code{bottom-margin-default}, etc.
+correspondant au format par défaut -- papier A4 -- pour lequel
+@code{paper-height} est à @code{297\mm} et @code{paper-width} à
+@code{210\mm}.
+
+@seealso
+Manuel de notation :
+@ref{Variables d'espacement vertical fixe},
+@ref{Variables d'espacement horizontal}.
+
+Fichiers d'initialisation :
+@file{ly/paper-defaults-init.ly},
+@file{scm/paper.scm}.
+
+
+@node Variables d'espacement vertical fixe
+@subsection Variables d'espacement vertical fixe
+@translationof Fixed vertical spacing @code{\paper} variables
+
+@warning{Certains dimensionnements attachés au bloc @code{@bs{}paper}
+sont automatiquement ajustés selon le format du papier, ce qui peut
+conduire à un résultat inattendu --
+voir @ref{Adaptation automatique au format}.}
+
+Les valeurs par défaut (avant étalonnage) sont définies dans le fichier
+@file{ly/paper-defaults-init.ly}.
+
+@table @code
+@item paper-height
+@funindex paper-height
+
+La hauteur de la feuille. Il s'agit par défaut de la dimension du
+papier utilisé. Notez bien que cette variable n'affectera pas
+l'ajustement automatique d'un certain nombre de dimensionnements
+verticaux.
+
+@item top-margin
+@funindex top-margin
+
+La marge entre le bord supérieur de la feuille et la surface imprimable.
+Elle est fixée par défaut à @code{5\mm} et s'ajustera selon le
+format de papier.
+
+@item bottom-margin
+@funindex bottom-margin
+
+La marge entre la surface imprimable et le bord inférieur de la feuille.
+Elle est fixée par défaut à @code{6\mm} et s'ajustera selon le
+format de papier.
+
+@item ragged-bottom
+@funindex ragged-bottom
+
+L'activation de cette variable permet de ne pas répartir verticalement
+les systèmes sur les pages hormis la dernière. La valeur par défaut
+est @code{#f}. Lorsque la partition ne comporte que deux ou trois
+systèmes par page, comme pour un conducteur d'orchestre, nous vous
+conseillons d'activer cette variable.
+
+@item ragged-last-bottom
+@funindex ragged-last-bottom
+
+La désactivation de cette variable permet de répartir verticalement les
+systèmes de la dernière page d'une partition. La valeur par défaut
+est @code{#t}. Nous vous conseillons, lorsque des pièces couvrent
+deux pages ou plus, de désactiver cette variable.@*
+Notez bien que la variable @code{ragged-last-bottom} affecte aussi la
+dernière page de chacune des parties -- créées à l'aide d'un bloc
+@code{\bookpart} -- d'un même ouvrage.
+
+@end table
+
+@seealso
+Manuel de notation :
+@ref{Adaptation automatique au format}.
+
+Fichiers d'initialisation :
+@file{ly/paper-defaults-init.ly}.
+
+Morceaux choisis :
+@rlsrnamed{Spacing, Espacements}.
+
+@knownissues
+Les titrages (contenus dans le bloc @code{\header@{@}}) sont considérés
+comme des systèmes à part entière ; ils seront donc affectés par
+@code{ragged-bottom} et @code{ragged-last-bottom}, qui éventuellement
+ajouteront de l'espace avant le premier système de la partition.
+
+La définition explicite d'un format de papier annulera tout réglage des
+marges haute et basse.
+
+
+@node Variables d'espacement vertical fluctuant
+@subsection Variables d'espacement vertical fluctuant
+@translationof Flexible vertical spacing @code{\paper} variables
+
+Il est souvent judicieux d'apporter un peu de flexibilité à l'espacement
+entre différents éléments (marges, titres, systèmes ou mouvements), en
+dilatation ou compression selon le cas. Un certain nombre de variables
+de type @code{\paper} répertoriées ci-dessous vous permettront d'affiner
+ces dimensionnements.
+
+Gardez à l'esprit que les variables du bloc @code{\paper} dont nous
+parlons ici n'influencent en rien l'espacement des portées d'un même
+système. L'espacement au sein des systèmes est géré par des propriétés
+attachées à des objets graphiques (@emph{grobs}) qui, elles, se
+définissent au niveau du bloc @code{\score} -- voir à ce sujet
+@ref{Espacement vertical au sein d'un système}.
+
+@menu
+* Structure des variables d'espacement vertical fluctuant::
+* Liste des variables d'espacement vertical fluctuant::
+@end menu
+
+
+@node Structure des variables d'espacement vertical fluctuant
+@unnumberedsubsubsec Structure des variables d'espacement vertical fluctuant
+@translationof Structure of flexible vertical spacing alists
+
+Chacune de ces variables attachées au bloc @code{\paper} est constituée
+d'une liste associative @emph{(alist)} à quatre @i{clés} :
+
+@itemize
+
+@item
+@code{basic-distance} @emph{(distance de base)} -- la grandeur d'espace
+par défaut, exprimée en hauteur de portée, séparant les @i{points de
+référence} de deux éléments, qui évite tout risque de collision en
+l'absence de dilatation ou compression. Le point de référence d'un
+titre ou d'un @emph{markup} est son sommet, celui d'un système est le
+centre vertical du @code{StaffSymbol} le plus proche -- même lorsqu'une
+ligne de @qq{non-portée} viendrait à s'intercaler. Une
+@code{basic-distance} inférieure à @code{padding} ou
+@code{minimum-distance} sera sans effet, dans la mesure où l'espacement
+résultant ne saurait être inférieur à @code{padding} ou
+@code{minimum-distance}.
+
+@item
+@code{minimum-distance} @emph{(distance-minimale)} -- l'espacement
+minimal, exprimé en hauteur de portée, entre les points de référence des
+deux éléments alors qu'il y a déjà un effet de compression. Une
+@code{minimum-distance} inférieure à la valeur du @code{padding} sera
+sans effet, dans la mesure où l'espacement résultant ne saurait être
+inférieur au @code{padding}.
+
+@c TODO: explain skylines somewhere and xref to it from here.
+
+@item
+@code{padding} @emph{(décalage)} -- la grandeur minimale de @qq{blanc}
+qui sépare deux éléments, exprimée en hauteur de portée. On peut le
+voir comme la hauteur minimale d'un rectangle vide qui devrait s'étendre
+sur toute la largeur des deux éléments.
+
+@item
+@code{stretchability} @emph{(dilatation)} -- le coefficient
+d'étirement de cet espace. Un coefficient nul permet de figer
+l'espacement, à moins qu'il n'en résulte des collisions. Un coefficient
+positif déterminera la propension d'un espacement à s'étirer, tout
+en tenant compte du coefficient affecté aux autres espacements.
+Par exemple, lorsque le coefficient de dilatation d'une dimension est
+double de celui d'une autre, elle pourra s'étirer deux fois plus que
+cette dernière. Il ne saurait être négatif. La valeur @code{+inf.0}
+provoque une @code{programming_error} (erreur de programmation) et est
+ignorée ; vous pouvez toutefois utiliser @code{1.0e7} pour obtenir
+une valeur proche de l'infini. Lorsque cette @i{clé} n'est pas définie,
+sa valeur est par défaut égale à @code{space}. Notez bien que
+l'utilisateur ne peut définir une propension à la compression ;
+elle est en fait égale à
+(@code{basic-distance} @minus{} @code{minimum-distance}).
+
+@end itemize
+
+Lorsque l'impression n'est pas en pleine page -- elle est donc
+@emph{ragged bottom} pour les anglophones -- l'élément @code{space}
+n'est pas étiré. Les hauteurs sur une telle page correspondront donc au
+maximum de
+
+@itemize
+
+@item
+@code{basic-distance}, plus
+@item
+@code{minimum-distance} et
+@item
+@code{padding}, augmenté de ce qu'il faut pour éviter les
+chevauchements.
+
+@end itemize
+
+Cependant, lorsque la partition fait plusieurs pages, la dernière page
+reprendra dans la mesure du possible l'espacement de la page précédente.
+
+Les manières de modifier des listes associatives font l'objet d'un
+@rusernamed{Modification de listes associatives, chapitre spécifique}.
+L'exemple suivant indique deux façons de modifier une liste associative.
+La première déclaration intervient sur une seule clé, alors que la
+deuxième redéfinit complètement la variable.
+
+@example
+\paper @{
+ system-system-spacing #'basic-distance = #8
+
+ score-system-spacing =
+ #'((padding . 1)
+ (basic-distance . 12)
+ (minimum-distance . 6)
+ (stretchability . 12))
+@}
+@end example
+
+
+@node Liste des variables d'espacement vertical fluctuant
+@unnumberedsubsubsec Liste des variables d'espacement fluctuant
+@translationof List of flexible vertical spacing @code{\paper} variables
+
+Le nom des dimensionnements à hauteur variable sont de la forme
+@code{@var{avant}-@var{après}-spacing}, où @code{@var{avant}} et
+@code{@var{après}} représentent les éléments qui doivent être espacés.
+La distance s'établit entre les points de référence des deux éléments
+concernés (voir la rubrique précédente pour plus de précision). Notez
+bien que, dans les règles de nommage des variables qui suivent, le terme
+@code{markup} fait référence aussi bien à un @i{markup de titrage}
+(@code{bookTitleMarkup} ou @code{scoreTitleMarkup}) qu'à un
+@i{markup de haut niveau} (voir @ref{Structure de fichier}). Toutes les
+distances sont exprimées en espace de portée.
+
+Leurs valeurs par défaut sont inscrites dans le fichier
+@file{ly/paper-defaults-init.ly}.
+
+@c TODO: Where do headers/footers fit in? -mp
+
+@table @code
+@item markup-system-spacing
+@funindex markup-system-spacing
+
+détermine l'espacement entre un titre ou un @emph{markup} de premier
+niveau, et le système qui le suit.
+
+@item score-markup-spacing
+@funindex score-markup-spacing
+
+détermine l'espacement entre le dernier système et le titre ou
+@emph{markup} de haut niveau qui le suit.
+
+@item score-system-spacing
+@funindex score-system-spacing
+
+détermine l'espacement entre le dernier système d'une partition et le
+premier système de la partition suivante, en l'absence de titrage ou
+@emph{markup} qui les sépare.
+
+@item system-system-spacing
+@funindex system-system-spacing
+
+détermine l'espacement entre deux systèmes d'un même mouvement.
+
+@item markup-markup-spacing
+@funindex markup-markup-spacing
+
+détermine l'espacement entre deux titres ou @emph{markups} de premier
+niveau.
+
+@item last-bottom-spacing
+@funindex last-bottom-spacing
+
+détermine la distance entre le dernier système ou le dernier
+@emph{markup} de haut niveau, et le bas de la surface imprimable --
+autrement dit le haut de la marge basse.
+
+@item top-system-spacing
+@funindex top-system-spacing
+
+détermine l'espace entre le haut de la surface imprimable (le bas de la
+marge haute) et le milieu du premier système. Cette variable n'est
+effective qu'en l'absence de titre ou @emph{markup} de premier niveau
+en haut de page.
+
+@item top-markup-spacing
+@funindex top-markup-spacing
+
+détermine l'espace entre le haut de la surface imprimable (le bas de la
+marge haute) et le premier titre ou @emph{markup} de premier niveau.
+Cette variable n'est effective qu'en l'absence de système en haut de
+page.
+
+@end table
+
+@seealso
+Manuel de notation :
+@ref{Espacement vertical au sein d'un système}.
+
+Morceaux choisis :
+@rlsrnamed{Spacing,Espacements}.
+
+Morceaux choisis :
+@rlsrnamed{Spacing,Espacements}.
+
+
+@node Variables d'espacement horizontal
+@subsection Variables d'espacement horizontal
+@translationof Horizontal spacing \paper variables
+
+@warning{Certains dimensionnements attachés au bloc @code{@bs{}paper}
+sont automatiquement ajustés selon le format du papier, ce qui peut
+conduire à un résultat inattendu --
+voir @ref{Adaptation automatique au format}.}
+
+@menu
+* Variables de marge et de largeur::
+* Variables spécifiques pour l'impression recto-verso::
+* Variables d'indentation et de décalage::
+@end menu
+
+
+@node Variables de marge et de largeur
+@unnumberedsubsubsec Variables de marge et de largeur
+@translationof @code{\paper} variables for widths and margins
+
+Les valeurs par défaut (avant étalonnage) sont définies dans le fichier
+@file{ly/paper-defaults-init.ly}.
+
+@table @code
+
+@item paper-width
+@funindex paper-width
+
+La largeur de la page. Elle correspond par défaut à la largeur du
+format de papier utilisé. Si @code{paper-width} n'a aucun effet en
+matière d'ajustement automatique, cette variable influe sur la variable
+@code{line-width}. Lorsque vous définissez à la fois les valeurs de
+@code{paper-width} et @code{line-width}, les valeurs de
+@code{left-margin} et @code{right-margin} seront recalculées. Voir
+aussi @code{check-consistency}.
+
+@item line-width
+@funindex line-width
+
+la longueur d'un système musical sans indentation et justifié sur toute
+la largeur de la page. La valeur par défaut est égale à
+@code{paper-width}, auquel sont retranchés @code{left-margin} et
+@code{right-margin}. Lorsque vous définissez @code{line-width} sans
+modifier les valeurs de @code{left-margin} et @code{right-margin}, les
+marges seront alors recalculées de telle sorte que les systèmes soient
+centrés. Voir aussi @code{check-consistency}. La variable
+@code{line-width} peut se définir aussi dans un bloc @code{\layout}.
+
+@item left-margin
+@funindex left-margin
+
+la marge entre le bord gauche de la feuille et le début de chaque
+système. La valeur par défaut est de @code{10\mm} ; elle sera
+ajustée selon le format du papier. Lorsque vous définissez
+@code{line-width} et @code{right-margin} sans modifier la valeur de
+@code{left-margin}, cette dernière sera alors égale à
+@code{(paper-width @minus{} line-width @minus{} right-margin)}.
+Lorsque seule @code{line-width} est définie, les deux marges
+correspondent à
+@code{((paper-width @minus{} line-width) / 2)}, ce
+qui a pour effet de centrer les systèmes sur la page. Voir aussi
+@code{check-consistency}.
+
+@item right-margin
+@funindex right-margin
+
+La marge entre le bord droit de la page et la fin des systèmes en pleine
+largeur (non @emph{ragged}). La valeur par défaut est de @code{10\mm}
+et s'ajustera selon le format du papier. Lorsque vous définissez
+@code{line-width} et @code{left-margin}, sans modifier la valeur de
+@code{right-margin}, cette dernière sera alors égale à
+@code{(paper-width @minus{} line-width @minus{} left-margin)}.
+Lorsque seule @code{line-width} est définie, les deux marges
+correspondent à
+@code{((paper-width @minus{} line-width) / 2)}, ce
+qui a pour effet de centrer les systèmes sur la page. Voir aussi
+@code{check-consistency}.
+
+@item check-consistency
+@funindex check-consistency
+
+Lorsqu'elle est activée, cette variable vérifie que @code{left-margin},
+@code{line-width} et @code{right-margin} sont en cohérence, et que
+l'addition de ces trois éléments ne dépassera pas la largeur du papier
+(@code{paper-width}). La valeur par défaut est @code{#t}. Dans
+le cas d'une incohérence, un message d'avertissement est émis et les
+trois variables -- marges et longueur de ligne -- rétablies à leur
+valeur par défaut (ajustées selon le format du papier).
+
+@item ragged-right
+@funindex ragged-right
+
+Lorsque cette variable est activée, les systèmes ne s'étendront pas sur
+la longueur de la ligne, mais s'arrêteront à leur longueur normale.
+La valeur par défaut est @code{#f} mais, si la partition ne comporte
+qu'un seul système, elle passe à @code{#t}. Cette variable peut aussi
+se gérer au sein d'un bloc @code{\layout}.
+
+@item ragged-last
+@funindex ragged-last
+
+Lorsqu'elle est activée, cette variable permet de ne pas étendre le
+dernier système de façon à occuper toute la longueur de la ligne. La
+valeur par défaut est @code{#f}. Cette variable peut aussi
+se gérer au sein d'un bloc @code{\layout}.
+
+@end table
+
+@seealso
+Manuel de notation :
+@ref{Adaptation automatique au format}.
+
+Fichiers d'initialisation :
+@file{ly/paper-defaults-init.ly}.
+
+@knownissues
+La définition explicite d'un format de papier annulera tout réglage des
+marges gauche et droite.
+
+
+@node Variables spécifiques pour l'impression recto-verso
+@unnumberedsubsubsec Variables spécifiques pour l'impression recto-verso
+@translationof @code{\paper} variables for two-sided mode
+
+Les valeurs par défaut (avant étalonnage) sont définies dans le fichier
+@file{ly/paper-defaults-init.ly}.
+
+@table @code
+
+@item two-sided
+@funindex two-sided
+
+@cindex gouttière
+@cindex reliure
+
+Cette variable permet de gérer efficacement les impressions recto-verso.
+Lorsqu'elle est activée, les réglages affectés à @code{inner-margin},
+@code{outer-margin} ainsi que @code{binding-offset} détermineront les
+différentes marges selon qu'il s'agit d'une page paire ou impaire.
+Cette variable s'applique en lieu et place de @code{left-margin} et
+@code{right-margin}. La valeur par défaut est @code{#f}.
+
+@item inner-margin
+@funindex inner-margin
+
+La marge que toutes les pages d'une partie ou de tout un ouvrage devront
+avoir du côté intérieur. Bien entendu, cette variable n'est
+effective que lorsque vous comptez générer un fichier imprimable en
+recto-verso -- propriété @code{two-sided} définie à vrai. La valeur par
+défaut est de @code{10\mm} et s'ajustera selon le format du papier.
+
+@item outer-margin
+@funindex outer-margin
+
+la marge que toutes les pages d'une partie ou de tout un ouvrage devront
+avoir du côté extérieur -- opposé à la reliure. Bien entendu, cette
+variable n'est effective que lorsque vous comptez générer un fichier
+imprimable en recto-verso -- propriété @code{two-sided} définie à vrai.
+La valeur par défaut est de @code{20\mm} et s'ajustera selon le
+format du papier.
+
+@item binding-offset
+@funindex binding-offset
+
+La gouttière, ou marge de reliure, permet d'augmenter en conséquence la
+valeur de la marge intérieure @code{inner-margin} de telle sorte que
+rien ne soit masqué par la reliure. Bien entendu, cette variable n'est
+effective que lorsque vous comptez générer un fichier imprimable en
+recto-verso -- propriété @code{two-sided} définie à vrai. La valeur par
+défaut est de @code{0} et s'ajustera selon le format du papier.
+
+@end table
+
+@seealso
+Manuel de notation :
+@ref{Adaptation automatique au format}.
+
+Fichiers d'initialisation :
+@file{ly/paper-defaults-init.ly}.
+
+
+@node Variables d'indentation et de décalage
+@unnumberedsubsubsec Variables d'indentation et de décalage
+@translationof @code{\paper} variables for shifts and indents
+
+Les valeurs par défaut (avant étalonnage) sont définies dans le fichier
+@file{ly/paper-defaults-init.ly}.
+
+@table @code
+
+@item horizontal-shift
+@funindex horizontal-shift
+
+@c This default value is buried in the middle of page.scm. -mp
+
+Tous les systèmes, ainsi que les titres et séparateurs de systèmes,
+seront poussés d'autant vers la droite. La valeur par défaut est
+de @code{0.0}.
+
+@item indent
+@funindex indent
+
+Le niveau d'indentation du premier système d'une partition. La valeur
+par défaut est de @code{15\mm} et s'ajustera selon le format du
+papier. Cette variable peut aussi se gérer au sein d'un bloc
+@code{\layout}.
+
+@item short-indent
+@funindex short-indent
+
+Le niveau d'indentation de tous les systèmes hormis le premier. La
+valeur par défaut est de @code{0}, et s'ajustera selon le format du
+papier dès lors que vous lui affecterez une valeur. Cette variable peut
+aussi se gérer au sein d'un bloc @code{\layout}.
+
+@end table
+
+@seealso
+Manuel de notation :
+@ref{Adaptation automatique au format}.
+
+Fichiers d'initialisation :
+@file{ly/paper-defaults-init.ly}.
+
+Morceaux choisis :
+@rlsrnamed{Spacing, Espacements}.
+
+
+@node Autres variables du bloc \paper
+@subsection Autres variables du bloc @code{\paper}
+@translationof Other @code{\paper} variables
+
+@menu
+* Variables de gestion des sauts de ligne::
+* Variables de gestion des sauts de page::
+* Variables de gestion des numéros de page::
+* Variables supplémentaires::
+@end menu
+
+
+@node Variables de gestion des sauts de ligne
+@unnumberedsubsubsec Variables de gestion des sauts de ligne
+@translationof @code{\paper} variables for line breaking
+
+@c TODO: Mention that ly:optimal-breaking is on by default? -mp
+
+@table @code
+
+@item max-systems-per-page
+@funindex max-systems-per-page
+
+Le nombre maximal de systèmes qu'une page pourra comporter. Cette
+variable n'est prise en compte, à ce jour, que par l'option
+@code{ly:optimal-breaking}, et n'est pas définie.
+
+@item min-systems-per-page
+@funindex min-systems-per-page
+
+Le nombre minimal de systèmes qu'une page pourra comporter. Attention
+cependant aux risques de débordement s'il est trop important. Cette
+variable n'est prise en compte, à ce jour, que par l'option
+@code{ly:optimal-breaking}, et n'est pas définie.
+
+@item systems-per-page
+@funindex systems-per-page
+
+Le nombre de systèmes que devrait comporter chaque page. Cette variable
+n'est à ce jour prise en charge que par l'algorithme
+@code{ly:optimal-breaking} et n'est pas définie par défaut.
+
+@item system-count
+@funindex system-count
+
+Le nombre de systèmes requis par la partition. Cette variable n'est pas
+définie par défaut. Cette variable peut se gérer au sein d'un bloc
+@code{\layout}.
+
+@end table
+
+@seealso
+Manuel de notation :
+@ref{Sauts de ligne}.
+
+
+@node Variables de gestion des sauts de page
+@unnumberedsubsubsec Variables de gestion des sauts de page
+@translationof @code{\paper} variables for page breaking
+
+Les valeurs par défaut sont définies dans le fichier
+@file{ly/paper-defaults-init.ly}.
+
+@table @code
+
+@item blank-after-score-page-penalty
+@funindex blank-after-score-page-penalty
+
+Pénalité pour apparition d'une page blanche entre deux partitions. Sa
+valeur est par défaut inférieure à celle de
+@code{blank-page-penalty} ; nous préférons qu'une page blanche
+s'insère après la fin de la partition plutôt qu'au milieu.
+
+@item blank-last-page-penalty
+@funindex blank-last-page-penalty
+
+Pénalité pour fin de partition intervenant sur une page impaire. La
+valeur par défaut est de @code{0}.
+
+@item blank-page-penalty
+@funindex blank-page-penalty
+
+Pénalité pour apparition d'une page blanche en cours de partition.
+L'algorithme @code{ly:optimal-breaking} n'en tiendra pas compte
+puisqu'il ne conçoit pas la présence d'une page blanche au milieu d'une
+partition. La valeur par défaut est de @code{5}.
+
+@item page-breaking
+@funindex page-breaking
+
+L'algorithme de calcul des sauts de page à utiliser. Vous avez le choix
+entre @code{ly:minimal-breaking}, @code{ly:page-turn-breaking} et
+@code{ly:optimal-breaking}.
+
+@item page-breaking-system-system-spacing
+@funindex page-breaking-system-system-spacing
+
+Cette variable permet de @qq{tromper} l'algorithme de gestion des sauts
+de page quant à la valeur de @code{system-system-spacing}. Ainsi,
+lorsque @code{page-breaking-system-system-spacing #'padding} a une
+valeur nettement supérieure à @code{system-system-spacing #'padding},
+l'algorithme en question aura tendance à disposer moins de systèmes sur
+une même page. Cette variable est par défaut non définie.
+
+@item page-count
+@funindex page-count
+
+Le nombre de pages que devra comporter la partition. Cette variable est
+par défaut non définie.
+
+@end table
+
+@seealso
+Manuel de notation :
+@ref{Sauts de page},
+@ref{Optimisation des sauts de page},
+@ref{Optimisation des tournes},
+@ref{Minimisation des sauts de page},
+@ref{Présentation en rouleau}.
+
+Fichiers d'initialisation :
+@file{ly/paper-defaults-init.ly}.
+
+
+@node Variables de gestion des numéros de page
+@unnumberedsubsubsec Variables de gestion des numéros de page
+@translationof @code{\paper} variables for page numbering
+
+Les valeurs par défaut sont définies dans le fichier
+@file{ly/paper-defaults-init.ly}.
+
+@table @code
+
+@item auto-first-page-number
+@funindex auto-first-page-number
+
+L'algorithme qui gère les sauts de page prend en compte le fait que le
+premier numéro de page soit pair ou impair. Lorsque cette
+fonctionnalité est activée, l'algorithme des sauts de page décidera de
+lui-même si le premier numéro sera pair ou impair, ce qui se traduira
+par un éventuel incrément de un. La valeur par défaut
+est @code{#f}.
+
+@item first-page-number
+@funindex first-page-number
+
+Le numéro de la première page. La valeur par défaut est
+de @code{#1}.
+
+@item print-first-page-number
+@funindex print-first-page-number
+
+Cette variable permet d'imprimer le numéro de page y compris sur la
+première. La valeur par défaut est @code{#f}.
+
+@item print-page-number
+@funindex print-page-number
+
+La désactivation de cette variable permet d'obtenir des pages non
+numérotées. La valeur par défaut est @code{#t}.
+
+@end table
+
+@seealso
+Fichiers d'initialisation :
+@file{ly/paper-defaults-init.ly}.
+
+@knownissues
+Les pages au numéro impair sont toujours à droite. Pour que la musique
+commence en page 1, le dos de la page de garde doit être vide de telle
+sorte que la page une se retrouve à droite.
+
+
+@node Variables supplémentaires
+@unnumberedsubsubsec Variables supplémentaires
+@translationof Miscellaneous @code{\paper} variables
+
+@table @code
+
+@item page-spacing-weight
+@funindex page-spacing-weight
+
+Cette variable définit l'importance relative des espacements entre la
+page (verticalité) et la ligne (horizontalité). Une valeur élevée
+privilégiera l'espacement au niveau de la page. La valeur par défaut
+est de @code{10}.
+
+@item print-all-headers
+@funindex print-all-headers
+
+Lorsque cette variable est activée, l'intégralité des champs d'entête
+sera imprimée pour chaque bloc @code{\score}, plutôt que les seuls
+champs @code{piece} et @code{opus}. La valeur par défaut
+est @code{#f}.
+
+@item system-separator-markup
+@funindex system-separator-markup
+
+Il s'agit en l'occurrence d'insérer un objet de type @emph{markup} entre
+chaque système, comme on le voit dans nombre de partitions orchestrales.
+Cette variable n'est pas définie par défaut. La commande
+@code{\slashSeparator} -- définie dans le fichier
+@file{ly/titling-init.ly} -- fournit un @emph{markup} relativement
+courant :
+
+@lilypond[quote,verbatim,noragged-right,line-width=30\mm]
+#(set-default-paper-size "a8")
+
+\book {
+ \paper {
+ system-separator-markup = \slashSeparator
+ }
+ \header {
+ tagline = ##f
+ }
+ \score {
+ \relative c'' { c1 \break c1 \break c1 }
+ }
+}
+@end lilypond
+
+@end table
+
+@seealso
+Fichiers d'initialisation :
+@file{ly/titling-init.ly}.
+
+Morceaux choisis :
+@rlsrnamed{Spacing,Espacements}.
+
+@knownissues
+L'entête par défaut, formé d'une seule ligne, est constitué du numéro de
+page et du champ @code{instrument} contenu dans le bloc @code{\header}.
+
+
+@node Mise en forme de la partition
+@section Mise en forme de la partition
+@translationof Score layout
+
+Nous allons voir ici les options du bloc @code{\layout}. Elles sont
+plus particulièrement destinées à gérer la mise en forme de la
+partition.
+
+@menu
+* Le bloc \layout::
+* Définition de la taille de portée::
+@end menu
+
+
+@node Le bloc \layout
+@subsection Le bloc @code{\layout}
+@translationof The @code{\layout} block
+
+@funindex \layout
+
+Alors que le bloc @code{\paper} définit le formatage des pages pour
+l'intégralité du document, le bloc @code{\layout} s'occupe de la mise en
+forme spécifique à la partition. La mise en forme de la musique peut
+concerner toutes les partitions d'un même ouvrage, auquel cas un bloc
+@code{\layout} indépendant se placera en tête de fichier. Dans le cas
+où la mise en forme concerne une partition en particulier, un bloc
+@code{\layout} se placera au sein du bloc @code{\score} en question.
+Sont susceptibles d'apparaître dans un bloc @code{\layout} :
+
+@itemize
+@item
+la fonction Scheme @code{layout-set-staff-size},
+
+@item
+dans des blocs @code{\context}, les modifications apportées aux
+différents contextes, et
+
+@item
+les variables normalement attachées au bloc @code{\paper} qui
+affecteront la mise en forme de la partition.
+
+@end itemize
+
+La fonction @code{layout-set-staff-size} fait l'objet de la rubrique
+suivante, @ref{Définition de la taille de portée}. La modification des
+contextes est abordée dans d'autres chapitres -- voir
+@ref{Modification des greffons de contexte} et
+@ref{Modification des réglages par défaut d'un contexte}. Les variables
+du bloc @code{\paper} que l'on peut retrouver dans un bloc
+@code{\layout} sont :
+
+@itemize
+
+@item
+@code{line-width}, @code{ragged-right} et @code{ragged-last}
+(voir @ref{Variables de marge et de largeur})
+
+@item
+@code{indent} et @code{short-indent}
+(voir @ref{Variables d'indentation et de décalage})
+
+@item
+@code{system-count}
+(voir @ref{Variables de gestion des sauts de ligne})
+
+@end itemize
+
+Voici un exemple de bloc @code{\layout} :
+
+@example
+\layout @{
+ indent = 2\cm
+ \context @{
+ \StaffGroup
+ \override StaffGrouper.staff-staff-spacing.basic-distance = #8
+ @}
+ \context @{
+ \Voice
+ \override TextScript.padding = #1
+ \override Glissando.thickness = #3
+ @}
+@}
+@end example
+
+Il est tout à fait possible que plusieurs blocs @code{\layout}
+cohabitent en tant qu'expressions de niveau supérieur. Ceci se révèle
+particulièrement utile lorsque différents réglages sont stockés dans des
+fichiers séparés qui sont inclus au besoin. Lorsqu'un bloc
+@code{\layout} est évalué, une copie de la configuration du
+@code{\layout} actuel est réalisée en interne, augmentée des
+aménagements apportés. Bien qu'on puisse considérer que le contenu des
+différents blocs @code{\layout} se cumule, c'est la dernière adaptation
+qui aura préséance en cas de situation conflictuelle -- cas typique
+d'une même propriété modifiée dans différents blocs.
+
+Par exemple, placer le bloc suivant
+
+@example
+\layout @{
+ \context @{
+ \Voice
+ \override TextScript.color = #magenta
+ \override Glissando.thickness = #1.5
+ @}
+@}
+@end example
+
+après celui de l'exemple précédent aura pour effet de cumuler les
+adaptations de @code{'padding} et @code{'color} pour l'objet
+@code{TextScript}, mais la dernière adaptation apportée à la propriété
+@code{'thickness} de @code{Glissando} remplace, ou masque, celle
+précédemment établie.
+
+Les blocs @code{\layout} peuvent faire l'objet de variables, aux fins de
+les utiliser ultérieurement. Ceci requiert toutefois une attention
+particulière dans la mesure où cette manière de procéder n'est pas
+équivalente à une définition complète et globale.
+
+Lorsque nous définissons la variable suivante,
+
+@example
+layoutVariable = \layout @{
+ \context @{
+ \Voice
+ \override NoteHead.font-size = #4
+ @}
+@}
+@end example
+
+qui contient une configuration de @code{\layout} avec
+l'adaptation @code{NoteHead #'font-size}, cette combinaison n'est pas
+enregistrée en tant que configuration courante. Notez bien que la
+« configuration courante » est lue lorsque la variable est définie, non
+lorsqu'elle est utilisée ; par voie de conséquence, le contenu de la
+variable dépend de l'endroit où elle se trouve dans le code source.
+
+Notre variable peut alors être utilisée au sein d'un autre bloc
+@code{\layout}, comme par exemple :
+
+@example
+\layout @{
+ \layoutVariable
+ \context @{
+ \Voice
+ \override NoteHead.color = #red
+ @}
+@}
+@end example
+
+Un bloc @code{\layout} qui contient une variable comme ci-dessus, ne
+recopie pas la configuration actuelle ; il utilise en fait le contenu de
+@code{layoutVariable} en tant que configuration de base pour les
+adaptations ultérieures, en conséquence de quoi toute modification
+intervenant entre la définition et l'utilisation de la variable sera
+perdue.
+
+Si @code{layoutVariable} est définie, ou rapatriée par un
+@code{\indude}, juste avant d'être utilisée, son contenu devient la
+configuration actuelle augmentée des adaptations que la variable
+contient. Considérant l'exemple d'utilisation de @code{layoutVariable}
+ci-dessus, le bloc @code{\layout} final contiendra donc :
+
+@example
+ TextScript #'padding = #1
+ TextScript #'color = #magenta
+ Glissando #'thickness = #1.5
+ NoteHead #'font-size = #4
+ NoteHead #'color = #red
+@end example
+
+ainsi que les adaptations de @code{indent} et @code{StaffGrouper}.
+
+Cependant, si la variable avait été définie bien avant le premier bloc
+@code{\layout}, la configuration actuelle ne contiendrait que
+
+@example
+ NoteHead #' font-size= #4 % (écrit dans la définition de la variable)
+ NoteHead #' color = #red % (ajouté après l'utilisation de la variable)
+@end example
+
+Une gestion attentive des variables de @code{\layout} se révèle être un
+outil précieux dans la mise en forme des sources et le retour à une
+configuration donnée.
+
+@seealso
+Manuel de notation :
+@ref{Modification des réglages par défaut d'un contexte}.
+
+Morceaux choisis :
+@rlsrnamed{Spacing,Espacements}.
+
+
+@node Définition de la taille de portée
+@subsection Définition de la taille de portée
+@translationof Setting the staff size
+
+@cindex fonte, définition de la taille
+@cindex portée, définition de la taille
+@funindex layout file
+
+La @strong{taille de portée} @emph{(staff size)} est fixée par défaut à
+20 points. Il existe deux manières de la modifier :
+
+La taille des portées peut se définir globalement pour toutes les
+partitions d'un même fichier, ou plus précisément d'un bloc
+@code{\book}, à l'aide de @code{set-global-staff-size}.
+
+@example
+#(set-global-staff-size 14)
+@end example
+
+@noindent
+Ceci définit donc la hauteur des portées à 14 points par
+défaut ; toutes les fontes seront ajustées en conséquence.
+
+Vous pouvez aussi spécifier une taille à une partition en particulier en
+procédant comme ci-dessous :
+
+@example
+\score@{
+ @dots{}
+ \layout@{
+ #(layout-set-staff-size 15)
+ @}
+@}
+@end example
+
+La fonte Feta fournit les symboles musicaux dans huit tailles
+différentes. Chaque fonte correspond à une hauteur particulière de
+portée ; les petites tailles comportent des symboles plus épais
+pour être cohérent avec l'épaisseur relativement plus importante des
+lignes de la portée. Le tableau suivant répertorie les différentes
+tailles de police.
+
+@quotation
+@multitable @columnfractions .15 .2 .22 .2
+
+@item @b{nom de la fonte}
+@tab @b{hauteur de portée (pt)}
+@tab @b{hauteur de portée (mm)}
+@tab @b{utilisation}
+
+@item feta11
+@tab 11,22
+@tab 3,9
+@tab format de poche
+
+@item feta13
+@tab 12,60
+@tab 4,4
+@tab
+
+@item feta14
+@tab 14,14
+@tab 5,0
+@tab
+
+@item feta16
+@tab 15,87
+@tab 5,6
+@tab
+
+@item feta18
+@tab 17,82
+@tab 6,3
+@tab carnet de chant
+
+@item feta20
+@tab 20
+@tab 7,0
+@tab partition standard
+
+@item feta23
+@tab 22,45
+@tab 7,9
+@tab
+
+@item feta26
+@tab 25,2
+@tab 8,9
+@tab
+@c matériel de location moderne ?
+
+@end multitable
+@end quotation
+
+Ces fontes sont disponibles dans toutes les tailles. La propriété de
+contexte @code{fontSize} ainsi que la propriété de mise en forme
+@code{staff-space} (voir @rinternals{StaffSymbol}) permettent d'ajuster
+individuellement la taille de chaque portée. La taille de chacune des
+portées est relative à la taille globale.
+
+@seealso
+Manuel de notation :
+@ref{Indication de la taille de fonte musicale}.
+
+Morceaux choisis :
+@rlsrnamed{Spacing,Espacements}.
+
+@knownissues
+@code{layout-set-staff-size} ne modifie en rien l'espacement entre les
+lignes d'une portée.
+
+
+@node Sauts
+@section Sauts
+@translationof Breaks
+
+@menu
+* Sauts de ligne::
+* Sauts de page::
+* Optimisation des sauts de page::
+* Optimisation des tournes::
+* Minimisation des sauts de page::
+* Présentation en rouleau::
+* Sauts explicites::
+* Recours à une voix supplémentaire pour gérer les sauts::
+@end menu
+
+
+@node Sauts de ligne
+@subsection Sauts de ligne
+@translationof Line breaking
+
+@cindex saut de ligne
+@cindex ligne, passer à la suivante
+
+Les sauts de ligne sont normalement gérés de façon automatique. Ils
+interviennent de telle sorte qu'une ligne ne soit ni trop resserrée, ni
+trop aérée, et que des lignes consécutives aient à peu près la même
+densité.
+
+Vous pouvez cependant insérer l'instruction @code{\break} à l'endroit où
+vous le jugez utile pour @qq{forcer} le passage à la ligne suivante :
+
+@lilypond[quote,ragged-right,relative=2,verbatim]
+c4 c c c | \break
+c4 c c c |
+@end lilypond
+
+Par défaut, un saut de ligne ne saurait intervenir au beau milieu d'une
+mesure ; LilyPond vous le signalera par un message si tel était le
+cas. Si d'aventure vous voulez forcer un saut de ligne en l'absence de
+barre de mesure, vous devrez auparavant insérer une barre invisible -- à
+l'aide de @code{\bar ""}.
+
+@lilypond[quote,ragged-right,relative=2,verbatim]
+c4 c c
+\bar "" \break
+c |
+c4 c c c |
+@end lilypond
+
+LilyPond ignorera un @code{\break} placé sur une barre à la fin d'une
+mesure dès lors que la précédente avait une note en suspend -- c'est
+typiquement le cas lorsqu'un nolet est à cheval sur deux mesures.
+L'instruction @code{\break} sera alors opérationnelle si vous avez
+auparavant désactivé le @code{Forbid_line_break_engraver} du contexte
+@code{Voice} concerné. Notez bien qu'en pareil cas, les sauts de ligne
+forcés doivent être saisis au sein d'une expression polyphonique :
+
+@lilypond[quote,ragged-right,verbatim]
+\new Voice \with {
+ \remove "Forbid_line_break_engraver"
+} \relative c'' {
+ <<
+ { c2. \times 2/3 { c4 c c } c2. | }
+ { s1 | \break s1 | }
+ >>
+}
+@end lilypond
+
+Selon le même principe, un saut de ligne ne peut intervenir alors qu'une
+ligature s'étend sur deux mesures consécutives. Il faut en ce cas là
+introduire la dérogation @w{@code{\override Beam.breakable = ##t}}.
+
+@lilypond[quote,ragged-right,relative=2,verbatim]
+\override Beam.breakable = ##t
+c2. c8[ c | \break
+c8 c] c2. |
+@end lilypond
+
+L'instruction opposée, @code{\noBreak}, interdira toute tentative de
+saut de ligne à la fin de la mesure où elle est explicitée.
+
+LilyPond dispose de deux variables de base pour influencer l'espacement
+au niveau des lignes. Toutes deux se définissent dans un bloc
+@code{\layout}, @code{indent} réglant l'indentation de la première
+ligne, et @code{line-width} la longueur des lignes.
+
+L'activation du commutateur @code{ragged-right} au sein du bloc
+@code{\layout} aura pour effet de terminer les systèmes là où ils
+prendraient fin normalement plutôt que de les étirer sur toute la
+longueur de la ligne. Ceci est particulièrement utile pour de petits
+fragments ou pour vérifier la densité induite par l'espacement naturel.
+
+@c TODO Check and add para on default for ragged-right
+
+Le commutateur @code{ragged-last} est équivalent à @code{ragged-right},
+à ceci près qu'il n'affecte que la dernière ligne de la pièce.
+
+@example
+\layout @{
+ indent = 0\mm
+ line-width = 150\mm
+ ragged-last = ##t
+@}
+@end example
+
+@cindex sauts de ligne réguliers
+@cindex portée à quatre mesures
+
+L'utilisation conjointe de @code{\break} et de blancs dans une section
+@code{\repeat} vous permettra de positionner des sauts de ligne à
+intervalle régulier. Par exemple, les 28 mesures de ce qui suit, si
+l'on est à 4/4, seront coupées toutes les quatre mesures, pas
+ailleurs :
+
+@example
+<<
+ \repeat unfold 7 @{
+ s1 \noBreak s1 \noBreak
+ s1 \noBreak s1 \break
+ @}
+ @{ @var{et ici la musique@dots{}} @}
+>>
+@end example
+
+@predefined
+@funindex \break
+@code{\break},
+@funindex \noBreak
+@code{\noBreak}.
+@endpredefined
+
+@seealso
+Manuel de notation :
+@ref{Variables de gestion des sauts de ligne}.
+
+Référence des propriétés internes :
+@rinternals{LineBreakEvent}.
+
+Morceaux choisis :
+@rlsrnamed{Spacing,Espacements}.
+
+
+@node Sauts de page
+@subsection Sauts de page
+@translationof Page breaking
+
+La gestion automatique des sauts de page se contrôle à l'aide des
+commandes @code{\pageBreak} et @code{\noPageBreak}. Ces commandes
+fonctionnent de manière analogue à @code{\break} et @code{\noBreak} pour
+les sauts de ligne et se placent donc au moment d'une barre de mesure.
+Elles permettent de forcer, ou d'interdire, un saut de page à l'endroit
+indiqué. Comme on peut s'y attendre, @code{\pageBreak} force le saut de
+ligne.
+
+Les commandes @code{\pageBreak} et @code{\noPageBreak} peuvent se
+trouver à des niveaux supérieurs, entre deux partitions ou
+@emph{markups} de premier rang.
+
+Tout comme @code{ragged-right} et @code{ragged-last} qui permettent de
+gérer la répartition horizontale, LilyPond dispose de commutateurs
+équivalents au niveau de la verticalité : @code{ragged-bottom} et
+@code{ragged-last-bottom}. Lorsqu'ils sont tous deux activés --
+affectés de @code{#t} -- les systèmes ne seront pas répartis sur les
+pages y compris la dernière. Pour de plus amples détails, reportez-vous
+à @ref{Variables d'espacement vertical fixe}.
+
+Les sauts de page sont générés par la fonction @code{page-breaking}.
+LilyPond dispose de trois différents algorithmes en la matière :
+@code{ly:optimal-breaking}, @code{ly:page-turn-breaking} et
+@code{ly:minimal-breaking}. C'est @code{ly:optimal-breaking} qui est
+activé par défaut, mais rien ne vous empêche d'en changer, par
+l'intermédiaire du bloc @code{\paper} :
+
+@example
+\paper @{
+ page-breaking = #ly:page-turn-breaking
+@}
+@end example
+
+@funindex \bookpart
+
+Lorsqu'un ouvrage contient plusieurs partitions et un certain nombre de
+pages, la gestion des sauts de page finit par devenir très gourmande,
+tant au niveau du processeur que de la mémoire. Vous pouvez cependant
+alléger la charge en recourant à des blocs @code{\bookpart} afin de
+sectionner l'ouvrage que vous traitez ; les sauts de page seront
+alors gérés individuellement au niveau de chacune des parties. Par
+ailleurs, cela vous autorisera une gestion différente selon les
+sections.
+
+@example
+\bookpart @{
+ \header @{
+ subtitle = "Préface"
+ @}
+ \paper @{
+ %% Pour une partie constituée principalement de texte
+ %% ly:minimal-breaking est plus judicieux.
+ page-breaking = #ly:minimal-breaking
+ @}
+ \markup @{ @dots{} @}
+ @dots{}
+@}
+\bookpart @{
+ %% Cette partie étant purement musicale,
+ %% retour au style par défaut (optimal-breaking).
+ \header @{
+ subtitle = "Premier mouvement"
+ @}
+ \score @{ @dots{} @}
+ @dots{}
+@}
+@end example
+
+@predefined
+@funindex \pageBreak
+@code{\pageBreak},
+@funindex \noPageBreak
+@code{\noPageBreak}.
+@endpredefined
+
+@seealso
+Manuel de notation :
+@ref{Variables de gestion des sauts de page}.
+
+Morceaux choisis :
+@rlsrnamed{Spacing,Espacements}.
+
+
+@node Optimisation des sauts de page
+@subsection Optimisation des sauts de page
+@translationof Optimal page breaking
+
+@funindex ly:optimal-breaking
+
+LilyPond, pour déterminer où placer un saut de page, utilise par défaut
+la fonction @code{ly:optimal-breaking}. Celle-ci tend à trouver une
+rupture qui évite d'obtenir à la fois une page trop dense ou exagérément
+aérée. Contrairement à la fonction @code{ly:page-turn-breaking}, elle
+n'a aucune notion de ce qu'est une @qq{tourne}.
+
+@seealso
+Morceaux choisis :
+@rlsrnamed{Spacing,Espacements}.
+
+
+@node Optimisation des tournes
+@subsection Optimisation des tournes
+@translationof Optimal page turning
+
+@funindex ly:page-turn-breaking
+
+Aboutir à une configuration des sauts de page de telle sorte que les
+pages de droite se terminent toujours par un silence devient souvent une
+nécessité. En effet, l'exécutant pourra alors tourner la page sans
+risquer de manquer des notes. La fonction @code{ly:page-turn-breaking}
+tend à trouver une rupture qui évite d'obtenir à la fois une page trop
+dense ou exagérément aérée, tout en tenant compte du fait qu'une tourne
+ne saurait intervenir qu'à certains endroits.
+
+L'utilisation de cette fonction se fait en deux étapes. Il vous faut
+tout d'abord l'activer au sein du bloc @code{\paper} comme indiqué à la
+rubrique @ref{Sauts de page}. Vous devrez, dans un deuxième temps,
+informer la fonction des endroits où les sauts de page sont permis.
+
+Cette deuxième étape se réalise de deux manières différentes. Vous
+pouvez spécifier manuellement chaque tourne potentielle en insérant un
+@code{\allowPageTurn} à l'endroit approprié de votre fichier source.
+
+Toutefois, cette option peut vite se révéler fastidieuse selon l'ampleur
+de l'œuvre. Vous pouvez alors recourir au @code{Page_turn_engraver} que
+vous mentionnerez dans un contexte de voix ou de portée. Ce graveur de
+tournes recherchera dans le contexte en question les passages sans note.
+Notez bien qu'il ne recherche pas des silences, mais l'absence de
+notes ; autrement dit, il ne restera pas inactif dans le cadre
+d'une portée polyphonique dont l'une des parties contiendrait des
+silences. Lorsqu'il rencontre un fragment suffisamment long ne
+contenant aucune note, il insère un @code{\allowPageTurn} à la barre
+terminant ce fragment, à moins qu'il ne rencontre en chemin une
+@qq{barre spéciale} -- telle une double barre -- auquel cas il y
+déposera le @code{\allowPageTurn}.
+
+@funindex minimumPageTurnLength
+
+Le @code{Page_turn_engraver} examine la propriété de contexte
+@code{minimumPageTurnLength} pour déterminer quelle doit être la
+longueur d'un fragment sans note avant une tourne. La valeur par
+défaut de @code{minimumPageTurnLength} est
+@code{(ly:make-moment 1 1)}, soit une ronde, et s'ajuste de
+la manière suivante :
+
+@example
+\new Staff \with @{ \consists "Page_turn_engraver" @}
+@{
+ a4 b c d |
+ R1 | % une tourne peut se placer ici
+ a4 b c d |
+ \set Staff.minimumPageTurnLength = #(ly:make-moment 5 2)
+ R1 | % il ne peut pas y avoir de tourne ici
+ a4 b r2 |
+ R1*2 | % une tourne peut se placer ici
+ a1
+@}
+@end example
+
+@funindex minimumRepeatLengthForPageTurn
+
+Le @code{Page_turn_engraver} tient compte des reprises. C'est pourquoi
+il ne permettra une tourne que dans le cas où il y aura suffisamment de
+temps au début et à la fin de la reprise pour que l'exécutant ait le
+temps de revenir à la page précédente. Le @code{Page_turn_engraver} est
+même capable d'interdire un tourne dans le cas d'une reprise de courte
+durée, ajustable au travers de la propriété de contexte
+@code{minimumRepeatLengthForPageTurn}.
+
+Les commandes de tourne -- @code{\pageTurn}, @code{\noPageTurn} et
+@code{\allowPageTurn} -- peuvent s'utiliser à des niveaux supérieurs,
+entre des blocs @code{\score} ou des @emph{markups} de haut niveau.
+
+@predefined
+@funindex \pageTurn
+@code{\pageTurn},
+@funindex \noPageTurn
+@code{\noPageTurn},
+@funindex \allowPageTurn
+@code{\allowPageTurn}.
+@endpredefined
+
+@seealso
+Morceaux choisis :
+@rlsrnamed{Spacing,Espacements}.
+
+@knownissues
+Une partition ne devrait contenir qu'une seule instance du
+@code{Page_turn_engraver}, au risque de les voir se contredire.
+
+
+@node Minimisation des sauts de page
+@subsection Minimisation des sauts de page
+@translationof Minimal page breaking
+
+@funindex ly:minimal-breaking
+
+La fonction @code{ly:minimal-breaking} est celle qui réalise le moins de
+calculs pour positionner les sauts de page. Elle mettra le plus de
+systèmes possible sur une page avant de passer à la suivante. On peut
+donc la préférer lorsque la partition s'étend sur beaucoup de pages ou
+lorsque les autres fonctions de gestion des sauts de page ralentissent
+nettement le traitement, sont trop gourmandes en mémoire ou qu'il y a
+beaucoup de texte. Il suffit de la mentionner au sein du bloc
+@code{\paper} :
+
+@example
+\paper @{
+ page-breaking = #ly:minimal-breaking
+@}
+@end example
+
+@seealso
+Morceaux choisis :
+@rlsrnamed{Spacing,Espacements}.
+
+
+@node Présentation en rouleau
+@subsection Présentation en rouleau
+@translationof One-line page breaking
+
+@funindex ly:one-line-breaking
+
+La fonction @code{ly:one-line-breaking} constitue un algorithme de
+calcul des sauts de pages particulier en ceci que chaque partition fait
+l'objet d'une page unique, d'une seule ligne. Cette fonctionnalité
+s'affranchit de l'impression des titres et marges ; seule la partition
+est affichée.
+
+La largeur de page est ajustée de telle sorte que la pièce la plus
+longue tienne sur une seule ligne. En particulier, les variables
+@code{paper-width}, @code{line-width} et @code{indent} du bloc
+@code{\paper} seront ignorées ; les @code{left-margin} et
+@code{right-margin} seront honorées. La hauteur de page ne sera pas
+modifiée.
+
+
+@node Sauts explicites
+@subsection Sauts explicites
+@translationof Explicit breaks
+
+Il arrive parfois que LilyPond rejette des @code{\break} ou des
+@code{\pageBreak} explicites. Vous pouvez alors prendre le contrôle
+avec ces deux instructions dérogatoires :
+
+@example
+\override NonMusicalPaperColumn.line-break-permission = ##f
+\override NonMusicalPaperColumn.page-break-permission = ##f
+@end example
+
+Lorsque vous désactivez @code{line-break-permission}, LilyPond
+ne passera à la ligne suivante qu'en présence d'un @code{\break}
+explicite, et nulle part ailleurs. De la même façon, la désactivation
+de @code{page-break-permission} aura pour conséquence que LilyPond ne
+changera de page que lorsqu'il rencontrera un @code{\pageBreak}, et
+nulle part ailleurs.
+
+@lilypond[quote,verbatim]
+\paper {
+ indent = #0
+ ragged-right = ##t
+ ragged-bottom = ##t
+}
+
+musique = \relative c'' { c8 c c c }
+
+\score {
+ \new Staff {
+ \repeat unfold 2 { \musique } \break
+ \repeat unfold 4 { \musique } \break
+ \repeat unfold 6 { \musique } \break
+ \repeat unfold 8 { \musique } \pageBreak
+ \repeat unfold 8 { \musique } \break
+ \repeat unfold 6 { \musique } \break
+ \repeat unfold 4 { \musique } \break
+ \repeat unfold 2 { \musique }
+ }
+ \layout {
+ \context {
+ \Score
+ \override NonMusicalPaperColumn.line-break-permission = ##f
+ \override NonMusicalPaperColumn.page-break-permission = ##f
+ }
+ }
+}
+@end lilypond
+
+@seealso
+Morceaux choisis :
+@rlsrnamed{Spacing,Espacements}.
+
+
+@node Recours à une voix supplémentaire pour gérer les sauts
+@subsection Recours à une voix supplémentaire pour gérer les sauts
+@translationof Using an extra voice for breaks
+
+La plupart du temps, les informations concernant les sauts de ligne ou
+de page se retrouvent directement au milieu des notes.
+
+@example
+musique = \relative c'' @{ c4 c c c @}
+
+\score @{
+ \new Staff @{
+ \repeat unfold 2 @{ \musique @} \break
+ \repeat unfold 3 @{ \musique @}
+ @}
+@}
+@end example
+
+Bien que cela constitue un moyen aisé de saisir les commandes
+@code{\break} et @code{\pageBreak}, les données musicales se retrouvent
+mélangées à des informations qui concernent plutôt l'agencement de la
+musique sur le papier. Vous pouvez tout à fait séparer ce qui est
+purement musical et les informations concernant les sauts de ligne ou de
+page en créant une voix supplémentaire dédiée. Cette voix spécifique
+ne contiendra que des blancs -- des silences invisibles @code{\skip} --,
+des @code{\break}, des @code{\pageBreak} et autres informations
+concernant les ruptures.
+
+@lilypond[quote,verbatim]
+music = \relative c'' { c4 c c c }
+
+\score {
+ \new Staff <<
+ \new Voice {
+ s1 * 2 \break
+ s1 * 3 \break
+ s1 * 6 \break
+ s1 * 5 \break
+ }
+ \new Voice {
+ \repeat unfold 2 { \music }
+ \repeat unfold 3 { \music }
+ \repeat unfold 6 { \music }
+ \repeat unfold 5 { \music }
+ }
+ >>
+}
+@end lilypond
+
+Cette manière de procéder est tout à fait indiquée lorsque vous ajustez
+les @code{line-break-system-details} et autres propriétés fort
+intéressantes de @code{NonMusicalPaperColumnGrob}, comme vous pouvez
+le voir au chapitre @ref{Espacement vertical}.
+
+@lilypond[quote,verbatim]
+music = \relative c'' { c4 c c c }
+
+\score {
+ \new Staff <<
+ \new Voice {
+ \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 0))
+ s1 * 2 \break
+
+ \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 35))
+ s1 * 3 \break
+
+ \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 70))
+ s1 * 6 \break
+
+ \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 105))
+ s1 * 5 \break
+ }
+ \new Voice {
+ \repeat unfold 2 { \music }
+ \repeat unfold 3 { \music }
+ \repeat unfold 6 { \music }
+ \repeat unfold 5 { \music }
+ }
+ >>
+}
+@end lilypond
+
+@seealso
+Manuel de notation :
+@ref{Espacement vertical}.
+
+Morceaux choisis :
+@rlsrnamed{Spacing,Espacements}.
+
+
+@node Espacement vertical
+@section Espacement vertical
+@translationof Vertical spacing
+
+@cindex vertical, espacement
+@cindex espacement vertical
+
+L'espacement vertical dépend de trois éléments : la surface
+disponible -- par exemple format de papier et marges --, l'espace qui
+doit séparer les systèmes, et l'espace qui sépare les portées d'un même
+système.
+
+@menu
+* Espacement vertical au sein d'un système::
+* Positionnement explicite des portées et systèmes::
+* Résolution des collisions verticales::
+@end menu
+
+
+@node Espacement vertical au sein d'un système
+@subsection Espacement vertical au sein d'un système
+@translationof Flexible vertical spacing within systems
+
+@cindex distance entre les portées
+@cindex portées, espacement
+@cindex espacement entre les portées
+@cindex espacement au sein d'un système
+
+LilyPond dispose de trois différents mécanismes permettant de contrôler
+l'espacement au sein d'un système selon trois catégories :
+
+@itemize
+
+@item
+@emph{portées isolées},
+
+@item
+@emph{portées regroupées} (portées d'un même groupe, telles celles
+d'un @code{ChoirStaff}, etc.), et
+
+@item
+@emph{lignes de non-portée} (@code{Lyrics}, @code{ChordNames}, etc.).
+
+@end itemize
+
+@c TODO: Clarify this. This almost implies that non-staff lines
+@c have NO effect on the spacing between staves. -mp
+
+La hauteur de chaque système se détermine en deux phases. Les portées
+sont tout d'abord espacées selon la surface disponible. Puis les lignes
+autres que des portées, comme les paroles ou les accords, sont réparties
+entre les portées.
+
+Les paragraphes qui suivent traitent exclusivement de la manière de
+gérer l'espacement entre les lignes d'un système -- portée musicale ou
+non. Pour ce qui a trait aux espacements entre les systèmes,
+mouvements, annotations et marge, ils sont contrôlés par des variables
+attachées au bloc @code{\paper} et font l'objet du chapitre
+@ref{Variables d'espacement vertical fluctuant}.
+
+@menu
+* Propriétés d'espacement au sein d'un système::
+* Espacement de portées isolées::
+* Espacement de portées regroupées::
+* Espacement des lignes rattachées à des portées::
+@end menu
+
+
+@node Propriétés d'espacement au sein d'un système
+@unnumberedsubsubsec Propriétés d'espacement au sein d'un système
+@translationof Within-system spacing properties
+
+L'espacement entre les portées est géré par deux jeux de propriétés
+d'objet graphique (@emph{grob}). Le premier, associé à l'objet
+graphique @code{VerticalAxisGroup}, est créé pour toute ligne de portée
+ou de non-portée. Le second, associé à l'objet graphique
+@code{StaffGrouper}, doit être explicitement créé pour un regroupement
+de portées particulier. Les propriétés qui leur sont attachées sont
+abordées en fin de section.
+
+Le nom de ces propriétés, sauf @code{staff-affinity}, suit le schéma
+@code{@var{item1}-@var{item2}-spacing} -- @code{@var{item1}} et
+@code{@var{item2}} étant les éléments à espacer. Notez bien que
+@code{@var{item2}} n'est pas forcément placé au-dessous : c'est le
+cas pour la propriété @code{nonstaff-relatedstaff-spacing} qui spécifie
+l'espacement d'une ligne de non-portée alors que sa
+@code{staff-affinity} a été déterminée à @code{UP}.
+
+Toutes ces distances sont mesurées entre les points de référence
+respectifs des éléments considérés.
+Le @i{point de référence} d'une portée est le centre vertical du
+@code{StaffSymbol} -- la ligne médiane si @code{line-count} est impair,
+l'interligne médian si @code{line-count} est pair.
+Quant aux lignes rattachées à des portées -- lignes de non-portée -- le
+tableau suivant présente le @i{point de référence} pour chacune
+d'elles :
+
+@multitable {Ligne de non-portée} {Point de référence}
+@headitem Ligne de non-portée @tab Point de référence
+@item @code{ChordNames} @tab ligne de base
+@item @code{NoteNames} @tab ligne de base
+@item @code{Lyrics} @tab ligne de base
+@item @code{Dynamics} @tab centre vertical
+@item @code{FiguredBass} @tab point le plus haut
+@item @code{FretBoards} @tab ligne supérieure
+@end multitable
+
+En voici une représentation graphique :
+
+@c KEEP LY
+@lilypond[quote,noragged-right,line-width=110\mm]
+#(define zero-space '((padding . -inf.0) (basic-distance . 0)))
+
+alignToZero = \with {
+ \override VerticalAxisGroup.nonstaff-relatedstaff-spacing = #zero-space
+ \override VerticalAxisGroup.nonstaff-nonstaff-spacing = #zero-space
+}
+lowerCaseChords = \with {
+ chordNameLowercaseMinor = ##t
+}
+staffAffinityDown = \with {
+ \override VerticalAxisGroup.staff-affinity = #DOWN
+}
+labelContext =
+#(define-music-function
+ (parser location context)
+ (string?)
+ #{ s1*0^\markup { \typewriter #context } #})
+
+\layout {
+ \context { \Dynamics \alignToZero }
+ \context { \FiguredBass \alignToZero }
+ \context { \Lyrics \alignToZero }
+ \context { \NoteNames \alignToZero \staffAffinityDown }
+ \context { \ChordNames \alignToZero
+ \staffAffinityDown
+ \lowerCaseChords }
+ \context { \FretBoards \alignToZero \staffAffinityDown }
+ \context { \Score
+ \override BarLine.stencil = ##f
+ \override DynamicText.self-alignment-X = #-1
+ \override FretBoard.X-offset = #1.75
+ \override InstrumentName.minimum-Y-extent = #'(-2 . 2)
+ \override InstrumentName.extra-offset = #'(0 . -0.5)
+ \override TextScript.minimum-Y-extent = #'(-2 . 3)
+ \override TimeSignature.stencil = ##f
+ }
+}
+
+%% Contextes dont le point de référence est la ligne de base :
+%% ChordNames, NoteNames, et Lyrics
+<<
+ \new ChordNames { \chords { g1:m } }
+ \new NoteNames { s1 | g1 | }
+ \new RhythmicStaff {
+ \set RhythmicStaff.instrumentName = #"ligne de base (baseline) "
+ \textLengthOn
+ \labelContext "ChordNames" s1 |
+ \labelContext "NoteNames" s1 |
+ \labelContext "Lyrics" s1 |
+ }
+ \new Lyrics { \lyrics { \skip 1*2 | ghijk1 | } }
+>>
+
+%% Le point de référence de Dynamics est le milieu de la ligne
+<<
+ \new RhythmicStaff {
+ \set RhythmicStaff.instrumentName = #"centre vertical "
+ \labelContext "Dynamics" s1*3
+ }
+ \new Dynamics { s1\mp s\fp }
+>>
+
+%% Le point de référence de FiguredBass est son point le plus haut
+<<
+ \new RhythmicStaff {
+ \set RhythmicStaff.instrumentName = #"point le plus haut "
+ \labelContext "FiguredBass" s1
+ }
+ \new FiguredBass { \figuremode { <6 5>1 } }
+>>
+
+%% Le point de référence de FretBoards est la ligne du haut
+\include "predefined-guitar-fretboards.ly"
+<<
+ \new FretBoards { \chordmode { e1 } }
+ \new RhythmicStaff {
+ \set RhythmicStaff.instrumentName = #"ligne du haut "
+ \labelContext "FretBoards " s1
+ }
+>>
+@end lilypond
+
+Hormis @code{staff-affinity} -- propriété attachée au @emph{grob}
+@code{VerticalAxisGroup} --, chacune de ces propriétés est enregistrée
+sous la forme d'une liste associative dont la structure est
+identique à celle des variables du bloc @code{\paper} que nous avons
+examinées au chapitre
+@ref{Variables d'espacement vertical fluctuant}. Les particularités en
+matière de modification d'une liste associative font l'objet d'un
+@rusernamed{Modification de listes associatives,chapitre particulier}.
+Les propriétés des objets graphiques se règlent avec un @code{\override}
+mentionné dans un bloc @code{\score} ou @code{\layout}, pas dans le bloc
+@code{\paper}.
+
+L'exemple suivant illustre deux façons de modifier une liste
+associative. La première déclaration n'agit que sur une seule clé,
+alors que la seconde redéfinit la propriété dans son intégralité.
+
+@example
+\new Staff \with @{
+ \override VerticalAxisGroup.staff-staff-spacing.basic-distance = #10
+@} @{ @dots{} @}
+
+\new Staff \with @{
+ \override VerticalAxisGroup.staff-staff-spacing =
+ #'(('basic-distance . 10)
+ (minimum-distance . 9)
+ (padding . 1)
+ (stretchability . 10))
+@} @{ @dots{} @}
+@end example
+
+La modification d'un espacement au niveau global se mentionne au sein du
+bloc @code{\layout} :
+
+@example
+\layout @{
+ \context @{
+ \Staff
+ \override VerticalAxisGroup.staff-staff-spacing.basic-distance = #10
+ @}
+@}
+@end example
+
+Les réglages concernant les propriétés d'espacement vertical des objets
+graphiques sont répertoriées aux chapitres
+@rinternals{VerticalAxisGroup} et @rinternals{StaffGrouper}.
+Les propriétés relatives aux lignes de non-portée sont répertoriées
+selon la définition de leur contexte dans la
+@rinternalsnamed{Contexts,Référence des propriétés internes}.
+
+
+@subsubheading Propriétés de l'objet @code{VerticalAxisGroup}
+@c VO Properties of the @code{VerticalAxisGroup} grob
+
+Les propriétés de l'objet @code{VerticalAxisGroup} s'ajustent à l'aide
+d'un @code{\override} au niveau d'un contexte @code{Staff} (ou son
+équivalent).
+
+@table @code
+@item staff-staff-spacing
+Il s'agit de la distance entre la portée en cours et la portée qui suit
+au sein du même regroupement, qu'il y ait ou non une ligne de non-portée
+(@code{Lyrics} ou autre) entre les deux. Cette propriété ne s'applique
+pas à la dernière portée d'un système.
+
+En tout état de cause, la fonction Scheme @code{staff-staff-spacing}
+d'un @code{VerticalAxisGroup} affectera les propriétés du
+@code{StaffGrouper} si la portée est incluse dans un regroupement ;
+elle s'appliquera au @code{default-staff-staff-spacing} en l'absence de
+regroupement. Les portées peuvent donc s'aligner différemment selon
+qu'elles sont ou non regroupées. Pour obtenir le même espacement sans
+tenir compte des éventuels regroupements, cette fonction peut faire
+place à une complète redéfinition des espacements fluctuants à l'aide de
+règles dérogatoires comme vu précédemment.
+
+@item default-staff-staff-spacing
+Il s'agit de la distance qui s'appliquera par défaut aux portées
+isolées, à moins que @code{staff-staff-spacing} n'ait été redéfini
+explicitement par un @code{\override}.
+
+@item staff-affinity
+Il s'agit de la direction -- @code{UP}, @code{DOWN} ou @code{CENTER} --
+que prendra une ligne de non-portée pour aller s'accoler aux portées
+adjacentes . Si vous lui attribuez @code{CENTER}, cette ligne de
+non-portée ira se placer à équidistance entre les portées qui
+l'encadrent, tout en tenant compte des éventuels risques de collision et
+des autres contraintes d'espacement. Des lignes de non-portée
+adjacentes devraient avoir une @code{staff-affinity} allant de haut en
+bas -- autrement dit, pas de @code{UP} après un @code{DOWN}.
+Une ligne de non-portée en dessous d'un système devrait avoir sa
+@code{staff-affinity} définie à @code{UP}. De la même manière, lorsque
+cette ligne surplombe un système, sa @code{staff-affinity} devrait être
+définie à @code{DOWN}. Prenez garde à la valeur que vous affectez à
+@code{staff-affinity} : si vous affectez la valeur @code{#f} à
+une ligne de non-portée, cette ligne sera considérée comme étant une
+portée ; à l'inverse, utiliser la propriété @code{staff-affinity}
+pour une portée lui fera perdre cette qualité.
+
+@c TODO: verify last clause below ("even if other...")
+
+@item nonstaff-relatedstaff-spacing
+Il s'agit de la distance entre la ligne de non-portée en cours et la
+portée la plus proche selon la @code{staff-affinity}, à la double
+condition qu'il n'y ait pas déjà une autre ligne de non-portée et que la
+valeur de @code{staff-affinity} soit @code{UP} ou @code{DOWN}. Lorsque
+la valeur de @code{staff-affinity} est égale à @code{CENTER}, la valeur
+de @code{nonstaff-relatedstaff-spacing} servira à centrer la ligne de
+non-portée entre les deux portées adjacentes même si une autre
+non-portée est présente (quelque soit le côté).
+
+@item nonstaff-nonstaff-spacing
+Il s'agit de la distance entre deux lignes de non-portée selon
+l'orientation définie par @code{staff-affinity} et dès lors qu'elles ont
+la même orientation. Bien entendu, ceci ne peut concerner que les
+valeurs @code{UP} et @code{DOWN} de @code{staff-affinity}.
+
+@item nonstaff-unrelatedstaff-spacing
+Il s'agit de la distance entre une ligne de non-portée et la portée à
+l'opposé de l'orientation adoptée, à la double condition qu'il n'y ait
+pas déjà une autre ligne de non-portée et que la valeur de
+@code{staff-affinity} soit @code{UP} ou @code{DOWN}. Cette propriété
+trouve toute sa légitimité pour décaler une ligne de @code{Lyrics} de la
+portée à laquelle elle ne correspond pas.
+@end table
+
+
+@subsubheading Propriétés de l'objet @code{StaffGrouper}
+@c VO Properties of the @code{StaffGrouper} grob
+
+Les propriétés de l'objet @code{StaffGrouper} s'ajustent à l'aide
+d'un @code{\override} au niveau d'un contexte @code{StaffGroup} (ou son
+équivalent).
+
+@table @code
+@item staff-staff-spacing
+Il s'agit de la distance entre deux portées consécutives d'un même
+système. La propriété @code{staff-staff-spacing} de l'objet
+@code{VerticalAxisGroup} d'une portée en particulier peut se redéfinir à
+l'aide de règles dérogatoires.
+
+@item staffgroup-staff-spacing
+Il s'agit de la distance entre la dernière portée d'un regroupement et
+la portée suivante, au sein d'un même système, y compris lorsqu'une ou
+plusieurs lignes de non-portée (tel @code{Lyrics}) s'insèrent entre les
+deux. Cette propriété ne concerne pas la dernière portée d'un système.
+Dans le cas où la propriété @code{staff-staff-spacing} d'une portée du
+regroupement a été ajustée au niveau de son propre
+@code{VerticalAxisGroup}, cette dernière aura préséance.
+@end table
+
+@seealso
+Fichiers d'initialisation :
+@file{ly/engraver-init.ly},
+@file{scm/define-grobs.scm}.
+
+Référence des propriétés internes :
+@rinternals{Contexts},
+@rinternals{VerticalAxisGroup},
+@rinternals{StaffGrouper}.
+
+
+@node Espacement de portées isolées
+@unnumberedsubsubsec Espacement de portées isolées
+@translationof Spacing of ungrouped staves
+
+Les @code{Staff}, @code{DrumStaff}, @code{TabStaff} entre autres sont
+des contextes de @qq{portée} pouvant contenir plusieurs voix, mais pas
+une portée.
+
+L'espacement de ces @i{portées isolées} est géré par les propriétés
+suivantes :
+
+@itemize
+@item Propriétés du @code{VerticalAxisGroup} :
+@itemize
+@item @code{default-staff-staff-spacing}
+@item @code{staff-staff-spacing}
+@end itemize
+@end itemize
+
+Ces propriétés d'objet graphique sont expliquées une à une au chapitre
+@ref{Propriétés d'espacement au sein d'un système}.
+
+Certaines propriétés supplémentaires s'appliqueront dès lors que
+ces portées sont regroupées -- voir
+@ref{Espacement de portées regroupées}.
+
+L'exemple suivant illustre la manière de gérer l'espacement de portées
+isolées à l'aide de la propriété @code{default-staff-staff-spacing}.
+Les mêmes règles appliquées de manière dérogatoire au
+@code{staff-staff-spacing} produiront les mêmes effets, y compris au
+sein de regroupements.
+
+@lilypond[verbatim,quote,staffsize=16]
+\layout {
+ \context {
+ \Staff
+ \override VerticalAxisGroup.default-staff-staff-spacing =
+ #'((basic-distance . 8)
+ (minimum-distance . 7)
+ (padding . 1))
+ }
+}
+
+<<
+ % The very low note here needs more room than 'basic-distance
+ % can provide, so the distance between this staff and the next
+ % is determined by 'padding.
+ \new Staff { b,2 r | }
+
+ % Here, 'basic-distance provides enough room, and there is no
+ % need to compress the space (towards 'minimum-distance) to make
+ % room for anything else on the page, so the distance between
+ % this staff and the next is determined by 'basic-distance.
+ \new Staff { \clef bass g2 r | }
+
+ % By setting 'padding to a negative value, staves can be made to
+ % collide. The lowest acceptable value for 'basic-distance is 0.
+ \new Staff \with {
+ \override VerticalAxisGroup.default-staff-staff-spacing =
+ #'((basic-distance . 3.5)
+ (padding . -10))
+ } { \clef bass g2 r | }
+ \new Staff { \clef bass g2 r | }
+>>
+@end lilypond
+
+@seealso
+Fichiers d'initialisation :
+@file{scm/define-grobs.scm}.
+
+Morceaux choisis :
+@rlsrnamed{Spacing,Espacements}.
+
+Référence des propriétés internes :
+@rinternals{VerticalAxisGroup}.
+
+
+@node Espacement de portées regroupées
+@unnumberedsubsubsec Espacement de portées regroupées
+@translationof Spacing of grouped staves
+
+Dans les partitions orchestrales ou de grande ampleur, il arrive
+souvent que des portées soient regroupées. L'espacement est alors plus
+important entre deux regroupements qu'entre les portées d'un même
+groupe.
+
+Les @i{regroupements de portées} tels le @code{StaffGroup} ou le
+@code{ChoirStaff} sont des contextes qui peuvent contenir simultanément
+une ou plusieurs portées.
+
+L'espacement entre les portées d'un même regroupement est géré par les
+propriétés suivantes :
+
+@itemize
+@item Propriétés du @code{VerticalAxisGroup} :
+@itemize
+@item @code{staff-staff-spacing}
+@end itemize
+@item Propriétés du @code{StaffGrouper} :
+@itemize
+@item @code{staff-staff-spacing}
+@item @code{staffgroup-staff-spacing}
+@end itemize
+@end itemize
+
+Ces propriétés d'objet graphique sont expliquées une à une au chapitre
+@ref{Propriétés d'espacement au sein d'un système}.
+
+L'exemple suivant illustre la manière de gérer l'espacement de portées
+regroupées, à l'aide des propriétés de l'objet graphique
+@code{StaffGrouper} :
+
+@lilypond[verbatim,quote,staffsize=16]
+\layout {
+ \context {
+ \Score
+ \override StaffGrouper.staff-staff-spacing.padding = #0
+ \override StaffGrouper.staff-staff-spacing.basic-distance = #1
+ }
+}
+
+<<
+ \new PianoStaff \with {
+ \override StaffGrouper.staffgroup-staff-spacing.basic-distance = #20
+ } <<
+ \new Staff { c'1 }
+ \new Staff { c'1 }
+ >>
+
+ \new StaffGroup <<
+ \new Staff { c'1 }
+ \new Staff { c'1 }
+ >>
+>>
+@end lilypond
+
+
+@seealso
+Fichiers d'initialisation :
+@file{scm/define-grobs.scm}.
+
+Morceaux choisis :
+@rlsrnamed{Spacing,Espacements}.
+
+Référence des propriétés internes:
+@rinternals{VerticalAxisGroup},
+@rinternals{StaffGrouper}.
+
+
+@node Espacement des lignes rattachées à des portées
+@unnumberedsubsubsec Espacement des lignes rattachées à des portées
+@translationof Spacing of non-staff lines
+
+Les @i{lignes de non-portée}, comme les @code{Lyrics} ou les
+@code{ChordNames} sont des contextes dont les objets de rendu sont
+gravés à l'instar des portées -- une ligne horizontale dans un système.
+En fait, les lignes de non-portée sont des contextes qui vont créer un
+objet de rendu @code{VerticalAxisGroup}.
+
+L'espacement des lignes de non-portée est géré par les propriétés
+suivantes :
+
+@itemize
+@item Propriétés du @code{VerticalAxisGroup} :
+@itemize
+@item @code{staff-affinity}
+@item @code{nonstaff-relatedstaff-spacing}
+@item @code{nonstaff-nonstaff-spacing}
+@item @code{nonstaff-unrelatedstaff-spacing}
+@end itemize
+@end itemize
+
+Ces propriétés d'objet graphique sont expliquées une à une au chapitre
+@ref{Propriétés d'espacement au sein d'un système}.
+
+L'exemple suivant utilise la propriété @code{nonstaff-nonstaff-spacing}
+pour gérer l'espacement entre des lignes consécutives de non-portée.
+Vous noterez que la valeur élevée attribuée à la clé
+@code{stretchability} permet aux paroles de s'étirer plus que de raison.
+
+@lilypond[verbatim,quote,staffsize=16]
+\layout {
+ \context {
+ \Lyrics
+ \override VerticalAxisGroup.nonstaff-nonstaff-spacing.stretchability = #1000
+ }
+}
+
+\new StaffGroup
+<<
+ \new Staff \with {
+ \override VerticalAxisGroup.staff-staff-spacing = #'((basic-distance . 30))
+ } { c'1 }
+ \new Lyrics \with {
+ \override VerticalAxisGroup.staff-affinity = #UP
+ } \lyricmode { up }
+ \new Lyrics \with {
+ \override VerticalAxisGroup.staff-affinity = #CENTER
+ } \lyricmode { center }
+ \new Lyrics \with {
+ \override VerticalAxisGroup.staff-affinity = #DOWN
+ } \lyricmode { down }
+ \new Staff { c'1 }
+>>
+@end lilypond
+
+@seealso
+Fichiers d'initialisation :
+@file{ly/engraver-init.ly},
+@file{scm/define-grobs.scm}.
+
+Morceaux choisis :
+@rlsrnamed{Spacing,Espacements}.
+
+@c @lsr{spacing,page-spacing.ly},
+@c @lsr{spacing,alignment-vertical-spacing.ly}.
+
+Référence des propriétés internes :
+@rinternals{Contexts},
+@rinternals{VerticalAxisGroup}.
+
+
+@node Positionnement explicite des portées et systèmes
+@subsection Positionnement explicite des portées et systèmes
+@translationof Explicit staff and system positioning
+
+Pour bien comprendre comment fonctionnent les réglages de
+@code{VerticalAxisGroup} et de @code{\paper} abordés dans les deux
+rubriques précédentes, rien ne vaut une collection d'exemples illustrant
+les différentes mises au point du décalage vertical appliqué aux portées
+et systèmes distribués sur une page.
+
+Une autre approche de l'espacement vertical est le recours à
+@code{NonMusicalPaperColumn #'line-break-system-details}. Alors que
+@code{VerticalAxisGroup} et @code{\paper} gèrent un décalage vertical,
+@code{NonMusicalPaperColumn #'line-break-system-details} spécifiera le
+positionnement vertical absolu sur la page.
+
+@code{NonMusicalPaperColumn #'line-break-system-details} prend en charge
+une liste associative de trois mises au point :
+
+@itemize
+@item @code{X-offset}
+@item @code{Y-offset}
+@item @code{alignment-distances}
+@end itemize
+
+Les dérogations en matière d'objet graphique, y compris celles
+concernant les @code{NonMusicalPaperColumn} ci-dessus, peuvent se placer
+à trois différents endroits de votre fichier source :
+
+@itemize
+@item directement au beau milieu des notes
+@item au sein d'un bloc @code{\context}
+@item dans un bloc @code{\with}
+@end itemize
+
+Le réglage de @code{NonMusicalPaperColumn} s'effectue à l'aide d'une
+simple commande @code{\override} au sein d'un bloc @code{\context} ou
+@code{\with}. Dans le cas ou il est stipulé au fil des notes, c'est la
+commande spécifique @code{\overrideProperty} qui doit intervenir. Voici
+quelques exemples de réglages de @code{NonMusicalPaperColumn} à l'aide
+de la commande @code{\overrideProperty} :
+
+@example
+\overrideProperty NonMusicalPaperColumn.line-break-system-details #'((X-offset . 20))
+
+\overrideProperty NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 40))
+
+\overrideProperty NonMusicalPaperColumn.line-break-system-details #'((X-offset . 20)
+ (Y-offset . 40))
+
+\overrideProperty NonMusicalPaperColumn.line-break-system-details #'((alignment-distances . (15)))
+
+\overrideProperty NonMusicalPaperColumn.line-break-system-details #'((X-offset . 20)
+ (Y-offset . 40)
+ (alignment-distances . (15)))
+@end example
+
+Nous allons maintenant voir ces différents réglages en action.
+Commençons par examiner un exemple dépourvu de toute mise au point.
+
+@c \book { } is required in these examples to ensure the spacing
+@c overrides can be seen between systems. -np
+
+@lilypond[verbatim,quote,staffsize=16]
+\header { tagline = ##f }
+\paper { left-margin = 0\mm }
+\book {
+ \score {
+ <<
+ \new Staff <<
+ \new Voice {
+ s1*5 \break
+ s1*5 \break
+ s1*5 \break
+ }
+ \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
+ >>
+ \new Staff {
+ \repeat unfold 15 { d'4 d' d' d' }
+ }
+ >>
+ }
+}
+@end lilypond
+
+Cette partition isole les informations de saut de ligne ou de page dans
+une voix spécifique. La mise en forme est ainsi séparée des événements
+musicaux ; ceci nous permettra d'y voir plus clair au fur et à
+mesure que nous avancerons. Pour plus de précisions, relisez
+@ref{Recours à une voix supplémentaire pour gérer les sauts}.
+
+Les @code{\break} explicites répartissent la musique en lignes de cinq
+mesures chacune. L'espacement vertical est celui que LilyPond attribue
+par défaut. Nous pouvons, afin de fixer explicitement le point
+d'attache vertical de chacun des systèmes, définir un doublet
+@code{Y-offset} en tant qu'attribut du @code{line-break-system-details}
+de l'objet @code{NonMusicalPaperColumn} :
+
+@lilypond[verbatim,quote,staffsize=16]
+\header { tagline = ##f }
+\paper { left-margin = 0\mm }
+\book {
+ \score {
+ <<
+ \new Staff <<
+ \new Voice {
+ \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 0))
+ s1*5 \break
+ \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 40))
+ s1*5 \break
+ \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 80))
+ s1*5 \break
+ }
+ \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
+ >>
+ \new Staff {
+ \repeat unfold 15 { d'4 d' d' d' }
+ }
+ >>
+ }
+}
+@end lilypond
+
+Vous aurez remarqué que nous n'avons déterminé qu'une seule valeur, même
+si la liste associative de @code{line-break-system-details} peut en
+comporter un certain nombre. Vous aurez aussi noté que la propriété
+@code{Y-offset} détermine ici le point de départ de chacun des systèmes
+de la page.
+
+Maintenant que chaque système est explicitement positionné, nous pouvons
+jouer sur la distance séparant les portées de chacun des systèmes, grâce
+à la sous-propriété @code{alignment-distances} de
+@code{line-break-system-details}.
+
+@lilypond[verbatim,quote,staffsize=16]
+\header { tagline = ##f }
+\paper { left-margin = 0\mm }
+\book {
+ \score {
+ <<
+ \new Staff <<
+ \new Voice {
+ \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 20)
+ (alignment-distances . (15)))
+ s1*5 \break
+ \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 60)
+ (alignment-distances . (15)))
+ s1*5 \break
+ \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 100)
+ (alignment-distances . (15)))
+ s1*5 \break
+ }
+ \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
+ >>
+ \new Staff {
+ \repeat unfold 15 { d'4 d' d' d' }
+ }
+ >>
+ }
+}
+@end lilypond
+
+Nous avons maintenant assigné deux valeurs différentes à l'attribut
+@code{line-break-system-details} de l'objet
+@code{NonMusicalPaperColumn}. @code{line-break-system-details} pourrait
+prendre bien d'autres paramètres d'espacement, y compris un doublet
+@code{X-offset}, mais nous n'avons utilisé que @code{Y-offset} et
+@code{alignment-distances} pour contrôler le positionnement de chaque
+système et de chaque portée. Vous noterez enfin que
+@code{alignment-distances} traite le positionnement des portées, non
+d'un regroupement de portées.
+
+@lilypond[verbatim,quote,staffsize=16]
+\header { tagline = ##f }
+\paper { left-margin = 0\mm }
+\book {
+ \score {
+ <<
+ \new Staff <<
+ \new Voice {
+ \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 0)
+ (alignment-distances . (30 10)))
+ s1*5 \break
+ \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 60)
+ (alignment-distances . (10 10)))
+ s1*5 \break
+ \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 100)
+ (alignment-distances . (10 30)))
+ s1*5 \break
+ }
+ \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
+ >>
+ \new StaffGroup <<
+ \new Staff { \repeat unfold 15 { d'4 d' d' d' } }
+ \new Staff { \repeat unfold 15 { e'4 e' e' e' } }
+ >>
+ >>
+ }
+}
+@end lilypond