]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/fr/notation/spacing.itely
Doc: trim leading spaces.
[lilypond.git] / Documentation / fr / notation / spacing.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
2
3 @ignore
4     Translation of GIT committish: 487f44ae4bebfe14e56bbd8a6de5e7a9aea35028
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  For details, see the Contributors'
8     Guide, node Updating translation committishes..
9 @end ignore
10
11 @c \version "2.13.36"
12
13 @c Translators: Frédéric Chiasson, Jean-Charles Malahieude
14
15 @ignore
16 GDP TODO list
17
18 Negative numbers are allowed:
19 > Are you sure? The following works well
20 > \paper{
21 >   first-page-number = -2
22 > }
23 > and prints page number -1 on the second page, for example.
24
25
26 In 5.2.1 the @refbugs (line 495 in spacing.itely on master) it
27 states:
28
29 "@code{layout-set-staff-size} does not change the distance between
30 the
31 staff lines."
32
33 Could we add a sentence:
34 "Use instead the pair               fontSize = #@var{N}
35             \override StaffSymbol #'staff-space = #(magstep
36 @var{N})
37 inside the Staff context to change the size of the font and the
38 distance between
39 staff lines accordingly."
40
41 Actually I found, that the @internalsref{StaffSymbol} at line 481
42 sends to an incomplete
43 documentation.  The property staff-space is not explained here.  I
44 thought Y-extent might be of
45 help, but it is in turn explained by x-space which again is
46 missing from the list.  Who has the
47 knowledge to fix this?
48
49
50 Clarify
51 http://code.google.com/p/lilypond/issues/detail?id=68
52
53 @end ignore
54
55
56 @node Gestion de l'espace
57 @chapter Gestion de l'espace
58 @translationof Spacing issues
59
60 L'agencement général d'une partition dépend de trois facteurs
61 interdépendants@tie{}: la mise en page, les sauts de ligne et
62 l'espacement.  Les choix faits en matière d'espacement détermineront la
63 densité de chacun des systèmes, ce qui influera sur le positionnement
64 des sauts de lignes et, par voie de conséquence, sur le nombre de page
65 de la partition.
66
67 En pratique, cette procédure comporte quatre étapes.  Dans un premier
68 temps, des distances élastiques (@emph{springs}) sont déterminées sur la
69 base des durées.  Sont alors calculées différentes possibilités de saut
70 de ligne, chacune se voyant attribuer un @qq{coefficient de laideur},
71 puis est estimée la hauteur de chaque système.  LilyPond opte enfin pour
72 la combinaison entre sauts de page et de ligne qui offre la meilleure
73 occupation de l'espace, tant horizontalement que verticalement.
74
75 Les réglages qui influencent la mise en forme peuvent se placer dans
76 deux blocs différents.  Le bloc @w{@code{\paper @{@dots{}@}}} intervient
77 en dehors de tout bloc @w{@code{\score @{@dots{}@}}}@tie{}; il contient
78 les réglages applicables à l'intégralité du document.  Quant au bloc
79 @w{@code{\layout @{@dots{}@}}}, il se place à l'intérieur d'un bloc
80 @w{@code{\score @{@dots{}@}}} pour déterminer ce qui le concerne tout
81 particulièrement.  Dans le cas où il n'y a qu'un seul bloc
82 @w{@code{\score @{@dots{}@}}}, les deux emplacements donneront le même
83 effet.  Les commandes indiquées dans ce chapitre sont valables dans tous
84 les cas.
85
86
87 @menu
88 * Du papier et des pages::
89 * Mise en forme de la musique::
90 * Sauts::
91 * Espacement vertical::
92 * Espacement horizontal::
93 * Réduction du nombre de pages de la partition::
94 @end menu
95
96 @cindex ragged, aligné
97 @cindex aligné, ragged
98
99 @warning{Vous verrez au fil de ce chapitre apparaître certains termes
100 dont la traduction vous semblera assurément erronée.  Il n'en est
101 cependant rien@tie{}: certains termes techniques ont une histoire
102 particulière selon leur langue d'origine.  Ainsi, le vocable anglais
103 @emph{Ragged} signifie en lambeau, en loques@tie{}; dans l'univers
104 typographique, un maître français voit un alignement à gauche -- il dira
105 @qq{au fer à gauche} -- alors que son homologue anglophone constate un
106 @emph{ragged-right} -- donc du vide à droite.}
107
108
109 @node Du papier et des pages
110 @section Du papier et des pages
111 @translationof Paper and pages
112
113 Nous allons examiner ici le bornage -- ce qui détermine l'espace que
114 pourra occuper la musique sur une feuille.
115
116 @menu
117 * Format du papier::
118 * Mise en forme de la page::
119 @end menu
120
121 @node Format du papier
122 @subsection Format du papier
123 @translationof Paper size
124
125 @cindex papier, taille
126 @cindex page, format
127
128 Le format du papier est déterminé par deux fonctions différentes@tie{}:
129 @code{set-default-paper-size} et @code{set-paper-size}.
130 @code{set-default-paper-size} se place en tête de fichier, alors que
131 @code{set-paper-size} se place à l'intérieur d'un bloc
132 @code{\paper}@tie{}:
133
134 @example
135 #(set-default-paper-size "a4")
136 @end example
137
138 @example
139 \paper @{
140   #(set-paper-size "a4")
141 @}
142 @end example
143
144 @noindent
145 @code{set-default-paper-size} fixe le format pour toutes les pages,
146 alors que @code{set-paper-size} détermine le format des feuilles
147 rattachées à un bloc @code{\paper} particulier.  Ainsi, lorsque le bloc
148 @code{\paper} se trouve en tête de fichier, le format du papier
149 s'appliquera à toutes les pages@tie{}; si @code{\paper} apparaît dans un
150 bloc @code{\book}, la taille ne s'appliquera qu'au @emph{book} en
151 question.
152
153 Les formats @code{a4}, @code{letter}, @code{legal} et @code{11x17} (ou
154 tabloïde) sont couramment utilisés pour les éditions musicales.  Bien
155 d'autres formats sont disponibles et sont répertoriés à la rubrique
156 @code{paper-alist} du fichier d'initialisation @file{scm/@/paper@/.scm}.
157
158 @c TODO add a new appendix for paper sizes (auto-generated) -pm
159
160 @warning{Par défaut, le papier est au format A4 (codé @code{a4}).}
161
162 Rien ne vous empèche d'ajouter un format de papier inhabituel à la
163 rubrique @code{paper-alist} du fichier @file{scm/@/paper@/.scm}.  Sachez
164 cependant que celui-ci est écrasé à chaque mise à jour de LilyPond.
165
166 @cindex orientation
167 @cindex landscape
168 @cindex paysage, papier
169 @cindex à l'italienne, papier
170
171 Le fait d'ajouter l'argument @code{'landscape} à l'instruction
172 @code{set-default-paper-size} permet d'obtenir une présentation à
173 l'italienne -- ou paysage si vous préférez -- et donc des lignes plus
174 longues.
175
176 @example
177 #(set-default-paper-size "a6" 'landscape)
178 @end example
179
180 La définition du format de papier influe sur un certain nombre de
181 variables comme entre autres les marges.  Nous vous invitons à toujours
182 spécifier, dans le bloc @code{\paper}, le format de page avant toute
183 autre variable.
184
185
186 @seealso
187 Fichiers d'initialisation :
188 @file{scm/@/paper@/.scm}.
189
190 Morceaux choisis :
191 @rlsrnamed{Spacing,Espacements}.
192
193
194 @node Mise en forme de la page
195 @subsection Mise en forme de la page
196 @translationof Page formatting
197
198 @funindex \paper
199
200 Les marges, en-tête et pied de page, ainsi que les autres variables de
201 mise en page sont automatiquement définis par rapport au format du
202 papier.
203
204 Les valeurs par défaut des marges, inscrites dans le fichier
205 d'initialisation @file{ly/@/paper@/-defaults@/-init@/.ly}, s'appliquent
206 au format par défaut (A4 sauf mention spécifique) et sont étalonnées
207 pour les autres formats.
208
209 Nous allons examiner, dans les paragraphes qui suivent, les différentes
210 variables sur lesquelles vous pouvez intervenir.
211
212 @menu
213 * Dimensionnement vertical fixe::
214 * Dimensionnement vertical fluctuant::
215 * Dimensionnement horizontal::
216 * Autres variables de mise en page::
217 @end menu
218
219
220 @node Dimensionnement vertical fixe
221 @unnumberedsubsubsec Dimensionnement vertical fixe
222 @translationof Fixed vertical dimensions
223
224 @table @code
225 @item paper-height
226 @funindex paper-height
227
228 La hauteur de la feuille.  Il s'agit par défaut de la dimension du
229 papier utilisé -- voir @ref{Format du papier} pour plus de détails.
230
231 @item top-margin
232 @funindex top-margin
233
234 La marge entre le bord supérieur de la feuille et la surface imprimable.
235 Elle est fixée par défaut à@tie{}@code{5\mm}.
236
237 @item bottom-margin
238 @funindex bottom-margin
239
240 La marge entre la surface imprimable et le bord inférieur de la feuille.
241 Elle est fixée par défaut à@tie{}@code{6\mm}.
242
243 @end table
244
245
246 @node  Dimensionnement vertical fluctuant
247 @unnumberedsubsubsec  Dimensionnement vertical fluctuant
248 @translationof Flexible vertical dimensions
249
250 Il est souvent judicieux d'apporter un peu de flexibilité à l'espacement
251 entre différents éléments (marges, titres, systèmes ou mouvements), en
252 dilatation ou compression selon le cas.  Un certain nombre de variables
253 de type @code{\paper} répertoriées ci-dessous vous permettront d'affiner
254 ces dimensionnements.
255
256 Gardez à l'esprit que les variables du bloc @code{\paper} dont nous
257 parlons ici n'influencent en rien l'espacement des portées d'un même
258 système.  L'espacement au sein des systèmes est géré par des propriétés
259 attachées à des objets graphiques (@emph{grobs}) qui, elles, se
260 définissent au niveau du bloc @code{\score} -- voir à ce sujet
261 @ref{Espacement vertical au sein d'un système}.
262
263
264 @subsubheading Structure des variables d'espacement du bloc @code{\paper}
265 @translationof Structure of spacing alists for @code{\paper} variables
266
267 Chacune de ces variables est constituée d'une liste associative à quatre
268 @i{clés}@tie{}:
269
270 @itemize
271 @item @code{padding} (@emph{décalage}) -- la grandeur minimale de
272 @qq{blanc} qui sépare deux éléments, exprimée en hauteur de portée.  On
273 peut le voir comme la hauteur minimale d'un rectangle vide qui devrait
274 s'étendre sur toute la largueur des deux éléments.
275
276 @item @code{space} (@emph{espace}) -- la grandeur d'espace par défaut,
277 exprimée en hauteur de portée, séparant les @i{points de référence} de
278 deux éléments qui évite tout risque de collision en l'absence de
279 dilatation ou compression.  Le point de référence d'un titre ou d'un
280 @emph{markup} est son sommet, celui d'un système est la ligne médiane de
281 la portée la plus proche.  Un @code{space} inférieur à @code{padding} ou
282 @code{minimum-distance} sera sans effet, dans la mesure où l'espacement
283 résultant ne saurait être inférieur à @code{padding} ou
284 @code{minimum-distance}.
285
286 @item @code{minimum-distance} (@emph{distance-minimale}) -- l'espacement
287 minimal, exprimé en hauteur de portée, entre les points de référence des
288 deux éléments alors qu'il y a déjà un effet de compression.  Une
289 @code{minimum-distance} inférieure à la valeur du @code{padding} sera
290 sans effet, dans la mesure où l'espacement résultant ne saurait être
291 inférieur au @code{padding}.
292
293 @item @code{stretchability} (@emph{dilatation}) -- le coefficient
294 d'étirement de cet espace.  Un coefficient nul permet de figer
295 l'espacement, à moins qu'il n'en résulte des collisions.  Un coefficient
296 positif déterminera la propension d'un espacement à s'étirer, tout
297 en tenant compte du coefficient affecté aux autres espacements.
298 Par exemple, lorsque le coefficient de dilatation d'une dimension est
299 double de celui d'une autre, elle pourra s'étirer deux fois plus que
300 cette dernière.  La valeur @code{+inf.0} provoque une
301 @code{programming_error} (erreur de programmation) et est ignorée@tie{};
302 vous pouvez toutefois utiliser @code{1.0e7} pour obtenir une valeur
303 proche de l'infini.  Lorsque cette @i{clé} n'est pas définie, sa valeur
304 est par défaut égale à @code{space}.  Notez bien que l'utilisateur ne
305 peut définir une propension à la compression@tie{}; elle est en fait
306 égale à (@code{space}@tie{}@minus{}@tie{}@code{minimum-distance}).
307
308 @end itemize
309
310 Lorsque l'impression n'est pas en pleine page -- elle est donc
311 @emph{ragged bottom} pour les anglophones -- l'élément @code{space}
312 n'est pas étiré. Les hauteurs sur une telle page correspondront donc au
313 maximum de
314
315 @itemize
316 @item @code{space}, plus
317 @item @code{minimum-distance} et
318 @item @code{padding}, augmenté de ce qu'il faut pour éviter les
319 chevauchements.
320 @end itemize
321
322
323
324 @subsubheading Ajustement des variables d'espacement du bloc @code{\paper}
325 @translationof Modifying spacing alists for @code{\paper} variables
326
327 Vous pouvez ne jouer que sur une clé d'une variable particulière@tie{}:
328
329 @example
330 \paper @{
331   system-system-spacing #'space = #10
332 @}
333 @end example
334
335 Ceci ajustera la clé spécifiée sans pour autant modifier les autres.
336 Vous pouvez aussi déterminer simultanément plusieurs clés d'une même
337 variable, voire toutes@tie{}:
338
339 @example
340 \paper @{
341   system-system-spacing =
342     #'((padding . 1)
343        (space . 12)
344        (minimum-distance . 8)
345        (stretchability . 12))
346 @}
347 @end example
348
349 Vous devrez néanmoins garder à l'esprit que les clés qui n'auront pas
350 été ajustées seront redéfinies@tie{}; elles seront ramenées à zéro --
351 sauf @code{stretchability} qui prendra la valeur de @code{space}.  Vous
352 conviendrez donc que les deux assertions ci-après sont
353 équivalentes@tie{}:
354
355 @example
356 system-system-spacing =
357   #'((space . 10))
358
359 system-system-spacing =
360   #'((padding . 0)
361      (space . 10)
362      (minimum-distance . 0)
363      (stretchability . 10))
364 @end example
365
366 L'une des conséquences inattendues de ce qui précède est la disparition
367 des réglages par défaut de @code{padding} et @code{minimum-distance}.
368 Ajuster une variable à l'aide d'une liste associative, quelle que soit
369 sa taille, réinitialisera la valeur de toutes ses clés.  Les réglages
370 par défaut des dimmensionnements à hauteur fluctuante appartenant au
371 bloc @code{\paper} sont répertoriés dans le fichier
372 @file{ly/paper-defaults-init.ly}.
373
374
375 @subsubheading Variables de dimensionnement fluctuant du bloc @code{\paper}
376 @translationof Flexible vertical dimension @code{\paper} variables
377
378 Le nom des dimensionnements à hauteur variable sont de la forme
379 @code{@var{upper}-@var{lower}-spacing}, où @code{@var{upper}} et
380 @code{@var{lower}} représentent les éléments qui doivent être espacés.
381 La distance s'établit entre les points de référence des deux éléments
382 concernés@tie{}: le sommet pour un titre ou un @emph{markup}, la ligne
383 médiane de la portée la plus proche pour un système.  Notez bien que,
384 dans les règles de nommage des variables qui suivent, le terme
385 @code{markup} fait référence aussi bien à un @i{markup de titrage}
386 (@code{bookTitleMarkup} ou @code{scoreTitleMarkup}) qu'à un
387 @i{markup de haut niveau} (voir @ref{Structure de fichier}).
388
389 Voici à présent les différentes variables disponibles@tie{}:
390
391 @table @code
392 @item markup-system-spacing
393 @funindex markup-system-spacing
394
395 détermine l'espacement entre un titre, ou un @emph{markup} de premier
396 niveau, et le système qui le suit.
397
398 @item score-markup-spacing
399 @funindex score-markup-spacing
400
401 détermine l'espacement entre le dernier système et le titre ou
402 @emph{markup} de haut niveau qui le suit.
403
404 @item score-system-spacing
405 @funindex score-system-spacing
406
407 détermine l'espacement entre deux systèmes appartenant à deux partitions
408 consécutives en l'absence de titrage.
409
410 @item system-system-spacing
411 @funindex system-system-spacing
412
413 détermine l'espacement entre deux systèmes d'un même mouvement.
414
415 @item markup-markup-spacing
416 @funindex markup-markup-spacing
417
418 détermine l'espacement entre deux titres ou @emph{markups} de premier
419 niveau.
420
421 @item last-bottom-spacing
422 @funindex last-bottom-spacing
423
424 détermine la distance entre le dernier système ou le dernier
425 @emph{markup} de haut niveau, et le bas de la surface imprimable --
426 autrement dit le haut de la marge basse.
427
428 @item top-system-spacing
429 @funindex top-system-spacing
430
431 détermine l'espace entre le haut de la surface imprimable (le bas de la
432 marge haute) et le milieu du premier système.  Cette variable n'est
433 effective qu'en l'absence de titre ou @emph{markup} de premier niveau
434 en haut de page.
435
436 @item top-markup-spacing
437 @funindex top-markup-spacing
438
439 détermine l'espace entre le haut de la surface imprimable (le bas de la
440 marge haute) et le premier titre ou @emph{markup} de premier niveau.
441 Cette variable n'est effective qu'en l'absence de système en haut de
442 page.
443
444 @end table
445
446
447 @snippets
448
449 L'en-tête et le pied de page sont créés respectivement par les fonctions
450 @code{make-header} et @code{make-footer}, toutes deux définies dans le
451 bloc @code{\paper}.  Leur implémentation par défaut se trouve dans les
452 fichiers d'initialisation @file{ly/@/paper@/-defaults@/-init@/.ly} et
453 @file{ly/@/titling@/-init@/.ly}.
454
455 La mise en forme de la page est réalisée par les fonctions
456 @code{page-music-height} et @code{page-make-stencil}, toutes deux
457 membres du bloc @code{\paper}.  La première informe l'algoritme des
458 sauts de ligne de combien d'espace il dispose sur la page@tie{}; la
459 seconde génère la page selon le nombre de système qu'elle contiendra.
460
461 Vous pouvez définir toutes ces valeurs -- en @code{mm}, @code{in},
462 @code{pt} ou @code{cm} -- en langage Scheme au sein du bloc
463 @code{\paper}.  Celles contenues dans le fichier
464 @file{paper-defaults.ly} sont en millimètres, c'est la raison pour
465 laquelle la valeur de@tie{}@w{@code{2 cm}} de ce qui suit doit être
466 précédée du signe multiplier.
467
468 @example
469 \paper @{
470  #(define bottom-margin (* 2 cm))
471 @}
472 @end example
473
474
475 Exemple :
476
477 @example
478 \paper @{
479   paper-width = 2\cm
480   top-margin = 3\cm
481   bottom-margin = 3\cm
482   ragged-last-bottom = ##t
483 @}
484 @end example
485
486 Voici par exemple comment centrer le numéro des pages au bas de chacune
487 d'elles@tie{}:
488
489 @example
490 \paper @{
491   print-page-number = ##t
492   print-first-page-number = ##t
493   oddHeaderMarkup = \markup \fill-line @{ " " @}
494   evenHeaderMarkup = \markup \fill-line @{ " " @}
495   oddFooterMarkup = \markup @{ \fill-line @{
496      \bold \fontsize #3 \on-the-fly #print-page-number-check-first
497      \fromproperty #'page:page-number-string @} @}
498   evenFooterMarkup = \markup @{ \fill-line @{
499      \bold \fontsize #3 \on-the-fly #print-page-number-check-first
500      \fromproperty #'page:page-number-string @} @}
501 @}
502 @end example
503
504
505 @seealso
506 Manuel de notation :
507 @ref{Espacement vertical entre les systèmes}.
508
509 Morceaux choisis :
510 @rlsrnamed{Spacing,Espacements}.
511
512
513 @node Dimensionnement horizontal
514 @unnumberedsubsubsec Dimensionnement horizontal
515 @translationof Horizontal dimensions
516
517 Certaines variables permettent de gérer les dimensionnements
518 horizontaux de la page@tie{}:
519
520 @table @code
521
522 @item binding-offset
523 @funindex binding-offset
524
525 La gouttière, ou marge de reliure, permet d'augmenter en conséquence la
526 valeur de la marge intérieure @code{inner-margin} de telle sorte que
527 rien ne soit masqué par la reliure.  Bien entendu, cette variable n'est
528 active que lorsque vous comptez générer un fichier imprimable en
529 recto-verso -- propriété @code{two-sided} définie à vrai.  La valeur par
530 défaut est de@tie{}@code{0}.
531
532 @item horizontal-shift
533 @funindex horizontal-shift
534
535 Tous les systèmes, ainsi que les titres et séparateurs de systèmes,
536 seront poussés d'autant vers la droite.  la valeur par défaut est
537 de@tie{}@code{0.0}.
538
539 @item indent
540 @funindex indent
541
542 définit le niveau d'indentation du premier sysème d'une partition.  La
543 valeur par défaut est de@tie{}@code{15\mm}.
544
545 @item inner-margin
546 @funindex inner-margin
547
548 La marge que toutes les pages d'une partie ou de tout un ouvrage devront
549 avoir du côté intérieur.  Bien entendu, cette variable n'est
550 active que lorsque vous comptez générer un fichier imprimable en
551 recto-verso -- propriété @code{two-sided} définie à vrai.  La valeur par
552 défaut est de@tie{}@code{10\mm}.
553
554 @item left-margin
555 @funindex left-margin
556
557 la marge entre le bord gauche de la feuille et le début de chaque
558 système.  La valeur par défaut est de@tie{}@code{10\mm}.
559
560 @item line-width
561 @funindex line-width
562
563 la longueur d'un système musical.  La valeur par défaut est égale à
564 @code{paper-width}, auquel sont retranchés @code{left-margin} et
565 @code{right-margin}.
566
567 @item outer-margin
568 @funindex outer-margin
569
570 la marge que toutes les pages d'une partie ou de tout un ouvrage devront
571 avoir du côté extérieur -- opposé à la reliure.  Bien entendu, cette
572 variable n'est active que lorsque vous comptez générer un fichier
573 imprimable en recto-verso -- propriété @code{two-sided} définie à vrai.
574 La valeur par défaut est de@tie{}@code{20\mm}.
575
576 @item paper-width
577 @funindex paper-width
578
579 la largeur de la page.  Elle correspond par défaut à la largeur du
580 format de papier utilisé -- voir à ce suje la rubrique
581 @ref{Format du papier}.
582
583 @item right-margin
584 @funindex right-margin
585
586 la marge entre le bord droit de la page et la fin des systèmes.  La
587 valeur par défaut est de@tie{}@code{10\mm}.
588
589 @item short-indent
590 @funindex short-indent
591
592 le niveau d'indentation de tous les systèmes hormis le premier.  La
593 valeur par défaut est de@tie{}@code{0}.
594
595 @end table
596
597 LilyPond appliquera les valeurs par défaut pour les variables non
598 définies, en les ajustant toutefois selon la taille de papier que vous
599 aurez spécifiée.  Cet adaptation automatique concerne@tie{}:
600
601 @itemize
602 @item @var{left-margin}
603 @item @var{right-margin}
604 @item @var{top-margin}
605 @item @var{bottom-margin}
606 @item @var{head-separation}
607 @item @var{foot-separation}
608 @item @var{indent}
609 @item @var{short-indent}
610 @end itemize
611
612 Les réglages de @code{line-width}, @code{left-margin},
613 @code{right-margin} et @code{paper-width} dépendent les uns des autres,
614 mais ne sont pas tous obligatoires@tie{}:
615
616 @example
617 \paper @{
618   left-margin = 30\mm
619 @}
620 @end example
621
622 Ceci ne définit que la marge gauche (@code{lef-margin}).  Cependant, et
623 dans la mesure ou @code{right-margin} -- la marge de droite -- garde sa
624 valeur par défaut, la longueur de ligne -- @code{line-width} -- sera
625 automatiquement calculée.
626
627 @example
628 \paper @{
629   line-width = 150\mm
630 @}
631 @end example
632
633 Ici, @code{left-margin} et @code{right-margin} prendront la même valeur.
634 Par conséquent, @code{line-width} est retranché de @code{paper-width} et
635 divisé par deux.  Autrement dit, le fait de ne spécifier que la valeur
636 de @code{line-width} permet d'obtenir des systèmes centrés sur la
637 largeur de la page.
638
639 LilyPond effectue toutefois des contrôles de cohérence au niveau de ces
640 valeurs et émet un avertissement si l'addition n'est pas bonne ou si les
641 systèmes risquent de déborder.
642
643 @example
644 \paper @{
645   paper-width = 210\mm
646   left-margin = 20\mm
647   right-margin = 30\mm
648   line-width = 100\mm
649 @}
650 @end example
651
652 Ces contrôles peuvent se désactiver en définissant la propriété
653 @code{check-consistency} à faux@tie{}:
654
655 @example
656 \paper @{
657   paper-width = 210\mm
658   left-margin = 20\mm
659   line-width = 200\mm
660   check-consistency = ##f
661 @}
662 @end example
663
664 @warning{Lorsque vous définissez manuellement la largeur de page
665 (@code{paper-width}), ajustez si besoin les valeurs de
666 @code{line-width}, @code{left-margin}, @code{indent} et
667 @code{short-indent}.}
668
669
670 @seealso
671 Morceaux choisis :
672 @rlsrnamed{Spacing,Espacements}.
673
674
675 @node Autres variables de mise en page
676 @unnumberedsubsubsec Autres variables de mise en page
677 @translationof Other layout variables
678
679 Les variables regroupées ici par ordre alphabétique vous permettront
680 d'agencer la page en général.
681
682 @table @code
683
684 @item auto-first-page-number
685 @funindex auto-first-page-number
686
687 L'algorithme qui gère les sauts de page prend en compte le fait que le
688 premier numéro de page soit pair ou impair.  Lorsque cette
689 fonctionnalité est activée, l'algorithme des sauts de page décidera par
690 lui-même si le premier numéro sera pair ou impair, ce qui se traduira
691 par un éventuel incrément de un.  La valeur par défaut est@tie{}@code{##f}.
692
693 @ignore
694
695 TODO: this variable is used, but I don't know what it does. -pm
696 @item blank-after-score-page-force
697 @funindex blank-after-score-page-force
698
699 Default: @code{2}.
700
701 @end ignore
702
703 @item blank-last-page-force
704 @funindex blank-last-page-force
705
706 Pénalité pour fin de partition intervenant sur une page impaire.  La
707 valeur par défaut est de@tie{}@code{0}.
708
709 @item blank-page-force
710 @funindex blank-page-force
711
712 Pénalité pour apparition d'une page blanche en cours de partition.
713 L'option @code{ly:optimal-breaking} n'en tiendra pas compte puisqu'elle
714 ne conçoit pas la présence d'une page blanche au milieu d'une partition.
715 La valeur par défaut est de@tie{}@code{5}.
716
717 @item check-consistency
718 @funindex check-consistency
719
720 Lorsqu'elle est activée, cette variable vérifie que  @code{left-margin},
721 @code{right-margin} et @code{line-width} sont en cohérence, et que
722 l'addition de ces trois éléments ne dépassera pas la largeur du papier
723 (@code{paper-width}).  La valeur par défaut est@tie{}@code{##t}.
724
725 @item first-page-number
726 @funindex first-page-number
727
728 Le numéro de la première page.  La valeur par défaut est
729 de@tie{}@code{#1}.
730
731 @item max-systems-per-page
732 Le nombre maximal de systèmes qu'une page pourra comporter.  Cette
733 variable n'est prise en compte, à ce jour, que par l'option
734 @code{ly:optimal-breaking}, et n'est pas définie.
735
736 @item min-systems-per-page
737 Le nombre minimal de systèmes qu'une page pourra comporter.  Attention
738 cependant aux risques de débordements s'il est trop important.  Cette
739 variable n'est prise en compte, à ce jour, que par l'option
740 @code{ly:optimal-breaking}, et n'est pas définie.
741
742 @item page-breaking-between-system-spacing
743 @funindex page-breaking-between-system-spacing
744
745 Cette variable permet de @qq{tromper} l'algorithme de gestion des sauts
746 de page quant à la valeur de @code{between-system-spacing}.  Ainsi,
747 lorsque @code{page-breaking-between-system-spacing #'padding} a une
748 valeur nettement supérieure à @code{between-system-spacing #'padding},
749 l'algorithme en question aura tendance à disposer moins de systèmes sur
750 une même page.  Cette variable est par défaut non définie.
751
752 @item page-count
753 @funindex page-count
754
755 Le nombre de pages que devra comporter la partition.  Cette variable est
756 par défaut non définie.
757
758 @item page-limit-inter-system-space
759 @funindex page-limit-inter-system-space
760
761 Lorsqu'elle est activée, cette variable permet de limiter l'espacement
762 entre les systèmes d'une page comportant beaucoup de blanc.  La valeur
763 par défaut est@tie{}@code{##f}.  Pour de plus amples détails,
764 reportez-vous à la rubrique @ref{Espacement vertical entre les systèmes}.
765
766 @item page-limit-inter-system-space-factor
767 @funindex page-limit-inter-system-space-factor
768
769 Le coefficient utilisé par @code{page-limit-inter-system-space}.  La
770 valeur par défaut est de@tie{}@code{1.4}.  Pour de plus amples détails,
771 reportez-vous à la rubrique @ref{Espacement vertical entre les systèmes}.
772
773 @item page-spacing-weight
774 @funindex page-spacing-weight
775
776 Cette variable définit l'importance relative des espacements entre la
777 page (verticalité) et la ligne (horizontalité).  Une valeur élevée
778 privilégiera l'espacement au niveau de la page.  La valeur par défaut
779 est de@tie{}@code{#10}.
780
781 @item print-all-headers
782 @funindex print-all-headers
783
784 Lorsque cette variable est activiée, l'intégralité des champs d'entête
785 sera imprimée pour chaque bloc @code{\score}, plutôt que les seuls
786 champs @code{piece} et @code{opus}.  La valeur par défaut
787 est@tie{}@code{##f}.
788
789 @item print-first-page-number
790 @funindex print-first-page-number
791
792 Cette variable permet d'imprimer le numéro de page y compris sur la
793 première.  La valeur par défaut est@tie{}@code{##f}.
794
795 @item print-page-number
796 @funindex print-page-number
797
798 La désactivation de cette variable permet d'obtenir des pages non
799 numérotées.  La valeur par défaut est@tie{}@code{##t}.
800
801 @item ragged-bottom
802 @funindex ragged-bottom
803
804 L'activation de cette variable permet de ne pas répartir verticalement
805 les systèmes sur les pages homrmis la dernière.  La valeur par défaut
806 est@tie{}@code{##f}.
807
808 Lorsque la partition ne comporte que deux ou trois systèmes par page,
809 comme pour un conducteur d'orchestre, nous vous conseillons d'activer
810 cette variable.
811
812 @item ragged-last
813 @funindex ragged-last
814
815 Lorsqu'elle est activée, cette variable permet de ne pas étendre le
816 dernier système de façon à occuper toute la longueur de la ligne.  La
817 valeur par défaut est@tie{}@code{##f}.
818
819 @item ragged-last-bottom
820 @funindex ragged-last-bottom
821
822 La désactivation de cette variable permet de répartir verticalement les
823 systèmes de la dernière pages d'une partition.  La valeur par défaut
824 est@tie{}@code{##t}.
825
826 Nous vous conseillons, lorsque des pièces couvrent deux pages ou plus,
827 d'activer cette variable.
828
829 Notez bien que la variable @code{ragged-last-bottom} affecte aussi la
830 dernière page de chacune des parties -- créées à l'aide d'un bloc
831 @code{\bookpart} -- d'un même ouvrage.
832
833 @item ragged-right
834 @funindex ragged-right
835
836 Lorsque cette variable est activée, les systèmes ne s'étendront pas sur
837 la longueur de la ligne, mais sarrêteront sur à leur longueur normale.
838 La valeur par défaut est @code{##f}.
839
840 Si la partition ne comporte qu'un seul système, la valeur par défaut
841 devient @code{##t}.
842
843 @item system-separator-markup
844 @funindex system-separator-markup
845
846 Il s'agit en l'occurence d'insérer un objet de type @emph{markup} entre
847 chaque système, comme on le voit dans nombre de partitions orchestrales.
848 Cette variable n'est pas définie par défaut.
849
850 La commande @code{\slashSeparator} fournit un @emph{markup} relativement
851 courant@tie{}:
852
853 @lilypond[quote,ragged-right]
854 #(set-default-paper-size "a6" 'landscape)
855 \book {
856   \score {
857     \relative c' { c1 \break c1 }
858   }
859   \paper {
860     system-separator-markup = \slashSeparator
861   }
862 }
863 @end lilypond
864
865 @item system-count
866 @funindex system-count
867
868 Le nombre de systèmes requis par la partition.  Cette variable n'est pas
869 définie par défaut.
870
871 @item systems-per-page
872 @funindex systems-per-page
873
874 Le nombre de systèmes que devrait comporter chaque page.  Cette variable
875 n'est à ce jour prise en charge que par l'algorithme
876 @code{ly:optimal-breaking} et n'est pas définie par défaut.
877
878 @item two-sided
879 @funindex two-sided
880
881 @cindex gutter
882 @cindex binding gutter
883
884 Cette variable permet de gérer efficacement les impressions recto-verso.
885 Lorsqu'elle est activée, les réglages affectés à @code{inner-margin},
886 @code{outer-margin} ainsi que @code{binding-offset} détermineront les
887 différentes marges selon qu'il s'agit d'une page paire ou impaire.
888 Cette variable s'applique en lieu et place de @code{left-margin} et
889 @code{right-margin}.  La valeur par défaut est@tie{}@code{##f}.
890
891 @end table
892
893
894 @seealso
895 Morceaux choisis :
896 @rlsrnamed{Spacing,Espacements}.
897
898
899 @knownissues
900
901 L'entête par défaut, formé d'une seule ligne, est constitué du numéro de
902 page et du champ @code{instrument} contenu dans le bloc @code{\header}.
903
904 Les titrages (contenus dans le bloc @code{\header@{@}}) sont considérés
905 comme des systèmes@tie{}; ils seront donc affectés par
906 @code{ragged-bottom} et @code{ragged-last-bottom}, qui éventuellement
907 ajouteront de l'espace avant le premier système de la partition.
908
909
910 @node Mise en forme de la musique
911 @section Mise en forme de la musique
912 @translationof Music layout
913
914 @menu
915 * Définition de la taille de portée::
916 * Mise en forme de la partition::
917 @end menu
918
919
920 @node Définition de la taille de portée
921 @subsection Définition de la taille de portée
922 @translationof Setting the staff size
923
924 @cindex fonte, définition de la taille
925 @cindex portée, définition de la taille
926 @funindex layout file
927
928 La @strong{taille de portée} (@emph{staff size}) est fixée par défaut à
929 20@tie{}points.  Il existe deux manières de la modifier@tie{}:
930
931 La taille des portées peut se définir de globalement pour toutes les
932 partitions d'un même fichier, ou plus précisément d'un bloc
933 @code{\book}, à l'aide de @code{set-global-staff-size}.
934
935 @example
936 #(set-global-staff-size 14)
937 @end example
938
939 @noindent
940 Ceci définit donc la hauteur des portées à 14@tie{}points par
941 défaut@tie{}; toutes les fontes seront ajustées en conséquence.
942
943
944 Vous pouvez aussi spécifier une taille à une partition en particulier en
945 procédant comme ci-dessous@tie{}:
946 @example
947 \score@{
948   ...
949   \layout@{
950   #(layout-set-staff-size 15)
951   @}
952 @}
953 @end example
954
955 La fonte Feta fournit les symboles musicaux dans huit tailles
956 différentes.  Chaque fonte correspond à une hauteur particulière de
957 portée@tie{}; les petites tailles comportent des symboles plus épais
958 pour correspondre à l'épaisseur relativement plus importante des lignes
959 de la portée.  Le tableau suivant répertorie les différentes tailles de
960 police.
961
962 @quotation
963 @multitable @columnfractions .15 .2 .22 .2
964
965 @item @b{nom de la fonte}
966 @tab @b{hauteur de portée (pt)}
967 @tab @b{hauteur de portée (mm)}
968 @tab @b{utilisation}
969
970 @item feta11
971 @tab 11.22
972 @tab 3.9
973 @tab format de poche
974
975 @item feta13
976 @tab 12.60
977 @tab 4.4
978 @tab
979
980 @item feta14
981 @tab 14.14
982 @tab 5.0
983 @tab
984
985 @item feta16
986 @tab 15.87
987 @tab 5.6
988 @tab
989
990 @item feta18
991 @tab 17.82
992 @tab 6.3
993 @tab cernet de chant
994
995 @item feta20
996 @tab 20
997 @tab 7.0
998 @tab partition standard
999
1000 @item feta23
1001 @tab 22.45
1002 @tab 7.9
1003 @tab
1004
1005 @item feta26
1006 @tab 25.2
1007 @tab 8.9
1008 @tab
1009 @c modern rental material?
1010
1011 @end multitable
1012 @end quotation
1013
1014 Ces fontes sont disponibles à toutes les tailles.  La propriété de
1015 contexte @code{fontSize} ainsi que la propriété de mise en forme
1016 @code{staff-space} (voir @rinternals{StaffSymbol}) permettent d'ajuster
1017 individuellement la taille de chaque portée.  La taille de chacune des
1018 portées est relative à la taille globale.
1019
1020
1021 @seealso
1022 Manuel de notation :
1023 @ref{Indication de la taille de fonte musicale}.
1024
1025 Morceaux choisis :
1026 @rlsrnamed{Spacing,Espacements}.
1027
1028
1029 @knownissues
1030
1031 @code{layout-set-staff-size} ne modifie en rien l'espacement entre les
1032 lignes d'une portée.
1033
1034
1035 @node Mise en forme de la partition
1036 @subsection Mise en forme de la partition
1037 @translationof Score layout
1038
1039 @funindex \layout
1040
1041 Alors que @code{\paper} définit le formatage des pages pour
1042 l'intégralité du document, @code{\layout} s'occupe de la mise en forme
1043 spécifique à la partition.
1044
1045 @example
1046 \layout @{
1047   indent = 2.0\cm
1048   \context @{ \Staff
1049     \override VerticalAxisGroup #'minimum-Y-extent = #'(-6 . 6)
1050   @}
1051   \context @{ \Voice
1052     \override TextScript #'padding = #1.0
1053     \override Glissando #'thickness = #3
1054   @}
1055 @}
1056 @end example
1057
1058
1059 @seealso
1060 Manuel de notation :
1061 @ref{Modification des réglages par défaut d'un contexte}.
1062
1063 Morceaux choisis :
1064 @rlsrnamed{Spacing,Espacements}.
1065
1066
1067 @node Sauts
1068 @section Sauts
1069 @translationof Breaks
1070
1071 @menu
1072 * Sauts de ligne::
1073 * Sauts de page::
1074 * Optimisation des sauts de page::
1075 * Optimisation des tournes::
1076 * Minimisation des sauts de page::
1077 * Sauts explicites::
1078 * Recours à une voix supplémentaire pour gérer les sauts::
1079 @end menu
1080
1081 @node Sauts de ligne
1082 @subsection Sauts de ligne
1083 @translationof Line breaking
1084
1085 @cindex saut de ligne
1086 @cindex ligne, passer à la suivante
1087
1088 Les sauts de ligne sont normalement gérés de façon automatique.  Ils
1089 interviennent de telle sorte qu'une ligne ne soit ni trop resserrée, ni
1090 trop aérée, et que des lignes consécutives aient à peu près la même
1091 densité.  Il arrive parfois que LilyPond n'ait pas judicieusement placé
1092 un saut de ligne@tie{}; il suffit alors d'insérer l'instruction
1093 @code{\break} à l'endroit où vous le jugez utile pour @qq{forcer} le
1094 passage à la ligne suivante, en gardant à l'esprit qu'il ne saurait
1095 intervenir au beau milieu d'une mesure.  Autrement dit, un saut de ligne
1096 ne peut se placer que sur une barre, à la fin d'une mesure complète.  Si
1097 d'aventure vous voulez forcer un saut de ligne en l'absence de barre de
1098 mesure, vous devrez auparavant insérer une barre invisible -- à l'aide
1099 de @code{\bar@tie{}""} -- et vous assurer qu'aucune portée n'a de note
1100 en cours à ce moment précis, auquel cas le saut en question sera tout
1101 simplement ignoré.
1102
1103 L'instruction opposée, @code{\noBreak}, interdira toute tentative de
1104 saut de ligne à la fin de la mesure où elle est explicitée.
1105
1106 LilyPond dispose de deux variables de base pour influencer l'espacement
1107 au niveau des lignes.  Toutes deux se définissent dans un bloc
1108 @code{\layout}, @code{indent} réglant l'indentation de la première
1109 ligne, et @code{line-width} la longueur des lignes.
1110
1111 L'activation du commutateur @code{ragged-right} au sein du bloc
1112 @code{\layout} aura pour effet de terminer les système là où il le
1113 feraient normalement plutôt que de les étirer sur toute la longueur de
1114 la ligne.  Ceci est particulièrement utile pour de petits fragments ou
1115 pour vérifier la densité induite par l'espacement naturel.
1116
1117 @c TODO Check and add para on default for ragged-right
1118
1119 Le commutateur @code{ragged-last} est équivalent à @code{ragged-right},
1120 à ceci près qu'il n'affecte que la dernière ligne de la pièce.
1121
1122 @example
1123 \layout @{
1124 indent = #0
1125 line-width = #150
1126 ragged-last = ##t
1127 @}
1128 @end example
1129
1130
1131
1132 @cindex sauts de ligne régliers
1133 @cindex portée à quatre mesures
1134
1135 L'utilisation conjointe de @code{\break} et de blancs dans une section
1136 @code{\repeat} vous permettra de positionner des sauts de ligne à
1137 intervalle régulier.  Par exemple, les 28 mesures de ce qui suit seront
1138 coupées toutes les quatre mesures, pas ailleurs@tie{}:
1139
1140 @example
1141 << \repeat unfold 7 @{
1142          s1 \noBreak s1 \noBreak
1143          s1 \noBreak s1 \break @}
1144    @emph{en avant la musique !}
1145 >>
1146 @end example
1147
1148 @ignore
1149 Apparemment, je ne vois pas de "snippet" qui corresponde,
1150 à moins que ce ne soit pour allécher vers la section
1151 "4.6 Fitting music onto fewer pages" -JCM
1152 @c TODO Check this
1153 A linebreaking configuration can be saved as a @code{.ly} file
1154 automatically.  This allows vertical alignments to be stretched to
1155 fit pages in a second formatting run.  This is fairly new and
1156 complicated.  More details are available in
1157 @rlsr{Spacing}.
1158 @end ignore
1159
1160 @predefined
1161 @funindex \break
1162 @code{\break},
1163 @funindex \noBreak
1164 @code{\noBreak}.
1165 @endpredefined
1166
1167
1168 @seealso
1169 Référence des propriétés internes :
1170 @rinternals{LineBreakEvent}.
1171
1172 Morceaux choisis :
1173 @rlsrnamed{Spacing,Espacements}.
1174
1175
1176 @knownissues
1177
1178 Un saut de ligne ne peut intervenir qu'au moment d'une barre de mesure.
1179 Une note qui resterait en suspend faussera la mesure comme vous pouvez
1180 le constater ci-dessous.
1181
1182 @lilypond[quote,ragged-right,relative=2,fragment,verbatim]
1183 c4 c2 << c2 {s4 \break } >>  % this does nothing
1184 c2 c4 |           % a break here would work
1185 c4 c2 c4 ~ \break % as does this break
1186 c4 c2 c4
1187 @end lilypond
1188
1189 Le seul moyen d'obtenir ce que vous voulez en pareil cas consiste à
1190 désactiver le @code{Forbid_line_break_engraver}.  Notez bien que les
1191 sauts de ligne forcés doivent être saisis au sein d'une expression
1192 polyphonique@tie{}:
1193
1194 @lilypond[quote,ragged-right,relative=2,verbatim]
1195 \new Voice \with {
1196   \remove Forbid_line_break_engraver
1197 } {
1198   c4 c2 << c2 {s4 \break } >>  % now the break is allowed
1199   c2 c4
1200 }
1201 @end lilypond
1202
1203 Selon le même principe, un saut de ligne ne peut intervenir alors qu'une
1204 ligature s'étend sur deux mesures consécutives.  Il faut en ce cas là
1205 introduire la dérogation @code{\override Beam #'breakable = ##t}.
1206
1207
1208 @node Sauts de page
1209 @subsection Sauts de page
1210 @translationof Page breaking
1211
1212 La gestion automatique des sauts de page se contrôle à l'aide des
1213 commandes @code{\pageBreak} et @code{\noPageBreak}. Ces commandes
1214 fonctionnent de manière analogue à @code{\break} et @code{\noBreak} pour
1215 les sauts de ligne et se placent donc au moment d'une barre de mesure.
1216 Elles permettent de forcer, ou d'interdire, un saut de page à l'endroit
1217 indiqué.  Comme on peut s'y attendre, @code{\pageBreak} force le saut de
1218 ligne.
1219
1220 Les commandes @code{\pageBreak} et @code{\noPageBreak} peuvent se
1221 trouver à des niveaux supérieurs, entre deux partitions ou
1222 @emph{markups} de premier rang.
1223
1224 Tout comme @code{ragged-right} et @code{ragged-last} qui permettent de
1225 gérer la répartition horizontale, LilyPond dispose de commutateurs
1226 équivalents au niveau de la verticalité@tie{}: @code{ragged-bottom} et
1227 @code{ragged-last-bottom}.  Lorsqu'ils sont tous deux activés --
1228 affectés de @code{##t} -- les systèmes ne seront pas répartis sur les
1229 pages y compris la dernière.
1230
1231 Pour de plus amples détails, reportez-vous à @ref{Espacement vertical}.
1232
1233 Les sauts de page sont générés par la fonction @code{page-breaking}.
1234 LilyPond dispose de trois différents algorithmes en la matière@tie{}:
1235 @code{ly:optimal-breaking}, @code{ly:page-turn-breaking} et
1236 @code{ly:minimal-breaking}.  C'est @code{ly:optimal-breaking} qui est
1237 activé par défaut, mais rien ne vous empèche d'en changer, par
1238 l'intermédiaire du bloc @code{\paper}@tie{}:
1239
1240 @example
1241 \paper@{
1242   #(define page-breaking ly:page-turn-breaking)
1243 @}
1244 @end example
1245
1246 @funindex \bookpart
1247
1248 Losqu'un ouvrage contient plusieurs partitions et un certain nombre de
1249 pages, la gestion des sauts de page finit par devenir très gourmande,
1250 tant au niveau du processeur que de la mémoire.  Vous pouvez cependant
1251 alléger la charge en recourant à des blocs @code{\bookpart} afin de
1252 sectionner l'ouvrage que vous traitez@tie{}; les sauts de pages seront
1253 alors gérés individuellement au niveau de chacune des parties.  Par
1254 ailleurs, cela vous autorisera une gestion différente selon les
1255 sections.
1256
1257 @example
1258 \bookpart @{
1259   \header @{
1260     subtitle = "Préface"
1261   @}
1262   \paper @{
1263      %% Pour une partie constituée principalement de texte
1264      %% ly:minimal-breaking est plus judicieux.
1265      #(define page-breaking ly:minimal-breaking)
1266   @}
1267   \markup @{ @dots{} @}
1268   @dots{}
1269 @}
1270 \bookpart @{
1271   %% Cette partie étant purment musicale,
1272   %% retour au style par défaut (optimal-breaking).
1273   \header @{
1274     subtitle = "Premier mouvement"
1275   @}
1276   \score @{ @dots{} @}
1277   @dots{}
1278 @}
1279 @end example
1280
1281
1282 @predefined
1283 @funindex \pageBreak
1284 @code{\pageBreak},
1285 @funindex \noPageBreak
1286 @code{\noPageBreak}.
1287 @endpredefined
1288
1289
1290 @seealso
1291 Morceaux choisis :
1292 @rlsrnamed{Spacing,Espacements}.
1293
1294
1295 @node Optimisation des sauts de page
1296 @subsection Optimisation des sauts de page
1297 @translationof Optimal page breaking
1298
1299 @funindex ly:optimal-breaking
1300
1301 LilyPond, pour déterminer où placer un saut de page, utilise par défaut
1302 la fonction @code{ly:optimal-breaking}.  Celle-ci tend à trouver une
1303 rupture qui évite d'obtenir à la fois une page trop dense ou exagérément
1304 aérée.  Contrairement à la fonction @code{ly:page-turn-breaking}, elle
1305 n'a aucune notion de ce qu'est une @qq{tourne}.
1306
1307
1308 @seealso
1309 Morceaux choisis :
1310 @rlsrnamed{Spacing,Espacements}.
1311
1312
1313 @node Optimisation des tournes
1314 @subsection Optimisation des tournes
1315 @translationof Optimal page turning
1316
1317 @funindex ly:page-turn-breaking
1318
1319 Aboutir à une configuration des sauts de page de telle sorte que les
1320 pages de droite se terminent toujours par un silence devient souvent une
1321 nécessité.  En effet, l'exécutant pourra alors tourner la page sans
1322 risquer de manquer des notes.  La fonction @code{ly:page-turn-breaking}
1323 tend à trouver une rupture qui évite d'obtenir à la fois une page trop
1324 dense ou exagérément aérée, tout en tenant compte du fait qu'une tourne
1325 ne saurait intervenir qu'à certains endroits.
1326
1327 L'utilisation de cette fonction se fait en deux étapes.  Il vous faut
1328 tout d'abord l'activer au sein du bloc @code{\paper} comme indiqué à la
1329 rubrique @ref{Sauts de page}.  Vous devrez, dans un deuxième temps,
1330 informer la fonction des endroits où les sauts de page sont permis.
1331
1332 Cette deuxième étape se réalise de deux manières différentes.  Vous
1333 pouvez spécifier manuellement chaque tourne potentielle en insérant un
1334 @code{\allowPageTurn} à l'endroit approprié de votre fichier source.
1335
1336 Toutefois, cette option peut vite se révéler fastidieuse selon l'ampleur
1337 de l'œuvre.  Vous pouvez alors recourir au @code{Page_turn_engraver} que
1338 vous mentionnerez dans un contexte de voix ou de portée.  Ce graveur de
1339 tournes recherchera dans le contexte en question les passages sans note.
1340 Notez bien qu'il ne recherche pas des silences, mais l'absence de
1341 notes@tie{}; autrement dit, il ne restera pas inactif dans la cadre
1342 d'une portée polyphonique dont l'une des parties contiendrait des
1343 silences.  Lorsqu'il rencontre un fragement suffisament long ne
1344 contenant aucune note, il insère un @code{\allowPageTurn} à la barre
1345 terminant ce fragment, à moins qu'il ne rencontre en chemin une
1346 @qq{barre spéciale} -- telle une double barre -- auquel cas il y
1347 déposera le @code{\allowPageTurn}.
1348
1349 @funindex minimumPageTurnLength
1350
1351 Le @code{Page_turn_engraver} examine la propriété de contexte
1352 @code{minimumPageTurnLength} pour déterminer quelle doit être la
1353 longueur d'un fragement sans note avant une tourne.  La valeur par
1354 défaut de @code{minimumPageTurnLength} est
1355 @code{#(ly:make-moment@tie{}1@tie{}1)}, soit une ronde, et s'ajuste de
1356 la manière suivante@tie{}:
1357
1358 @example
1359 \new Staff \with @{ \consists "Page_turn_engraver" @}
1360 @{
1361   a4 b c d |
1362   R1 | % une tourne peut se placer ici
1363   a4 b c d |
1364   \set Staff.minimumPageTurnLength = #(ly:make-moment 5 2)
1365   R1 | % il ne peut pas y avoir de tourne ici
1366   a4 b r2 |
1367   R1*2 | % une tourne peut se placer ici
1368   a1
1369 @}
1370 @end example
1371
1372 @funindex minimumRepeatLengthForPageTurn
1373
1374 Le @code{Page_turn_engraver} tient compte des reprises.  C'est pourquoi
1375 il ne permettra une tourne que dans le cas où il y aura suffisamment de
1376 temps au début et à la fin de la reprise pour que l'exécutant ait le
1377 temps de revenir à la page précédente.  Le @code{Page_turn_engraver} est
1378 même capable d'interdire un tourne dans le cas d'une reprise de courte
1379 durée, ajustable au travers de la propriété de contexte
1380 @code{minimumRepeatLengthForPageTurn}.
1381
1382 Les commandes de tourne -- @code{\pageTurn}, @code{\noPageTurn} et
1383 @code{\allowPageTurn} -- peuvent s'utiliser à des niveaux supérieurs,
1384 entre des blocs @code{\score} ou des @emph{markups} de haut niveau.
1385
1386
1387 @predefined
1388 @funindex \pageTurn
1389 @code{\pageTurn},
1390 @funindex \noPageTurn
1391 @code{\noPageTurn},
1392 @funindex \allowPageTurn
1393 @code{\allowPageTurn}.
1394 @endpredefined
1395
1396
1397 @seealso
1398 Morceaux choisis :
1399 @rlsrnamed{Spacing,Espacements}.
1400
1401
1402 @knownissues
1403
1404 Une partition ne devrait contenir qu'une seule instance du
1405 @code{Page_turn_engraver}, au risque de se contredire les uns les autres.
1406
1407
1408 @node Minimisation des sauts de page
1409 @subsection Minimisation des sauts de page
1410 @translationof Minimal page breaking
1411
1412 @funindex ly:minimal-breaking
1413
1414 La fonction @code{ly:minimal-breaking} est celle qui réalise le moins de
1415 calculs pour positionner les sauts de page.  Elle mettra le plus de
1416 systèmes possible sur une page avant de passer à la suivante.  On peut
1417 donc la préférer lorsque la partition s'étend sur beaucoup de pages ou
1418 lorsque les autres fonctions de gestion des sauts de page ralentissent
1419 nettement le traitement, sont trop gourmandes en mémoire ou qu'il y a
1420 beaucoup de texte.  Il suffit de la mentionner au sein du bloc
1421 @code{\paper}@tie{}:
1422
1423 @example
1424 \paper @{
1425   #(define page-breaking ly:minimal-breaking)
1426 @}
1427 @end example
1428
1429
1430 @seealso
1431 Morceaux choisis :
1432 @rlsrnamed{Spacing,Espacements}.
1433
1434
1435 @node Sauts explicites
1436 @subsection Sauts explicites
1437 @translationof Explicit breaks
1438
1439 Il arrive parfois que LilyPond rejette des @code{\break} ou des
1440 @code{\pageBreak} explicites.  Vous pouvez alors prendre le contrôle
1441 avex ces deux instructions dérogatoires@tie{}:
1442
1443 @example
1444 \override NonMusicalPaperColumn #'line-break-permission = ##f
1445 \override NonMusicalPaperColumn #'page-break-permission = ##f
1446 @end example
1447
1448 Lorsque vous désactivez @code{line-break-permission}, LilyPond
1449 ne passera à la ligne suivante qu'en présence d'un @code{\break}
1450 explicite, et nulle part ailleurs.  De la même façon, la désactivation
1451 de @code{page-break-permission} aura pour conséquence que LilyPond ne
1452 changera de page que lorsqu'il rencontrera un @code{\pageBreak}, et
1453 nulle part ailleurs.
1454
1455 @lilypond[quote,verbatim]
1456 \paper {
1457   indent = #0
1458   ragged-right = ##t
1459   ragged-bottom = ##t
1460 }
1461
1462 \score {
1463   \new Staff {
1464     \repeat unfold 2 { c'8 c'8 c'8 c'8 } \break
1465     \repeat unfold 4 { c'8 c'8 c'8 c'8 } \break
1466     \repeat unfold 6 { c'8 c'8 c'8 c'8 } \break
1467     \repeat unfold 8 { c'8 c'8 c'8 c'8 } \pageBreak
1468     \repeat unfold 8 { c'8 c'8 c'8 c'8 } \break
1469     \repeat unfold 6 { c'8 c'8 c'8 c'8 } \break
1470     \repeat unfold 4 { c'8 c'8 c'8 c'8 } \break
1471     \repeat unfold 2 { c'8 c'8 c'8 c'8 }
1472     }
1473   \layout {
1474     \context {
1475       \Score
1476       \override NonMusicalPaperColumn #'line-break-permission = ##f
1477       \override NonMusicalPaperColumn #'page-break-permission = ##f
1478     }
1479   }
1480 }
1481 @end lilypond
1482
1483
1484 @seealso
1485 Morceaux choisis :
1486 @rlsrnamed{Spacing,Espacements}.
1487
1488
1489 @node Recours à une voix supplémentaire pour gérer les sauts
1490 @subsection Recours à une voix supplémentaire pour gérer les sauts
1491 @translationof Using an extra voice for breaks
1492
1493 La plupart du temps, les informations concernant les sauts de ligne ou
1494 de page se retrouvent directement au milieu des notes.
1495
1496 @example
1497 \score @{
1498   \new Staff @{
1499     \repeat unfold 2 @{ c'4 c'4 c'4 c'4 @}
1500     \break
1501     \repeat unfold 3 @{ c'4 c'4 c'4 c'4 @}
1502   @}
1503 @}
1504 @end example
1505
1506 Bien que cela constitue un moyen aisé de saisir les commandes
1507 @code{\break} et @code{\pageBreak}, les données musicales se retrouvent
1508 mélangées à des informations qui concernent plutôt l'agencement de la
1509 musique sur le papier.  Vous pouvez tout à fait séparer ce qui est
1510 purement musical et les informations concernant les sauts de ligne ou de
1511 page en créant une voix supplémentaire dédiée.  Cette voix supécifique
1512 ne contiendra que des blancs -- des silences invisibles @code{\skip} --,
1513 des @code{\break}, des @code{\pageBreak} et autres informations
1514 concernant les ruptures.
1515
1516 @lilypond[quote,verbatim]
1517 \score {
1518   \new Staff <<
1519     \new Voice {
1520       s1 * 2 \break
1521       s1 * 3 \break
1522       s1 * 6 \break
1523       s1 * 5 \break
1524     }
1525     \new Voice {
1526       \repeat unfold 2 { c'4 c'4 c'4 c'4 }
1527       \repeat unfold 3 { c'4 c'4 c'4 c'4 }
1528       \repeat unfold 6 { c'4 c'4 c'4 c'4 }
1529       \repeat unfold 5 { c'4 c'4 c'4 c'4 }
1530     }
1531   >>
1532 }
1533 @end lilypond
1534
1535 Cette manière de procéder est tout à fait indiquée lorsque vous ajustez les
1536 @code{line-break-system-details} et autres propriétés fort intéressantes de
1537 @code{NonMusicalPaperColumnGrob}, comme vous pouvrrez le voir au
1538 chapitre @ref{Espacement vertical}.
1539
1540 @lilypond[quote,verbatim]
1541 \score {
1542   \new Staff <<
1543     \new Voice {
1544       \overrideProperty "Score.NonMusicalPaperColumn"
1545         #'line-break-system-details #'((Y-offset . 0))
1546       s1 * 2 \break
1547
1548       \overrideProperty "Score.NonMusicalPaperColumn"
1549         #'line-break-system-details #'((Y-offset . 35))
1550       s1 * 3 \break
1551
1552       \overrideProperty "Score.NonMusicalPaperColumn"
1553         #'line-break-system-details #'((Y-offset . 70))
1554       s1 * 6 \break
1555
1556       \overrideProperty "Score.NonMusicalPaperColumn"
1557         #'line-break-system-details #'((Y-offset . 105))
1558       s1 * 5 \break
1559     }
1560     \new Voice {
1561       \repeat unfold 2 { c'4 c'4 c'4 c'4 }
1562       \repeat unfold 3 { c'4 c'4 c'4 c'4 }
1563       \repeat unfold 6 { c'4 c'4 c'4 c'4 }
1564       \repeat unfold 5 { c'4 c'4 c'4 c'4 }
1565     }
1566   >>
1567 }
1568 @end lilypond
1569
1570
1571 @seealso
1572 Manuel de notation :
1573 @ref{Espacement vertical}.
1574
1575 Morceaux choisis :
1576 @rlsrnamed{Spacing,Espacements}.
1577
1578
1579 @node Espacement vertical
1580 @section Espacement vertical
1581 @translationof Vertical spacing
1582
1583 @cindex vertical, espacement
1584 @cindex espacement vertical
1585
1586 L'espacement vertical dépend de trois éléments@tie{}: la surface
1587 disponible -- par exemple format de papier et marges --, l'espace qui
1588 doit séparer les systèmes, et l'espace qui sépare les portées d'un même
1589 système.
1590
1591 @menu
1592 * Espacement vertical au sein d'un système::
1593 * Espacement vertical entre les systèmes::
1594 * Positionnement explicite des portées et systèmes::
1595 * Résolution des collisions verticales::
1596 @end menu
1597
1598 @node Espacement vertical au sein d'un système
1599 @subsection Espacement vertical au sein d'un système
1600 @translationof Vertical spacing inside a system
1601
1602 @cindex distance entre les portées
1603 @cindex portées, espacement
1604 @cindex espacement entre les portées
1605 @cindex espacement au sein d'un système
1606
1607 La hauteur de chaque système se détermine en deux phases.  Les portées
1608 sont tout d'abord espacées selon la surface disponible.  Puis les lignes
1609 autres que des portées, comme les paroles ou les accords, sont réparties
1610 entre les portées.
1611
1612
1613 @unnumberedsubsubsec Espacement entre les portées
1614 @translationof Spacing between staves
1615
1616 L'espacement entre les portées est géré par la propriété
1617 @code{next-staff-spacing} de l'objet graphique @code{VerticalAxisGroup}.
1618 Cette propriété est constituée d'une liste associative à quatre
1619 clés@tie{}: @code{space}, @code{minimum-distance}, @code{padding}
1620 et @code{stretchability}.
1621
1622 @itemize
1623 @item
1624 @code{space} correspond à l'espace étirable entre les lignes médianes de
1625 deux portées consécutives.
1626
1627 @item
1628 @code{minimum-distance} fixe le minimum à respecter entre les lignes
1629 médianes de deux portées consécutives.  En d'autres termes, lorsque la
1630 présence de nombreux systèmes sur une même page nécessite de comprimer
1631 l'espace, la distance séparant deux portées ne pourra être réduite en
1632 deça de @code{minimum-distance}.
1633
1634 @item
1635 @code{padding} correspond à la grandeur minimale de @qq{blanc} qui
1636 doit séparer le bas d'une portée et le haut de la suivante.  Cette clé
1637 est différente de @code{minimum-distance} en ce sens que @code{padding}
1638 dépend directement de la hauteur des objets contenus dans la portée.
1639 Par exemple, @code{padding} se révèlera tout à fait indiqué pour gérer
1640 des notes en dessous de la portée.
1641
1642 @item
1643 @code{stretchability} détermine le coefficient de dilatation de
1644 @code{space} lorsque le système est étiré.  Au plus sa valeur est
1645 élévée, au plus le système pourra s'étirer, alors qu'une valeur nulle
1646 empèchera toute dilatation.  Si vous ne la définissez pas,
1647 @code{stretchability} prendra sa valeur par défaut, égale à
1648 @code{space}@tie{}@minus{}@tie{}@code{minimum-distance}.
1649 @end itemize
1650
1651 @lilypond[verbatim]
1652 #(set-global-staff-size 16)
1653 \new StaffGroup <<
1654   % Since space is small and there is no minimum-distance, the distance
1655   % between this staff and the next will be determined by padding.
1656   \new Staff \with {
1657     \override VerticalAxisGroup #'next-staff-spacing =
1658       #'((space . 1) (padding . 1))
1659   }
1660   { \clef bass c, }
1661   % Since space is small and nothing sticks out very far, the distance
1662   % between this staff and the next will be determined by minimum-distance.
1663   \new Staff \with {
1664     \override VerticalAxisGroup #'next-staff-spacing =
1665       #'((space . 1) (minimum-distance . 12))
1666   }
1667   { \clef bass c, }
1668   % By setting padding to a negative value, staves can be made to collide.
1669   \new Staff \with {
1670     \override VerticalAxisGroup #'next-staff-spacing =
1671       #'((space . 4) (padding . -10))
1672   }
1673   { \clef bass c, }
1674   \new Staff { \clef bass c, }
1675 >>
1676 @end lilypond
1677
1678 Dans les partitions orchestrales ou de grande ampleur, il arrive
1679 souvent que des portées soient regroupées.  L'espacement est alors plus
1680 important entre deux regroupements qu'entre les portées d'un même
1681 groupe.  Cet espacement s'ajuste au travers de l'objet graphique
1682 @code{StaffGrouper}@tie{}: la valeur par défaut de
1683 @code{next-staff-spacing} pour l'objet @code{VerticalAxisGroup} est
1684 définie par une fonction de rappel qui va rechercher l'objet graphique
1685 @code{StaffGrouper} qui contient la portée en question.  S'il existe
1686 effectivement un objet @code{StaffGrouper} et que la portée est au
1687 milieu du groupe, la fonction renverra la valeur de la propriété
1688 @code{between-staff-spacing} du @code{StaffGrouper}.  Si la portée en
1689 question est la dernière du regroupement, la fonction renverra la valeur
1690 @code{after-last-staff-spacing} du @code{StaffGrouper}.  Dans le cas où
1691 il n'existe pas d'objet @code{StaffGrouper}, la fonction renvoie la
1692 valeur du @code{default-next-staff-spacing} de son
1693 @code{VerticalAxisGroup}.
1694
1695 @lilypond[verbatim]
1696 #(set-global-staff-size 16)
1697 <<
1698   \new PianoStaff \with {
1699     \override StaffGrouper #'between-staff-spacing #'space = #1
1700     \override StaffGrouper #'between-staff-spacing #'padding = #0
1701     \override StaffGrouper #'after-last-staff-spacing #'space = #20
1702   }
1703   <<
1704     \new Staff c'1
1705     \new Staff c'1
1706   >>
1707
1708   \new StaffGroup \with {
1709     \override StaffGrouper #'between-staff-spacing #'space = #1
1710     \override StaffGrouper #'between-staff-spacing #'padding = #0
1711   }
1712   <<
1713     \new Staff c'1
1714     \new Staff c'1
1715   >>
1716 >>
1717 @end lilypond
1718
1719
1720 @unnumberedsubsubsec Espacement des lignes rattachées à des portées
1721 @translationof Spacing of non-staff lines
1722
1723 Après que LilyPond a déterminé où positionner les portées, il
1724 s'intéresse à la répartition des autres lignes entre les portées.
1725 Chacune de ces lignes possède une propriété @code{staff-affinity}
1726 chargée de contrôler son alignement vertical.  Par exemple,
1727
1728 @example
1729 \new Lyrics \with @{ \override VerticalAxisGroup #'staff-affinity = #DOWN @}
1730 @end example
1731
1732 @noindent
1733 va créer un contexte de paroles qui sera positionné juste au-dessus de
1734 la portée qui suit.  Prenez garde à la valeur que vous affectez à
1735 @code{staff-affinity}@tie{}: si vous lui affectez une valeur non
1736 numérique (p.ex. @code{#f}), cette ligne sera considérée comme étant une
1737 portée@tie{}; à l'inverse, utiliser la propriété @code{staff-affinity}
1738 pour une portée lui fera perdre cette qualité.
1739
1740 L'espacement des lignes de @qq{non-portée} est géré par trois
1741 propriétés, chacune d'elles étant constituée d'une liste associative
1742 équivalente à celle de @code{next-staff-spacing} que nous avons déjà vue.
1743
1744 @itemize
1745 @item
1746 Si la ligne la plus proche -- dans la direction spécifiée par
1747 @code{staff-affinity} -- est une portée, l'espacement entre cette
1748 non-portée et la portée suivante s'ajustera sur la valeur de
1749 @code{inter-staff-spacing}.  Lorsque la @code{staff-affinity} est égale
1750 à @code{CENTER}, @code{inter-staff-spacing} servira des deux côtés.
1751
1752 @item
1753 Si la ligne la plus proche -- dans la direction spécifiée par
1754 @code{staff-affinity} -- est une non-portée, l'espacement entre ces deux
1755 lignes sera égal à @code{inter-loose-line-spacing}.
1756
1757 @item
1758 Si la ligne la plus proche -- dans la direction opposée à celle
1759 spécifiée par @code{staff-affinity} -- est une portée, l'espacement
1760 entre cette non-portée et la portée s'ajustera sur la valeur de
1761 @code{non-affinity-spacing}.  Ceci permet notamment de déterminer un
1762 espacement mimimal entre une ligne de paroles et la portée à laquelle
1763 elle n'est pas rattachée.
1764 @end itemize
1765
1766 @lilypond[verbatim]
1767 #(set-global-staff-size 16)
1768 \layout {
1769   \context {
1770     \Lyrics
1771     % By default, Lyrics are placed close together.  Here, we allow them to
1772     % be stretched more widely.
1773     \override VerticalAxisGroup
1774       #'inter-loose-line-spacing #'stretchability = #1000
1775   }
1776 }
1777
1778 \new StaffGroup
1779 <<
1780   \new Staff \with {
1781     \override VerticalAxisGroup #'next-staff-spacing = #'((space . 30)) }
1782     { c'1 }
1783   \new Lyrics \with {
1784     \override VerticalAxisGroup #'staff-affinity = #UP }
1785     \lyricmode { up }
1786   \new Lyrics \with {
1787     \override VerticalAxisGroup #'staff-affinity = #CENTER }
1788     \lyricmode { center }
1789   \new Lyrics \with {
1790     \override VerticalAxisGroup #'staff-affinity = #DOWN }
1791     \lyricmode { down }
1792   \new Staff
1793     { c'1 }
1794 >>
1795 @end lilypond
1796
1797 @seealso
1798 Morceaux choisis :
1799 @rlsrnamed{Spacing,Espacements}.
1800
1801 @c @lsr{spacing,page-spacing.ly},
1802 @c @lsr{spacing,alignment-vertical-spacing.ly}.
1803
1804 Référence des propriétés internes :
1805 @rinternals{VerticalAxisGroup},
1806 @rinternals{VerticalAlignment},
1807 @rinternals{Axis_group_engraver}.
1808
1809 @knownissues
1810 Des lignes de non-portée adjacentes devraient avoir une
1811 @code{staff-affinity} allant de haut en bas.  Ainsi, le traitement de
1812 @example
1813 <<
1814   \new Staff c
1815   \new Lyrics \with @{ \override VerticalAxisGroup #'staff-affinity = #DOWN @}
1816   \new Lyrics \with @{ \override VerticalAxisGroup #'staff-affinity = #UP @}
1817   \new Staff c
1818 >>
1819 @end example
1820 aboutit à quelque chose d'indéfinissable.
1821
1822 Une ligne de non-portée en dessous d'un système devrait avoir sa
1823 @code{staff-affinity} définie à @code{UP}.  De la même manière, lorsque
1824 cette ligne surplombe un système, sa @code{staff-affinity} devrait être
1825 définie à @code{DOWN}.
1826
1827
1828 @node Espacement vertical entre les systèmes
1829 @subsection Espacement vertical entre les systèmes
1830 @translationof Vertical spacing between systems
1831
1832 Les mécanismes permettant de gérer l'espacement entre les systèmes sont
1833 les mêmes que ceux qui contrôlent l'espacement des portées regroupées
1834 dans un système -- voir @ref{Espacement vertical au sein d'un système}
1835 --, à ceci près que les variables en question apparaissent dans le bloc
1836 @code{\paper} et non en tant que propriétés d'objet graphique.  Il
1837 s'agit de @code{system-system-spacing}, @code{score-system-spacing},
1838 @code{markup-system-spacing}, @code{score-markup-spacing},
1839 @code{markup-markup-spacing}, @code{top-system-spacing},
1840 @code{top-markup-spacing} et @code{last-bottom-spacing}.  Notez bien que
1841 ces variables ne tiennent pas compte des lignes de non-portée.  Par
1842 exemple, la propriété @code{system-system-spacing} contrôle l'espacement
1843 entre la ligne médiane de la dernière portée d'un système et la ligne
1844 médiane de la première portée du système suivant, que des paroles soient
1845 ou non rattachées sous le premier.  Pour une description exhaustive de
1846 ces variables, relisez la rubrique
1847 @ref{Dimensionnement vertical fluctuant}.
1848
1849 Le bloc @code{\paper} dispose de deux variables supplémentaires en
1850 matière d'espacement vertical.  Lorsque le commutateur
1851 @code{ragged-bottom} est activé (valeur égale à @code{##t}), aucune
1852 justification ne sera pratiquée sur les pages@tie{}; autrement dit,
1853 aucun espace, que ce soit au sein ou entre les systèmes, ne sera étiré.
1854 La variable @code{ragged-last-bottom} opère de la même manière, en se
1855 limitant toutefois à la dernière page.
1856
1857 @seealso
1858 Morceaux choisis :
1859 @rlsrnamed{Spacing,Espacements}.
1860
1861
1862 @node Positionnement explicite des portées et systèmes
1863 @subsection Positionnement explicite des portées et systèmes
1864 @translationof Explicit staff and system positioning
1865
1866 Pour bien comprendre comment fonctionnent les réglages de
1867 @code{VerticalAxisGroup} et de @code{\paper} abordés dans les deux
1868 rubriques précédents, rien ne vaut une collection d'exemples illustrant
1869 les différentes mises au point du décalage vertical appliqué aux portées
1870 et systèmes distribués sur une page.
1871
1872 Une autre approche de l'espacement vertical est le recours à
1873 @code{NonMusicalPaperColumn #'line-break-system-details}.  Alors que
1874 @code{VerticalAxisGroup} et @code{\paper} gèrent un décalage vertical,
1875 @code{NonMusicalPaperColumn #'line-break-system-details} spécifiera le
1876 positionnement vertical absolu sur la page.
1877
1878 @code{NonMusicalPaperColumn #'line-break-system-details} prend en charge
1879 une liste associative de trois mises au point@tie{}:
1880
1881 @itemize
1882 @item @code{X-offset}
1883 @item @code{Y-offset}
1884 @item @code{alignment-distances}
1885 @end itemize
1886
1887 Les dérogations en matière d'objet graphique, y compris celles
1888 concernant les @code{NonMusicalPaperColumn} ci-dessus, peuvent se placer
1889 à trois différents endroits de votre fichier source@tie{}:
1890
1891 @itemize
1892 @item directement au beau milieu des notes
1893 @item au sein d'un bloc @code{\context}
1894 @item dans un bloc @code{\with}
1895 @end itemize
1896
1897 Le réglage de @code{NonMusicalPaperColumn} s'effectue à l'aide d'une
1898 simple commande @code{\override} au sein d'un bloc @code{\context} ou
1899 @code{\with}.  Dans le cas ou il est stipulé au fil des notes, c'est la
1900 commande spécifique @code{\overrideProperty} qui doit intervenir.  Voici
1901 quelques exemples de réglages de @code{NonMusicalPaperColumn} à l'aide
1902 de la commande @code{\overrideProperty}@tie{}:
1903
1904 @example
1905 \overrideProperty NonMusicalPaperColumn
1906   #'line-break-system-details #'((X-offset . 20))
1907
1908 \overrideProperty NonMusicalPaperColumn
1909   #'line-break-system-details #'((Y-offset . 40))
1910
1911 \overrideProperty NonMusicalPaperColumn
1912   #'line-break-system-details #'((X-offset . 20) (Y-offset . 40))
1913
1914 \overrideProperty NonMusicalPaperColumn
1915   #'line-break-system-details #'((alignment-distances . (15)))
1916
1917 \overrideProperty NonMusicalPaperColumn
1918   #'line-break-system-details #'((X-offset . 20) (Y-offset . 40)
1919                                  (alignment-distances . (15)))
1920 @end example
1921
1922 Nous allons maintenant voir ces différents réglages en action.
1923 Commençons par examiner un exemple dépourvu de toute mise au point.
1924
1925 @c \book { } is required in these examples to ensure the spacing
1926 @c overrides can be seen between systems. -np
1927
1928 @lilypond[quote]
1929 \header { tagline = ##f }
1930 \paper { left-margin = 0\mm }
1931 \book {
1932   \score {
1933     <<
1934       \new Staff <<
1935         \new Voice {
1936           s1*5 \break
1937           s1*5 \break
1938           s1*5 \break
1939         }
1940         \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
1941       >>
1942       \new Staff {
1943         \repeat unfold 15 { d'4 d' d' d' }
1944       }
1945     >>
1946   }
1947 }
1948 @end lilypond
1949
1950 Cette partition isole les informations de saut de ligne ou de page dans
1951 une voix spécifique.  La mise en forme est ainsi séparée des événements
1952 musicaux@tie{}; ceci nous permettra d'y voir plus clair au fur et à
1953 mesure que nous avancerons.  Pour plus de précisions, relisez
1954 @ref{Recours à une voix supplémentaire pour gérer les sauts}.
1955
1956 Les @code{\breaks} explicites répartissent la musique en lignes de cinq
1957 mesures chacune.  L'espacement vertical est celui que LilyPond attribue
1958 par défaut.  Nous pouvons, afin de fixer explicitement le point
1959 d'attache vertical de chacun des systèmes, définir un doublet
1960 @code{Y-offset} en tant qu'attribut du @code{line-break-system-details}
1961 de l'objet @code{NonMusicalPaperColumn}@tie{}:
1962
1963 @lilypond[quote]
1964 \header { tagline = ##f }
1965 \paper { left-margin = 0\mm }
1966 \book {
1967   \score {
1968     <<
1969       \new Staff <<
1970         \new Voice {
1971           \overrideProperty #"Score.NonMusicalPaperColumn"
1972             #'line-break-system-details #'((Y-offset . 0))
1973           s1*5 \break
1974           \overrideProperty #"Score.NonMusicalPaperColumn"
1975             #'line-break-system-details #'((Y-offset . 40))
1976           s1*5 \break
1977           \overrideProperty #"Score.NonMusicalPaperColumn"
1978             #'line-break-system-details #'((Y-offset . 80))
1979           s1*5 \break
1980         }
1981         \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
1982       >>
1983       \new Staff {
1984         \repeat unfold 15 { d'4 d' d' d' }
1985       }
1986     >>
1987   }
1988 }
1989 @end lilypond
1990
1991 Vous aurez remarqué que nous n'avons déterminé qu'une seule valeur, même
1992 si la liste associative de @code{line-break-system-details} peut en
1993 comporter un certain nombre.  Vous aurez aussi noté que la propriété
1994 @code{Y-offset} détermine ici le point de départ de chacun des systèmes
1995 de la page.
1996
1997 Maintenant que chaque système est explicitement positionné, nous pouvons
1998 jouer sur la distance séparant les portées de chacun des systèmes, grâce
1999 à la sous-propriété @code{alignment-distances} de
2000 @code{line-break-system-details}.
2001
2002 @lilypond[quote]
2003 \header { tagline = ##f }
2004 \paper { left-margin = 0\mm }
2005 \book {
2006   \score {
2007     <<
2008       \new Staff <<
2009         \new Voice {
2010           \overrideProperty #"Score.NonMusicalPaperColumn"
2011             #'line-break-system-details #'((Y-offset . 20)
2012                                            (alignment-distances . (15)))
2013           s1*5 \break
2014           \overrideProperty #"Score.NonMusicalPaperColumn"
2015             #'line-break-system-details #'((Y-offset . 60)
2016                                            (alignment-distances . (15)))
2017           s1*5 \break
2018           \overrideProperty #"Score.NonMusicalPaperColumn"
2019             #'line-break-system-details #'((Y-offset . 100)
2020                                            (alignment-distances . (15)))
2021           s1*5 \break
2022         }
2023         \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
2024       >>
2025       \new Staff {
2026         \repeat unfold 15 { d'4 d' d' d' }
2027       }
2028     >>
2029   }
2030 }
2031 @end lilypond
2032
2033 Nous avons maintenant assigné deux valeurs différentes à l'attribut
2034 @code{line-break-system-details} de l'objet
2035 @code{NonMusicalPaperColumn}.  @code{line-break-system-details} pourrait
2036 prende bien d'autres paramètres d'espacement, y compris un doublet
2037 @code{X-offset}, Mais nous n'avons utilisé que @code{Y-offset} et
2038 @code{alignment-distances} pour contrôler le positionnement de chaque
2039 système et de chaque portée.  Vous noterez que
2040 @code{alignment-distances} traite le positionnement des portées, non
2041 d'un groupe de portées.
2042
2043 @lilypond[quote]
2044 \header { tagline = ##f }
2045 \paper { left-margin = 0\mm }
2046 \book {
2047   \score {
2048     <<
2049       \new Staff <<
2050         \new Voice {
2051           \overrideProperty #"Score.NonMusicalPaperColumn"
2052             #'line-break-system-details #'((Y-offset . 0)
2053                                            (alignment-distances . (30 10)))
2054           s1*5 \break
2055           \overrideProperty #"Score.NonMusicalPaperColumn"
2056             #'line-break-system-details #'((Y-offset . 60)
2057                                            (alignment-distances . (10 10)))
2058           s1*5 \break
2059           \overrideProperty #"Score.NonMusicalPaperColumn"
2060             #'line-break-system-details #'((Y-offset . 100)
2061                                            (alignment-distances . (10 30)))
2062           s1*5 \break
2063         }
2064         \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
2065       >>
2066       \new StaffGroup <<
2067         \new Staff { \repeat unfold 15 { d'4 d' d' d' } }
2068         \new Staff { \repeat unfold 15 { e'4 e' e' e' } }
2069       >>
2070     >>
2071   }
2072 }
2073 @end lilypond
2074
2075 Quleques points à prendre en considération@tie{}:
2076
2077 @itemize
2078 @item Lorsque vous utilisez @code{alignment-distances}, les paroles ou
2079 lignes de non-portée ne comptent pas pour une portée.
2080
2081 @item Les nombres fournis à @code{X-offset}, @code{Y-offset} et
2082 @code{alignment-distances} sont considérés comme des multiples de la
2083 distance entre des portées adjacentes.  Des valeurs positives remontent
2084 les portées et paroles, des valeurs négatives les descendent.
2085
2086 @item Dans la mesure où @code{NonMusicalPaperColumn
2087 #'line-break-system-details} permet de positionner systèmes et portées
2088 n'importe où sur une page, vous pourriez être en contradiction avec les
2089 dimensionnements de la feuille ou bien aboutir à des surimpressions.
2090 Soyez donc raisonnables quant aux différentes valeurs que vous affectez
2091 à ces réglages.
2092 @end itemize
2093
2094
2095 @seealso
2096 Morceaux choisis :
2097 @rlsrnamed{Spacing,Espacements}.
2098
2099
2100 @node Résolution des collisions verticales
2101 @subsection Résolution des collisions verticales
2102 @translationof Vertical collision avoidance
2103
2104 @funindex outside-staff-priority
2105 @funindex outside-staff-padding
2106 @funindex outside-staff-horizontal-padding
2107
2108 Vous savez de manière intuitive qu'un certain nombre d'objets en
2109 matière de notation musicale appartiennent à la portée, et que
2110 d'autres se placent en dehors de la portée.  Entre autres objets
2111 externes, nous avons les marques repères, les textes et les
2112 nuances@tie{}; nous les appellerons @qq{objets extérieurs à la portée}.
2113 La règle qu'applique LilyPond pour positionner verticalement ces
2114 objets extérieurs consiste à les placer au plus près de la portée
2115 tout en prenant garde d'éviter qu'il y ait chevauchement.
2116
2117 LilyPond utilise la propriété @code{outside-staff-priority} afin de
2118 déterminer si un objet est ou non un objet extérieur à la portée@tie{}:
2119 lorsque la valeur de @code{outside-staff-priority} est numérique, il
2120 s'agit d'un objet extérieur à la portée.  De plus, la propriété
2121 @code{outside-staff-priority} indique à LilyPond l'ordre dans lequel ces
2122 objets doivent être disposés.
2123
2124 Tout d'abord, LilyPond dispose tous les objets qui ne sont pas externes.
2125 Les objets extérieurs à la portée sont alors triés selon l'ordre
2126 croissant de leur @code{outside-staff-priority}.  Enfin, LilyPond prend
2127 chacun des ces objets et les positionne de telle sorte qu'il n'entrent
2128 pas en collision avec ceux qui on déjà été placés.  Autremnt dit,
2129 lorsque deux objets devraient se placer au même endroit, celui dont la
2130 @code{outside-staff-priority} est la plus faible sera disposé au plus
2131 près de la portée.
2132
2133 @lilypond[quote,ragged-right,relative=2,fragment,verbatim]
2134 c4_"Text"\pp
2135 r2.
2136 \once \override TextScript #'outside-staff-priority = #1
2137 c4_"Text"\pp % this time the text will be closer to the staff
2138 r2.
2139 % by setting outside-staff-priority to a non-number,
2140 % we disable the automatic collision avoidance
2141 \once \override TextScript #'outside-staff-priority = ##f
2142 \once \override DynamicLineSpanner #'outside-staff-priority = ##f
2143 c4_"Text"\pp % now they will collide
2144 @end lilypond
2145
2146 Le décalage vertical entre un objet extérieur à la portée et celui qui
2147 le précède se contrôle par la propriété @code{outside-staff-padding}.
2148
2149 @c KEEP LY
2150 @lilypond[quote,ragged-right,relative=2,fragment,verbatim]
2151 \once \override TextScript #'outside-staff-padding = #0
2152 a'^"Ce texte est placé au plus près de la note"
2153 \once \override TextScript #'outside-staff-padding = #3
2154 c^"Ce texte est décalé par rapport au texte précédent"
2155 c^"Ce texte est accolé au texte précédent"
2156 @end lilypond
2157
2158 Par défaut, les objets extérieurs à la portée sont positionnés en
2159 évitant les collisions horizontales avec des objets précédemment
2160 positionnés.  Ceci peut cependant générer des situations où des objets
2161 se trouvent horizontalement trop proches.  L'espacement vertical entre
2162 les portées peut dans une certaine mesure permettre de mieux intercaler
2163 les objets extérieurs à la portée.  La propriété
2164 @code{outside-staff-horizontal-padding} repoussera verticalement un
2165 objet pour éviter ce genre de situation.
2166
2167 @lilypond[quote,ragged-right,relative=2,fragment,verbatim]
2168 % the markup is too close to the following note
2169 c4^"Text"
2170 c4
2171 c''2
2172 % setting outside-staff-horizontal-padding fixes this
2173 R1
2174 \once \override TextScript #'outside-staff-horizontal-padding = #1
2175 c,,4^"Text"
2176 c4
2177 c''2
2178 @end lilypond
2179
2180
2181 @seealso
2182 Morceaux choisis :
2183 @rlsrnamed{Spacing,Espacements}.
2184
2185
2186 @node Espacement horizontal
2187 @section Espacement horizontal
2188 @translationof Horizontal spacing
2189
2190 @cindex horizontal, espacement
2191 @cindex espacement horizontal
2192
2193 @menu
2194 * Généralités sur l'espacement horizontal::
2195 * Changement d'espacement au cours de la partition::
2196 * Modification de l'espacement horizontal::
2197 * Longueur de ligne::
2198 * Notation proportionnelle::
2199 @end menu
2200
2201 @node Généralités sur l'espacement horizontal
2202 @subsection Généralités sur l'espacement horizontal
2203 @translationof Horizontal spacing overview
2204
2205 @untranslated
2206
2207
2208 @node Changement d'espacement au cours de la partition
2209 @subsection Changement d'espacement au cours de la partition
2210 @translationof New spacing area
2211
2212 @untranslated
2213
2214
2215 @node Modification de l'espacement horizontal
2216 @subsection Modification de l'espacement horizontal
2217 @translationof Changing horizontal spacing
2218
2219 @untranslated
2220
2221
2222 @node Longueur de ligne
2223 @subsection Longueur de ligne
2224 @translationof Line length
2225
2226 @untranslated
2227
2228
2229 @node Notation proportionnelle
2230 @subsection Notation proportionnelle
2231 @translationof Proportional notation
2232
2233 @untranslated
2234
2235
2236 @node Réduction du nombre de pages de la partition
2237 @section Réduction du nombre de pages de la partition
2238 @translationof Fitting music onto fewer pages
2239
2240 @untranslated
2241
2242
2243 @menu
2244 * Mise en évidence de l'espacement::
2245 * Modification de l'espacement::
2246 @end menu
2247
2248 @node Mise en évidence de l'espacement
2249 @subsection Mise en évidence de l'espacement
2250 @translationof Displaying spacing
2251
2252 @untranslated
2253
2254
2255 @node Modification de l'espacement
2256 @subsection Modification de l'espacement
2257 @translationof Changing spacing
2258
2259 @untranslated
2260
2261