@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@c This file is part of lilypond.tely
@ignore
- Translation of GIT committish: b40f25ec7472b855483b5eb9126747bfb9487fe1
+ Translation of GIT committish: bfbaf6488d99ab4cdfcb4efdc67eaca63a636106
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@end ignore
+@c Translators: Ludovic Sardain
+@c Translation checkers: Jean-Yves Baudais, Valentin Villenave, John Mandereau, Jean-Charles Malahieude
+
@node Working on LilyPond projects
@chapter Working on LilyPond projects
l'utiliser avec une version plus récente de LilyPond ? La syntaxe du
langage d'entrée change parfois lorsque LilyPond s'améliore. La
plupart des changements peuvent être appliqués automatiquement avec
-@code{convert-ly}, mais quelques-uns peuvent demander une intervention
+@code{convert-ly}, mais quelques-uns peuvent requérir une intervention
manuelle. Vos fichiers LilyPond peuvent être structurés de manière à
faciliter leur mise à jour.
@end itemize
Voici quelques conseils qui peuvent vous éviter certains problèmes ou
en résoudre d'autres.
-@itemize @bullet
+@itemize
@item @strong{Ajoutez le numéro de version dans chaque fichier}.
Notez que chaque fichier modèle contient une ligne @code{\version
-"2.11.15"}. Nous vous conseillons fortement d'inclure cette ligne,
+"2.11.32"}. Nous vous conseillons fortement d'inclure cette ligne,
même pour de petits fichiers. Par expérience, il est très difficile
de se rappeler quelle version de LilyPond on utilisait quelques
-années auparavant. L'utilitaire @code{convert-ly} demande que vous
-spécifiiez quelle version de LilyPond vous utilisiez.
+années auparavant. L'utilitaire @command{convert-ly} demande que vous
+spécifiiez la version de LilyPond vous utilisiez alors.
-@item @strong{Ajoutez des contrôles}: @ref{Bar check}, @ref{Octave
-check} et @ref{Barnumber check}. Si vous avez ajouté des contrôles de
+@item @strong{Ajoutez des contrôles}: @ruser{Bar check}, @ruser{Octave
+check} et @ruser{Barnumber check}. Si vous avez ajouté des contrôles de
loin en loin, et que vous faites une erreur, vous pourrez la retrouver
plus rapidement. @qq{De loin en loin}, qu'est-ce à dire ? Cela
dépend de la complexité de la musique. Pour de la musique très
viennent d'un défaut de parité entre @code{@{} et @code{@}}.
@item @strong{Séparez les affinages de mise en forme} de la musique
-elle-même. Voyez @ref{Saving typing with identifiers and functions} et
-@ref{Style sheets}.
+elle-même. Voyez @ruser{Saving typing with identifiers and functions} et
+@ruser{Style sheets}.
@end itemize
à la fois --- mais toujours une seule mesure par ligne de texte ---,
et vérifiez chaque système lorsqu'il est terminé. Vous pouvez
utiliser la commande @code{showLastLength} pour accélérer la
-compilation --- voir @ref{Skipping corrected music} ;
+compilation --- voir @ruser{Skipping corrected music} ;
@item définissez @code{mBreak = @{\break @}} et insérez
-@code{\mBreak} dans le fichier d'entrée des sauts de ligne identiques à la
-partition originale. Cela facilite la comparaison entre la partition
-originale et la partition de LilyPond. Lorsque vous avez fini de
-relire votre musique, vous pouvez définir @code{mBreak = @{ @}} pour
-enlever tous ces sauts de ligne, et laisser LilyPond placer les sauts
-de ligne selon son propre algorithme.
+@code{\mBreak} dans le fichier d'entrée pour obtenir des sauts de
+ligne identiques à la partition originale. Cela facilite la
+comparaison entre la partition originale et la partition de
+LilyPond. Lorsque vous avez fini de relire votre musique, vous pouvez
+définir @code{mBreak = @{ @}} pour enlever tous ces sauts de ligne, et
+laisser LilyPond placer les sauts de ligne selon son propre algorithme.
@end itemize
@itemize @bullet
-@item @strong{utilisez un identificateur pour chaque voix},
+@item @strong{Utilisez un identificateur pour chaque voix},
avec un minimum de structure dans la définition. La structure de la
section @code{\score} est la plus susceptible de changer, notamment
dans une nouvelle version de LilyPond, alors que la définition du
@end example
@item @strong{Séparez les retouches} des définitions de
-musique. Ce conseil a été vu dans @ref{General suggestions},
-mais pour les gros projets c'est absolument vital. Nous
+musique. Ce conseil a été vu dans @ruser{General suggestions},
+mais pour les projets d'importance c'est absolument vital. Nous
pouvons avoir besoin de changer la définition de
@code{fthenp}, mais dans ce cas nous n'aurons besoin de le faire
qu'une seule fois, et nous pourrons encore éviter de
@lilypond[quote,verbatim,ragged-right]
hornNotes = \relative c'' { c4 b dis c }
\score {
- {
- \hornNotes
- }
+ {
+ \hornNotes
+ }
}
@end lilypond
fragB = \relative c'' { a8. gis16 ees4 }
violin = \new Staff { \fragA \fragA \fragB \fragA }
\score {
- {
- \violin
- }
+ {
+ \violin
+ }
}
@end lilypond
padText = { \once \override TextScript #'padding = #5.0 }
fthenp=_\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p }
violin = \relative c'' {
- \repeat volta 2 {
- c4._\dolce b8 a8 g a b |
- \padText
- c4.^"hi there!" d8 e' f g d |
- c,4.\fthenp b8 c4 c-. |
- }
+ \repeat volta 2 {
+ c4._\dolce b8 a8 g a b |
+ \padText
+ c4.^"hi there!" d8 e' f g d |
+ c,4.\fthenp b8 c4 c-. |
+ }
}
\score {
- {
- \violin
- }
+ {
+ \violin
+ }
\layout{ragged-right=##t}
}
@end lilypond
@example
violin = \relative c'' @{
- \repeat volta 2 @{
- c4._\markup@{ \italic \bold dolce @} b8 a8 g a b |
- \once \override TextScript #'padding = #5.0
- c4.^"hi there!" d8 e' f g d |
- c,4.\markup@{ \dynamic f \italic \small @{ 2nd @}
- \hspace #0.1 \dynamic p @} b8 c4 c-. |
- @}
+ \repeat volta 2 @{
+ c4._\markup@{ \italic \bold dolce @} b8 a8 g a b |
+ \once \override TextScript #'padding = #5.0
+ c4.^"hi there!" d8 e' f g d |
+ c,4.\markup@{ \dynamic f \italic \small @{ 2nd @}
+ \hspace #0.1 \dynamic p @} b8 c4 c-. |
+ @}
@}
@end example
Jusqu'ici nous avons vu des substitutions statiques : quand LilyPond
rencontre @code{\padText}, il le remplace par le contenu que nous lui
-avons défini --- c'est-à-dire le contenu à droite de @code{padText=}).
+avons défini --- c'est-à-dire le contenu à droite de @code{padText=}.
LilyPond gère également des substitutions non-statiques --- vous
pouvez les voir comme des fonctions.
@lilypond[quote,verbatim,ragged-right]
padText =
#(define-music-function (parser location padding) (number?)
- #{
- \once \override TextScript #'padding = #$padding
- #})
+ #{
+ \once \override TextScript #'padding = #$padding
+ #})
\relative c''' {
- c4^"piu mosso" b a b
- \padText #1.8
- c4^"piu mosso" d e f
- \padText #2.6
- c4^"piu mosso" fis a g
+ c4^"piu mosso" b a b
+ \padText #1.8
+ c4^"piu mosso" d e f
+ \padText #2.6
+ c4^"piu mosso" fis a g
}
@end lilypond
Utiliser les identificateurs est aussi un bon moyen pour vous épargner
du travail si la syntaxe de LilyPond change un jour --- voir
-@ref{Updating old files}. Si vous avez une seule définition, par
-exemple @code{\dolce}, pour tous vos fichiers (voir @ref{Style
+@ruser{Updating old files}. Si vous avez une seule définition, par
+exemple @code{\dolce}, pour tous vos fichiers (voir @ruser{Style
sheets}), et que la syntaxe change, alors vous n'aurez qu'à mettre à
jour votre seule définition @code{\dolce}, au lieu de devoir modifier
chaque fichier @code{.ly}.
@section Style sheets
La sortie que produit LilyPond peut être largement modifiée --- voir
-@ref{Tweaking output} pour plus de détails. Mais que faire si vous
+@ruser{Tweaking output} pour plus de détails. Mais que faire si vous
avez beaucoup de fichiers auxquels vous souhaitez appliquer vos
retouches ? Ou si vous souhaitez simplement séparer les retouches de
la musique elle-même ? Rien de plus facile.
Prenons un exemple. Ne vous inquiétez pas si vous ne comprenez pas
les parties avec tous les @code{#()}. Celles-ci sont expliquées dans
-@ref{Advanced tweaks with Scheme}.
+@ruser{Advanced tweaks with Scheme}.
@lilypond[quote,verbatim,ragged-right]
mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
- #:line(#:dynamic "mp" #:text #:italic "dolce" )))
+ #:line(#:dynamic "mp" #:text #:italic "dolce" )))
tempoMark = #(define-music-function (parser location markp) (string?)
#{
- \once \override Score . RehearsalMark #'self-alignment-X = #left
- \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
- \mark \markup { \bold $markp }
+ \once \override Score . RehearsalMark #'self-alignment-X = #left
+ \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
+ \mark \markup { \bold $markp }
#})
\relative c'' {
- \tempo 4=50
- a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
- \tempoMark "Poco piu mosso"
- cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
+ \tempo 4=50
+ a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
+ \tempoMark "Poco piu mosso"
+ cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
}
@end lilypond
Il y a quelques problèmes de chevauchement ; nous allons arranger
-cela en utilisant les techniques de @ref{Moving objects}. On peut
-aussi aussi faire quelque chose pour les définitions de @code{mpdolce}
+cela en utilisant les techniques de @ruser{Moving objects}. On peut
+aussi faire quelque chose pour les définitions de @code{mpdolce}
et @code{tempoMark}. Elles produisent le résultat que nous désirons,
mais nous pourrions aussi vouloir les utiliser dans une autre pièce.
Il suffirait de les copier et les coller au début de chaque
@example
%%% enregistrez ceci dans un fichier nommé "definitions.ly"
mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
- #:line(#:dynamic "mp" #:text #:italic "dolce" )))
+ #:line(#:dynamic "mp" #:text #:italic "dolce" )))
tempoMark = #(define-music-function (parser location markp) (string?)
#@{
- \once \override Score . RehearsalMark #'self-alignment-X = #left
- \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
- \mark \markup @{ \bold $markp @}
+ \once \override Score . RehearsalMark #'self-alignment-X = #left
+ \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
+ \mark \markup @{ \bold $markp @}
#@})
@end example
\include "definitions.ly"
\relative c'' @{
- \tempo 4=50
- a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
- \once \override Score.RehearsalMark #'padding = #2.0
- \tempoMark "Poco piu mosso"
- cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
+ \tempo 4=50
+ a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
+ \once \override Score.RehearsalMark #'padding = #2.0
+ \tempoMark "Poco piu mosso"
+ cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
@}
@end example
@lilypond[quote,ragged-right]
mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
- #:line(#:dynamic "mp" #:text #:italic "dolce" )))
+ #:line(#:dynamic "mp" #:text #:italic "dolce" )))
tempoMark = #(define-music-function (parser location markp) (string?)
#{
- \once \override Score . RehearsalMark #'self-alignment-X = #left
- \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
- \mark \markup { \bold $markp }
+ \once \override Score . RehearsalMark #'self-alignment-X = #left
+ \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
+ \mark \markup { \bold $markp }
#})
\relative c'' {
- \tempo 4=50
- a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
- \once \override Score.RehearsalMark #'padding = #2.0
- \tempoMark "Poco piu mosso"
- cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
+ \tempo 4=50
+ a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
+ \once \override Score.RehearsalMark #'padding = #2.0
+ \tempoMark "Poco piu mosso"
+ cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
}
@end lilypond
rapprocher des têtes de notes. Déplaçons l'indication métronomique
au-dessus de la clef, au lieu de la laisser au-dessus de la première
note. Et pour finir, mon professeur de composition déteste les
-chiffrages de mesure en "C", nous allons donc le transformer en "4/4".
+chiffrages de mesure en @qq{C}, nous allons donc le transformer en @qq{4/4}.
Cependant, ne changez pas le fichier @file{musique.ly}. Remplacez le
fichier @file{definitions.ly} par ceci :
@example
%%% definitions.ly
mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
- #:line( #:dynamic "mp" #:text #:italic "dolce" )))
+ #:line( #:dynamic "mp" #:text #:italic "dolce" )))
tempoMark = #(define-music-function (parser location markp) (string?)
#@{
- \once \override Score . RehearsalMark #'self-alignment-X = #left
- \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
- \mark \markup @{ \bold $markp @}
+ \once \override Score . RehearsalMark #'self-alignment-X = #left
+ \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
+ \mark \markup @{ \bold $markp @}
#@})
\layout@{
- \context @{ \Score
- \override MetronomeMark #'extra-offset = #'(-9 . 0)
- \override MetronomeMark #'padding = #'3
- @}
- \context @{ \Staff
- \override TimeSignature #'style = #'numbered
- @}
- \context @{ \Voice
- \override Glissando #'thickness = #3
- \override Glissando #'gap = #0.1
- @}
+ \context @{ \Score
+ \override MetronomeMark #'extra-offset = #'(-9 . 0)
+ \override MetronomeMark #'padding = #'3
+ @}
+ \context @{ \Staff
+ \override TimeSignature #'style = #'numbered
+ @}
+ \context @{ \Voice
+ \override Glissando #'thickness = #3
+ \override Glissando #'gap = #0.1
+ @}
@}
@end example
@lilypond[quote,ragged-right]
mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
- #:line( #:dynamic "mp" #:text #:italic "dolce" )))
+ #:line( #:dynamic "mp" #:text #:italic "dolce" )))
tempoMark = #(define-music-function (parser location markp) (string?)
#{
- \once \override Score . RehearsalMark #'self-alignment-X = #left
- \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
- \mark \markup { \bold $markp }
+ \once \override Score . RehearsalMark #'self-alignment-X = #left
+ \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
+ \mark \markup { \bold $markp }
#})
\layout{
- \context { \Score
- \override MetronomeMark #'extra-offset = #'(-9 . 0)
- \override MetronomeMark #'padding = #'3
- }
- \context { \Staff
- \override TimeSignature #'style = #'numbered
- }
- \context { \Voice
- \override Glissando #'thickness = #3
- \override Glissando #'gap = #0.1
- }
+ \context { \Score
+ \override MetronomeMark #'extra-offset = #'(-9 . 0)
+ \override MetronomeMark #'padding = #'3
+ }
+ \context { \Staff
+ \override TimeSignature #'style = #'numbered
+ }
+ \context { \Voice
+ \override Glissando #'thickness = #3
+ \override Glissando #'gap = #0.1
+ }
}
\relative c'' {
- \tempo 4=50
- a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
- \once \override Score.RehearsalMark #'padding = #2.0
- \tempoMark "Poco piu mosso"
- cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
+ \tempo 4=50
+ a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
+ \once \override Score.RehearsalMark #'padding = #2.0
+ \tempoMark "Poco piu mosso"
+ cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
}
@end lilypond
C'est encore mieux ! Mais supposons maintenant que je veuille publier
cette pièce. Mon professeur de composition n'aime pas les chiffrages
-de mesure en "C", mais moi je les aime bien. Copions l'actuel
+de mesure en @qq{C}, mais moi je les aime bien. Copions l'actuel
@file{definitions.ly} dans le fichier @file{publication-web.ly}, et
modifions ce dernier. Puisque la musique est destinée à produire un
fichier PDF affiché sur écran, nous allons aussi augmenter la taille
@example
%%% definitions.ly
mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
- #:line( #:dynamic "mp" #:text #:italic "dolce" )))
+ #:line( #:dynamic "mp" #:text #:italic "dolce" )))
tempoMark = #(define-music-function (parser location markp) (string?)
#@{
- \once \override Score . RehearsalMark #'self-alignment-X = #left
- \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
- \mark \markup @{ \bold $markp @}
+ \once \override Score . RehearsalMark #'self-alignment-X = #left
+ \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
+ \mark \markup @{ \bold $markp @}
#@})
#(set-global-staff-size 23)
\layout@{
- \context @{ \Score
- \override MetronomeMark #'extra-offset = #'(-9 . 0)
- \override MetronomeMark #'padding = #'3
- @}
- \context @{ \Staff
- @}
- \context @{ \Voice
- \override Glissando #'thickness = #3
- \override Glissando #'gap = #0.1
- @}
+ \context @{ \Score
+ \override MetronomeMark #'extra-offset = #'(-9 . 0)
+ \override MetronomeMark #'padding = #'3
+ @}
+ \context @{ \Staff
+ @}
+ \context @{ \Voice
+ \override Glissando #'thickness = #3
+ \override Glissando #'gap = #0.1
+ @}
@}
@end example
@lilypond[quote,ragged-right]
mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
- #:line( #:dynamic "mp" #:text #:italic "dolce" )))
+ #:line( #:dynamic "mp" #:text #:italic "dolce" )))
tempoMark = #(define-music-function (parser location markp) (string?)
#{
- \once \override Score . RehearsalMark #'self-alignment-X = #left
- \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
- \mark \markup { \bold $markp }
+ \once \override Score . RehearsalMark #'self-alignment-X = #left
+ \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
+ \mark \markup { \bold $markp }
#})
#(set-global-staff-size 23)
\layout{
- \context { \Score
- \override MetronomeMark #'extra-offset = #'(-9 . 0)
- \override MetronomeMark #'padding = #'3
- }
- \context { \Voice
- \override Glissando #'thickness = #3
- \override Glissando #'gap = #0.1
- }
+ \context { \Score
+ \override MetronomeMark #'extra-offset = #'(-9 . 0)
+ \override MetronomeMark #'padding = #'3
+ }
+ \context { \Voice
+ \override Glissando #'thickness = #3
+ \override Glissando #'gap = #0.1
+ }
}
\relative c'' {
- \tempo 4=50
- a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
- \once \override Score.RehearsalMark #'padding = #2.0
- \tempoMark "Poco piu mosso"
- cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
+ \tempo 4=50
+ a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
+ \once \override Score.RehearsalMark #'padding = #2.0
+ \tempoMark "Poco piu mosso"
+ cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
}
@end lilypond
Il ne nous reste plus qu'à remplacer @code{\include "definitions.ly"}
-par @code{\include "web-publish.ly"} dans notre fichier de musique.
+par @code{\include "publication-web.ly"} dans notre fichier de musique.
Il est possible, bien sûr, de rendre cela encore plus pratique. Nous
pourrions créer un fichier @file{definitions.ly} qui ne contiendrait
que les définitions de @code{mpdolce} et de @code{tempoMark}, un
fichier @file{publication-web.ly} qui ne contiendrait que la section
-@code{layout} décrite ci-dessus et un fichier @file{university.ly} qui
+@code{layout} décrite ci-dessus et un fichier @file{universite.ly} qui
ne contiendrait que les retouches pour produire le résultat que mon
-professeur préfère. Le début du fichier @file{music.ly} ressemblerait
+professeur préfère. Le début du fichier @file{musique.ly} ressemblerait
alors à
@example
\include "definitions.ly"
%%% Décommentez seulement une de ces deux lignes !
-\include "web-publish.ly"
-%\include "university.ly"
+\include "publication-web.ly"
+%\include "universite.ly"
@end example
Cette approche peut être utile même si vous ne produisez qu'un seul
-jeu de partitions. J'utilise une demi-douzaine de fichiers de
-@qq{feuille de style} pour mes projets. Je commence chaque fichier de
-musique par @code{\include "../global.ly"} qui contient :
+jeu de partitions. J'utilise personnellement une demi-douzaine de
+fichiers de @qq{feuille de style} pour mes projets. Je commence
+chaque fichier de musique par @code{\include "../global.ly"} qui contient :
@example
%%% global.ly
-\version "2.11.15"
+\version @w{"@version{}"}
#(ly:set-option 'point-and-click #f)
\include "../init/init-defs.ly"
\include "../init/init-mise-en-page.ly"
fonctionnalités.
LilyPond est fourni avec un utilitaire qui facilite cette mise à
-jour : @code{convert-ly}. Pour savoir comment utiliser ce programme,
-voir @ref{Updating files with convert-ly}.
+jour : @command{convert-ly}. Pour savoir comment utiliser ce programme,
+voir @rprogram{Updating files with convert-ly}.
-Malheureusement, @code{convert-ly} ne peut pas réaliser toutes les
+Malheureusement, @command{convert-ly} ne peut pas réaliser toutes les
modifications. Il s'occupe des changements qui ne requièrent qu'une
simple substitution de texte --- comme @code{raggedright} devenant
@code{ragged-right} ---, les autres étant trop compliqués à effectuer.
-Les changements de syntaxe qui ne sont pas gérés par @code{convert-ly}
-sont énumérés dans @ref{Updating files with convert-ly}.
+Les changements de syntaxe qui ne sont pas gérés par @command{convert-ly}
+sont énumérés dans @rprogram{Updating files with convert-ly}.
Par exemple, dans les versions 2.4 et antérieures de LilyPond,
les accents et les lettres non anglaises étaient entrées en
@example
\score @{
- <<
- % \melodie
- % \harmonie
- % \basse
- >>
- \layout@{@}
+ <<
+ % \melodie
+ % \harmonie
+ % \basse
+ >>
+ \layout@{@}
@}
@end example
@example
basse = \relative c' @{
%@{
- c4 c c c
- d d d d
+ c4 c c c
+ d d d d
%@}
@}
@end example
Une autre technique de déboguage très utile est la construction
@iftex
-de @ref{Minimal examples}.
+de @ruser{Minimal examples}.
@end iftex
@ifnottex
-d'@ref{Minimal examples}.
+d'@ruser{Minimal examples}.
@end ifnottex
@section Minimal examples
Un exemple minimal est un exemple de code aussi court que possible.
-De tels exemples sont bien plus compréhensibles que des exemple
+De tels exemples sont bien plus compréhensibles que des exemples
longs. Les exemples minimaux sont utilisés pour
@itemize
@item les rapports de bogue,
@item les demandes d'aide sur les listes de diffusion,
@item un ajout à
-@uref{http://lsr@/.dsi@/.unimi/2.it/,LilyPond Snippet Repository}.
+@uref{http://lsr@/.dsi@/.unimi@/.it/,LilyPond Snippet Repository}.
@end itemize
Pour construire un exemple minimal, la règle est très simple : enlevez
Tout l'intérêt d'un exemple minimal réside dans sa facilité de lecture :
@itemize
@item évitez d'utiliser des notes, armures ou métriques compliquées, à
-moins que vous vouliez montrer quelque chose en rapport avec
+moins que vous ne vouliez montrer quelque chose en rapport avec
celles-ci,
@item n'utilisez pas de commandes @code{\override} sauf si elles font
l'intérêt de l'exemple.