X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Ffr%2Fuser%2Fprogramming-interface.itely;h=96de874a512c213e96994f29f20d8afd44d946a0;hb=eeec992b7029d0982bf4ed0eb3995e9ca99c10e9;hp=b8bce5596340fde57063a7023a0b4f1b8c8f8c08;hpb=5225c5f57f7120683be517c7eea8e391c976004a;p=lilypond.git diff --git a/Documentation/fr/user/programming-interface.itely b/Documentation/fr/user/programming-interface.itely index b8bce55963..96de874a51 100644 --- a/Documentation/fr/user/programming-interface.itely +++ b/Documentation/fr/user/programming-interface.itely @@ -1,33 +1,42 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*- @c This file is part of lilypond.tely @ignore - Translation of GIT committish: 58710722240de541ca4f37382c0503ac470ea6a6 - + Translation of GIT committish: 76de7e168dbc9ffc7671d99663c5ce50dae42abb When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @end ignore +@c \version "2.11.65" + +@c Translators: Valentin Villenave +@c Translation checkers: Gilles Thibault + @node Interfaces for programmers @chapter Interfaces for programmers -UNTRANSLATED NODE: IGNORE ME +@untranslated -@menu + +@menu * Music functions:: * Programmer interfaces:: * Building complicated functions:: * Markup programmer interface:: * Contexts for programmers:: * Scheme procedures as properties:: -@end menu +* Using Scheme code instead of tweak:: +* Difficult tweaks:: +@end menu + @node Music functions @section Music functions -UNTRANSLATED NODE: IGNORE ME +@untranslated -@menu + +@menu * Overview of music functions:: * Simple substitution functions:: * Paired substitution functions:: @@ -35,142 +44,312 @@ UNTRANSLATED NODE: IGNORE ME * Void functions:: * Functions without arguments:: * Overview of available music functions:: -@end menu +@end menu + @node Overview of music functions @subsection Overview of music functions -UNTRANSLATED NODE: IGNORE ME +@untranslated + @node Simple substitution functions @subsection Simple substitution functions -UNTRANSLATED NODE: IGNORE ME +@untranslated + @node Paired substitution functions @subsection Paired substitution functions -UNTRANSLATED NODE: IGNORE ME +@untranslated + @node Mathematics in functions @subsection Mathematics in functions -UNTRANSLATED NODE: IGNORE ME +@untranslated + @node Void functions @subsection Void functions -UNTRANSLATED NODE: IGNORE ME +@untranslated + @node Functions without arguments @subsection Functions without arguments -UNTRANSLATED NODE: IGNORE ME +@untranslated + @node Overview of available music functions @subsection Overview of available music functions -UNTRANSLATED NODE: IGNORE ME +@untranslated + +@include identifiers.tely @node Programmer interfaces @section Programmer interfaces -UNTRANSLATED NODE: IGNORE ME +@untranslated + -@menu +@menu * Input variables and Scheme:: * Internal music representation:: -@end menu +@end menu + @node Input variables and Scheme @subsection Input variables and Scheme -UNTRANSLATED NODE: IGNORE ME +@untranslated + @node Internal music representation @subsection Internal music representation -UNTRANSLATED NODE: IGNORE ME +@untranslated + @node Building complicated functions @section Building complicated functions -UNTRANSLATED NODE: IGNORE ME +@untranslated + -@menu +@menu * Displaying music expressions:: * Music properties:: * Doubling a note with slurs (example):: * Adding articulation to notes (example):: -@end menu +@end menu + @node Displaying music expressions @subsection Displaying music expressions -UNTRANSLATED NODE: IGNORE ME +@untranslated + @node Music properties @subsection Music properties -UNTRANSLATED NODE: IGNORE ME +@untranslated + @node Doubling a note with slurs (example) @subsection Doubling a note with slurs (example) -UNTRANSLATED NODE: IGNORE ME +@untranslated + @node Adding articulation to notes (example) @subsection Adding articulation to notes (example) -UNTRANSLATED NODE: IGNORE ME +@untranslated + @node Markup programmer interface @section Markup programmer interface -UNTRANSLATED NODE: IGNORE ME +@untranslated -@menu + +@menu * Markup construction in Scheme:: * How markups work internally:: * New markup command definition:: -@end menu +* New markup list command definition:: +@end menu + @node Markup construction in Scheme @subsection Markup construction in Scheme -UNTRANSLATED NODE: IGNORE ME +@untranslated + @node How markups work internally @subsection How markups work internally -UNTRANSLATED NODE: IGNORE ME +@untranslated + @node New markup command definition @subsection New markup command definition -UNTRANSLATED NODE: IGNORE ME +@untranslated + + +@node New markup list command definition +@subsection New markup list command definition + +@untranslated + @node Contexts for programmers @section Contexts for programmers -UNTRANSLATED NODE: IGNORE ME +@untranslated + -@menu +@menu * Context evaluation:: * Running a function on all layout objects:: -@end menu +@end menu + @node Context evaluation @subsection Context evaluation -UNTRANSLATED NODE: IGNORE ME +@untranslated + @node Running a function on all layout objects @subsection Running a function on all layout objects -UNTRANSLATED NODE: IGNORE ME +@untranslated + @node Scheme procedures as properties @section Scheme procedures as properties -UNTRANSLATED NODE: IGNORE ME - +@untranslated --- SKELETON FILE -- -When you actually translate this file, please remove these lines as -well as all `UNTRANSLATED NODE: IGNORE ME' lines. + +@menu +* Using Scheme code instead of tweak:: +* Difficult tweaks:: +@end menu + +@node Using Scheme code instead of tweak +@section Using Scheme code instead of @code{\tweak} + +L'inconvénient principal de la commande @code{\tweak} est la rigidité de sa +syntaxe. Par exemple, le code suivant produit une erreur. + +@example +F = \tweak #'font-size #-3 -\flageolet + +\relative c'' @{ + c4^\F c4_\F +@} +@end example + +@noindent +En d'autres termes, @code{\tweak} ne se comporte pas comme une articulation : +il ne peut notamment pas être accolé avec les symboles @samp{^} ou @samp{_}. + +C'est en se servant du langage Scheme que l'on peut résoudre ce problème. +Dans cet exemple, on a recours aux méthodes décrites dans @ref{Adding +articulation to notes (example)}, en particulier quant à l'emploi de +@code{\displayMusic}. + +@example +F = #(let ((m (make-music 'ArticulationEvent + 'articulation-type "flageolet"))) + (set! (ly:music-property m 'tweaks) + (acons 'font-size -3 + (ly:music-property m 'tweaks))) + m) + +\relative c'' @{ + c4^\F c4_\F +@} +@end example + +@noindent +Ici les propriétés @code{tweak} de l'objet flageolet nommé +@samp{m} (créé au moyen de @code{make-music}) sont extraites par +@code{ly:music-property}, une nouvelle valeur de la taille de fonte +est ajoutée à la liste de ses propriétés (grâce à la fonction Scheme +@code{acons}), et le résultat de cette opération est renvoyé par @code{set!}. +Le dernier élément, dans ce bloc @code{let}, est la valeur finale de +@samp{m} lui-même. + + +@node Difficult tweaks +@section Difficult tweaks + +Certains réglages sont plus délicats que d'autres. + +@itemize @bullet + + +@item +L'un d'entre eux est l'apparence des objets dits @q{spanner}, qui s'étendent +horizontalement, tels que les liaisons. Si, en principe, un seul de ces objets +est créé à la fois et peut donc être modifié de façon habituelle, lorsque ces +objets doivent enjamber un changement de ligne, ils sont dupliqués au début +du ou des systèmes suivants. Comme ces objets sont des clones de l'objet d'origine, +ils en héritent toutes les propriétés, y compris les éventuelles commandes @code{\override}. + + +En d'autres termes, une commande @code{\override} affecte toujours les deux extrémités +d'un objet @q{spanner}. Pour ne modifier que la partie précédant ou suivant le changement +de ligne, il faut intervenir directement dans le processus de mise en page. +La fonction de rappel @code{after-line-breaking} contient toute l'opération Scheme +effectuée lorsque les sauts de lignes ont été déterminés, et que des objets graphiques +ont été divisés sur des systèmes différents. + +Dans l'exemple suivant, on définit une nouvelle opération nommée +@code{my-callback}. Cette opération + +@itemize @bullet +@item +détermine si l'objet a été divisé à l'occasion d'un changement de ligne +@item +si oui, recherche les différents morceaux de l'objet +@item +vérifie si l'objet considéré est bien la deuxième moitié d'un objet divisé +@item +si oui, applique un espacement supplémentaire (@code{extra-offset}). +@end itemize + +On ajoute cette procédure à l'objet @rinternals{Tie} (liaison de tenue), +de façon à ce que le deuxième morceau d'une liaison divisée soit rehaussé. + +@c KEEP LY +@lilypond[quote,verbatim,ragged-right] +#(define (my-callback grob) + (let* ( + ; l'objet a-t-il été divisé ? + (orig (ly:grob-original grob)) + + ; si oui, rechercher les morceaux frères (siblings) + (siblings (if (ly:grob? orig) + (ly:spanner-broken-into orig) '() ))) + + (if (and (>= (length siblings) 2) + (eq? (car (last-pair siblings)) grob)) + (ly:grob-set-property! grob 'extra-offset '(-2 . 5))))) + +\relative c'' { + \override Tie #'after-line-breaking = + #my-callback + c1 ~ \break c2 ~ c +} +@end lilypond + +@noindent +Lorsque cette astuce va être appliquée, notre nouvelle fonction de rappel +@code{after-line-breaking} devra également appeler celle d'origine +(@code{after-line-breaking}), si elle existe. +Ainsi, pour l'utiliser dans le cas d'un crescendo (objet @code{Hairpin}), +il faudra appeler également @code{ly:hairpin::after-line-breaking}. + + +@item Pour des raisons d'ordre technique, certains objets ne peuvent être modifiés par +@code{\override}. Parmi ceux-là, les objets @code{NonMusicalPaperColumn} +et @code{PaperColumn}. La commande @code{\overrideProperty} sert à les modifier, de +façon similaire à @code{\once \override}, mais avec une syntaxe différente : + +@example +\overrideProperty +#"Score.NonMusicalPaperColumn" % Nom de l'objet +#'line-break-system-details % Nom de la propriété +#'((next-padding . 20)) % valeur +@end example + +Notez cependant que la commande @code{\override} peut tout de même être appliquée +à @code{NoteMusicalPaperColumn} et @code{PaperColumn} dans un bloc @code{\context}. + +@end itemize