@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
@ignore
- Translation of GIT committish: c299f84d574ac9b97ab7ffbb640b5c3a1cdca5cc
+ Translation of GIT committish: 65264f1ec906b40c1b281e360d4860f7a6eb8138
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
internes}. Ce guide répertorie toutes les variables, fonctions et
autres options que LilyPond met à votre disposition. Il est consultable
@c leave the @uref as one long line.
-@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/user/@/lilypond@/-internals/,en@tie{}ligne},
+@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/internals/,en@tie{}ligne},
au format HTML@tie{}; il est également inclus dans la documentation
fournie avec le logiciel.
l'emploi du Scheme. Les fragments de Scheme, dans un fichier
@file{.ly}, sont introduits par le caractère @emph{hash} (@code{#}),
improprement surnommé @qq{dièse}.
-@footnote{Le @rextendnamed{Scheme tutorial,Tutoriel Scheme} fournit
-quelques notions de base pour saisir des nombres, des listes, des
-chaînes de caractères ou des symboles, en Scheme.}
+@footnote{Le @rextend{Tutoriel Scheme} fournit quelques notions de base
+pour saisir des nombres, des listes, des chaînes de caractères ou des
+symboles, en Scheme.}
@menu
* Contextes d'interprétation::
* Ordonnancement des contextes::
@end menu
-
@seealso
Manuel d'initiation :
@rlearning{Contextes et graveurs}.
* Contextes de bas niveau -- les voix::
@end menu
+
@node Score -- le père de tous les contextes
@unnumberedsubsubsec Score -- le père de tous les contextes
@translationof Score - the master of all contexts
-Il s'agit en l'occurence du contexte le plus élevé, autrement dit le
+Il s'agit en l'occurrence du contexte le plus élevé, autrement dit le
plus important, en matière de notation. En effet, c'est au niveau de la
partition -- @emph{score} en anglais -- que se gèrent le temps et la
tonalité@tie{}; c'est donc là qu'il faut s'assurer que les différents
arts = @{ s4-. s4-> @}
@end example
-Elles sont ensuites fusionnées par affectation au même contexte
+Elles sont ensuite fusionnées par affectation au même contexte
@code{Voice}.
@example
Cette variante s'utilise lorsque les expression musicales peuvent être
interprétées à différents niveaux, comme par exemple lorsque intervient
la commande @code{\applyOutput} -- pour de plus amples détails, voir
-@rextendnamed{Running a function on all layout objects, Application
-d'une fonction à tous les objets de mise en forme}. En l'absence de
-@code{\context} explicite, LilyPond considère qu'il s'agit de
-@code{Voice}.
+@rextend{Application d'une fonction à tous les objets de mise en forme}.
+En l'absence de @code{\context} explicite, LilyPond considère qu'il
+s'agit de @code{Voice}.
@example
\applyOutput #'@var{contexte} #@var{fonction} % s'applique à Voice
Ces sous-programmes sont chargés de créer les différents éléments de
notation@tie{}: on trouve ainsi dans le contexte @code{Voice} un graveur
@code{Note_heads_engraver}, chargé des têtes de notes et, dans le
-contexte @code{Staff}, un graveur @code{Key_signature_engraver}, chargé
-de l'armure.
+contexte @code{Staff}, un graveur @code{Key_engraver}, chargé de
+l'armure.
Vous trouverez une description exhaustive de chaque graveur dans
@ifhtml
}
@end lilypond
-
On a rassemblé les réglages dans un bloc @code{\context}, lui-même placé
dans le bloc @code{\layout}@tie{}:
d'agréments} du contexte @code{Staff} par défaut. Néanmoins, et s'il
devait en être ainsi, vous pourriez le spécifier.
-
@lilypond[verbatim,quote]
\score {
\new Staff {
implicite. Ceci peut engendrer une nouvelle portée ou une autre
partition.
-
@seealso
Manuel d'utilisation :
@rprogram{Apparition d'une portée supplémentaire}.
* Conventions de nommage::
@end menu
+
@node Navigation dans les références du programme
@subsection Navigation dans les références du programme
@translationof Navigating the program reference
Sur la page de la documentation relative aux doigtés, c'est-à-dire
@ref{Doigtés}, se trouve l'indication suivante@tie{}:
-
@quotation
@strong{Voir aussi}
typographique ou musical. Ainsi, un doigté (objet @emph{Fingering})
possède les attributs suivants@tie{}:
-
@itemize
@item
Sa taille ne dépend pas de l'espacement horizontal, contrairement aux
Pour aller encore plus loin, plutôt que de simplement parler de l'objet
@code{Fingering}, ce qui ne nous avance pas à grand chose, on peut aller
explorer son âme même, dans les fichiers source de LilyPond (voir
-@rlearning{Autres sources de documentation}), en l'occurence le fichier
+@rlearning{Autres sources de documentation}), en l'occurrence le fichier
@file{scm/define-grobs.scm}@tie{}:
@example
@cindex padding
@noindent
-En-dessous de cette description se trouve décrite la variable
+En dessous de cette description se trouve décrite la variable
@code{padding}@tie{}:
@quotation
@itemize
@item Qu'est-ce qui relève des conventions, et qu'est-ce qui relève de
la règle@tie{}?
-@item Qu'est-ce qui relève des règles du langage sous-jascent, et
+@item Qu'est-ce qui relève des règles du langage sous-jacent, et
qu'est-ce qui est propre à LilyPond@tie{}?
@end itemize
* Modification de listes associatives::
@end menu
+
@node Vue d'ensemble de la modification des propriétés
@subsection Vue d'ensemble de la modification des propriétés
@translationof Overview of modifying properties
contexte, ce réglage ne s'appliquera qu'à la portée courante@tie{}; les
autres portées demeureront intactes.
-
@lilypond[quote,verbatim,relative=2,fragment]
c4
\override Staff.Stem #'thickness = #4.0
@rinternals{RevertProperty},
@rinternals{PropertySet}.
-
@knownissues
-
La sous-couche Scheme ne vérifie pas la saisie des propriétés de façon
très stricte. Des références cycliques dans des valeurs Scheme peuvent
de ce fait interrompre ou faire planter le programme -- ou bien les
Les contextes s'organisent de façon hiérarchique@tie{}: aussi, lorsqu'un
contexte de niveau supérieur est spécifié (par exemple @code{Staff}), la
-propriété sera modifée dans tous les contextes inférieurs (tous les
+propriété sera modifiée dans tous les contextes inférieurs (tous les
contextes @code{Voice}, par exemple) qu'il contient.
@funindex \unset
@seealso
-
Référence des propriétés internes :
@rinternals{Tunable context properties}.
La valeur de @var{contexte}.@var{NomObjet} (une liste associative, ou
@emph{alist}) permet d'initialiser les propriétés des objets un par un.
-Les objets eux-même ont leurs propriétés, dont les noms, dans la
+Les objets eux-mêmes ont leurs propriétés, dont les noms, dans la
tradition du langage Scheme, comprennent un trait d'union
(@code{toto-titi}). Ces propriétés internes changent constamment au
cours de la mise en page@tie{}: en fait, la gravure d'une page n'est
@funindex \once
L'instruction @code{\override} doit être précédée d'un @code{\once} dès
-lors que les effets de l'accomodement ne concernent que l'événement qui
+lors que les effets de l'accommodement ne concernent que l'événement qui
la suit directement@tie{}:
@lilypond[quote,verbatim,relative=2]
@end ignore
-
@seealso
-
Référence des propriétés internes :
@rinternals{Backend}
\tweak #'@code{objet-propriété} #@code{valeur}
@end example
-La commande @code{\tweak} s'applique à l'objet qui apparait
+La commande @code{\tweak} s'applique à l'objet qui apparaît
immédiatement après @code{valeur}.
@ignore
@noindent
Voir pour plus de détails
-@rextendnamed{Displaying music expressions,Affichage d'expressions musicales}.
+@rextend{Affichage d'expressions musicales}.
@end ignore
Pour une introduction à la syntaxe et l'utilisation des retouches, voir
que le fichier source est converti en flux musical. LilyPond peut
parfois être amené à ajouter d'autres éléments au flux musical lors de
la phase d'analyse. C'est la raison pour laquelle, puisque LilyPond
-peut insérer une note dans un accord alos qu'elle n'en fait pas partie
+peut insérer une note dans un accord alors qu'elle n'en fait pas partie
explicitement, il est impératif d'adopter une construction d'accord
lorsque l'instruction @code{\tweak} concerne une note isolée@tie{}:
Vous pouvez examiner le flux musical généré par une portion de votre
fichier source, y compris les éléments automatiquement insérés, en
suivant les indications portées à la rubrique
-@rextendnamed{Displaying music expressions,Affichage d'expressions
-musicales}. Ceci s'avère tout à fait approprié pour déterminer ce qui
-peut se modifier à l'aide d'un @code{\tweak} ou bien vous aider à
-rectifier votre source de telle sorte que le @code{\tweak} produise ses
-effets.
-
+@rextend{Affichage d'expressions musicales}. Ceci s'avère tout à fait
+approprié pour déterminer ce qui peut se modifier à l'aide d'un
+@code{\tweak} ou bien vous aider à rectifier votre source de telle sorte
+que le @code{\tweak} produise ses effets.
@seealso
Manuel d'initiation :
@rlearning{Méthodes de retouche}.
Manuel d'extension :
-@rextendnamed{Displaying music expressions, Affichage d'expressions musicales}.
-
+@rextend{Affichage d'expressions musicales}.
@knownissues
-
@cindex tweak et identificateur
La commande @code{\tweak} ne peut s'utiliser dans une variable.
@cindex tweaks et paroles
La commande @code{\tweak} est inopérante en mode @code{\lyricmode}.
-@cindex tweaking control points
-@cindex control points, tweaking
+@cindex tweak et points de contrôle
+@cindex points de contrôle et tweak
Lorsqu'il y a plusieurs liaisons de prolongation dans un accord, la
commande @code{\tweak} ne s'applique qu'à la première.
(stretchability . 7))
@end example
-L'une des conséquences, parfois involontaire, de ceci est la supression
+L'une des conséquences, parfois involontaire, de ceci est la suppression
de réglages standards effectués par un fichier d'initialisation chargé à
chaque compilation de votre fichier source. Dans l'exemple précédent,
les réglages standards de @code{padding} et @code{minimum-distance},
@section Propriétés et contextes utiles
@translationof Useful concepts and properties
-
@menu
* Modes de saisie::
* Direction et positionnement::
* Rotation des objets::
@end menu
+
@node Modes de saisie
@subsection Modes de saisie
@translationof Input modes
@item une commande @code{\tag},
@item les indications de corde, par exemple @code{-"corde"},
@item les indications de doigté, par exemple @w{@code{-1}},
-@item les racourcis d'articulation, par exemple @w{@code{-.}},
+@item les raccourcis d'articulation, par exemple @w{@code{-.}},
@w{@code{->}} ou @w{@code{--}}.
@end itemize
@strong{La propriété @code{direction}}
-Le positionnement ou l'orientation de nombreux objets de rendu est géré
-par la propriété @code{direction}.
+Le positionnement ou l'orientation de nombreux objets de rendu sont
+gérés par la propriété @code{direction}.
La propriété @code{direction} peut prendre la valeur @code{1}, qui
signifie @qq{ascendant} ou @qq{au-dessus}, ou @w{@code{-1}}, qui
comportement en matière d'orientation ou positionnement@tie{}; elles
sont de la forme
-@noindent
-@code{\xxxUp}, @code{\xxxDown}, @code{\xxxNeutral}
+@example
+@code{\xxxUp}, @code{\xxxDown} et @code{\xxxNeutral}
+@end example
@noindent
auquel cas @code{\xxxNeutral} signifie @qq{retour au comportement par
c2( c)
@end lilypond
+En matière de musique polyphonique, il est souvent plus judicieux
+d'utiliser des contextes @code{Voice} explicites que de modifier
+l'orientation des objets. Pour de plus amples informations, voir
+@ref{Plusieurs voix}.
+
+@seealso
+Manuel d'initiation :
+@rlearning{Objets inclus dans la portée}.
+
+Manuel de notation :
+@ref{Plusieurs voix}.
+
@node Distances et unités de mesure
@subsection Distances et unités de mesure
Les distances absolues permettent de spécifier les marges, indentations
et autres détails de mise en page@tie{}; elles s'expriment par défaut en
-milimètres. Vous pouvez utiliser d'autres systèmes de mesure, dès lors
+millimètres. Vous pouvez utiliser d'autres systèmes de mesure, dès lors
que la quantité est suivie de la mesure@tie{}: @code{\mm}, @code{\cm},
@code{\in}@tie{}(pouces) ou @code{\pt}@tie{}(points, 1/72,27 pouce).
Les mesures de mise en page peuvent aussi s'exprimer en unité extensible
@funindex magstep
-Lorsque seulement une portion de partition doit apparaitre dans une
+Lorsque seulement une portion de partition doit apparaître dans une
taille, comme par exemple une portée d'ossia ou une note de bas de page,
influer sur la taille globale de portée affecterait l'intégralité de la
partition. Il convient donc dans ce cas de modifier à la fois la
localisation des deux bornes de l'extenseur soit calculée à la volée,
vous pouvez cependant forcer leur ordonnée (coordonnée-Y). Les
propriétés que vous devrez ajuster résident au deuxième niveau dans la
-hiérarchie, mais la syntaxe de la commmande @code{\override} nécessaire
+hiérarchie, mais la syntaxe de la commande @code{\override} nécessaire
demeure relativement simple@tie{}:
@lilypond[relative=2,quote,verbatim]
@item arrow
L'activation de cette sous-propriété (lui affecter @code{#t}) ajoutera
-à l'extenseur une terminaison en flêche.
+à l'extenseur une terminaison en flèche.
@item padding
Cette sous-propriété contrôle l'espace qui doit séparer l'extrémité de
@end lilypond
L'utilisation de @code{\endSpanners} permet de s'affranchir d'insérer un
-@code{\stopTextSpan} pour cloturer un @code{\startTextSpan} ou un
+@code{\stopTextSpan} pour clôturer un @code{\startTextSpan} ou un
@code{\!} pour terminer un soufflet.
-
@seealso
Référence des propriétés internes :
@rinternals{Glissando},
* Considérations spécifiques::
@end menu
+
@node Suppression des stencils
@unnumberedsubsubsec Suppression des stencils
@translationof Removing the stencil
certains cependant, tels les barres de mesure, clefs, métriques ou
armures, apparaîtront deux fois lors d'un saut de ligne -- une première
fois en fin de ligne, puis à nouveau au début de la ligne suivante. Ces
-objets, que l'on peut traîter de @emph{changeables} (@emph{breakable} en
+objets, que l'on peut traiter de @emph{changeables} (@emph{breakable} en
anglais) disposent de la propriété @code{break-visibility} spécialement
chargée de contrôler leur visibilité aux trois endroits où il sont
susceptibles d'apparaître@tie{}: en début de ligne, en cours de ligne ou
Ce comportement est géré par la propriété @code{break-visibility}, dont
vous trouverez une explication à la rubrique
@rlearning{Visibilité et couleur des objets}. Cette propriété est
-constituée d'un vecteur de trois boléens qui, dans l'ordre, déterminent
+constituée d'un vecteur de trois booléens qui, dans l'ordre, déterminent
si l'objet sera imprimé à la fin, en cours, et au début d'une ligne --
on pourrait aussi dire avant un saut de ligne, là où il n'y a pas de
saut de ligne, et après un saut de ligne.
@end lilypond
Avec de tels réglages particuliers, seules les altérations accidentelles
-premettront d'indiquer le changement de tonalité.
+permettront d'indiquer le changement de tonalité.
@c TODO Add visibility of cautionary accidentals before notes
@code{explicitClefVisibility} gère à la fois le symbole de la clef et
l'indication d'octaviation qui lui est attachée.
-
@seealso
Manuel d'initiation :
@rlearning{Visibilité et couleur des objets}
* Regroupement vertical d'objets graphiques::
* Modification des stencils::
* Modification de l'allure des éléments::
+* Conteneurs requalifiants::
@end menu
@seealso
@ref{En quoi consiste la référence des propriétés internes},
@ref{Modification de propriétés}.
+Manuel d'extension :
+@rextend{Interfaces pour programmeurs}.
+
Fichiers d'initialisation :
@file{scm/define-grobs.scm}.
Morceaux choisis :
@rlsrnamed{Tweaks and overrides,Retouches}.
-Manuel d'extension :
-@rextend{Interfaces for programmers}.
-
Référence des propriétés internes :
@rinternals{All layout objects}.
@end menu
@seealso
+Manuel de notation :
+@ref{Utilisation de break-aligned-interface}.
+
Manuel d'extension :
-@rextend{Callback functions}.
+@rextend{Fonctions de rappel}.
@node Détermination directe de X-offset et Y-offset
@cindex alignement sur un objet
@cindex break-align-symbols
-Indications de répère et numéros de mesure peuvent s'aligner sur des
+Indications de repère et numéros de mesure peuvent s'aligner sur des
objets de notation autres qu'une barre de mesure. Parmi ces objets,
nous citerons @code{ambitus}, @code{breathing-sign}, @code{clef},
@code{custos}, @code{staff-bar}, @code{left-edge},
Les différents objets sur lesquels l'alignement pourrait intervenir
seront regroupés dans une liste. Si l'un des objets est invisible à
l'endroit voulu, en raison d'un réglage de @code{break-visibility} ou
-bien par forçage de la visiblité des armures et clefs, le repère ou le
+bien par forçage de la visibilité des armures et clefs, le repère ou le
numéro de mesure viendra s'aligner sur le premier élément de cette liste
qui soit visible. Dans le cas où aucun objet de la liste n'est visible,
l'alignement se fera sur la barre de mesure ou, dans le cas où la barre
Le symbole standard d'un objet quel qu'il soit peut être remplacé à
partir du moment où la propriété @code{stencil} référence une procédure
-différente et écrite à cet effet. Ceci recquiert une bonne maîtrise du
+différente et écrite à cet effet. Ceci requiert une bonne maîtrise du
fonctionnement interne de LilyPond, mais est grandement facilité dans
bien des cas et permet d'obtenir le résultat escompté.
En effet, rien ne nous interdit, à partir de la propriété
@code{stencil}, d'appeler la procédure qui génère du texte,
-@code{ly:text-interface::print} en l'occurence, et d'adjoindre à l'objet
+@code{ly:text-interface::print} en l'occurrence, et d'adjoindre à l'objet
une propriété @code{text} qui contiendra, sous forme de @emph{markup},
le symbole à dessein. Grâce à l'extrême flexibilité des @emph{markups},
vous pourrez parvenir à bien des choses -- voir à ce sujet
@c TODO Add inserting Postscript or ref to later
-
@seealso
Manuel de notation :
@ref{Text markup commands},
d'une liste de quatre paires de nombres décimaux (ou nombres réels).
L'une des manières de procéder consiste à tout d'abord estimer les
coordonnées des deux extrémités puis, par tâtonnement, déterminer les
-deux points intremédiaires.
+deux points intermédiaires.
Remarque intéressante au sujet des courbes@tie{}: une courbe sera
symétrique si ses points de contrôle sont symétriques. L'une des
@rinternals{TieColumn}.
+@node Conteneurs requalifiants
+@subsection Conteneurs requalifiants
+@translationof Unpure-pure containers
+
+@cindex Scheme, pure containers
+@cindex Scheme, unpure containers
+@cindex pure containers, Scheme
+@cindex unpure containers, Scheme
+@cindex espacement horizontal, affinage
+
+Les conteneurs requalifiants permettent de faciliter le calcul des
+espacements en cas de modification du @emph{Y-axis} -- plus
+particulièrement les composantes @code{Y-offset} et @code{Y-extent} -- à
+l'aide d'une fonction scheme en lieu et place de valeurs.
+
+L'envergure verticale (@code{Y-extent}) de certains objets dépend de la
+propriété @code{stencil}@tie{}; jouer sur leur stencil requiert alors une
+intervention supplémentaire au niveau du @code{Y-extent} à l'aide d'un
+conteneur transitoire. Lorsqu'une fonction affecte un @code{Y-offset} ou
+un @code{Y-extent}, cela déclenche la détermination des sauts de ligne
+de manière anticipée dans la séquence des traitements. Il en résulte
+que cette opération n'est en fait pas exécutée@tie{}; elle renvoie
+habituellement @code{0} ou @code{'(0 . 0)}, ce qui peut engendrer des
+collisions. Une fonction @qq{pure} évitera d'avorter la construction
+des propriétés ou objets, qui de ce fait verront leurs arguments liés à
+la verticalité (@code{Y-axis}) correctement évalués.
+
+Il existe actuellement une trentaine de fonctions que l'on peut
+qualifier de @qq{pures}. Le recours à un conteneur transitoire permet
+de requalifier une fonction de telle sorte qu'elle soit reconnue comme
+@qq{pure} et soit donc évaluée @strong{avant} détermination des sauts de
+ligne -- l'espacement horizontal sera de fait ajusté en temps et en heure.
+La fonction @qq{impure} sera ensuite évaluée @strong{après} le
+positionnement des sauts de ligne.
+
+@warning{Il n'est pas toujours facile d'avoir l'assurance qu'une
+fonction soit qualifiée de @qq{pure}@tie{}; aussi nous vous recommandons
+d'éviter d'utiliser les objets @code{Beam} or @code{VerticalAlignment}
+lorsque vous désirez en créer une.}
+
+Un conteneur requalifiant se construit selon la syntaxe
+
+@code{(ly:make-unpure-pure-container f0 f1)}
+
+où @code{f0} est une fonction prenant @var{n} arguments (@var{n >= 1}),
+le premier devant être l'objet en question@tie{}; il s'agit de la
+fonction dont le résultat sera réutilisé. @var{f1} est la fonction qui
+sera qualifiée de @qq{pure}. Elle prend @var{n + 2} arguments, le
+premier devant être lui aussi l'objet en question, et les second et
+troisième étant respectivement les @qq{point de départ} (@var{start}) et
+@qq{point d'arrivée} (@var{end}).
+
+@var{start} et @var{end} sont dans tous les cas des valeurs fictives qui
+trouveront leur utilité dans le cas d'objets de type @code{Spanner},
+tels les soufflets (@code{Hairpin}) ou barres de ligature (@code{Beam}),
+en retournant les différentes estimations de hauteur basées sur leurs
+début et fin d'extension.
+
+Viennent ensuite les autres arguments de la fonction initiale @code{f0}
+-- autrement dit aucun si @var{n = 1}.
+
+Les résultats de la deuxième fonction (@code{f1}) permettent une
+approximation des valeurs qui seront ensuite utilisées par la fonction
+initiale aux fins d'ajustement lors des phases ultérieures d'espacement.
+
+@lilypond[verbatim,quote,ragged-right]
+#(define (square-line-circle-space grob)
+(let* ((pitch (ly:event-property (ly:grob-property grob 'cause) 'pitch))
+ (notename (ly:pitch-notename pitch)))
+ (if (= 0 (modulo notename 2))
+ (make-circle-stencil 0.5 0.0 #t)
+ (make-filled-box-stencil '(0 . 1.0)
+ '(-0.5 . 0.5)))))
+
+squareLineCircleSpace = {
+ \override NoteHead #'stencil = #square-line-circle-space
+}
+
+smartSquareLineCircleSpace = {
+ \squareLineCircleSpace
+ \override NoteHead #'Y-extent =
+ #(ly:make-unpure-pure-container
+ ly:grob::stencil-height
+ (lambda (grob start end) (ly:grob::stencil-height grob)))
+}
+
+\new Voice \with { \remove "Stem_engraver" }
+\relative c'' {
+ \squareLineCircleSpace
+ cis4 ces cisis c
+ \smartSquareLineCircleSpace
+ cis4 ces cisis c
+}
+@end lilypond
+
+La première mesure de l'exemple ci-dessus ne fait pas appel à un
+conteneur requalifiant@tie{}; le moteur d'espacement n'a donc aucune
+connaissance de la largeur des têtes de note et ne peut empêcher
+qu'elles chevauchent les altérations. Dans la deuxième mesure, par
+contre, le recours à un conteneur requalifiant informe le moteur
+d'espacement de la largeur des têtes de note@tie{}; les collisions sont
+alors évitées du fait de l'espace réservé à chacune des têtes.
+
+Lorsqu'il s'agit de calculs simples, les fonctions, tant pour la partie
+@qq{pure} que pour la partie @qq{impure}, peuvent être identiques au
+détail près du nombre d'arguments utilisés ou du domaine d'intervention.
+
+@warning{Le fait de qualifier une fonction de @qq{pure} alors qu'elle ne
+l'est pas peut générer des résultats imprévisibles.}
+
+
@node Utilisation de fonctions musicales
@section Utilisation de fonctions musicales
@translationof Using music functions
Une adaptation ou un affinage qui devient récurrent parce que doit
s'appliquer à différentes expressions musicales peut faire l'objet d'une
-@emph{fonction musicale}. Nous ne traîterons ici que des fonctions de
-@emph{subtitution}, dont le but est de substituer une variable en un
+@emph{fonction musicale}. Nous ne traiterons ici que des fonctions de
+@emph{substitution}, dont le but est de substituer une variable en un
bout de code LilyPond. D'autres fonctions, plus complexes, sont
-abordées au chapitre @rextendnamed{Music functions,Fonctions musicales}.
+abordées au chapitre @rextend{Fonctions musicales}.
@menu
* Syntaxe d'une fonction de substitution::
Les arguments @code{parser} et @code{location} sont obligatoires@tie{};
ils sont utilisés dans certaines situations évoluées, comme indiqué dans
le manuel d'extension des fonctionnalités à au chapitre
-@rextendnamed{Music functions,Fonctions musicales}. Assurez-vous bien
-de ne pas les omettre dans vos fonctions de subtitution.
+@rextend{Fonctions musicales}. Assurez-vous bien de ne pas les omettre
+dans vos fonctions de substitution.
La liste des types de prédicat est elle aussi obligatoire. Voici
quelques uns des types de prédicat les plus utilisés dans les fonctions
@ref{Types de prédicats prédéfinis}. Vous pouvez par ailleurs définir
vos propres types de prédicat.
-
@seealso
-
Manuel de notation :
@ref{Types de prédicats prédéfinis}.
Manuel d'extension :
-@rextendnamed{Music functions, Fonctions musicales}.
+@rextend{Fonctions musicales}.
Fichiers d'initialisation :
@file{lily/music-scheme.cc},
\relative c' { c4 d e f \custosNote g }
@end lilypond
-Une fonction de subtitution peut traiter plusieurs argument@tie{}:
+Une fonction de substitution peut traiter plusieurs argument@tie{}:
@lilypond[quote,verbatim,ragged-right]
tempoPadded =