1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
3 Translation of GIT committish: 321993f3a277f69471fcacbb6afc12857faa4e8c
5 When revising a translation, copy the HEAD committish of the
6 version that you are working on. For details, see the Contributors'
7 Guide, node Updating translation committishes..
12 @c Translators: Jean-Charles Malahieude
13 @c Translation checkers:
15 @node Exécution de lilypond
16 @chapter Exécution de @command{lilypond}
17 @translationof Running lilyPond
19 Ce chapitre passe en revue ce qui se passe lorsque vous lancez LilyPond.
22 * Utilisation habituelle::
23 * Utilisation en ligne de commande::
25 * Quelques erreurs des plus courantes::
28 @node Utilisation habituelle
29 @section Utilisation habituelle
30 @translationof Normal usage
32 La plupart des utilisateurs de LilyPond le font au travers d'une
33 interface graphique (@emph{GUI} pour @emph{graphical user interface}).
34 Si vous ne l'avez pas encore parcouru, lisez le @rlearning{Tutoriel}.
35 Si vous utilisez un éditeur alternatif pour rédiger vos fichiers
36 LilyPond, référez-vous à la documentation de celui-ci.
39 @node Utilisation en ligne de commande
40 @section Utilisation en ligne de commande
41 @translationof Command-line usage
43 Nous nous intéresserons ici aux spécificités de LilyPond employé en
44 ligne de commande. La ligne de commande permet de faire appel à
45 certaines options particulières. D'autre part, certains utilitaires
46 associés, tel que @code{midi2ly}, ne sont disponibles qu'en ligne de
49 Par @qq{ligne de commande}, nous entendons l'interface de commande du
50 système. Les utilisateurs de Windows seront certainement plus familiers
51 des termes @qq{fenêtre DOS} ou @qq{invite de commande}. Quant aux
52 utilisateurs de MacOS@tie{}X, ils connaissent assurément les termes
53 @qq{console} et @qq{terminal}. Les paramétrages spécifiques au système
54 MacOS font l'objet d'un @rwebnamed{MacOS X,chapitre particulier}.
56 Notre propos n'est pas ici d'expliquer ce qu'est l'interface de
57 commande pour un système informatique ni comment elle fonctionne.
58 Aussi, si vous ne savez de quoi il retourne, nous vous renvoyons aux
59 nombreuses documentations que vous pourrez trouver sur ce sujet.
63 * Lancement de lilypond::
64 * Options en ligne de commande pour lilypond::
65 * Variables d'environnement::
66 * Exécution de LilyPond en mode protégé::
69 @node Lancement de lilypond
70 @unnumberedsubsec Lancement de @command{lilypond}
71 @translationof Invoking lilypond
73 L'exécutable @command{lilypond} en ligne de commande se lance
77 lilypond [@var{option}]@dots{} @var{fichier}@dots{}
80 Lorsque le fichier est fourni sans extension, LilyPond présume qu'il
81 s'agit de @file{.ly}. Pour interpréter directement l'entrée standard
82 (@emph{stdin}), fournissez un tiret (@code{-}) en lieu et place de
85 Le traitement de @file{monfichier.ly} produira @file{monfichier.ps} et
86 @file{monfichier.pdf}. Vous pouvez spécifier plusieurs fichiers à la
87 fois@tie{}; ils seront traités indépendamment les uns des
88 autres.@footnote{Le statut de GUILE n'étant pas réinitialisé après
89 traitement d'un fichier @file{.ly}, veillez à ne pas modifier les
90 réglages par défaut du système à partir d'assertions en Scheme.}
92 Lorsque @file{monfichier.ly} contient plus d'une section @code{\book},
93 les fichiers produits -- à partir du deuxième -- seront numérotés. Par
94 ailleurs, la valeur affectée à @code{output-suffix} sera insérée entre la
95 racine et le numéro. Par exemple, un fichier @var{racine} qui
99 #(define output-suffix "violon")
101 #(define output-suffix "cello")
106 fournira grâce à LilyPond @file{@var{racine}-violon.pdf} et
107 @file{@var{racine}-cello-1.pdf}.
110 @unnumberedsubsubsec Commandes standard de l'interpréteur
111 @translationof Standard shell commands
113 Si votre interpréteur -- terminal, console, etc. -- prend en charge les
114 redirections, les commandes qui suivent vous permettront de
115 judicieusement rediriger les affichages de la console dans un
121 @code{lilypond fichier.ly 1>stdout.log} pour le verbiage normal
124 @code{lilypond fichier.ly 2>stderr.log} pour les messages d'erreur
127 @code{lilypond fichier.ly &>tous.log} pour garder une trace de tout ce
132 Consultez avant tout la documentation de votre interpréteur habituel
133 pour vérifier qu'il prend en charge ces options dans cette syntaxe.
134 Notez bien qu'il s'agit ici de commandes internes à l'interpréteur et
135 qui n'ont rien à voir avec LilyPond.
138 @node Options en ligne de commande pour lilypond
139 @unnumberedsubsec Options en ligne de commande pour @command{lilypond}
140 @translationof Command line options for lilypond
142 @cindex lancement de @command{lilypond}
143 @cindex ligne de commande, options pour @command{lilypond}
144 @cindex options, ligne de commande
148 Voici les différentes options disponibles à la ligne de commande@tie{}:
152 @item -d,--define-default=@var{var}=@var{val}
153 Affecte la valeur Scheme @var{val} à l'option interne @var{var} du
154 programme. En l'absence de @var{val}, le programme utilisera @var{#t}.
155 Préfixer @var{var} d'un @code{no-} vous permet de désactiver une option.
158 @cindex point and click, ligne de commande
159 @cindex pointer-cliquer, ligne de commande
171 Voici les options disponibles@tie{}:
173 @cindex help, ligne de commande
178 Lancer @code{lilypond -dhelp} affichera la liste de toutes les options
179 @code{-d} disponibles.
182 @cindex paper-size, ligne de commande
184 Détermine la taille par défaut du papier, par exemple
186 -dpaper-size=\"letter\"
190 Veillez à ne pas oublier d'encadrer la valeur par des guillemets
191 échappés ( @code{\"} ).
192 @c Match " in previous line to help context-sensitive editors
195 @cindex safe, ligne de commande
197 Ne pas avoir une confiance aveugle dans le code @file{.ly}.
199 Lorsque LilyPond est accessible au travers d'un serveur web, il est
200 @strong{impératif} d'utiliser les options @option{--safe} ou
201 @option{--jail}. L'option @option{--safe} aura pour effet d'empêcher
202 tout code Scheme inclus de mettre en péril votre installation grâce à
203 quelque chose du style
209 c4^$(ly:gulp-file "/etc/passwd")
214 L'option @code{-dsafe} forcera l'évaluation, au fil de l'eau et par un
215 module sécurisé, des expressions Scheme contenues dans le fichier
216 source. Ce module sécuritaire, dérivé du module GUILE @file{safe-r5rs},
217 ajoute un certain nombre de fonctions -- listées dans
218 @file{scm/safe-lily.scm} -- à l'API de LilyPond.
220 De plus, le mode @emph{safe} ne permet ni l'utilisation de directives
221 @code{\include} ni le recours aux obliques inversées (@emph{backslash})
222 dans les chaînes @TeX{}.
224 L'import de variables LilyPond dans du code Scheme n'est pas possible
227 L'option @code{-dsafe} @strong{ne détecte pas} l'utilisation abusive des
228 ressources. Il est donc possible que le programme finisse par rester
229 sans réponse si on lui envoie une boucle sans fin. C'est la raison pour
230 laquelle nous recommandons, lorsque LilyPond tourne sur un serveur
231 accessible au public, d'en limiter aussi bien les ressources processeur
234 Notez bien que l'utilisation du mode sécuritaire empêchera aussi la
235 compilation d'un certain nombre de fragments LilyPond. L'option
236 @code{--jail} est dans ce cas une excellente alternative en terme de
237 sécurité, même si elle requiert plus de temps à mettre en place.
240 @cindex format de sortie, définition
242 Détermine le format de sortie à utiliser par le moteur de traitement.
243 Les types de @code{format} reconnus sont
248 @cindex PostScript output
251 Les fichiers PostScript incluent les polices TTF, Type1 et OTF, et
252 aucune substitution ne sera opérée pour ces fontes. Si vous utilisez
253 des caractères orientaux, le fichier aura vite fait d'atteindre une
258 @cindex Postscript encapsulé
259 @cindex EPS (Encapsulated PostScript)
260 pour du PostScript encapsulé.
262 Chaque page (système) fera l'objet d'un fichier @file{EPS} particulier,
263 sans fontes, auquel sera associé un fichier @file{EPS} qui, lui,
264 contiendra toutes les pages (systèmes) et les fontes.
266 Notez qu'il s'agit du mode que @command{lilypond-book} utilise par défaut.
269 @cindex SVG (Scalable Vector Graphics)
270 pour du SVG (@emph{Scalable Vector Graphics}).
272 Cette option permet de créer un fichier SVG par page, sans incorporation
273 des fontes. Nous vous recommandons d'installer les fontes Century
274 Schoolbook comprises dans le paquetage LilyPond afin d'obtenir le
275 meilleur rendu possible. Sous UNIX, il suffit de les recopier, à partir
276 du répertoire @file{/usr/share/lilypond/VERSION/fonts/otf/}, dans
277 @file{~/.fonts/}. Les fichiers SVG alors générés devraient être
278 lisibles par votre éditeur SVG habituel.
282 pour une recopie brute des commandes Scheme internes de formatage.
285 permet de ne pas générer de partition imprimable. Cette option est
286 équivalente à @code{-dno-print-pages}.
290 Exemple : @code{lilypond -dbackend=svg @var{monfichier}.ly}
294 @cindex preview, ligne de commande
296 Cette option, disponible dans tous les formats de sortie imprimables --
297 @code{pdf}, @code{png}, @code{ps}, @code{eps} et @code{svg} -- génère
298 un fichier de la forme @code{monFichier.preview.extension} comprenant le
299 titrage et le premier système. S'il existe plusieurs sections
300 @code{\book}, @code{\bookpart}, ce fichier contiendra les titrage et
301 premier système de chacun des @code{\book}, @code{\bookpart} et
302 @code{\score}, dès lors que la variable @code{print-all-headers} du bloc
303 @code{\paper} est activée.
305 Pour l'éviter, utilisez conjointement l'une des options
306 @option{-dprint-pages} ou @option{-dno-print-pages} selon vos besoins.
309 Travaille silencieusement, et redirige tout le verbiage dans un fichier
312 Note à l'attention des utilisateurs de Windows@tie{}: toutes les
313 informations concernant le traitement apparaissent au fur et à mesure
314 dans l'interpréteur de commandes lorsque vous lancez le programme
315 @code{lilypond.exe}, à l'inverse de @w{@code{lilypond-windows.exe}} qui
316 vous renvoie simplement la main. L'option @option{-dgui} vous permettra
317 alors de rediriger ces informations dans un fichier journal.
320 Génère l'intégralité des pages de la partition. L'option
321 @option{-dno-print-pages} est particulièrement utile lorsqu'utilisée
322 conjointement avec l'option @option{-dpreview}.
327 @cindex Scheme, évaluation d'expression
328 @cindex expression Scheme, évaluation
329 @item -e,--evaluate=@var{expr}
330 Évalue l'expression Scheme @var{expr} avant d'analyser tout fichier
331 @file{.ly}. Lorsque vous spécifiez l'option @option{-e} à plusieurs
332 reprises, l'évaluation sera faite en séquence.
334 Dans la mesure où l'expression est évaluée par le module
335 @code{guile-user}, vous devrez, dès lors que @var{expr} utilise des
336 définitions, spécifier
339 lilypond -e '(define-public a 42)'
343 en ligne de commande, et ajouter la ligne
346 #(use-modules (guile-user))
350 en tête de votre fichier @file{.ly}.
352 @warning{Les utilisateurs de Windows doivent utiliser des quillements
353 doubles @code{"} en lieu et place des guillemets simples @code{'}.}
354 @c Match " in previous line to help context-sensitive editors
357 @cindex sortie, format
358 @cindex format de sortie
359 @item -f,--format=@var{format}
360 Détermine le format à produire. Il peut s'agir de @code{ps}, @code{pdf}
363 Exemple : @code{lilypond -fpng @var{monfichier}.ly}
367 Affiche un résumé des commandes.
370 @item -H,--header=@var{CHAMP}
371 Recopie le champ d'entête dans le fichier @file{RACINE.@var{CHAMP}}.
374 @item -i,--init=@var{fichier}
375 Définit @var{fichier} (par défaut @file{init.ly}) en tant que fichier
379 @cindex recherche de fichier
380 @cindex chemin de recherche
381 @item -I,--include=@var{répertoire}
383 Ajoute @var{répertoire} au chemin de recherche pour les inclusions.
385 Vous pouvez mentionner plusieurs fois l'option @option{-I}, auquel cas
386 la recherche commencera dans le premier répertoire inclus et, si le
387 fichier en question ne s'y trouve pas, les répertoires suivants seront
388 examinés l'un après l'autre.
391 @cindex chroot jail, fonctionnement
392 @item -j,--jail=@var{user},@var{group},@var{jail},@var{dir}
393 Lance @command{lilypond} dans un environnement protégé.
395 L'option @option{--jail} est une alternative qui offre plus de
396 flexibilité que l'option @option{--safe} lorsque LilyPond est installé
397 sur un serveur web ou traite des fichiers externes.
399 L'option @option{--jail} va détourner la racine de @command{lilypond}
400 sur @var{jail} juste avant d'effectuer la compilation à proprement
401 parler. L'utilisateur et le groupe sont modifiés en conséquence, et le
402 répertoire en cours devient @var{dir}. Ces réglages assurent -- du
403 moins en théorie -- l'impossibilité de s'échapper de la cellule. Notez
404 cependant que, pour que l'option @option{--jail} soit fonctionnelle,
405 @command{lilypond} doit être lancé en tant qu'administrateur -- ce qui
406 se réalise aisément à l'aide de la commande @command{sudo}.
408 La création d'un environnement sécurisé requiert quelques précautions
409 dans la mesure où LilyPond doit disposer de tout ce dont il a besoin
410 pour compiler le fichier source @strong{à l'intérieur de la cellule}.
411 L'ermitage, avant d'être viable, requiert donc les étapes
416 @item Création d'un système de fichiers indépendant
417 L'intérêt d'un système de fichiers dédié à LilyPond réside dans le fait
418 qu'on peut le brider à l'aide des options @code{noexec},@code{nodev} et
419 @code{nosuid}. Il sera de fait impossible de lancer des exécutables ou
420 d'écrire sur un périphérique à partir de LilyPond. Si vous n'avez pas
421 l'intention de créer un tel système sur une partition séparée, vous
422 pouvez avoir recours à un pseudo-périphérique (@emph{loop device}) monté
423 à partir d'un simple fichier de taille raisonnable. D'autre part, le
424 recours à un système de fichiers indépendant permet de limiter l'espace
427 @item Création d'un utilisateur spécifique
428 L'utilisation de LilyPond au sein de la cellule devrait être réservé à
429 un utilisateur aux droits restreints. Il faudra donc créer un
430 utilisateur et un groupe spécifiques -- disons
431 @w{@code{lily}/@code{lily}} -- qui n'aura accès en écriture qu'à un
432 unique répertoire déterminé par la valeur de @var{dir}.
434 @item Agencement des lieux
435 LilyPond a besoin d'un certain nombre de fichiers pour pouvoir tourner
436 correctement. Ces fichiers devront donc tous se retrouver dans
437 l'environnement protégé, distribués selon la même arborescence que dans
438 le système d'origine. Ainsi l'intégralité de l'installation de LilyPond
439 (en principe @file{/usr/share/lilypond}) doit y être dupliquée.
441 En cas de problème, lancer LilyPond en utilisant @command{strace}
442 devrait vous permettre de déterminer quels fichiers manquent à l'appel.
444 @item Lancement de LilyPond
445 Dans un environnement protégé monté avec l'option @code{noexec}, il
446 est impossible de lancer un quelconque programme extérieur. LilyPond ne
447 saurait donc avoir recours à un moteur de traitement qui le mettrait
448 dans cette situation. Comme nous l'avons vu plus haut, LilyPond sera
449 lancé avec les privilèges de l'administrateur -- privilèges qu'il perdra
450 aussitôt --, ce qui peut nécessiter le recours à la commande
451 @code{sudo}. Il est par ailleurs judicieux de limiter le temps
452 processeur aloué à LilyPond -- grâce à @command{ulimit@tie{}-t} par
453 exemple -- ainsi que, si votre système le permet, la taille de la
459 @cindex verbosité, définir le degré de
460 @item -l,--loglevel=@var{DEGRÉ}
461 Règle le niveau de verbosité des messages console à @var{DEGRÉ}. Les
462 différentes valeurs sont@tie{}:
466 Aucun verbiage, même pas les messages d'erreur.
469 Uniquement les messages d'erreur@tie{}; pas de message d'avertissement
473 Messages d'avertissement ou d'erreur@tie{}; pas d'information de
477 Information de progression basique (réussite) et avertissements ou erreurs.
480 Toutes les informations de progression, avertissements et erreurs.
482 @item INFO (par défaut)
483 Informations de progression, avertissements et erreurs, ainsi que
484 d'autres informations quant à l'exécution.
487 Tout ce qui peut être affiché, y compris le verbiage utile au débogage.
492 @cindex répertoire de destination
493 @cindex fichier de destination
494 @item -o,--output=@var{FICHIER} ou @var{RÉPERTOIRE}
495 Détermine le nom par défaut du fichier résultant à @var{FICHIER}@tie{};
496 lorsque l'argument @var{RÉPERTOIRE} correspond à un répertoire déjà
497 existant, c'est là que les fichiers résultants seront déposés. Le
498 suffixe adéquat sera ajouté (p.ex. @file{.pdf} pour du pdf) dans tous
502 @cindex PostScript, output
503 @cindex PS (PostScript), output
505 Génère du PostScript.
509 @cindex Portable Network Graphics (PNG), output
510 @cindex PNG (Portable Network Graphics), output
511 Génère une image par page, au format PNG@tie{}; ceci sous-entend
512 l'utilisation de @option{--ps}. La résolution de l'image, en DPI, peut
513 se régler en ajoutant par exemple
520 @cindex Portable Document Format (PDF), output
521 @cindex PDF (Portable Document Format), output
522 Génère du PDF. Ceci sous-entend l'utilisation de @option{--ps}.
526 Affiche le numéro de version.
530 Active le mode verbeux@tie{}: affichage de l'intégralité du chemin
531 d'accès de chaque fichier, et information des temps de traitement.
535 Affiche les informations de garantie appliquables à GNU LilyPond -- il
536 est livré @strong{SANS GARANTIE}@tie{}!
540 @node Variables d'environnement
541 @unnumberedsubsec Variables d'environnement
542 @translationof Environment variables
545 @cindex LILYPOND_DATADIR
547 @command{lilypond} reconnaît les variables d'environnement
551 @item LILYPOND_DATADIR
552 Cette variable spécifie le répertoire où seront recherchés par défaut
553 les différentes versions des messages ainsi qu'un certain nombre de
554 fichiers nécessaires au traitement. Il devrait contenir les
555 sous-répertoires @file{ly/}, @file{ps/}, @file{tex/}, etc.
558 Cette variable détermine la langue dans laquelle seront émis les
561 @item LILYPOND_LOGLEVEL
562 Cette variable détermine le niveau par défaut de verbosité. En
563 l'absence de niveau explicite -- autrement dit la ligne de commande ne
564 comporte pas de @option{--loglevel} -- c'est cette valeur qui sera
567 @item LILYPOND_GC_YIELD
568 Cette variable permet d'ajuster l'empreinte mémoire et le rendement de
569 la machine. Il s'agit en fait d'un pourcentage d'allocation de
570 mémoire@tie{}: lorsqu'il est élevé, le programme favorisera
571 l'utilisation de la mémoire@tie{}; une faible valeur consommera plus de
572 temps processeur. Par défaut, cette valeur est fixée à@tie{}@code{70}.
577 @node Exécution de LilyPond en mode protégé
578 @unnumberedsubsec Exécution de LilyPond en mode protégé
579 @translationof LilyPond in chroot jail
581 Paramétrer un serveur afin qu'il puisse faire fonctionner LilyPond en
582 mode protégé sur un pseudo-périphérique est une tâche sensible. Les
583 différentes étapes à suivre sont répertoriées ci-dessous. Les exemples
584 qu'elle comportent proviennent d'une distribution Linux Ubuntu et
585 nécessiteront l'utilisation de @code{sudo} autant que de besoin.
589 @item Installation des paquetages nécessaires@tie{}: LilyPond, GhostScript et
592 @item Création de l'utilisateur @code{lily} :
599 Ceci, par la même occasion, créera un groupe spécifique pour
600 l'utilisateur @code{lily} ainsi que son répertoire personnel
603 @item Création, dans le répertoire personnel de l'utilisateur
604 @code{lily}, d'un espace agissant en tant que système de fichiers@tie{}:
607 dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000
611 Cette commande a créé un fichier de 200@tie{}MB utilisable par le
612 @qq{système protégé}.
614 @item Création d'un pseudo-périphérique, génération d'un système de
615 fichiers et chargement de celui-ci, puis création d'un répertoire
616 accessible en écriture pour l'utilisateur @code{lily}@tie{}:
620 losetup /dev/loop0 /home/lily/loopfile
621 mkfs -t ext3 /dev/loop0 200000
622 mount -t ext3 /dev/loop0 /mnt/lilyloop
623 mkdir /mnt/lilyloop/lilyhome
624 chown lily /mnt/lilyloop/lilyhome
627 @item Affectation, au niveau configuration du serveur, de
628 @code{/mnt/lilyloop} en tant que JAIL et @code{/lilyhome} en tant que
631 @item Création d'une arborescence, dans l'espace protégé, et recopie de
632 tous les fichiers nécessaires -- voir le script plus loin.
634 Le recours à l'utilitaire @code{sed} permet de créer les commandes de
635 copie de tout ce qui est nécessaire à un exécutable@tie{}:
638 for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/; \
639 do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& \
640 cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \
641 \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done
646 @subheading Exemple de script fonctionnel en 32-bit sur Ubuntu 8.04
650 ## les réglages par défaut
654 loopdevice=/dev/loop0
655 jaildir=/mnt/lilyloop
656 # le préfixe (sans slash au début !)
658 # le répertoire du système où lilypond est installé
659 lilydir=/$lilyprefix/lilypond/
661 userhome=$home/$username
662 loopfile=$userhome/loopfile
664 dd if=/dev/zero of=$loopfile bs=1k count=200000
666 losetup $loopdevice $loopfile
667 mkfs -t ext3 $loopdevice 200000
668 mount -t ext3 $loopdevice $jaildir
669 mkdir $jaildir/lilyhome
670 chown $username $jaildir/lilyhome
673 mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp
676 cp -r -L $lilydir $lilyprefix
677 cp -L /bin/sh /bin/rm bin
678 cp -L /usr/bin/convert /usr/bin/gs usr/bin
679 cp -L /usr/share/fonts/truetype usr/share/fonts
681 # la formule magique de recopie des biblothèques
682 for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh" \
683 "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=> \
684 \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed \
685 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' \
686 | sed '/.*=>.*/d'; done | sh -s
688 # les fichiers partagés pour ghostscript...
689 cp -L -r /usr/share/ghostscript usr/share
690 # les fichiers partagés pour ImageMagick
691 cp -L -r /usr/lib/ImageMagick* usr/lib
693 ### Partant du principe que test.ly est dans /mnt/lilyloop/lilyhome,
694 ### on devrait pouvoir lancer :
695 ### Attention : /$lilyprefix/bin/lilypond est un script qui
696 ### définit LD_LIBRARY_PATH - c'est primordial
697 /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly
701 @node Messages d'erreur
702 @section Messages d'erreur
703 @translationof Error messages
705 @cindex erreur, messages
707 Différents messages d'erreur sont susceptibles d'apparaître au cours de
708 la compilation d'un fichier@tie{}:
712 @item Warning -- Avertissement
714 @cindex avertissement
715 Ce type de message est émis lorsque LilyPond détecte quelque chose de
716 suspect. Si vous avez demandé quelque chose qui sort de l'ordinaire,
717 vous saurez probablement ce à quoi il est fait référence et ignorerez de
718 tels messages sans remord. Néanmoins, les messages d'avertissement
719 indiquent la plupart du temps une incohérence dans le fichier source.
721 @item Error -- Erreur
723 LilyPond a détecté une erreur. L'étape en cours, qu'il s'agisse de
724 l'analyse, de l'interprétation des données ou bien du formatage, sera
725 menée à son terme, puis LilyPond s'arrêtera.
727 @item Fatal error -- Erreur fatale
729 LilyPond est confronté à une anomalie bloquante. Ceci ne se produit que
730 très rarement, et la plupart du temps en raison d'une installation
731 défectueuse des fontes.
733 @item Scheme error -- Erreur Scheme
734 @cindex trace, Scheme
737 Les erreurs qui interviennent lors de l'exécution de code Scheme sont
738 gérées par l'interpréteur Scheme. L'utilisation du mode verbeux
739 (options @option{-V} ou @option{--verbose}) vous permettra de localiser
740 l'appel de fonction délictueux.
742 @item Programming error -- Erreur de programmation
743 @cindex Programming error
744 @cindex Erreur de programmation
745 LilyPond est confronté à une incohérence interne. Ce type de message
746 est destiné à venir en aide aux développeurs et débogueurs. En règle
747 générale, vous pouvez tout simplement les ignorer. Parfois, il y en a
748 tant qu'ils masquent ce qui pourrait vous intéresser@dots{}
750 @item Aborted (core dumped) -- Abandon
751 @cindex Aborted (core dumped)
752 Ce type de message indique que LilyPond a planté en raison d'une grave
753 erreur de programmation. La survenance d'un tel message est considérée
754 comme de la plus haute importance. Si vous y étiez confronté,
755 transmettez un rapport de bogue.
758 @cindex errors, message format
759 Lorsque l'avertissement ou l'erreur est directement lié au fichier
760 source, le message est libellé sous la forme
763 @var{fichier}:@var{ligne}:@var{colonne}: @var{message}
764 @var{contenu de la ligne litigieuse}
767 Un saut de ligne est placé dans la ligne de code, indiquant l'endroit
768 précis du problème, comme ici@tie{}:
771 test.ly:2:19: erreur: n'est pas une durée: 5
776 Notez que ces coordonnées constituent l'approximation au mieux par
777 LilyPond dans le code ayant déclenché l'avertissement ou l'erreur. En
778 règle générale, erreurs et avertissements surviennent lorsque LilyPond
779 rencontre quelque chose d'inattendu. Lorsque la ligne indiquée ne vous
780 semble pas comporter d'élément litigieux, remontez de quelques lignes
783 Vous trouverez d'autres informations sur les erreurs au chapitre
784 @ref{Quelques erreurs des plus courantes}.
787 @node Quelques erreurs des plus courantes
788 @section Quelques erreurs des plus courantes
789 @translationof Common errors
791 Les conditions amenant aux erreurs qui suivent sont fréquentes, bien
792 qu'elles ne soient pas évidentes ni facilement localisables. Nous
793 espérons que ces explications vous aideront à les résoudre plus
797 * La musique déborde de la page::
798 * Apparition d'une portée supplémentaire::
799 * Erreur renvoyant à ../ly/init.ly::
800 * Message d'erreur Unbound variable %::
801 * Message d'erreur FT_Get_Glyph_Name::
802 * staff-affinities devraient aller en ordre décroissant::
806 @node La musique déborde de la page
807 @unnumberedsubsec La musique déborde de la page
808 @translationof Music runs off the page
810 Lorsque la musique s'épanche au delà de la marge droite ou bien semble
811 anormalement comprimée, la raison en est le plus souvent une note à la
812 durée erronée@tie{}; cela finit par provoquer le débordement de la
813 dernière note d'une mesure. Rien ne s'oppose à ce que la dernière note
814 d'une mesure ne s'arrête avant la barre de mesure@tie{}; on considère
815 simplement qu'elle se prolonge sur la mesure suivante. Des débordements
816 à répétition finissent par générer une musique comprimée ou qui sort de
817 la page, pour la simple et bonne raison que les sauts de ligne
818 automatiques ne peuvent intervenir qu'à la fin d'une mesure complète,
819 autrement dit lorsque toutes les notes sont terminées avant la fin de la
822 @warning{Une durée erronée peut empêcher les sauts de ligne, ce qui
823 conduit à une musique compressée, voire à un débordement de la page.}
825 Une erreur de durée sera bien plus facilement localisable si vous
826 positionnez régulièrement des contrôles de barre de mesure -- voir
827 @ruser{Vérification des limites et numéros de mesure}.
829 Si vous tenez absolument à enchainer de tels débordements, vous devrez
830 insérer des barres de mesure invisibles là où vous souhaitez positionner
831 un saut de ligne. Consultez le chapitre @ruser{Barres de mesure} pour
835 @node Apparition d'une portée supplémentaire
836 @unnumberedsubsec Apparition d'une portée supplémentaire
837 @translationof An extra staff appears
839 Lorsque les contextes ne sont pas créés explicitement par la commande
840 @code{\new}, ils le seront si la commande à exécuter n'est pas censée
841 s'appliquer au contexte en cours. Pour des partitions simples, le fait
842 que les contextes soient automatiquement créés rend bien des services,
843 et c'est d'ailleurs le cas pour la majorité des exemples contenus dans
844 les manuels de LilyPond. Cependant, la création implicite d'un contexte
845 peut aboutir à l'apparition d'une portée @qq{parasite}. On s'attend par
846 exemple, en lisant le code qui suit, à ce que toutes les têtes de note
847 soient en rouge, alors que le résultat nous présente deux portées et que
848 les notes, placées sur la portée inférieure, restent en noir.
850 @lilypond[quote,verbatim,relative=2]
851 \override Staff.NoteHead #'color = #red
855 Étant donné qu'aucun contexte @code{Staff} n'existe lorsque la
856 dérogation est introduite, LilyPond le crée implicitement pour lui
857 appliquer la directive considérée. Survient alors la commande
858 @w{@code{\new Staff}} qui, à son tour, crée une nouvelle portée pour
859 contenir les notes qui suivent. Voici la syntaxe correcte pour obtenir
860 ces notes en rouge@tie{}:
862 @lilypond[quote,verbatim,relative=2]
864 \override Staff.NoteHead #'color = #red
869 Autre exemple : la présence d'une commande @code{\relative} à
870 l'intérieur d'une section @code{\repeat} génèrera obligatoirement une
871 portée intempestive. Cela tient au fait que la commande @code{\repeat}
872 va créer deux blocs @code{\relative} qui, chacun à leur tour, créeront
873 implicitement un bloc @code{Staff} assorti d'un bloc @code{Voice}.
875 @lilypond[quote,verbatim]
877 \relative c' { c4 d e f }
881 La manière adéquate de procéder consiste à inverser les commandes
882 @code{\repeat} et @code{\relative}, comme ceci@tie{}:
884 @lilypond[quote,verbatim]
887 \relative c' { c4 d e f }
893 @node Erreur renvoyant à ../ly/init.ly
894 @unnumberedsubsec Erreur renvoyant à @code{../ly/init.ly}
895 @translationof Apparent error in ../ly/init.ly
897 Certains messages d'erreur relatifs à une erreur de syntaxe dans le
898 fichier @file{../ly/init.ly} peuvent survenir lorsque le fichier est mal
899 formaté. Cela se produit notamment lors d'un défaut de parité de
900 bornages ou de guillemets.
902 L'erreur la plus courante est la simple omission d'une accolade
903 fermante (@code{@}}) à la fin du bloc @code{Score}. La solution est
904 évidente en pareil cas@tie{}: il suffit de vérifier que le bloc
905 @code{Score} est bien clôturé. La structure des fichiers LilyPond est
906 abordée plus en détails au chapitre
907 @rlearning{Organisation des fichiers LilyPond}. C'est la raison pour
908 laquelle nous vous invitons à utiliser un éditeur de texte qui prenne en
909 charge le contrôle de parité des parenthèses, crochets et accolades afin
910 de vous éviter de telles erreurs.
912 Autre erreur courante, l'absence d'espace entre la dernière syllabe et
913 l'accolade (@code{@}}) clôturant un bloc de paroles. Lorsqu'il n'y a
914 pas séparation, l'accolade est considérée comme faisant partie
915 intégrante de la syllabe. C'est la raison pour laquelle nous vous
916 invitons à insérer une espace avant et après @strong{chaque} accolade.
917 D'autres informations à ce sujets sont mentionnées au chapitre
918 @ruser{Saisie des paroles}.
920 Lorsqu'il s'agit d'un guillemet fermant (@code{"}) omis, le message
921 d'erreur devrait vous indiquer un numéro de ligne avoisinant. L'erreur
922 se situe la plupart du temps une ou deux lignes au-dessus de celle
924 @c Match quote character "
926 @node Message d'erreur Unbound variable %
927 @unnumberedsubsec Message d'erreur Unbound variable %
928 @translationof Error message Unbound variable %
930 Ce message d'erreur, qu'il apparaisse sur le terminal ou en fin de
931 fichier journal, est associé à un message du type @qq{GUILE a signalé
932 une erreur@dots{}}. Il survient à chaque fois qu'un commentaire
933 @emph{LilyPond} est indûment placé dans une routine @emph{Scheme}.
935 Un commentaire LilyPond est introduit par le signe pourcent (@code{%})
936 et ne doit en aucun cas se trouver dans une routine Scheme. En Scheme,
937 les commentaires s'introduisent par un point-virgule (@code{;}).
940 @node Message d'erreur FT_Get_Glyph_Name
941 @unnumberedsubsec Message d'erreur FT_Get_Glyph_Name
942 @translationof Error message FT_Get_Glyph_Name
944 Ce message d'erreur, qu'il apparaisse sur le terminal ou en fin de
945 fichier journal, survient lorsqu'un fichier source contient des
946 caractères non ASCII et qu'il n'a pas été enregistré avec un encodage
947 UTF-8. Pour plus de détails, reportez-vous au chapitre
948 @ruser{Caractères spéciaux}.
951 @node staff-affinities devraient aller en ordre décroissant
952 @unnumberedsubsec staff-affinities devraient aller en ordre décroissant
953 @translationof Warning staff affinities should only decrease
955 Cet avertissement est émis lorsque la partition ne comporte pas de
956 portée, comme par exemple une feuille de chant avec un contexte
957 @code{ChordName} et un contexte @code{Lyrics}. Ce message disparaîtra
958 dès lors que autoriserez l'un de ces contextes à se comporter comme une
959 portée, à l'aide de l'instruction
962 \override VerticalAxisGroup #'staff-affinity = ##f
966 que vous insérerez dès sa création. Pour plus d'information,
967 reportez-vous à la rubrique
968 @ruser{Espacement des lignes rattachées à des portées}.