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