<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!-- header_tag --> <html lang="de"> <head> <title>Tipparbeit sparen durch Bezeichner und Funktionen - GNU LilyPond Handbuch zum Lernen</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="description" content="GNU LilyPond Handbuch zum Lernen"> <meta name="generator" content="makeinfo 4.11"> <link title="Top" rel="start" href="index.de.html#Top"> <link rel="up" href="Suggestions-for-writing-LilyPond-files.de.html#Suggestions-for-writing-LilyPond-files" title="Vorschläge, wie LilyPond-Dateien geschrieben werden sollen"> <link rel="prev" href="Large-projects.de.html#Large-projects" title="Große Projekte"> <link rel="next" href="Style-sheets.de.html#Style-sheets" title="Stil-Dateien"> <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> <!-- Copyright (C) 1999--2007 bei den Autoren _The translation of the following copyright notice is provided for courtesy to non-English speakers, but only the notice in English legally counts._ _Die Übersetzung der folgenden Lizenzanmerkung ist zur Orientierung für Leser, die nicht Englisch sprechen. Im rechtlichen Sinne ist aber nur die englische Version gültig._ Es ist erlaubt, dieses Dokument unter den Bedingungen der GNU Free Documentation Lizenz (Version 1.1 oder spätere, von der Free Software Foundation publizierte Versionen, ohne Invariante Abschnitte), zu kopieren, verbreiten und/oder zu verändern. Eine Kopie der Lizenz ist im Abschnitt ``GNU Free Documentation License'' angefügt. 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> nächstes: <a rel="next" accesskey="n" href="Style-sheets.de.html#Style-sheets">Stil-Dateien</a>, voriges: <a rel="previous" accesskey="p" href="Large-projects.de.html#Large-projects">Große Projekte</a>, aufwärts: <a rel="up" accesskey="u" href="Suggestions-for-writing-LilyPond-files.de.html#Suggestions-for-writing-LilyPond-files">Vorschläge, wie LilyPond-Dateien geschrieben werden sollen</a> <hr> </div> <h4 class="subsection">5.1.4 Tipparbeit sparen durch Bezeichner und Funktionen</h4> <p><a name="index-Variable-258"></a><a name="index-Bezeichner-259"></a> Bis jetzt haben Sie immer etwa solche Noten gesehen: <blockquote> <pre class="verbatim"> HornNoten = \relative c'' { c4 b dis c } \score { { \HornNoten } } </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>Das könnte auch nützlich in Minimal-Music sein: <blockquote> <pre class="verbatim"> fragA = \relative c'' { a4 a8. b16 } fragB = \relative c'' { a8. gis16 ees4 } Geige = \new Staff { \fragA \fragA \fragB \fragA } \score { { \Geige } } </pre> <p> <a href="../98/lily-afb5e767.ly"> <img align="middle" border="0" src="../98/lily-afb5e767.png" alt="[image of music]"> </a> </p> </blockquote> <p>Sie können diese Bezeichner oder Variablen aber auch für (eigene) Einstellungen verwenden: <blockquote> <pre class="verbatim"> dolce = \markup{ \italic \bold dolce } AbstandText = { \once \override TextScript #'padding = #5.0 } fthenp=_\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p } Geige = \relative c'' { \repeat volta 2 { c4._\dolce b8 a8 g a b | \AbstandText c4.^"hi there!" d8 e' f g d | c,4.\fthenp b8 c4 c-. | } } \score { { \Geige } \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>Die Variablen haben in diesem Beispiel deutlich die Tipparbeit erleichtert. Aber es lohnt sich, sie zu einzusetzen, auch wenn man sie nur einmal anwendet, denn sie vereinfachen die Struktur. Hier ist das vorangegangene Beispiel ohne Variablen. Es ist sehr viel komplizierter zu lesen, besonders die letzte Zeile. <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>Bis jetzt wurde nur statische Substitution vorgestellt – wenn LilyPond den Befehl <code>\padText</code> findet, wird er ersetzt durch durch unsere vorherige Definition (alles, was nach dem <code>padtext =</code> kommt). <p>LilyPond kennt aber auch nicht-statische Substitutionen (man kann sie sich als Funktionen vorstellen). <blockquote> <pre class="verbatim"> AbstandText = #(define-music-function (parser location padding) (number?) #{ \once \override TextScript #'padding = #$padding #}) \relative c''' { c4^"piu mosso" b a b \AbstandText #1.8 c4^"piu mosso" d e f \AbstandText #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>Die Benutzung von Variablen hilft auch, viele Schreibarbeit zu vermeiden, wenn die Eingabesyntax von LilyPond sich verändert (siehe auch <a href="Updating-old-files.de.html#Updating-old-files">Alte Dateien aktualisieren</a>). Wenn nur eine einzige Definition (etwa <code>\dolce</code>) für alle Dateien verwendet wird (vgl. <a href="Style-sheets.de.html#Style-sheets">Stil-Dateien</a>), muss nur diese einzige Definition verändert werden, wenn sich die Syntax ändert. Alle Verwendungen des Befehles beziehen sich dann auf die neue Definition. <!-- footer_tag --><br><hr> <div class="node"> <p> nächstes: <a rel="next" accesskey="n" href="Style-sheets.de.html#Style-sheets">Stil-Dateien</a>, voriges: <a rel="previous" accesskey="p" href="Large-projects.de.html#Large-projects">Große Projekte</a>, aufwärts: <a rel="up" accesskey="u" href="Suggestions-for-writing-LilyPond-files.de.html#Suggestions-for-writing-LilyPond-files">Vorschläge, wie LilyPond-Dateien geschrieben werden sollen</a> </div> <div style="background-color: #e8ffe8; padding: 2; border: #c0ffc0 1px solid;"> <p> <font size="-1"> Diese Seite ist für LilyPond-2.11.57 (Entwicklungszweig). <br> <address> Fehler bitte an <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> melden. </address> <br> Ihre <a href="http://lilypond.org/web/devel/participating/documentation-adding">Vorschläge für die Dokumentation</a> sind willkommen. </font> </p> </div> <P> Andere Sprachen: <a href="Saving-typing-with-variables-and-functions.html">English</a>, <a href="Saving-typing-with-variables-and-functions.fr.html">français</a>, <a href="Saving-typing-with-variables-and-functions.es.html">español</a>. <BR> </P> </BODY></html>