]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/fr/notation/changing-defaults.itely
Doc-fr: spell-checking
[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: 98f5cb86133b03c2c4739cab384d48021e5d11df
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  For details, see the Contributors'
8     Guide, node Updating translation committishes..
9 @end ignore
10
11 @c \version "2.13.36"
12
13 @c Translators: 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   \alias Voice
555 }
556 \context { \Staff
557   \accepts "ImproVoice"
558 }}
559
560 \relative c'' {
561   a4 d8 bes8 \new ImproVoice { c4^"ad lib" c
562    c4 c^"dévêtez-vous" c_"tout en jouant :)" c }
563   a1
564 }
565 @end lilypond
566
567
568 On a rassemblé les réglages dans un bloc @code{\context}, lui-même dans
569 le bloc @code{\layout}@tie{}:
570
571 @example
572 \layout @{
573   \context @{
574     @dots{}
575   @}
576 @}
577 @end example
578
579 En lieu et place des points (@dots{}), voici les éléments à
580 saisir@tie{}:
581
582 @itemize @bullet
583 @item Tout d'abord, il convient de donner un nom @code{\name} à notre
584 nouveau contexte@tie{}:
585
586 @example
587 \name ImproVoice
588 @end example
589
590 @item Comme il est très semblable à @code{Voice}, nous souhaitons que
591 toutes les commandes associées au @code{Voice} déjà existant, restent
592 valables.  D'où nécessité de la commande @code{\alias}, qui va
593 l'associer au contexte @code{Voice}@tie{}:
594
595 @example
596 \alias Voice
597 @end example
598
599 @item Ce contexte doit pouvoir imprimer des notes, et des indications
600 textuelles@tie{}; on ajoute donc les graveurs appropriés.
601
602 @example
603 \consists Note_heads_engraver
604 \consists Text_engraver
605 @end example
606
607 @item Cependant, on veut que les notes s'affichent toutes au centre de
608 la portée@tie{}:
609
610 @example
611 \consists Pitch_squash_engraver
612 squashedPosition = #0
613 @end example
614
615 @noindent
616 Le graveur @rinternals{Pitch_squash_engraver} intercepte les notes
617 créées par @rinternals{Note_heads_engraver}, et les @qq{écrase} pour
618 qu'elles aient toutes la même position verticale, définie par
619 @code{squashedPosition}@tie{}: ici il s'agit de la valeur@tie{}@code{0},
620 c'est-à-dire la ligne du milieu.
621
622 @item On veut que les notes aient la forme d'une barre oblique, sans
623 aucune hampe@tie{}:
624
625 @example
626 \override NoteHead #'style = #'slash
627 \override Stem #'transparent = ##t
628 @end example
629
630 @item Afin que tous ces graveurs puissent travailler de concert, on leur
631 adjoint un sous-programme spécial, introduit par la commande
632 @code{\type}@tie{}: il s'agit de @code{Engraver_group},
633
634 @example
635 \type "Engraver_group"
636 @end example
637
638 @end itemize
639
640 Récapitulons -- on se retrouve avec le bloc suivant@tie{}:
641
642 @example
643 \context @{
644   \name ImproVoice
645   \type "Engraver_group"
646   \consists "Note_heads_engraver"
647   \consists "Text_engraver"
648   \consists Pitch_squash_engraver
649   squashedPosition = #0
650   \override NoteHead #'style = #'slash
651   \override Stem #'transparent = ##t
652   \alias Voice
653 @}
654 @end example
655
656 @funindex \accepts
657
658 Ce n'est pas tout.  En effet, on veut intégrer le nouveau contexte
659 @code{ImproVoice} dans la hiérarchie des contextes.  Tout comme le
660 contexte @code{Voice}, sa place est au sein du contexte @code{Staff}.
661 Nous allons donc modifier le contexte @code{Staff},
662 au moyen de la commande @code{\accepts}@tie{}:
663
664 @example
665 \context @{
666   \Staff
667   \accepts ImproVoice
668 @}
669 @end example
670
671 @funindex \denies
672
673 Le contraire de @code{\accepts} est @code{\denies},
674 qui est parfois utile lorsque l'on recycle des définitions de
675 contextes déjà existantes.
676
677 Enfin, tout cela doit prendre place dans le bloc @code{\layout},
678 comme suit@tie{}:
679
680 @example
681 \layout @{
682   \context @{
683     \name ImproVoice
684     @dots{}
685   @}
686   \context @{
687     \Staff
688     \accepts "ImproVoice"
689   @}
690 @}
691 @end example
692
693 On peut alors saisir la musique, comme dans l'exemple plus haut@tie{}:
694
695 @example
696 \relative c'' @{
697   a4 d8 bes8
698   \new ImproVoice @{
699     c4^"ad lib" c
700     c4 c^"dévêtez-vous"
701     c c_"tout en jouant :)"
702   @}
703   a1
704 @}
705 @end example
706
707
708 @node Alignement des contextes
709 @subsection Alignement des contextes
710 @translationof Aligning contexts
711
712
713 Il est possible d'aligner verticalement chaque nouveau contexte,
714 en-dessous ou au-dessus, par exemple dans le cas de musique vocale
715 (@rlearning{Ensemble vocal}) ou d'@emph{ossias}.
716
717 @cindex ossia
718
719 @findex alignAboveContext
720 @findex alignBelowContext
721
722 @lilypond[quote,ragged-right]
723 ossia = { f4 f f f }
724 \score{
725   \relative c' \new Staff = "main" {
726     c4 c c c
727     <<
728       \new Staff \with { alignAboveContext = #"main" } \ossia
729       { d8 f d f d f d f }
730     >>
731   }
732 }
733 @end lilypond
734
735
736 @node En quoi consiste la référence des propriétés internes
737 @section En quoi consiste la référence des propriétés internes
738 @translationof Explaining the Internals Reference
739
740
741 @menu
742 * Navigation dans les références du programme::
743 * Interfaces de rendu::
744 * Détermination de la propriété d'un objet graphique (grob)::
745 * Conventions de nommage::
746 @end menu
747
748 @node Navigation dans les références du programme
749 @subsection Navigation dans les références du programme
750 @translationof Navigating the program reference
751
752 Comment, par exemple, déplacer le doigté dans le fragment suivant@tie{}?
753
754 @lilypond[quote,relative=2,verbatim]
755 c-2
756 \stemUp
757 f
758 @end lilypond
759
760 Sur la page de la documentation relative aux doigtés, c'est-à-dire
761 @ref{Doigtés}, se trouve l'indication suivante@tie{}:
762
763
764 @seealso
765 Référence des propriétés internes :
766 @rinternals{Fingering}.
767
768
769 @c  outdated info; probably will delete.
770 @ignore
771 This fragment points to two parts of the program reference: a page
772 on @code{FingerEvent} and one on @code{Fingering}.
773
774 The page on @code{FingerEvent} describes the properties of the music
775 expression for the input @code{-2}.  The page contains many links
776 forward.  For example, it says
777
778 @quotation
779 Accepted by: @rinternals{Fingering_engraver},
780 @end quotation
781
782 @noindent
783 That link brings us to the documentation for the Engraver, the
784 plug-in, which says
785
786 @quotation
787 This engraver creates the following layout objects: @rinternals{Fingering}.
788 @end quotation
789
790 In other words, once the @code{FingerEvent}s are interpreted, the
791 @code{Fingering_engraver} plug-in will process them.
792 @end ignore
793
794 @ignore
795 @c  I can't figure out what this is supposed to mean.  -gp
796
797 The @code{Fingering_engraver} is also listed to create
798 @rinternals{Fingering} objects,
799
800 @c  old info?  it doesn't make any sense to me with our current docs.
801 This is also the
802 second bit of information listed under @b{See also} in the Notation
803 manual.
804 @end ignore
805
806 @ifnothtml
807 Ladite référence est disponible au format HTML, ce qui rend la
808 navigation bien plus aisée.  Il est possible soit de la lire en ligne,
809 soit de la télécharger dans ce format.  La démarche présentée ici sera
810 plus difficile à comprendre dans un document au format PDF.
811 @end ifnothtml
812
813 Suivons le lien @rinternals{Fingering}.  En haut de la nouvelle page,
814 on peut lire
815
816 @quotation
817 Fingering objects are created by: @rinternals{Fingering_engraver} and
818 @rinternals{New_fingering_engraver}.
819 @end quotation
820
821 En d'autres termes, @emph{Les indications de doigtés}
822 (@code{Fingering} en anglais) @emph{sont créées par les graveurs
823 @rinternals{Fingering_engraver} et @rinternals{New_fingering_engraver}.}
824
825 En suivant derechef les liens propres à la référence du programme, on
826 suit en fait le cheminement qui aboutit à la création de la
827 partition@tie{}:
828
829 @itemize @bullet
830
831 @item @rinternals{Fingering}:
832 @rinternals{Fingering} objects are created by:
833 @rinternals{Fingering_engraver}
834
835 @item @rinternals{Fingering_engraver}:
836 Music types accepted: @rinternals{fingering-event}
837
838 @item @rinternals{fingering-event}:
839 Music event type @code{fingering-event} is in Music expressions named
840 @rinternals{FingeringEvent}
841 @end itemize
842
843 Ce cheminement se produit, bien sûr, en sens inverse@tie{}: nous sommes
844 ici partis du résultat, et avons abouti aux évènements (en anglais
845 @emph{Events}) engendrés par le fichier d'entrée.  L'inverse est
846 également possible@tie{}: on peut partir d'un évènement, et suivre le
847 cheminement de LilyPond qui aboutit à la création d'un ou plusieurs
848 objets graphiques.
849
850 La référence des propriétés internes peut également se parcourir comme
851 un document normal. On y trouve des chapitres tels que
852 @ifhtml
853 @rinternals{Music definitions},
854 @end ifhtml
855 @ifnothtml
856 @code{Music definitions}
857 @end ifnothtml
858 @rinternals{Translation}, ou encore @rinternals{Backend}.  Chaque
859 chapitre recense toutes les définitions employées, et les propriétés
860 sujettes à ajustements.
861
862 @c -- what about adding a link to the glossary here ? -vv
863 @ignore
864 La Référence du programme n'est pas traduite en français -- notamment du
865 fait qu'elle est en évolution constante, tout comme LilyPond.  En
866 revanche, les termes musicaux font l'objet d'un
867 @commentfairelelien{glossaire} fort utile pour les utilisateurs francophones.
868 @end ignore
869
870
871 @node Interfaces de rendu
872 @subsection Interfaces de rendu
873 @translationof Layout interfaces
874
875 @cindex interfaces de rendu
876 @cindex rendu, interfaces de
877 @cindex objets graphiques
878
879 Tous les éléments de notation sont considérés comme des objets
880 graphiques (en anglais @emph{Graphical Object}, d'où le diminutif
881 @emph{Grob}).  Chaque objet est doté d'un certain nombre de propriétés
882 (l'épaisseur du trait, l'orientation, etc.), et lié à d'autres objets.
883 Le fonctionnement de ces objets est décrit en détail dans
884 @rinternals{grob-interface}.
885
886 Prenons l'exemple des doigtés (en anglais @emph{Fingering}).  La page
887 @code{Fingering} de la Référence des propriétés internes établit une
888 liste de définitions propres à ce type d'objet@tie{}:
889
890 @quotation
891 @code{padding} (dimension, in staff space):
892
893 @code{0.5}
894 @end quotation
895
896 @noindent
897 Ce qui signifie que les doigtés doivent être maintenus à une certaine
898 distance (@emph{padding}) des notes@tie{}: 0,5 unités @emph{staff-space}
899 (espace de portée).
900
901 Chaque objet peut avoir plusieurs attributs, en tant qu'élément
902 typographique ou musical.  Ainsi, un doigté (objet @emph{Fingering})
903 possède les attributs suivants@tie{}:
904
905
906 @itemize @bullet
907 @item
908 Sa taille ne dépend pas de l'espacement horizontal, contrairement aux
909 liaisons ou ligatures.
910
911 @item
912 C'est du texte -- un texte vraiment court, certes.
913
914 @item
915 Ce texte est imprimé au moyen d'une fonte, contrairement aux liaisons ou
916 ligatures.
917
918 @item
919 Sur l'axe horizontal, le centre de ce symbole doit être aligné avec le
920 centre de la note.
921
922 @item
923 Sur l'axe vertical, le symbole doit être proche de la note et de la
924 portée.
925
926 @item
927 Sur l'axe vertical encore, il doit également s'ordonner avec les
928 éventuels autres symboles, ponctuations, ou éléments textuels.
929 @end itemize
930
931 Faire appliquer ces différents attributs est le rôle des
932 @emph{interfaces}, que l'on trouve en bas de la page
933 @rinternals{Fingering}.
934
935 @quotation
936 This object supports the following interfaces:
937 @rinternals{item-interface},
938 @rinternals{self-alignment-interface},
939 @rinternals{side-position-interface}, @rinternals{text-interface},
940 @rinternals{text-script-interface}, @rinternals{font-interface},
941 @rinternals{finger-interface}, and @rinternals{grob-interface}.
942 @end quotation
943
944 @noindent
945 En français,
946
947 @quotation
948 Cet objet admet les interfaces suivantes@tie{}:
949 @end quotation
950
951 Suit la liste des interfaces en question, présentées comme autant de
952 liens, qui conduisent sur les pages dédiées à chacune d'entre elles.
953 Chaque interface est dotée d'un certain nombre de propriétés, dont
954 certaines peuvent être modifiées, et d'autres non (les @emph{Internal
955 properties}, ou propriétés internes).
956
957 Pour aller encore plus loin, plutôt que de simplement parler de l'objet
958 @code{Fingering}, ce qui ne nous avance pas à grand chose, on peut aller
959 explorer son âme même, dans les fichiers source de LilyPond (voir
960 @rlearning{Autres sources de documentation}), en l'occurence le fichier
961 @file{scm/define-grobs.scm}@tie{}:
962
963 @example
964 (Fingering
965   . ((padding . 0.5)
966      (avoid-slur . around)
967      (slur-padding . 0.2)
968      (staff-padding . 0.5)
969      (self-alignment-X . 0)
970      (self-alignment-Y . 0)
971      (script-priority . 100)
972      (stencil . ,ly:text-interface::print)
973      (direction . ,ly:script-interface::calc-direction)
974      (font-encoding . fetaText)
975      (font-size . -5)           ; don't overlap when next to heads.
976      (meta . ((class . Item)
977      (interfaces . (finger-interface
978                     font-interface
979                     text-script-interface
980                     text-interface
981                     side-position-interface
982                     self-alignment-interface
983                     item-interface))))))
984 @end example
985
986 @noindent
987 @dots{}où l'on découvre que l'objet @code{Fingering} n'est rien de plus
988 qu'un amas de variables et de réglages.  La page de la Référence du
989 programme est en fait directement engendrée par cette définition.
990
991
992 @node Détermination de la propriété d'un objet graphique (grob)
993 @subsection Détermination de la propriété d'un objet graphique (grob)
994 @translationof Determining the grob property
995
996
997 Nous voulions changer la position du chiffre @b{2} dans le fragment
998 suivant@tie{}:
999
1000 @lilypond[quote,relative=2,verbatim]
1001 c-2
1002 \stemUp
1003 f
1004 @end lilypond
1005
1006 Dans la mesure où le @b{2} est placé, verticalement, à proximité de la
1007 note qui lui correspond, nous allons devoir trouver l'interface en
1008 charge de ce placement, qui se trouve être
1009 @code{side-position-interface}.  Sur la page de cette interface, on peut
1010 lire@tie{}:
1011
1012 @quotation
1013 @code{side-position-interface}
1014
1015 Position a victim object (this one) next to other objects (the
1016 support).  The property @code{direction} signifies where to put the
1017 victim object relative to the support (left or right, up or down?)
1018 @end quotation
1019
1020 @noindent
1021 Ce qui signifie
1022 @quotation
1023 @code{side-position-interface}
1024
1025 Placer l'objet affecté à proximité d'autres objets.  La propriété
1026 @code{direction} indique où placer l'objet (à droite ou à gauche,
1027 en haut ou en bas).
1028 @end quotation
1029
1030 @cindex padding
1031 @noindent
1032 En-dessous de cette description se trouve décrite la variable
1033 @code{padding}@tie{}:
1034
1035 @quotation
1036 @table @code
1037 @item padding
1038 (dimension, in staff space)
1039
1040 Add this much extra space between objects that are next to each other.
1041 @end table
1042 @end quotation
1043
1044 @noindent
1045 Ce qui signifie
1046 @quotation
1047 Ajouter tel espace supplémentaire entre des objets proches les uns des
1048 autres.
1049 @end quotation
1050
1051 @noindent
1052 En augmentant la valeur de @code{padding}, on peut donc éloigner le
1053 doigté de la note.  La commande suivante insère trois unités d'espace
1054 vide entre la note et le doigté@tie{}:
1055
1056 @example
1057 \once \override Voice.Fingering #'padding = #3
1058 @end example
1059
1060 En ajoutant cette commande avant la création du doigté (de l'objet
1061 @code{Fingering}), donc avant @code{c2}, on obtient le résultat
1062 suivant@tie{}:
1063
1064 @lilypond[quote,relative=2,verbatim]
1065 \once \override Voice.Fingering #'padding = #3
1066 c-2
1067 \stemUp
1068 f
1069 @end lilypond
1070
1071
1072 Dans le cas présent, le réglage intervient dans le contexte @code{Voice},
1073 ce qui pouvait également se déduire de la Référence du programme, où la
1074 page du graveur @rinternals{Fingering_engraver} indique@tie{}:
1075
1076 @quotation
1077 Fingering_engraver is part of contexts: @dots{} @rinternals{Voice}
1078 @end quotation
1079
1080 @noindent
1081 Ce qui signifie
1082 @quotation
1083 Le graveur Fingering_engraver fait partie des contextes@tie{}: @dots{}
1084 @rinternals{Voice}
1085 @end quotation
1086
1087
1088 @node Conventions de nommage
1089 @subsection Conventions de nommage
1090 @translationof Naming conventions
1091
1092 @untranslated
1093
1094
1095 @node Modification de propriétés
1096 @section Modification de propriétés
1097 @translationof Modifying properties
1098
1099 @c TODO change the menu and subsection node names to use
1100 @c backslash once the new macro to handle the refs
1101 @c is available.  Need to find and change all refs at
1102 @c the same time. -td
1103
1104 @menu
1105 * Vue d'ensemble de la modification des propriétés::
1106 * La commande de fixation (set)::
1107 * La commande de dérogation (override)::
1108 * La commande d'affinage (tweak)::
1109 * set ou override::
1110 * Modification de listes associatives::
1111 @end menu
1112
1113 @node Vue d'ensemble de la modification des propriétés
1114 @subsection Vue d'ensemble de la modification des propriétés
1115 @translationof Overview of modifying properties
1116
1117 @untranslated
1118
1119
1120 @node La commande de fixation (set)
1121 @subsection La commande @code{@bs{}set}
1122 @translationof The set command
1123
1124 @cindex propriétés
1125 @funindex \set
1126 @cindex modifier des propriétés
1127
1128 Chaque contexte peut avoir plusieurs @emph{propriétés}, c'est-à-dire
1129 des variables qu'il inclut.  Ces dernières peuvent être modifiées @qq{à
1130 la volée}, c'est-à-dire pendant que la compilation s'accomplit.  C'est
1131 là le rôle de la commande @code{\set}.
1132
1133 @example
1134 \set @var{contexte}.@var{propriété} = #@var{valeur}
1135 @end example
1136
1137 Ainsi@tie{}:
1138 @lilypond[quote,verbatim,relative=2]
1139 R1*2
1140 \set Score.skipBars = ##t
1141 R1*2
1142 @end lilypond
1143
1144 Cette commande permet de condenser les mesures vides de notes, en des
1145 silences multimesures.  Il s'agit d'un objet Scheme, auquel on attribue
1146 la valeur booléenne @qq{vrai}, c'est-à-dire la lettre @code{#t} pour
1147 @qq{True} en anglais.
1148
1149 Ce changement étant appliqué @qq{à la volée}, il n'affecte que le second
1150 groupe de notes.
1151
1152 Si l'argument @var{contexte} n'est pas spécifié, alors la propriété
1153 cherchera à s'appliquer dans le contexte le plus restreint où elle est
1154 employée@tie{}: le plus souvent  @code{ChordNames}, @code{Voice}, ou
1155 @code{Lyrics}.  Dans l'exemple suivant,
1156
1157 @lilypond[quote,verbatim,relative=2]
1158 c8 c c c
1159 \set autoBeaming = ##f
1160 c8 c c c
1161 @end lilypond
1162
1163 @noindent
1164 aucun argument @var{contexte} n'a été donné à la commande @code{\set}.
1165 De ce fait, les ligatures automatiques sont désactivées dans le contexte
1166 actuel, c'est-à-dire @rinternals{Voice}.  Notez que le contexte le plus
1167 restreint n'est pas toujours le bon, et peut ne pas contenir la
1168 propriété qui vous intéresse@tie{}: ainsi, la propriété @code{skipBars},
1169 évoquée plus haut, ne relève pas du contexte @code{Voice}, et le code
1170 suivant ne fonctionnera pas.
1171
1172 @lilypond[quote,verbatim,relative=2]
1173 R1*2
1174 \set skipBars = ##t
1175 R1*2
1176 @end lilypond
1177
1178 Les contextes s'organisent de façon hiérarchique@tie{}: aussi, lorsqu'un
1179 contexte de niveau supérieur est spécifié (par exemple @code{Staff}), la
1180 propriété sera modifée dans tous les contextes inférieurs (tous les
1181 contextes @code{Voice}, par exemple) qu'il contient.
1182
1183 @funindex \unset
1184
1185 La commande @code{\unset} permet d'annuler la définition d'une
1186 propriété@tie{}:
1187
1188 @example
1189 \unset @var{contexte}.@var{propriété}
1190 @end example
1191
1192 @noindent
1193 si et seulement si cette propriété à été définie dans ce @var{contexte}
1194 précis@tie{}; ainsi,
1195
1196 @example
1197 \set Staff.autoBeaming = ##f
1198 @end example
1199
1200 @noindent
1201 même s'il s'applique à tous les contextes @code{Voice} contenus dans le
1202 contexte @code{Staff}, ne peut être annulé au niveau @code{Voice}.  Le
1203 code suivant sera sans effet.
1204
1205 @example
1206 \unset Voice.autoBeaming
1207 @end example
1208
1209 @noindent
1210 En d'autres termes, la commande @code{\unset} doit impérativement être
1211 accompagnée du même contexte que la commande @code{\set} d'origine.
1212 Pour annuler l'effet, dans notre exemple, de
1213 @w{@code{Staff.autoBeaming@tie{}=@tie{}##f}}, il faut donc entrer@tie{}:
1214
1215 @example
1216 \unset Staff.autoBeaming
1217 @end example
1218
1219 Si l'on se trouve dans le contexte le plus restreint, il n'est pas
1220 obligatoire, là encore, de spécifier le @var{contexte}.  Ainsi, les deux
1221 lignes suivantes sont équivalentes.
1222
1223 @example
1224 \set Voice.autoBeaming = ##t
1225 \set autoBeaming = ##t
1226 @end example
1227
1228 @cindex \once
1229
1230 Pour modifier une propriété de façon à ce qu'elle ne s'applique qu'une
1231 seule fois, il convient d'employer la commande @code{\once}@tie{}:
1232
1233 @lilypond[quote,verbatim,relative=2]
1234 c4
1235 \once \set fontSize = #4.7
1236 c4
1237 c4
1238 @end lilypond
1239
1240 Ici le changement de taille est annulé aussitôt après la note concernée.
1241
1242 La référence du programme contient une description exhaustive de toutes
1243 les propriétés contexte par contexte@tie{}: voir
1244 @ifhtml
1245 @rinternals{Tunable context properties}.
1246 @end ifhtml
1247 @ifnothtml
1248 Translation @expansion{} Tunable context properties.
1249 @end ifnothtml
1250
1251
1252 @node La commande de dérogation (override)
1253 @subsection La commande @code{@bs{}override}
1254 @translationof The override command
1255
1256
1257 La commande @code{\override} permet de modifier la mise en page
1258 en détail.  Examinons son utilisation concrètementet dans les détails.
1259 La syntaxe de cette commande ressemble généralement à@tie{}:
1260
1261 @example
1262 \override @var{contexte}.@var{objet} #'@var{propriété} = #@var{valeur}
1263 @end example
1264
1265 La propriété @var{propriété} de l'objet @var{objet}, appartenant au
1266 contexte @var{contexte}, se voit ainsi attribuer la valeur @var{valeur}.
1267
1268
1269 @c deprecated node. Delete. --fv
1270 @c @n ode Élaboration d'une retouche
1271 @c @s ubsection Élaboration d'une retouche
1272 @c @t ranslationof Constructing a tweak
1273 @ignore
1274 Les commandes permettant de modifier l'apparence de la partition
1275 ressemblent en général à
1276
1277 @example
1278 \override Voice.Stem #'thickness = #3.0
1279 @end example
1280
1281 @noindent
1282 Pour élaborer un réglage de ce type, on a besoin de connaître
1283 précisément@tie{}:
1284
1285 @itemize
1286 @item le contexte@tie{}: ici @code{Voice} (la voix).
1287 @item l'objet à affecter@tie{}: ici @code{Stem} (les hampes).
1288 @item la propriété à modifier@tie{}: ici @code{thickness} (l'épaisseur
1289 du trait).
1290 @item la valeur désirée@tie{}: ici @code{3.0} (par défaut, elle est de
1291 1.3).
1292 @end itemize
1293
1294 Certaines @q{sous-propriétés} sont parfois contenues dans une propriété.
1295 La commande devient alors@tie{}:
1296
1297 @example
1298 \override Stem #'(details beamed-lengths) = #'(4 4 3)
1299 @end example
1300
1301 @cindex documentation exhaustive
1302 @cindex trouver des objets graphiques
1303 @cindex objets graphiques, description
1304 @cindex régler
1305 @funindex \override
1306
1307 Pour bien des propriétés, quel que soit le type de valeur requise,
1308 attribuer la valeur @q{faux} (@code{##f} en Scheme) reviendra à
1309 désactiver complètement l'action de la propriété qui se trouve ainsi
1310 purement ignorée par LilyPond.  Cela peut s'avérer fort utile pour des
1311 propriétés causant des désagréments.
1312
1313 @end ignore
1314
1315
1316 @node La commande d'affinage (tweak)
1317 @subsection La commande @code{@bs{}tweak}
1318 @translationof The tweak command
1319
1320
1321 @funindex \tweak
1322
1323 Dans certains cas, on peut passer par un raccourci pour arranger les
1324 objets graphiques.  Lorsqu'un objet est directement engendré par un
1325 élément distinct du fichier source, on peut utiliser la commande
1326 @code{\tweak}.
1327
1328 Dans l'accord suivant, les notes sont modifiées une par une@tie{}:
1329
1330 @lilypond[relative=2,verbatim,ragged-right]
1331 <
1332   c
1333   \tweak #'color #red d
1334   g
1335   \tweak #'duration-log #1  a
1336 >4-\tweak #'padding #10 -.
1337 @end lilypond
1338
1339 Comme on peut le voir, les propriétés sont ici modifiées directement
1340 en même temps que les objets sont saisis.  Il n'est plus besoin de
1341 spécifier ni le nom de l'objet (@emph{grob}), ni le contexte dans lequel
1342 cela doit s'appliquer.  Ce procédé ne marche que pour des objets
1343 directement liés aux évènements (@rinternals{Event}) du fichier source.
1344 Par exemple@tie{}:
1345
1346 @itemize @bullet
1347 @item Les têtes de notes au sein d'un accord, qui sont directement
1348 engendrées par les hauteurs indiquées
1349
1350 @item Les signes d'articulation, engendrés par les indications de
1351 ponctuation.
1352 @end itemize
1353
1354 En revanche, les hampes ou les altérations sont engendrées par les têtes
1355 de notes, et non par des évènements dans le fichier source.  De même
1356 pour les clés, qui ne sont pas directement engendrées par le fichier
1357 source, mais plutôt par le changement d'une propriété interne.
1358
1359 En fait, très peu d'objets passent @emph{directement} du code source à
1360 la partition. Une note toute simple, par exemple @code{c4}, fait l'objet
1361 d'un traitement et n'est donc pas directement rendue@tie{}; c'est
1362 pourquoi le code suivant ne sera d'aucun effet@tie{}:
1363
1364 @example
1365 \tweak #'color #red c4
1366 @end example
1367
1368 @noindent
1369 Voir pour plus de détails
1370 @rextendnamed{Displaying music expressions,Affichage d'expressions musicales}.
1371
1372
1373 @node set ou override
1374 @subsection @code{\set} ou @code{\override}
1375 @translationof set versus override
1376
1377
1378 Si les propriétés peuvent être modifiées de deux façons, par les
1379 commandes @code{\set} et @code{\override}, c'est qu'il y a deux types de
1380 propriétés.
1381
1382 Les contextes peuvent avoir des propriétés, dont les noms commencent par
1383 une minuscule puis comprennent une ou plusieurs majuscules (de style
1384 @code{totoTutu}).  Elles ont surtout trait à la notation des éléments
1385 musicaux@tie{}: par exemple, @code{localKeySignature} permet de choisir
1386 s'il faut ou non imprimer une altération, ou @code{measurePosition}
1387 permet de choisir quand il faut imprimer une barre de mesure.  Ces
1388 propriétés de contextes sont appelées à changer au long de
1389 l'interprétation de la partition@tie{}: @code{measurePosition} en est un
1390 exemple évident.  Ces propriétés doivent être modifiées avec la commande
1391 @code{\set}.
1392
1393 Il existe un type particulier de propriété@tie{}@tie{}: les descriptions
1394 d'éléments.  Ces propriétés, dont les noms commencent par une majuscule,
1395 puis comprennent une ou plusieurs majuscules (de style @code{TotoTata}),
1396 contiennent les réglages @qq{par défaut} pour les objets graphiques.
1397 Ces réglages sont sous forme de liste Scheme@tie{}; on peut les
1398 consulter dans le fichier @file{scm/define-grobs.scm}.
1399
1400 Les descriptions d'éléments doivent être modifiées avec la commande
1401 @code{\override}.
1402
1403 @code{\override} est en fait un raccourci@tie{}:
1404
1405 @example
1406 \override @var{contexte}.@var{objet} #'@var{propriété} = #@var{valeur}
1407 @end example
1408
1409 @noindent
1410 est plus ou moins l'équivalent de
1411
1412 @c  leave this long line -gp
1413 @example
1414 \set @var{contexte}.@var{objet} #'@var{propriété} = #(cons (cons '@var{propriété} @var{valeur}) <valeur précédente de @var{contexte})
1415 @end example
1416
1417 La valeur de @code{context} (la liste Scheme, ou @emph{alist}) sert à
1418 initialiser les propriétés des objets un par un.  Les objets eux-même
1419 ont leurs propriétés, dont les noms, dans la tradition du langage
1420 Scheme, comprennent un trait d'union (@code{toto-titi}).  Ces propriétés
1421 internes changent constamment au cours de la mise en page@tie{}: en
1422 fait, la gravure d'une page n'est autre que le calcul de toutes ces
1423 propriétés, au moyen de fonctions de rappel.
1424
1425 La propriété @code{fontSize} est une exception@tie{}: c'est un
1426 raccourci, qui équivaudrait à saisir @w{@code{\override @dots{}
1427 #'font-size}} pour tous les objets textuels.  Dans la mesure où il
1428 s'agit d'une manipulation très courante, une propriété spéciale a été
1429 créée.  Elle doit être modifiée avec la commande @code{\set}.
1430
1431
1432 @node Modification de listes associatives
1433 @subsection Modification de listes associatives
1434 @translationof Modifying alists
1435
1436 @untranslated
1437
1438
1439 @node Propriétés et contextes utiles
1440 @section Propriétés et contextes utiles
1441 @translationof Useful concepts and properties
1442
1443
1444 @menu
1445 * Modes de saisie::
1446 * Direction et positionnement::
1447 * Ordre des contextes de mise en forme::
1448 * Distances et unités de mesure::
1449 * Propriétés des symboles de la portée::
1450 * Extenseurs et prolongateurs::
1451 * Visibilité des objets::
1452 * Styles de ligne::
1453 * Rotation des objets::
1454 @end menu
1455
1456 @node Modes de saisie
1457 @subsection Modes de saisie
1458 @translationof Input modes
1459
1460 @untranslated
1461
1462
1463 @node Direction et positionnement
1464 @subsection Direction et positionnement
1465 @translationof Direction and placement
1466
1467 @untranslated
1468
1469
1470 @node Ordre des contextes de mise en forme
1471 @subsection Ordre des contextes de mise en forme
1472 @translationof Context layout order
1473
1474 @untranslated
1475
1476
1477 @node Distances et unités de mesure
1478 @subsection Distances et unités de mesure
1479 @translationof Distances and measurements
1480
1481 @untranslated
1482
1483
1484 @node Propriétés des symboles de la portée
1485 @subsection Propriétés des symboles de la portée
1486 @translationof Staff symbol properties
1487
1488 @untranslated
1489
1490
1491 @node Extenseurs et prolongateurs
1492 @subsection Extenseurs et prolongateurs
1493 @translationof Spanners
1494
1495 @untranslated
1496
1497
1498 @unnumberedsubsubsec Utilisation de @code{spanner-interface}
1499 @unnumberedsubsubsec Utilisation de @code{line-spanner-interface}
1500 @node Visibilité des objets
1501 @subsection Visibilité des objets
1502 @translationof Visibility of objects
1503
1504 @untranslated
1505
1506
1507 @menu
1508 * Suppression des stencils::
1509 * Transparence des objets::
1510 * Blanchiment des objets::
1511 * Utilisation de break-visibility::
1512 * Considérations spécifiques::
1513 @end menu
1514
1515 @node Suppression des stencils
1516 @unnumberedsubsubsec Suppression des stencils
1517 @translationof Removing the stencil
1518
1519 @untranslated
1520
1521
1522 @node Transparence des objets
1523 @unnumberedsubsubsec Transparence des objets
1524 @translationof Making objects transparent
1525
1526 @untranslated
1527
1528
1529 @node Blanchiment des objets
1530 @unnumberedsubsubsec Blanchiment des objets
1531 @translationof Painting objects white
1532
1533 @untranslated
1534
1535
1536 @node Utilisation de break-visibility
1537 @unnumberedsubsubsec Utilisation de break-visibility
1538 @translationof Using break-visibility
1539
1540 @untranslated
1541
1542
1543 @node Considérations spécifiques
1544 @unnumberedsubsubsec Considérations spécifiques
1545 @translationof Special considerations
1546
1547 @untranslated
1548
1549
1550 @node Styles de ligne
1551 @subsection Styles de ligne
1552 @translationof Line styles
1553
1554 @untranslated
1555
1556
1557 @node Rotation des objets
1558 @subsection Rotation des objets
1559 @translationof Rotating objects
1560
1561 @untranslated
1562
1563
1564 @menu
1565 * Rotation des objets de mise en forme::
1566 * Rotation des étiquettes::
1567 @end menu
1568
1569 @node Rotation des objets de mise en forme
1570 @unnumberedsubsubsec Rotation des objets de mise en forme
1571 @translationof Rotating layout objects
1572
1573 @untranslated
1574
1575
1576 @node Rotation des étiquettes
1577 @unnumberedsubsubsec Rotation des étiquettes
1578 @translationof Rotating markup
1579
1580 @untranslated
1581
1582
1583 @node Retouches avancées
1584 @section Retouches avancées
1585 @translationof Advanced tweaks
1586
1587 @untranslated
1588
1589
1590 @menu
1591 * Alignement des objets::
1592 * Regroupement vertical d'objets graphiques::
1593 * Modification des stencils::
1594 * Modification de l'allure des éléments::
1595 @end menu
1596
1597 @node Alignement des objets
1598 @subsection Alignement des objets
1599 @translationof Aligning objects
1600
1601 @untranslated
1602
1603
1604 @menu
1605 * Détermination directe de @code{X-offset} et @code{Y-offset}::
1606 * Utilisation de @code{side-position-interface}::
1607 * Utilisation de @code{self-alignment-interface}::
1608 * Utilisation de @code{break-aligned-interface}::
1609 @end menu
1610
1611 @node Détermination directe de @code{X-offset} et @code{Y-offset}
1612 @unnumberedsubsubsec Détermination directe de @code{X-offset} et @code{Y-offset}
1613 @translationof Setting @code{X-offset} and @code{Y-offset} directly
1614
1615 @untranslated
1616
1617
1618 @node Utilisation de @code{side-position-interface}
1619 @unnumberedsubsubsec Utilisation de @code{side-position-interface}
1620 @translationof Using the @code{side-position-interface}
1621
1622 @untranslated
1623
1624
1625 @node Utilisation de @code{self-alignment-interface}
1626 @unnumberedsubsubsec Utilisation de @code{self-alignment-interface}
1627 @translationof Using the @code{self-alignment-interface}
1628
1629 @untranslated
1630
1631
1632 @c @u nnumberedsubsubsec Utilisation des procédures @code{aligned-on-parent}
1633
1634 @unnumberedsubsubsec Utilisation des procédures @code{centered-on-parent}
1635 @node Utilisation de @code{break-aligned-interface}
1636 @untranslated
1637
1638
1639 @unnumberedsubsubsec Utilisation de @code{break-aligned-interface}
1640 @translationof Using the @code{break-alignable-interface}
1641
1642 @untranslated
1643
1644
1645 @node Regroupement vertical d'objets graphiques
1646 @subsection Regroupement vertical d'objets graphiques
1647 @translationof Vertical grouping of grobs
1648
1649 Les objets @code{VerticalAlignment} et @code{VerticalAxisGroup}
1650 travaillent de concert.  Comme leurs noms anglais l'indiquent,
1651 @code{VerticalAxisGroup} regroupe différents objets tels que les portées
1652 (@code{Staff}), les paroles (@code{Lyrics}) et ainsi de suite@tie{};
1653 puis @code{VerticalAlignment} synchronise verticalement ces différents
1654 groupes.  En général, il n'y a qu'un seul @code{VerticalAlignment} pour
1655 l'ensemble de la partition, mais chaque contexte @code{Staff},
1656 @code{Lyrics}, etc. possède son propre @code{VerticalAxisGroup}.
1657
1658
1659 @node Modification des stencils
1660 @subsection Modification des stencils
1661 @translationof Modifying stencils
1662
1663 @untranslated
1664
1665
1666 @node Modification de l'allure des éléments
1667 @subsection Modification de l'allure des éléments
1668 @translationof Modifying shapes
1669
1670 @menu
1671 * Modification des liaisons::
1672 @end menu
1673
1674 @node Modification des liaisons
1675 @unnumberedsubsubsec Modification des liaisons
1676 @translationof Modifying ties and slurs
1677
1678 @untranslated
1679
1680
1681 @node Utilisation de fonctions musicales
1682 @section Utilisation de fonctions musicales
1683 @translationof Using music functions
1684
1685 @menu
1686 * Syntaxe d'une fonction de substitution::
1687 * Exemples de fonction de substitution::
1688 @end menu
1689
1690 @node Syntaxe d'une fonction de substitution
1691 @subsection Syntaxe d'une fonction de substitution
1692 @translationof Substitution function syntax
1693
1694 @untranslated
1695
1696
1697 @node Exemples de fonction de substitution
1698 @subsection Exemples de fonction de substitution
1699 @translationof Substitution function examples
1700
1701 @untranslated
1702
1703