]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/fr/notation/changing-defaults.itely
Merge branch 'lilypond/translation' of ssh://git.sv.gnu.org/srv/git/lilypond into...
[lilypond.git] / Documentation / fr / notation / changing-defaults.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
2
3 @ignore
4     Translation of GIT committish: 76de7e168dbc9ffc7671d99663c5ce50dae42abb
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  See TRANSLATION for details.
8 @end ignore
9
10 @c \version "2.12.0"
11
12 @c Translators: Valentin Villenave
13 @c Translation checkers: Gilles Thibault
14
15
16 @node Modification des réglages prédéfinis
17 @chapter Modification des réglages prédéfinis
18 @translationof Changing defaults
19
20 LilyPond est conçu pour engendrer, par défaut, des partitions de la
21 plus haute qualité.  Cependant, on peut parfois avoir à modifier cette
22 mise en page par défaut.  Celle-ci est réglée par tout un ensemble de
23 @qq{leviers et manettes}, dont ce chapitre ne cherche pas à faire
24 l'inventaire exhaustif.  Le propos est plutôt ici de mettre en évidence
25 les différents groupes auxquels s'apparentent ces contrôles, et d'expliquer
26 comment trouver le bon levier pour obtenir tel ou tel effet en particulier.
27
28 @cindex Référence du programme
29
30 Les moyens de contrôle des différents réglages sont décrits dans un document
31 séparé, la
32 @iftex
33 référence du programme
34 @end iftex
35 @ifnottex
36 @ref{Top,Référence du programme,,lilypond-internals}.
37 @end ifnottex
38 Ce guide répertorie toutes les variables, fonctions et autres options que
39 LilyPond met à votre disposition.  Il est consultable
40 @c leave the @uref as one long line.
41 @uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/user/@/lilypond@/-internals/,en@tie{}ligne},
42 au format HTML, mais est également inclus dans la documentation
43 fournie avec le logiciel.
44
45 Il est quatre domaines dans lesquels on peut modifier les réglages par défaut :
46
47 @itemize @bullet
48 @item
49 La notation automatique, ce qui revient à modifier la manière dont les éléments
50 de notation sont automatiquement créés -- par exemple, les règles de ligatures.
51
52 @item
53 L'apparence, qui se rapporte aux objets pris individuellement -- ainsi de la direction
54 des hampes, du placement des indications textuelles.
55
56 @item
57 Les contextes, qui recouvrent la manière dont les évènements musicaux sont représentés sous forme de
58 notation -- par exemple, le fait d'attribuer un chiffre de mesure distinct à chaque portée.
59
60 @item
61 La mise en page, autrement dit les marges, l'espacement, la taille du papier ; tous ces facteurs
62 font l'objet des chapitres @ref{Généralités en matière d'entrée et sortie} et @ref{Gestion de l'espace}.
63 @end itemize
64
65 En sous-main, LilyPond se sert du langage Scheme (un dérivé du LISP) comme
66 infrastructure.  Modifier les choix de mise en page revient à pénétrer dans
67 les entrailles du programme, et de ce fait requiert l'emploi du Scheme.
68 Les fragments de Scheme, dans un fichier @code{.ly}, sont introduits par le
69 caractère @q{hash}, (@code{#}, improprement surnommé @q{dièse}).@footnote{Le
70 @rlearning{Tutoriel Scheme} fournit quelques notions de base pour saisir des nombres,
71 des listes, des chaînes de caractères ou des symboles, en Scheme.}
72
73
74 @menu
75 * Contextes d'interprétation::
76 * En quoi consiste la référence du programme::
77 * Modification de propriétés::
78 * Propriétés et contextes utiles::
79 * Retouches avancées::
80 @end menu
81
82 @node Contextes d'interprétation
83 @section Contextes d'interprétation
84 @translationof Interpretation contexts
85
86 Cette section traite des contextes.
87
88 @menu
89 * Tout savoir sur les contextes::
90 * Création d'un contexte::
91 * Modification des greffons de contexte::
92 * Retouches de mise en forme au sein des contextes::
93 * Modification des réglages par défaut d'un contexte::
94 * Définition de nouveaux contextes::
95 * Alignement des contextes::
96 @end menu
97
98 @node Tout savoir sur les contextes
99 @subsection Tout savoir sur les contextes
100 @translationof Contexts explained
101
102 @ignore
103 @c TODO Rethink and rewrite
104
105 >> > > - list of contexts: my *danger unmaintainable*
106 >> > > alarm just went off.  I'm
107
108 I knew it would... And leaving out some of them is perfectly fine
109 with me.
110 I do think that a list like this, with the main contexts and a
111 brief
112 description of  what they do (perhaps also with a note about what
113 default
114 behavior is associated with each of them, but this may be
115 unmanageable),
116 should be there, and then we could simply list the remaining ones
117 without
118 further explanation and with links to the IR.
119 @end ignore
120
121 @c TODO Improve layout, order and consistency of wording -td
122
123 @c TODO Add introduction which explains contexts in generality  -td
124
125 @c TODO Describe propagation of property values -td
126
127
128 @menu
129 * Score - le père de tous les contextes::
130 * Contextes de haut niveau - les systèmes::
131 * Contextes de niveau intermédiaire - les portées::
132 * Contextes de bas niveau - les voix::
133 @end menu
134
135 @node Score - le père de tous les contextes
136 @unnumberedsubsubsec Score - le père de tous les contextes
137 @translationof Score - the master of all contexts @c external
138
139 @untranslated
140
141
142 @node Contextes de haut niveau - les systèmes
143 @unnumberedsubsubsec Contextes de haut niveau - les systèmes
144 @translationof Top-level contexts - staff containers @c external
145
146 @untranslated
147
148
149 @node Contextes de niveau intermédiaire - les portées
150 @unnumberedsubsubsec Contextes de niveau intermédiaire - les portées
151 @translationof Intermediate-level contexts - staves @c external
152
153 @untranslated
154
155
156 @node Contextes de bas niveau - les voix
157 @unnumberedsubsubsec Contextes de bas niveau - les voix
158 @translationof Bottom-level contexts - voices @c external
159
160 @untranslated
161
162
163 @node Création d'un contexte
164 @subsection Création d'un contexte
165 @translationof Creating contexts @c external
166
167 @untranslated
168
169
170 @node Modification des greffons de contexte
171 @subsection Modification des greffons de contexte
172 @translationof Modifying context plug-ins
173
174 Les contextes, tels que @code{Score} ou @code{Staff}, ne contiennent
175 pas que des propriétés ; ils mettent également en œuvre certains
176 sous-programmes (@q{plug-ins}, pour employer le terme consacré) nommés
177 @q{graveurs} (@q{engravers}, pour reprendre le terme anglais).
178 Ces sous-programmes sont chargés de créer les différents éléments de notation :
179 On trouve ainsi dans le contexte @code{Voice}, un graveur @code{Note_head_engraver},
180 chargé des têtes de notes, et dans le contexte @code{Staff}, un graveur
181 @code{Key_signature_engraver}, chargé de l'armure.
182
183 Vous trouverez une description exhaustive de chaque graveur dans
184 @ifhtml
185 @rinternals{Engravers and Performers}.
186 @end ifhtml
187 @ifnothtml
188 Program reference @expansion{} Translation @expansion{} Engravers.
189 @end ifnothtml
190 Chaque contexte mentionné dans
191 @ifhtml
192 @rinternals{Contexts}
193 @end ifhtml
194 @ifnothtml
195 Program reference @expansion{} Translation @expansion{} Context.
196 @end ifnothtml
197 répertorie les graveurs mis en œuvre.
198
199
200 On peut faire, au moyen de ces graveurs, sa propre @qq{cuisine}, en
201 modifiant les contextes à volonté.
202
203
204 Lorsque un contexte est créé, par la commande @code{\new} ou @code{\context}, on peut
205 y adjoindre un bloc @code{\with} (en anglais @q{avec}), dans lequel il est possible
206 d'ajouter (commande @code{\consists}) ou d'enlever (commande @code{\remove})
207 des graveurs :
208
209 @funindex \with
210
211 @example
212 \new @var{contexte} \with @{
213   \consists @dots{}
214   \consists @dots{}
215   \remove @dots{}
216   \remove @dots{}
217   @emph{etc.}
218 @}
219 @{
220   @emph{..musique..}
221 @}
222 @end example
223
224 @noindent
225 Ici les points de suspension @dots{} devront être remplacés par les noms
226 des graveurs désirés.  Dans l'exemple suivant, on enlève du contexte
227 @code{Staff}, le chiffre de mesure (graveur @code{Time_signature_engraver})
228 et la clé (graveur @code{Clef_engraver}).
229
230 @lilypond[quote,relative=1,verbatim,fragment]
231 <<
232   \new Staff {
233     f2 g
234   }
235   \new Staff \with {
236      \remove "Time_signature_engraver"
237      \remove "Clef_engraver"
238   } {
239     f2 g2
240   }
241 >>
242 @end lilypond
243
244 La clé et le chiffre de mesure ont disparu de la deuxième portée.  C'est une méthode
245 quelque peu radicale, puisqu'elle affectera toute la portée jusqu'à la fin de la
246 partition.  L'espacement s'en trouve également affecté, ce qui peut être ou non
247 l'effet recherché.  Une méthode plus sophistiquée aurait été de rendre ces objets
248 transparents (voir @rlearning{Visibilité et couleur des objets}).
249
250 Dans l'exemple suivant, voici une mise en pratique plus utile.  En temps
251 normal, les barres de mesure et la métrique sont synchronisées verticalement
252 dans toute la partition.  Les graveurs qui en sont responsables se nomment
253 @code{Timing_translator} et @code{Default_bar_line_engraver}.
254 En les enlevant du contexte @code{Score} pour les attribuer au contexte
255 @code{Staff}, chaque portée peut désormais avoir sa propre métrique.
256
257 @cindex polymétrique, partition
258 @cindex Chiffres de mesure multiples
259
260 @lilypond[quote,relative=1,ragged-right,verbatim,fragment]
261 \new Score \with {
262   \remove "Timing_translator"
263   \remove "Default_bar_line_engraver"
264 } <<
265   \new Staff \with {
266     \consists "Timing_translator"
267     \consists "Default_bar_line_engraver"
268   } {
269       \time 3/4
270       c4 c c c c c
271   }
272   \new Staff \with {
273     \consists "Timing_translator"
274     \consists "Default_bar_line_engraver"
275   } {
276        \time 2/4
277        c4 c c c c c
278   }
279 >>
280 @end lilypond
281
282
283 @c deprecated node: delete. --fv
284 @node Retouches de mise en forme au sein des contextes
285 @subsection Retouches de mise en forme au sein des contextes
286 @translationof Layout tunings within contexts
287
288 Chaque contexte est chargé de créer plusieurs types d'objets graphiques.
289 Il contient également les réglages nécessaires pour chacun de ces objets.
290 Si l'on modifie ces réglages, les objets n'auront plus la même apparence.
291
292 La syntaxe employée pour ce faire est
293
294 @example
295 \override @var{contexte}.@var{objet} #'@var{propriété} = #@var{valeur}
296 @end example
297
298 Ici @var{objet} est un objet graphique, tel que @code{Stem} (les hampes)
299 ou @code{NoteHead} (les têtes de note) ; @var{propriété} est une variable
300 (désignée par un symbole, ce qui explique l'apostrophe) employée par le système
301 de mise en page.  La sous-section @ref{Élaboration d'une retouche} vous
302 aidera à savoir quoi mettre à la place de @var{objet}, @var{propriété} et
303 @var{valeur} ; notre propos n'est ici que d'examiner l'emploi de cette commande.
304
305 La commande suivante :
306
307 @verbatim
308 \override Staff.Stem #'thickness = #4.0
309 @end verbatim
310
311 @noindent
312 rend les hampes plus épaisses (la valeur par défaut est 1.3, ce qui signifie qu'elles
313 sont 1,3 fois plus épaisses que les lignes de la portée).  Dans la mesure où nous avons
314 indiqué @code{Staff} comme contexte, ce réglage ne s'appliquera qu'à la portée courante ;
315 les autres portées demeureront intactes.
316
317
318 @lilypond[quote,verbatim,relative=2,fragment]
319 c4
320 \override Staff.Stem #'thickness = #4.0
321 c4
322 c4
323 c4
324 @end lilypond
325
326 La commande @code{\override} modifie donc la définition de l'objet @code{Stem}
327 dans le contexte @code{Staff} ; toutes les hampes qui suivent seront affectées.
328
329 Tout comme avec la commande @code{\set}, l'argument @var{contexte} peut être omis, auquel
330 cas le contexte par défaut (ici, @code{Voice}) sera employé.  La commande @code{\once}
331 permet de n'appliquer la modification qu'une seule fois.
332
333 @lilypond[quote,fragment,verbatim,relative=2]
334 c4
335 \once \override Stem #'thickness = #4.0
336 c4
337 c4
338 @end lilypond
339
340 La commande @code{\override} doit être entrée @emph{avant} l'objet concerné.
341 Ainsi, lorsque l'on veut altérer un objet qui se prolonge, tel qu'une liaison,
342 une ligature ou tout autre objet dit @emph{Spanner}, la commande @code{\override}
343 doit être saisie avant que l'objet soit créé.
344
345 @lilypond[quote,fragment,verbatim,relative=2]
346 \override Slur #'thickness = #3.0
347 c8[( c
348 \override Beam #'thickness = #0.6
349 c8 c])
350 @end lilypond
351
352 @noindent
353 Dans cet exemple, la liaison (@emph{Slur}) est épaissie, mais non la ligature
354 (@emph{Beam}).  En effet, le code qui lui est relatif n'a pas été inséré avant le début de
355 la ligature, et demeure donc sans effet.
356
357 De même que la commande @code{\unset}, la commande @code{\revert} défait
358 ce qui a été fait par une commande @code{\override}.  Tout comme avec @code{\unset},
359 elle ne peut annuler que les réglages effectués dans le même contexte.
360 Ainsi dans l'exemple suivant, la commande @code{\revert} est sans effet.
361
362 @example
363 \override Voice.Stem #'thickness = #4.0
364 \revert Staff.Stem #'thickness
365 @end example
366
367 Il existe, à l'intérieur même de certaines propriétés, des options que l'on
368 nomme @q{sous-propriétés}.  La syntaxe est alors
369
370 @c leave this as a long long
371 @example
372 \override @var{contexte}.@var{objet} #'@var{propriété} #'@var{sous-propriété} = #@var{valeur}
373 @end example
374
375 @noindent
376 Ainsi, par exemple :
377
378 @example
379 \override Stem #'(details beamed-lengths) = #'(4 4 3)
380 @end example
381
382
383 @seealso
384 Référence du programme : @rinternals{OverrideProperty}, @rinternals{RevertProperty},
385 @rinternals{PropertySet}, @rinternals{Backend}, et
386 @rinternals{All layout objects}.
387
388
389 @knownissues
390
391 La sous-couche Scheme ne vérifie pas la saisie des propriétés de façon
392 très stricte.  Des références cycliques dans des valeurs Scheme peuvent
393 de ce fait interrompre, ou faire planter le programme -- ou bien les deux.
394
395
396 @node Modification des réglages par défaut d'un contexte
397 @subsection Modification des réglages par défaut d'un contexte
398 @translationof Changing context default settings
399
400 Les réglages montrés dans les sous-sections @ref{La commande de fixation (set)}, @ref{Modification des greffons de contexte} et
401 @ref{Retouches de mise en forme au sein des contextes} peuvent également être saisis indépendamment
402 de la musique dans le bloc @code{\layout}, au moyen de la commande @code{\context} :
403
404 @example
405 \layout @{
406   @dots{}
407   \context @{
408     \Staff
409
410     \set fontSize = #-2
411     \override Stem #'thickness = #4.0
412     \remove "Time_signature_engraver"
413   @}
414 @}
415 @end example
416
417 Le raccourci @code{\Staff} invoque les définitions inhérentes au contexte
418 @code{Staff}, de façon à ce qu'elles puissent être modifiées.
419
420 Les lignes suivantes affecteront toutes les portées (tous les contextes @code{Staff})
421 dans la partition.
422 @example
423 \set fontSize = #-2
424 \override Stem #'thickness = #4.0
425 \remove "Time_signature_engraver"
426 @end example
427
428 @noindent
429 Les autres contextes peuvent être modifiés de même manière.
430
431 La commande @code{\set}, dans le bloc @code{\layout}, est facultative ; aussi
432 les lignes suivantes produiront-elles le même effet.
433
434 @example
435 \context @{
436   @dots{}
437   fontSize = #-2
438 @}
439 @end example
440
441
442 @knownissues
443
444 Il est impossible de stocker des modifications de contexte dans un identificateur.
445
446 Le raccourci @code{\RemoveEmptyStaffContext} détruit tous les réglages
447 du contexte @code{\Staff}.  Pour modifier des propriétés de portées gouvernées
448 par @code{\RemoveEmptyStaffContext}, il faut le faire impérativement @emph{après}
449 avoir invoqué @code{\RemoveEmptyStaffContext} :
450
451 @example
452 \layout @{
453   \context @{
454     \RemoveEmptyStaffContext
455
456     \override Stem #'thickness = #4.0
457   @}
458 @}
459 @end example
460
461
462 @node Définition de nouveaux contextes
463 @subsection Définition de nouveaux contextes
464 @translationof Defining new contexts
465
466 Les contextes tels que @code{Staff} ou @code{Voice} sont faits
467 de briques de constructions empilées.  En combinant divers graveurs,
468 il est possible de créer de nouveaux types de contextes.
469
470 Dans l'exemple suivant, on construit, de zéro, un nouveau contexte très
471 semblable à @code{Voice}, mais qui n'imprime que des têtes de notes en forme
472 de barres obliques au centre de la portée.  Un tel contexte, par exemple, peut
473 servir à indiquer un passage improvisé dans un morceau de jazz.
474
475 @c KEEP LY
476 @lilypond[quote,ragged-right]
477 \layout { \context {
478   \name ImproVoice
479   \type "Engraver_group"
480   \consists "Note_heads_engraver"
481   \consists "Rhythmic_column_engraver"
482   \consists "Text_engraver"
483   \consists Pitch_squash_engraver
484   squashedPosition = #0
485   \override NoteHead #'style = #'slash
486   \override Stem #'transparent = ##t
487   \alias Voice
488 }
489 \context { \Staff
490   \accepts "ImproVoice"
491 }}
492
493 \relative c'' {
494   a4 d8 bes8 \new ImproVoice { c4^"ad lib" c
495    c4 c^"dévêtez-vous" c_"tout en jouant :)" c }
496   a1
497 }
498 @end lilypond
499
500
501 On a rassemblé les réglages dans un bloc @code{\context}, lui-même dans
502 le bloc @code{\layout} :
503
504 @example
505 \layout @{
506   \context @{
507     @dots{}
508   @}
509 @}
510 @end example
511
512 En lieu et place des points (@dots{}), voici les éléments à saisir :
513
514 @itemize @bullet
515 @item Tout d'abord, il convient de donner un nom @code{\name} à notre nouveau contexte :
516
517 @example
518 \name ImproVoice
519 @end example
520
521 @item Comme il est très semblable à @code{Voice}, nous souhaitons que toutes les
522 commandes associées au @code{Voice} déjà existant, restent valables.  D'où nécessité
523 de la commande @code{\alias}, qui va l'associer au contexte @code{Voice} :
524
525 @example
526 \alias Voice
527 @end example
528
529 @item Ce contexte doit pouvoir imprimer des notes, et des indications textuelles ;
530 on ajoute donc les graveurs appropriés.
531
532 @example
533 \consists Note_heads_engraver
534 \consists Text_engraver
535 @end example
536
537 @item Cependant, on veut que les notes s'affichent toutes au centre de la portée :
538
539 @example
540 \consists Pitch_squash_engraver
541 squashedPosition = #0
542 @end example
543
544 @noindent
545 Le graveur @rinternals{Pitch_squash_engraver} intercepte les notes créées par
546 @rinternals{Note_heads_engraver}, et les @q{écrase} pour qu'elles aient toutes la
547 même position verticale, définie par @code{squashedPosition} : ici il s'agit de la
548 valeur@tie{}@code{0}, c'est-à-dire la ligne du milieu.
549
550 @item On veut que les notes aient la forme d'une barre oblique, sans aucune hampe :
551
552 @example
553 \override NoteHead #'style = #'slash
554 \override Stem #'transparent = ##t
555 @end example
556
557 @item Afin que tous ces graveurs puissent travailler de concert, on leur adjoint un
558 sous-programme spécial, introduit par la commande @code{\type} : il s'agit de
559 @code{Engraver_group},
560
561 @example
562 \type "Engraver_group"
563 @end example
564
565 @end itemize
566
567 Récapitulons -- on se retrouve avec le bloc suivant :
568
569 @example
570 \context @{
571   \name ImproVoice
572   \type "Engraver_group"
573   \consists "Note_heads_engraver"
574   \consists "Text_engraver"
575   \consists Pitch_squash_engraver
576   squashedPosition = #0
577   \override NoteHead #'style = #'slash
578   \override Stem #'transparent = ##t
579   \alias Voice
580 @}
581 @end example
582
583 @funindex \accepts
584 Ce n'est pas tout.  En effet, on veut intégrer le nouveau contexte
585 @code{ImproVoice} dans la hiérarchie des contextes.  Tout comme le
586 contexte @code{Voice}, sa place est au sein du contexte @code{Staff}.
587 Nous allons donc modifier le contexte @code{Staff},
588 au moyen de la commande @code{\accepts} :
589
590 @example
591 \context @{
592   \Staff
593   \accepts ImproVoice
594 @}
595 @end example
596
597 @funindex \denies
598 Le contraire de @code{\accepts} est @code{\denies},
599 qui est parfois utile lorsque l'on recycle des définitions de
600 contextes déjà existantes.
601
602 Enfin, tout cela doit prendre place dans le bloc @code{\layout},
603 comme suit :
604
605 @example
606 \layout @{
607   \context @{
608     \name ImproVoice
609     @dots{}
610   @}
611   \context @{
612     \Staff
613     \accepts "ImproVoice"
614   @}
615 @}
616 @end example
617
618 On peut alors saisir la musique, comme dans l'exemple plus haut :
619
620 @example
621 \relative c'' @{
622   a4 d8 bes8
623   \new ImproVoice @{
624     c4^"ad lib" c
625     c4 c^"dévêtez-vous"
626     c c_"tout en jouant :)"
627   @}
628   a1
629 @}
630 @end example
631
632
633 @node Alignement des contextes
634 @subsection Alignement des contextes
635 @translationof Aligning contexts
636
637
638 Il est possible d'aligner verticalement chaque nouveau contexte,
639 en-dessous ou au-dessus, par exemple dans le cas de musique vocale
640 (@rlearning{Ensemble vocal}) ou d'@qq{ossias}.
641
642 @cindex ossia
643 @findex alignAboveContext
644 @findex alignBelowContext
645
646 @lilypond[quote,ragged-right]
647 ossia = { f4 f f f }
648 \score{
649   \relative c' \new Staff = "main" {
650     c4 c c c
651     <<
652       \new Staff \with { alignAboveContext = #"main" } \ossia
653       { d8 f d f d f d f }
654     >>
655   }
656 }
657 @end lilypond
658
659
660 @node En quoi consiste la référence du programme
661 @section En quoi consiste la référence du programme
662 @translationof Explaining the Internals Reference
663
664
665 @menu
666 * Navigation dans la référence du programme::
667 * Interfaces de rendu::
668 * Détermination de la propriété d'un objet graphique (grob)::
669 * Conventions de nommage::
670 @end menu
671
672 @node Navigation dans la référence du programme
673 @subsection Navigation dans la référence du programme
674 @translationof Navigating the program reference
675
676 Comment, par exemple, déplacer le doigté dans le fragment suivant ?
677
678 @lilypond[quote,fragment,relative=2,verbatim]
679 c-2
680 \stemUp
681 f
682 @end lilypond
683
684 Sur la page de la documentation relative aux doigtés, c'est-à-dire
685 @ref{Doigtés}, se trouve l'indication suivante :
686
687
688 @seealso
689 Référence du programme : @rinternals{Fingering}.
690
691
692 @c  outdated info; probably will delete.
693 @ignore
694 This fragment points to two parts of the program reference: a page
695 on @code{FingerEvent} and one on @code{Fingering}.
696
697 The page on @code{FingerEvent} describes the properties of the music
698 expression for the input @code{-2}.  The page contains many links
699 forward.  For example, it says
700
701 @quotation
702 Accepted by: @rinternals{Fingering_engraver},
703 @end quotation
704
705 @noindent
706 That link brings us to the documentation for the Engraver, the
707 plug-in, which says
708
709 @quotation
710 This engraver creates the following layout objects: @rinternals{Fingering}.
711 @end quotation
712
713 In other words, once the @code{FingerEvent}s are interpreted, the
714 @code{Fingering_engraver} plug-in will process them.
715 @end ignore
716
717 @ignore
718 @c  I can't figure out what this is supposed to mean.  -gp
719
720 The @code{Fingering_engraver} is also listed to create
721 @rinternals{Fingering} objects,
722
723 @c  old info?  it doesn't make any sense to me with our current docs.
724 This is also the
725 second bit of information listed under @b{See also} in the Notation
726 manual.
727 @end ignore
728
729 @ifnothtml
730 Ladite référence est disponible au format HTML, ce qui rend la navigation bien
731 plus aisée.  Il est possible soit de la lire en ligne, soit de la télécharger
732 dans ce format.  La démarche présentée ici sera plus difficle à comprendre
733 dans un document au format PDF.
734 @end ifnothtml
735
736 Suivons le lien @rinternals{Fingering}.  En haut de la nouvelle page,
737 on peut lire
738
739 @quotation
740 Fingering objects are created by: @rinternals{Fingering_engraver} and
741 @rinternals{New_fingering_engraver}.
742 @end quotation
743
744 En d'autres termes, @emph{Les indications de doigtés}
745 (@code{Fingering} en anglais) @emph{sont créées par les graveurs
746 @rinternals{Fingering_engraver} et @rinternals{New_fingering_engraver}.}
747
748 En suivant derechef les liens propres à la référence du programme, on suit en fait
749 le cheminement qui aboutit à la création de la partition :
750
751 @itemize @bullet
752
753 @item @rinternals{Fingering}:
754 @rinternals{Fingering} objects are created by:
755 @rinternals{Fingering_engraver}
756
757 @item @rinternals{Fingering_engraver}:
758 Music types accepted: @rinternals{fingering-event}
759
760 @item @rinternals{fingering-event}:
761 Music event type @code{fingering-event} is in Music expressions named
762 @rinternals{FingeringEvent}
763 @end itemize
764
765 Ce cheminement se produit, bien sûr, en sens inverse : nous sommes ici partis
766 du résultat, et avons abouti aux évènements (en anglais @q{Events}) engendrés
767 par le fichier d'entrée.  L'inverse est également possible : on peut partir d'un
768 évènement, et suivre le cheminement de LilyPond qui aboutit à la création d'un
769 ou plusieurs objets graphiques.
770
771 La référence du programme peut également se parcourir comme un document normal.
772 On y trouve des chapitres tels que
773 @ifhtml
774 @rinternals{Music definitions},
775 @end ifhtml
776 @ifnothtml
777 @code{Music definitions}
778 @end ifnothtml
779 @rinternals{Translation}, ou encore @rinternals{Backend}.  Chaque chapitre
780 recense toutes les définitions employées, et les propriétés sujettes à
781 ajustements.
782
783 @c -- what about adding a link to the glossary here ? -vv
784 @ignore
785 La Référence du programme n'est pas traduite en français -- notamment du fait
786 qu'elle est en évolution constante, tout comme LilyPond.  En revanche, les termes
787 musicaux font l'objet d'un @commentfairelelien{glossaire} fort utile pour les utilisateurs
788 francophones.
789 @end ignore
790
791
792 @node Interfaces de rendu
793 @subsection Interfaces de rendu
794 @translationof Layout interfaces
795
796 @cindex interfaces de rendu
797 @cindex rendu, interfaces de
798 @cindex objets graphiques
799
800 Tous les éléments de notation sont considérés comme des objets graphiques
801 (en anglais @q{Graphical Object}, d'où le diminutif @emph{Grob}).
802 Chaque objet est doté d'un certain nombre de propriétés (l'épaisseur du trait,
803 l'orientation, etc.), et lié à d'autres objets.
804 Le fonctionnement de ces objets est décrit en détail dans @rinternals{grob-interface}.
805
806 Prenons l'exemple des doigtés (en anglais @q{Fingering}).
807 La page @code{Fingering} de la Référence du programme établit une liste de définitions
808 propres à ce type d'objets :
809
810 @quotation
811 @code{padding} (dimension, in staff space):
812
813 @code{0.5}
814 @end quotation
815
816 @noindent
817 Ce qui signifie que les doigtés doivent être maintenus à une certaine distance (@emph{padding})
818 des notes : 0,5 unités @emph{staff-space} (espace de portée).
819
820
821 Chaque objet peut avoir plusieurs attributs, en tant qu'élément typographique
822 ou musical.  Ainsi, un doigté (objet @q{Fingering}) possède les attributs suivants :
823
824
825 @itemize @bullet
826 @item
827 Sa taille ne dépend pas de l'espacement horizontal, contrairement aux liaisons ou ligatures.
828
829 @item
830 C'est du texte -- un texte vraiment court, certes.
831
832 @item
833 Ce texte est imprimé au moyen d'une fonte, contrairement aux liaisons ou ligatures.
834
835 @item
836 Sur l'axe horizontal, le centre de ce symbole doit être aligné avec le centre de la note.
837
838 @item
839 Sur l'axe vertical, le symbole doit être proche de la note et de la portée.
840
841 @item
842 Sur l'axe vertical encore, il doit également s'ordonner avec les éventuels
843 autres symboles, ponctuations, ou éléments textuels.
844 @end itemize
845
846 Faire appliquer ces différents attributs est le rôle des @emph{interfaces},
847 que l'on trouve en bas de la page @rinternals{Fingering}.
848
849 @quotation
850 This object supports the following interfaces:
851 @rinternals{item-interface},
852 @rinternals{self-alignment-interface},
853 @rinternals{side-position-interface}, @rinternals{text-interface},
854 @rinternals{text-script-interface}, @rinternals{font-interface},
855 @rinternals{finger-interface}, and @rinternals{grob-interface}.
856 @end quotation
857
858 @noindent
859 En français,
860
861 @quotation
862 Cet objet admet les interfaces suivantes :
863 @end quotation
864
865 Suit la liste des interfaces en question, présentées comme autant de liens,
866 qui conduisent sur les pages dédiées à chacune d'entre elles.
867 Chaque interface est dotée d'un certain nombre de propriétés, dont certaines
868 peuvent être modifiées, et d'autres non (les @q{Internal properties}, ou
869 propriétés internes).
870
871 Pour aller encore plus loin, plutôt que de simplement parler de l'objet
872 @code{Fingering}, ce qui ne nous avance pas à grand chose, on peut aller explorer
873 son âme même, dans les fichiers source de LilyPond (voir
874 @rlearning{Autres sources de documentation}), en l'occurence le fichier
875 @file{scm/@/define@/-grobs@/.scm} :
876
877 @example
878 (Fingering
879   . ((padding . 0.5)
880      (avoid-slur . around)
881      (slur-padding . 0.2)
882      (staff-padding . 0.5)
883      (self-alignment-X . 0)
884      (self-alignment-Y . 0)
885      (script-priority . 100)
886      (stencil . ,ly:text-interface::print)
887      (direction . ,ly:script-interface::calc-direction)
888      (font-encoding . fetaNumber)
889      (font-size . -5)           ; don't overlap when next to heads.
890      (meta . ((class . Item)
891      (interfaces . (finger-interface
892                     font-interface
893                     text-script-interface
894                     text-interface
895                     side-position-interface
896                     self-alignment-interface
897                     item-interface))))))
898 @end example
899
900 @noindent
901 @dots{}où l'on découvre que l'objet @code{Fingering} n'est rien de plus qu'un
902 amas de variables et de réglages.  La page de la Référence du programme est
903 en fait directement engendrée par cette définition.
904
905
906 @node Détermination de la propriété d'un objet graphique (grob)
907 @subsection Détermination de la propriété d'un objet graphique (grob)
908 @translationof Determining the grob property
909
910
911 Nous voulions changer la position du chiffre @b{2} dans le fragment suivant :
912
913 @lilypond[quote,fragment,relative=2,verbatim]
914 c-2
915 \stemUp
916 f
917 @end lilypond
918
919 Dans la mesure où le @b{2} est placé, verticalement, à proximité de la note qui lui
920 correspond, nous allons devoir trouver l'interface en charge de ce placement, qui se
921 trouve être @code{side-position-interface}.  Sur la page de cette interface, on
922 peut lire :
923
924 @quotation
925 @code{side-position-interface}
926
927 Position a victim object (this one) next to other objects (the
928 support).  The property @code{direction} signifies where to put the
929 victim object relative to the support (left or right, up or down?)
930 @end quotation
931
932 @noindent
933 Ce qui signifie
934 @quotation
935 @code{side-position-interface}
936
937 Placer l'objet affecté à proximité d'autres objets.  La propriété
938 @code{direction} indique où placer l'objet (à droite ou à gauche,
939 en haut ou en bas).
940 @end quotation
941
942 @cindex padding
943 @noindent
944 En-dessous de cette description se trouve décrite la variable @code{padding} :
945
946 @quotation
947 @table @code
948 @item padding
949 (dimension, in staff space)
950
951 Add this much extra space between objects that are next to each other.
952 @end table
953 @end quotation
954
955 @noindent
956 Ce qui signifie
957 @quotation
958 Ajouter tel espace supplémentaire entre des objets proches les uns des
959 autres.
960 @end quotation
961
962 @noindent
963 En augmentant la valeur de @code{padding}, on peut donc éloigner le doigté de la
964 note.  La commande suivante insère trois unités d'espace vide entre la note et le doigté :
965
966 @example
967 \once \override Voice.Fingering #'padding = #3
968 @end example
969
970 En ajoutant cette commande avant la création du doigté (de l'objet @q{Fingering}),
971 donc avant @code{c2}, on obtient le résultat suivant :
972
973 @lilypond[quote,relative=2,fragment,verbatim]
974 \once \override Voice.Fingering #'padding = #3
975 c-2
976 \stemUp
977 f
978 @end lilypond
979
980
981 Dans le cas présent, le réglage intervient dans le contexte @code{Voice},
982 ce qui pouvait également se déduire de la Référence du programme, où la page
983 du graveur @rinternals{Fingering_engraver} indique :
984
985 @quotation
986 Fingering_engraver is part of contexts: @dots{} @rinternals{Voice}
987 @end quotation
988
989 @noindent
990 Ce qui signifie
991 @quotation
992 Le graveur Fingering_engraver fait partie des contextes : @dots{} @rinternals{Voice}
993 @end quotation
994
995
996 @node Conventions de nommage
997 @subsection Conventions de nommage
998 @translationof Naming conventions @c external
999
1000 @untranslated
1001
1002
1003 @node Modification de propriétés
1004 @section Modification de propriétés
1005 @translationof Modifying properties
1006
1007 @c TODO change the menu and subsection node names to use
1008 @c backslash once the new macro to handle the refs
1009 @c is available.  Need to find and change all refs at
1010 @c the same time. -td
1011
1012 @menu
1013 * Vue d'ensemble de la modification des propriétés::
1014 * La commande de fixation (set)::
1015 * La commande de dérogation (@emph{override})::
1016 * Élaboration d'une retouche::
1017 * La commande d'affinage (@emph{tweak})::
1018 * set ou override::
1019 @end menu
1020
1021 @node Vue d'ensemble de la modification des propriétés
1022 @subsection Vue d'ensemble de la modification des propriétés
1023 @translationof Overview of modifying properties @c external
1024
1025 @untranslated
1026
1027
1028 @node La commande de fixation (set)
1029 @subsection La commande @code{\set}
1030 @translationof The set command
1031
1032 @cindex propriétés
1033 @funindex \set
1034 @cindex modifier des propriétés
1035
1036 Chaque contexte peut avoir plusieurs @emph{propriétés}, c'est-à-dire
1037 des variables qu'il inclut.  Ces dernières peuvent être modifiées @qq{à la volée},
1038 c'est-à-dire pendant que la compilation s'accomplit.  C'est là le rôle de la
1039 commande @code{\set}.
1040
1041 @example
1042 \set @var{contexte}.@var{propriété} = #@var{valeur}
1043 @end example
1044
1045 Ainsi :
1046 @lilypond[quote,verbatim,relative=2,fragment]
1047 R1*2
1048 \set Score.skipBars = ##t
1049 R1*2
1050 @end lilypond
1051
1052 Cette commande permet de condenser les mesures vides de notes, en des silences
1053 multi-mesures.  Il s'agit d'un objet Scheme, auquel on attribue la valeur booléenne
1054 @q{vrai}, c'est-à-dire la lettre @code{#t} pour @q{True} en anglais.
1055
1056 Ce changement étant appliqué @q{à la volée}, il n'affecte que le second groupe de notes.
1057
1058 Si l'argument @var{contexte} n'est pas spécifié, alors la propriété cherchera à s'appliquer
1059 dans le contexte le plus restreint où elle est employée : le plus souvent
1060  @code{ChordNames}, @code{Voice}, ou @code{Lyrics}.  Dans l'exemple suivant,
1061
1062 @lilypond[quote,verbatim,relative=2,fragment]
1063 c8 c c c
1064 \set autoBeaming = ##f
1065 c8 c c c
1066 @end lilypond
1067
1068 @noindent
1069 aucun argument @var{contexte} n'a été donné à la commande @code{\set}.
1070 De ce fait, les ligatures automatiques sont désactivées dans le
1071 contexte actuel, c'est-à-dire @rinternals{Voice}.  Notez que le
1072 contexte le plus restreint n'est pas toujours le bon,
1073 et peut ne pas contenir la propriété qui vous intéresse : ainsi, la propriété
1074 @code{skipBars}, évoquée plus haut, ne relève pas du contexte @code{Voice},
1075 et le code suivant ne fonctionnera pas.
1076
1077 @lilypond[quote,verbatim,relative=2,fragment]
1078 R1*2
1079 \set skipBars = ##t
1080 R1*2
1081 @end lilypond
1082
1083 Les contextes s'organisent de façon hiérarchique : aussi, lorsqu'un contexte de niveau
1084 supérieur est spécifié (par exemple @code{Staff}), la propriété sera modifée dans
1085 tous les contextes inférieurs (tous les contextes @code{Voice}, par exemple)
1086 qu'il contient.
1087
1088 @funindex \unset
1089
1090 La commande @code{\unset} permet d'annuler la définition d'une propriété :
1091
1092 @example
1093 \unset @var{contexte}.@var{propriété}
1094 @end example
1095
1096 @noindent
1097 si et seulement si cette propriété à été définie dans ce @var{contexte}
1098 précis ; ainsi,
1099
1100 @example
1101 \set Staff.autoBeaming = ##f
1102 @end example
1103
1104 @noindent
1105 même s'il s'applique à tous les contextes @code{Voice} contenus dans le
1106 contexte @code{Staff}, ne peut être annulé au niveau @code{Voice}.  Le code
1107 suivant sera sans effet.
1108
1109 @example
1110 \unset Voice.autoBeaming
1111 @end example
1112
1113 @noindent
1114 En d'autres termes, la commande @code{\unset} doit impérativement être
1115 accompagnée du même contexte que la commande @code{\set} d'origine.
1116 Pour annuler l'effet, dans notre exemple, de @code{Staff.autoBeaming = ##f},
1117 il faut donc entrer :
1118 @example
1119 \unset Staff.autoBeaming
1120 @end example
1121
1122 Si l'on se trouve dans le contexte le plus restreint, il n'est pas obligatoire,
1123 là encore, de spécifier le @var{contexte}.  Ainsi, les deux lignes suivantes sont équivalentes.
1124
1125
1126 @example
1127 \set Voice.autoBeaming = ##t
1128 \set autoBeaming = ##t
1129 @end example
1130
1131
1132 @cindex \once
1133 Pour modifier une propriété de façon à ce qu'elle ne s'applique qu'une seule fois,
1134 il convient d'employer la commande @code{\once} :
1135
1136 @lilypond[quote,verbatim,relative=2,fragment]
1137 c4
1138 \once \set fontSize = #4.7
1139 c4
1140 c4
1141 @end lilypond
1142
1143 Ici le changement de taille est annulé aussitôt après la note concernée.
1144
1145 La référence du programme contient une description exhaustive de toutes les
1146 propriétés contexte par contexte : voir
1147 @ifhtml
1148 @rinternals{Tunable context properties}.
1149 @end ifhtml
1150 @ifnothtml
1151 Translation @expansion{} Tunable context properties.
1152 @end ifnothtml
1153
1154
1155 @node La commande de dérogation (@emph{override})
1156 @subsection La commande @code{\override}
1157 @translationof The override command
1158
1159
1160 La commande @code{\override} permet de modifier la mise en page
1161 en détail.  Examinons son utilisation concrètementet dans les détails.
1162 La syntaxe de cette commande ressemble généralement à :
1163
1164 @example
1165 \override @var{contexte}.@var{objet} #'@var{propriété} = #@var{valeur}
1166 @end example
1167
1168 La propriété @var{propriété} de l'objet @var{objet}, appartenant au contexte
1169 @var{contexte}, se voit ainsi attribuer la valeur @var{valeur}.
1170
1171
1172 @c deprecated node. Delete. --fv
1173 @node Élaboration d'une retouche
1174 @subsection Élaboration d'une retouche
1175 @translationof Constructing a tweak
1176
1177 Les commandes permettant de modifier l'apparence de la partition
1178 ressemblent en général à
1179
1180 @example
1181 \override Voice.Stem #'thickness = #3.0
1182 @end example
1183
1184 @noindent
1185 Pour élaborer un réglage de ce type, on a besoin de connaître précisément :
1186
1187 @itemize
1188 @item le contexte : ici @code{Voice} (la voix).
1189 @item l'objet à affecter : ici @code{Stem} (les hampes).
1190 @item la propriété à modifier : ici @code{thickness} (l'épaisseur du trait).
1191 @item la valeur désirée : ici @code{3.0} (par défaut, elle est de 1.3).
1192 @end itemize
1193
1194 Certaines @q{sous-propriétés} sont parfois contenues dans une propriété.
1195 La commande devient alors :
1196
1197 @example
1198 \override Stem #'(details beamed-lengths) = #'(4 4 3)
1199 @end example
1200
1201 @cindex documentation exhaustive
1202 @cindex trouver des objets graphiques
1203 @cindex objets graphiques, description
1204 @cindex régler
1205 @funindex \override
1206
1207 Pour bien des propriétés, quel que soit le type de valeur requise,
1208 attribuer la valeur @q{faux} (@code{##f} en Scheme) reviendra à désactiver
1209 complètement l'action de la propriété qui se trouve ainsi purement
1210 ignorée par LilyPond.  Cela peut s'avérer fort utile pour des propriétés
1211 causant des désagréments.
1212
1213 @c such announcements are to be avoided -vv
1214 @ignore
1215 We demonstrate how to glean this information from the notation manual
1216 and the program reference.
1217 @end ignore
1218
1219
1220 @node La commande d'affinage (@emph{tweak})
1221 @subsection La commande @code{\tweak}
1222 @translationof The tweak command
1223
1224
1225 @funindex \tweak
1226
1227 Dans certains cas, on peut passer par un raccourci pour arranger les
1228 objets graphiques.  Lorsqu'un objet est directement engendré par un élément distinct
1229 du fichier source, on peut utiliser la commande @code{\tweak}.
1230
1231 Dans l'accord suivant, les notes sont modifiées une par une :
1232
1233 @lilypond[relative=2,fragment,verbatim,ragged-right]
1234 <
1235   c
1236   \tweak #'color #red d
1237   g
1238   \tweak #'duration-log #1  a
1239 >4-\tweak #'padding #10 -.
1240 @end lilypond
1241
1242 Comme on peut le voir, les propriétés sont ici modifiées directement
1243 en même temps que les objets sont saisis.  Il n'est plus besoin de spécifier ni
1244 le nom de l'objet (@emph{grob}), ni le contexte dans lequel cela doit s'appliquer.
1245
1246 Ce procédé ne marche que pour des objets directement liés aux évènements
1247 (@rinternals{Event}) du fichier source.  Par exemple :
1248
1249 @itemize @bullet
1250 @item Les têtes de notes au sein d'un accord, qui sont directement engendrées par
1251 les hauteurs indiquées
1252 @item Les signes d'articulation, engendrés par les indications de ponctuation.
1253 @end itemize
1254
1255 En revanche, les hampes ou les altérations sont engendrées par les têtes de notes,
1256 et non par des évènements dans le fichier source.  De même pour les clés, qui ne
1257 sont pas directement engendrées par le fichier source, mais plutôt par le
1258 changement d'une propriété interne.
1259
1260 En fait, très peu d'objets passent @emph{directement} du code source à la partition.
1261 Une note toute simple, par exemple @code{c4}, fait l'objet d'un traitement et n'est donc
1262 pas directement rendue ; c'est pourquoi le code suivant ne sera d'aucun effet :
1263
1264 @example
1265 \tweak #'color #red c4
1266 @end example
1267
1268 @noindent
1269 Voir pour plus de détails @ref{Affichage d'expressions musicales}.
1270
1271
1272 @node set ou override
1273 @subsection @code{\set} ou @code{\override}
1274 @translationof set versus override
1275
1276
1277 Si les propriétés peuvent être modifiées de deux façons, par les commandes
1278 @code{\set} et @code{\override}, c'est qu'il y a deux types de propriétés.
1279
1280 Les contextes peuvent avoir des propriétés, dont les noms commencent par une
1281 minuscule puis comprennent une ou plusieurs majuscules (de style
1282 @code{totoTutu}).  Elles ont surtout trait
1283 à la notation des éléments musicaux : par exemple, @code{localKeySignature} permet
1284 de choisir s'il faut ou non imprimer une altération, ou @code{measurePosition} permet
1285 de choisir quand il faut imprimer une barre de mesure.  Ces propriétés de contextes
1286 sont appelées à changer au long de l'interprétation de la partition :
1287 @code{measurePosition} en est un exemple évident.  Ces propriétés doivent
1288 être modifiées avec la commande @code{\set}.
1289
1290 Il existe un type particulier de propriétés : les descriptions
1291 d'éléments.  Ces propriétés, dont les noms commencent par une majuscule, puis comprennent
1292 une ou plusieurs majuscules (de style @code{TotoTata}), contiennent les réglages
1293 @q{par défaut} pour les objets graphiques.  Ces réglages sont sous forme de liste Scheme ; on
1294 peut les consulter dans le fichier @file{scm/@/define@/-grobs@/.scm}.
1295 Les descriptions d'éléments doivent être modifiées avec la commande @code{\override}.
1296
1297 @code{\override} est en fait un raccourci :
1298
1299 @example
1300 \override @var{contexte}.@var{objet} #'@var{propriété} = #@var{valeur}
1301 @end example
1302
1303 @noindent
1304 est plus ou moins l'équivalent de
1305
1306 @c  leave this long line -gp
1307 @example
1308 \set @var{contexte}.@var{objet} #'@var{propriété} = #(cons (cons '@var{propriété} @var{valeur}) <valeur précédente de @var{contexte})
1309 @end example
1310
1311 La valeur de @code{context} (la liste Scheme, ou @q{alist}) sert à initialiser
1312 les propriétés des objets un par un.  Les objets eux-même ont leurs propriétés,
1313 dont les noms, dans la tradition du langage Scheme, comprennent un trait d'union
1314 (@code{toto-titi}).  Ces propriétés internes changent constamment au cours de la mise
1315 en page : en fait, la gravure d'une page n'est autre que le calcul de toutes
1316 ces propriétés, au moyen de fonctions de rappel.
1317
1318 La propriété @code{fontSize} est une exception : c'est un raccourci, qui équivaudrait
1319 à saisir @code{\override @dots{} #'font-size} pour tous les objets
1320 textuels.  Dans la mesure où il s'agit d'une manipulation très
1321 courante, une propriété spéciale a été créée.  Elle doit
1322 être modifiée avec la commande @code{\set}.
1323
1324
1325
1326 @node Propriétés et contextes utiles
1327 @section Propriétés et contextes utiles
1328 @translationof Useful concepts and properties
1329
1330
1331 @menu
1332 * Modes de saisie::
1333 * Direction et positionnement::
1334 * Distances et unités de mesure::
1335 * Propriétés des lignes de portée::
1336 * Extenseurs et prolongateurs::
1337 * Visibilité des objets::
1338 * Styles de ligne::
1339 * Rotation des objets::
1340 @end menu
1341
1342 @node Modes de saisie
1343 @subsection Modes de saisie
1344 @translationof Input modes @c external
1345
1346 @untranslated
1347
1348
1349 @node Direction et positionnement
1350 @subsection Direction et positionnement
1351 @translationof Direction and placement @c external
1352
1353 @untranslated
1354
1355
1356 @node Distances et unités de mesure
1357 @subsection Distances et unités de mesure
1358 @translationof Distances and measurements @c external
1359
1360 @untranslated
1361
1362
1363 @node Propriétés des lignes de portée
1364 @subsection Propriétés des lignes de portée
1365 @translationof Staff symbol properties @c external
1366
1367 @untranslated
1368
1369
1370 @node Extenseurs et prolongateurs
1371 @subsection Extenseurs et prolongateurs
1372 @translationof Spanners @c external
1373
1374 @untranslated
1375
1376
1377 @unnumberedsubsubsec Utilisation de @code{spanner-interface}
1378 @unnumberedsubsubsec Utilisation de @code{line-spanner-interface}
1379 @node Visibilité des objets
1380 @subsection Visibilité des objets
1381 @translationof Visibility of objects @c external
1382
1383 @untranslated
1384
1385
1386 @menu
1387 * Suppression des stencils::
1388 * Transparence des objets::
1389 * Blanchiment des objets::
1390 * Utilisation de break-visibility::
1391 * Considérations spécifiques::
1392 @end menu
1393
1394 @node Suppression des stencils
1395 @unnumberedsubsubsec Suppression des stencils
1396 @translationof Removing the stencil @c external
1397
1398 @untranslated
1399
1400
1401 @node Transparence des objets
1402 @unnumberedsubsubsec Transparence des objets
1403 @translationof Making objects transparent @c external
1404
1405 @untranslated
1406
1407
1408 @node Blanchiment des objets
1409 @unnumberedsubsubsec Blanchiment des objets
1410 @translationof Painting objects white @c external
1411
1412 @untranslated
1413
1414
1415 @node Utilisation de break-visibility
1416 @unnumberedsubsubsec Utilisation de break-visibility
1417 @translationof Using break-visibility @c external
1418
1419 @untranslated
1420
1421
1422 @node Considérations spécifiques
1423 @unnumberedsubsubsec Considérations spécifiques
1424 @translationof Special considerations @c external
1425
1426 @untranslated
1427
1428
1429 @node Styles de ligne
1430 @subsection Styles de ligne
1431 @translationof Line styles @c external
1432
1433 @untranslated
1434
1435
1436 @node Rotation des objets
1437 @subsection Rotation des objets
1438 @translationof Rotating objects @c external
1439
1440 @untranslated
1441
1442
1443 @menu
1444 * Rotation des objets de mise en forme::
1445 * Rotation des étiquettes::
1446 @end menu
1447
1448 @node Rotation des objets de mise en forme
1449 @unnumberedsubsubsec Rotation des objets de mise en forme
1450 @translationof Rotating layout objects @c external
1451
1452 @untranslated
1453
1454
1455 @node Rotation des étiquettes
1456 @unnumberedsubsubsec Rotation des étiquettes
1457 @translationof Rotating markup @c external
1458
1459 @untranslated
1460
1461
1462 @node Retouches avancées
1463 @section Retouches avancées
1464 @translationof Advanced tweaks @c external
1465
1466 @untranslated
1467
1468
1469 @menu
1470 * Alignement des objets::
1471 * Regroupement vertical d'objets graphiques::
1472 * Modification des stencils::
1473 * Modification de l'allure des éléments::
1474 @end menu
1475
1476 @node Alignement des objets
1477 @subsection Alignement des objets
1478 @translationof Aligning objects @c external
1479
1480 @untranslated
1481
1482
1483 @menu
1484 * Détermination directe de @code{X-offset} et @code{Y-offset}::
1485 * Utilisation de @code{side-position-interface}::
1486 * Utilisation de @code{self-alignment-interface}::
1487 * Utilisation de @code{break-aligned-interface}::
1488 @end menu
1489
1490 @node Détermination directe de @code{X-offset} et @code{Y-offset}
1491 @unnumberedsubsubsec Détermination directe de @code{X-offset} et @code{Y-offset}
1492 @translationof Setting @code{X-offset} and @code{Y-offset} directly @c external
1493
1494 @untranslated
1495
1496
1497 @node Utilisation de @code{side-position-interface}
1498 @unnumberedsubsubsec Utilisation de @code{side-position-interface}
1499 @translationof Using the @code{side-position-interface} @c external
1500
1501 @untranslated
1502
1503
1504 @node Utilisation de @code{self-alignment-interface}
1505 @unnumberedsubsubsec Utilisation de @code{self-alignment-interface}
1506 @translationof Using the @code{self-alignment-interface} @c external
1507
1508 @untranslated
1509
1510
1511 @unnumberedsubsubsec Utilisation des procédures @code{aligned-on-parent}
1512 @unnumberedsubsubsec Utilisation des procédures @code{centered-on-parent}
1513 @node Utilisation de @code{break-aligned-interface}
1514 @unnumberedsubsubsec Utilisation de @code{break-aligned-interface}
1515 @translationof Using the @code{break-alignable-interface} @c external
1516
1517 @untranslated
1518
1519
1520 @node Regroupement vertical d'objets graphiques
1521 @subsection Regroupement vertical d'objets graphiques
1522 @translationof Vertical grouping of grobs
1523
1524 Les objets @code{VerticalAlignment} et @code{VerticalAxisGroup}
1525 travaillent de concert.  Comme leurs noms anglais l'indiquent,
1526 @code{VerticalAxisGroup} regroupe différents objets tels que les portées
1527 (@code{Staff}), les paroles (@code{Lyrics}) et ainsi de suite ; puis
1528 @code{VerticalAlignment} synchronise verticalement ces différents groupes.
1529 En général, il n'y a qu'un seul @code{VerticalAlignment} pour l'ensemble
1530 de la partition, mais chaque contexte @code{Staff}, @code{Lyrics}, etc.
1531 possède son propre @code{VerticalAxisGroup}.
1532
1533
1534 @node Modification des stencils
1535 @subsection Modification des stencils
1536 @translationof Modifying stencils @c external
1537
1538 @untranslated
1539
1540
1541 @node Modification de l'allure des éléments
1542 @subsection Modification de l'allure des éléments
1543 @translationof Modifying shapes
1544
1545 @menu
1546 * Modification des liaisons::
1547 @end menu
1548
1549 @node Modification des liaisons
1550 @unnumberedsubsubsec Modification des liaisons
1551 @translationof Modifying ties and slurs @c external
1552
1553 @untranslated
1554