]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/fr/user/tweaks.itely
Make relative-includes configurable with a -d option.
[lilypond.git] / Documentation / fr / user / tweaks.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
2 @c This file is part of lilypond.tely
3 @ignore
4         Translation of GIT committish: 90a367b11c50bd1fe242656715f807d1445225d7
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  See TRANSLATION for details.
8 @end ignore
9
10 @c \version "2.11.61"
11
12 @c Translators: Valentin Villenave, Nicolas Klutchnikoff, Damien Heurtebise
13 @c Translation checkers: Jean-Charles Malahieude, John Mandereau
14
15 @node Tweaking output
16 @chapter Tweaking output
17
18 Ce chapitre indique comment modifier le résultat obtenu.
19 LilyPond offre de nombreuses possibilités de réglages, permettant
20 théoriquement de modifier chaque élément de votre partition.
21
22 @menu
23 * Tweaking basics::             
24 * The Internals Reference manual::  
25 * Appearance of objects::       
26 * Placement of objects::        
27 * Collisions of objects::       
28 * Further tweaking::            
29 @end menu
30
31 @node Tweaking basics
32 @section Tweaking basics
33
34 @menu
35 * Introduction to tweaks::      
36 * Objects and interfaces::      
37 * Naming conventions of objects and properties::  
38 * Tweaking methods::            
39 @end menu
40
41 @node Introduction to tweaks
42 @subsection Introduction to tweaks
43
44 LilyPond regroupe sous le terme de @qq{retouches} (@emph{tweaks} en
45 anglais) les différents moyens dont dispose l'utilisateur pour 
46 intervenir sur l'interprétation du fichier d'entrée et pour modifier 
47 l'apparence du fichier de sortie.  Certaines retouches sont très 
48 simples à mettre en œuvre ; d'autres sont plus complexes.  Mais 
49 à elles toutes, elles permettent d'obtenir tout ce qu'on veut en matière
50 de musique imprimée.
51
52 Dans ce chapitre, nous traitons des concepts de base nécessaires
53 pour comprendre l'art de la retouche.  Puis nous présentons de 
54 nombreuses commandes déjà prêtes, qu'il suffit de recopier pour 
55 obtenir un résultat identique dans vos partitions ; nous en profitons
56 pour expliquer comment ces commandes ont été construites, si bien 
57 que vous pouvez apprendre par la même occasion à développer 
58 vos propres retouches.
59
60 Avant de vous lancer dans ce chapitre, il peut être utile de revoir la
61 section @ref{Contexts and engravers}, dans la mesure où les contextes,
62 graveurs et autres propriétés qui y sont décrits, sont indispensables 
63 pour comprendre et construire les retouches.
64
65 @node Objects and interfaces
66 @subsection Objects and interfaces
67
68 @cindex objet
69 @cindex grob
70 @cindex spanner
71 @cindex extenseur
72 @cindex interface
73 @cindex propriétés des objets
74 @cindex objet, propriétés
75 @cindex objet de rendu
76 @cindex rendu, objets de
77
78 Toute retouche implique que l'on modifie les opérations internes 
79 et les structures du programme LilyPond.  Nous allons donc, pour
80 commencer, présenter certains termes qui servent à décrire ces
81 opérations internes et ces structures.
82
83 Le terme d'@qq{Objet} est un terme générique qui fait référence à 
84 une multitude de structures internes mises en place par LilyPond 
85 durant la compilation d'un fichier d'entrée.  Ainsi, quand une 
86 commande du type @code{\new Staff} apparaît, un nouvel objet 
87 du type @code{Staff} est créé.  Cet objet @code{Staff} contient 
88 alors toutes les propriétés associées à cette portée, par exemple son
89 nom et son armure, ainsi que le détail des graveurs qui ont été 
90 désignés pour fonctionner dans ce contexte de portée.  
91 Certains objets peuvent contenir les propriétés de tous les autres 
92 contextes, comme les objets @code{Voice}, les objets @code{Score},
93 les objets @code{Lyrics} ; d'autres se rapportent à tous les éléments de
94 notation, comme les barres de mesure, les liaisons, les nuances, etc. 
95 Chaque objet dispose de son propre échantillon de valeurs pour le 
96 réglage des propriétés.
97
98 Certains types d'objet portent des noms spécifiques.  Les objets qui se 
99 rapportent à des éléments de notation sur le fichier de sortie, comme les 
100 notes, les hampes, les liaisons de phrasé ou de prolongation, les doigtés, 
101 les clefs, etc. sont appelés @qq{Objets de rendu} ; ils sont aussi connus 
102 sous le nom d'@qq{Objets graphiques} (en anglais : @emph{Graphical
103 objects} ou @emph{Grobs} pour faire court).  Ce sont bien des objets au
104 sens générique ci-dessus, et, en tant que tels, ils reçoivent des
105 propriétés qui leur sont associées, comme leur position, leur taille,
106 leur couleur, etc. 
107
108 Certains objets de rendu, comme les liaisons de phrasé, les soufflets 
109 de crescendo, les marques d'octaviation et beaucoup d'autres @emph{grobs}, 
110 ont pour particularité de ne pas se situer à un seul et unique endroit
111 -- ils ont un point de départ, un point d'arrivée, et éventuellement
112 d'autres propriétés relatives à leur forme.  Ces objets avec une forme
113 étendue sont appelés des bandeaux (@emph{Spanners} en anglais).
114
115 Il reste à expliquer ce que sont les @qq{interfaces}.  De nombreux objets, 
116 qui peuvent être très différents les uns des autres, ont pour point commun
117 de devoir être compilés simultanément.  Par exemple, tous les
118 @emph{grobs} ont une couleur, une taille, une position, etc., et toutes
119 ces propriétés sont compilées simultanément durant l'interprétation du
120 fichier d'entrée par LilyPond.  Pour alléger ces opérations internes,
121 ces actions et propriétés communes sont regroupées en un objet appelé
122 @code{grob-interface}.  Il existe beaucoup d'autres regroupements de
123 propriétés communes dans le genre de celui-ci, chacun portant un nom qui
124 se termine par @code{interface}.  En tout, on en compte plus d'une
125 centaine.  Nous verrons plus loin en quoi c'est intéressant et utile
126 pour l'utilisateur. 
127
128 Ainsi s'achève le tour des principaux termes relatifs aux objets et 
129 que nous serons amenés à utiliser dans ce chapitre. 
130
131 @node Naming conventions of objects and properties
132 @subsection Naming conventions of objects and properties
133
134 @cindex conventions de nommage des objets
135 @cindex conventions de nommage des propriétés
136 @cindex objets, conventions de nommage des
137 @cindex propriétés, conventions de nommage des
138
139 Nous avons eu un aperçu, dans @ref{Contexts and engravers}, de 
140 la façon de nommer les objets.  Voici maintenant une liste de 
141 référence des types d'objets et de propriétés les plus courants, 
142 avec leur convention de nommage et quelques exemples 
143 de cas concrets.  La lettre @code{A} représente n'importe quel 
144 caractère alphabétique majuscule, et les lettres @code{aaa} 
145 un nombre indéterminé de caractères alphabétiques minuscules.  
146 Les autres caractères sont à prendre comme ils se présentent.
147
148 @multitable @columnfractions .33 .33 .33
149 @headitem Type d'objet/propriété           
150         @tab Convention de désignation
151         @tab Exemples
152 @item Contextes
153         @tab Aaaa ou AaaaAaaaAaaa
154         @tab Staff, GrandStaff
155 @item Objets de rendu
156         @tab Aaaa ou AaaaAaaaAaaa
157         @tab Slur, NoteHead
158 @item Graveurs
159         @tab Aaaa_aaa_engraver
160         @tab Clef_engraver, Note_heads_engraver
161 @item Interfaces
162         @tab aaa-aaa-interface
163         @tab grob-interface, break-aligned-interface 
164 @item Propriétés de contexte
165         @tab aaa ou aaaAaaaAaaa
166         @tab alignAboveContext, skipBars
167 @item Propriétés d'objet de rendu
168         @tab aaa ou aaa-aaa-aaa
169         @tab direction, beam-thickness
170 @end multitable
171
172 Comme nous le verrons bientôt, les propriétés des différents 
173 types d'objets sont modifiées par des commandes différentes, si bien 
174 qu'il est bon de savoir reconnaître le type d'objet en fonction du nom
175 de ses propriétés. 
176
177 @node Tweaking methods
178 @subsection Tweaking methods
179
180 @cindex retouches, méthodologie
181 @cindex méthodes de retouche
182
183 @strong{La commande \override}
184
185 @cindex override, commande
186 @cindex override, syntaxe
187
188 @funindex \override
189 @funindex override
190
191 Dans @ref{Modifying context properties} et dans 
192 @ref{Adding and removing engravers}, nous avons déjà rencontré les
193 commandes @code{\set} et @code{\with}, qui servent à changer les
194 propriétés des @strong{contextes} et à supprimer ou ajouter des
195 @strong{graveurs}.  Voici maintenant d'autres commandes plus
196 importantes. 
197
198 La commande pour changer les propriétés des @strong{objets de rendu} 
199 est @code{\override}.  Du fait que cette commande modifie en profondeur 
200 les propriétés internes de LilyPond, sa syntaxe n'est pas aussi simple que 
201 pour les commandes vues précédemment.  Elle a besoin de savoir avec 
202 précision quelle est la propriété à modifier, pour quel objet et dans
203 quel  contexte, et quelle doit être sa nouvelle valeur.  Voyons de quoi
204 il retourne.
205
206 La syntaxe générale de cette commande est : 
207
208 @example
209 \override @var{Contexte}.@var{ObjetDeRendu} #'@var{propriété-rendu} = #@var{valeur}
210 @end example
211
212 @noindent
213 Elle attribue à la propriété appelée @var{propriété-rendu}, associée à
214 l'objet @var{ObjetDeRendu}, appartenant lui-même au contexte 
215 @var{Contexte}, une valeur @var{valeur}.
216
217 Le contexte @var{Contexte} peut être omis (c'est généralement 
218 le cas) quand il n'y a pas d'ambiguïté et qu'il s'agit d'un contexte 
219 de très bas niveau, comme @code{Voice}, @code{ChordNames} 
220 ou @code{Lyrics}.  Dans les exemples qui suivent, le contexte sera 
221 très souvent omis.  Nous verrons plus tard dans quelles
222 circonstances il doit impérativement être indiqué.
223
224 Les sections ci-dessous traitent largement des propriétés et de leurs 
225 valeurs mais, pour illustrer la mise en forme et l'utilisation de ces 
226 commandes, nous nous limiterons à n'employer que quelques propriétés et
227 valeurs simples, facilement compréhensibles.
228
229 Nous ne parlerons dans l'immédiat ni du @code{#'}, qui précède 
230 toujours la propriété, ni du @code{#}, qui précède toujours la 
231 valeur.  Ces deux éléments doivent obligatoirement être 
232 présents sous cette forme.  Voici la commande la plus fréquente 
233 pour faire des retouches, et pratiquement tout le reste de ce 
234 chapitre aura pour but montrer, à travers des exemples, comment 
235 l'utiliser.  L'exemple ci-dessous change la couleur des têtes de 
236 notes :
237
238 @cindex couleur,exemple de propriété
239 @cindex NoteHead, exemple de dérogation
240
241 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
242 c d
243 \override NoteHead #'color = #red
244 e f g
245 \override NoteHead #'color = #green
246 a b c
247 @end lilypond
248
249 @strong{La commande \revert}
250
251 @cindex revert, commande
252
253 @funindex \revert
254 @funindex revert
255
256 Une fois qu'elle a été modifiée, la propriété conserve sa nouvelle valeur 
257 jusqu'à ce qu'elle soit à nouveau modifiée ou qu'elle rencontre la 
258 commande @code{\revert}.  La commande @code{\revert} obéit à 
259 la syntaxe ci-dessous et ramène la valeur de la propriété à sa valeur 
260 d'origine.  Attention : dans le cas où plusieurs @code{\override} ont 
261 été employés, il ne s'agit pas de la valeur précédente mais bien de la 
262 valeur par défaut. 
263
264 @example
265 \revert @var{Contexte}.@var{ObjetDeRendu} #'@var{propriété-de-rendu}
266 @end example
267
268 Tout comme pour la commande @code{\override}, la mention du 
269 @var{Contexte} est souvent facultative.  Elle sera omise dans de 
270 nombreux exemples ci-dessous.  Voici un exemple qui ramène la 
271 couleur des deux dernières notes à leur valeur par défaut :
272
273 @cindex couleur,exemple de propriété
274 @cindex NoteHead, exemple de dérogation
275
276 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
277 c d
278 \override NoteHead #'color = #red
279 e f g
280 \override NoteHead #'color = #green
281 a
282 \revert NoteHead #'color
283 b c
284 @end lilypond
285
286 @strong{Le préfixe \once}
287
288 @funindex \once
289 @funindex once
290
291 Les commandes @code{\override} et @code{\set} peuvent supporter  
292 toutes les deux le préfixe @code{\once}.  Celui-ci a pour fonction de 
293 n'appliquer la commande @code{\override} ou @code{\set} qu'à
294 l'instant musical en cours, avant que la propriété ne reprenne 
295 sa valeur par défaut.  Toujours à partir du même exemple, il est
296 possible de ne changer la couleur que d'une seule note :
297
298 @cindex couleur,exemple de propriété
299 @cindex NoteHead, exemple de dérogation
300
301 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
302 c d
303 \once \override NoteHead #'color = #red
304 e f g
305 \once \override NoteHead #'color = #green
306 a b c
307 @end lilypond
308
309 @strong{La commande \overrideProperty}
310
311 @cindex overrideProperty, commande
312
313 @funindex \overrideProperty
314 @funindex overrideProperty
315
316 Il existe une autre forme de commande @code{\override}, 
317 @code{\overrideProperty}, qui est parfois utile.  Nous la mentionnons
318 ici par souci d'exhaustivité ; pour le détail, voir @ruser{Difficult tweaks}.
319
320 @c Maybe explain in a later iteration  -td
321
322 @strong{La commande \tweak}
323
324 @cindex tweak, commande
325
326 @funindex \tweak
327 @funindex tweak
328
329 La dernière commande disponible pour les retouches est 
330 @code{\tweak}.  Elle sert à changer les propriétés d'objets qui
331 surviennent simultanément dans la musique, comme par exemple les 
332 notes d'un accord.  La commande @code{\override} modifierait toutes
333 les notes de l'accord, tandis que @code{\tweak} ne modifie que 
334 l'élément suivant dans la chaîne de saisie.
335
336 Voici un exemple.  Supposons que nous voulions changer la taille de 
337 la tête de note du milieu (le mi) dans un accord de do majeur.  Voyons 
338 d'abord ce que donnerait @code{\once \override} :
339
340 @cindex font-size, exemple de propriété
341 @cindex NoteHead, exemple de dérogation
342
343 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
344 <c e g>4
345 \once \override NoteHead #'font-size = #-3
346 <c e g>
347 <c e g>
348 @end lilypond
349
350 Nous voyons que @code{\override} modifie @emph{toutes} les têtes 
351 de notes de l'accord, car toutes les notes de l'accord surviennent au 
352 même @emph{instant musical} et que la fonction de @code{\once} 
353 est de faire porter la modification sur tous les objets du type spécifié 
354 qui surviennent au même instant musical, comme le fait la commande 
355 @code{\override} elle-même. 
356
357 La commande @code{\tweak} opère différemment.  Elle agit 
358 sur l'élément immédiatement suivant dans la chaîne de saisie.  Elle ne
359 fonctionne toutefois que sur des objets créés directement à partir de 
360 la chaîne de saisie, c'est-à-dire essentiellement des têtes de notes et
361 des articulations ; des objets comme les hampes ou les 
362 altérations accidentelles sont créés ultérieurement et ne peuvent 
363 être retouchés de cette manière.  En outre, quand la retouche porte 
364 sur une tête de note, celle-ci @emph{doit} appartenir à un accord, 
365 c'est-à-dire être comprise à l'intérieur de chevrons gauche/droite.  Pour 
366 retoucher une note isolée, il faut donc placer la commande 
367 @code{\tweak} avec la note à l'intérieur des chevrons gauche/droite.
368
369 Pour reprendre notre exemple, la taille de la note du milieu d'un 
370 accord peut être modifiée de cette manière : 
371
372 @cindex font-size, exemple de propriété
373 @cindex @code{\tweak}, exemple
374
375 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
376 <c e g>4
377 <c \tweak #'font-size #-3 e g>4
378 @end lilypond
379
380 Vous noterez que la syntaxe de @code{\tweak} est différente de 
381 celle de la commande @code{\override}.  Ni le contexte, 
382 ni l'objet n'ont besoin d'être spécifiés ; au contraire, cela 
383 produirait une erreur si on le faisait.  Tous deux sont sous-entendus
384 par l'élément suivant dans la chaîne de saisie.  La syntaxe générale 
385 de la commande @code{\tweak} est donc, tout simplement :
386
387 @example
388 \tweak #'@var{propriété-de-rendu} = #@var{valeur}
389 @end example
390
391 La commande @code{\tweak} est aussi utilisée quand on veut, dans 
392 une série d'articulations, n'en modifier qu'une seule.  Ainsi :
393
394 @cindex couleur, exemple de propriété
395 @cindex @code{\tweak}, exemple
396
397 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
398 a ^Black
399         -\tweak #'color #red ^Red
400         -\tweak #'color #green _Green
401 @end lilypond
402
403 @noindent
404 Attention : la commande @code{\tweak} doit être précédée d'une 
405 marque d'articulation, comme si elle-même était une articulation.
406
407 @cindex nolets imbriqués
408 @cindex triolets imbriqués
409 @cindex crochet de nolet
410 @cindex nolet, crochet
411 @cindex triolet, crochet
412
413 @funindex TupletBracket
414
415 Quand plusieurs nolets sont imbriqués et commencent au même instant 
416 musical, c'est encore la commande @code{\tweak} qui est utilisée pour 
417 changer l'apparence de l'un d'entre eux.  Dans l'exemple suivant, le
418 long crochet de nolet et le premier des trois crochets courts commencent
419 au même instant musical ; une commande @code{\override} s'appliquerait 
420 donc à la fois aux deux.  En revanche, @code{\tweak} permet  
421 de les dissocier.  La première commande @code{\tweak} indique que 
422 le long crochet doit être placé au-dessus des notes, et la seconde 
423 indique que le coefficient de nolet doit être imprimé en rouge sur le 
424 premier crochet de triolet court. 
425
426 @cindex @code{\tweak}, exemple
427 @cindex direction, exemple de propriété
428 @cindex couleur, exemple de propriété
429
430 @lilypond[quote,ragged-right,verbatim,fragment,relative=2]
431 \tweak #'direction #up
432 \times 4/3 {
433         \tweak #'color #red
434         \times 2/3 { c8[ c8 c8] }
435         \times 2/3 { c8[ c8 c8] }
436         \times 2/3 { c8[ c8 c8] }
437 }
438 @end lilypond
439
440 Si les nolets imbriqués ne commencent pas au même moment, 
441 leur apparence peut alors être modifiée de la façon habituelle, 
442 avec la commande @code{\override} :
443
444 @cindex texte, exemple de propriété
445 @cindex tuplet-number, example de fonction
446 @cindex transparence, example de propriété
447 @cindex TupletNumber, exemple de dérogation
448
449 @c NOTE Tuplet brackets collide if notes are high on staff
450 @c See issue 509
451 @lilypond[quote,ragged-right,verbatim,fragment,relative=1]
452 \times 2/3 { c8[ c c]}
453 \once \override TupletNumber
454         #'text = #tuplet-number::calc-fraction-text
455 \times 2/3 {
456         c[ c]
457         c[ c]
458         \once \override TupletNumber #'transparent = ##t
459         \times 2/3 { c8[ c c] }
460 \times 2/3 { c8[ c c]}
461 }
462 @end lilypond
463
464 @seealso
465 Manuel de notation :
466 @ruser{The tweak command}.
467
468
469 @node The Internals Reference manual
470 @section The Internals Reference manual
471
472 @cindex Références internes
473
474 @menu
475 * Properties of layout objects::  
476 * Properties found in interfaces::  
477 * Types of properties::         
478 @end menu
479
480 @node Properties of layout objects
481 @subsection Properties of layout objects
482
483 @cindex propriétés des objets de rendu
484 @cindex propriétés des objets graphiques (grobs)
485 @cindex grobs, propriétés
486 @cindex objets de rendu, propriétés
487 @cindex Manuel des références internes
488
489 Imaginons que votre partition contienne une liaison trop fine à votre 
490 goût et que vous vouliez la rendre plus épaisse.  Comment vous y 
491 prendre ?  Vous êtes convaincu, avec tout ce qui a été dit sur la 
492 souplesse de LilyPond, qu'une telle retouche est réalisable et 
493 vous vous dites qu'elle fera sans doute intervenir la commande 
494 @code{\override}.  Mais existe-t-il une propriété lourde qui s'applique 
495 à une liaison et, dans l'affirmative, comment faire pour la modifier ? 
496 C'est là qu'intervient la Référence des propriétés internes. 
497 Elle contient toutes les informations dont vous avez besoin pour 
498 construire n'importe quelle commande @code{\override}.
499
500 Avant de nous plonger dans la Référence des propriétés 
501 internes, un mot d'avertissement.  Il s'agit d'un document de 
502 @strong{références}, de sorte qu'il ne contient pas ou peu 
503 d'explications : son but est de présenter les informations de 
504 façon précise et concise.  Cela peut paraître décourageant 
505 à première vue.  Pas d'inquiétude !  Les conseils et les explications 
506 fournis ici vous permettent de retrouver par vous-même les 
507 informations dans la Référence des propriétés internes.  Il 
508 suffit d'un peu de pratique. 
509
510 @cindex override, exemple
511 @cindex dérogation, exemple
512 @cindex Références internes, exemple d'utilisation
513 @cindex @code{\addlyrics} -- exemple
514
515 Prenons un exemple concret tiré d'un morceau de musique connu :
516
517 @lilypond[quote,verbatim,relative=2]
518 {
519   \time 6/8
520   {
521     r4 b8 b[( g]) g |
522     g[( e]) e d[( f]) a |
523     a g
524   }
525   \addlyrics {
526     The man who feels love's sweet e -- mo -- tion
527   }
528 }
529 @end lilypond
530
531 Admettons que nous voulions rendre les traits de liaison plus épais. 
532 Est-ce possible ?  Une liaison est assurément un objet de rendu, si bien 
533 que la question est @qq{Existe-t-il une propriété attachée aux liaisons 
534 et qui en contrôle l'épaisseur ? } Pour y répondre, nous consultons la 
535 Référence des propriétés internes (ou RPI pour faire court).
536
537 Vous trouverez sur le site de LilyPond @uref{http://lilypond.org} la
538 RPI correspondant à votre version du programme.  Allez sur la page 
539 Documentation et cliquez sur Référence des propriétés internes. 
540 Pour l'apprentissage, mieux vaut utiliser la version HTML standard, 
541 et non la @q{page unique en anglais} ou le PDF.  Durant la lecture 
542 des prochains paragraphes, il vous est conseillé de vous y reporter 
543 réellement afin que les explications prennent tout leur sens.
544
545 En dessous du bandeau d'en-tête figurent cinq liens.  Cliquez sur le lien 
546 vers le @emph{Backend}, où se trouvent les informations sur les 
547 objets de rendu.  En dessous du titre @strong{Backend}, choisissez 
548 alors le lien vers @emph{Tous les objets de rendu}.  La page qui s'ouvre 
549 énumère, dans l'ordre alphabétique, tous les objets utilisés dans votre 
550 version de LilyPond.  Cliquez sur Liaisons (@emph{Slurs} en anglais), 
551 et les propriétés des liaisons apparaîtront. 
552
553 Il existe un autre moyen de trouver cette page, à partir du Manuel de 
554 notation.  Une des pages qui traitent des liaisons contient un lien vers 
555 la Référence des propriétés internes, qui mène directement à cette 
556 page.  Mais lorsque vous connaissez le nom de l'objet à retoucher, le 
557 plus simple est de consulter la RPI. 
558
559 La page de la RPI sur les liaisons commence par préciser que les objets 
560 Liaison sont créés par le graveur Slur_engraver.  Vient ensuite la liste 
561 des réglages standard.  Attention : ceux-ci @strong{ne suivent pas} l'ordre 
562 alphabétique.  Il faut donc les parcourir en entier pour trouver la propriété 
563 susceptible de contrôler l'épaisseur des traits de liaison.
564
565 @example
566 @code{thickness} (number)
567      @code{1.2}
568      Épaisseur de ligne, généralement mesurée en @code{line-thickness}
569 @end example
570
571 Voilà qui semble approprié pour changer l'épaisseur (@emph{thickness} en
572 anglais).  On apprend que la valeur de @code{thickness} 
573 est un simple nombre (@emph{number}), qu'elle est par défaut 
574 à 1,2 et que l'unité de mesure est fixée par une autre propriété 
575 appelée @code{line-thickness}.
576
577 Comme il a été indiqué, on ne trouve que peu, voire pas du tout 
578 d'explications dans la RPI, mais nous en savons assez pour essayer 
579 de changer l'épaisseur de la liaison.  Comme nous l'avons vu, le 
580 nom de l'objet est @code{Slur}, le nom de la propriété à changer 
581 est @code{thickness} et la nouvelle valeur sera un nombre supérieur 
582 à 1.2 si l'on veut augmenter l'épaisseur du trait.
583
584 Pour construire la commande @code{\override}, il suffit donc de 
585 remplacer les valeurs que nous avons trouvées en guise de noms, en 
586 laissant de côté le contexte.  Commençons par une valeur très élevée
587 dans un premier temps, pour nous assurer que la commande fonctionne. 
588 Nous obtenons :
589
590 @example
591 \override Slur #'thickness = #5.0
592 @end example
593
594 N'oublions pas le @code{#'} qui doit précéder le nom de la propriété et 
595 le @code{#} qui doit précéder la nouvelle valeur.
596
597 La dernière question est : @qq{Où placer cette commande ?}  
598 Tant qu'on n'est pas sûr de soi, la meilleure réponse est @qq{À
599 l'intérieur de l'expression musicale, avant la première liaison et
600 proche d'elle.}  Essayons :
601
602 @cindex Slur, exemple de dérogation
603 @cindex thickness, exemple de propriété
604
605 @lilypond[quote,verbatim,relative=2]
606 {
607   \time 6/8
608   {
609     % Increase thickness of all following slurs from 1.2 to 5.0
610     \override Slur #'thickness = #5.0
611     r4 b8 b[( g]) g |
612     g[( e]) e d[( f]) a |
613     a g
614   }
615   \addlyrics {
616     The man who feels love's sweet e -- mo -- tion
617   }
618 }
619 @end lilypond 
620
621 @noindent
622 et nous constatons que le trait de liaison est beaucoup plus épais.
623
624 Telle est la façon normale de construire les commandes 
625 @code{\override}.  Comme nous aurons l'occasion de le voir 
626 par la suite, le problème est parfois plus complexe.  Dans 
627 l'immédiat, nous en savons assez pour construire nos propres 
628 commandes -- mais il faut encore s'exercer.  Les exemples 
629 suivants sont là dans cette intention.
630
631 @subheading Finding the context
632
633 @cindex contexte, détermination du
634 @cindex contexte, identification correcte du
635
636 Tout d'abord, de quoi avions-nous besoin pour préciser le 
637 contexte ?  À quoi devait-il ressembler ?  Gageons que les 
638 liaisons appartiennent au contexte Voix, dans la mesure où 
639 elles sont étroitement liées à une ligne mélodique, mais 
640 comment en être sûr ?  Pour répondre à cette question, 
641 revenons en haut de la page de la RPI consacrée aux liaisons ; 
642 il est écrit : @q{Les objets Liaison sont créés par le graveur 
643 Slur_engraver}.  Ainsi les liaisons seront créées dans n'importe 
644 quel contexte où se trouve le @code{Slur_engraver}.  Suivons 
645 le lien vers la page @code{Slur_engraver}.  Tout en bas, on 
646 lit que le @code{Slur_engraver} est un élément appartenant 
647 à cinq contextes Voix, dont le contexte de voix 
648 standard, @code{Voice}.  Notre hypothèse était donc juste. 
649 Et parce que @code{Voice} est un contexte de très bas 
650 niveau, qu'il est activé sans ambiguïté par le fait que l'on est 
651 en train de saisir des notes, on peut ici ne pas le mentionner.
652
653 @subheading Overriding once only
654
655 @cindex dérogation pour une seule fois
656 @cindex usage unique, dérogation à
657
658 @funindex \once
659 @funindex once
660
661 Dans le dernier exemple ci-dessus, @emph{toutes} les liaisons étaient plus 
662 épaisses.  Et si on veut épaissir uniquement la première liaison ?  On
663 recourt alors à la commande @code{\once}.  Placée juste avant la commande 
664 @code{\override}, elle lui indique de ne changer que la liaison commençant 
665 avec la note @strong{juste après}.  Si la note juste après n'ouvre pas une 
666 liaison, la commande sera sans aucun effet -- elle ne reste pas en mémoire 
667 jusqu'à la prochaine liaison, elle est purement et simplement ignorée.
668 Il faut donc que la commande introduite par @code{\once} soit insérée
669 comme suit : 
670
671
672 @cindex Slur, exemple de dérogation
673 @cindex thickness, exemple de propriété
674 @cindex Liaison, exemple de dérogation
675 @cindex Épaisseur, exemple de propriété
676
677 @lilypond[quote,verbatim,relative=2]
678 {
679   \time 6/8
680   {
681     r4 b8
682     % Increase thickness of immediately following slur only
683     \once \override Slur #'thickness = #5.0
684     b[( g]) g |
685     g[( e]) e d[( f]) a |
686     a g
687   }
688   \addlyrics {
689     The man who feels love's sweet e -- mo -- tion
690   }
691 }
692 @end lilypond 
693
694 @noindent
695 Alors seule la première liaison est rendue plus épaisse.
696
697 La commande @code{\once} peut aussi être utilisée devant la commande 
698 @code{\set}.
699  
700
701 @subheading Reverting
702
703 @cindex revert
704 @cindex retour
705 @cindex défaut, retour aux propriétés par
706
707 @funindex \revert
708 @funindex revert
709
710 Et si l'on voulait que les deux premières liaisons soient plus épaisses ? 
711 On pourrait bien sûr utiliser deux commandes, chacune précédée de 
712 @code{\once}, et placées juste avant la note par laquelle débute la 
713 liaison :
714
715
716 @cindex Slur, exemple de dérogation
717 @cindex thickness, exemple de propriété
718 @cindex Liaison, exemple de dérogation
719 @cindex Épaisseur, exemple de propriété
720
721 @lilypond[quote,verbatim,relative=2]
722 {
723   \time 6/8
724   {
725     r4 b8
726     % Increase thickness of immediately following slur only
727     \once \override Slur #'thickness = #5.0
728     b[( g]) g |
729     % Increase thickness of immediately following slur only
730     \once \override Slur #'thickness = #5.0
731     g[( e]) e d[( f]) a |
732     a g
733   }
734   \addlyrics {
735     The man who feels love's sweet e -- mo -- tion
736   }
737 }
738 @end lilypond 
739
740 @noindent
741 mais on peut aussi, au lieu de la commande @code{\once}, utiliser après 
742 la seconde liaison la commande @code{\revert}, qui ramène la propriété 
743 @code{thickness} à sa valeur par défaut .
744
745 @cindex Slur, exemple de dérogation
746 @cindex thickness, exemple de propriété
747 @cindex Liaison, exemple de dérogation
748 @cindex Épaisseur, exemple de propriété
749
750 @lilypond[quote,verbatim,relative=2]
751 {
752   \time 6/8
753   {
754     r4 b8
755     % Increase thickness of all following slurs from 1.2 to 5.0
756     \override Slur #'thickness = #5.0
757     b[( g]) g |
758     g[( e])
759     % Revert thickness of all following slurs to default of 1.2
760     \revert Slur #'thickness
761     e d[( f]) a |
762     a g
763   }
764   \addlyrics {
765   The man who feels love's sweet e -- mo -- tion
766   }
767 }
768 @end lilypond
769
770 @noindent
771 N'importe quelle propriété modifiée par @code{\override} peut ainsi 
772 être ramenée, grâce à la commande @code{\revert}, à sa valeur par 
773 défaut. 
774
775 Ici s'achève notre introduction à la RPI et aux retouches 
776 simples.  Vous trouverez d'autres exemples dans les prochaines 
777 sections de ce chapitre ; ils vous permettront, d'une part, 
778 d'apprendre à connaître un peu mieux la RPI et, d'autre part, de 
779 vous entraîner un peu plus à y chercher les informations.  Ces 
780 exemples seront progressivement accompagnés d'explications et 
781 introduiront des termes nouveaux.
782  
783 @node Properties found in interfaces
784 @subsection Properties found in interfaces
785
786 @cindex interface
787 @cindex interfaces, propriétés des
788 @cindex propriétés des interfaces
789
790 Supposons maintenant que nous voulions imprimer des paroles en italique.  
791 Quelle formulation de la commande @code{\override} allons-nous utiliser ? 
792 Nous consultons en premier lieu, comme précédemment, la page de la RPI 
793 qui contient la liste @q{Tous les objets de rendu}, et recherchons 
794 un objet qui contrôle les paroles.  Nous trouvons @code{LyricText}, qui 
795 semble approprié.  Nous cliquons dessus et nous voyons apparaître les 
796 différentes propriétés des paroles, parmi lesquelles @code{font-series} 
797 et @code{font-size}.  Mais aucune ne propose l'italique.  Car la mise 
798 en forme des caractères est une propriété commune à tous les objets 
799 d'écriture, si bien que, au lieu de figurer dans tous les objets de rendu, 
800 elle est regroupée avec d'autres propriétés semblables et placée dans une 
801 @strong{Interface}, la @code{font-interface}.
802
803 Il nous faut donc apprendre à trouver les propriétés des interfaces 
804 et découvrir les objets qui utilisent les propriétés de ces interfaces.
805
806 Retournons à la page de la RPI qui traite des paroles
807 (@emph{LyricText}).  En bas de la page est dressée sous forme de liens
808 la liste des interfaces qui concernent LyricText.  Cette liste comporte
809 plusieurs entrées, dont @code{font-interface}.  En cliquant dessus, nous
810 voyons apparaître les différentes propriétés associées à cette
811 interface, qui sont en même temps les propriétés de tous les objets qui
812 s'y rapportent, parmi lesquels  LyricText.
813
814 Nous avons alors sous les yeux tous les réglages de propriétés qui 
815 contrôlent les polices de caractères, et notamment 
816 @code{font-shape(symbole)}, où @code{symbole} peut prendre la valeur 
817 @code{upright}, @code{italics} ou @code{caps}.
818
819 Vous remarquerez que @code{font-series} et @code{font-size} figurent 
820 aussi dans la liste.  La question qui ne manque pas de se poser est : 
821 @qq{Comment se fait-il que les propriétés @code{font-series} et 
822 @code{font-size} se retrouvent à la fois dans @code{LyricText} et dans 
823 l'interface @code{font-interface} alors que ce n'est pas le cas pour 
824 @code{font-shape} ?}  La réponse est que lorsqu'un objet @code{LyricText} 
825 est créé, les valeurs globales par défaut de @code{font-series} et 
826 @code{font-size} sont modifiées, mais pas celles de @code{font-shape}. 
827 Les possibilités de modification dans @code{LyricText} ne concernent 
828 donc que les valeurs à appliquer à @code{LyricText}.  Les autres objets qui 
829 dépendent de @code{font-interface} fixeront leurs propriétés différemment 
830 lorsqu'ils seront créés.
831
832 Voyons maintenant si nous sommes en mesure de formuler la commande 
833 @code{\override} pour mettre les paroles en italique.  L'objet est 
834 @code{LyricText}, la propriété est @code{font-shape} et la valeur est 
835 @code{italic}.  Comme auparavant, nous laissons de côté le contexte. 
836
837 Signalons rapidement -- même si cette remarque est importante -- que,
838 puisque les valeurs de @code{font-shape} se présentent sous forme de
839 symboles, elles doivent être précédées d'une simple apostrophe,
840 @code{'}.  C'est pour cette raison qu'il fallait une apostrophe devant
841 @code{thickness} dans l'exemple précédent, et qu'il en faut une devant
842 @code{font-shape}. Ce sont à chaque fois des symboles, qui sont
843 interprétés comme tels par LilyPond.  Certains symboles peuvent être des
844 noms de propriété, comme @code{thickness} ou @code{font-shape},
845 d'autres sont des valeurs à attribuer aux propriétés, comme
846 @code{italic}. À ne pas confondre avec les chaînes de caractères libres,
847 qui se présentent comme @code{"un texte libre"} ; pour plus de détails
848 sur les symboles et les chaînes de caractères, voir @ref{Scheme
849 tutorial}. 
850
851 Ainsi, la commande @code{\override} pour mettre les paroles en italique 
852 est : 
853
854 @example
855 \override LyricText #'font-shape = #'italic
856 @end example
857
858 @noindent
859 et elle doit être placée juste devant et tout près des paroles à modifier, 
860 comme ceci :
861
862 @cindex font-shape, exemple de propriété
863 @cindex italic, exemple
864 @cindex LyricText, exemple de dérogation
865 @cindex @code{\addlyrics}, exemple
866
867 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
868 {
869   \time 6/8
870   {
871     r4 b8 b[( g]) g |
872     g[( e]) e d[( f]) a |
873     a g
874   }
875   \addlyrics {
876     \override LyricText #'font-shape = #'italic
877     The man who feels love's sweet e -- mo -- tion
878   }
879 }
880 @end lilypond
881
882 @noindent
883 et voilà les paroles en italiques.
884
885 @subheading Specifying the context in lyric mode
886
887 @cindex contexte, spécification en mode lyrique
888 @cindex mode lyrique, spécification de contexte en
889
890 Lorsqu'il s'agit de paroles et qu'on cherche à préciser le contexte 
891 sur le modèle de ce qui a été fait précédemment, la commande échoue. 
892 Car une syllabe saisie en mode Paroles (lyricmode) se termine 
893 obligatoirement par une espace, un saut de ligne ou un nombre. Tout 
894 autre caractère compte comme un élément de la syllabe. C'est pourquoi 
895 il faut une espace ou un saut de ligne avant le @code{@}} final, pour 
896 éviter qu'il ne soit assimilé à la dernière syllabe. De même, il faut insérer 
897 des espaces avant et après le point, @q{.}, qui sépare le nom de 
898 contexte du nom de l'objet, faute de quoi les deux noms seront joints et 
899 l'interpréteur ne pourra pas les reconnaître. La formulation correcte est 
900 donc : 
901
902 @example
903 \override Lyrics . LyricText #'font-shape = #'italic
904 @end example
905
906 @warning{Dans la saisie des paroles, pensez à toujours laisser une
907 espace entre la dernière syllabe et l'accolade fermante.}
908
909 @warning{Lorsqu'on retouche des paroles, toujours placer des espaces 
910 autour du point qui sépare le nom de contexte du nom d'objet.}
911
912 @seealso
913 Manuel d'initiation : @ref{Scheme tutorial}.
914
915
916 @node Types of properties
917 @subsection Types of properties
918
919
920 @cindex propriété, types de
921
922 Nous avons vu jusqu'à maintenant deux types de propriétés :
923 @code{nombre} et @code{symbol}.  Pour pouvoir fonctionner, la valeur
924 associée à une propriété doit correspondre au type attendu et suivre les
925 règles liées à ce type.  Le type de propriété est toujours donné entre
926 parenthèses après le nom de propriété dans la RPI.  Voici une liste des
927 différents types de propriétés, avec les règles qui les régissent et
928 quelques exemples d'utilisation.  Il faut, bien sûr, toujours ajouter un
929 symbole hash, @code{#}, devant ces valeurs lors de la saisie de la
930 commande @code{\override}. 
931
932 @multitable @columnfractions .2 .45 .35
933 @headitem Type de propriété 
934   @tab Règles
935   @tab Exemples
936 @item Booléenne (anglais @emph{Boolean})
937   @tab Vrai (@emph{true} en anglais) ou Faux (@emph{false} en anglais),
938 sous la forme #t  ou #f
939   @tab @code{#t}, @code{#f}
940 @item Dimension (en lignes de portée)
941   @tab Un nombre positif décimal (en unités de lignes de portée)
942   @tab @code{2.5}, @code{0.34}
943 @item Direction
944   @tab Une direction valide ou son équivalent numérique (valeur décimale
945 comprise entre -1 et 1 seulement)
946   @tab @code{LEFT}, @code{CENTER}, @code{UP}, @code{1}, @code{-1}
947 @item Durée (@emph{Moment} en anglais)
948   @tab Une durée de note construite avec la fonction make-moment
949   @tab @code{(ly:make-moment 1 4)}, @code{(ly:make-moment 3 8)}
950 @item Entier (@emph{Integer} en anglais)
951   @tab Un nombre entier positif
952   @tab @code{3}, @code{1}
953 @item Inconnu (@emph{Unknown} en anglais)
954   @tab Un processus, ou @code{#f} pour empêcher toute action 
955   @tab @code{bend::print}, @code{ly:text-interface::print}, @code{#f}
956 @item Liste
957   @tab Plusieurs valeurs séparées par une espace, encadrées par des
958 parenthèses et prédédées par une apostrophe 
959   @tab @code{'(left-edge staff-bar)}, @code{'(1)}, @code{'(1.0 0.25 0.5)}
960 @item Markup (ou étiquette)
961   @tab Toute commande @code{\markup} valide
962   @tab @code{\markup @{ \italic "cresc." @}}
963 @item Nombre
964   @tab Une valeur décimale positive ou négative
965   @tab @code{3.5}, @code{-2.45}
966 @item Paire (de nombres)
967   @tab Deux nombres séparées par @q{espace . espace}, encadrés 
968 par des parenthèses et précédés par une apostrophe
969   @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
970 @item Symbole
971   @tab L'un des symboles autorisés pour cette propriété, précédé par une
972 apostrophe
973   @tab @code{'italic}, @code{'inside}
974 @item Vecteur
975   @tab Une liste de trois éléments encadrés par des parenthèses et
976 précédés par apostrophe-hash, @code{'#}
977   @tab @code{'#(#t #t #f)}
978 @end multitable
979
980 @seealso
981 Manuel d'initiation : @ref{Scheme tutorial}.
982
983
984 @node Appearance of objects
985 @section Appearance of objects
986
987 Il est temps de mettre en pratique les notions apprises précédemment
988 pour modifier l'allure de la partition ; les exemples qui suivent
989 montrent l'utilisation des différentes méthodes de retouche.  
990
991 @menu
992 * Visibility and color of objects::  
993 * Size of objects::             
994 * Length and thickness of objects::  
995 @end menu
996
997
998 @node Visibility and color of objects
999 @subsection Visibility and color of objects
1000
1001 Dans un but pédagogique, on peut être amené à masquer certains éléments
1002 d'une partition, que les élèves doivent ensuite compléter.  Imaginons,
1003 par exemple, un exercice dans lequel il faudrait rétablir les barres de
1004 mesure dans un morceau de musique. En temps normal, les barres de mesure
1005 s'insèrent automatiquement.  Comment faire pour les effacer de la
1006 partition ?  
1007
1008 Avant de nous y attaquer, souvenons-nous que les propriétés d'objets
1009 sont parfois groupées dans ce qu'on appelle des @emph{interfaces} --
1010 voir @ref{Properties found in interfaces}.  Cela permet de rapprocher
1011 toutes les propriétés susceptibles d'être utilisées ensemble pour
1012 modifier un objet graphique -- si l'une d'elles est choisie pour un
1013 objet, elle s'appliquera à tous les autres.  Certains objets tirent
1014 alors leurs propriétés de telle ou telle interface, d'autres objets de
1015 telle ou telle autre interface.  La liste des interfaces qui contiennent
1016 les propriétés liées à un objet graphique (@emph{grob}) figure dans la
1017 RPI, en bas de la page de description du @emph{grob} ; pour voir ces
1018 propriétés, il faut aller voir ces interfaces.  
1019
1020 Nous avons vu, dans @ref{Properties of layout objects}, comment trouver 
1021 les informations sur les @emph{grobs}.  Nous procédons de la même manière
1022 et consultons la RPI pour connaître l'objet chargé d'imprimer les barres
1023 de mesure.  En cliquant sur @emph{Backend} puis sur @emph{Tous les
1024 objets de rendu}, nous trouvons un objet appelé @code{BarLine}.  Parmi 
1025 ses propriétés, deux d'entre elles déterminent son aspect visuel : 
1026 @code{break-visibility} et @code{stencil}.  L'objet @code{BarLine} 
1027 est également lié à plusieurs interfaces, dont la @code{grob-interface} 
1028 où figurent les propriétés @code{transparent} et @code{color}.  Toutes
1029 peuvent modifier l'aspect visuel des barres de mesure -- et de beaucoup
1030 d'autres objets, bien sûr.  Examinons chacune d'elles tour à tour.
1031
1032 @subheading stencil
1033
1034 @cindex stencil, propriété
1035
1036 Cette propriété contrôle l'apparence des barres de mesure en précisant 
1037 le type de symbole (glyphe) à imprimer.  Comme pour de nombreuses 
1038 autres propriétés, on peut lui indiquer de ne rien imprimer en lui
1039 attribuant la valeur @code{#f}.  Essayons en laissant de côté, une fois
1040 encore, le contexte concerné (@code{Voice} en l'occurrence) : 
1041
1042 @cindex BarLine, exemple de dérogation
1043 @cindex stencil, exemple de propriété
1044
1045 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1046 {
1047   \time 12/16
1048   \override BarLine #'stencil = ##f
1049   c4 b8 c d16 c d8 |
1050   g, a16 b8 c d4 e16 |
1051   e8
1052 }
1053 @end lilypond
1054
1055 Les barres de mesure sont encore là !  Pourquoi ?  Retournons à la RPI
1056 et regardons de nouveau la page qui traite des propriétés de BarLine.
1057 En haut de la page, il est précisé que @qq{Les objets BarLine sont créés
1058 par le graveur Bar_engraver}.  Allons à la page de @code{Bar_engraver}. 
1059 Tout en bas se trouve la liste des contextes dans lesquels fonctionne ce 
1060 graveur.  Tous sont du type @code{Staff}, de sorte que, si la commande 
1061 @code{\override} n'a pas fonctionné comme prévu, c'est parce que 
1062 @code{Barline} n'appartient pas au contexte par défaut, @code{Voice}. 
1063 Si le contexte spécifié est erroné, la commande ne fonctionne pas.  Cela 
1064 n'entraîne pas de message d'erreur, et rien n'apparaît sur le fichier log. 
1065 Essayons de corriger en mentionnant le bon contexte : 
1066
1067 @cindex BarLine, exemple de dérogation
1068 @cindex stencil, exemple de propriété
1069
1070 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1071 {
1072   \time 12/16
1073   \override Staff.BarLine #'stencil = ##f
1074   c4 b8 c d16 c d8 |
1075   g, a16 b8 c d4 e16 |
1076   e8
1077 }
1078 @end lilypond
1079
1080 Cette fois, les barres de mesure ont disparu.
1081
1082 @subheading break-visibility
1083
1084 @cindex break-visibility, propriété
1085
1086 La RPI mentionne, à la page sur @code{BarLine}, que la propriété
1087 @code{break-visibility} attend comme argument un vecteur de trois
1088 boléens.  Ceux-ci indiquent respectivement si les barres de mesure
1089 doivent être imprimées ou non à la fin de la ligne, à l'intérieur de la
1090 ligne et au début de la ligne.  Dans notre cas, nous voulons que toutes
1091 les barres soient supprimées, si bien que la valeur dont nous avons
1092 besoin est @code{'#(#f@tie{}#f@tie{}#f)}. Essayons, sans oublier
1093 d'ajouter le contexte @code{Staff}.  Vous remarquerez que, en plus de
1094 cette valeur, nous ajoutons @code{#'#} devant la parenthèse ouvrante.
1095 Le @code{'#} est nécessaire car il fait partie intégrante de la valeur
1096 contenant un vecteur, et le premier @code{#} est là, comme toujours avec
1097 la commande @code{\override}, pour introduire la valeur elle-même. 
1098
1099 @cindex BarLine, example of overriding
1100 @cindex break-visibility property, example
1101
1102 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1103 {
1104   \time 12/16
1105   \override Staff.BarLine #'break-visibility = #'#(#f #f #f)
1106   c4 b8 c d16 c d8 |
1107   g, a16 b8 c d4 e16 |
1108   e8
1109 }
1110 @end lilypond
1111
1112 Comme on peut le constater, cette solution-là aussi supprime les barres 
1113 de mesure.
1114
1115 @subheading transparent
1116
1117 @cindex transparent, propriété
1118 @cindex transparence
1119
1120 La RPI mentionne, à la page sur @code{grob-interface}, que la propriété
1121 @code{transparent} attend comme argument un boléen.  Il faudrait donc
1122 mettre @code{#t} pour rendre l'objet transparent.  Dans cet exemple,
1123 essayons de rendre transparente la métrique (@emph{time signature} en
1124 anglais) plutôt que les barres de mesure.  Pour cela, il nous faut
1125 trouver le nom du @emph{grob} chargé de l'indication de mesure.  De
1126 retour sur la page @q{Tous les objets de rendu} de la RPI, nous
1127 cherchons les propriétés de l'objet @code{TimeSignature}.  Celui-ci est
1128 géré par le graveur @code{Time_signature_engraver} qui, comme vous
1129 pouvez le constater, appartient au contexte @code{Staff} et peut se
1130 rattacher à la @code{grob-interface}.  Dans ces conditions, la commande
1131 pour rendre la métrique transparente est : 
1132
1133 @cindex TimeSignature, exemple de dérogation
1134 @cindex transparent, exemple de propriété
1135
1136 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1137 {
1138   \time 12/16
1139   \override Staff.TimeSignature #'transparent = ##t
1140   c4 b8 c d16 c d8 |
1141   g, a16 b8 c d4 e16 |
1142   e8
1143 }
1144 @end lilypond
1145
1146 @noindent
1147 La métrique a bien disparu mais la commande a laissé un blanc en lieu et
1148 place du chiffrage.  Ce peut être souhaitable dans le cadre d'un
1149 exercice, afin que les élèves aient la place à compléter, mais dans
1150 d'autres circonstances, ce peut être gênant.  Pour y remédier,
1151 attribuons plutôt au stencil des métriques la valeur @code{#f} : 
1152
1153 @cindex TimeSignature, exemple de dérogation
1154 @cindex stencil, exemple de propriété
1155
1156 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1157 {
1158   \time 12/16
1159   \override Staff.TimeSignature #'stencil = ##f
1160   c4 b8 c d16 c d8 |
1161   g, a16 b8 c d4 e16 |
1162   e8
1163 }
1164 @end lilypond
1165
1166 @noindent
1167 La différence est flagrante : le fait d'attribuer au stencil la valeur
1168 @code{#f} supprime totalement l'objet, tandis que le fait de le rendre
1169 @code{transparent} le laisse en place, mais de façon invisible. 
1170
1171 @subheading color
1172
1173 @cindex color, propriété
1174
1175 Essayons enfin de rendre les barres de mesure invisibles en les colorant
1176 en blanc.  La difficulté est de savoir si les barres blanches vont
1177 couper ou non les lignes de la portée aux endroits où elles se
1178 croisent.  Vous verrez dans les exemples ci-dessous que cela peut se
1179 produire, sans qu'on le sache à l'avance.  Les explications de ce
1180 phénomène et les solutions pour y remédier sont exposées dans
1181 @ruser{Painting objects white}.  Pour le moment, acceptons cet
1182 inconvénient et concentrons-nous sur l'apprentissage de la gestion des
1183 couleurs. 
1184
1185 La @code{grob-interface} indique que la valeur de la propriété
1186 @code{color} est une liste, sans plus d'explication.  En fait, cette
1187 liste est une liste de valeurs en unités internes ; pour éviter d'avoir
1188 à chercher ce qu'il faut y mettre, il existe différents moyens
1189 d'indiquer la couleur.  Le premier moyen consiste à utiliser l'une des
1190 couleurs @emph{normales} de la première @ruser{List of colors}.  Pour
1191 mettre les barres de mesure en blanc, on écrit :  
1192
1193 @cindex BarLine, exemple de dérogation
1194 @cindex color, exemple de propriété
1195
1196 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1197 {
1198   \time 12/16
1199   \override Staff.BarLine #'color = #white
1200   c4 b8 c d16 c d8 |
1201   g, a16 b8 c d4 e16 |
1202   e8
1203 }
1204 @end lilypond
1205
1206 @noindent
1207 et nous constatons que les barres de mesure sont une fois de plus
1208 invisibles.  Attention : aucune apostrophe ne précède @code{white} -- il
1209 ne s'agit pas d'un symbole mais d'une @emph{fonction}.  Quand on
1210 l'invoque, elle fournit une liste de valeurs internes requises pour
1211 changer la couleur en blanc.  Les autres couleurs aussi, dans la
1212 @qq{liste normale}, sont des fonctions.  Pour en être certain, vous
1213 pouvez faire l'essai en choisissant une autre fonction de la liste en
1214 guise de couleur. 
1215
1216 @cindex couleur X11
1217 @cindex X11, couleurs
1218
1219 @funindex x11-color
1220
1221 Le deuxième moyen de changer la couleur consiste à utiliser la deuxième
1222 @ruser{List of colors}, dite noms de couleurs X11.  Ceux-ci doivent
1223 obligatoirement être précédés d'une autre fonction, qui convertit les
1224 noms de couleurs X11 en une liste de valeurs internes, @code{x11-color},
1225 comme ceci : 
1226
1227 @cindex BarLine, exemple de dérogation
1228 @cindex color, exemple de propriété
1229
1230 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1231 {
1232   \time 12/16
1233   \override Staff.BarLine #'color = #(x11-color 'white)
1234   c4 b8 c d16 c d8 |
1235   g, a16 b8 c d4 e16 |
1236   e8
1237 }
1238 @end lilypond
1239
1240 @noindent
1241 Vous noterez que, dans ce cas, la fonction @code{x11-color} admet un
1242 symbole comme argument ; il faut donc placer une apostrophe devant le
1243 symbole et insérer les deux à l'intérieur de parenthèses.  
1244
1245 @cindex rgb, couleur
1246 @cindex couleurs rgb
1247
1248 @funindex rgb-color
1249
1250 Il existe une troisième fonction, écrite pour convertir les valeurs RGB
1251 en couleurs internes -- la fonction @code{rgb-color}.  Elle comporte
1252 trois arguments, donnant respectivement l'intensité du rouge, du vert et
1253 du bleu.  Ces arguments prennent des valeurs comprises entre 0 et 1.
1254 Ainsi, pour choisir la couleur rouge, la valeur serait 
1255 @code{(rgb-color1 0 0)} ; pour le blanc, ce serait 
1256 @code{(rgb-color 1 1 1)} : 
1257
1258 @cindex BarLine, exemple de dérogation
1259 @cindex color, exemple de propriété
1260
1261 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1262 {
1263   \time 12/16
1264   \override Staff.BarLine #'color = #(rgb-color 1 1 1)
1265   c4 b8 c d16 c d8 |
1266   g, a16 b8 c d4 e16 |
1267   e8
1268 }
1269 @end lilypond
1270
1271 Enfin, il existe une échelle de gris parmi les possibilités de couleurs
1272 X11.  Elle va du noir, @code{'grey0}, au blanc, @code{'grey100}, avec
1273 un pas de 1.  Essayons de l'utiliser en attribuant à tous les objets de
1274 notre exemple différentes nuances de gris : 
1275
1276 @cindex StaffSymbol, exemple de dérogation
1277 @cindex TimeSignature, exemple de dérogation
1278 @cindex Clef, exemple de dérogation
1279 @cindex NoteHead, exemple de dérogation
1280 @cindex Stem, exemple de dérogation
1281 @cindex BarLine, exemple de dérogation
1282 @cindex color, exemple de propriété
1283 @cindex x11-color, exemple d'utilisation
1284
1285 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1286 {
1287   \time 12/16
1288   \override Staff.StaffSymbol   #'color = #(x11-color 'grey30)
1289   \override Staff.TimeSignature #'color = #(x11-color 'grey60)
1290   \override Staff.Clef          #'color = #(x11-color 'grey60)
1291   \override Voice.NoteHead      #'color = #(x11-color 'grey85)
1292   \override Voice.Stem          #'color = #(x11-color 'grey85)
1293   \override Staff.BarLine       #'color = #(x11-color 'grey10)
1294   c4 b8 c d16 c d8 |
1295   g, a16 b8 c d4 e16 |
1296   e8
1297 }
1298 @end lilypond
1299
1300 @noindent
1301 Vous remarquerez le contexte associé à chacun des objets.  Une erreur
1302 sur ce point empêcherait la commande de fonctionner.  Souvenez-vous que
1303 le contexte est celui dans lequel est placé le graveur approprié.  Pour
1304 chaque graveur, on peut trouver son contexte par défaut en partant de
1305 l'objet lui-même, puis en cherchant le graveur qui le produit ; la page
1306 du graveur dans la RPI nous indique alors le contexte dans lequel le
1307 graveur se trouve normalement. 
1308
1309
1310 @node Size of objects
1311 @subsection Size of objects
1312
1313 @cindex modification de la taille des objets
1314 @cindex taille d'objets
1315 @cindex objets, taille
1316 @cindex objets, modification de taille
1317
1318 Pour commencer, reprenons l'exemple qui se trouvait dans 
1319 @ref{Nesting music expressions}, qui montrait comment créer une nouvelle
1320 portée temporaire, du type  @rglos{ossia}. 
1321
1322 @cindex alignAboveContext, exemple de propriété
1323 @cindex @code{\with}, exemple
1324
1325 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1326 \new Staff ="main" {
1327        \relative g' {
1328          r4 g8 g c4 c8 d |
1329          e4 r8
1330          <<
1331            { f c c }
1332            \new Staff \with {
1333              alignAboveContext = "main" }
1334            { f8 f c }
1335          >>
1336          r4 |
1337   }
1338 }
1339 @end lilypond
1340
1341 Normalement, les ossia ne comportent ni clef ni indication de mesure, et
1342 elles sont imprimées légèrement plus petit que la portée principale.
1343 Nous avons déjà appris à enlever la clef et la métrique -- il suffit de
1344 régler le stencil de chacun sur @code{#f}, comme ceci : 
1345
1346 @cindex alignAboveContext, exemple de propriété
1347 @cindex @code{\with}, exemple
1348 @cindex stencil, exemple de propriété
1349 @cindex Clef, exemple de dérogation
1350 @cindex TimeSignature, exemple de dérogation
1351
1352 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1353 \new Staff ="main" {
1354   \relative g' {
1355     r4 g8 g c4 c8 d |
1356     e4 r8
1357     <<
1358       { f c c }
1359       \new Staff \with {
1360         alignAboveContext = "main"
1361       }
1362       {
1363         \override Staff.Clef #'stencil = ##f
1364         \override Staff.TimeSignature #'stencil = ##f
1365         { f8 f c }
1366       }
1367     >>
1368     r4 |
1369   }
1370 }
1371 @end lilypond
1372
1373 @noindent
1374 La paire d'accolades ajoutée après la clause @code{\with} est nécessaire
1375 pour être sûr que les retouches (@code{\override}) ainsi que la musique
1376 qui se trouvent à l'intérieur soient bien appliquées à la portée
1377 d'ossia. 
1378
1379 Mais alors, quelle différence y a-t-il à modifier le contexte de portée
1380 au moyen de @code{\with} ou à modifier les stencils de la clef et de la
1381 métrique  avec @code{\override} ?  La principale différence est que les
1382 changements opérés dans une clause @code{\with} sont réalisés au moment
1383 où le contexte est créé et restent par la suite les valeurs @strong{par
1384 défaut} aussi longtemps que ce contexte existe, tandis que les commandes
1385 @code{\set} ou @code{\override} insérées dans la musique sont dynamiques
1386 -- elles provoquent des changements synchronisés avec un point
1387 particulier de la musique.  Si les changements sont annulés ou
1388 désactivés par @code{\unset} ou@code{\revert}, les réglages reprennent
1389 les valeurs par défaut, c'est-à-dire celles qui ont été fixées dans la
1390 clause @code{\with}, ou, en l'absence de celle-ci, les valeurs par
1391 défaut normales. 
1392
1393 Certaines propriétés de contexte ne peuvent être modifiées que dans une
1394 clause @code{\with}.  Il s'agit des propriétés qu'on ne peut évidemment
1395 plus changer après que le contexte a été créé.  C'est le cas de 
1396 @code{alignAboveContext} et de son pendant, @code{alignBelowContext} 
1397 -- une fois que la portée a été créée, son alignement est décidé et cela
1398 n'aurait aucun sens de vouloir le modifier par la suite. 
1399
1400 Dans une clause @code{\with}, on peut aussi régler les valeurs par
1401 défaut des propriétés d'un objet.  Il suffit d'utiliser la commande 
1402 @code{\override} normale, sans s'occuper du nom de contexte 
1403 puisqu'il ne fait pas de doute qu'il s'agit du contexte en cours de 
1404 modification par la clause @code{\with}.  Il se produirait même une 
1405 erreur si le contexte était précisé.
1406
1407 Remplaçons donc l'exemple ci-dessus par celui-ci :
1408
1409 @cindex alignAboveContext, exemple de propriété
1410 @cindex @code{\with}, exemple
1411 @cindex Clef, exemple de dérogation
1412 @cindex TimeSignature, exemple dérogation
1413
1414 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1415 \new Staff ="main" {
1416   \relative g' {
1417     r4 g8 g c4 c8 d |
1418     e4 r8
1419     <<
1420       { f c c }
1421       \new Staff \with {
1422         alignAboveContext = "main"
1423         % Don't print clefs in this staff
1424         \override Clef #'stencil = ##f
1425         % Don't print time signatures in this staff
1426         \override TimeSignature #'stencil = ##f
1427       }
1428         { f8 f c }
1429     >>
1430     r4 |
1431   }
1432 }
1433 @end lilypond
1434
1435 Venons-en finalement au changement de taille des objets.
1436
1437 Certains objets sont créés comme des glyphes choisis dans une police de
1438 caractères.  C'est le cas des têtes de notes, des altérations, des
1439 @emph{markup}, des clefs, des métriques, des nuances et des paroles.
1440 Pour changer leur taille, on modifie la propriété @code{font-size},
1441 comme nous le verrons rapidement.  D'autres objets, comme les liaisons
1442 de phrasé ou de prolongation -- en général les objets étendus -- sont
1443 dessinés à la demande, si bien qu'aucune @code{font-size} ne leur est
1444 associée.  Ces objets tirent généralement leur dimension des objets
1445 auxquels ils sont rattachés, de sorte qu'on ne doit pas avoir à les
1446 redimensionner à la main.  D'autres propriétés, comme la hauteur des
1447 hampes et des barres de mesure, l'épaisseur des ligatures et d'autres
1448 lignes, et l'écartement des lignes de portée, doivent encore être
1449 modifiées de façon particulière. 
1450
1451 Si l'on revient à l'exemple d'ossia, commençons par changer la taille de
1452 police.  Nous pouvons employer deux méthodes.  Soit nous changeons la
1453 taille de police de chaque type d'objet avec des commandes comme 
1454 celle-ci pour les têtes de notes (@code{NoteHead}) :
1455
1456 @example
1457 \override NoteHead #'font-size = #-2
1458 @end example
1459
1460 soit nous changeons la taille de toutes les polices à la fois grâce à la 
1461 propriété @code{fontSize}, en utilisant @code{\set} ou en l'insérant 
1462 dans une clause @code{\with} (mais alors sans le @code{\set}).
1463
1464 @example
1465 \set fontSize = #-2
1466 @end example
1467
1468 Chacune de ces méthodes réduira la taille de police de deux points par 
1469 rapport à sa valeur précédente, sachant que chaque point réduit ou 
1470 augmente la taille d'environ 12 %.
1471
1472 Essayons sur l'exemple d'ossia :
1473
1474 @cindex alignAboveContext, exemple de propriété
1475 @cindex @code{\with}, exemple
1476 @cindex Clef, exemple de dérogation
1477 @cindex TimeSignature, exemple de dérogation
1478 @cindex fontSize, exemple de propriété
1479
1480 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1481 \new Staff ="main" {
1482   \relative g' {
1483     r4 g8 g c4 c8 d |
1484     e4 r8
1485     <<
1486       { f c c }
1487       \new Staff \with {
1488         alignAboveContext = "main"
1489         \override Clef #'stencil = ##f
1490         \override TimeSignature #'stencil = ##f
1491         % Reduce all font sizes by ~24%
1492         fontSize = #-2
1493       }
1494         { f8 f c }
1495     >>
1496     r4 |
1497   }
1498 }
1499 @end lilypond
1500
1501 Ce n'est pas encore parfait.  Les têtes de notes et les crochets sont
1502 plus petits mais, proportionnellement, les hampes sont trop longues et
1503 les lignes de portée trop espacées.  Il faut donc les réduire dans les
1504 mêmes proportions que les polices de caractères.  La prochaine
1505 sous-section montrera comment faire. 
1506
1507 @node Length and thickness of objects
1508 @subsection Length and thickness of objects
1509
1510 @cindex distance
1511 @cindex épaisseur
1512 @cindex longueur
1513 @cindex magstep
1514 @cindex taille, modification
1515 @cindex hampe, modification de longueur
1516 @cindex écartement des lignes, modification
1517
1518 Dans LilyPond, les écartements et longueurs sont généralement mesurés en
1519 @qq{intervalles de lignes} (@emph{staff-spaces} en anglais),
1520 c'est-à-dire l'écartement qui sépare deux lignes adjacentes dans la
1521 portée -- plus rarement, il est question de demi-intervalles de lignes.  
1522 Les propriétés d'épaisseur (@code{thickness}), quant à elles, sont
1523 généralement mesurées en unités d'une propriété interne appelée
1524 @qq{épaisseur de ligne} (@code{line-thickness}).  Par exemple, les
1525 lignes de crescendo/decrescendo présentent par défaut une épaisseur de 1
1526 unité de @code{line-thickness}, alors que l'épaisseur d'une hampe est de
1527 1,3.  Toutefois, certaines propriétés d'épaisseur sont différentes : par
1528 exemple, l'épaisseur des ligature se mesure en espaces de portée. 
1529
1530 Dans ces conditions, comment ajuster les longueurs à la taille des 
1531 polices de caractères ?  La solution consiste à utiliser une fonction 
1532 spéciale appelée @code{magstep} -- pseudo facteur de zoom --, créée
1533 précisément dans ce but.  Elle comporte un argument, le changement de
1534 taille de police (#-2 dans l'exemple précédent), à partir duquel elle
1535 applique un facteur de mise à l'échelle qui réduit, ou augmente, les
1536 objets en proportion.  Voici comment elle s'utilise : 
1537
1538 @cindex alignAboveContext, exemple de propriété
1539 @cindex @code{\with}, exemple
1540 @cindex Clef, exemple de dérogation
1541 @cindex TimeSignature, exemple de dérogation
1542 @cindex fontSize , exemple de propriété
1543 @cindex StaffSymbol, exemple de dérogation
1544 @cindex magstep, exemple d'utilisation de la fonction
1545 @cindex staff-space, exemple de propriété
1546 @cindex stencil, exemple de propriété
1547
1548 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1549 \new Staff ="main" {
1550   \relative g' {
1551     r4 g8 g c4 c8 d |
1552     e4 r8
1553     <<
1554       { f c c }
1555       \new Staff \with {
1556         alignAboveContext = "main"
1557         \override Clef #'stencil = ##f
1558         \override TimeSignature #'stencil = ##f
1559         fontSize = #-2
1560         % Reduce stem length and line spacing to match
1561         \override StaffSymbol #'staff-space = #(magstep -2)
1562       }
1563         { f8 f c }
1564     >>
1565     r4 |
1566   }
1567 }
1568 @end lilypond
1569
1570 @noindent
1571 Puisque la longueur des hampes et plusieurs autres propriétés de
1572 longueur sont calculées par rapport à la valeur de la propriété
1573 @code{staff-space}, elles sont automatiquement mises à l'échelle.  Vous 
1574 remarquerez que cela n'affecte que la dimension verticale de l'ossia --
1575 la dimension horizontale étant déterminée par les objets de la portée
1576 principale de façon à rester synchronisée vis-à-vis d'elle, elle n'est
1577 pas affectée par tous ces changements de taille.  Bien sûr, si l'échelle
1578 de toute la portée principale était modifiée, tout le placement
1579 horizontal s'en trouverait affecté.  Il en sera question plus bas dans
1580 cette section. 
1581
1582 Voilà qui complète la création d'une ossia. Les tailles et longueurs de tous 
1583 les objets peuvent être modifiées de manière analogue.
1584
1585 Pour de petits changements d'échelle, comme dans l'exemple ci-dessus, il
1586 n'est généralement pas utile d'ajuster l'épaisseur des différentes
1587 lignes telles que les barres de mesure, les ligatures, les soufflets de
1588 crescendo/decrescendo, les liaisons, etc.  Si l'épaisseur d'un objet en
1589 particulier doit être ajustée, le mieux est de modifier sa propriété
1590 @code{thickness}.  Nous avons vu plus haut, dans 
1591 @ref{Properties of layout objects}, un exemple de modification de
1592 l'épaisseur des liaisons.  L'épaisseur de tous les objets tracés
1593 (c'est-à-dire ceux qui ne proviennent pas d'une police de caractère)
1594 peut être changée de la même manière. 
1595
1596 @node Placement of objects
1597 @section Placement of objects
1598
1599  @menu
1600 * Automatic behavior::          
1601 * Within-staff objects::        
1602 * Outside staff objects::       
1603 @end menu
1604
1605 @node Automatic behavior
1606 @subsection Automatic behavior
1607
1608 @cindex within-staff objects
1609 @cindex outside-staff objects
1610 @cindex objects, within-staff
1611 @cindex objects, outside-staff
1612
1613 Dans la notation musicale, il y a des objets qui appartiennent à la 
1614 portée et d'autres qui sont placés à l'extérieur de la portée. On les 
1615 appelle respectivement les @q{objets de la portée} (@emph{within-staff
1616 objects} en anglais) et les @q{objets extérieurs à la portée}
1617 (@emph{outside-staff objects}en anglais). 
1618
1619 Les objets de la portée sont ceux qui sont placés sur la portée 
1620 -- les têtes de notes et les hampes, les altérations, etc.  Leur
1621 position est généralement déterminée par la musique elle-même -- ils
1622 sont placés verticalement sur des lignes spécifiques ou sont liés à
1623 d'autres objets placés de cette manière.  Normalement, les collisions
1624 entre les têtes et queues de notes et les altérations dans des accords
1625 proches sont évitées automatiquement.  Comme nous le verrons rapidement,
1626 il existe des commandes et des possibilités de retouches qui permettent
1627 de modifier ce comportement automatique. 
1628
1629 Parmi les objets extérieurs à la portée, on compte des éléments comme
1630 les marques de reprise, les indications de texte ou de nuances.  Dans
1631 LilyPond, la règle est de placer verticalement ces objets extérieurs à
1632 la portée le plus près possible de la portée, tout en évitant la
1633 collision avec d'autres objets.  LilyPond utilise la propriété
1634 @code{outside-staff-priority} pour déterminer l'ordre selon lequel
1635 placer ces objets, de la manière suivante : 
1636
1637 D'abord, LilyPond dresse la liste de tous les objets extérieurs à la
1638 portée.  Puis ceux-ci sont classés suivant leur
1639 @code{outside-staff-priority}.  Enfin, ils sont pris un par un, en 
1640 commençant par les objets avec la @code{outside-staff-priority} la plus
1641 basse, et placés de façon à ne pas entrer en collision avec d'autres
1642 objets déjà placés.  Cela signifie que, si deux @emph{grobs} extérieurs
1643 à la portée doivent occuper la même place, c'est celui qui a la
1644 @code{outside-staff-priority} la plus basse qui est placé le plus près
1645 de la portée.  Et si deux objets ont la même
1646 @code{outside-staff-priority}, le premier rencontré sera placé le plus
1647 près de la portée.  
1648
1649 Dans l'exemple suivant, tous les @emph{markup} ont la même priorité, 
1650 dans la mesure où rien n'est indiqué explicitement.  Vous remarquerez
1651 que @code{Text3} est également positionné près de la portée, juste
1652 en-dessous de @code{Text2}. 
1653
1654 @cindex markup, exemple
1655
1656 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1657 c2^"Text1"
1658 c^"Text2"
1659 c^"Text3"
1660 c^"Text4"
1661 @end lilypond
1662
1663 Les portées aussi sont positionnées, par défaut, le plus près possible 
1664 les unes des autres, en ménageant tout de même une certaine séparation.
1665 Si des notes se rapprochent nettement d'une portée adjacente, elles ne
1666 forceront les portées à s'écarter que s'il y a un risque de
1667 chevauchement.  
1668
1669 @lilypond[quote,ragged-right,verbatim]
1670 <<
1671   \new Staff {
1672     \relative c' { c a, }
1673   }
1674   \new Staff {
1675     \relative c'''' { c a, }
1676   }
1677 >>
1678 @end lilypond 
1679
1680
1681 @node Within-staff objects
1682 @subsection Within-staff objects
1683
1684 Nous avons vu que les commandes @code{\voiceXXX} jouent sur la 
1685 direction des liaisons, des doigtés et sur toute autre chose liée à 
1686 l'orientation des queues de notes. Ces commandes sont essentielles dans 
1687 la musique polyphonique pour distinguer des lignes mélodiques 
1688 entremêlées.  Mais il arrive qu'on ait besoin de modifier ce comportement 
1689 automatique.  On peut le faire pour toutes les parties de la musique ou 
1690 juste pour une note.  La propriété qui contrôle ce comportement est la 
1691 propriété @code{direction} de chaque objet.  Expliquons d'abord ce 
1692 qu'elle fait, puis nous présenterons un certain nombre de commandes 
1693 déjà prêtes qui évitent, pour les modifications les plus courantes, 
1694 d'avoir à encoder les retouches. 
1695
1696 Certains objets comme les traits des liaisons se recourbent tantôt 
1697 vers le haut, tantôt vers le bas ; d'autres encore, comme les hampes 
1698 et les crochets, peuvent se décaler vers la gauche ou vers la droite 
1699 selon qu'ils pointent vers le haut ou vers le bas.  Ce comportement est 
1700 géré automatiquement dès lors que @code{direction} est activé. 
1701
1702 @cindex down
1703 @cindex up
1704 @cindex center
1705 @cindex neutral
1706
1707 L'exemple ci-dessous montre dans la première mesure le comportement par 
1708 défaut des hampes -- celles des notes les plus hautes pointant vers le
1709 bas et celles des notes les plus basses pointant vers le haut ; viennent
1710 ensuite quatre notes avec les hampes forcées vers le bas, puis quatre
1711 autres avec les hampes forcées vers le haut, et pour finir quatre notes
1712 de nouveau avec le comportement par défaut. 
1713
1714 @cindex Stem, exemple de dérogation
1715 @cindex direction, exemple de propriété
1716
1717 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1718 a4 g c a
1719 \override Stem #'direction = #DOWN
1720 a g c a
1721 \override Stem #'direction = #UP
1722 a g c a
1723 \revert Stem #'direction
1724 a g c a
1725 @end lilypond
1726
1727 Nous utilisons ici les directions @code{DOWN} et @code{UP}.  Elles 
1728 correspondent respectivement aux valeurs @code{-1} et @code{+1}, 
1729 que l'on peut utiliser à la place.  La valeur @code{0} peut aussi être 
1730 utilisée dans certains cas.  Elle est interprétée comme un @code{UP} 
1731 pour les hampes, et comme un @q{centré} pour d'autres objets.  Il
1732 existe une direction, @code{CENTER}, qui correspond à la valeur
1733 @code{0}. 
1734
1735 Quoi qu'il en soit, ces retouches manuelles sont rarement utilisées car
1736 il existe des équivalents sous forme de commandes prédéfinies.  Voici un
1737 tableau des plus courantes.  Lorsque ce n'est pas évident, leur
1738 signification est précisée. 
1739
1740 @multitable @columnfractions .2 .2 .25 .35
1741 @headitem Bas/Gauche
1742   @tab Haut/Droite
1743   @tab Annulation
1744   @tab Effet
1745 @item @code{\arpeggioArrowDown}
1746   @tab @code{\arpeggioArrowUp}
1747   @tab @code{\arpeggioNormal}
1748   @tab Flèche en bas, en haut, ou pas de flèche
1749 @item @code{\dotsDown}
1750   @tab @code{\dotsUp}
1751   @tab @code{\dotsNeutral}
1752   @tab Déplacement des points pour éviter les lignes de portée
1753 @item @code{\dynamicDown}
1754   @tab @code{\dynamicUp}
1755   @tab @code{\dynamicNeutral}
1756   @tab
1757 @item @code{\phrasingSlurDown}
1758   @tab @code{\phrasingSlurUp}
1759   @tab @code{\phrasingSlurNeutral}
1760   @tab Attention : à distinguer des commandes de liaison ci-dessous
1761 @item @code{\slurDown}
1762   @tab @code{\slurUp}
1763   @tab @code{\slurNeutral}
1764   @tab
1765 @item @code{\stemDown}
1766   @tab @code{\stemUp}
1767   @tab @code{\stemNeutral}
1768   @tab
1769 @item @code{\textSpannerDown}
1770   @tab @code{\textSpannerUp}
1771   @tab @code{\textSpannerNeutral}
1772   @tab Le texte saisi en tant qu'extension est au-dessous/au-dessus de la portée
1773 @item @code{\tieDown}
1774   @tab @code{\tieUp}
1775   @tab @code{\tieNeutral}
1776   @tab
1777 @item @code{\tupletDown}
1778   @tab @code{\tupletUp}
1779   @tab @code{\tupletNeutral}
1780   @tab Les nolets sont au-dessous/au-dessus des notes
1781 @end multitable
1782
1783 Attention : ces commandes prédéfinies @strong{ne doivent pas} être
1784 précédées de @code{\once}.  Pour limiter l'effet à une seule note, il
1785 faut soit utiliser la commande équivalente @code{\once \override}, soit
1786 utiliser la commande prédéfinie, suivie, après la note à modifier, de la
1787 commande @code{\xxxNeutral} correspondante. 
1788
1789 @subheading Fingering
1790
1791 @cindex doigtés, positionnement
1792 @cindex doigtés, accords
1793
1794 Le placement des doigtés sur des notes simples peut aussi être contrôlé
1795 par la propriété @code{direction}, mais le changement de
1796 @code{direction} n'a pas d'effet sur les accords.  Comme nous le
1797 verrons, il existe des commandes qui permettent de contrôler le doigté
1798 sur chaque note d'un accord, en plaçant l'indication de doigté
1799 au-dessus, en dessous, à gauche ou à droite de chaque note. 
1800
1801 Tout d'abord, voici l'effet de @code{direction} sur le doigté lié à une
1802 note simple.  La première mesure montre le comportement par défaut, et
1803 les deux suivantes montrent l'effet lorsqu'on indique @code{DOWN} et
1804 @code{UP} : 
1805
1806 @cindex doigtés, exemple de dérogation
1807 @cindex direction, exemple de propriété
1808
1809 @lilypond[quote,verbatim,relative=2]
1810 c-5 a-3 f-1 c'-5
1811 \override Fingering #'direction = #DOWN
1812 c-5 a-3 f-1 c'-5
1813 \override Fingering #'direction = #UP
1814 c-5 a-3 f-1 c'-5
1815 @end lilypond
1816
1817 Le fait d'intervenir sur la propriété @code{direction} n'est sûrement
1818 pas la façon la plus simple de placer manuellement les doigtés au-dessus
1819 ou en dessous des notes ; mieux vaut utiliser @code{_} ou @code{^}
1820 devant le chiffre de doigté plutôt que @code{-}.  Voici ce que donne
1821 l'exemple précédent avec cette méthode : 
1822
1823 @cindex doigtés, exemple
1824
1825 @lilypond[quote,verbatim,relative=2]
1826 c-5 a-3 f-1 c'-5
1827 c_5 a_3 f_1 c'_5
1828 c^5 a^3 f^1 c'^5
1829 @end lilypond
1830
1831 La propriété @code{direction} ne fonctionne pas pour les accords alors
1832 que les préfixes de direction, @code{_} et @code{^}, fonctionnent.  Par
1833 défaut, le doigté est placé automatiquement à la fois au-dessus et
1834 au-dessous des notes d'un accord, comme ceci : 
1835
1836 @cindex doigtés, exemple
1837
1838 @lilypond[quote,verbatim,relative=2]
1839 <c-5 g-3>
1840 <c-5 g-3 e-2>
1841 <c-5 g-3 e-2 c-1>
1842 @end lilypond
1843
1844 @noindent
1845 mais il est possible de forcer manuellement vers le haut ou vers le bas le 
1846 placement de tous ou certains chiffres de doigté, comme ceci :
1847
1848 @cindex doigtés, exemple
1849
1850 @lilypond[quote,verbatim,relative=2]
1851 <c-5 g-3 e-2 c-1>
1852 <c^5 g_3 e_2 c_1>
1853 <c^5 g^3 e^2 c_1>
1854 @end lilypond
1855
1856 On peut aller encore plus loin dans le positionnement des doigtés pour
1857 chacune des notes d'un accord grâce à la commande @code{\set
1858 fingeringOrientations}.  La syntaxe de cette commande est :
1859
1860 @example
1861 @code{\set fingeringOrientations = #'([up] [left/right] [down])}
1862 @end example
1863
1864 @noindent
1865 On utilise @code{\set} car @code{fingeringOrientations} est une propriété 
1866 du contexte @code{Voice}, créée et utilisée par le graveur 
1867 @code{New_fingering_engraver}.
1868
1869 On peut attribuer à cette propriété une liste composée de une à trois 
1870 valeurs.  Celles-ci déterminent si l'indication de doigté doit être
1871 placée au-dessus (lorsque @code{up} apparaît dans la liste), au-dessous
1872 (lorsque @code{down} apparaît), à gauche (lorsque @code{left} apparaît)
1873 ou à droite (lorsque @code{right} apparaît).  En revanche, si une valeur
1874 n'est pas sur la liste, aucun doigté n'ira à cet emplacement.  LilyPond
1875 garde ces contraintes en mémoire et recherche le meilleur emplacement
1876 pour le doigté des notes des accords suivants.  Vous remarquerez que
1877 @code{left} et @code{right} s'excluent l'un l'autre -- l'indication de
1878 doigté ne peut être placée que d'un côté ou de l'autre, pas des deux. 
1879
1880 @warning{Ppour contrôler à l'aide de cette commande le placement du
1881 doigté sur une note simple, il faut la saisir comme un accord composé
1882 d'une note unique, en l'encadrant de chevrons.}
1883
1884 Voici quelques exemples : 
1885
1886 @cindex doigtés, exemple
1887 @cindex @code{\set}, exemple d'utilisation
1888 @cindex fingeringOrientations, exemple de propriété
1889
1890 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1891 \set fingeringOrientations = #'(left)
1892 <f-2>
1893 < c-1  e-2 g-3 b-5 > 4
1894 \set fingeringOrientations = #'(left)
1895 <f-2>
1896 < c-1  e-2 g-3 b-5 > 4
1897 \set fingeringOrientations = #'(up left down)
1898 <f-2>
1899 < c-1  e-2 g-3 b-5 > 4
1900 \set fingeringOrientations = #'(up left)
1901 <f-2>
1902 < c-1  e-2 g-3 b-5 > 4
1903 \set fingeringOrientations = #'(right)
1904 <f-2>
1905 < c-1  e-2 g-3 b-5 > 4
1906 @end lilypond
1907
1908 @noindent
1909 Si les indications de doigtés paraissent un peu serrées, on peut 
1910 toujours réduire la taille de police (@code{font-size}).  La valeur 
1911 par défaut donnée dans la RPI à la page de l'objet 
1912 @code{Fingering} étant @code{-5}, essayons @code{-7} :
1913
1914 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1915 \override Fingering #'font-size = #-7
1916 \set fingeringOrientations = #'(left)
1917 <f-2>
1918 < c-1  e-2 g-3 b-5 > 4
1919 \set fingeringOrientations = #'(left)
1920 <f-2>
1921 < c-1  e-2 g-3 b-5 > 4
1922 \set fingeringOrientations = #'(up left down)
1923 <f-2>
1924 < c-1  e-2 g-3 b-5 > 4
1925 \set fingeringOrientations = #'(up left)
1926 <f-2>
1927 < c-1  e-2 g-3 b-5 > 4
1928 \set fingeringOrientations = #'(right)
1929 <f-2>
1930 < c-1  e-2 g-3 b-5 > 4
1931 @end lilypond
1932
1933
1934 @node Outside staff objects
1935 @subsection Outside staff objects
1936
1937 Les objets extérieurs à la portée sont placés automatiquement de façon à
1938 éviter les collisions.  Les objets avec la plus petite valeur de la
1939 propriété @code{outside-staff-priority} sont placés au plus près de la
1940 portée, tandis que les autres sont écartés autant qu'il faut pour éviter
1941 les collisions.  La @code{outside-staff-priority} est définie dans la
1942 @code{grob-interface} ; elle est donc une propriété commune à tous les
1943 objets de rendu.  Par défaut, elle est réglée sur @code{#f} pour tous
1944 les objets de la portée, et porte une valeur numérique appropriée à
1945 chacun des objets extérieurs à la portée, à mesure qu'ils sont créés.
1946 Le tableau suivant montre la valeur numérique par défaut pour
1947 quelques-uns des objets extérieurs à la portée les plus courants qui
1948 sont placés, par défaut, dans les contextes @code{Staff} ou
1949 @code{Voice}. 
1950
1951 @multitable @columnfractions .3 .3 .3
1952 @headitem Objet de rendu
1953   @tab Priorité 
1954   @tab Contrôle la position de :
1955 @item @code{MultiMeasureRestText}
1956   @tab @code{450}
1957   @tab Texte sur les silences qui couvrent des mesures entières 
1958 @item @code{TextScript}
1959   @tab @code{450}
1960   @tab Texte des @emph{markup} (ou étiquettes)
1961 @item @code{OttavaBracket}
1962   @tab @code{400}
1963   @tab Indication d'octaviation
1964 @item @code{TextSpanner}
1965   @tab @code{350}
1966   @tab Bandeau ou extension de texte
1967 @item @code{DynamicLineSpanner}
1968   @tab @code{250}
1969   @tab Toutes les marques de nuances
1970 @item @code{VoltaBracketSpanner}
1971   @tab @code{100}
1972   @tab Bandeau de répétition
1973 @item @code{TrillSpanner}
1974   @tab @code{50}
1975   @tab Bandeau de trille
1976 @end multitable
1977
1978 Voici un exemple qui montre le placement par défaut de certains 
1979 d'entre eux.
1980
1981 @cindex text spanner
1982 @cindex ottava bracket
1983
1984 @funindex \startTextSpan
1985 @funindex startTextSpan
1986 @funindex \stopTextSpan
1987 @funindex stopTextSpan
1988
1989 @cindex TextSpanner, exemple de dérogation
1990 @cindex bound-details, exemple de propriété
1991
1992 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1993 % Set details for later Text Spanner
1994 \override TextSpanner #'bound-details #'left #'text
1995     = \markup { \small \bold Slower }
1996 % Place dynamics above staff
1997 \dynamicUp
1998 % Start Ottava Bracket
1999 \ottava #1
2000 c' \startTextSpan
2001 % Add Dynamic Text
2002 c\pp
2003 % Add Dynamic Line Spanner
2004 c\<
2005 % Add Text Script
2006 c^Text
2007 c c
2008 % Add Dynamic Text
2009 c\ff c \stopTextSpan
2010 % Stop Ottava Bracket
2011 \ottava #0
2012 c, c c c
2013 @end lilypond
2014
2015 Cet exemple montre comment créer des extensions de texte (@emph{Text
2016 Spanners} en anglais ) -- texte avec des longues lignes au-dessus d'un
2017 passage musical.  L'extension s'étend depuis la commande
2018 @code{\startTextSpan} jusqu'à la commande @code{\stopTextSpan} et le
2019 format de texte est défini par la commande @code{\override TextSpanner}.
2020 Pour de plus amples détails, voir @ruser{Text spanners}.
2021
2022 Il montre aussi comment créer des marques d'octaviation.
2023
2024 @cindex modification du positionnement des numéros de mesure
2025 @cindex numéros de mesure, modification du positionnement
2026 @cindex modification du positionnement des indications métronomiques
2027 @cindex indications métronomiques, modification du positionnement
2028 @cindex modification du positionnement des marques de repère
2029 @cindex marques de repère, modification du positionnement
2030
2031 Vous aurez remarqué que les numéros de mesure, l'indication métronomique
2032 et les marques de répétition n'apparaissent pas.  Par défaut, ils sont
2033 créés dans le contexte @code{Score} et leur
2034 @code{outside-staff-priority} est ignorée face aux objets qui sont créés
2035 dans le contexte @code{Staff}.  Si vous voulez faire apparaître les
2036 numéros de mesure, l'indication métronomique ou les marques de
2037 répétition conformément à la valeur de leur
2038 @code{outside-staff-priority}, il vous faudra retirer respectivement le
2039 @code{Bar_number_engraver}, le @code{Metronome_mark_engraver} oule
2040 @code{Mark_engraver} du contexte @code{Score} et les placer en haut du
2041 contexte @code{Staff}.  Après quoi ces marques porteront les valeurs de 
2042 @code{outside-staff-priority} par défaut suivantes : 
2043
2044 @multitable @columnfractions .3 .3
2045 @headitem Objet de rendu          @tab Priorité
2046 @item @code{RehearsalMark}        @tab @code{1500}
2047 @item @code{MetronomeMark}        @tab @code{1000}
2048 @item @code{BarNumber}            @tab @code{ 100}
2049 @end multitable
2050
2051 Si les valeurs de @code{outside-staff-priority} par défaut ne donnent
2052 pas les résultats que vous attendez, il suffit de modifier la priorité
2053 de l'un de ces objets.  Supposons que vous vouliez placer l'indication
2054 d'octaviation sous le bandeau de texte, dans l'exemple précédent.  Tout
2055 ce que nous devons faire, c'est regarder la priorité de
2056 @code{OttavaBracket} dans la RPI ou dans le tableau plus haut, et la
2057 ramener à une valeur plus basse que celle de @code{TextSpanner}, en
2058 gardant à l'esprit que @code{OttavaBracket} est créé dans le contexte
2059 @code{Staff} : 
2060
2061 @cindex TextSpanner, exemple de dérogation
2062 @cindex bound-details, exemple de propriété
2063
2064 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2065 % Set details for later Text Spanner
2066 \override TextSpanner #'bound-details #'left #'text
2067     = \markup { \small \bold Slower }
2068 % Place dynamics above staff
2069 \dynamicUp
2070 %Place following Ottava Bracket below Text Spanners
2071 \once \override Staff.OttavaBracket #'outside-staff-priority = #340
2072 % Start Ottava Bracket
2073 \ottava #1
2074 c' \startTextSpan
2075 % Add Dynamic Text
2076 c\pp
2077 % Add Dynamic Line Spanner
2078 c\<
2079 % Add Text Script
2080 c^Text
2081 c c
2082 % Add Dynamic Text
2083 c\ff c \stopTextSpan
2084 % Stop Ottava Bracket
2085 \ottava #0
2086 c, c c c
2087 @end lilypond
2088
2089 Le fait de changer la @code{outside-staff-priority} peut aussi servir à
2090 contrôler le positionnement vertical des objets individuels, quoique le
2091 résultat ne soit pas toujours formidable.  Imaginons que nous voulions
2092 placer @qq{Text3} au-dessus de @qq{Text4} dans l'exemple de la section
2093 Comportement automatique, plus haut (voir @ref{Automatic behavior}).  Il
2094 nous suffit pour cela de regarder dans la RPI ou dans le tableau plus
2095 haut la priorité de @code{TextScript}, et d'augmenter la priorité de
2096 @qq{Text3} jusqu'à une valeur très haute : 
2097
2098 @cindex TextScript, exemple de dérogation
2099 @cindex outside-staff-priority, exemple de propriété
2100
2101 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2102 c2^"Text1"
2103 c^"Text2"
2104 \once \override TextScript #'outside-staff-priority = #500
2105 c^"Text3"
2106 c^"Text4"
2107 @end lilypond
2108
2109 S'il est vrai que cela place @qq{Text3} au-dessus de @qq{Text4}, ça le
2110 place aussi plus haut que @qq{Text2} tandis que @qq{Text4} dégringole.
2111 Ce n'est peut-être pas si bien que ça.  En fait, ce que nous aimerions
2112 faire, c'est placer toutes les annotations à égale distance de la
2113 portée.  Pour cela, nous avons besoin d'espacer horizontalement les
2114 notes pour laisser plus de place au texte.  C'est possible grâce à la
2115 commande @code{textLengthOn}. 
2116
2117 @subheading \textLengthOn
2118
2119 @cindex notes, répartition selon le texte
2120
2121 @funindex \textLengthOn
2122 @funindex textLengthOn
2123 @funindex \textLengthOff
2124 @funindex textLengthOff
2125
2126 Par défaut, l'espacement horizontal d'un texte produit sous forme de
2127 @emph{markup} (ou d'étiquette) n'est pas pris en compte, dans la mesure
2128 où ce qui est concerné n'entre pas dans la musique.  La commande
2129 @code{\textLengthOn} inverse ce comportement, faisant en sorte que les
2130 notes soient espacées autant qu'il faut pour s'adapter au texte :  
2131
2132 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2133 \textLengthOn  % Cause notes to space out to accommodate text
2134 c2^"Text1"
2135 c^"Text2"
2136 c^"Text3"
2137 c^"Text4"
2138 @end lilypond  
2139
2140 La commande qui permet de revenir au comportement par défaut est 
2141 @code{\textLengthOff}.  Rappelez-vous que @code{\once} ne 
2142 fonctionne qu'avec @code{\override}, @code{\set}, @code{\revert} ou 
2143 @code{\unset}, et donc ne peut pas être utilisé avec 
2144 @code{\textLengthOn}.
2145
2146 @cindex markup text, allowing collisions
2147
2148 Les textes des @emph{markup} éviteront également les notes qui
2149 s'échappent au-dessus de la portée.  Si ce n'est pas notre souhait, il
2150 est possible de supprimer ce déplacement automatique vers le haut en
2151 attribuant à la priorité la valeur @code{#f}.  Voici un exemple qui
2152 montre comment les textes des @emph{markup} interagissent avec ces types
2153 de notes. 
2154
2155 @cindex TextScript, exemple de dérogation
2156 @cindex outside-staff-priority, exemple de propriété
2157
2158 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2159 % This markup is short enough to fit without collision
2160 c2^"Tex"
2161 c''2
2162 R1
2163 % This is too long to fit, so it is displaced upwards
2164 c,,2^"Text"
2165 c''2
2166 R1
2167 % Turn off collision avoidance
2168 \once \override TextScript #'outside-staff-priority = ##f
2169 c,,2^"Long Text   "
2170 c''2
2171 R1
2172 % Turn off collision avoidance
2173 \once \override TextScript #'outside-staff-priority = ##f
2174 \textLengthOn  % and turn on textLengthOn
2175 c,,2^"Long Text   "  % Spaces at end are honored
2176 c''2
2177 @end lilypond
2178
2179
2180 @subheading Dynamics
2181
2182 @cindex modifier le positionnement des nuances
2183 @cindex nuances, modifier le positionnement
2184
2185 Les indications de nuances se placent normalement sous la portée mais on
2186 peut les placer au-dessus avec la commande @code{dynamicUp}.  Elles se
2187 positionnent verticalement par rapport à la note à laquelle elles sont
2188 liées et se décalent vers le bas (ou le haut) en fonction des objets de
2189 la portée comme les liaisons de phrasé ou les numéros de mesure.  Cela
2190 peut donner d'assez bons résultats, comme le montre cet exemple : 
2191
2192 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2193 \clef "bass"
2194 \key aes \major
2195 \time 9/8
2196 \dynamicUp
2197 bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2198 ees,2.~\)\mf ees4 r8 |
2199 @end lilypond
2200
2201 De toute façon, si les notes et les nuances qui leur sont liées sont 
2202 trop proches, le positionnement automatique évitera les collisions en  
2203 déplaçant davantage les nuances suivantes, mais le résultat peut ne 
2204 pas être très satisfaisant, comme le montre cet exemple artificiel : 
2205
2206 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2207 \dynamicUp
2208 a4\f b\mf c\mp b\p
2209 @end lilypond
2210
2211 @noindent
2212 Si une telle situation devait survenir dans de la musique @qq{réelle},
2213 il serait préférable d'espacer un peu plus les notes, de façon que les
2214 indications de nuance puissent toutes se situer à la même distance de la
2215 portée.  Il était possible de faire cela pour les textes de
2216 @emph{markup} grâce à la commande @code{\textLengthOn} mais il n'existe
2217 pas d'équivalent pour les indications de nuance.  Il nous faut donc
2218 chercher à faire cela avec la commande @code{\override}. 
2219
2220 @subheading Grob sizing
2221
2222 @cindex grob, dimensionnement
2223 @cindex dimensionnement des grobs
2224
2225 Tout d'abord, nous devons apprendre ce qui détermine la dimension des 
2226 grobs. Tous les grobs portent en eux un point de référence qui est 
2227 utilisé pour les positionner par rapport à leur objet parent. Ce point du 
2228 grob est placé à une distance horizontale, @code{X-offset}, 
2229 et à une distance verticale, @code{Y-offset}, de son parent. 
2230 L'étendue horizontale de l'objet est fixée par une paire de 
2231 nombres, @code{X-extent}, qui donnent la position du coin 
2232 gauche et du coin droit par rapport au point de référence.  De 
2233 même, l'étendue verticale est fixée par une paire de nombre, 
2234 @code{Y-extent}. Ce sont des propriétés communes à tous les 
2235 grobs et que gère la @code{grob-interface}.
2236
2237 @cindex @code{extra-spacing-width}
2238
2239 Par défaut, la largeur des objets extérieurs à la portée est donnée 
2240 comme étant nulle, si bien qu'ils peuvent se chevaucher 
2241 horizontalement. Pour arriver à cela, on a ajouté l'infini à 
2242 l'extension gauche et moins l'infini à l'extension droite, en 
2243 attribuant à @code{extra-spacing-width} la valeur
2244  @code{'(+inf.0 . -inf.0)}. Pour être sûr que les objets ne se 
2245 chevaucheront pas horizontalement, nous devons donc corriger 
2246 cette valeur de @code{extra-spacing-width} en @code{'(0 . 0)}, 
2247 afin que leur vraie largeur se manifeste. La commande pour y 
2248 parvenir avec des indications de nuances est : 
2249
2250 @example
2251 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2252 @end example
2253
2254 @noindent
2255 Voyons si ça marche sur notre exemple précédent :
2256
2257 @cindex DynamicText, example of overriding
2258 @cindex extra-spacing-width property, example
2259
2260 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2261 \dynamicUp
2262 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2263 a4\f b\mf c\mp b\p
2264 @end lilypond
2265
2266 @noindent
2267 Bon, cela a mis un terme aux déplacements verticaux des 
2268 nuances mais il reste deux problèmes. Il faudrait que les 
2269 nuances soient un peu plus écartées et ce serait mieux si 
2270 elles étaient toutes à la même distance de la portée. Le 
2271 premier problème est simple à résoudre. Au lieu d'attribuer 
2272 à @code{extra-spacing-width} la valeur zéro, nous pourrions 
2273 mettre un peu plus. L'unité est la distance entre deux lignes 
2274 de portée, donc en écartant le bord gauche d'une demi-unité 
2275 et le bord droit d'une demi-unité, on obtient : 
2276
2277 @cindex DynamicText, example of overriding
2278 @cindex extra-spacing-width property, example
2279
2280 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2281 \dynamicUp
2282 % Extend width by 1 staff space
2283 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2284 a4\f b\mf c\mp b\p
2285 @end lilypond
2286
2287 @noindent
2288 C'est mieux mais nous voulons peut-être aligner les indications de 
2289 nuances sur une même ligne plutôt que de les voir monter et 
2290 descendre avec les notes. La propriété qui gère cela est 
2291 @code{staff-padding} ; la section suivante lui est consacrée.
2292
2293
2294 @node Collisions of objects
2295 @section Collisions of objects
2296
2297
2298 @menu
2299 * Moving objects::              
2300 * Fixing overlapping notation::  
2301 * Real music example::          
2302 @end menu
2303
2304 @node Moving objects
2305 @subsection Moving objects
2306
2307 Aussi surprenant que cela puisse paraître, LilyPond n'est pas parfait.
2308 Certains éléments sur la partition peuvent se chevaucher, ce qui est 
2309 regrettable mais, le plus souvent, facile à corriger. En général, quand 
2310 on déplace des objets, c'est pour des raisons de lisibilité ou 
2311 d'esthétique -- ils rendraient mieux avec un peu plus ou un peu moins 
2312 d'espace autour d'eux. 
2313
2314 Il y a trois façons de résoudre les problèmes de chevauchement. Il est 
2315 préférable de les aborder dans l'ordre suivant :
2316
2317 @enumerate
2318 @item
2319 L'@strong{orientation} d'un objet qui en chevauche un autre peut être 
2320 changée grâce aux commandes prédéfinies dont la liste a été donnée 
2321 plus haut à propos des objets de portée (voir @ref{Within-staff objects}). 
2322 Les queues de notes, les liaisons de phrasé et de prolongation, les 
2323 crochets, les nuances et les nolets peuvent facilement être repositionnés 
2324 de cette manière. En contrepartie, vous n'avez le choix qu'entre deux 
2325 positions, sans personnalisation possible.
2326
2327 @item
2328 Les @strong{propriétés d'objet}, auxquelles LilyPond a recours pour 
2329 positionner les objets, sont modifiables avec @code{\override}. Il y a deux 
2330 avantages à changer ces propriétés : (a) d'autres objets pourront être 
2331 déplacés automatiquement si nécessaire pour faire de la place, et (b) 
2332 la même retouche peut s'appliquer à toutes les occurrences du même 
2333 type d'objet. Ces propriétés sont :
2334
2335 @itemize
2336
2337 @item
2338 @code{direction}
2339
2340 Ce point a déjà été traité en détails -- voir @ref{Within-staff objects}.
2341
2342 @item
2343 @code{padding}, @code{left-padding},
2344 @code{right-padding}, @code{staff-padding}
2345
2346 @cindex padding
2347 @cindex left-padding property
2348 @cindex padding property
2349 @cindex right-padding property
2350 @cindex staff-padding property
2351
2352 Au moment de positionner un objet, la valeur de sa propriété 
2353 @code{padding} détermine l'espace à laisser libre entre celui-ci et le 
2354 coin le plus proche de l'objet à côté duquel il est placé. Vous remarquerez 
2355 que c'est la valeur @code{padding} de l'objet @strong{à placer} qui 
2356 compte ; la valeur @code{padding} de l'objet déjà placé est ignorée. 
2357 Les espaces libres déterminés par @code{padding} s'appliquent à tous 
2358 les objets associés à la @code{side-position-interface}.
2359
2360 Le positionnement de groupes d'altérations est contrôlé par 
2361 @code{left-padding} et @code{right-padding}, et non plus @code{padding}.
2362 Ces propriétés appartiennent à l'objet @code{AccidentalPlacement}, qui, 
2363 vous le remarquerez, prend place dans le contexte @strong{Staff}. Dans le 
2364 processus de composition, les têtes de notes sont composées en premier, 
2365 puis les altérations, s'il y en a, sont ajoutées à gauche des têtes de notes 
2366 suivant la propriété @code{right-padding} qui détermine l'espacement par 
2367 rapport aux têtes de notes. C'est pourquoi seule la propriété 
2368 @code{right-padding} de l'objet @code{AccidentalPlacement} joue sur le 
2369 positionnement des altérations. 
2370
2371 La propriété @code{staff-padding} est très proche de la propriété 
2372 @code{padding} : @code{padding} contrôle l'espace minimum entre un 
2373 objet qui accepte la @code{side-position-interface} et l'objet le plus 
2374 proche (généralement une note ou une ligne de portée) ; @code{staff-padding} 
2375 ne s'applique qu'aux objets qui sont toujours placés en-dehors de la portée -- 
2376 il contrôle l'espace minimum à insérer entre l'objet et la portée. Attention : 
2377 par défaut, @code{staff-padding} concerne les objets positionnés par rapport 
2378 à la portée et n'a aucun effet sur les objets qui sont positionnés par
2379 rapport à une note ; il est toutefois possible de le régler pour
2380 fonctionner avec ces derniers. 
2381
2382 Pour trouver quelle propriété  @q{padding} employer pour l'objet que vous 
2383 cherchez à repositionner, il vous faut consulter les propriétés de l'objet dans 
2384 la RPI. Prenez garde que les propriétés @q{padding} ne sont pas forcément 
2385 traitées dans l'objet en question ; il faut alors regarder les objets
2386 qui semblent s'en rapprocher. 
2387
2388 Toutes les valeurs @q{padding} sont exprimées en espaces de portée. 
2389 Pour la plupart des objets, la valeur par défaut est aux alentours de 1.0, 
2390 parfois moins (cela dépend de chaque objet). Il est possible de la modifier 
2391 lorsqu'on a besoin d'un espace vide plus grand (ou plus petit).
2392
2393
2394 @item
2395 @code{self-alignment-X}
2396
2397 @cindex self-alignment-X property
2398 Cette propriété sert à aligner les objets sur la gauche, sur la droite ou 
2399 à les centrer par rapport au point de référence des objets parents. 
2400 Elle peut être utilisée avec tous les objets qui acceptent la 
2401 @code{self-alignment-interface}. Il s'agit, en général, des objets qui 
2402 contiennent du texte. Les valeurs admises sont @code{LEFT}, 
2403 @code{RIGHT} et @code{CENTER}. On peut aussi attribuer à 
2404 la place une valeur numérique entre @code{-1} et @code{+1}, 
2405 où @code{-1} signifie alignement sur la gauche, @code{+1} 
2406 alignement sur la droite, et les nombres intermédiaires déplacent 
2407 progressivement le texte de la gauche vers la droite. Des valeurs 
2408 numériques supérieures à @code{1} sont également admises 
2409 pour déplacer le texte encore plus loin vers la gauche, ou des 
2410 valeurs inférieures à @code{-1} pour déplacer le texte encore 
2411 plus loin vers la droite. Un écart de @code{1} en valeur 
2412 correspond à un déplacement de la moitié de la longueur du 
2413 texte.
2414
2415 @item
2416 @code{extra-spacing-width}
2417
2418 @cindex extra-spacing-width property
2419 Cette propriété est utilisée pour tous les objets qui acceptent la 
2420 @code{item-interface}. Elle reçoit deux nombres, le premier étant 
2421 ajouté au bord gauche et le second au bord droit. Des nombres 
2422 négatifs déplacent le coin vers la gauche, des nombres positifs 
2423 vers la droite, si bien que pour élargir un objet, le premier nombre 
2424 doit être négatif et le second positif. Attention : tous les objets 
2425 n'acceptent pas forcément les deux nombres. Par exemple, l'objet 
2426 @code{Accidental} ne retient que le premier nombre (coin gauche).
2427
2428
2429 @item
2430 @code{staff-position}
2431
2432 @cindex staff-position property
2433 @code{staff-position} est une propriété de la 
2434 @code{staff-symbol-referencer-interface}, qui s'applique aux objets 
2435 positionnés par rapport à la portée. Elle indique, en demi-espaces de 
2436 portée, la position verticale des objets par rapport à la ligne médiane 
2437 de la portée. C'est bien pratique pour résoudre des problèmes de 
2438 collision entre des objets comme les silences valant mesure entière, 
2439 les liaisons et les notes de différentes voix.
2440
2441 @item
2442 @code{force-hshift}
2443
2444 @cindex force-hshift property
2445 Des notes très proches dans un accord, ou des notes simultanées dans 
2446 différentes voix, peuvent être disposées sur deux colonnes, rarement 
2447 plus, pour éviter que les têtes de notes ne se chevauchent. On parle 
2448 alors de colonnes de notes et un objet appelé @code{NoteColumn} 
2449 est créé pour placer les notes sur la colonne.
2450
2451 La propriété @code{force-hshift} appartient à @code{NoteColumn} (en 
2452 réalité à la @code{note-column-interface}). Le fait de la modifier permet 
2453 de déplacer une colonne de notes selon l'unité appropriée aux colonnes 
2454 de notes, à savoir la largeur des têtes de notes de la première voix. Son 
2455 utilisation est réservée à des situations complexes dans lesquelles les 
2456 commandes habituelles @code{\shiftOn} 
2457 (voir @ref{Explicitly instantiating voices}) ne suffisent plus à résoudre les 
2458 conflits. Elle est alors préférable à l'utilisation de la propriété 
2459 @code{extra-offset}, dans la mesure où on n'a pas besoin d'exprimer 
2460 la distance en espaces de portée et où le fait de déplacer les notes à 
2461 l'intérieur ou à l'extérieur d'une @code{NoteColumn} affecte d'autres 
2462 actions comme les fusionnements de notes.
2463
2464 @end itemize
2465
2466 @item
2467 Pour terminer, quand toutes les autres méthodes ont échoué, il est 
2468 possible de repositionner verticalement les objets à la main par rapport 
2469 à la ligne médiane de la portée, ou en les déplaçant à une distance 
2470 donnée vers une nouvelle position. Les inconvénients sont qu'il faut
2471 individuellement pour chaque objet trouver les valeurs correctes de 
2472 repositionnement, souvent par tâtonnement, et que, puisque le 
2473 mouvement est opéré après que LilyPond a placé tous les autres 
2474 objets, c'est à l'utilisateur de résoudre tous les problèmes de collisions 
2475 qui pourraient survenir. Et le pire avec cette méthode est que, le jour 
2476 où la musique est modifiée, il faut de nouveau rechercher les 
2477 valeurs de repositionnement. Les propriétés à utiliser pour ce type de 
2478 repositionnement manuel sont :
2479
2480
2481 @table @code
2482 @item extra-offset
2483
2484 @cindex extra-offset property
2485 Cette propriété s'applique à tout objet acceptant la @code{grob-interface}. 
2486 Elle reçoit une paire de nombre qui indiquent le déplacement supplémentaire 
2487 dans le sens horizontal et vertical. Des nombres négatifs déplacent l'objet 
2488 vers la gauche ou vers la droite. L'unité utilisée est l'espace de portée. Le 
2489 déplacement supplémentaire intervient une fois que la composition des 
2490 objets est achevée, si bien qu'un objet peut être repositionné à n'importe 
2491 quel endroit sans que ça perturbe quoi que ce soit. 
2492
2493 @item positions
2494
2495 @cindex positions property
2496 Cette propriété est très utile pour ajuster manuellement l'inclinaison et 
2497 la hauteur des barres de croches, des liaisons et des nolets. Elle est  
2498 suivie de deux nombres qui donnent la position des bords gauche et 
2499 droit des barres, liaisons, etc., par rapport à la ligne médiane de la 
2500 portée. L'unité de référence est l'intervalle de lignes de portée. Attention 
2501 toutefois au fait que les liaisons et phrasés ne peuvent pas être repositionnés 
2502 n'importe où. LilyPond commence par dresser la liste des emplacements 
2503 possibles pour les liaisons et choisit par défaut la liaison qui @qq{semble 
2504 la meilleure}. Si la propriété @code{positions} a été retouchée, la 
2505 liaison la plus proche de la position demandée sera retenue dans la 
2506 liste.
2507 @end table
2508
2509 @end enumerate
2510
2511 Il est possible qu'un objet ne dispose pas de toutes ces propriétés. Il 
2512 est donc nécessaire de consulter la RPI pour vérifier quelles sont les 
2513 propriétés disponibles pour l'objet en question. 
2514
2515 Voici une liste d'objets les plus couramment impliqués dans les 
2516 collisions, avec le nom de l'objet à consulter dans la RPI afin de trouver 
2517 les propriétés à retoucher pour obtenir un déplacement.
2518
2519
2520 @multitable @columnfractions .5 .5
2521 @headitem Type d'objet              @tab Nom d'objet
2522 @item Articulations                 @tab @code{Script}
2523 @item Barres de croches             @tab @code{Beam}
2524 @item Doigté                        @tab @code{Fingering}
2525 @item Liaisons de phrasé            @tab @code{Slur}   
2526 @item Liaisons de prolongation      @tab @code{Tie}
2527 @item Nolets                        @tab @code{TupletBracket}
2528 @item Nuances (verticalement)       @tab @code{DynamicLineSpanner}
2529 @item Nuances (horizontalement)     @tab @code{DynamicText}
2530 @item Reprises / marques de texte   @tab @code{RehearsalMark}
2531 @item Texte, p.ex. @code{^"texte"}  @tab @code{TextScript}
2532 @end multitable
2533
2534
2535 @node Fixing overlapping notation
2536 @subsection Fixing overlapping notation
2537
2538 Voyons maintenant comment les propriétés décrites dans la section 
2539 précédente peuvent nous aider à résoudre les collisions. 
2540
2541 @subheading padding property
2542
2543 @cindex padding
2544 @cindex fixing overlapping notation
2545 @cindex overlapping notation
2546
2547 En jouant sur la propriété @code{padding} (littéralement 
2548 @q{rembourrage}), on augmente (ou on diminue) la distance entre 
2549 des symboles qui sont imprimés au-dessus ou en dessous des notes. 
2550
2551 @cindex Script, example of overriding
2552 @cindex padding property, example
2553
2554 @lilypond[quote,fragment,relative=1,verbatim]
2555 c2\fermata
2556 \override Script #'padding = #3
2557 b2\fermata
2558 @end lilypond
2559
2560 @cindex MetronomeMark, example of overriding
2561 @cindex padding property, example
2562
2563 @lilypond[quote,fragment,relative=1,verbatim]
2564 % This will not work, see below:
2565 \override MetronomeMark #'padding = #3
2566 \tempo 4=120
2567 c1
2568 % This works:
2569 \override Score.MetronomeMark #'padding = #3
2570 \tempo 4=80
2571 d1
2572 @end lilypond
2573
2574 Vous remarquerez dans le second exemple à quel point il est important de 
2575 préciser le nom du contexte qui contient l'objet. Puisque l'objet 
2576 @code{MetronomeMark} appartient au contexte @code{Score}, le fait de 
2577 modifier la propriété dans le contexte @code{Voice} passera inaperçu. 
2578 Pour plus de détails, voir @ruser{Modifying properties}.
2579
2580 Si on augmente la propriété @code{padding} d'un objet alors que celui-ci 
2581 fait partie d'un ensemble d'objets positionnés en fonction de leur 
2582 @code{outside-staff-priority}, cet objet sera déplacé, ainsi que tous les 
2583 autres objets du groupe. 
2584
2585 @subheading left-padding and right-padding
2586
2587 @cindex left-padding property
2588 @cindex right-padding property
2589
2590 La propriété @code{right-padding} joue sur l'espacement entre une 
2591 altération et la note sur laquelle elle porte. On ne l'utilise pas souvent, 
2592 mais l'exemple ci-dessous montre une situation où elle est nécessaire. 
2593 Imaginons que nous voulions faire apparaître un accord qui contienne 
2594 à la fois un si bécarre et un si bémol. Pour qu'il n'y ait pas de doute, 
2595 nous chercherions à précéder la note d'un signe bécarre et d'un signe 
2596 bémol. Voici différentes tentatives pour y parvenir : 
2597
2598 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2599 <b bes>
2600 <b! bes>
2601 <b? bes>
2602 @end lilypond
2603
2604 Pas une ne convient, et la seconde se solde même par une collision 
2605 entre les deux signes. 
2606
2607 Une solution pour arriver à nos fins consiste à retoucher le stencil des 
2608 altérations grâce à un markup qui contient les symboles bécarre et 
2609 bémol, dans l'ordre que nous souhaitons, comme ceci :
2610
2611 @cindex Accidental, example of overriding
2612 @cindex text property, example
2613 @cindex stencil property, example
2614 @cindex AccidentalPlacement, example of overriding
2615 @cindex right-padding property, example
2616
2617 @lilypond[quote,ragged-right,verbatim]
2618 naturalplusflat = \markup { \natural \flat }
2619 \relative c'' {
2620   \once \override Accidental
2621     #'stencil = #ly:text-interface::print
2622   \once \override Accidental #'text = #naturalplusflat
2623   \once \override Score.AccidentalPlacement #'right-padding = #1.5
2624   <b bes>
2625 }
2626 @end lilypond
2627
2628 @noindent
2629 Cette méthode utilise, pour le stencil des altérations, une retouche 
2630 qui ne sera par reprise par la suite. Le type de stencil est obligatoirement 
2631 une procédure, qui consiste ici à imprimer le contenu de la propriété 
2632 @code{text} de @code{Accidental}, déclaré comme étant un signe 
2633 bécarre suivi d'un signe bémol. Celui-ci est ensuite repoussé devant la 
2634 tête de note par la retouche de @code{right-padding}.
2635
2636 @noindent
2637
2638 @subheading staff-padding property
2639
2640 @cindex aligning objects on a baseline
2641 @cindex objects, aligning on a baseline
2642
2643 @code{staff-padding} sert à aligner des objets tels que des nuances 
2644 sur une ligne fictive à une hauteur donnée par rapport à la portée, plutôt 
2645 qu'à une hauteur qui varie en fonction de la position de la note sur laquelle 
2646 porte l'objet. Ce n'est pas une propriété de @code{DynamicText} mais de 
2647 @code{DynamicLineSpanner}. Car la ligne fictive est destinée à s'appliquer 
2648 autant à @strong{toutes} les nuances, notamment celles qui sont créées 
2649 comme des bandeaux en longueur (en anglais @q{Spanners}). Tel est donc 
2650 le moyen d'aligner les indications de nuances, comme dans cet exemple 
2651 repris de la section précédente : 
2652
2653 @cindex DynamicText, example of overriding
2654 @cindex extra-spacing-width property, example
2655 @cindex DynamicLineSpanner, example of overriding
2656 @cindex staff-padding property, example
2657
2658 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2659 \dynamicUp
2660 % Extend width by 1 unit
2661 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2662 % Align dynamics to a base line 2 units above staff
2663 \override DynamicLineSpanner #'staff-padding = #2
2664 a4\f b\mf c\mp b\p
2665 @end lilypond
2666
2667
2668 @subheading self-alignment-X property
2669 L'exemple suivant montre comment résoudre une collision entre une indication 
2670 de corde et une queue de note, en alignant le coin droit sur le point de 
2671 référence de la note parente :
2672
2673 @cindex StringNumber, example of overriding
2674 @cindex self-alignment-X property, example
2675
2676 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
2677 \voiceOne
2678 < a \2 >
2679 \once \override StringNumber #'self-alignment-X = #RIGHT
2680 < a \2 >
2681 @end lilypond
2682
2683 @subheading staff-position property
2684
2685 @cindex object collision within a staff
2686 Dans une voix, un silence valant une mesure entière peut chevaucher les 
2687 notes d'une autre voix. Vu que ces silences sont centrés entre les deux 
2688 barres de mesure, il serait très compliqué de programmer LilyPond pour repérer 
2689 ces risques de collisions, dans la mesure où, normalement, toutes les collisions 
2690 entre notes ou entre notes et silences se produisent sur des notes et silences 
2691 simultanés. Voici un exemple de collision de ce type :
2692
2693 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
2694 << {c c c c} \\ {R1} >>
2695 @end lilypond
2696
2697 Ici, la meilleure solution consiste à déplacer le symbole de pause vers
2698 le bas -- puisque cette pause appartient à la voix deux.  Par défaut, dans la 
2699 @code{\voiceTwo} (c'est-à-dire dans la seconde voix d'une construction 
2700 @code{<<@{...@} \\ @{...@}>>}), la propriété @code{staff-position} est 
2701 réglée sur -4 pour les MultiMeasureRest ; nous avons donc besoin de la 
2702 déplacer, disons, de quatre demi-intervalles vers le bas, ce qui donne
2703 @code{-8}.
2704
2705
2706 @cindex MultiMeasureRest, example of overriding
2707 @cindex staff-position property, example
2708
2709 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
2710 <<
2711   {c c c c}
2712 \\
2713   \override MultiMeasureRest #'staff-position = #-8
2714   {R1}
2715 >>
2716 @end lilypond
2717
2718 C'est mieux que d'utiliser, par exemple, @code{extra-offset}, 
2719 car la ligne supplémentaire au-dessus du silence est insérée 
2720 automatiquement. 
2721
2722 @subheading extra-offset property
2723
2724 @cindex positioning objects
2725 @cindex positioning grobs
2726 @cindex objects, positioning
2727 @cindex grobs, positioning
2728
2729 La propriété @code{extra-offset}
2730 La propriété @code{extra-offset} offre la possibilité de contrôler 
2731 entièrement le placement d'un objet, aussi bien horizontalement que 
2732 verticalement. 
2733
2734 Dans l'exemple suivant, la seconde indication de doigté est déplacée 
2735 légèrement vers la gauche et de 1.8 intervalle de lignes vers le bas :
2736
2737 @cindex Fingering, example of overriding
2738 @cindex extra-offset property, example
2739
2740 @lilypond[quote,fragment,relative=1,verbatim]
2741 \stemUp
2742 f-5
2743 \once \override Fingering
2744     #'extra-offset = #'(-0.3 . -1.8)
2745 f-5
2746 @end lilypond
2747
2748
2749 @subheading positions property
2750
2751 @cindex controlling tuplets, slurs, phrasing slurs, and beams manually
2752 @cindex manually controlling tuplets, slurs, phrasing slurs, and beams
2753 @cindex tuplet beams, controlling manually
2754 @cindex slurs, controlling manually
2755 @cindex phrasing slurs, controlling manually
2756 @cindex beams, controlling manually
2757
2758 La propriété @code{positions} permet de contrôler manuellement la 
2759 position et l'inclinaison des nolets, coulés, liaisons de phrasé et barres 
2760 de croches. Voici un exemple avec une horrible liaison de phrasé -- 
2761 horrible pour avoir tenté de contourner la liaison de l'acciaccature.
2762
2763 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2764 r4  \acciaccatura e8\( d8 c ~c d c d\)
2765 @end lilypond
2766
2767 @noindent
2768 Nous pourrions tout simplement déplacer la liaison de phrasé au-dessus des
2769 notes, et ce serait la meilleure solution :
2770
2771 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2772 r4
2773 \phrasingSlurUp
2774 \acciaccatura e8\( d8 c ~c d c d\)
2775 @end lilypond
2776
2777 @noindent
2778 Mais si, pour une quelconque raison, cette solution n'était pas 
2779 envisageable, l'autre solution consiste à déplacer légèrement vers le 
2780 bas l'extrémité gauche de la liaison de phrasé, grâce à la propriété 
2781 @code{positions}. Cela corrige en même temps la forme plutôt 
2782 disgracieuse de la liaison.
2783
2784 @cindex PhrasingSlur, example of overriding
2785 @cindex positions property, example
2786
2787 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2788 r4
2789 \once \override PhrasingSlur #'positions = #'(-4 . -3)
2790 \acciaccatura
2791 e8\( d8 c ~c d c d\)
2792 @end lilypond
2793
2794 Voici un autre exemple, tiré du début de la partie de main gauche 
2795 du Prélude de Chopin, Op. 28, No 2. Comme nous pouvons le 
2796 constater, les barres de croches chevauchent les notes les plus hautes :
2797
2798 @lilypond[quote,verbatim,fragment,ragged-right]
2799 {
2800 \clef "bass"
2801 << {b,8 ais, b, g,} \\ {e, g e, g} >>
2802 << {b,8 ais, b, g,} \\ {e, g e, g} >>
2803 }
2804 @end lilypond
2805
2806 @noindent
2807 On peut y remédier en déplaçant manuellement vers le haut les deux 
2808 extrémités des barres de croches, non plus à 2 intervalles au-dessus 
2809 de la ligne médiane mais, disons, à 3 :
2810
2811 @cindex Beam, example of overriding
2812 @cindex positions property, example
2813
2814 @lilypond[quote,verbatim,fragment,ragged-right]
2815 {
2816   \clef "bass"
2817   <<
2818     \override Beam #'positions = #'(3 . 3)
2819     {b,8 ais, b, g,}
2820   \\
2821     {e, g e, g}
2822   >>
2823   << {b,8 ais, b, g,} \\ {e, g e, g} >>
2824 }
2825 @end lilypond
2826
2827 @noindent
2828 Vous remarquerez que la retouche continue à s'appliquer au 
2829 second bloc de croches de la première voix mais qu'il ne s'applique 
2830 à aucune barre de la deuxième voix.
2831
2832 @subheading force-hshift property
2833
2834 @c FIXME: formatting stuff  (ie not important right now IMO)
2835 @c @a nchor Chopin finally corrected TODOgp
2836
2837 Maintenant, nous sommes prêts à appliquer les dernières corrections  à
2838 l'exemple de Chopin présenté à la fin de @ref{I'm hearing Voices}, que 
2839 nous avions laissé dans cet état :
2840
2841 @lilypond[quote,verbatim,fragment,ragged-right]
2842 \new Staff \relative c'' {
2843   \key aes \major
2844   <<
2845     { c2 aes4. bes8 } \\
2846     { aes2 f4 fes   } \\
2847     { \voiceFour
2848       <ees c>2
2849       des2
2850     }
2851   >> |
2852   <c ees aes c>1 |
2853 }
2854 @end lilypond
2855
2856 @noindent
2857 Les deux plus basses notes du premier accord (c'est-à-dire celles de la 
2858 troisième voix) ne devraient pas être décalées de la colonne des deux 
2859 plus hautes notes. Pour y remédier, nous réglons le @code{force-hshift} 
2860 -- qui est une propriété de @code{NoteColumn} -- de ces notes sur zéro. 
2861 Ensuite, la note la plus basse du second accord serait mieux à droite des 
2862 notes plus hautes. Pour cela, nous réglons le @code{force-hshift} de cette 
2863 note sur 0.5 -- c'est-à-dire la moitié de la largeur d'une tête de note vers la 
2864 droite de la colonne des notes plus hautes.
2865
2866 Et voici le résultat final :
2867
2868 @cindex NoteColumn, example of overriding
2869 @cindex force-hshift property, example
2870
2871 @lilypond[quote,verbatim,fragment,ragged-right]
2872 \new Staff \relative c'' {
2873   \key aes \major
2874   <<
2875     { c2 aes4. bes8 } \\
2876     { aes2 f4 fes   } \\
2877     { \voiceFour
2878       \once \override NoteColumn #'force-hshift = #0 <ees c>2
2879       \once \override NoteColumn #'force-hshift = #0.5 des2
2880     }
2881   >> |
2882   <c ees aes c>1 |
2883 }
2884 @end lilypond
2885
2886
2887 @node Real music example
2888 @subsection Real music example
2889
2890 Pour terminer ce chapitre consacré aux retouches, voici, étape par 
2891 étape, la mise en forme d'un exemple concret nécessitant un certain 
2892 nombre de retouches jusqu'à l'obtention du résultat attendu. Cet exemple 
2893 a été choisi en raison des problèmes inhabituels de notation qu'il soulevait 
2894 et pour vous apprendre à les résoudre grâce au Manuel de notation.  Il
2895 n'est pas représentatif d'une opération normale de gravure ; que ces 
2896 difficultés ne vous découragent donc pas ! Des difficultés comme celles-ci 
2897 ne sont, heureusement, pas courantes !
2898
2899 Cet exemple est tiré de la Première Ballade de Chopin, Op. 23, mesures 
2900 6 à 9 ; cela correspond à la transition entre le Lento d'ouverture et le 
2901 Moderato. Voici, pour commencer, ce à quoi nous voulons que la 
2902 partition ressemble ; pour limiter les complications, nous n'avons pas 
2903 fait apparaître les indications de nuances, de doigté ni de pédale.
2904
2905
2906 @c The following should appear as music without code
2907 @c This example should not be indexed
2908 @lilypond[quote,ragged-right]
2909 rhMusic = \relative c'' {
2910   r2
2911   c4.\( g8 |
2912   \once \override Tie #'staff-position = #3.5
2913   bes1~ |
2914   \bar "||"
2915   \time 6/4
2916   \mergeDifferentlyHeadedOn
2917   \mergeDifferentlyDottedOn
2918   bes2.^\markup {\bold "Moderato"} r8
2919   <<
2920     {c,8[ d fis bes a] | }
2921   \\
2922     % Reposition the c2 to the right of the merged note
2923     {c,8~ \once \override NoteColumn #'force-hshift = #1.0
2924     % Move the c2 out of the main note column so the merge will work
2925     \shiftOnn c2}
2926   \\
2927     % Stem on the d2 must be down to permit merging
2928     {s8 \stemDown \once \override Stem #'transparent = ##t d2}
2929   \\
2930     {s4 fis4.}
2931   >>
2932   \mergeDifferentlyHeadedOff
2933   \mergeDifferentlyDottedOff
2934   g2.\)
2935 }
2936
2937 lhMusic = \relative c' {
2938   r2 <c g ees>2( |
2939   <d g, d>1)\arpeggio |
2940   r2. d,,4 r4 r |
2941   r4
2942 }
2943
2944 \score {
2945   \new PianoStaff <<
2946     \new Staff = "RH"  <<
2947       \key g \minor
2948       \rhMusic
2949     >>
2950     \new Staff = "LH" <<
2951       \key g \minor
2952       \clef "bass"
2953       \lhMusic
2954     >>
2955   >>
2956 }
2957 @end lilypond
2958
2959 Nous constatons tout d'abord que, dans la troisième mesure, la main 
2960 droite compte quatre voix. Ce sont les cinq croches avec une barre, 
2961 le do avec liaison, le ré blanche qui se fond avec le ré croche, et le 
2962 fa dièse noire pointée qui se fond lui aussi avec la croche de même 
2963 hauteur. Tout le reste se réduit à une seule voix. Le plus simple est 
2964 donc de créer temporairement ces quatre voix au moment opportun. 
2965 Si vous avez oublié comment faire, reportez-vous à 
2966 @ref{I'm hearing Voices}. Commençons par saisir les notes comme 
2967 appartenant à deux variables, mettons en place l'ossature des 
2968 portées dans un bloc score et voyons ce que LilyPond propose par 
2969 défaut : 
2970
2971 @lilypond[quote,verbatim,ragged-right]
2972 rhMusic = \relative c'' {
2973   r2 c4. g8 |
2974   bes1~ |
2975   \time 6/4
2976   bes2. r8
2977   % Start polyphonic section of four voices
2978   <<
2979     {c,8 d fis bes a | }
2980   \\
2981     {c,8~ c2 | }
2982   \\
2983     {s8 d2 | }
2984   \\
2985     {s4 fis4. | }
2986   >>
2987   g2.
2988 }
2989
2990 lhMusic = \relative c' {
2991   r2 <c g ees>2 |
2992   <d g, d>1 |
2993   r2. d,,4 r4 r |
2994   r4
2995 }
2996
2997 \score {
2998   \new PianoStaff <<
2999     \new Staff = "RH"  <<
3000       \key g \minor
3001       \rhMusic
3002     >>
3003     \new Staff = "LH" <<
3004       \key g \minor
3005       \clef "bass"
3006       \lhMusic
3007     >>
3008   >>
3009 }
3010 @end lilypond
3011
3012 Toutes les notes sont correctes mais l'allure générale est loin d'être 
3013 satisfaisante. La liaison se heurte à l'indication de mesure lors du 
3014 changement de chiffrage, la barre des croches n'est pas bonne dans la 
3015 troisième mesure, les notes ne sont pas fusionnées et il manque plusieurs 
3016 éléments de notation. Commençons par le plus simple. Nous pouvons 
3017 corriger la barre des croches en la créant manuellement et nous pouvons 
3018 facilement ajouter les limites droite et gauche de la liaison de phrasé, 
3019 puisque tout cela a déjà été traité dans le tutoriel. Voici le résultat :
3020
3021 @lilypond[quote,verbatim,ragged-right]
3022 rhMusic = \relative c'' {
3023   r2 c4.\( g8 |
3024   bes1~ |
3025   \time 6/4
3026   bes2. r8
3027   % Start polyphonic section of four voices
3028   <<
3029     {c,8[ d fis bes a] | }
3030   \\
3031     {c,8~ c2 | }
3032   \\
3033     {s8 d2 | }
3034   \\
3035     {s4 fis4. | }
3036   >>
3037   g2.\)
3038 }
3039
3040 lhMusic = \relative c' {
3041   r2 <c g ees>2( |
3042   <d g, d>1) |
3043   r2. d,,4 r4 r |
3044   r4
3045 }
3046
3047 \score {
3048   \new PianoStaff <<
3049     \new Staff = "RH"  <<
3050       \key g \minor
3051       \rhMusic
3052     >>
3053     \new Staff = "LH" <<
3054       \key g \minor
3055       \clef "bass"
3056       \lhMusic
3057     >>
3058   >>
3059 }
3060 @end lilypond
3061
3062 La première mesure est maintenant correcte. La seconde contient un arpège 
3063 et doit se terminer par une double barre. Comment faire, puisque cela n'a pas 
3064 été traité dans le Manuel d'initiation ? C'est alors qu'il faut nous
3065 reporter au Manuel de notation.  Quand on cherche @q{arpège} et @q{barre
3066 de mesure} dans l'index, on voit aisément qu'il faut ajouter
3067 @code{\arpeggio} à un accord pour produire un arpège et qu'une double
3068 barre est le résultat de la commande @code{\bar "||"}.  Rien de plus
3069 facile ! Nous devons ensuite corriger la collision entre la liaison et
3070 l'indication de mesure. Le mieux est de déplacer la liaison vers le
3071 haut. La méthode pour déplacer les objets a déjà été présentée dans
3072 @ref{Moving objects}, et l'on sait que, pour des objets positionnés par
3073 rapport à la portée, il nous faut modifier leur propriété
3074 @code{staff-position}, exprimée en demi-intervalles de lignes par
3075 rapport à la ligne médiane de la portée.  Voici donc la retouche à
3076 insérer juste devant la première note liée ; elle est censée déplacer la
3077 liaison vers le haut de 3,5 demi-intervalles de lignes au-dessus de la
3078 ligne médiane : 
3079
3080 @code{\once \override Tie #'staff-position = #3.5}
3081
3082 Cela s'adjoint à la deuxième mesure, pour donner :
3083
3084 @lilypond[quote,verbatim,ragged-right]
3085 rhMusic = \relative c'' {
3086   r2 c4.\( g8 |
3087   \once \override Tie #'staff-position = #3.5
3088   bes1~ |
3089   \bar "||"
3090   \time 6/4
3091   bes2. r8
3092   % Start polyphonic section of four voices
3093   <<
3094     {c,8[ d fis bes a] | }
3095   \\
3096     {c,8~ c2 | }
3097   \\
3098     {s8 d2 | }
3099   \\
3100     {s4 fis4. | }
3101   >>
3102   g2.\)
3103 }
3104
3105 lhMusic = \relative c' {
3106   r2 <c g ees>2( |
3107   <d g, d>1)\arpeggio |
3108   r2. d,,4 r4 r |
3109   r4
3110 }
3111
3112 \score {
3113   \new PianoStaff <<
3114     \new Staff = "RH"  <<
3115       \key g \minor
3116       \rhMusic
3117     >>
3118     \new Staff = "LH" <<
3119       \key g \minor
3120       \clef "bass"
3121       \lhMusic
3122     >>
3123   >>
3124 }
3125 @end lilypond
3126
3127 Venons-en à la troisième mesure et au début de la section Moderato. Dans 
3128 le Tutoriel, il est indiqué comment insérer du texte en gras à l'aide de la 
3129 commande @code{\markup} ; pas de problème, du coup, pour ajouter 
3130 @q{Moderato} en gras. Mais comment faire pour fusionner les notes de 
3131 différentes voix ? C'est là que le Manuel de notation peut nous venir en 
3132 aide. Une recherche sur @q{fusionnement de notes} dans l'index nous renvoie, 
3133 dans @ruser{Collision resolution}, aux  commandes pour fusionner les notes, 
3134 différentes en fonction du type de note et selon que celles-ci sont
3135 pointées ou non.  Dans notre exemple, pour la durée de la polyphonie de
3136 la troisième mesure, nous avons besoin de fusionner deux types de notes
3137 ; grâce aux informations trouvées dans le Manuel de notation, nous
3138 ajoutons  
3139
3140 @example
3141 \mergeDifferentlyHeadedOn
3142 \mergeDifferentlyDottedOn
3143 @end example
3144
3145 @noindent
3146 au début de cette section et
3147
3148 @example
3149 \mergeDifferentlyHeadedOff
3150 \mergeDifferentlyDottedOff
3151 @end example
3152
3153 @noindent
3154 à la fin, ce qui donne : 
3155
3156 @lilypond[quote,verbatim,ragged-right]
3157 rhMusic = \relative c'' {
3158   r2 c4.\( g8 |
3159   \once \override Tie #'staff-position = #3.5
3160   bes1~ |
3161   \bar "||"
3162   \time 6/4
3163   bes2.^\markup {\bold "Moderato"} r8
3164   \mergeDifferentlyHeadedOn
3165   \mergeDifferentlyDottedOn
3166   % Start polyphonic section of four voices
3167   <<
3168     {c,8[ d fis bes a] | }
3169   \\
3170     {c,8~ c2 | }
3171   \\
3172     {s8 d2 | }
3173   \\
3174     {s4 fis4. | }
3175   >>
3176   \mergeDifferentlyHeadedOff
3177   \mergeDifferentlyDottedOff
3178   g2.\)
3179 }
3180
3181 lhMusic = \relative c' {
3182   r2 <c g ees>2( |
3183   <d g, d>1)\arpeggio |
3184   r2. d,,4 r4 r |
3185   r4
3186 }
3187
3188 \score {
3189   \new PianoStaff <<
3190     \new Staff = "RH"  <<
3191       \key g \minor
3192       \rhMusic
3193     >>
3194     \new Staff = "LH" <<
3195       \key g \minor
3196       \clef "bass"
3197       \lhMusic
3198     >>
3199   >>
3200 }
3201 @end lilypond
3202
3203 Ces retouches ont permis de fusionner les deux fa dièse mais pas les 
3204 deux ré. Pourquoi ? La réponse se trouve dans la même section du 
3205 Manuel de notation : les notes à fusionner doivent avoir des queues dans 
3206 des directions opposées et deux notes ne peuvent pas être fusionnées s'il 
3207 y a une troisième note dans la même colonne. Ici, les deux ré ont leur 
3208 queue orientée vers le haut et il y a une troisième note, do. Nous 
3209 savons changer l'orientation de la queue avec @code{\stemDown} et 
3210 le Manuel de notation nous indique également comment déplacer le do 
3211 -- en produisant un décalage grâce à l'une des commandes @code{\shift}.
3212 Mais laquelle ? Le do appartient à la deuxième voix et n'est pas décalé ; 
3213 les deux ré appartiennent respectivement à la première et à la troisième 
3214 voix, et l'un n'est pas décalé tandis que l'autre l'est. Il nous faut donc 
3215 décaler largement le do avec la commande @code{\shiftOnn} pour 
3216 éviter une interférence avec les deux ré. Voici ce que donnent ces 
3217 modifications : 
3218
3219 @cindex Tie, example of overriding
3220 @cindex staff-position property, example
3221
3222 @lilypond[quote,verbatim,ragged-right]
3223 rhMusic = \relative c'' {
3224   r2 c4.\( g8 |
3225   \once \override Tie #'staff-position = #3.5
3226   bes1~ |
3227   \bar "||"
3228   \time 6/4
3229   bes2.^\markup {\bold "Moderato"} r8
3230   \mergeDifferentlyHeadedOn
3231   \mergeDifferentlyDottedOn
3232   % Start polyphonic section of four voices
3233   <<
3234     {c,8[ d fis bes a] | }
3235   \\
3236     % Move the c2 out of the main note column so the merge will work
3237     {c,8~ \shiftOnn c2 | }
3238   \\
3239     % Stem on the d2 must be down to permit merging
3240     {s8 \stemDown d2 | }
3241   \\
3242     {s4 fis4. | }
3243   >>
3244   \mergeDifferentlyHeadedOff
3245   \mergeDifferentlyDottedOff
3246   g2.\)
3247 }
3248
3249 lhMusic = \relative c' {
3250   r2 <c g ees>2( |
3251   <d g, d>1)\arpeggio |
3252   r2. d,,4 r4 r |
3253   r4
3254 }
3255
3256 \score {
3257   \new PianoStaff <<
3258     \new Staff = "RH"  <<
3259       \key g \minor
3260       \rhMusic
3261     >>
3262     \new Staff = "LH" <<
3263       \key g \minor
3264       \clef "bass"
3265       \lhMusic
3266     >>
3267   >>
3268 }
3269 @end lilypond
3270
3271 Pas loin. Il ne reste plus que deux problèmes : les ré une fois fusionnés 
3272 ne devraient plus avoir de queue vers le bas, et le do serait mieux à la 
3273 droite des ré. Nous savons remédier à ces deux problèmes grâce aux 
3274 retouches précédentes : nous allons rendre la queue transparente et 
3275 déplacer le do avec la propriété @code{force-hshift}. Et voici le 
3276 résultat final : 
3277
3278 @cindex NoteColumn, example of overriding
3279 @cindex force-hshift property, example
3280 @cindex Stem, example of overriding
3281 @cindex transparent property, example
3282
3283 @lilypond[quote,verbatim,ragged-right]
3284 rhMusic = \relative c'' {
3285   r2
3286   c4.\( g8 |
3287   \once \override Tie #'staff-position = #3.5
3288   bes1~ |
3289   \bar "||"
3290   \time 6/4
3291   bes2.^\markup {\bold "Moderato"} r8
3292   \mergeDifferentlyHeadedOn
3293   \mergeDifferentlyDottedOn
3294   <<
3295     {c,8[ d fis bes a] | }
3296   \\
3297     % Reposition the c2 to the right of the merged note
3298     {c,8~ \once \override NoteColumn #'force-hshift = #1.0
3299     % Move the c2 out of the main note column so the merge will work
3300     \shiftOnn c2}
3301   \\
3302     % Stem on the d2 must be down to permit merging
3303     {s8 \stemDown \once \override Stem #'transparent = ##t d2}
3304   \\
3305     {s4 fis4.}
3306   >>
3307   \mergeDifferentlyHeadedOff
3308   \mergeDifferentlyDottedOff
3309   g2.\)
3310 }
3311
3312 lhMusic = \relative c' {
3313   r2 <c g ees>2( |
3314   <d g, d>1)\arpeggio |
3315   r2. d,,4 r4 r |
3316   r4
3317 }
3318
3319 \score {
3320   \new PianoStaff <<
3321     \new Staff = "RH"  <<
3322       \key g \minor
3323       \rhMusic
3324     >>
3325     \new Staff = "LH" <<
3326       \key g \minor
3327       \clef "bass"
3328       \lhMusic
3329     >>
3330   >>
3331 }
3332
3333 @end lilypond
3334
3335
3336 @node Further tweaking
3337 @section Further tweaking
3338
3339 @menu
3340 * Other uses for tweaks::       
3341 * Using variables for tweaks::  
3342 * Other sources of information::  
3343 * Avoiding tweaks with slower processing::  
3344 * Advanced tweaks with Scheme::  
3345 @end menu
3346
3347 @node Other uses for tweaks
3348 @subsection Other uses for tweaks
3349
3350 @cindex transparent property, use of
3351 @cindex objects, making invisible
3352 @cindex removing objects
3353 @cindex objects, removing
3354 @cindex hiding objects
3355 @cindex objects, hiding
3356 @cindex invisible objects
3357 @cindex objects, invisible
3358 @cindex tying notes across voices
3359
3360 @subheading Tying notes across voices
3361
3362 Voici un exemple qui montre comment créer une liaison de 
3363 prolongation entre des notes appartenant à des voix différentes. En 
3364 temps normal, seules deux notes appartenant à une même voix 
3365 peuvent être ainsi liées. La solution consiste à utiliser deux voix, 
3366 dont l'une avec les notes liées
3367
3368 @lilypond[quote,fragment,relative=2]
3369 << { b8~ b8\noBeam }
3370 \\ { b[ g8] }
3371 >>
3372 @end lilypond
3373
3374 @noindent
3375 et à rendre transparente la première queue de note de cette voix ; 
3376 on a alors l'impression que la liaison couvre les deux voix.
3377
3378 @cindex Stem, example of overriding
3379 @cindex transparent propery, example
3380
3381 @lilypond[quote,fragment,relative=2,verbatim]
3382 <<
3383   {
3384     \once \override Stem #'transparent = ##t
3385     b8~ b8\noBeam
3386   }
3387 \\
3388   { b[ g8] }
3389 >>
3390 @end lilypond
3391
3392 Pour être sûr que la queue que nous avons rendue transparente 
3393 n'empiète pas trop sur le trait de liaison, nous pouvons l'allonger en 
3394 réglant la longueur (@code{length}) sur @code{8},
3395
3396 @lilypond[quote,fragment,relative=2,verbatim]
3397 <<
3398   {
3399     \once \override Stem #'transparent = ##t
3400     \once \override Stem #'length = #8
3401     b8~ b8\noBeam
3402   }
3403 \\
3404   { b[ g8] }
3405 >>
3406 @end lilypond
3407
3408 @subheading Simulating a fermata in MIDI
3409
3410 @cindex stencil property, use of
3411 @cindex fermata, implementing in MIDI
3412
3413 En ce qui concerne les objets extérieurs à la portée, quand on veut les 
3414 faire disparaître de la partition imprimée , il est généralement préférable 
3415 de modifier leur propriété @code{stencil} plutôt que leur propriété 
3416 @code{transparent}. Le fait d'attribuer à la propriété @code{stencil} 
3417 d'un objet la valeur @code{#f} supprimera entièrement celui-ci de la 
3418 partition. Il ne risquera donc pas de gêner le placement d'autres objets.
3419
3420 Par exemple, si nous voulons changer le réglage de métronome pour 
3421 simuler un point d'orgue dans le fichier MIDI, nous ne voulons surtout 
3422 pas que cette indication métronomique apparaisse sur la partition ni 
3423 qu'elle influence l'espacement entre les deux systèmes ou la position 
3424 des annotations voisines sur la portée. Le fait d'attribuer à la propriété 
3425 @code{stencil} la valeur @code{#f} est donc la bonne solution. Nous 
3426 montrons ci-dessous le résultat des deux méthodes : 
3427
3428 @cindex MetronomeMark, example of overriding
3429 @cindex transparent property, example
3430
3431 @lilypond[quote,verbatim,ragged-right]
3432 \score {
3433   \relative c'' {
3434     % Visible tempo marking
3435     \tempo 4=120
3436     a4 a a
3437     \once \override Score.MetronomeMark #'transparent = ##t
3438     % Invisible tempo marking to lengthen fermata in MIDI
3439     \tempo 4=80
3440     a\fermata
3441     % New tempo for next section
3442     \tempo 4=100
3443     a a a a
3444   }
3445   \layout { }
3446   \midi { }
3447 }
3448 @end lilypond
3449
3450 @cindex MetronomeMark, example of overriding
3451 @cindex stencil property, example
3452
3453 @lilypond[quote,verbatim,ragged-right]
3454 \score {
3455   \relative c'' {
3456     % Visible tempo marking
3457     \tempo 4=120
3458     a4 a a
3459     \once \override Score.MetronomeMark #'stencil = ##f
3460     % Invisible tempo marking to lengthen fermata in MIDI
3461     \tempo 4=80
3462     a\fermata
3463     % New tempo for next section
3464     \tempo 4=100
3465     a a a a
3466   }
3467   \layout { }
3468   \midi { }
3469 }
3470 @end lilypond
3471
3472 @noindent
3473 Les deux méthodes permettent l'enlever l'indication métronomique qui allonge 
3474 le point d'orgue de la partition, et toutes deux modifient le rythme MIDI comme 
3475 souhaité, mais, dans la première, l'indication métronomique transparente 
3476 repousse vers le haut l'indication de tempo, contrairement à la seconde (avec 
3477 le stencil désactivé) qui la laisse à sa place.
3478
3479
3480 @node Using variables for tweaks
3481 @subsection Using variables for tweaks
3482
3483 @cindex variables, using for tweaks
3484 @cindex using variables for tweaks
3485 @cindex tweaks, using variables for
3486
3487 Les commandes de retouche sont souvent longues et pénibles à 
3488 taper, et ne tolèrent pas la moindre erreur. Lorsqu'on a besoin de 
3489 faire plusieurs fois les mêmes retouches, il est préférable de 
3490 définir des variables qui les contiennent. Imaginons que nous 
3491 voulions accentuer certains mots dans des paroles en les mettant 
3492 en italiques. Au lieu des commandes @code{\italic} et 
3493 @code{\bold}, qui ne fonctionnent dans les paroles que si elles 
3494 sont enchâssées dans un @code{\markup}, ce qui les rend 
3495 pénibles à saisir, pouvons-nous employer les commandes 
3496 @code{\override} et @code{\revert}?
3497
3498 @example
3499 @code{\override Lyrics . LyricText #'font-shape = #'italic}
3500 @code{\override Lyrics . LyricText #'font-series = #'bold}
3501
3502 @code{\revert Lyrics . LyricText #'font-shape}
3503 @code{\revert Lyrics . LyricText #'font-series}
3504 @end example
3505
3506 Là encore, ce serait extrêmement pénible à saisir, surtout s'il y avait 
3507 beaucoup de mots à retoucher de cette façon. Plutôt que cette 
3508 solution, nous déclarons ces commandes comme étant deux variables 
3509 et les utilisons comme suit -- quoique on choisirait sans doute pour les 
3510 variables des noms plus courts pour simplifier la frappe : 
3511
3512 @cindex LyricText, example of overriding
3513 @cindex font-shape property, example
3514 @cindex font-series property, example
3515
3516 @lilypond[quote,verbatim]
3517 emphasize = {
3518   \override Lyrics . LyricText #'font-shape = #'italic
3519   \override Lyrics . LyricText #'font-series = #'bold
3520 }
3521 normal = {
3522   \revert Lyrics . LyricText #'font-shape
3523   \revert Lyrics . LyricText #'font-series
3524 }
3525
3526 global = { \time 4/4 \partial 4 \key c \major}
3527 SopranoMusic   = \relative c' { c4 | e4. e8 g4  g  | a a g }
3528 AltoMusic  = \relative c' { c4 | c4. c8 e4  e  | f f e }
3529 TenorMusic = \relative c  { e4 | g4. g8 c4. b8 | a8 b c d e4 }
3530 BassMusic  = \relative c  { c4 | c4. c8 c4  c  | f8 g a b c4 }
3531 VerseOne   = \lyrics { E -- | ter -- nal \emphasize Fa -- ther, \normal | strong to save, }
3532 VerseTwo   = \lyricmode { O | \emphasize Christ, \normal whose voice the | wa -- ters heard, }
3533 VerseThree = \lyricmode { O | \emphasize Ho -- ly Spi -- rit, \normal | who didst brood }
3534 VerseFour  = \lyricmode { O | \emphasize Tri -- ni -- ty \normal of | love and pow'r }
3535
3536 \score {
3537   \new ChoirStaff <<
3538     \new Staff <<
3539       \clef "treble"
3540       \new Voice = "Soprano"  { \voiceOne \global \SopranoMusic }
3541       \new Voice = "Alto" { \voiceTwo \AltoMusic }
3542       \new Lyrics \lyricsto "Soprano" { \VerseOne   }
3543       \new Lyrics \lyricsto "Soprano" { \VerseTwo   }
3544       \new Lyrics \lyricsto "Soprano" { \VerseThree }
3545       \new Lyrics \lyricsto "Soprano" { \VerseFour  }
3546     >>
3547     \new Staff <<
3548       \clef "bass"
3549       \new Voice = "Tenor" { \voiceOne \TenorMusic }
3550       \new Voice = "Bass"  { \voiceTwo \BassMusic  }
3551     >>
3552   >>
3553 }
3554 @end lilypond
3555
3556
3557 @node Other sources of information
3558 @subsection Other sources of information
3559
3560 La Référence du programme contient beaucoup d'informations sur 
3561 LilyPond. Cependant vous pouvez en découvrir 
3562 encore plus en consultant les fichiers internes de LilyPond. Pour cela, 
3563 il vous faut d'abord connaître le répertoire ad hoc sur votre système. 
3564 L'emplacement du répertoire dépend (a) du fait que, pour vous procurer 
3565 LilyPond, vous avez téléchargé un paquet précompilé sur lilypond.org, ou 
3566 vous l'avez installé grâce à votre gestionnaire de paquetages (c'est-à-dire 
3567 distribué avec Linux ou installé avec fink ou cygwin), ou encore vous l'avez 
3568 compilé directement à partir des sources ; et (b) du système d'exploitation 
3569 sous lequel il tourne. 
3570
3571 @strong{Téléchargé depuis lilypond.org}
3572
3573 @itemize @bullet
3574 @item Linux
3575
3576 @file{@var{INSTALLDIR}/lilypond/usr/share/lilypond/current/}
3577
3578 @item MacOS X
3579
3580 @file{@var{INSTALLDIR}/LilyPond.app/Contents/Resources/share/lilypond/current/}
3581 Pour accéder à ce dossier, deux possibilités : soit, dans un Terminal,
3582 taper @code{cd} suivi du chemin complet ci-dessus ; soit
3583 Control-cliquer (ou clic droit) sur l'application LilyPond
3584 et sélectionner @q{Afficher le contenu du paquet}.
3585
3586 @item Windows
3587
3588 Dans l'Explorateur Windows, voir
3589 @file{@var{INSTALLDIR}/LilyPond/usr/share/lilypond/current/}
3590
3591 @end itemize
3592
3593 @strong{Installé par un gestionnaire de paquetages ou compilé d'après
3594 les sources} 
3595
3596 @file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/}, où
3597 @var{PREFIX} est déterminé par votre gestionnaire de paquetages ou par le script 
3598 @code{configure}, et @var{X.Y.Z} est le numéro de version de LilyPond.
3599
3600 @smallspace
3601
3602 Dans ce répertoire, deux sous-répertoires sont particulièrement intéressants :
3603
3604 @itemize
3605 @item @file{ly/} - contient les fichiers en format LilyPond
3606 @item @file{scm/} - contient les fichiers en format Scheme
3607 @end itemize
3608
3609 Commençons par examiner quelques fichiers contenus dans @file{ly/}.
3610 Nous ouvrons @file{ly/property-init.ly} dans un éditeur de texte -- celui 
3611 que vous avez l'habitude d'utiliser pour les fichiers @code{.ly} fera très 
3612 bien l'affaire. Ce fichier contient les définitions de toutes les commandes 
3613 standard prédéfinies de LilyPond, comme @code{\stemUp} et 
3614 @code{\slurDotted}. Vous pouvez constater que ce n'est rien d'autre 
3615 que des définitions de variables composées d'un ou plusieurs groupes 
3616 de commandes @code{\override}. Par exemple, @code{\tieDotted} 
3617 est défini comme :
3618
3619 @example
3620 tieDotted = @{
3621   \override Tie #'dash-period = #0.75
3622   \override Tie #'dash-fraction = #0.1
3623 @}
3624 @end example
3625
3626 Si vous n'aimez pas les valeurs par défaut, les commandes prédéfinies
3627 peuvent être facilement redéfinies, comme n'importe quelle autre variable,
3628 en tête de votre fichier d'entrée.
3629
3630 Voici les fichiers les plus utiles dans le répertoire @file{ly/}:
3631
3632 @multitable @columnfractions .4 .6
3633 @headitem Nom de fichier
3634   @tab Contenu
3635 @item @file{ly/engraver-init.ly}
3636   @tab Définitions des Contextes de graveurs
3637 @item @file{ly/paper-defaults-init.ly}
3638   @tab Réglages papier par défaut
3639 @item @file{ly/performer-init.ly}
3640   @tab Définitions des Contextes d'interprétation
3641 @item @file{ly/property-init.ly}
3642   @tab Définitions de toutes les commandes prédéfinies courantes
3643 @item @file{ly/spanner-init.ly}
3644   @tab Définitions des commandes prédéfinies pour les bandeaux 
3645 @end multitable
3646
3647 Les autres réglages (comme les définitions de commandes markup) sont 
3648 conservés comme fichiers @code{.scm} (Scheme). Le langage de 
3649 programmation Scheme offre une interface programmable dans le 
3650 processus interne de LilyPond. De plus amples explications sur ces 
3651 fichiers dépasseraient le cadre de ce manuel, dans la mesure où elles 
3652 requièrent la connaissance du langage Scheme. Les utilisateurs qui 
3653 souhaiteraient comprendre le fonctionnement de ces fichiers de 
3654 configuration doivent être avertis que des connaissances techniques 
3655 substantielles et beaucoup de temps sont nécessaires (voir 
3656 @ref{Scheme tutorial}).
3657
3658 Si c'est votre cas, les fichiers Scheme les plus utiles à connaître sont :
3659
3660 @multitable @columnfractions .4 .6
3661 @headitem Nom de fichier
3662   @tab Contenu
3663 @item @file{scm/auto-beam.scm}
3664   @tab Régles par défaut des ligatures subalternes
3665 @item @file{scm/define-grobs.scm}
3666   @tab Réglages par défaut des propriétés de grobs
3667 @item @file{scm/define-markup-commands.scm}
3668   @tab Spécification de toutes les commandes de @emph{markup}
3669 @item @file{scm/midi.scm}
3670   @tab Réglages par défaut pour les sorties MIDI
3671 @item @file{scm/output-lib.scm}
3672   @tab Réglages affectant l'apparence des frets, couleurs, altérations,
3673        barres de mesure, etc
3674 @item @file{scm/parser-clef.scm}
3675         @tab Définition des clefs prises en charge
3676 @item @file{scm/script.scm}
3677         @tab Réglages par défaut des articulations
3678 @end multitable
3679
3680
3681
3682 @node Avoiding tweaks with slower processing
3683 @subsection Avoiding tweaks with slower processing
3684
3685 LilyPond peut effectuer des vérifications supplémentaires lors du 
3686 traitement des fichiers ; cependant, le rendu nécessitera alors plus de
3687 temps.  En contrepartie, il y aura moins d'ajustements manuels à réaliser. 
3688 Si une indication textuelle ou des paroles  débordent dans la marge, ces 
3689 vérifications auront pour effet de serrer la ligne suffisamment pour faire 
3690 tenir le texte entre les marges. 
3691
3692 Pour pouvoir fonctionner en toutes circonstances, ces vérifications doivent 
3693 être activées ; il faut pour cela placer les retouches dans un bloc Score 
3694 @code{\with}, plutôt qu'à l'intérieur du fragment musical, comme ceci :
3695
3696 @example
3697 \new Score \with @{
3698   % Pour s'assurer que les indications textuelles et paroles 
3699   % seront à l'intérieur des marges de la page.
3700   \override PaperColumn #'keep-inside-line = ##t
3701   \override NonMusicalPaperColumn #'keep-inside-line = ##t
3702 @} @{
3703    ..
3704 @}
3705 @end example
3706
3707
3708 @node Advanced tweaks with Scheme
3709 @subsection Advanced tweaks with Scheme
3710
3711 Nous avons vu à quel point le résultat obtenu avec LilyPond peut 
3712 être largement personnalisé à l'aide de commandes comme 
3713 @code{\override} et @code{\tweak}.  Et pourtant l'utilisation de 
3714 Scheme ouvre des possibilités encore plus grandes.
3715 Le code écrit dans le langage de programmation Scheme peut être 
3716 intégré directement dans le processus interne de LilyPond. Bien sûr, 
3717 il faut pour cela connaître un minimum de programmation en langage 
3718 Scheme. Pour des explications complètes là-dessus, consultez le 
3719 @ref{Scheme tutorial}.
3720
3721 En guise d'illustration - et ce n'est qu'une possibilité parmi tant 
3722 d'autres -- nous allons attribuer à une propriété non pas une valeur 
3723 préétablie mais une procédure Scheme qui sera lancée à chaque 
3724 utilisation de la propriété par LilyPond. De cette façon, nous obtenons 
3725 un réglage dynamique de la propriété par le simple fait d'invoquer la 
3726 procédure. Dans cet exemple, nous colorons les têtes de notes en fonction 
3727 de leur position sur la portée. 
3728
3729
3730 @cindex x11-color function, example of using
3731 @cindex NoteHead, example of overriding
3732 @cindex color property, setting to Scheme procedure
3733
3734 @lilypond[quote,verbatim,ragged-right]
3735 #(define (color-notehead grob)
3736   "Color the notehead according to its position on the staff."
3737   (let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7)))
3738     (case mod-position
3739       ;;   Return rainbow colors
3740       ((1) (x11-color 'red    ))  ; for C
3741       ((2) (x11-color 'orange ))  ; for D
3742       ((3) (x11-color 'yellow ))  ; for E
3743       ((4) (x11-color 'green  ))  ; for F
3744       ((5) (x11-color 'blue   ))  ; for G
3745       ((6) (x11-color 'purple ))  ; for A
3746       ((0) (x11-color 'violet ))  ; for B
3747     )
3748   )
3749 )
3750
3751 \relative c' {
3752   % Arrange to obtain color from color-notehead procedure
3753   \override NoteHead #'color = #color-notehead
3754   c2 c' |
3755   b4 g8 a b4 c |
3756   c,2 a' |
3757   g1 |
3758 }
3759 \addlyrics {
3760   Some -- where o -- ver the Rain -- bow, way up high,
3761 }
3762 @end lilypond
3763
3764 Vous trouverez dans @ref{Tweaking with Scheme} d'autres exemples d'utilisation de ces interfaces programmables.
3765