<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!-- header_tag --> <html lang="en"> <head> <title>Économies de saisie grâce aux identificateurs et fonctions - GNU LilyPond - manuel d'initiation</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="description" content="GNU LilyPond - manuel d'initiation"> <meta name="generator" content="makeinfo 4.11"> <link title="Top" rel="start" href="index.fr.html#Top"> <link rel="up" href="Suggestions-for-writing-LilyPond-input-files.fr.html#Suggestions-for-writing-LilyPond-input-files" title="Suggestions de saisie des fichiers LilyPond"> <link rel="prev" href="Large-projects.fr.html#Large-projects" title="Projets d'envergure"> <link rel="next" href="Style-sheets.fr.html#Style-sheets" title="Feuilles de style"> <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> <!-- Copyright (C) 1999--2008 par les auteurs _The translation of the following copyright notice is provided for courtesy to non-English speakers, but only the notice in English legally counts._ _La traduction de la notice de droits d'auteur ci-dessous vise à faciliter sa compréhension par le lecteur non anglophone, mais seule la notice en anglais a valeur légale._ Vous avez le droit de copier, distribuer et/ou modifier ce document selon les termes de la Licence GNU de documentation libre, version 1.1 ou tout autre version ultérieure publiée par la Free Software Foundation, ``sans aucune section invariante''. Une copie de la licence est fournie à la section ``Licence GNU de documentation libre''. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections. A copy of the license is included in the section entitled ``GNU Free Documentation License''. --> <meta http-equiv="Content-Style-Type" content="text/css"> <style type="text/css"><!-- pre.display { font-family:inherit } pre.format { font-family:inherit } pre.smalldisplay { font-family:inherit; font-size:smaller } pre.smallformat { font-family:inherit; font-size:smaller } pre.smallexample { font-size:smaller } pre.smalllisp { font-size:smaller } span.sc { font-variant:small-caps } span.roman { font-family:serif; font-weight:normal; } span.sansserif { font-family:sans-serif; font-weight:normal; } hr { border:0; height:1; color: #000000; background-color: #000000; } /* hr { border: none; height: 1px; color: #666666; background-color: #666666; } body { border-left: 1px solid #666666; border-right: 1px solid #666666; color: #332d28; margin-right: auto; margin-left: auto; width: 60em; list-style-type: square; font-family: Arial,Helvetica,sans-serif; padding-right: 1em; padding-left: 1em; } a { border-bottom: 1px dashed #344242; text-decoration: none; color: #344242; } a:link { text-decoration: none; } a:visited { border-bottom: 1px dashed #666666; color: #666666; } a:active { border-bottom: 1px solid #00cccc; color: #00cccc; } a:hover { border-bottom: 1px solid #1d7b85; color: #1d7b85; } blockquote { border: 1px solid #cccccc; padding: 3px; width: 40em; } .node { border-left: 1px solid #666666; margin: -0.5em 0px 1em; padding: 2px 1px 0px; font-style: italic; } .node a { border: none; text-decoration: underline; font-style: normal; font-weight: bold; } .verbatim { font-family: "Courier New",Courier,monospace; } .unnumberedsubsubsec { font-size: large; color: #1d7b85; } .subsubheading { font-size: large; color: #3b220d; } .contents { border: 1px dashed #339999; margin: 3px 2em; list-style-type: square; padding-right: 1em; width: 40em; background-color: #fcfff9; } .contents a { border-bottom: 1px dashed #423d34; text-decoration: none; color: #423d34; } .contents a:visited { border-bottom: 1px dashed #666666; color: #666666; } .contents a:active { border-bottom: 1px solid #f0d86d; color: #f0d86d; } .contents a:hover { border-bottom: 1px solid #3b220d; color: #3b220d; } .menu { border-left: 1px dashed #339999; margin: 3px 2em 1em; list-style-type: square; padding-left: 1.4em; width: 40em; } .unnumbered { } h2 { font-size: x-large; color: #1d7b85; } */ --></style> </head> <BODY BGCOLOR=WHITE TEXT=BLACK> <div class="node"> <p> <a name="Saving-typing-with-variables-and-functions"></a> Suivant : <a rel="next" accesskey="n" href="Style-sheets.fr.html#Style-sheets">Feuilles de style</a>, Précédent : <a rel="previous" accesskey="p" href="Large-projects.fr.html#Large-projects">Projets d'envergure</a>, Haut : <a rel="up" accesskey="u" href="Suggestions-for-writing-LilyPond-input-files.fr.html#Suggestions-for-writing-LilyPond-input-files">Suggestions de saisie des fichiers LilyPond</a> <hr> </div> <h4 class="subsection">5.1.4 Économies de saisie grâce aux identificateurs et fonctions</h4> <p><a name="index-variables-380"></a><a name="index-identificateurs-381"></a> Jusqu'à maintenant, vous avez vu ce type de code : <blockquote> <pre class="verbatim"> hornNotes = \relative c'' { c4 b dis c } \score { { \hornNotes } } </pre> <p> <a href="../8a/lily-718d27d0.ly"> <img align="middle" border="0" src="../8a/lily-718d27d0.png" alt="[image of music]"> </a> </p> </blockquote> <p>Vous comprendrez combien cela peut être utile pour écrire de la musique minimaliste : <blockquote> <pre class="verbatim"> fragmentA = \relative c'' { a4 a8. b16 } fragmentB = \relative c'' { a8. gis16 ees4 } violin = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA } \score { { \violin } } </pre> <p> <a href="../3b/lily-928ad868.ly"> <img align="middle" border="0" src="../3b/lily-928ad868.png" alt="[image of music]"> </a> </p> </blockquote> <p>Cependant, vous pouvez aussi utiliser ces identificateurs — aussi connus sous le nom de variables, macros, ou commandes (définies par l'utilisateur) — pour des retouches : <blockquote> <pre class="verbatim"> dolce = \markup{ \italic \bold dolce } 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-. | } } \score { { \violin } \layout{ragged-right=##t} } </pre> <p> <a href="../fb/lily-ace13d5f.ly"> <img align="middle" border="0" src="../fb/lily-ace13d5f.png" alt="[image of music]"> </a> </p> </blockquote> <p>Ces identificateurs sont évidemment utiles pour économiser de la frappe. Mais ils peuvent l'être même si vous ne les utilisez qu'une seule fois : ils réduisent la complexité. Regardons l'exemple précédent sans aucun identificateur. C'est beaucoup plus laborieux à lire, et particulièrement la dernière ligne. <pre class="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-. | } } </pre> <p>Jusqu'ici nous avons vu des substitutions statiques : quand LilyPond rencontre <code>\padText</code>, il le remplace par le contenu que nous lui avons défini — c'est-à-dire le contenu à droite de <code>padText=</code>. <p>LilyPond gère également des substitutions non-statiques — vous pouvez les voir comme des fonctions. <blockquote> <pre class="verbatim"> padText = #(define-music-function (parser location padding) (number?) #{ \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 } </pre> <p> <a href="../fd/lily-5fb6bbf8.ly"> <img align="middle" border="0" src="../fd/lily-5fb6bbf8.png" alt="[image of music]"> </a> </p> </blockquote> <p>Utiliser les identificateurs est aussi un bon moyen pour vous épargner du travail si la syntaxe de LilyPond change un jour — voir <a href="Updating-old-files.fr.html#Updating-old-files">Mise à jour d'anciens fichiers</a>. Si vous avez une seule définition, par exemple <code>\dolce</code>, pour tous vos fichiers (voir <a href="Style-sheets.fr.html#Style-sheets">Feuilles de style</a>), et que la syntaxe change, alors vous n'aurez qu'à mettre à jour votre seule définition <code>\dolce</code>, au lieu de devoir modifier chaque fichier <code>.ly</code>. <!-- footer_tag --><br><hr> <div class="node"> <p> Suivant : <a rel="next" accesskey="n" href="Style-sheets.fr.html#Style-sheets">Feuilles de style</a>, Précédent : <a rel="previous" accesskey="p" href="Large-projects.fr.html#Large-projects">Projets d'envergure</a>, Haut : <a rel="up" accesskey="u" href="Suggestions-for-writing-LilyPond-input-files.fr.html#Suggestions-for-writing-LilyPond-input-files">Suggestions de saisie des fichiers LilyPond</a> </div> <div style="background-color: #e8ffe8; padding: 2; border: #c0ffc0 1px solid;"> <p> <font size="-1"> Cette page documente LilyPond-2.11.57 (branche de développement). <br> <address> Rapportez toute anomalie en français à <a href="mailto:lilypond-user-fr@gnu.org">lilypond-user-fr@gnu.org</a> ou en anglais à <a href="http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs">http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs</a> </address> <br> Vos <a href="http://lilypond.org/web/devel/participating/documentation-adding">suggestions à propos de la documentation</a> sont les bienvenues. </font> </p> </div> <P> Autres langues : <a href="Saving-typing-with-variables-and-functions.html">English</a>, <a href="Saving-typing-with-variables-and-functions.es.html">español</a>, <a href="Saving-typing-with-variables-and-functions.de.html">deutsch</a>. <BR> </P> </BODY></html>