X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Ffr%2Fnotation%2Fspacing.itely;fp=Documentation%2Ffr%2Fnotation%2Fspacing.itely;h=91a1e36faecf3a5e03a76ce287b30079cb47bd6f;hb=e90f0536f9be39ada0bef0aeb0d275dec3b2fb5b;hp=0000000000000000000000000000000000000000;hpb=a8c9e8a7ca320ab0df5fd32e717fd62cd7635ce6;p=lilypond.git diff --git a/Documentation/fr/notation/spacing.itely b/Documentation/fr/notation/spacing.itely new file mode 100644 index 0000000000..91a1e36fae --- /dev/null +++ b/Documentation/fr/notation/spacing.itely @@ -0,0 +1,3662 @@ +@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- + +@ignore + Translation of GIT committish: 657b89ab28b463ccda7991070242353cf38dc25d + + 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.14.0" + +@c Translators: Frédéric Chiasson, Jean-Charles Malahieude + +@ignore +GDP TODO list + +Negative numbers are allowed: +> Are you sure? The following works well +> \paper{ +> first-page-number = -2 +> } +> and prints page number -1 on the second page, for example. + + +In 5.2.1 the @refbugs (line 495 in spacing.itely on master) it +states: + +"@code{layout-set-staff-size} does not change the distance between +the +staff lines." + +Could we add a sentence: +"Use instead the pair fontSize = #@var{N} + \override StaffSymbol #'staff-space = #(magstep +@var{N}) +inside the Staff context to change the size of the font and the +distance between +staff lines accordingly." + +Actually I found, that the @internalsref{StaffSymbol} at line 481 +sends to an incomplete +documentation. The property staff-space is not explained here. I +thought Y-extent might be of +help, but it is in turn explained by x-space which again is +missing from the list. Who has the +knowledge to fix this? + + +Clarify +http://code.google.com/p/lilypond/issues/detail?id=68 + +@end ignore + + +@node Gestion de l'espace +@chapter Gestion de l'espace +@translationof Spacing issues + +L'agencement général d'une partition dépend de trois facteurs +interdépendants@tie{}: la mise en page, les sauts de ligne et +l'espacement. Les choix faits en matière d'espacement détermineront la +densité de chacun des systèmes, ce qui influera sur le positionnement +des sauts de lignes et, par voie de conséquence, sur le nombre de pages +de la partition. + +En pratique, cette procédure comporte quatre étapes. Dans un premier +temps, des distances élastiques @emph{(springs)} sont déterminées sur la +base des durées. Sont alors calculées différentes possibilités de saut +de ligne, chacune se voyant attribuer un @qq{coefficient de laideur}, +puis est estimée la hauteur de chaque système. LilyPond opte enfin pour +la combinaison entre sauts de page et de ligne qui offre la meilleure +occupation de l'espace, tant horizontalement que verticalement. + +Les réglages qui influencent la mise en forme se placent dans deux blocs +différents. Le bloc @w{@code{\paper @{@dots{}@}}} étudié à la rubrique +@ref{Mise en forme de la page} contient les réglages applicables à +l'intégralité du document -- à toutes les partitions d'un ouvrage -- +tels que format du papier, impression ou non des numéros de page, etc. +Quant au bloc @w{@code{\layout @{@dots{}@}}}, qui fait l'objet de la +rubrique @ref{Mise en forme de la partition}, il détermine la mise en +forme de la musique@tie{}: le nombre de systèmes utilisés, l'espacement +des regroupements de portées, etc. + +@menu +* Mise en forme de la page:: +* Mise en forme de la partition:: +* Sauts:: +* Espacement vertical:: +* Espacement horizontal:: +* Réduction du nombre de pages de la partition:: +@end menu + +@cindex ragged, aligné +@cindex aligné, ragged + +@warning{Vous verrez au fil de ce chapitre apparaître certains termes +dont la traduction vous semblera assurément erronée. Il n'en est +cependant rien@tie{}: certains termes techniques ont une histoire +particulière selon leur langue d'origine. Ainsi, le vocable anglais +@emph{Ragged} signifie en lambeau, en loques@tie{}; dans l'univers +typographique, un maître français voit un alignement à gauche -- il dira +@qq{au fer à gauche} -- alors que son homologue anglophone constate un +@emph{ragged-right} -- donc du vide à droite.} + + +@node Mise en forme de la page +@section Mise en forme de la page +@translationof Page layout + +Nous allons examiner ici les options qui contrôlent la mise en forme des +pages attachées au bloc @code{\paper}. + +@menu +* Le bloc \paper:: +* Format du papier et adaptation automatique:: +* Variables d'espacement vertical fixe:: +* Variables d'espacement vertical fluctuant:: +* Variables d'espacement horizontal:: +* Autres variables du bloc \paper:: +@end menu + + +@node Le bloc \paper +@subsection Le bloc @code{\paper} +@translationof The @code{\paper} block + +Un bloc @code{\paper} peut apparaître au sein d'un bloc +@code{\book}. Les réglages effectués à l'aide du bloc @code{\paper} +s'appliqueront à l'intégralité d'un ouvrage, qui peut comporter +plusieurs partitions (des blocs @emph{score})@tie{}; il ne doit donc en +aucun cas se trouver dans un bloc @code{\score}. Peuvent apparaître +dans un bloc @code{\paper}@tie{}: + +@itemize + +@item +la fonction scheme @code{set-paper-size}, + +@item +des variables propres au bloc @code{\paper} qui viendront adapter la +mise en page, et + +@item +la définition des différents @emph{markups} qui personnaliseront la mise +en forme des entêtes, pied de page et titrages. + +@end itemize + +La fonction @code{set-paper-size} fait l'objet de la rubrique qui suit +-- @ref{Format du papier et adaptation automatique}. Les variables du +bloc @code{\paper} chargées de la mise en page sont abordées plus loin +dans ce chapitre. Quant aux définitions relatives aux @emph{markups} +des entête, pied de page et titrages, elles sont étudiées à la rubrique +@ref{Titrages personnalisés}. + +La plupart des variables gérant le papier ne sont fonctionnelles que +lorsque mentionnées dans un bloc @code{\paper}. Certaines, qui peuvent +toutefois apparaître dans un bloc @code{\layout}, sont référencées à la +rubrique @ref{Le bloc \layout}. + +Sauf mention contraire, toutes les variables du bloc @code{\paper} qui +correspondent à des dimensions sont exprimées en millimètre -- vous +pouvez bien entendu spécifier un autre système de mesure. Voici +comment, par exemple, définir la marge haute (@code{top-margin}) à dix +millimètres@tie{}: + +@example +\paper @{ + top-margin = 10 +@} +@end example + +Si vous préférez lui affecter une valeur de 0,5@tie{}pouce, vous devrez +mentionner le suffixe d'unité @code{\in}@tie{}: + +@example +\paper @{ + top-margin = 0.5\in +@} +@end example + +LilyPond accepte les suffixes d'unité @code{\mm}, @code{\cm}, +@code{\in} et @code{\pt}. Ces unités sont des conversions de +millimètres, répertoriées dans le fichier +@file{ly/paper-defaults-init.ly}. Pour plus de lisibilité, et bien que +ce ne soit pas techniquement requis, nous vous conseillons d'ajouter +@code{\mm} à votre code lorsque vous travaillez en millimètres. + +Vous pouvez aussi définir les valeurs du bloc @code{\paper} à l'aide de +fonctions Scheme. Voici l'équivalent de l'exemple précédent@tie{}: + +@example +\paper @{ + #(define top-margin (* 0.5 in)) +@} +@end example + +@seealso +Manuel de notation : +@ref{Format du papier et adaptation automatique}, +@ref{Titrages personnalisés}. +@ref{Le bloc \layout}. + +Fichiers d'initialisation : +@file{ly/paper-defaults-init.ly}. + + +@node Format du papier et adaptation automatique +@subsection Format du papier et adaptation automatique +@translationof Paper size and automatic scaling + +@cindex papier, taille +@cindex page, format + +@funindex \paper + +@menu +* Format du papier:: +* Adaptation automatique au format:: +@end menu + + +@node Format du papier +@unnumberedsubsubsec Format du papier +@translationof Setting paper size + +Le format du papier est déterminé par deux fonctions différentes@tie{}: +@code{set-default-paper-size} et @code{set-paper-size}. +@code{set-default-paper-size} se place en tête de fichier, alors que +@code{set-paper-size} se place à l'intérieur d'un bloc +@code{\paper}@tie{}: + +@example +#(set-default-paper-size "a4") +@end example + +@example +\paper @{ + #(set-paper-size "a4") +@} +@end example + +@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}. À l'intérieur d'un bloc @code{\paper}, il +vaut mieux utiliser la fonction @code{set-paper-size}, avant toute autre +variables. Les raisons à ceci sont abordées dans la rubrique +@ref{Adaptation automatique au format}. + +@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@tie{}; si @code{\paper} apparaît dans un +bloc @code{\book}, la taille ne s'appliquera qu'au @emph{book} en +question. + +Les formats @code{a4}, @code{letter}, @code{legal} et @code{11x17} (ou +tabloïd) sont couramment utilisés pour les éditions musicales. Bien +d'autres formats sont disponibles et sont répertoriés à la rubrique +@code{paper-alist} du fichier d'initialisation @file{scm/paper.scm}. + +@c TODO add a new appendix for paper sizes (auto-generated) -pm + +@warning{Par défaut, le papier est au format A4 (codé @code{a4}).} + +Rien ne vous empêche d'ajouter un format de papier inhabituel à la +rubrique @code{paper-alist} du fichier @file{scm/paper.scm}. Sachez +cependant que celui-ci est écrasé à chaque mise à jour de LilyPond. + +@cindex orientation +@cindex landscape +@cindex paysage, papier +@cindex à l'italienne, papier + +Le fait d'ajouter l'argument @code{'landscape} à l'instruction +@code{set-default-paper-size} 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 + + +@seealso +Notation Reference: +@ref{Adaptation automatique au format}. + +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'echelle. + +L'adaptation automatique affecte les dimensionnements verticaux +@code{top-margin} et @code{bottom-margin} -- voir +@ref{Variables d'espacement vertical fixe} --, ainsi que les +dimmensionnements 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 dimmensionnements 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 dimmensionnement +vertical. + +@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 à@tie{}@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 à@tie{}@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@tie{}@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@tie{}@code{##t}. Nous vous conseillons, lorsque des pièces couvrent +deux pages ou plus, d'activer 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@tie{}; 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. + + +@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}@tie{}: + +@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@tie{}; 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@tie{}; +elle est en fait égale à +(@code{basic-distance}@tie{}@minus{}@tie{}@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 + +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 pou 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}. + +Snippets: +@rlsrnamed{Spacing,Espacements}. + + +@node Variables d'espacement horizontal +@subsection Variables d'espacement horizontal +@translationof Horizontal spacing \paper variables + +@warning{Certains dimmensionnements 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ée 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@tie{}@code{10\mm}@tie{}; 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@tie{}@minus{}@tie{}line-width@tie{}@minus{}@tie{}right-margin)}. +Lorsque seule @code{line-width} est définie, les deux marges +correspondent à +@code{((paper-width@tie{}@minus{}@tie{}line-width)@tie{}/@tie{}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@tie{}@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@tie{}@minus{}@tie{}line-width@tie{}@minus{}@tie{}left-margin)}. +Lorsque seule @code{line-width} est définie, les deux marges +correspondent à +@code{((paper-width@tie{}@minus{}@tie{}line-width)@tie{}/@tie{}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@tie{}@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 fromat 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@tie{}@code{##f}. Cette variable peut aussi +se gérer au sein d'un bloc @code{\layout}. + +@end table + +@seealso +Notation Reference: +@ref{Adaptation automatique au format}. + +Fichiers d'initialisation : +@file{ly/paper-defaults-init.ly}. + + +@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@tie{}@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@tie{}@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@tie{}@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@tie{}@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@tie{}@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@tie{}@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@tie{}@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}. + +Snippets: +@rlsr{Spacing}. + + +@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-force +@funindex blank-after-score-page-force + +Pénalité pour apparition d'une page blanche entre deux partitions. Sa +valeur est par défaut inférieure à celle de +@code{blank-page-force}@tie{}; nous préférons q'une page blanche +s'insère après la fin de la partition plutôt qu'au milieu. + +@item blank-last-page-force +@funindex blank-last-page-force + +Pénalité pour fin de partition intervenant sur une page impaire. La +valeur par défaut est de@tie{}@code{0}. + +@item blank-page-force +@funindex blank-page-force + +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@tie{}@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}. + +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@tie{}@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@tie{}@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@tie{}@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@tie{}@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@tie{}@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@tie{}@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@tie{}: + +@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'apparître dans un bloc @code{\layout}@tie{}: + +@itemize +@item +la fonction scheme @code{layout-set-staff-size}, + +@item +dans des blocs @code{\contexte}, les modifications apportées aux +différents contextes, et + +@item +les variables normalement attachées au bloc @code{\paper} qui +affacteront 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 propriétés d'un 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@tie{}: + +@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} +(see @ref{Variables d'indentation et de décalage}) + +@item +@code{system-count} +(see @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 #space = #8 + @} + \context @{ + \Voice + \override TextScript #'padding = #1 + \override Glissando #'thickness = #3 + @} +@} +@end example + + +@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@tie{}points. Il existe deux manières de la modifier@tie{}: + +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@tie{}points par +défaut@tie{}; 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@tie{}: + +@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@tie{}; 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:: +* 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@tie{}: + +@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@tie{}; 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@tie{}""}. + +@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 que les sauts de ligne forcés doivent +être saisis au sein d'une expression polyphonique@tie{}: + +@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ù il le +feraient 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 +'lon est à 4/4, seront coupées toutes les quatre mesures, pas +ailleurs@tie{}: + +@example +<< + \repeat unfold 7 @{ + s1 \noBreak s1 \noBreak + s1 \noBreak s1 \break + @} + @{ @var{the actual music@dots{}} @} +>> +@end example + +@ignore +Apparemment, je ne vois pas de "snippet" qui corresponde, +à moins que ce ne soit pour allécher vers la section +"4.6 Fitting music onto fewer pages" -JCM +@c TODO Check this +A linebreaking configuration can be saved as a @code{.ly} file +automatically. This allows vertical alignments to be stretched to +fit pages in a second formatting run. This is fairly new and +complicated. More details are available in +@rlsr{Spacing}. +@end ignore + +@predefined +@funindex \break +@code{\break}, +@funindex \noBreak +@code{\noBreak}. +@endpredefined + + +@seealso +Notation Reference: +@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é@tie{}: @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@tie{}: +@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}@tie{}: + +@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@tie{}; les sauts de pages 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@tie{}; autrement dit, il ne restera pas inactif dans la 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@tie{}1@tie{}1)}, soit une ronde, et s'ajuste de +la manière suivante@tie{}: + +@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 se contredire les uns les autres. + + +@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}@tie{}: + +@example +\paper @{ + page-breaking = #ly:minimal-breaking +@} +@end example + + +@seealso +Morceaux choisis : +@rlsrnamed{Spacing,Espacements}. + + +@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@tie{}: + +@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@tie{}: 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@tie{}: + +@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@tie{}: c'est le +cas pour la propriété @code{nonstaff-relatedstaff-spacing} qui spécifie +la distance entre 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 de é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 chacun d'entre +eux@tie{}: + +@multitable {Non-staff line} {Reference point} +@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@tie{}: + +@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 } + \context { \ChordNames \alignToZero \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 { s2\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}@tie{}: + +@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} +@translationof 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@tie{}; +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 dees é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, à loins 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}@tie{}: si vous lui affectez la valeur @code{#f} à +une ligne de non-portée, cette ligne sera considérée comme étant une +portée@tie{}; à 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 a 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 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 a 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} +@translationof 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'un 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@tie{}: + +@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 comris 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{regroupement 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@tie{}: + +@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 +regroupes, à l'aide des propriétés de l'objet graphique +@code{StaffGrouper}@tie{}: + +@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@tie{}: + +@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@tie{}: + +@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@tie{}: + +@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}@tie{}: + +@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@tie{}; 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{\breaks} 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}@tie{}: + +@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 + +Quelques points à prendre en considération@tie{}: + +@itemize +@item +Lorsque vous utilisez @code{alignment-distances}, les paroles et +autres lignes de non-portée ne comptent pas pour une portée. + +@item +Les nombres fournis à @code{X-offset}, @code{Y-offset} et +@code{alignment-distances} sont considérés comme des multiples de la +distance entre des portées adjacentes. Des valeurs positives remontent +les portées et paroles, des valeurs négatives les descendent. + +@item +Dans la mesure où @code{NonMusicalPaperColumn +#'line-break-system-details} permet de positionner systèmes et portées +n'importe où sur une page, vous pourriez être en contradiction avec les +dimensionnements de la feuille ou bien aboutir à des surimpressions. +Soyez donc raisonnables quant aux différentes valeurs que vous affectez +à ces réglages. + +@end itemize + + +@seealso +Morceaux choisis : +@rlsrnamed{Spacing,Espacements}. + + +@node Résolution des collisions verticales +@subsection Résolution des collisions verticales +@translationof Vertical collision avoidance + +@funindex outside-staff-priority +@funindex outside-staff-padding +@funindex outside-staff-horizontal-padding + +Vous savez de manière intuitive qu'un certain nombre d'objets en +matière de notation musicale appartiennent à la portée, et que +d'autres se placent en dehors de la portée. Entre autres objets +externes, nous avons les marques repères, les textes et les +nuances@tie{}; nous les appellerons @qq{objets extérieurs à la portée}. +La règle qu'applique LilyPond pour positionner verticalement ces +objets extérieurs consiste à les placer au plus près de la portée +tout en prenant garde d'éviter qu'il y ait chevauchement. + +LilyPond utilise la propriété @code{outside-staff-priority} afin de +déterminer si un objet est ou non un objet extérieur à la portée@tie{}: +lorsque la valeur de @code{outside-staff-priority} est numérique, il +s'agit d'un objet extérieur à la portée. De plus, la propriété +@code{outside-staff-priority} indique à LilyPond l'ordre dans lequel ces +objets doivent être disposés. + +Tout d'abord, LilyPond dispose tous les objets qui ne sont pas externes. +Les objets extérieurs à la portée sont alors triés selon l'ordre +croissant de leur @code{outside-staff-priority}. Enfin, LilyPond prend +chacun des ces objets et les positionne de telle sorte qu'il n'entrent +pas en collision avec ceux qui on déjà été placés. Autrement dit, +lorsque deux objets devraient se placer au même endroit, celui dont la +@code{outside-staff-priority} est la plus faible sera disposé au plus +près de la portée. + +@lilypond[quote,ragged-right,relative=2,verbatim] +c4_"Text"\pp +r2. +\once \override TextScript #'outside-staff-priority = #1 +c4_"Text"\pp % this time the text will be closer to the staff +r2. +% by setting outside-staff-priority to a non-number, +% we disable the automatic collision avoidance +\once \override TextScript #'outside-staff-priority = ##f +\once \override DynamicLineSpanner #'outside-staff-priority = ##f +c4_"Text"\pp % now they will collide +@end lilypond + +Le décalage vertical entre un objet extérieur à la portée et celui qui +le précède se contrôle par la propriété @code{outside-staff-padding}. + +@c KEEP LY +@lilypond[quote,ragged-right,relative=2,verbatim] +\once \override TextScript #'outside-staff-padding = #0 +a'^"Ce texte est placé au plus près de la note" +\once \override TextScript #'outside-staff-padding = #3 +c^"Ce texte est décalé par rapport au texte précédent" +c^"Ce texte est accolé au texte précédent" +@end lilypond + +Par défaut, les objets extérieurs à la portée sont positionnés en +évitant les collisions horizontales avec des objets précédemment +positionnés. Ceci peut cependant générer des situations où des objets +se trouvent horizontalement trop proches. L'espacement vertical entre +les portées peut dans une certaine mesure permettre de mieux intercaler +les objets extérieurs à la portée. La propriété +@code{outside-staff-horizontal-padding} repoussera verticalement un +objet pour éviter ce genre de situation. + +@lilypond[quote,ragged-right,relative=2,verbatim] +% the markup is too close to the following note +c4^"Text" +c4 +c''2 +% setting outside-staff-horizontal-padding fixes this +R1 +\once \override TextScript #'outside-staff-horizontal-padding = #1 +c,,4^"Text" +c4 +c''2 +@end lilypond + + +@seealso +Morceaux choisis : +@rlsrnamed{Spacing,Espacements}. + + +@node Espacement horizontal +@section Espacement horizontal +@translationof Horizontal spacing + +@cindex horizontal, espacement +@cindex espacement horizontal + +@menu +* Généralités sur l'espacement horizontal:: +* Changement d'espacement en cours de partition:: +* Modification de l'espacement horizontal:: +* Longueur de ligne:: +* Notation proportionnelle:: +@end menu + +@node Généralités sur l'espacement horizontal +@subsection Généralités sur l'espacement horizontal +@translationof Horizontal spacing overview + +Le moteur d'espacement traduit les différences de durée en distances +étirables (@emph{springs} pour ressorts) de différente longueur. Des +durées importantes prennent ainsi plus de place que des durées moins +longues. Les durées les plus courtes se verront attribuer un espace +fixe, contrôlé par la propriété @code{shortest-duration-space} de +l'objet @rinternals{SpacingSpanner}. Au plus la durée s'allonge, au +plus elle prendra d'espace@tie{}: le doublement d'une durée attribuera à +la note un espace fixé d'après la propriété @code{spacing-increment}. + +L'exemple suivant comporte des blanches, des noires et un certain nombre +de croches. La croche est suivie d'un espace de la largeur d'une tête +de note@tie{}; pour la noire , cette espace est de deux têtes@tie{}; il +est de trois pour la blanche. + +@lilypond[quote,verbatim,relative=1] +c2 c4. c8 c4. c8 c4. c8 c8 +c8 c4 c4 c4 +@end lilypond + +@code{spacing-increment} est normalement défini à 1,2@tie{}espace de +portée -- ce qui correspond à peu près à la largeur d'une tête de note +-- et @code{shortest-duration-space} à 2,0. La note la plus courte +s'étendra donc sur l'équivalent de 2,4@tie{}espaces de portée (2 fois le +@code{spacing-increment}). Le point de départ de cet espace se situe à +l'extrémité gauche du symbole@tie{}; la note la plus courte est donc +suivie en général d'un espace égal à la largeur d'une tête de note. + +Si l'on suit à la lettre ce qui précède, ajouter une simple triple +croche à une partition qui comporte déjà des croches et des doubles +augmentera considérablement son volume@tie{}: la durée la plus +courte n'est plus la double mais la triple croche, ce qui aura +pour conséquence d'ajouter une largeur de tête à chacune des notes. +Pour s'affranchir de cet effet quelque peu pervers, la durée la plus +courte prise en considération au niveau de l'espacement n'est pas la +note la plus brève de la partition, mais celle qui apparaît le plus +souvent. + +La courte durée la plus fréquente est déterminée à partir de la note la +plus courte de chaque mesure. C'est elle qui servira de base pour +l'espacement, à cette nuance près que la plus courte durée ne saurait +être strictement supérieure à la croche. Cette @qq{durée de référence} +est d'ailleurs affichée lorsque vous lancez @code{lilypond} avec l'option +@code{--verbose}. + +Ces durées peuvent être adaptées. Vous pouvez définir la durée de base +pour les espacements grâce à la propriété +@code{common-shortest-duration} de l'objet @rinternals{SpacingSpanner}. +La durée maximale de cet étalon, normalement la croche, est gérée par la +propriété @code{base-shortest-duration}. + +@funindex common-shortest-duration +@funindex base-shortest-duration +@funindex stem-spacing-correction +@funindex spacing + +Les notes plus courtes que la note témoin sont suivies d'un espace +proportionnel à la durée témoin. Si donc nous ajoutions quelques +doubles croches à l'exemple précédent, elles seraient suivies d'une +demie largeur de tête@tie{}: + +@lilypond[quote,verbatim,relative=2] +c2 c4. c8 c4. c16[ c] c4. c8 c8 c8 c4 c4 c4 +@end lilypond + + +Dans notre @emph{Essai sur la gravure musicale automatisée}, nous avons +vu comment la direction des hampes peut influencer l'espacement -- voir +@ressay{Espacement}. Ceci est contrôlé par la propriété +@code{stem-spacing-correction} de l'objet @rinternals{NoteSpacing}, créé +pour chaque contexte @rinternals{Voice}. L'objet +@rinternals{StaffSpacing}, généré au niveau d'un contexte @code{Staff}, +possède une même propriété qui contrôlera l'espacement hampe-barre de +mesure. L'exemple suivant montre ces adaptations, tout d'abord selon +les réglages par défaut, puis avec des corrections forcées. + +@lilypond[quote,ragged-right] +{ + c'4 e''4 e'4 b'4 | + b'4 e''4 b'4 e''4 | + \override Staff.NoteSpacing #'stem-spacing-correction = #1.5 + \override Staff.StaffSpacing #'stem-spacing-correction = #1.5 + c'4 e''4 e'4 b'4 | + b'4 e''4 b'4 e''4 | +} +@end lilypond + +L'espacement spécifique à la notation proportionnelle fait l'objet d'une +@rusernamed{Notation proportionnelle,rubrique dédiée}. + + +@seealso +Morceaux choisis : +@rlsrnamed{Spacing,Espacements}. + +Référence des propriétés internes : +@rinternals{SpacingSpanner}, +@rinternals{NoteSpacing}, +@rinternals{StaffSpacing}, +@rinternals{NonMusicalPaperColumn}. + +Essai sur la gravure musicale automatisée : +@ressay{Espacement}. + + +@knownissues + +Il n'existe pas de mécanisme simple et efficace qui permette de +forcer manuellement l'espacement. La solution ci-dessous permet +cependant @qq{d'aérer} artificiellement une partition@tie{}; il vous +suffit d'ajuster la valeur du décalage @emph{(padding)} autant que de +besoin. +@example + \override Score.NonMusicalPaperColumn #'padding = #10 +@end example + +Il n'y a aucun moyen de diminuer l'espacement. + + +@node Changement d'espacement en cours de partition +@subsection Changement d'espacement en cours de partition +@translationof New spacing area + +Il arrive, au cours d'un même mouvement, qu'une nouvelle partie modifie +substantiellement la notion de valeur brève et valeur longue. La +commande @code{newSpacingSection} permet alors de réinitialiser les +paramètres d'espacement. + +Dans l'exemple qui suit, le changement de métrique marque le début +d'une nouvelle partie@tie{}; remarquez comme les doubles-croches sont +alors plus espacées@tie{}: + +@lilypond[relative,verbatim,quote] +\time 2/4 +c4 c8 c +c8 c c4 c16[ c c8] c4 +\newSpacingSection +\time 4/16 +c16[ c c8] +@end lilypond + +La commande @code{\newSpacingSection} crée un nouvel objet +@code{SpacingSpanner}, ce qui permet d'appliquer de nouveaux +@code{\override}s à partir de ce point. + + +@seealso +Morceaux choisis : +@rlsrnamed{Spacing,Espacements}. + +Référence des propriétés internes : +@rinternals{SpacingSpanner}. + + +@node Modification de l'espacement horizontal +@subsection Modification de l'espacement horizontal +@translationof Changing horizontal spacing + +Vous pouvez influencer l'espacement horizontal à l'aide de la propriété +@code{base-shortest-duration}. Comparons les deux partitions qui +suivent, toutes deux montrant la même musique. La première partition +applique les réglages par défaut, alors que la seconde bénéficie +d'ajustement de la propriété @code{base-shortest-duration}. Au plus la +valeur de @code{ly:make-moment} est grande, au plus la musique sera +resserrée. En effet, @code{ly:make-moment} construit une durée@tie{}: +@w{@code{1 4}} est plus long que @w{@code{1 16}}. + +@lilypond[verbatim,line-width=12\cm] +\score { + \relative c'' { + g4 e e2 | f4 d d2 | c4 d e f | g4 g g2 | + g4 e e2 | f4 d d2 | c4 e g g | c,1 | + d4 d d d | d4 e f2 | e4 e e e | e4 f g2 | + g4 e e2 | f4 d d2 | c4 e g g | c,1 | + } +} +@end lilypond + +@lilypond[verbatim,line-width=12\cm] +\score { + \relative c'' { + g4 e e2 | f4 d d2 | c4 d e f | g4 g g2 | + g4 e e2 | f4 d d2 | c4 e g g | c,1 | + d4 d d d | d4 e f2 | e4 e e e | e4 f g2 | + g4 e e2 | f4 d d2 | c4 e g g | c,1 | + } + \layout { + \context { + \Score + \override SpacingSpanner + #'base-shortest-duration = #(ly:make-moment 1 16) + } + } +} +@end lilypond + + +@snippets + +L'espacement au sein d'un nolet dépend par défaut d'un certain nombre de +facteurs qui ne sont pas liés à la durée (altération, changement de +clef, etc.). @w{@code{Score.SpacingSpanner #'uniform-stretching}} +permet d'ignorer ces symboles et, par voie de conséquence, forcer +l'espacement sur la simple durée. Notez bien que cette propriété +s'appliquera à toute la partition, puisque mentionnée au sein d'un bloc +@code{\layout}. + +@lilypond[quote,ragged-right,verbatim] +\score { + << + \new Staff { + \times 4/5 { + c8 c8 c8 c8 c8 + } + c8 c8 c8 c8 + } + \new Staff { + c8 c8 c8 c8 + \times 4/5 { + c8 c8 c8 c8 c8 + } + } + >> + \layout { + \context { + \Score + \override SpacingSpanner #'uniform-stretching = ##t + } + } +} +@end lilypond + +L'activation du commutateur @code{strict-note-spacing} permet d'espacer +les notes sans tenir compte des clefs, barres de mesure ou notes +d'ornement qui pourraient apparaître@tie{}: + +@lilypond[quote,ragged-right,relative=2,verbatim] +\override Score.SpacingSpanner #'strict-note-spacing = ##t +\new Staff { c8[ c \clef alto c \grace { c16[ c] } c8 c c] c32[ c32] } +@end lilypond + + +@seealso +Morceaux choisis : +@rlsrnamed{Spacing,Espacements}. + + +@node Longueur de ligne +@subsection Longueur de ligne +@translationof Line length + +@cindex saut de page +@cindex pages, saut + +@funindex indent +@funindex line-width +@funindex ragged-right +@funindex ragged-last + +@c Although line-width can be set in \layout, it should be set in paper +@c block, to get page layout right. +@c Setting indent in \paper block makes not much sense, but it works. + +@c Bit verbose and vague, use examples? +Deux réglages de bases ont une influence considérable sur +l'espacement@tie{}: @code{line-width} et @code{indent}. Tous deux se +placent dans le bloc @code{\layout}. Ils contrôleront la longueur des +lignes et l'indentation de la première. + +L'activation du commutateur @code{ragged-right} au sein du bloc +@code{\layout} permet de terminer les systèmes naturellement plutôt que +de les voir s'étirer sur toute la largeur de la page. Cette option est +particulièrement utile lorsque vous traitez de courts fragment, ou bien +pour vérifier ce que donnerait l'espacement naturel. Bien qu'il soit +désactivé par défaut, il sera activé si la partition ne comporte qu'un +seul système. + +@cindex page layout +@cindex vertical spacing + +Le fonctionnement de l'option @code{ragged-last} est en tout point +identique à celui de @code{ragged-right}, à ceci près qu'il ne concerne +que la dernière ligne de la partition. Il n'y a pas de restriction +quant à cette ligne. Il en va de même que pour le formatage d'un +paragraphe de texte, la dernière ligne s'arrête au dernier caractère. + +@c Note that for text there are several options for the last line. +@c While Knuth TeX uses natural length, lead typesetters use the same +@c stretch as the previous line. eTeX uses \lastlinefit to +@c interpolate between both these solutions. + +@example +\layout @{ + indent = #0 + line-width = #150 + ragged-last = ##t +@} +@end example + + +@seealso +Morceaux choisis : +@rlsrnamed{Spacing,Espacements}. + + +@node Notation proportionnelle +@subsection Notation proportionnelle +@translationof Proportional notation + +LilyPond prend en charge la notation proportionnelle. Il s'agit dans +ce cas de représenter la notation selon un espacement strictement +relatif aux durées. Ce type d'espacement pourrait se comparer à +l'utilisation de papier millimétré pour positionner les notes au fil de +la portée. Certaines œuvres de la fin du XXe siècle et à l'aube du XXIe +utilisent cette proportionnalité dans le but de clarifier des structures +rythmiques complexes, d'aider au positionnement d'indications +temporelles ou autres éléments graphiques directement dans la partition. + +LilyPond met à votre disposition cinq réglages différents, qui peuvent +s'utiliser conjointement ou individuellement, aux fins de mettre au +point cette notation proportionnelle. + +@itemize +@item @code{proportionalNotationDuration} + +@item @code{uniform-stretching} + +@item @code{strict-note-spacing} + +@item @code{\remove Separating_line_group_engraver} + +@item @code{\override PaperColumn #'used = ##t} + +@end itemize + +Nous allons examiner, dans les différents exemples qui suivent, les +effets de ces réglages et comment ils interagissent. + +Commençons par cette mesure toute simple qui utilise l'espacement +classique et justifiée à gauche. + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } + >> +} +@end lilypond + +Vous constatez que la blanche qui entame la mesure prend moins de la +moitié de l'espace. De même, les doubles croches et le quintolet de +doubles (donc des vingtièmes de ronde) qui terminent cette mesure +n'en occupent pas la moitié de l'espace horizontal. + +En matière de gravure traditionnelle, cet espacement correspond tout à +fait à nos attentes, puisque nous pouvons rogner l'espace sur la +blanche et ainsi en gagner en largeur sur toute la mesure qui fait une +ronde. + +Par contre, si nous avons besoin d'insérer une indication temporelle ou +un autre graphisme en surplomb ou en dessous de notre partition, nous +aurons besoin de la notation proportionnelle. Celle-ci s'active an +définissant la propriété @code{proportionalNotationDuration}. + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } + >> + \layout { + \context { + \Score + proportionalNotationDuration = #(ly:make-moment 1 20) + } + } +} +@end lilypond + +La blanche du début et les notes plus rapides de la deuxième moitié de +la mesure occupent maintenant exactement le même espace horizontal. +Nous pourrions donc y insérer, au-dessus ou au-dessous, une indication +temporelle ou autre graphisme. + + +@code{proportionalNotationDuration} est une propriété attachée au +contexte @code{Score}. Rappelez-vous que vous pouvez régler les +propriétés d'un contexte à trois différents endroits de votre +fichier@tie{}: dans un bloc @code{\with}, dans un bloc @code{\context} +ou au beau milieu de la musique à l'aide de la commande @code{\set}. +Vous pouvez donc définir @code{proportionalNotationDuration} selon l'une +de ces trois façons, à l'instar de n'importe quel définition de +contexte. + +La propriété @code{proportionalNotationDuration} prend en unique +argument la durée de référence qui servira de base pour espacer toute la +musique. La fonction scheme @code{make-moment} intégrée à LilyPond +prend deux arguments@tie{}: un numérateur et un dénominateur qui +représentent une fraction de ronde. L'appel de +@w{@code{#(ly:make-moment 1 20)}} produit donc une durée de référence +égale à un vingtième de ronde. Vous pourriez tout aussi bien utiliser +@code{#(ly:make-moment 1 16)}, @code{#(ly:make-moment 1 8)} ou +@code{#(ly:make-moment 3 97)}. + +Se pose alors le problème de fournir la juste durée de référence à +@code{proportionalNotationDuration}. Il faut en l'occurrence procéder par +tâtonnement, en commençant par une valeur proche de la note la plus +rapide (la durée la plus courte) du morceau. Au plus la durée de +référence est petite, au plus la musique sera étalée@tie{}; à l'inverse, +une durée de référence élevée produira une musique resserrée. + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } + >> + \layout { + \context { + \Score + proportionalNotationDuration = #(ly:make-moment 1 8) + } + } +} + +\score { + << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } + >> + \layout { + \context { + \Score + proportionalNotationDuration = #(ly:make-moment 1 16) + } + } +} + +\score { + << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } + >> + \layout { + \context { + \Score + proportionalNotationDuration = #(ly:make-moment 1 32) + } + } +} +@end lilypond + +Vous ne manquerez pas de noter qu'une durée de référence trop grande, +comme la croche pour la première ligne, a pour conséquence de resserrer +la musique, ce qui peut aboutir à des chevauchements de têtes. Vous +remarquez aussi que , par principe, la notation proportionnelle occupe +beaucoup plus d'espace horizontal que l'espacement traditionnel. La +notation proportionnelle met en évidence le rythme au détriment de +l'espacement horizontal. + +Examinons à présent le moyen d'optimiser l'espacement de nolets en +tuilage. + +Reprenons notre exemple de départ, avec son espacement traditionnel, et +ajoutons lui une portée incluant un autre type de nolet. + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } + \new RhythmicStaff { + \times 8/9 { + c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 + } + } + >> +} +@end lilypond + +L'espacement est loin d'être idéal, pour la simple raison que +l'espacement régulier des notes de la portée inférieure ne s'étire pas +uniformément. Il est vrai que de telles constructions complexes en +nolets sont assez rares en gravure traditionnelle, ce qui explique que +les règles qu'elle applique peuvent amener à ce résultat. Le recours à +@code{proportionalNotationDuration} permet d'arranger les choses. + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } + \new RhythmicStaff { + \times 8/9 { + c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 + } + } + >> + \layout { + \context { + \Score + proportionalNotationDuration = #(ly:make-moment 1 20) + } + } +} +@end lilypond + +Cependant, si l'on observe de près, il est évident que les notes de la +deuxième moitié du ennaolet ont tendance à s'espacer légèrement plus que +celles de la première moitié. Afin d'uniformiser cet étalement, nous +allons activer le @code{uniform-stretching}, propriété attachée au +@code{SpacingSpanner}. + +@lilypond[quote,verbatim,ragged-right] +\score { + << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } + \new RhythmicStaff { + \times 8/9 { + c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 + } + } + >> + \layout { + \context { + \Score + proportionalNotationDuration = #(ly:make-moment 1 20) + \override SpacingSpanner #'uniform-stretching = ##t + } + } +} +@end lilypond + +L'espacement sur les deux portées est maintenant correct, les relations +rythmiques sont clairement perceptibles, et nous pourrions y insérer +une indication temporelle ou autre graphisme selon notre envie. + +Notez bien que la prise en charge de la notation proportionnelle par +LilyPond demande que, dans chaque partition, soit activée la propriété +@code{uniform-stretching} du @code{SpacingSpanner}. Dans le cas +contraire, utiliser @code{proportionalNotationDuration} aura pour +conséquence, entre autres, un espacement erroné lorsque vous y aurez +inséré des silences invisibles @emph{skip}. + +Le @code{SpacingSpanner} est en fait un objet graphique abstrait attaché +au contexte @code{Score}. Tout comme pour la propriété +@code{proportionalNotationDuration}, les réglages du +@code{SpacingSpanner} peuvent se faire à trois différents endroits de +votre fichier@tie{}: dans un bloc @code{\with}, dans un bloc +@code{\context} ou au beau milieu de la musique à l'aide de la +commande @code{\set}. + +Gardez bien à l'esprit qu'il n'y a qu'un seul @code{SpacingSpanner} par +@code{Score}. Il s'ensuit que @code{uniform-stretching} est soit +activé, soit désactivé, et dans tous les cas pour l'intégralité de la +partition. Vous pourriez toutefois avoir besoin de modifier ce +comportement en cours de partition, et recourir alors à l'instruction +@code{\newSpacingSection} -- pour de plus amples détails, voir la +rubrique @ref{Changement d'espacement en cours de partition}. + + +Intéressons-nous maintenant au @code{Separating_line_group_engraver}, +qui est désactivé pour la plupart des partitions en notation +proportionnelle. Voici ce qui apparaît dans une partition +traditionnelle@tie{}: il y a toujours un @qq{espace préservé} juste +avant la première note de chaque portée. + +@lilypond[quote,verbatim,ragged-right] +\paper { + indent = #0 +} + +\new Staff { + c'1 + \break + c'1 +} +@end lilypond + +Cet espace, géré par le @code{Separating_line_group_engraver}, est aussi +présent lorsqu'intervient un changement de métrique, d'armure ou de +clef. Désactiver le @code{Separating_line_group_engraver} revient à +réduire cet espace à zéro. + +@lilypond[quote,verbatim,ragged-right] +\paper { + indent = #0 +} + +\new Staff \with { + \remove Separating_line_group_engraver +} { + c'1 + \break + c'1 +} +@end lilypond + +Les éléments non musicaux tels que métrique, armure et clef, posent +problème lorsqu'on travaille en notation proportionnelle. Bien +qu'aucune notion de durée ne leur soit attachée, ces éléments +@qq{consomment} de l'espace. Différentes approches permettent +cependant de gérer ce problème. + +Éviter les problèmes d'espacement avec l'armure est chose aisée@tie{}: +il suffit qu'il n'y en ait pas@tie{}! C'est bien souvent le cas en +musique contemporaine, où l'on trouve le plus d'ouvrages en notation +proportionnelle. Il en va de même pour la métrique, et tout +particulièrement lorsque la partition comporte un quadrillage temporel +ou autres graphismes. L'absence de métrique reste cependant +exceptionnelle et la plupart des partitions en notation proportionnelle +laissent apparaître quelques métriques. Il est par contre pratiquement +impossible de se passer de clef et d'altération. + +L'une des options permettant de s'affranchir de l'espacement dû aux +éléments non musicaux consiste en l'activation de la propriété +@code{strict-note-spacing} attachée au @code{SpacingSpanner}. Observons +les deux portées suivantes@tie{}: + +@lilypond[quote,verbatim,ragged-right] +\new Staff { + \set Score.proportionalNotationDuration = #(ly:make-moment 1 16) + c''8 + c''8 + c''8 + \clef alto + d'8 + d'2 +} + +\new Staff { + \set Score.proportionalNotationDuration = #(ly:make-moment 1 16) + \override Score.SpacingSpanner #'strict-note-spacing = ##t + c''8 + c''8 + c''8 + \clef alto + d'8 + d'2 +} +@end lilypond + +Toutes deux affichent un espacement proportionnel. Cependant, la +première ligne laisse apparaître un espacement plus lâche en raison de +la présence d'un changement de clef. En ce qui concerne la deuxième +ligne, l'espacement est strictement observé dès lors que la propriété +@code{strict-note-spacing} a préalablement été activée. Comme vous +pouvez le constater, l'activation de @code{strict-note-spacing} a pour +conséquence que l'algorithme d'espacement ignore tout bonnement la +largeur des métriques, armures, clefs et altérations. + +En plus ceux que nous venons de voir, vous trouverez d'autres réglages +en usage dans la notation proportionnelle comme, entre autres, + +@itemize +@item @code{\override SpacingSpanner #'strict-grace-spacing = ##t} +@item @code{tupletFullLength = ##t} +@item @code{\override Beam #'breakable = ##t} +@item @code{\override Glissando #'breakable = ##t} +@item @code{\override TextSpanner #'breakable = ##t} +@item @code{\remove Forbid_line_break_engraver (dans un contexte de voix} +@end itemize + +Ces différents réglages permettent un espacement strict des notes +d'ornement, d'étendre les indications de nolet afin d'indiquer de façon +évidente leurs bornes et d'autoriser le tronçonnement des extenseurs à +l'occasion d'un saut de ligne ou de page. Nous vous renvoyons aux +différentes rubriques associées du manuel pour chacun de ces réglages. + + +@seealso +Manuel de notation : +@ref{Changement d'espacement en cours de partition}. + +Morceaux choisis : +@rlsrnamed{Spacing,Espacements}. + + +@node Réduction du nombre de pages de la partition +@section Réduction du nombre de pages de la partition +@translationof Fitting music onto fewer pages + +Vous pourriez un jour être confronté au problème suiven@tie{}: l'une +des pages de votre partition ne comporte que deux portées alors que -- +ce qui est d'autant plus frustrant -- l'espace libre sur les autres +pages aurait permis une distribution différente. + +L'instruction @code{annotate-spacing} se révèle être un outil +indispensable pour pour l'analyse des problèmes de mise en forme. Cette +commande met en surimpression la valeur des différentes variables +d'espacement et de mise en forme, comme nous allons le voir dans la +rubrique @ref{Mise en évidence de l'espacement}. + +@menu +* Mise en évidence de l'espacement:: +* Modification de l'espacement:: +@end menu + +@node Mise en évidence de l'espacement +@subsection Mise en évidence de l'espacement +@translationof Displaying spacing + +@funindex annotate-spacing +@cindex espacement, affichage des valeurs + +Le meilleur moyen d'appréhender les différentes variables de +dimensionnement vertical sur lesquelles vous pouvez jouer au niveau de +la mise en page, consiste à activer, au sein du bloc @code{\paper}, la +fonction @code{annotate-spacing}@tie{}: + +@c need to have \book{} otherwise we get the separate systems. -hwn +@lilypond[verbatim,quote] +#(set-default-paper-size "a6" 'landscape) +\book { + \score { { c4 } } + \paper { annotate-spacing = ##t } +} +@end lilypond + +@noindent +Toutes les dimensions sont exprimées en espace de portée +@emph{(staff-space)} quelle que soit l'unité mentionnée dans les blocs +@code{\paper} ou @code{\layout}. Dans cet exemple, la hauteur de la +feuille (@code{paper-height}) est de 59,75@tie{}espaces de portée +(@code{staff-spaces}) et la taille de portée (@code{staff-size}) de +20@tie{}points -- sa valeur par défaut. Notez que@tie{}: + +@multitable {1 staff-space} {staff-size)/4 * (25,4/72,27) mm} + +@item 1 point +@tab = (25,4/72,27) mm + +@item 1 staff-space +@tab = (@code{staff-size})/4 pts +@item +@tab = (@code{staff-size})/4 * (25,4/72,27) mm + +@end multitable + +@noindent +Dans le cas qui nous occupe, un @code{staff-space} égale environ +1,757@tie{}millimètres. Les 59,75@tie{}@code{staff-spaces} de +@code{paper-height} correspondent donc à 105@tie{}millimètres, soit la +hauteur d'une feuille au format A6 à l'italienne. Les paires +@code{(@var{a},@var{b})} sont des intervalles, @var{a} en étant +l'extrémité inférieure et @var{b} l'extrémité supérieure. + + +@seealso +Manuel de notation : +@ref{Définition de la taille de portée}. + +Morceaux choisis : +@rlsrnamed{Spacing,Espacements}. + + +@node Modification de l'espacement +@subsection Modification de l'espacement +@translationof Changing spacing + +Les informations fournies par @code{annotate-spacing} en matière de +dimensionnement vertical sont incomparables. Pour plus de détails sur +les manières de modifier marges et autres variables connexes, consultez +la rubrique @ref{Mise en forme de la page}. + +En dehors des marges, vous disposez de quelques moyens supplémentaires +pour gagner de l'espace@tie{}: + +@itemize +@item +Rapprocher les systèmes le plus possible les uns des autres, de telle +sorte qu'il en tienne un maximum sur une même page, tout en les espaçant +suffisamment pour éviter le blanc en bas de page. + +@example +\paper @{ + system-system-spacing = #'((basic-distance . 0.1) (padding . 0)) + ragged-last-bottom = ##f + ragged-bottom = ##f +@} +@end example + +@item +Forcer le nombre de systèmes par page. Ceci peut se révéler judicieux à +deux titres. D'une part, le fait de définir un nombre de systèmes -- +même s'il est égal à la valeur par défaut -- peut aboutir à plus de +systèmes par page dans la mesure où l'une des étapes d'estimation des +hauteurs est tout simplement sautée. D'autre part, réduire le nombre de +systèmes par page permet d'en disposer plus sur les suivantes. Par +exemple, avec un nombre par défaut de 11@tie{}systèmes par pages, +l'instruction suivante le force à 10. + +@example +\paper @{ + system-count = #10 +@} +@end example + +@item +Éviter ou réduire les objets qui augmentent la hauteur des systèmes. +Par exemple, un crochet de reprise ou d'alternative consomme de +l'espace. Le fait de les reporter sur plusieurs systèmes regroupés +diminue d'autant l'espace disponible que si seul le premier ne +comportait l'indication. Autre exemple, les indications de nuance qui +se @qq{détachent} d'un système peuvent être rapprochés de la portée@tie{}: + +@lilypond[verbatim,quote,relative=1] +e4 c g\f c +e4 c g-\tweak #'X-offset #-2.7 -\tweak #'Y-offset #2.5 \f c +@end lilypond + +@item +Modifier l'espacement horizontal à l'aide du @code{SpacingSpanner}, +comme indiqué à la rubrique +@ref{Modification de l'espacement horizontal}. Voici ce que donne +l'espacement par défaut@tie{}: + +@lilypond[verbatim,quote] +\score { + \relative c'' { + g4 e e2 | + f4 d d2 | + c4 d e f | + g4 g g2 | + g4 e e2 | + } +} +@end lilypond + +@noindent +Par contre, le fait de modifier la valeur de la propriété +@code{common-shortest-duration} en passant de @code{1/4} à @code{1/2} +-- bien que la noire soit la durée la plus courante, nous prenons une +valeur plus longue -- donnera un effet @qq{resserré} à la musique@tie{}: + +@lilypond[verbatim,quote] +\score { + \relative c'' { + g4 e e2 | + f4 d d2 | + c4 d e f | + g4 g g2 | + g4 e e2 | + } + \layout { + \context { + \Score + \override SpacingSpanner + #'common-shortest-duration = #(ly:make-moment 1 2) + } + } +} +@end lilypond + +@noindent +La propriété @code{common-shortest-duration} ne peut être modifiée +dynamiquement. Elle se place toujours dans un bloc @code{\context} et +s'applique à l'intégralité de la partition. + +@end itemize + + +@seealso +Manuel de notation : +@ref{Mise en forme de la page}, +@ref{Modification de l'espacement horizontal}. + +Morceaux choisis : +@rlsrnamed{Spacing,Espacements}. + +