]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/de/notation/changing-defaults.itely
Docs-de: update syntax with convert-ly to fix doc build
[lilypond.git] / Documentation / de / notation / changing-defaults.itely
index 45b26f320353d728a6398b6c56b27d5f46befe92..2a18d0ad0a7f80bf53f6f6c18818f96f4358e4de 100644 (file)
@@ -1,14 +1,14 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: 0767b19c9139922e6d4f7fc569e1f5ffa016b7ac
+    Translation of GIT committish: 70aaf0159410169678942abd39eb13c876521437
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.12.0"
+@c \version "2.13.40"
 
 @c Translators: Till Paala
 
@@ -35,7 +35,7 @@ Die definitive Beschreibung der unterschiedlichen Einstellmöglichenkeiten
 findet sich in einem eigenen Dokument: @rinternalsnamed{Top,der Referenz
 der Interna}.  Diese Referenz zeigt alle Variablen, Funktionen und Optionen,
 die in LilyPond möglich sind.  Es existiert als ein HTML-Dokumente, das
-sich 
+sich
 @c leave the @uref as one long line.
 @uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/user/@/lilypond@/-internals/,on@/-line},
 aber auch lokal in das LilyPond-Dokumentationspaket integriert lesen lässt.
@@ -54,6 +54,7 @@ LilyPond-Quelldatei mit einer Raute @code{#} begonnen (siehe auch
 * Eigenschaften verändern::
 * Nützliche Konzepte und Eigenschaften::
 * Fortgeschrittene Optimierungen::
+* Musikfunktionen benutzen::
 @end menu
 
 
@@ -98,14 +99,14 @@ Referenz der Interna:
 Kontexte sind hierarchisch geordnet:
 
 @menu
-* Score - der Vater aller Kontexte::
+* Score -- der Vater aller Kontexte::
 * Oberste Kontexte -- Container für Systeme::
 * Mittlere Kontexte -- Systeme::
 * Unterste Kontexte -- Stimmen::
 @end menu
 
-@node Score - der Vater aller Kontexte
-@unnumberedsubsubsec Score - der Vater aller Kontexte
+@node Score -- der Vater aller Kontexte
+@unnumberedsubsubsec Score -- der Vater aller Kontexte
 @translationof Score - the master of all contexts
 
 @code{Score} (Partitur) ist der höchste Notationskontext.  Kein anderer Kontext
@@ -116,8 +117,7 @@ dafür, dass Elemente wie Schlüssel und Taktart- oder Tonartbezeichnungen
 
 Ein @code{Score}-Kontext wird eingerichtet, wenn eine
 @code{\score @{@dots{}@}} oder @code{\layout @{@dots{}@}}-Umgebung
-interpretiert wird, oder explizit mit dem @code{\new Score}-Befehl.
-
+interpretiert wird.
 
 @node Oberste Kontexte -- Container für Systeme
 @unnumberedsubsubsec Oberste Kontexte -- Container für Systeme
@@ -238,7 +238,7 @@ benutzt.  Er wird normalerweise implizit erstellt.
 
 Ein Stimmenkontext, der Noten in reduzierter Größe ausgibt und
 vor allem dazu da ist, Stichnoten zu setzen.  Siehe auch
-@ref{Formatting cue notes}.  Wird normalerweise implizit erstellt,
+@ref{Stichnoten formatieren}.  Wird normalerweise implizit erstellt,
 wenn Stichnoten gesetzt werden.
 
 
@@ -285,7 +285,7 @@ Eine praktische Anwendung von @code{\new} ist eine Partitur mit vielen
 Systemen.  Jede Stimme wird auf einem eigenen System notiert, das
 mit @code{\new Staff} begonnen wird.
 
-@lilypond[quote,verbatim,relative=2,ragged-right,fragment]
+@lilypond[quote,verbatim,relative=2,ragged-right]
 <<
   \new Staff { c4 c }
   \new Staff { d4 d }
@@ -366,6 +366,8 @@ erstellen, mit der optionalen Möglichkeit, bestimmte zusätzliche
 Artikulationszeichen zu den gleichen Noten hinzuzufügen und so
 eine editierte Ausgabe zu erhalten.
 
+@cindex Kontexte erstellen
+
 @item
 Der dritte Befehl, um Kontexte zu erstellen, ist:
 
@@ -432,7 +434,7 @@ angetroffen wird, wobei @code{<<...>>}-Konstruktionen ignoriert
 werden.
 
 Jeder Kontext kann am Leben gehalten werden, indem man sicherstellt
-dass er zu jedem musikalischen Moment etwas zu tun hat.  
+dass er zu jedem musikalischen Moment etwas zu tun hat.
 @code{Staff}-Kontexte werden am Leben gehalten, indem man sicherstellt,
 dass eine der enthaltenen Stimmen am Leben bleibt.  Eine Möglichkeit,
 das zu erreichen, ist es, unsichtbare Pause zu jeder Stimme
@@ -580,11 +582,12 @@ Referenz der Interna: @expansion{} Translation @expansion{} Engravers.
 @end ifnothtml
 Alle Kontexte sind erklärt in
 @ifhtml
-@rinternals{Contexts}
+@rinternals{Contexts},
 @end ifhtml
 @ifnothtml
-Referenz der Interna: @expansion{} Translation @expansion{} Context.
+Referenz der Interna: @expansion{} Translation @expansion{} Context,
 @end ifnothtml
+wobei die in diesem Kontext vorkommenden Engraver aufgelistet sind.
 
 Es kann teilweise nötig sein, diese Engraver umzupositionieren.  Das
 geschieht, indem man einen neuen Kontext mit @code{\new} oder
@@ -614,7 +617,7 @@ Es folgt ein einfaches Beispiel, in dem der
 @code{Clef_engraver} (Engraver für den Schlüssel) aus dem
 @code{Staff}-Kontext entfernt werden:
 
-@lilypond[quote,relative=1,verbatim,fragment]
+@lilypond[quote,relative=1,verbatim]
 <<
   \new Staff {
     f2 g
@@ -648,26 +651,32 @@ jedes System eine unterschiedliche Taktart hat:
 @cindex Taktarten, mehrere in Partitur
 @cindex Taktarten, unterschiedliche per System
 
-@lilypond[quote,relative=1,ragged-right,verbatim,fragment]
-\new Score \with {
-  \remove "Timing_translator"
-  \remove "Default_bar_line_engraver"
-} <<
+@lilypond[quote,verbatim]
+\score {
+  <<
+    \new Staff \with {
+      \consists "Timing_translator"
+      \consists "Default_bar_line_engraver"
+    } {
+        \time 3/4
+        c4 c c c c c
+    }
   \new Staff \with {
     \consists "Timing_translator"
     \consists "Default_bar_line_engraver"
   } {
-      \time 3/4
+      \time 2/4
       c4 c c c c c
   }
-  \new Staff \with {
-    \consists "Timing_translator"
-    \consists "Default_bar_line_engraver"
-  } {
-       \time 2/4
-       c4 c c c c c
-  }
 >>
+\layout {
+  \context {
+    \Score
+    \remove "Timing_translator"
+    \remove "Default_bar_line_engraver"
+    }
+  }
+}
 @end lilypond
 
 @knownissues
@@ -733,16 +742,16 @@ Es ist nicht möglich, Kontextänderungen als Variable zu definieren und
 sie dann in der @code{\context}-Definition anzuwenden, indem man die
 Variable aufruft.
 
-Der Befehl @code{\RemoveEmptyStaffContext} überschreibt die
+Der Befehl @code{\Staff \RemoveEmptyStaves} überschreibt die
 aktuellen Einstellungen für @code{Staff}.  Wenn die Einstellungen
-für Systeme verändert werden sollen, die @code{\RemoveEmptyStaffContext}
+für Systeme verändert werden sollen, die @code{\Staff \RemoveEmptyStaves}
 benutzen, müssen die Veränderungen gemacht werden, nachdem
-@code{\RemoveEmptyStaffContext} aufgerufen wurde, etwa:
+@code{\Staff \RemoveEmptyStaves} aufgerufen wurde, etwa:
 
 @example
 \layout @{
   \context @{
-    \RemoveEmptyStaffContext
+    \Staff \RemoveEmptyStaves
 
     \override Stem #'thickness = #4.0
   @}
@@ -754,6 +763,22 @@ benutzen, müssen die Veränderungen gemacht werden, nachdem
 @subsection Neue Kontexte definieren
 @translationof Defining new contexts
 
+@cindex Kontexte, neue definieren
+@cindex Engraver, in Kontexte einfügen
+
+@funindex \alias
+@funindex alias
+@funindex \name
+@funindex name
+@funindex \type
+@funindex type
+@funindex \consists
+@funindex consists
+@funindex \accepts
+@funindex accepts
+@funindex \denies
+@funindex denies
+
 Bestimme Kontexte, wie @code{Staff} oder @code{Voice}, werden
 erstellt, indem man sie mit einer Musikumgebung aufruft.  Es ist
 aber auch möglich, eigene neue Kontexte zu definieren, in denen
@@ -1029,13 +1054,13 @@ darum sind auch die Beispiele dieses Abschnittes nicht
 Folgende Aufgabe wird bearbeitet:  Der Fingersatz aus dem Beispiel
 unten soll verändert werden:
 
-@lilypond[quote,fragment,relative=2,verbatim]
+@lilypond[quote,relative=2,verbatim]
 c-2
 \stemUp
 f
 @end lilypond
 
-In der Dokumentation über Fingersatz (
+In der Dokumentation über Fingersatz (in
 @ref{Fingersatzanweisungen}) gibt es folgenden Abschnitt:
 
 @quotation
@@ -1045,6 +1070,15 @@ Referenz der Interna: @rinternals{Fingering}.
 
 @end quotation
 
+@c all ignored text just left out
+
+@ifnothtml
+Die Referenz der Interna gibt es als HTML-Dokument.  Sie sollten sie als
+HTML-Dokument lesen, entweder online oder indem Sie die HTML-Dokumentation
+herunterladen.  Dieser Abschnitt ist sehr viel schwieriger zu verstehen,
+wenn Sie die PDF-Version verwenden.
+@end ifnothtml
+
 Gehen Sie über diesen Link zum Abschnitt @rinternals{Fingering}.
 Oben auf der Seite findet sich:
 
@@ -1070,6 +1104,7 @@ Music event type @code{fingering-event} is in Music expressions named
 @rinternals{FingeringEvent}
 @end itemize
 
+@c translation of the above
 Fingersatz-Objekte werden also durch den @code{Fingering_engraver}
 erstellt, welcher folgende Musikereignistypen akzeptiert:
 @code{fingering-event}.  Ein Musikereignis vom Typ
@@ -1082,6 +1117,7 @@ arbeitet sich voran zur Eingabe.  Man könnte auch mit einem
 Eingabe-Ereignis starten und dann die Links zurückverfolgen,
 bis man zum Ausgabe-Objekt gelangt.
 
+
 Die Referenz der Interna kann auch wie ein normales Dokument
 durchsucht werden.  Sie enthält Kapitel über
 @ifhtml
@@ -1191,7 +1227,7 @@ eigentlich handelt es sich nicht um sehr viel.  Die Initialisierungsdatei
      (script-priority . 100)
      (stencil . ,ly:text-interface::print)
      (direction . ,ly:script-interface::calc-direction)
-     (font-encoding . fetaNumber)
+     (font-encoding . fetaText)
      (font-size . -5)          ; don't overlap when next to heads.
      (meta . ((class . Item)
      (interfaces . (finger-interface
@@ -1215,7 +1251,7 @@ Referenz der Interna ist direkt aus diesen Anweisungen generiert.
 
 Die Position der @b{2} aus dem Beispiel unten soll also geändert werden:
 
-@lilypond[quote,fragment,relative=2,verbatim]
+@lilypond[quote,relative=2,verbatim]
 c-2
 \stemUp
 f
@@ -1259,7 +1295,7 @@ fügt drei Notenlinienzwischenräume zwischen die Zahl und den Notenkopf:
 Wenn dieser Befehl in den Quelltext eingefügt wird, bevor der
 Fingersatz notiert ist, erhält man folgendes:
 
-@lilypond[quote,relative=2,fragment,verbatim]
+@lilypond[quote,relative=2,verbatim]
 \once \override Voice.Fingering #'padding = #3
 c-2
 \stemUp
@@ -1289,42 +1325,45 @@ folgen bestimmten Regeln:
 
 @item
     Scheme-Funktionen: ly:plus-scheme-stil
-    
+
 @item
     Musikalische Ereignisse, Musikklassen und Musikeigenschaften: wie-scheme-funktionen
 
 @item
     Grob-Schnittstellen: scheme-stil
-    
+
 @item
     backend-Eigenschaften: scheme-stil (aber X und Y)
-    
+
 @item
     Kontexte: Großbuchstabe, oder GroßbuchstabeZwischenWörtern (CamelCase)
 
 @item
     Kontext-Eigenschaften: kleinbuchstabeMitFolgendenGroßbuchstaben
-    
+
 @item
     Engraver:  Großbuchstabe_gefolgt_von_kleinbuchstaben_mit_unterstrichen
 @end itemize
 
+@c todos left out
+
 
 @node Eigenschaften verändern
 @section Eigenschaften verändern
 @translationof Modifying properties
 
 @menu
-* Überblick über verändernde Eigenschaften::
+* Grundlagen zum Verändern von Eigenschaften::
 * Der set-Befehl::
 * Der override-Befehl::
 * Der tweak-Befehl::
 * set versus override::
+* Alisten verändern::
 @end menu
 
 
-@node Überblick über verändernde Eigenschaften
-@subsection Überblick über verändernde Eigenschaften
+@node Grundlagen zum Verändern von Eigenschaften
+@subsection Grundlagen zum Verändern von Eigenschaften
 @translationof Overview of modifying properties
 
 Jeder Kontext ist verantwortlich für die Erstellung bestimmter
@@ -1332,6 +1371,18 @@ graphischer Objekte.  Die Einstellungen für diese Objekte werden
 auch in dem Kontext gespeichert.  Wenn man diese Einstellungen
 verändert, kann die Erscheinung der Objekte geändert werden.
 
+Es gibt zwei unterschiedliche Eigenschaftenarten, die in Kontexten
+gespeichert werden: Kontexteigenschaften und Grob-Eigenschaften.
+Kontexteigenschaften sind Eigenschaften, die sich auf den gesamten Kontext
+beziehen und seine Darstellung beinflussen.  Grob-Eigenschaften dagegen
+wirken sich nur auf bestimmte graphische Objekte aus, die in einem
+Kontext dargestellt werden.
+
+Die @code{\set}- und @code{\unset}-Befehle werden benutzt, um die Werte
+von Kontexteigenschaften zu ändern.  Die Befehle @code{\override} und
+@code{\revert} hingegen verändern die Werte von Grob-Eigenschaften.
+
+@ignore
 Die Syntax hierzu lautet:
 
 @example
@@ -1340,7 +1391,7 @@ Die Syntax hierzu lautet:
 
 
 @var{Bezeichnung} ist die Bezeichnung eines graphischen Objekts,
-wie @code{Stem} (Hals) oder @code{NoteHead} (Notenkopf), und 
+wie @code{Stem} (Hals) oder @code{NoteHead} (Notenkopf), und
 @var{Eigenschaft} ist eine interne Variable des Formatierungssystems
 (eine @qq{Grob-Eigenschaft} oder @qq{Layout-Eigenschaft}).  Diese
 Eigenschaft ist ein Symbol, muss also mit einem Anführungsstrich
@@ -1362,7 +1413,7 @@ Befehl den Kontext @code{Staff} angibt, wirkt er sich nur auf
 das gerade aktuelle Notensystem aus.  Andere Systeme behalten
 ihr normales Aussehen.  Hier ein Beispiel mit diesem Befehl:
 
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
 c4
 \override Staff.Stem #'thickness = #4.0
 c4
@@ -1380,7 +1431,7 @@ Kontext ausgelassen werden, wobei dann immer implizit der
 @code{Voice}-Kontext angenommen wird.  Mit einem zusätzlichen
 @code{\once} wirkt sich die Änderung nur einmal aus:
 
-@lilypond[quote,fragment,verbatim,relative=2]
+@lilypond[quote,verbatim,relative=2]
 c4
 \once \override Stem #'thickness = #4.0
 c4
@@ -1393,10 +1444,10 @@ ein Bogen verändert werden soll, muss der @code{\override}-Befehl
 schon geschrieben werden, bevor das Objekt begonnen wird.  In dem
 folgenden Beispiel
 
-@lilypond[quote,fragment,verbatim,relative=2]
+@lilypond[quote,verbatim,relative=2]
 \override Slur #'thickness = #3.0
 c8[( c
-\override Beam #'thickness = #0.6
+\override Beam #'beam-thickness = #0.6
 c8 c])
 @end lilypond
 
@@ -1432,7 +1483,7 @@ wie beispielsweise
 @example
 \override Stem #'(details beamed-lengths) = #'(4 4 3)
 @end example
-
+@end ignore
 
 @seealso
 Referenz der Interna:
@@ -1453,11 +1504,12 @@ oder einen Absturz des Programms hervorrufen.
 
 
 @node Der set-Befehl
-@subsection Der @code{\set}-Befehl
+@subsection Der @code{@bs{}set}-Befehl
 @translationof The set command
 
 @cindex Eigenschaften
 @cindex Verändern von Eigenschaften
+
 @funindex \set
 @funindex set
 
@@ -1470,36 +1522,50 @@ wird der @code{\set}-Befehl eingesetzt:
 \set @var{Kontext}.@var{Eigenschaft} = #@var{Wert}
 @end example
 
-Das kann beispielsweise so aussehen:
+@var{Wert} ist ein Scheme-Objekt, weshalb ihm @code{#} vorangestellt
+werden muss.
+
+Kontexteigenschaften werden üblicherweise mit @code{kleinGroßbuchstabe}
+benannt.  Sie kontrollieren vor allem die Übersetzung von Musik in
+Notation, wie etwa @code{localKeySignature}, welche bestimmt, wann
+ein Taktstrich gesetzt werden muss.  Kontexteigenschaften können
+ihren Wert mit der Zeit ändern, während eine Notationsdatei interpretiert
+wird.  Ein gutes Beispiel dafür ist @code{measurePosition}, was die
+Position der Noten im Takt angibt.  Kontexteigenschaften werden mit dem
+@code{\set}-Befehl verändert.
+
+Mehrtaktpausen etwa können in einen Takt zusammengefasst werden, wenn die
+Kontexteigenschaft @code{skipBars} (Takte überspringen) auf @code{#t}
+(wahr) gesetzt wird:
 
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
 R1*2
 \set Score.skipBars = ##t
 R1*2
 @end lilypond
 
-Mit diesem Befehl werden Takte übersprungen, die keine Noten
-haben.  Als Resultat werden Ganztaktpausentakte komprimiert.
-Der Wert, der der Eigenschaft zugewiesen wird, ist ein
-Scheme-Objekt.  In diesem Fall ist es @code{#t}, der
-Boolesche Wert für @qq{wahr}.
-
 Wenn das @var{Kontext}-Argument ausgelassen wird, bezieht sich
 der Befehl auf den gerade aktiven unterstmöglichen Kontext,
 üblicherweise @code{ChordNames}, @code{Voice} oder
-@code{Lyrics}.  In diesem Beispiel:
+@code{Lyrics}.
 
-@lilypond[quote,verbatim,relative=2,fragment]
-c8 c c c
-\set autoBeaming = ##f
-c8 c c c
+@lilypond[quote,verbatim,relative=2]
+\set Score.autoBeaming = ##f
+<<
+  {
+    e8 e e e
+    \set autoBeaming = ##t
+    e8 e e e
+  } \\ {
+    c8 c c c c8 c c c
+  }
+>>
 @end lilypond
 
-@noindent
-wurde das @var{Kontext}-Argument für den @code{\set}-Befehl
-ausgelassen, sodass automatische Bebalkung für die aktuelle
-Stimme (@code{Voice}-Kontext) abgeschaltet wird.  Dabei
-gilt zu beachten, dass der unterste Kontext nicht immer die
+Die Änderung wird zur Laufzeit während der Musik interpretiert, sodass
+diese Einstellung sich nur auf die zweite Gruppe von Achteln auswirkt.
+
+Dabei gilt zu beachten, dass der unterste Kontext nicht immer die
 Eigenschaft enthält, die verändert werden soll.  Wenn man
 beispielsweise @code{skipBars} aus dem oberen Beispiel
 ohne Angabe des Kontextes zu verändern sucht, hat der Befehl
@@ -1507,7 +1573,7 @@ keine Auswirkung, weil er sich auf den @code{Voice}-Kontext
 bezieht, die Eigenschaft sich aber im @code{Score}-Kontext
 befindet:
 
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
 R1*2
 \set skipBars = ##t
 R1*2
@@ -1516,9 +1582,7 @@ R1*2
 Kontexte sind hierarchisch angeordnet.  Wenn ein übergeordneter
 Kontext angegeben wird, etwa @code{Staff}, dann beziehen sich
 die Änderungen auf alle Stimmen (@code{Voice}), die in diesem
-Kontext enthalten sind.  Da der Befehl zu dem Zeitpunkt gültig
-wird, an dem er im Quelltext auftritt, wird im Bebalkungsbeispiel
-oben die Einstellung erst für die zweite Achtelgruppe wirksam.
+Kontext enthalten sind.
 
 @funindex \unset
 @funindex unset
@@ -1535,38 +1599,30 @@ entfernt werden.  Dieser Befehl macht nur Einstellungen im richtigen
 Kontext rückgängig.  Wenn also im @code{Staff}-Kontext die
 Bebalkung ausgeschaltet wird:
 
-@example
-\set Staff.autoBeaming = ##f
-@end example
-
-@noindent
-bezieht sich das auch auf die in dem @code{Staff} enthaltenen Stimmen.
-Der Befehl
-
-@example
-\unset Voice.autoBeaming
-@end example
-
-@noindent
-ist jedoch ungültig und bewirkt nichts.  Damit die Einstellung richtig
-rückgängig gemacht werden kann, muss der Befehl auf der gleichen
-Kontextebene ausgeführt werden wie der ursprüngliche @code{\set}-Befehl.
-Hier braucht man also den Befehl:
-
-@example
-\unset Staff.autoBeaming
-@end example
+@lilypond[quote,verbatim,relative=2]
+\set Score.autoBeaming = ##t
+<<
+  {
+    \unset autoBeaming
+    e8 e e e
+    \unset Score.autoBeaming
+    e8 e e e
+  } \\ {
+    c8 c c c c8 c c c
+  }
+>>
+@end lilypond
 
-Genauso wie für @code{\set}, muss auch für @code{\unset} der unterste
-Kontext nicht angegeben werden, die zwei Befehle
+Wie für @code{\set} muss das @var{Kontext}-Argument für den untersten
+Kontext nicht mitangegeben werden.  Die zwei Versionen
 
 @example
 \set Voice.autoBeaming = ##t
 \set autoBeaming = ##t
 @end example
 
-@noindent
-bedeuten also das Gleiche.
+verhalten sich gleich, wenn die gegenwärtige Basis der
+@code{Voice}-Kontext ist.
 
 @funindex \once
 @funindex once
@@ -1574,20 +1630,15 @@ bedeuten also das Gleiche.
 Einstellungen, die nur einmal vorgenommen werden sollen, können
 mit @code{\once} notiert werden, etwa:
 
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
 c4
 \once \set fontSize = #4.7
 c4
 c4
 @end lilypond
 
-@noindent
-Damit wirkt sich die Änderung der Schriftgröße nur auf die zweite
-Note aus und wird automatisch wieder rückgängig gemacht.
-
 Eine vollständige Beschreibung aller vorhandenen Kontexteigenschaften
 findet sich in der Referenz der Interna, siehe
-
 @ifhtml
 @rinternals{Tunable context properties}.
 @end ifhtml
@@ -1595,41 +1646,144 @@ findet sich in der Referenz der Interna, siehe
 @qq{Translation @expansion{} Tunable context properties}.
 @end ifnothtml
 
+@seealso
+
+Internals Reference:
+
+@rinternals{Tunable context properties}.
+
 
 
 @node Der override-Befehl
-@subsection Der \override-Befehl
+@subsection Der @code{\\override}-Befehl
 @translationof The override command
 
-Befehle, die die Ausgabe grundlegend verändern, haben folgende
-Form:
+@cindex Grob-Eigenschaften
+@cindex Eigenschaften von Grob
+@cindex graphische Objekte, Eigenschaften
 
-@example
-\override Voice.Stem #'thickness = #3.0
-@end example
+@funindex \override
+@funindex override
 
-@noindent
-Um derartige Einstellungen vorzunehmen, müssen folgende Informationen
-bekannt sein:
+Es gibt eine besondere Art von Kontexteigenschaft: die Grob-Beschreibung.
+Grob-Beschreibungen werden mit @code{GroßGroßbuchstabe} benannt.  Sie
+enthalten @qq{Standardeinstellungen} für ein bestimmtes Grob als eine
+assoziative Liste.  Siehe @file{scm/@/define@/-grobs@/.scm} für die
+Einstellungen aller Grob-Beschreibungen.  Grob-Beschreibungen werden
+mit @code{\override} verändert.
 
-@itemize
-@item der Kontext: in diesem Fall @code{Voice}.
-@item das Layout-Objekt: in diesem Fall @code{Stem}.
-@item die Layout-Eigenschaft: in diesem Fall @code{thickness}.
-@item ein vernünftiger Wert: in diesem Fall @code{3.0}.
-@end itemize
+@code{\override} ist eigentlich eine Kurzform, der Befehl
 
-Einige veränderbare Optionen werden als Untereigenschaften (engl.
-subproperties) bezeichnet und befinden sich innerhalb der Eigenschaften.
-Um sie zu verändern, werden Befehl in der Form
+@example
+\override @var{Kontext}.@var{GrobBezeichnung} #'@var{Eigenschaft} = #@var{Wert}
+@end example
+
+ist äquivalent zu
 
 @example
-\override Stem #'(details beamed-lengths) = #'(4 4 3)
+\set @var{Kontext}.@var{GrobBezeichnung}  =
+  #(cons (cons '@var{Eigenschaft} @var{Wert})
+         <vorheriger Wert von @var{Kontext}.@var{GrobBezeichnung}>)
 @end example
 
-@noindent
-eingesetzt.
+Der Wert von @code{Kontext}.@code{GrobBezeichnung} (die assoz. Liste @qq{alist}) wird benutzt um die Eigenschaften von individuellen Grobs
+zu initialisieren.  Grobs haben Eigenschaften, die im Scheme-Stil mit
+@code{bindestrich-wörtern} benannt sind.  Diese Werte der Grob-Eigenschaften
+verändern sich während des Notensetzens:  LilyPonds Notensatz heißt im
+Grunde, die Eigenschaften mit Callback-Fuktionen auszurechnen.
+
+Beispielsweise kann die Dicke eines Notenhalses verändert werden, indem
+man die @code{thickness}-Eigenschaft des @code{Stem}-Objekts verändert:
+
+@lilypond[quote, verbatim, relative=2]
+c4 c
+\override Voice.Stem #'thickness = #3.0
+c4 c
+@end lilypond
+
+Wenn kein Kontext angegeben wird, wird der tiefste aktuelle Kontext
+benutzt:
+
+@lilypond[quote, verbatim, relative=2]
+{ \override Staff.Stem #'thickness = #3.0
+  <<
+    {
+      e4 e
+      \override Stem #'thickness = #0.5
+      e4 e
+    } \\ {
+      c4 c c c
+    }
+  >>
+}
+@end lilypond
+
+@cindex rückgängig machen von Kontextveränderungen
+@cindex Kontextveränderungen rückgängig machen
+@cindex override rückgängig machen
+@cindex \override rückgängig machen
+
+@funindex \revert
+@funindex revert
+
+Die Auswirkungen von @code{\override} können mit @code{\revert} wieder
+rückgängig gemacht werden:
+
+@lilypond[quote, verbatim, relative=2]
+c4
+\override Voice.Stem #'thickness = #3.0
+c4 c
+\revert Voice.Stem #'thickness
+c4
+@end lilypond
+
+Die Auswirkungen von @code{\override} und @code{\revert} wirken sich auf alle
+Grobs im entsprechenden Kontext aber der Stelle aus, an der sie gesetzt werden:
 
+@lilypond[quote, verbatim, relative=2]
+{
+  <<
+    {
+      e4
+      \override Staff.Stem #'thickness = #3.0
+      e4 e e
+    } \\ {
+      c4 c c
+      \revert Staff.Stem #'thickness
+      c4
+    }
+  >>
+}
+@end lilypond
+
+@cindex Veränderung von Kontexten nur einmal
+@cindex Einmal verändern von Kontexten
+@cindex Kontexte, einmal verändern
+@cindex \override, nur einmal
+
+@funindex \once
+@funindex once
+
+@code{\once} kann zusammen mit @code{\override} benutzt werden,
+um nur den aktuellen Zeitwert zu verändern:
+
+@lilypond[quote, verbatim, relative=2]
+{
+  <<
+    {
+      \override Stem #'thickness = #3.0
+      e4 e e e
+    } \\ {
+      c4
+      \once \override Stem #'thickness = #3.0
+      c4 c c
+    }
+  >>
+}
+@end lilypond
+
+
+@ignore
 @cindex Referenz der Interna
 @cindex Grafische Objekte, Finden
 @cindex Finden von graphischen Objekten
@@ -1647,10 +1801,17 @@ sie enthalten, ausgeschaltet werden, indem man sie als @qq{falsch}
 (@code{##f}) definiert.  Dadurch wird diese Eigenschaft von LilyPond
 ignoriert.  Das ist insbesondere nützlich, wenn man Grob-Eigenschaften
 ausschalten will, die Probleme verursachen.
+@end ignore
+
+
+@seealso
+
+Referenz der Interna:
+@rinternals{Backend}.
 
 
 @node Der tweak-Befehl
-@subsection Der @code{\tweak}-Befehl
+@subsection Der @code{\\tweak}-Befehl
 @translationof The tweak command
 
 @funindex \tweak
@@ -1658,6 +1819,20 @@ ausschalten will, die Probleme verursachen.
 
 @cindex Optimieren
 
+Wenn man Grob-Eigenschaften mit @code{\override} verändert, verändern sich
+alle fraglichen Objekte zu dem gegebenen musikalischen Moment.  Manchmal
+will man allerdings nur ein Grob verändern, anstatt allen Grobs des
+aktuellen Kontextes.  Das kann mit dem @code{\tweak}-Befehl erreicht
+werden, mit dem man Optimierungen vornehmen kann:
+
+@example
+\tweak #'@code{grob-eigenschaft} #@code{Wert}
+@end example
+
+Der @code{\tweak}-Befehl wirkt sich auf das Objekt aus, dass direkt auf
+@code{Wert} folgt.
+
+@ignore
 In einigen Fällen ist es möglich, mit einem abgekürzten Befehl
 graphische Objekte zu verändern.  Wenn Objekte direkt von einem
 Element des Quelltextes erstellt werden, kann der @code{\tweak}-Befehl
@@ -1715,6 +1890,10 @@ und das nicht:
 \tweak #'color #red c4
 @end lilypond
 
+@end ignore
+
+Eine Einleitung der Syntax und Benutzungen des @code{\tweak}-(Optimierungs)-Befehls findet sich in @rlearning{Optimierungsmethoden}.
+
 Wenn mehrere gleichartige Elemente zum gleichen musikalischen
 Moment auftreten, kann der @code{\override}-Befehl nicht
 benutzt werden, um nur einen von ihnen zu verändern: hier braucht
@@ -1731,28 +1910,51 @@ gleichen musikalischen Moment auftreten können sind unter Anderem:
 
 @c TODO add examples of these
 
-@noindent
-@code{\tweak} kann eingesetzt werden, um ein einzelnes Element aus der Gruppe
-zu verändern.
+@cindex Akkord, eine Noten verändern
 
-Der @code{\tweak}-Befehl kann @emph{nicht} eingesetzt werden, um
-Hälse, Balken oder Versetzungszeichen zu verändern, weil diese
-später durch den Notenkopf erstellt werden und nicht direkt durch
-den Quelltext.  @code{\tweak} kann auch nicht verwendet werden,
-um Schlüssel oder Taktarten zu verändern, denn sie werden von
-dem @code{\tweak}-Befehl während der Interpretation durch
-automatisches Einfügen von zusätzlichen Kontextelementen getrennt.
+In diesem Beispiel wird die Farbe eines Notenkopfes und die Art eines
+anderen Notenkopfes innerhalb eines Akkordes verändert:
 
-Der @code{\tweak}-Befehl @emph{kann} aber als Alternative des
-@code{\override}-Befehls eingesetzt werden, wenn die zu verändernden
-Elemente keine zusätzlichen impliziten Elemente während der
-Interpretation hinzufügen.  Legatobögen können also auch auf
-die folgende Weise verändert werden:
+@lilypond[relative=2,verbatim,quote]
+< c
+  \tweak #'color #red
+  d
+  g
+  \tweak #'duration-log #1
+  a
+> 4
+@end lilypond
+
+@code{\tweak} kann auch benutzt werden, um Bögen zu verändern:
 
 @lilypond[verbatim,quote,relative=1]
 c-\tweak #'thickness #5 ( d e f)
 @end lilypond
 
+Damit der @code{\tweak}-Befehl funktioniert, muss er direkt vor dem
+Objekt stehen, auf das er sich bezieht.  Manchmal kommt es vor, dass
+LilyPond während der Kompilierung der Datei zusätzliche Elemente
+einfügt, die dann zwischen der Optimierung und dem Objekt stehen.
+Noten, auch einzlene Noten, werden beispielsweise intern von LilyPond
+immer wie Akkorde behandelt, sodass auch ein @code{\tweak}-Befehl
+für eine einzelne Note innerhalb von Akkordzeichen notiert werden
+muss:
+
+@lilypond[relative=2,verbatim,quote]
+\tweak #'color #red c4
+<\tweak #'color #red c>4
+@end lilypond
+
+Der @code{\tweak}-Befehl kann @emph{nicht} eingesetzt werden, um
+Elemente zu verändern, die sich nicht direkt im Notentext befinden.
+Insbesondere Hälse, Balken oder Versetzungszeichen lassen sich nicht
+beeinflussen, weil diese später durch den Notenkopf erstellt werden
+und nicht direkt durch
+den Quelltext.  @code{\tweak} kann auch nicht verwendet werden,
+um Schlüssel oder Taktarten zu verändern, denn sie werden von
+dem @code{\tweak}-Befehl während der Interpretation durch
+automatisches Einfügen von zusätzlichen Kontextelementen getrennt.
+
 Mehrere @code{\tweak}-Befehle können vor ein Notationselement
 gesetzt werden und alle werden interpretiert:
 
@@ -1777,13 +1979,14 @@ verändert werden kann.
 Handbuch zum Lernen:
 @rlearning{Optimierungsmethoden}.
 
-Notationsreferenz:
-@ref{Musikalische Funktionen darstellen}.
+Erweitern:
+@rextend{Musikalische Funktionen darstellen}.
 
 @knownissues
 
 @cindex tweak-Befehl in einer Variable
 @cindex Variable, tweak-Befehl benutzen
+@cindex Optimierung innerhalb einer Variable
 
 Der @code{\tweak}-Befehl kann nicht innerhalb von einer Variable eingesetzt werden.
 
@@ -1802,9 +2005,12 @@ wird der erste Bogen verändert, der in der Eingabedatei auftritt.
 
 
 @node set versus override
-@subsection @code{\set} versus @code{\override}
+@subsection @code{\\set} versus @code{\\override}
 @translationof set versus override
 
+TODO: überflüssig?
+
+@ignore
 Es wurden zwei unterschiedliche Methoden vorgestellt, mit denen
 Eigenschaften verändert werden können: @code{\set} und
 @code{\override}.  Im Grunde genommen gibt es auch zwei
@@ -1857,6 +2063,123 @@ Callback-Funktionen eingesetzt werden.
 @code{\override ... #'font-size} für alle möglichen Objekte.
 Weil es sich hier um eine globale Änderung handelt, wurde
 die spezielle Form (die mit @code{\set} verändert wird) erstellt.
+@end ignore
+
+
+@node Alisten verändern
+@subsection Alisten verändern
+@translationof Modifying alists
+
+Einige vom Benutzer einstellbare Eigenschaften sind intern als
+@emph{alists} (Assoziative Listen) dargestellt, die Paare von
+Schlüsseln und Werten speichern.  Die Struktur einer Aliste ist:
+
+@example
+#((@var{Schlüssel1} . @var{Wert1})
+  (@var{Schlüssel2} . @var{Wert2})
+  (@var{Schlüssel3} . @var{Wert3})
+  @dots{})
+@end example
+
+Wenn eine Aliste eine Grob-Eigenschaft oder eine Variable der
+@code{\paper}-Umgebung ist, können ihre Schlüssel einzeln verändert
+werden, ohne andere Schlüssel zu beeinflussen.
+
+Um beispielsweise den Freiraum zwischen benachbarten Systemen
+in einer Systemgruppe zu verkleinern, kann man die
+@code{staff-staff-spacing}-Eigenschaft des
++@code{StaffGrouper}-Grobs benutzen.  Die Eigenschaft ist eine
+Aliste mit vier Schlüsseln: @code{padding} (Verschiebung),
+@code{space} (Platz), @code{minimum-distance} (minimaler Abstand)
+und @code{stretchability} (Dehnbarkeit).  Drei der vier Schlüssel
+haben zu Beginn Standardwerte, die in der Datei @file{scm/define-grobs.scm}
+(neben allen anderen Grob-Eigenschaften) definiert sind.
+
+@example
+(staff-staff-spacing . ((padding . 1)
+                          (space . 9)
+                          (minimum-distance . 7)))
+@end example
+
+Eine Möglichkeit, die Systemen dichter zueinander zu zwingen,
+ist es, der Wert des @code{space}-Schlüssels (@code{9}) zu
+verändern, sodass der den gleichen Wert wie
+@code{minimum-distance} (@code{7}) hat.  Um einen einzelnen
+Schlüssel zu verändern, wird ein geschachtelter Aufruf benutzt:
+
+@lilypond[quote,verbatim]
+% default space between staves
+\new PianoStaff <<
+  \new Staff { \clef treble c''1 }
+  \new Staff { \clef bass   c1   }
+>>
+
+% reduced space between staves
+\new PianoStaff \with {
+  \override StaffGrouper #'staff-staff-spacing #'space = #7
+} <<
+  \new Staff { \clef treble c''1 }
+  \new Staff { \clef bass   c1   }
+>>
+@end lilypond
+
+Wenn man diese Art des geschachtelten Aufrufs einsetzt, wird der
+spezifische Schlüssel (@code{space} im obigen Beispiel) verändert,
+ohne dass sich andere Wert für die gleiche Eigenschaft ändern würden.
+
+Nun sollen die Systeme so dicht wie möglich gesetzt werden, ohne das
+Überlappungen vorkommen.  Die einfachste Möglichkeit, das zu tun, wäre
+es, alle vier Wert auf 0 zu setzen.  In diesem Fall muss man nicht jeden
+Wert mit einem geschachtelten Aufruf definieren, sondern die Eigenschaft
+kann mit einem Aufruf als Aliste vollständig verändert werden:
+
+@lilypond[quote,verbatim]
+\new PianoStaff \with {
+  \override StaffGrouper #'staff-staff-spacing =
+    #'((padding . 0)
+       (space . 0)
+       (minimum-distance . 0)
+       (stretchability . 0))
+} <<
+  \new Staff { \clef treble c''1 }
+  \new Staff { \clef bass   c1   }
+>>
+@end lilypond
+
+Dabei sollte beachtet werden, dass alle Schlüssel, die bei dieser
+Weise des Aufrufs nicht explizit aufgelistet sind, auf den Standardwert
+gesetzt werden, den sie hätten, wenn sie nicht definiert werden.
+Im Falle von @code{staff-staff-spacing} würden alle nicht genannten
+Schlüsselwerte auf 0 gesetzt (außer @code{stretchability}, welche immer
+den Wert von @code{space} hat, wenn sie nicht definiert ist).  Somit sind
+folgende Aufrufe äquivalent:
+
+@example
+\override StaffGrouper #'staff-staff-spacing =
+  #'((space . 7))
+
+\override StaffGrouper #'staff-staff-spacing =
+  #'((padding . 0)
+     (space . 7)
+     (minimum-distance . 0)
+     (stretchability . 7))
+@end example
+
+Eine möglicherweise ungewollte Konsequenz hiervon ist, dass alle
+nicht initialisierten Standardwerte, die etwa in einer Initialisierungsdatei
+zu Beginn einer LilyPond-Partitur geladen werden, nach dem Aufruf
+rückgängig gemacht werden.  Im obigen Beispiel werden die
+initialisierten Standardwerte für @code{padding} und @code{minimum-distance}
+(definiert in @file{scm/define-grobs.scm}) auf den Standard zurückgesetzt, den sie uninitialisiert hätten (0 in beiden Fällen).  Wenn eine Eigenschaft oder
+Variable in Form einer Aliste (jeder Größe) definiert wird, werden
+immer alle Schlüsselwerte auf den uninitialisierten Zustand zurückgesetzt.
+Es ist also sicherer, geschachtelte Aufrufe zu benutzen, wenn man nicht
+bewusst alle Werte zurücksetzen will.
+
+@warning{Geschachtelte Aufrufe funktionieren nicht mit
+Kontexteigenschaften (wie etwa @code{beamExceptions}, @code{keySignature},
+@code{timeSignatureSettings}, usw.)  Diese Eigenschaften können
+nur verändert werden, indem man sie vollständig als Alisten umdefiniert.}
 
 
 @node Nützliche Konzepte und Eigenschaften
@@ -1871,7 +2194,7 @@ die spezielle Form (die mit @code{\set} verändert wird) erstellt.
 * Eigenschaften des Staff-Symbols::
 * Strecker::
 * Sichtbarkeit von Objekten::
-* Zeilenstile::
+* Linienstile::
 * Drehen von Objekten::
 @end menu
 
@@ -1941,7 +2264,7 @@ den @code{\fret-diagram}-Befehl einsetzt (siehe
 
 Man erreicht ihn mit dem Befehl @code{\lyricmode}.  Die Eingabe
 wird entsprechend der Syntax für Silben eines Gesangstextes
-interpretiert, wobei optional Dauern und verknüpfte 
+interpretiert, wobei optional Dauern und verknüpfte
 Gesangstextveränderer möglich  sind, siehe @ref{Notation von Gesang}.
 
 Der Gesangstextmodus wird auch durch den Befehl @code{\addlyrics}
@@ -1953,7 +2276,7 @@ nachfolgenden Gesangstext mit der vorhergehenden Musik verknüpft.
 
 Man erreicht ihn mit dem Befehl @code{\markup}.  Die Eingabe wird
 entsprechend der Syntax für Textbeschriftung interpretiert, siehe
-@ref{Text markup commands}.
+@ref{Textbeschriftungsbefehle}.
 
 @c silly work-around for texinfo broken-ness
 @c (@strong{Note...} causes a spurious cross-reference in Info)
@@ -2065,6 +2388,7 @@ bedeutet @code{-1} oder @code{LEFT} @qq{auf der linken Seite}
 und @code{1} oder @code{RIGHT} @qq{auf der rechten Seite}.  @code{0}
 oder @code{CENTER} bedeutet @qq{benutze Standardausrichtung}.
 
+@c ignore left out
 Diese Ausrichtungsanzeigen wirken sich auf alle Noten aus, bis sie
 rückgängig gemacht werden:
 
@@ -2399,7 +2723,7 @@ Im Fall eines Zeilenumbruchs werden die Werte der Endpunkte
 in den Unterlisten @code{left-broken} bzw. @code{right-broken}
 von @code{bound-details} abgelegt.  Zum Beispiel:
 
-@lilypond[relative=2,ragged-right,verbatim,fragment]
+@lilypond[relative=2,ragged-right,verbatim,quote]
 \override Glissando #'breakable = ##t
 \override Glissando #'(bound-details right-broken Y) = #-3
 c1 \glissando \break
@@ -2444,7 +2768,7 @@ Das ist eine Textbeschriftung, die ausgewertet wird und die
 um @i{cresc.}, @i{tr} oder andere Texte an horizontale
 Strecker zu setzen.
 
-@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
+@lilypond[quote,ragged-right,relative=2,verbatim]
 \override TextSpanner #'(bound-details left text)
    = \markup { \small \bold Slower }
 c2\startTextSpan b c a\stopTextSpan
@@ -2460,7 +2784,7 @@ definiert) zentriert, ausgegeben.  Wenn entweder
 gesetzt werden, wird das Symbol am Rand vertikal entsprechend
 des Endpunktes der Linie verschoben:
 
-@lilypond[relative=1,fragment,verbatim]
+@lilypond[relative=1,quote,verbatim]
 \override TextSpanner
   #'(bound-details left stencil-align-dir-y) = #-2
 \override TextSpanner
@@ -2499,7 +2823,7 @@ einer Note beendet, oder am nächsten Taktstrich, wenn
 @code{to-barline} auf wahr gesetzt ist und eine Taktlinie
 vor der nächsten Note erscheint.
 
-@lilypond[verbatim,quote,ragged-right,relative=2,fragment]
+@lilypond[verbatim,quote,ragged-right,relative=2]
 \endSpanners
 c2 \startTextSpan c2 c2
 \endSpanners
@@ -2554,7 +2878,7 @@ Abschnitt behandelt.
 
 
 @node Einen stencil entfernen
-@unnumberedsubsubsec Einen stencil entfernen
+@unnumberedsubsubsec Einen @code{stencil} entfernen
 @translationof Removing the stencil
 
 @cindex stencil, entfernen
@@ -2656,10 +2980,11 @@ a1
 
 
 @node break-visibility (unsichtbar machen) benutzen
-@unnumberedsubsubsec break-visibility (unsichtbar machen) benutzen
+@unnumberedsubsubsec @code{break-visibility} (unsichtbar machen) benutzen
 @translationof Using break-visibility
 
 @funindex break-visibility
+
 @cindex break-visibility
 
 Die meisten Layout-Objekte werden nur einmal gesetzt, aber
@@ -2760,15 +3085,27 @@ Layout-Objekt, und einige Kombinationen können sogar
 Fehler hervorrufen.  Es gelten die folgenden Einschränkungen:
 
 @itemize @bullet
-@item Taktstriche können nicht zu Beginn einer Zeile gesetzt werden.
-@item Eine Taktzahl kann nicht zu Beginn der ersten Zeile gesetzt
+@item
+Taktstriche können nicht zu Beginn einer Zeile gesetzt werden.
+
+@item
+Eine Taktzahl kann nicht zu Beginn der ersten Zeile gesetzt
 werden, außer wenn er nicht 1 ist.
-@item Schlüssel -- siehe unten.
-@item Doppel-Prozent-Wiederholungen werden entweder alle ausgegeben
+
+@item
+Schlüssel -- siehe unten.
+
+@item
+Doppel-Prozent-Wiederholungen werden entweder alle ausgegeben
 oder alle unterdrückt.  Mit @code{begin-of-line-invisible} werden
 sie ausgegeben, mit @code{all-invisible} unterdrückt.
-@item Tonart -- siehe unten.
-@item Oktavierungs-Acht -- siehe unten.
+
+@item
+Tonart -- siehe unten.
+
+@item
+Oktavierungs-Acht -- siehe unten.
+
 @end itemize
 
 
@@ -2894,8 +3231,8 @@ Handbuch zum Lernen:
 @rlearning{Sichtbarkeit und Farbe von Objekten}
 
 
-@node Zeilenstile
-@subsection Zeilenstile
+@node Linienstile
+@subsection Linienstile
 @translationof Line styles
 
 Einige Aufführungsanweisungen (z. B. @i{rallentando} und
@@ -2915,7 +3252,7 @@ im gewünschten Linienstil.
 Hier einige Beispiele, welche Linienstile möglich sind
 und wie sie verändert werden können:
 
-@lilypond[relative=2,ragged-right,verbatim,fragment]
+@lilypond[relative=2,ragged-right,verbatim,quote]
 d2 \glissando d'2
 \once \override Glissando #'style = #'dashed-line
 d,2 \glissando d'2
@@ -2931,8 +3268,8 @@ Die Position der Endpunkte des Streckers werden in
 Realzeit für jedes graphische Objekt errechnet, aber
 es ist möglich, sie manuell vorzugeben:
 
-@c FIXME Complete
-@lilypond[relative=2,ragged-right,verbatim,fragment]
+@c TODO Complete
+@lilypond[relative=2,ragged-right,verbatim,quote]
 e2 \glissando f
 \once \override Glissando #'(bound-details right Y) = #-2
 e2 \glissando f
@@ -3079,19 +3416,20 @@ unten mit negativen Zahlen notiert werden.
 
 Die Position eines Objektes auf dem Notensystem wird mit Werten
 von @code{X-offset} und @code{Y-offset} angegeben.  Der Wert von
-@code{X-offset} gibt die Verschiebung von der x-Koordinate des
+@code{X-offset} gibt die Verschiebung von der X-Koordinate des
 Referenzpunkts des Elternobjektes an, der Wert von @code{Y-offset}
 die Verschiebung ausgehend von der Mittellinie des Notensystemes.
 Die Werte von @code{X-offset} und @code{Y-offset} können direkt
 bestimmt werden oder durch Prozeduren errechnet werden, sodass
-eine Ausrichtung mit dem Elternobjekt auf verschiedene Weise
-erreicht werden kann.
+eine Ausrichtung mit dem Elternobjekt erreicht werden kann.
 
 @warning{Viele Objekte brauchen besondere Überlegungen zu ihrer
 Position, weshalb in manchen Fällen manuell gesetzte Werte von
 @code{X-offset} oder @code{Y-offset} ignoriert oder verändert
 werden können, obwohl das Objekt das
-@code{self-alignment-interface} unterstützt.}
+@code{self-alignment-interface} unterstützt.  Wenn man @code{X-offset}
+oder @code{Y-offset} auf einen festen Wert setzt, wird die entsprechende
+@code{self-alignment}-Eigenschaft ignoriert.}
 
 Ein Versetzungszeichen beispielsweise kann vertikal durch Veränderung
 von @code{Y-offset} verschoben werden, aber Änderungen von
@@ -3102,17 +3440,25 @@ Schlüsseln, Taktarten und Tonartvorzeichen) ausgerichtet werden.
 In @code{break-aligned-interface} finden sich besondere Eigenschaften,
 mit denen Übungszeichen an derartigen Objekten ausgerichtet werden können.
 
+@seealso
+
+Notationshandbuch:
+@ref{Benutzung des break-alignable-interface}.
+
+Erweitern:
+@rextend{Callback functions}.
+
 
 @menu
-* @code{X-offset} und @code{Y-offset} direkt setzen::
-* Das @code{side-position-interface} benutzen::
-* Das @code{self-alignment-interface} benutzen::
-* Benutzung des @code{break-aligned-interface}::
+* X-offset und Y-offset direkt setzen::
+* Das side-position-interface benutzen::
+* Das self-alignment-interface benutzen::
+* Benutzung des break-alignable-interface::
 @end menu
 
-@node @code{X-offset} und @code{Y-offset} direkt setzen
+@node X-offset und Y-offset direkt setzen
 @unnumberedsubsubsec @code{X-offset} und @code{Y-offset} direkt setzen
-@translationof Setting @code{X-offset} and @code{Y-offset} directly
+@translationof Setting X-offset and Y-offset directly
 
 Numerische Werte können den @code{X-offset}- und @code{Y-offset}-Eigenschaften
 vieler Objekte zugewiesen werden.  Das folgende Beispiel zeigt
@@ -3134,9 +3480,9 @@ a
 
 
 
-@node Das @code{side-position-interface} benutzen
+@node Das side-position-interface benutzen
 @unnumberedsubsubsec Das @code{side-position-interface} benutzen
-@translationof Using the @code{side-position-interface}
+@translationof Using the side-position-interface
 
 Ein Objekt, das die @code{side-position-interface}-Schnittstelle
 unterstützt, kann neben sein Elternobjekt gesetzt werden,
@@ -3180,9 +3526,9 @@ angeordnet wird, entsprechend dem Wert der @code{direction}-Eigenschaft.
 
 
 
-@node Das @code{self-alignment-interface} benutzen
+@node Das self-alignment-interface benutzen
 @unnumberedsubsubsec Das @code{self-alignment-interface} benutzen
-@translationof Using the @code{self-alignment-interface}
+@translationof Using the self-alignment-interface
 
 @emph{Selbstausrichtende Objekte horizontal}
 
@@ -3262,9 +3608,9 @@ a
 
 
 
-@node Benutzung des @code{break-aligned-interface}
-@unnumberedsubsubsec Benutzung des @code{break-aligned-interface}
-@translationof Using the @code{break-alignable-interface}
+@node Benutzung des break-alignable-interface
+@unnumberedsubsubsec Benutzung des @code{break-alignable-interface}
+@translationof Using the break-alignable-interface
 
 @cindex Ausrichtung an Objekten
 
@@ -3280,20 +3626,27 @@ Standardmäßig werden Übungszeichen und Taktzahlen horizontal
 über dem Objekt zentriert:
 
 @lilypond[verbatim,quote,relative=1]
-e1
-% the RehearsalMark will be centered above the Clef
+% The RehearsalMark will be centered above the Clef
 \override Score.RehearsalMark #'break-align-symbols = #'(clef)
 \key a \major
 \clef treble
 \mark "↓"
-e
-% the RehearsalMark will be centered above the TimeSignature
+e1
+% The RehearsalMark will be centered above the TimeSignature
 \override Score.RehearsalMark #'break-align-symbols = #'(time-signature)
 \key a \major
 \clef treble
 \time 3/4
 \mark "↓"
 e2.
+% The rehearsal mark will be centered above the Breath Mark
+\override Score.RehearsalMark #'break-align-symbols = #'(breathing-sign)
+\key a \major
+\clef treble
+\time 4/4
+e1
+\breathe
+\mark "↓"
 @end lilypond
 
 Eine Liste von möglichen Objekten zur Ausrichtung kann definiert
@@ -3307,20 +3660,28 @@ Wenn der Taktstrich unsichtbar ist, wird das Objekt an der Stelle
 ausgerichtet, an der sich der Taktstrich befinden würde.
 
 @lilypond[verbatim,quote,relative=1]
-e1
-% the RehearsalMark will be centered above the Key Signature
+% The RehearsalMark will be centered above the Key Signature
 \override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef)
 \key a \major
 \clef treble
 \mark "↓"
-e
-% the RehearsalMark will be centered above the Clef
+e1
+% The RehearsalMark will be centered above the Clef
 \set Staff.explicitKeySignatureVisibility = #all-invisible
 \override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef)
-\key a \minor
+\key a \major
 \clef bass
 \mark "↓"
-e,
+gis,,1
+% The rehearsal mark will be centered above the Bar Line
+\set Staff.explicitKeySignatureVisibility = #all-invisible
+\set Staff.explicitClefVisibility = #all-invisible
+\override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef)
+\key a \major
+\clef treble
+\mark "↓"
+e''1
+
 @end lilypond
 
 Die Ausrichtung des Übungszeichen relativ zum Notationsobjekt kann
@@ -3340,12 +3701,12 @@ e1
 \once \override Score.KeySignature #'break-align-anchor-alignment = #LEFT
 \mark "↓"
 \key a \major
-e
+e1
 % The RehearsalMark will be aligned with the right edge of the KeySignature
 \once \override Score.KeySignature #'break-align-anchor-alignment = #RIGHT
 \key a \major
 \mark "↓"
-e
+e1
 @end lilypond
 
 Das Übungszeichen kann auch nach rechts oder links um einen beliebigen Wert
@@ -3358,13 +3719,13 @@ verschoben werden.  Die Einheiten sind in Notenlinienzwischenräumen:
 \once \override Score.KeySignature #'break-align-anchor = #3.5
 \key a \major
 \mark "↓"
-e
+e1
 % The RehearsalMark will be aligned with the left edge of the KeySignature
 % and then shifted left by 2 staff-spaces
 \once \override Score.KeySignature #'break-align-anchor = #-2
 \key a \major
 \mark "↓"
-e
+e1
 @end lilypond
 
 
@@ -3468,7 +3829,6 @@ dritter Ordnung gezeichnet.  Wenn die Form eines automatischen
 Bogens nicht optimal ist, kann sie manuell verändert werdne,
 indem man die vier erforderlichen Kontrollpunkte angibt.
 
-
 Bézierkurven dritter Ordnung (auch als quadratische Bézierkurven
 bezeichnet) werden durch vier Kontrollpunkte definiert.  Der
 erste und vierte Kontrollpunkt geben Beginn und Ende der Kurve
@@ -3541,6 +3901,172 @@ auftritt, nicht einmal mit dem @code{\tweak}-Befehl.
 
 
 
+@node Musikfunktionen benutzen
+@section Musikfunktionen benutzen
+@translationof Using music functions
+
+@c TODO -- add @seealso, etc. to these subsections
+
+Wenn Optimierungen von unterschiedlichen musikalischen Ausdrücken
+wiederverwendet werden sollen, bietet es sich oft an, den
+@qq{Optimierungsanteil} einer @emph{musikalischen Funktion} zu
+erstellen.  In diesem Abschnitt sollen nur @emph{Ersetzungen}
+erklärt werden, wo es darum geht, eine Variable mit einem Stück
+LilyPond-Code zu ersetzen.  Andere komplexere Funktionen werden
+beschrieben in @rextend{Musikalische Funktionen}.
+
+@menu
+* Syntax der Ersetzungsfunktion::
+* Beispiele der Ersetzungsfunktion::
+@end menu
+
+@node Syntax der Ersetzungsfunktion
+@subsection Syntax der Ersetzungsfunktion
+@translationof Substitution function syntax
+
+Es ist einfach eine Funktion zu erstellen, die eine Variable
+in LilyPond-Code umwandelt.  Die generelle Form dieser
+Funktionen ist:
+
+@example
+Funktion =
+#(define-music-function
+     (parser location @var{Arg1} @var{Arg2} @dots{})
+     (@var{Typ1?} @var{Typ2?} @dots{})
+   #@{
+     @var{@dots{}Noten@dots{}}
+   #@})
+@end example
+
+@noindent
+wobei
+
+@multitable @columnfractions .33 .66
+@item @code{@var{ArgN}}
+@tab @var{n}tes Argument
+
+@item @code{@var{TypN?}}
+@tab ein Scheme @emph{Typenprädikat}, für das @code{@var{ArgN}}
+den Wert @code{#t} ausgibt.
+
+@item @code{@var{@dots{}Noten@dots{}}}
+@tab normale LilyPond-Eingab, wobei @code{$} benutzt wird, um
+Argumente zu referenzieren (etwa @samp{$Arg1}).
+@end multitable
+
+
+Die @code{parser} und @code{location}-Argumente sind zwingend und
+werden in einigen fortgeschrittenen Situationen benutzt, wie sie
+im @qq{Erweitern}-Handbuch beschrieben werden (siehe
+@rextend{Musikalische Funktionen}).  In Ersetzungsfunktionen
+gehen Sie einfach sicher, dass sie die beiden Wörter auch mit
+aufnehmen.
+
+Die Liste der Typenprädikate ist auch notwendig.  Einige der
+häufigsten Typenprädikate, die in musikalischen Funktionen
+benutzt werden, sind:
+
+@example
+boolean?
+cheap-list?  @emph{(benutze anstelle von }@q{list?}@emph{ für schnelleres Kompilieren)}
+ly:music?
+markup?
+number?
+pair?
+string?
+symbol?
+@end example
+
+@noindent
+Eine Liste aller Typprädikate findet sich unter
+@ref{Vordefinierte Typprädikate}.  Eigene Typprädikate
+sind auch erlaubt.
+
+
+@seealso
 
+Notationsreferenz:
+@ref{Vordefinierte Typprädikate}.
+
+Erweitern:
+@rextend{Musikalische Funktionen}.
+
+Installierte Dateien:
+@file{lily/music-scheme.cc},
+@file{scm/c++.scm},
+@file{scm/lily.scm}.
+
+
+@node Beispiele der Ersetzungsfunktionen
+@subsection Beispiele der Ersetzungsfunktionen
+@translationof Substitution function examples
+
+Dieser Abschnitt zeigt einige Beispiele von Ersetzungsfunktionen.
+Sie sind nicht vollständig, sondern sollen einige der
+Möglichkeiten von einfachen Ersetzungsfunktionen aufzeigen.
+
+Im ersten Beispiel wird eine Funktione definiert, die
+das Verschieben von @code{TextScript} erleichtert:
+
+@lilypond[quote,verbatim,ragged-right]
+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
+}
+@end lilypond
+
+Neben Zahlen können auch musikalische Ausdrücke wie Noten
+als Argumente für musikalische Funktionen eingesetzt werden:
+
+@c TODO: use a better example (the music argument is redundant).
+
+@lilypond[quote,verbatim,ragged-right]
+custosNote =
+#(define-music-function
+     (parser location note)
+     (ly:music?)
+   #{
+     \once \override Voice.NoteHead #'stencil =
+       #ly:text-interface::print
+     \once \override Voice.NoteHead #'text =
+       \markup \musicglyph #"custodes.mensural.u0"
+     \once \override Voice.Stem #'stencil = ##f
+     $note
+   #})
+
+\relative c' { c4 d e f \custosNote g }
+@end lilypond
+
+Ersetzungsfunktionen mit mehrfachen Argumenten können definiert
+werden:
+
+@lilypond[quote,verbatim,ragged-right]
+tempoPadded =
+#(define-music-function
+     (parser location padding tempotext)
+     (number? string?)
+   #{
+     \once \override Score.MetronomeMark #'padding = $padding
+     \tempo \markup { \bold $tempotext }
+   #})
+
+\relative c'' {
+  \tempo \markup { "Low tempo" }
+  c4 d e f g1
+  \tempoPadded #4.0 #"High tempo"
+  g4 f e d c1
+}
+@end lilypond