1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
4 Translation of GIT committish: 9ae56888788d74c292e20b735a8f973c64cf1b1d
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. For details, see the Contributors'
8 Guide, node Updating translation committishes..
13 @c Translators: Jean-Charles Malahieude
14 @c Translation checkers:
16 @node Exécution de LilyPond
17 @chapter Exécution de @command{lilypond}
18 @translationof Running lilyPond
20 Ce chapitre passe en revue ce qui se passe lorsque vous lancez LilyPond.
23 * Utilisation habituelle::
24 * Utilisation en ligne de commande::
26 * Quelques erreurs des plus courantes::
29 @node Utilisation habituelle
30 @section Utilisation habituelle
31 @translationof Normal usage
33 La plupart des utilisateurs de LilyPond le font au travers d'une
34 interface graphique (@emph{GUI} pour @emph{graphical user interface}).
35 Si vous ne l'avez pas encore parcouru, lisez le @rlearning{Tutoriel}.
36 Si vous utilisez un éditeur alternatif pour rédiger vos fichiers
37 LilyPond, référez-vous à la documentation de celui-ci.
40 @node Utilisation en ligne de commande
41 @section Utilisation en ligne de commande
42 @translationof Command-line usage
44 Nous nous intéresserons ici aux spécificités de LilyPond employé en
45 ligne de commande. La ligne de commande permet de faire appel à
46 certaines options particulières. D'autre part, certains utilitaires
47 associés, tel que @code{midi2ly}, ne sont disponibles qu'en ligne de
50 Par @qq{ligne de commande}, nous entendons l'interface de commande du
51 système. Les utilisateurs de Windows seront certainement plus familiers
52 des termes @qq{fenêtre DOS} ou @qq{invite de commande}. Quant aux
53 utilisateurs de MacOS@tie{}X, ils connaissent assurément les termes
54 @qq{console} et @qq{terminal}. Les paramétrages spécifiques au système
55 MacOS font l'objet d'un @rwebnamed{MacOS X,chapitre particulier}.
57 Notre propos n'est pas ici d'expliquer ce qu'est l'interface de
58 commande pour un système informatique ni comment elle fonctionne.
59 Aussi, si vous ne savez de quoi il retourne, nous vous renvoyons aux
60 nombreuses documentations que vous pourrez trouver sur ce sujet.
64 * Lancement de lilypond::
65 * Options en ligne de commande pour lilypond::
66 * Variables d'environnement::
67 * Exécution de LilyPond en mode protégé::
70 @node Lancement de lilypond
71 @unnumberedsubsec Lancement de @command{lilypond}
72 @translationof Invoking lilypond
74 L'exécutable @command{lilypond} en ligne de commande se lance
78 lilypond [@var{option}]@dots{} @var{fichier}@dots{}
81 Lorsque le fichier est fourni sans extension, LilyPond présume qu'il
82 s'agit de @file{.ly}. Pour interpréter directement l'entrée standard
83 (@emph{stdin}), fournissez un tiret (@code{-}) en lieu et place de
86 Le traitement de @file{monfichier.ly} produira @file{monfichier.ps} et
87 @file{monfichier.pdf}. Vous pouvez spécifier plusieurs fichiers à la
88 fois@tie{}; ils seront traités indépendamment les uns des
89 autres.@footnote{Le statut de GUILE n'étant pas réinitialisé après
90 traitement d'un fichier @file{.ly}, veillez à ne pas modifier les
91 réglages par défaut du système à partir d'assertions en Scheme.}
93 Lorsque @file{monfichier.ly} contient plus d'une section @code{\book},
94 les fichiers produits -- à partir du deuxième -- seront numérotés. Par
95 ailleurs, la valeur affectée à @code{output-suffix} sera insérée entre la
96 racine et le numéro. Par exemple, un fichier @var{racine} qui
100 #(define output-suffix "violon")
102 #(define output-suffix "cello")
107 fournira grâce à LilyPond @file{@var{racine}-violon.pdf} et
108 @file{@var{racine}-cello-1.pdf}.
111 @unnumberedsubsubsec Commandes standard de l'interpréteur
112 @translationof Standard shell commands
114 Si votre interpréteur -- terminal, console, etc. -- prend en charge les
115 redirections, les commandes qui suivent vous permettront de
116 judicieusement rediriger les affichages de la console dans un
122 @code{lilypond fichier.ly 1>stdout.log} pour le verbiage normal
125 @code{lilypond fichier.ly 2>stderr.log} pour les messages d'erreur
128 @code{lilypond fichier.ly &>tous.log} pour garder une trace de tout ce
133 Consultez avant tout la documentation de votre interpréteur habituel
134 pour vérifier qu'il prend en charge ces options dans cette syntaxe.
135 Notez bien qu'il s'agit ici de commandes internes à l'interpréteur et
136 qui n'ont rien à voir avec LilyPond.
139 @node Options en ligne de commande pour lilypond
140 @unnumberedsubsec Options en ligne de commande pour @command{lilypond}
141 @translationof Command line options for lilypond
143 @cindex lancement de @command{lilypond}
144 @cindex ligne de commande, options pour @command{lilypond}
145 @cindex options, ligne de commande
149 Voici les différentes options disponibles à la ligne de commande@tie{}:
153 @item -e,--evaluate=@var{expr}
154 Évalue l'expression Scheme @var{expr} avant d'analyser tout fichier
155 @file{.ly}. Lorsque vous spécifiez l'option @option{-e} à plusieurs
156 reprises, l'évaluation sera faite en séquence.
158 Dans la mesure où l'expression est évaluée par le module
159 @code{guile-user}, vous devrez, dès lors que @var{expr} utilise des
160 définitions, spécifier
163 lilypond -e '(define-public a 42)'
167 en ligne de commande, et ajouter la ligne
170 #(use-modules (guile-user))
174 en tête de votre fichier @file{.ly}.
176 @warning{Les utilisateurs de Windows doivent utiliser des quillements
177 doubles @code{"} en lieu et place des guillemets simples @code{'}.}
178 @c Match " in previous line to help context-sensitive editors
180 @item -f,--format=@var{format}
181 Détermine le format à produire. Il peut s'agir de @code{ps}, @code{pdf}
184 Exemple : @code{lilypond -fpng @var{monfichier}.ly}
187 @item -d,--define-default=@var{var}=@var{val}
188 Affecte la valeur Scheme @var{val} à l'option interne @var{var} du
189 programme. En l'absence de @var{val}, le programme utilisera @var{#t}.
190 Préfixer @var{var} d'un @code{no-} vous permet de désactiver une option.
193 @cindex point and click, ligne de commande
205 Voici les options disponibles@tie{}:
207 @cindex help, ligne de commande
212 Lancer @code{lilypond -dhelp} affichera la liste de toutes les options
213 @code{-d} disponibles.
217 @cindex paper-size, ligne de commande
218 Détermine la taille par défaut du papier, par exemple
220 -dpaper-size=\"letter\"
224 Veillez à ne pas oublier d'encadrer la valeur par des guillemets
225 échappés ( @code{\"} ).
226 @c Match " in previous line to help context-sensitive editors
229 @cindex safe, ligne de commande
231 Ne pas avoir une confiance aveugle dans le code @file{.ly}.
233 Lorsque LilyPond est accessible au travers d'un serveur web, il est
234 @strong{impératif} d'utiliser les options @option{--safe} ou
235 @option{--jail}. L'option @option{--safe} aura pour effet d'empêcher
236 tout code Scheme inclus de mettre en péril votre installation grâce à
237 quelque chose du style
243 c4^$(ly:gulp-file "/etc/passwd")
248 L'option @code{-dsafe} forcera l'évaluation, au fil de l'eau et par un
249 module sécurisé, des expressions Scheme contenues dans le fichier
250 source. Ce module sécuritaire, dérivé du module GUILE @file{safe-r5rs},
251 ajoute un certain nombre de fonctions -- listées dans
252 @file{scm/safe-lily.scm} -- à l'API de LilyPond.
254 De plus, le mode @emph{safe} ne permet ni l'utilisation de directives
255 @code{\include} ni le recours aux obliques inversées (@emph{backslash})
256 dans les chaînes @TeX{}.
258 L'import de variables LilyPond dans du code Scheme n'est pas possible
261 L'option @code{-dsafe} @strong{ne détecte pas} l'utilisation abusive des
262 ressources. Il est donc possible que le programme finisse par rester
263 sans réponse si on lui envoie une boucle sans fin. C'est la raison pour
264 laquelle nous recommandons, lorsque LilyPond tourne sur un serveur
265 accessible au public, d'en limiter aussi bien les ressources processeur
268 Notez bien que l'utilisation du mode sécuritaire empêchera aussi la
269 compilation d'un certain nombre de fragments LilyPond. L'option
270 @option{--jail} est dans ce cas une excellente alternative en terme de
271 sécurité, même si elle requiert plus de temps à mettre en place.
275 @cindex format de sortie, définition
276 Détermine le format de sortie à utiliser par le moteur de traitement.
277 Les types de @code{format} reconnus sont
282 @cindex PostScript output
285 Les fichiers PostScript incluent les polices TTF, Type1 et OTF, et
286 aucune substitution ne sera opérée pour ces fontes. Si vous utilisez
287 des caractères orientaux, le fichier aura vite fait d'atteindre une
292 @cindex Postscript encapsulé
293 @cindex EPS (Encapsulated PostScript)
294 pour du PostScript encapsulé.
296 Chaque page (système) fera l'objet d'un fichier @file{EPS} particulier,
297 sans fontes, auquel sera associé un fichier @file{EPS} qui, lui,
298 contiendra toutes les pages (systèmes) et les fontes.
300 Notez qu'il s'agit du mode que @command{lilypond-book} utilise par défaut.
303 @cindex SVG (Scalable Vector Graphics)
304 pour du SVG (@emph{Scalable Vector Graphics}).
306 Cette option permet de créer un fichier SVG par page, sans incorporation
307 des fontes. Nous vous recommandons d'installer les fontes Century
308 Schoolbook comprises dans le paquetage LilyPond afin d'obtenir le
309 meilleur rendu possible. Sous UNIX, il suffit de les recopier, à partir
310 du répertoire @file{/usr/share/lilypond/VERSION/fonts/otf/}, dans
311 @file{~/.fonts/}. Les fichiers SVG alors générés devraient être
312 lisibles par votre éditeur SVG habituel.
316 pour une recopie brute des commandes Scheme internes de formatage.
319 permet de ne pas générer de partition imprimable. Cette option est
320 équivalente à @code{-dno-print-pages}.
324 Exemple : @code{lilypond -dbackend=svg @var{monfichier}.ly}
328 @cindex preview, ligne de commande
329 Génère un fichier comprenant le titrage et le premier système. S'il
330 existe plusieurs sections @code{\bookpart}, ce fichier contiendra les
331 titrage et premier système de chacun des @code{\bookpart}. Cette
332 option fonctionne pour les moteurs de traitement @code{ps}, @code{eps}
337 Travaille silencieusement, et redirige tout le verbiage dans un fichier
340 Note à l'attention des utilisateurs de Windows@tie{}: toutes les
341 informations concernant le traitement apparaissent au fur et à mesure
342 dans l'interpréteur de commandes lorsque vous lancez le programme
343 @code{lilypond.exe}, à l'inverse de @w{@code{lilypond-windows.exe}} qui
344 vous renvoie simplement la main. L'option @option{-dgui} vous permettra
345 alors de rediriger ces informations dans un fichier journal.
348 Génère l'intégralité des pages de la partition. L'option
349 @option{-dno-print-pages} est particulièrement utile lorsqu'utilisée
350 conjointement avec l'option @option{-dpreview}.
356 Affiche un résumé des commandes.
359 @item -H,--header=@var{CHAMP}
360 Recopie le champ d'entête dans le fichier @file{RACINE.@var{CHAMP}}.
363 @item --include, -I=@var{répertoire}
364 @cindex recherche de fichier
367 Ajoute @var{répertoire} au chemin de recherche pour les inclusions.
369 Vous pouvez mentionner plusieurs fois l'option @option{-I}, auquel cas
370 la recherche commencera dans le premier répertoire inclus et, si le
371 fichier en question ne s'y trouve pas, les répertoires suivants seront
372 examinés l'un après l'autre.
375 @item -i,--init=@var{fichier}
376 Définit @var{fichier} (par défaut @file{init.ly}) en tant que fichier
380 @item -l,--loglevel=@var{DEGRÉ}
382 @cindex verbosité, définir le degré de
384 Règle le niveau de verbosité des messages console à @var{DEGRÉ}. Les
385 différentes valeurs sont@tie{}:
388 Aucun verbiage, même pas les messages d'erreur.
391 Uniquement les messages d'erreur@tie{}; pas de message d'avertissement
395 Messages d'avertissement ou d'erreur@tie{}; pas d'information de
399 Information de progression basique (réussite) et avertissements ou erreurs.
402 Toutes les informations de progression, avertissements et erreurs.
404 @item INFO (par défaut)
405 Informations de progression, avertissements et erreurs, ainsi que
406 d'autres informations quant à l'exécution.
409 Tout ce qui peut être affiché, y compris le verbiage utile au débogage.
413 @item -o,--output=@var{FICHIER} ou @var{RÉP}
414 @cindex répertoire de destination
415 @cindex fichier de destination
417 Détermine le nom par défaut du fichier résultant à @var{FICHIER}@tie{};
418 lorsque l'argument @var{RÉP} correspond à un répertoire déjà existant,
419 c'est là que les fichiers résultants seront déposés. Le suffixe adéquat
420 sera ajouté (p.ex. @file{.pdf} pour du pdf) dans tous les cas.
424 @cindex PostScript output
425 Génère du PostScript.
429 @cindex Portable Network Graphics (PNG) output
430 Génère une image par page, au format PNG@tie{}; ceci sous-entend
431 l'utilisation de @option{--ps}. La résolution de l'image, en DPI, peut
432 se régler en ajoutant par exemple
439 @cindex Portable Document Format (PDF) output
440 Génère du PDF. Ceci sous-entend l'utilisation de @option{--ps}.
443 @item -j,--jail=@var{user},@var{group},@var{jail},@var{dir}
444 Lance @command{lilypond} dans un environnement protégé.
446 L'option @option{--jail} est une alternative qui offre plus de
447 flexibilité que l'option @option{--safe} lorsque LilyPond est installé
448 sur un serveur web ou traite des fichiers externes.
450 L'option @option{--jail} va détourner la racine de @command{lilypond}
451 sur @code{jail} juste avant d'effectuer la compilation à proprement
452 parler. L'utilisateur et le groupe sont modifiés en conséquence, et le
453 répertoire en cours devient @code{dir}. Ces réglages assurent -- du
454 moins en théorie -- l'impossibilité de s'échapper de la cellule. Notez
455 cependant que, pour que l'option @option{--jail} soit fonctionnelle,
456 @code{lilypond} doit être lancé en tant qu'administrateur -- ce qui se
457 réalise aisément à l'aide de la commande @command{sudo}.
459 La création d'un environnement sécurisé requiert quelques précautions
460 dans la mesure où LilyPond doit disposer de tout ce dont il a besoin
461 pour compiler le fichier source @strong{à l'intérieur de la cellule}.
462 L'ermitage, avant d'être viable, requiert donc les étapes
466 @item Création d'un système de fichiers indépendant
467 L'intérêt d'un système de fichiers dédié à LilyPond réside dans le fait
468 qu'on peut le brider à l'aide des options @option{noexec},
469 @option{nodev} et @option{nosuid}. Il sera de fait impossible de lancer
470 des exécutables ou d'écrire sur un périphérique à partir de LilyPond.
471 Si vous n'avez pas l'intention de créer un tel système sur une partition
472 séparée, vous pouvez avoir recours à un pseudo-périphérique (@emph{loop
473 device}) monté à partir d'un simple fichier de taille raisonnable.
474 D'autre part, le recours à un système de fichiers indépendant permet de
475 limiter l'espace dévolu à LilyPond.
477 @item Création d'un utilisateur spécifique
478 L'utilisation de LilyPond au sein de la cellule devrait être réservé à
479 un utilisateur aux droits restreints. Il faudra donc créer un
480 utilisateur et un groupe spécifiques -- disons @code{lily}/@code{lily}
481 -- qui n'aura accès en écriture qu'à un unique répertoire déterminé par
482 la valeur de @var{dir}.
484 @item Agencement des lieux
485 LilyPond a besoin d'un certain nombre de fichiers pour pouvoir tourner
486 correctement. Ces fichiers devront donc tous se retrouver dans
487 l'environnement protégé, distribués selon la même arborescence que dans
488 le système d'origine. Ainsi l'intégralité de l'installation de LilyPond
489 (en principe @file{/usr/share/lilypond}) doit y être dupliquée.
491 En cas de problème, lancer LilyPond en utilisant @code{strace} devrait
492 vous permettre de déterminer quels fichiers manquent à l'appel.
494 @item Lancement de LilyPond
495 Dans un environnement protégé monté avec l'option @option{noexec}, il
496 est impossible de lancer un quelconque programme extérieur. LilyPond ne
497 saurait donc avoir recours à un moteur de traitement qui le mettrait
498 dans cette situation. Comme nous l'avons vu plus haut, LilyPond sera
499 lancé avec les privilèges de l'administrateur -- privilèges qu'il perdra
500 aussitôt --, ce qui peut nécessiter le recours à la commande
501 @code{sudo}. Il est par ailleurs judicieux de limiter le temps
502 processeur aloué à LilyPond -- grâce à @command{ulimit@tie{}-t} par
503 exemple -- ainsi que, si votre système le permet, la taille de la
509 Affiche le numéro de version.
513 Active le mode verbeux@tie{}: affichage de l'intégralité du chemin
514 d'accès de chaque fichier, et information des temps de traitement.
518 Affiche les informations de garantie appliquables à GNU LilyPond -- il
519 est livré @strong{SANS GARANTIE}@tie{}!
523 @node Variables d'environnement
524 @unnumberedsubsec Variables d'environnement
525 @translationof Environment variables
528 @cindex LILYPOND_DATADIR
530 @command{lilypond} reconnaît les variables d'environnement
533 @item LILYPOND_DATADIR
534 Cette variable spécifie le répertoire où seront recherchés par défaut
535 les différentes versions des messages ainsi qu'un certain nombre de
536 fichiers nécessaires au traitement. Il devrait contenir les
537 sous-répertoires @file{ly/}, @file{ps/}, @file{tex/}, etc.
540 Cette variable détermine la langue dans laquelle seront émis les
543 @item LILYPOND_LOGLEVEL
544 Cette variable détermine le niveau par défaut de verbosité. En
545 l'absence de niveau explicite -- autrement dit la ligne de commande ne
546 comporte pas de @option{--loglevel} -- c'est cette valeur qui sera
549 @item LILYPOND_GC_YIELD
550 Cette variable permet d'ajuster l'empreinte mémoire et le rendement de
551 la machine. Il s'agit en fait d'un pourcentage d'allocation de
552 mémoire@tie{}: lorsqu'il est élevé, le programme favorisera
553 l'utilisation de la mémoire@tie{}; une faible valeur consommera plus de
554 temps processeur. Par défaut, cette valeur est fixée à@tie{}@code{70}.
559 @node Exécution de LilyPond en mode protégé
560 @unnumberedsubsec Exécution de LilyPond en mode protégé
561 @translationof LilyPond in chroot jail
563 Paramétrer un serveur afin qu'il puisse faire fonctionner LilyPond en
564 mode protégé sur un pseudo-périphérique est une tâche sensible. Les
565 différentes étapes à suivre sont répertoriées ci-dessous. Les exemples
566 qu'elle comportent proviennent d'une distribution Linux Ubuntu et
567 nécessiteront l'utilisation de @code{sudo} autant que de besoin.
571 @item Installation des paquetages nécessaires@tie{}: LilyPond, GhostScript et
574 @item Création de l'utilisateur @code{lily}:
581 Ceci, par la même occasion, créera un groupe spécifique pour
582 l'utilisateur @code{lily} ainsi que son répertoire personnel
585 @item Création, dans le répertoire personnel de l'utilisateur
586 @code{lily}, d'un espace agissant en tant que système de fichiers@tie{}:
589 dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000
593 Cette commande a créé un fichier de 200@tie{}MB utilisable par le
594 @qq{système protégé}.
596 @item Création d'un pseudo-périphérique, génération d'un système de
597 fichiers et chargement de celui-ci, puis création d'un répertoire
598 accessible en écriture pour l'utilisateur @code{lily}@tie{}:
602 losetup /dev/loop0 /home/lily/loopfile
603 mkfs -t ext3 /dev/loop0 200000
604 mount -t ext3 /dev/loop0 /mnt/lilyloop
605 mkdir /mnt/lilyloop/lilyhome
606 chown lily /mnt/lilyloop/lilyhome
609 @item Affectation, au niveau configuration du serveur, de
610 @code{/mnt/lilyloop} en tant que JAIL et @code{/lilyhome} en tant que
613 @item Création d'une arborescence, dans l'espace protégé, et recopie de
614 tous les fichiers nécessaires -- voir le script plus loin.
616 Le recours à l'utilitaire @code{sed} permet de créer les commandes de
617 copie de tout ce qui est nécessaire à un exécutable@tie{}:
620 for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/; \
621 do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& \
622 cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \
623 \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done
628 @subheading Exemple de script fonctionnel en 32-bit sur Ubuntu 8.04
632 ## les réglages par défaut
636 loopdevice=/dev/loop0
637 jaildir=/mnt/lilyloop
638 # le préfixe (sans slash au début !)
640 # le répertoire du système où lilypond est installé
641 lilydir=/$lilyprefix/lilypond/
643 userhome=$home/$username
644 loopfile=$userhome/loopfile
646 dd if=/dev/zero of=$loopfile bs=1k count=200000
648 losetup $loopdevice $loopfile
649 mkfs -t ext3 $loopdevice 200000
650 mount -t ext3 $loopdevice $jaildir
651 mkdir $jaildir/lilyhome
652 chown $username $jaildir/lilyhome
655 mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp
658 cp -r -L $lilydir $lilyprefix
659 cp -L /bin/sh /bin/rm bin
660 cp -L /usr/bin/convert /usr/bin/gs usr/bin
661 cp -L /usr/share/fonts/truetype usr/share/fonts
663 # la formule magique de recopie des biblothèques
664 for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh" \
665 "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=> \
666 \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed \
667 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' \
668 | sed '/.*=>.*/d'; done | sh -s
670 # les fichiers partagés pour ghostscript...
671 cp -L -r /usr/share/ghostscript usr/share
672 # les fichiers partagés pour ImageMagick
673 cp -L -r /usr/lib/ImageMagick* usr/lib
675 ### Partant du principe que test.ly est dans /mnt/lilyloop/lilyhome,
676 ### on devrait pouvoir lancer :
677 ### Attention : /$lilyprefix/bin/lilypond est un script qui
678 ### définit LD_LIBRARY_PATH - c'est primordial
679 /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly
683 @node Messages d'erreur
684 @section Messages d'erreur
685 @translationof Error messages
687 @cindex erreur, messages
689 Différents messages d'erreur sont susceptibles d'apparaître au cours de
690 la compilation d'un fichier@tie{}:
694 @item Warning -- Avertissement
696 @cindex avertissement
697 Ce type de message est émis lorsque LilyPond détecte quelque chose de
698 suspect. Si vous avez demandé quelque chose qui sort de l'ordinaire,
699 vous saurez probablement ce à quoi il est fait référence et ignorerez de
700 tels messages sans remord. Néanmoins, les messages d'avertissement
701 indiquent la plupart du temps une incohérence dans le fichier source.
703 @item Error -- Erreur
705 LilyPond a détecté une erreur. L'étape en cours, qu'il s'agisse de
706 l'analyse, de l'interprétation des données ou bien du formatage, sera
707 menée à son terme, puis LilyPond s'arrêtera.
709 @item Fatal error -- Erreur fatale
711 LilyPond est confronté à une anomalie bloquante. Ceci ne se produit que
712 très rarement, et la plupart du temps en raison d'une installation
713 défectueuse des fontes.
715 @item Scheme error -- Erreur Scheme
716 @cindex trace, Scheme
719 Les erreurs qui interviennent lors de l'exécution de code Scheme sont
720 gérées par l'interpréteur Scheme. L'utilisation du mode verbeux
721 (options @option{-V} ou @option{--verbose}) vous permettra de localiser
722 l'appel de fonction délictueux.
724 @item Programming error -- Erreur de programmation
725 @cindex Programming error
726 @cindex Erreur de programmation
727 LilyPond est confronté à une incohérence interne. Ce type de message
728 est destiné à venir en aide aux développeurs et débogueurs. En règle
729 générale, vous pouvez tout simplement les ignorer. Parfois, il y en a
730 tant qu'ils masquent ce qui pourrait vous intéresser@dots{}
732 @item Aborted (core dumped) -- Abandon
733 @cindex Aborted (core dumped)
734 Ce type de message indique que LilyPond a planté en raison d'une grave
735 erreur de programmation. La survenance d'un tel message est considérée
736 comme de la plus haute importance. Si vous y étiez confronté,
737 transmettez un rapport de bogue.
740 @cindex errors, message format
741 Lorsque l'avertissement ou l'erreur est directement lié au fichier
742 source, le message est libellé sous la forme
745 @var{fichier}:@var{ligne}:@var{colonne}: @var{message}
746 @var{contenu de la ligne litigieuse}
749 Un saut de ligne est placé dans la ligne de code, indiquant l'endroit
750 précis du problème, comme ici@tie{}:
753 test.ly:2:19: erreur: n'est pas une durée: 5
758 Notez que ces coordonnées constituent l'approximation au mieux par
759 LilyPond dans le code ayant déclenché l'avertissement ou l'erreur. En
760 règle générale, erreurs et avertissement surviennent lorsque LilyPond
761 rencontre quelque chose d'inattendu. Lorsque la ligne indiquée ne vous
762 semble pas comporter d'élément litigieux, remontez de quelques lignes
765 Vous trouverez d'autres informations sur les erreurs au chapitre
766 @ref{Quelques erreurs des plus courantes}.
769 @node Quelques erreurs des plus courantes
770 @section Quelques erreurs des plus courantes
771 @translationof Common errors
773 Les conditions amenant aux erreurs qui suivent sont fréquentes, bien
774 qu'elles ne soient pas évidentes ni facilement localisables. Nous
775 espérons que ces explications vous aideront à les résoudre plus
780 * La musique déborde de la page::
781 * Apparition d'une portée supplémentaire::
782 * Erreur renvoyant à ../ly/init.ly::
783 * Message d'erreur Unbound variable %::
784 * Message d'erreur FT_Get_Glyph_Name::
785 * staff-affinities devraient aller en ordre décroissant::
788 @node La musique déborde de la page
789 @unnumberedsubsec La musique déborde de la page
790 @translationof Music runs off the page
792 Lorsque la musique s'épanche au delà de la marge droite ou bien semble
793 anormalement comprimée, la raison en est le plus souvent une note à la
794 durée erronée@tie{}; cela finit par provoquer le débordement de la
795 dernière note d'une mesure. Rien ne s'oppose à ce que la dernière note
796 d'une mesure ne s'arrête avant la barre de mesure@tie{}; on considère
797 simplement qu'elle se prolonge sur la mesure suivante. Des débordements
798 à répétition finissent par générer une musique comprimée ou qui sort de
799 la page, pour la simple et bonne raison que les sauts de ligne
800 automatiques ne peuvent intervenir qu'à la fin d'une mesure complète,
801 autrement dit lorsque toutes les notes sont terminées avant la fin de la
804 @warning{Une durée erronée peut empêcher les sauts de ligne, ce qui
805 conduit à une musique compressée, voire à un débordement de la page.}
807 Une erreur de durée sera bien plus facilement localisable si vous
808 positionnez régulièrement des contrôles de barre de mesure -- voir
809 @ruser{Vérification des limites et numéros de mesure}.
811 Si vous tenez absolument à enchainer de tels débordements, vous devrez
812 insérer des barres de mesure invisibles là où vous souhaitez positionner
813 un saut de ligne. Consultez le chapitre @ruser{Barres de mesure} pour
817 @node Apparition d'une portée supplémentaire
818 @unnumberedsubsec Apparition d'une portée supplémentaire
819 @translationof An extra staff appears
821 Lorsque les contextes ne sont pas créés explicitement par la commande
822 @code{\new}, ils le seront si la commande à exécuter n'est pas censée
823 s'appliquer au contexte en cours. Pour des partitions simples, le fait
824 que les contextes soient automatiquement créés rend bien des services,
825 et c'est d'ailleurs le cas pour la majorité des exemples contenus dans
826 les manuels de LilyPond. Cependant, la création implicite d'un contexte
827 peut aboutir à l'apparition d'une portée @qq{parasite}. On s'attend par
828 exemple, en lisant le code qui suit, à ce que toutes les têtes de notes
829 soient en rouge, alors que le résultat nous présente deux portées et que
830 les notes, placées sur la portée inférieure, restent en noir.
832 @lilypond[quote,verbatim,relative=2]
833 \override Staff.NoteHead #'color = #red
837 Étant donné qu'aucun contexte @code{Staff} n'existe lorsque la
838 dérogation est introduite, LilyPond le crée implicitement pour lui
839 appliquer la directive considérée. Survient alors la commande
840 @w{@code{\new Staff}} qui, à son tour, crée une nouvelle portée pour
841 contenir les notes qui suivent. Voici la syntaxe correcte pour obtenir
842 ces notes en rouge@tie{}:
844 @lilypond[quote,verbatim,relative=2]
846 \override Staff.NoteHead #'color = #red
851 Autre exemple : la présence d'une commande @code{\relative} à
852 l'intérieur d'une section @code{\repeat} génèrera obligatoirement une
853 portée intempestive. Cela tient au fait que la commande @code{\repeat}
854 va créer deux blocs @code{\relative} qui, chacun à leur tour, créeront
855 implicitement un bloc @code{Staff} assorti d'un bloc @code{Voice}.
857 @lilypond[quote,verbatim]
858 \repeat unfold 2 \relative { c d e f }
861 La manière adéquate de procéder consiste à inverser les commandes
862 @code{\repeat} et @code{\relative}, comme ceci@tie{}:
864 @lilypond[quote,verbatim]
866 \repeat unfold 2 { c d e f }
871 @node Erreur renvoyant à ../ly/init.ly
872 @unnumberedsubsec Erreur renvoyant à @code{../ly/init.ly}
873 @translationof Apparent error in ../ly/init.ly
875 Certains messages d'erreur relatifs à une erreur de syntaxe dans le
876 fichier @file{../ly/init.ly} peuvent survenir lorsque le fichier est mal
877 formaté. Cela se produit notamment lors d'un défaut de parité de
878 bornages ou de guillemets.
880 L'erreur la plus courante est la simple omission d'une accolade
881 fermante (@code{@}} à la fin du bloc @code{Score}. La solution est
882 évidente en pareil cas@tie{}: il suffit de vérifier que le bloc
883 @code{Score} est bien clôturé. La structure des fichiers LilyPond est
884 abordée plus en détails au chapitre
885 @rlearning{Organisation des fichiers LilyPond}. C'est la raison pour
886 laquelle nous vous invitons à utiliser un éditeur de texte qui prenne en
887 charge le contrôle de parité des parenthèses, crochets et accolades afin
888 de vous éviter de telles erreurs.
890 Lorsqu'il s'agit d'un guillemet fermant (@code{"}) omis, le message
891 d'erreur devrait vous indiquer un numéro de ligne avoisinant. L'erreur
892 se situe la plupart du temps une ou deux lignes au-dessus de celle
894 @c Match quote character "
896 @node Message d'erreur Unbound variable %
897 @unnumberedsubsec Message d'erreur « Unbound variable % »
898 @translationof Error message Unbound variable %
900 Ce message d'erreur, qu'il apparaisse sur le terminal ou en fin de
901 fichier journal, est associé à un message du type @qq{GUILE a signalé
902 une erreur@dots{}}. Il survient à chaque fois qu'un commentaire
903 @emph{LilyPond} est indûment placé dans une routine @emph{Scheme}.
905 Un commentaire LilyPond est introduit par le signe pourcent (@code{%})
906 et ne doit en aucun cas se trouver dans une routine Scheme. En Scheme,
907 les commentaires s'introduisent par un point-virgule (@code{;}).
910 @node Message d'erreur FT_Get_Glyph_Name
911 @unnumberedsubsec Message d'erreur « FT_Get_Glyph_Name »
912 @translationof Error message FT_Get_Glyph_Name
914 Ce message d'erreur, qu'il apparaisse sur le terminal ou en fin de
915 fichier journal, survient lorsqu'un fichier source contient des
916 caractères non ASCII et qu'il n'a pas été enregistré avec un encodage
917 UTF-8. Pour plus de détails, reportez-vous au chapitre
918 @ruser{Caractères spéciaux}.
921 @node staff-affinities devraient aller en ordre décroissant
922 @unnumberedsubsec staff-affinities devraient aller en ordre décroissant
923 @translationof Warning staff affinities should only decrease
925 Cet avertissement est émis lorsque la partition ne comporte pas de
926 portée, comme par exemple une feuille de chant avec un contexte
927 @code{ChordName} et un contexte @code{Lyrics}. Ce message disparaîtra
928 dès lors que autoriserez l'un de ces contextes à se comporter comme une
929 portée, à l'aide de l'instruction
932 \override VerticalAxisGroup #'staff-affinity = ##f
936 que vous insérerez dès sa création. Pouur plus d'information,
937 reportez-vous à la rubrique
938 @ruser{Espacement des lignes rattachées à des portées}.