]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/de/user/tweaks.itely
Rename files in ly/
[lilypond.git] / Documentation / de / user / tweaks.itely
index f899f4cbe3d835b8b4dbcb14db5e9de512aee53d..cdb3d34b8ceb843079cea6cc480c287cae78bc1e 100644 (file)
@@ -1,5 +1,5 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @c -*- coding: utf-8; mode: texinfo; -*-
-@c This file is part of lilypond.tely
+@c This file is part of lilypond-learning.tely
 @ignore
     Translation of GIT committish: 3121682025660b6c85fbf3f22bb9cd8396699ad1
 
 @ignore
     Translation of GIT committish: 3121682025660b6c85fbf3f22bb9cd8396699ad1
 
@@ -7,7 +7,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c \version "2.11.38"
+@c \version "2.11.61"
 
 @node Tweaking output
 @chapter Tweaking output
 
 @node Tweaking output
 @chapter Tweaking output
@@ -18,18 +18,1313 @@ Notenfragment kann geändert werden.
 
 
 @menu
 
 
 @menu
-* Moving objects::              
-* Fixing overlapping notation::  
+* Tweaking basics::             
+* The Internals Reference manual::  
+* Appearance of objects::       
+* Placement of objects::        
+* Collisions of objects::       
 * Common tweaks::               
 * Common tweaks::               
-* Default files::               
-* Fitting music onto fewer pages::  
-* Advanced tweaks with Scheme::  
-* Avoiding tweaks with slower processing::  
+* Further tweaking::            
+@end menu
+
+
+@node Tweaking basics
+@section Tweaking basics
+
+@menu
+* Introduction to tweaks::      
+* Objects and interfaces::      
+* Naming conventions of objects and properties::  
+* Tweaking methods::            
 @end menu
 
 @end menu
 
+@node Introduction to tweaks
+@subsection Introduction to tweaks
+
+@qq{Optimierung} (engl. tweaking) ist ein LilyPond-Begriff für die
+verschiedenen Methoden, die Aktionen zu beeinflussen, die während
+der Kompilation einer Notationsdatei vorgenommen werden sowie auf
+das Notenbild einzuwirken. Einige dieser Opitmierungen sind sehr 
+einfach, andere dagegen recht komplex. Aber insgesamt erlaubt das
+System an Optimierungen so gut wie alle möglichen Erscheindungsformen
+für die Notenausgabe.
+
+In diesem Abschnitt werden die grundlegenden Konzepte vorgestellt,
+um die Optimierung zu verstehen. Später soll eine Anzahl von fertigen
+Befehlen bereitgestellt werden, die einfach in die Quelldatei
+kopiert werden können um den selben Effekt wie im Beispiel
+zu erhalten. Gleichzeitig zeigen diese Beispiele, wie die Befehle
+konstruiert werden, so dass Sie in der Lage sein werden, eigene
+Befehle auf dieser Grundlage zu entwickeln.
+
+Bevor Sie mit diesem Kapitel beginnen, könnte Sie ein Blick in den
+Abschnitt @ref{Contexts and engravers} interessieren, dann
+Kontexte und Engraver sowie die Eigenschaften, die mit ihnen 
+verknüpft sind, sind die Voraussetzung, um die Funktionsweise
+von Optimierungen verstehen zu können.
+
+
+@node Objects and interfaces
+@subsection Objects and interfaces
+
+@cindex Objekte
+@cindex Grobs
+@cindex Spanners
+@cindex Interfaces
+@cindex Strecker
+@cindex Schnittstellen
+
+Optimierung bedeutet, die internen Operationen und Strukturen
+des LilyPond-Programmes zu verändern, darum sollen hier
+zunächst die wichtigesten Begriffe erklärt werden, die zur
+Beschreibung dieser Operationen und Strukturen benutzt werden.
+
+Der Begriff @qq{Objekt} ist ein allgemeiner Begriff, mit dem
+die Vielzahl an internen Strukturen bezeichnet wird, die LilyPond
+während der Bearbeitung des Quelltextes erstellt. Wenn etwa
+ein Befehl wie @code{\new Staff} auftritt, wird ein neues Objekt
+vom Typ @code{Staff} erstellt. Dieses Objekt @code{Staff} enthält
+dann alle Eigenschaften, die mit diesem speziellen Notensystem
+verknüpft sind, wie beispielsweise seine Bezeichnung, Tonart und
+spezifische Angaben über die Engraver, die innerhalb dieses Systems
+eingesetzt werden. Für alle anderen Kontexte gibt es genauso
+Objekte, die deren Eigenschaften beinhalten, beispielsweise für
+@code{Voice}-Objekte, @code{Score}-Objekte, @code{Lyrics}-Objekte,
+aber auch für Objekte, die Notationselemente wie die Taktlinien,
+Notenköpfe, Bögen und Dynamikbezeichnung enthalten. Jedes
+Objekt hat eine eigene Gruppe an Eigenschaftswerten.
+
+Bestimmte Objekttypen tragen besondere Bezeichnungen. Objekte, die
+Notationselemente der gesetzten Ausgabe repräsentieren, also
+Notenköpfe, Hälse, Bögen, Fingersatz, Schlüssel usw., werden
+@qq{Layout-Objekte}, oft auch @qq{Graphische Objekte} genannt.
+Daraus resultiert die künstliche Abkürzung @qq{Grob}.
+Diese sind auch Objekte im allgemeinen Sinn und haben genauso
+Eigenschaften, die mit ihnen verknüpft sind, wie etwa Größe, Position,
+Farbe usw.
+
+Einige Layout-Objekte sind etwas spezieller. Phrasierungsbögen,
+Crescendo-Klammern, Oktavierungszeichen und viele andere
+Grobs sind nicht an einer Stelle plaziert -- sie haben vielmehr
+einen Anfangspunkt, einen Endpunkt und eventuell noch andere
+Eigenschaften, die ihre Form bestimmen. Objekte mit solch
+einer erweiterten Gestalt werden als
+@qq{Strecker} (engl. Spanners)
+bezeichnet.
+
+Es bleibt uns noch übrig zu erklären, was @qq{Schnittstellen}
+(engl. interface) sind. Wenn auch viele Objekte sehr unterschiedlich
+sind, haben sie doch oft gemeinsame Eigenschaften, die auf 
+die gleiche Weise verarbeitet werden.  Alle Grobs beispielsweise
+haben eine Farbe, eine Größe, eine Position usw. und alle
+diese Eigenschaften werden von LilyPond auf die gleiche Weise
+verarbeitet, während der Quelltext in Notensatz umgesetzt wird.
+Um die internen Operationen zu vereinfachen, sind alle diese
+gemeinsamen Prozesse und Eigenschaften in einem Objekt
+mit der Bezeichnung @code{grob-interface} (Schnittstelle eines
+graphischen Objektes) zusammengefasst. Es gibt viele andere
+Gruppen gemeinsamer Eigenschaften, die jede eine Bezeichnung
+besitzen, welche auf @code{-interface} endet. Insgesamt 
+gibt es über 100 dieser Schnittstellen. Wir werden später sehen,
+was es damit auf sich hat.
+
+Dies waren die Hauptbegriffe, die in diesem Kapitel zur Anwendung
+kommen sollen.
+
+
+@node Naming conventions of objects and properties
+@subsection Naming conventions of objects and properties
+
+Es wurden schon früher einige Regeln zur Benennung von
+Objekten vorgestellt, siehe
+@ref{Contexts and engravers}. Hier eine Referenzliste der
+häufigsten Objekt- und Eigenschaftsbezeichnungen mit 
+den Regeln für ihre Bezeichnung und 
+illustrierenden echten Bezeichnungen. Es wurde @qq{A}
+für einen beliebigen Großbuchstaben und @qq{aaa} für eine
+beliebige Anzahl an Kleinbuchstaben eingesetzt. Andere 
+Zeichen werden explizit angegeben.
+
+@multitable @columnfractions .33 .33 .33
+@headitem Objekt-/Eigenschaftstyp           
+  @tab Naming convention
+  @tab Beispiele
+@item Kontexte
+  @tab Aaaa oder AaaaAaaaAaaa
+  @tab Staff, GrandStaff
+@item Layout-Objekte
+  @tab Aaaa oder AaaaAaaaAaaa
+  @tab Slur, NoteHead
+@item Engraver
+  @tab Aaaa_aaa_engraver
+  @tab Clef_engraver, Note_heads_engraver
+@item Schnittstellen
+  @tab aaa-aaa-interface
+  @tab grob-interface, break-aligned-interface 
+@item Kontext-Eigenschaften
+  @tab aaa oder aaaAaaaAaaa
+  @tab alignAboveContext, skipBars
+@item Layout-Objekt-Eigenschaften
+  @tab aaa oder aaa-aaa-aaa
+  @tab direction, beam-thickness
+@end multitable
+
+Es wird bald ersichtlich werden, dass die Eigenschaften von 
+unterschiedlichen Objekttypen mit unterschiedlichen Befehlen
+geändert werden. Deshalb ist es nützlich, aus der
+Schreibweise zu erkennen, um was
+für ein Objekt es sich handelt, um den entsprechenden
+Befehl einsetzen zu können.
+
+
+@node Tweaking methods
+@subsection Tweaking methods
+
+@strong{Der \override-Befehl}
+
+@cindex override-Befehl
+@funindex \override
+
+Wir haben uns schon mit den Befehlen @code{\set}
+und @code{\with} bekannt gemacht, mit welchen
+Eigenschaften von @strong{Kontexten} verändert
+und @strong{Engraver} entfernt oder hinzugefügt 
+werden können. Siehe dazu 
+@ref{Modifying context properties} und @ref{Adding
+and removing engravers}. Jetzt wollen wir uns weitere
+wichtige Befehle anschauen.
+
+Der Befehl, um die Eigenschaften von @strong{Layout-Objekten}
+zu ändern, ist @code{\override}. Weil dieser Befehl interne
+Eigenschaften tief in der Programmstruktur von LilyPond 
+verändern muss, ist seine Syntax nicht so einfach wie die der
+bisherigen Befehle. Man muss genau wissen, welche Eigenschaft
+welches Objektes in welchem Kontext geändert werder soll,
+und welches der neu zu setzende Wert dann ist. Schauen wir
+uns an, wie das vor sich geht.
+
+Die allgemeine Syntax dieses Befehles ist:
+
+@example
+\override @var{Kontext}.@var{LayoutObjekt} #'@var{layout-eigenschaft} = #@var{Wert}
+@end example
+
+@noindent
+Damit wir die Eigenschaft mit der Bezeichnung @var{layout-property}
+das Layout-Objektes mit der Bezeichnung@var{LayoutObject},
+welches ein Mitglied des @var{Kontext}-Kontextes ist, auf den
+Wert @var{value}.
+
+Der @var{Kontext} kann (und wird auch normalerweise) ausgelassen
+werden, wenn der benötigte Kontext eindeutig impliziert ist und einer
+der untersten Kontexte ist, also etwa @code{Voice}, @code{ChordNames}
+oder @code{Lyrics}. Auch in diesem Text wird der Kontext oft ausgelassen
+werden. Später soll gezeigt werden, in welchen Fällen er ausdrücklich
+definiert werden muss.
+
+Spätere Abschnitte behandeln umfassend Eigenschaften und ihre
+Werte, aber um ihre Funktion und ihr Format zu demonstrieren,
+werden wir hier nur einige einfache Eigenschaften und Werte einsetzen,
+die einfach zu verstehen sind.
+
+Für den Moment könne Sie die @code{#'}-Zeichen ignorieren, die vor jeder
+Layout-Eigenschaft, und die @code{#}-Zeichen, die vor jedem Wert
+stehen. Sie müssen immer in genau dieser Form geschrieben werden.
+Das ist der am häufigsten gebrauchte Befehl für die Optimierung,
+und der größte Teil dieses Abschnittes wird dazu benutzt, seine Benutzung
+zu erläutern. Hier ein einfaches Beispiel, um die Farbe des Notenkopfes
+zu ändern:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+c d
+\override NoteHead #'color = #red
+e f g
+\override NoteHead #'color = #green
+a b c
+@end lilypond
+
+@strong{Der \revert-Befehl}
+
+@cindex revert-Befehl
+@funindex \revert
+
+Wenn eine Eigenschaft einmal überschrieben wurde, wird ihr
+neuer Wert so lange bewahrt, bis er noch einmal überschrieben
+wird oder ein @code{\revert}-Befehl vorkommt. Der
+@code{\revert}-Befehl hat die folgende Syntax und setzt den
+Wert der Eigenschaft zurück auf den Standardwert, nicht
+jedoch auf den vorigen Wert, wenn mehrere 
+@code{\override}-Befehle benutzt wurden.
+
+@example
+\revert @var{Kontext}.@var{LayoutObjekt} #'@var{layout-eigenschaft}
+@end example
+
+Wiederum, genauso wie der @var{Kontext} bei dem @code{\override}-Befehl,
+wird @var{Kontext} oft nicht benötigt. Er wird in vielen der folgenden
+Beispiele ausgelassen. Im nächsten Beispiel wird die Farbe des Notenkopfes
+wieder auf den Standardwert für die letzten zwei Noten gesetzt.
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+c d
+\override NoteHead #'color = #red
+e f g
+\override NoteHead #'color = #green
+a
+\revert NoteHead #'color
+b c
+@end lilypond
+
+@strong{\once-Präfix}
+
+Sowohl der @code{\override}-Befehl als auch der @code{\set}-Befehl können mit
+dem Präfix @code{\once} (@emph{einmal}) versehen werden. Dadurch wird
+der folgende @code{\override}- oder @code{\set}-Befehl nur für den aktuellen
+Musik-Moment wirksam, bevor sich wieder der Standard einstellt. Am gleichen
+Beispiel demonstriert, kann damit die Farbe eines einzelnen Notenkopfes
+geändert werden:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+c d
+\once \override NoteHead #'color = #red
+e f g
+\once \override NoteHead #'color = #green
+a b c
+@end lilypond
+
+@strong{Der \overrideProperty-Befehl}
+
+@cindex overrideProperty-Befehl
+@funindex \overrideProperty
+
+Es gibt eine andere Form des @code{override}-Befehls,
+@code{\overrideProperty} (überschreibe Eigenschaft), 
+welcher ab und zu benötigt wird. Es wird hier nur der
+Vollständigkeit halber erwähnt, sein Einsatz wird demonstriert
+in @ruser{Difficult tweaks}.
+@c Maybe explain in a later iteration  -td
+
+@strong{Der \tweak-Befehl}
+
+@cindex tweak-Befehl
+@funindex \tweak
+
+Der letzte Optimierungsbefehl in LilyPond ist @code{\tweak}
+(engl. optimieren). Er wird eingesetzt um Eigenschaften
+von Objekten zu verändern, die zum selben Musik-Moment
+auftreten, wie etwa die Noten eines Akkordes. Ein
+@code{\override} würde alle Noten des Akkords beeinflussen,
+während mit @code{\tweak} nur das nächste Objekt der
+Eingabe geändert wird.
+
+Hier ein Beispiel. Angenommen, die Größe des mittleren 
+Notenkopfes (ein E) in einem C-Dur-Akkord soll geändert 
+werden. Schauen wir zuerst, was wir mit 
+@code{\once \override} erhalten:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+  <c e g>4
+  \once \override NoteHead #'font-size = #-3
+  <c e g>
+  <c e g>
+@end lilypond
+
+Wie man sehen kann, beeinflusst @code{override} @emph{alle} 
+Notenköpfe des Akkordes. Das liegt daran, dass alle die Noten
+eines Akkordes zum selben Musik-Moment auftreten und
+die Funktion von @code{\once} ist es, die Optimierung auf
+an allen Objekten auszuführen, die zum selben Musik-Moment
+auftreten wie der @code{\override}-Befehl.
+
+Der @code{\tweak}-Befehl funktioniert anders. Er bezieht sich
+auf das direkt folgende Element in der Eingabe-Datei. Es wirkt
+aber auch nur mit Objekten, die direkt von der Eingabe kreirt
+werden, insbesondere Notenköpfe und Artikulationszeichen.
+Objekte wie etwa Hälse oder Versetzungszeichen werden erst
+später erstellt und lassen sich nicht auf diese Weise ändern.
+Zusätzlich @emph{müssen} sich etwa Notenköpfe innerhalb
+eines Akkordes befinden, d. h. sie müssen von einfachen spitzen
+Klammern umschlossen sein. Um also eine einzelne Note
+mit @code{\tweak} zu verändern, muss der Befehl innerhalb
+der spitzen Klammern zusammen mit der Note eingegeben werden.
+
+Um also zu unserem Beispiel zurückzukommen, könnte man die
+mittlere Note eines Akkordes auf diese Weise ändern:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+  <c e g>4
+  <c \tweak #'font-size #-3 e g>4
+@end lilypond
+
+Beachten Sie, dass die Syntax des @code{\tweak}-Befehls sich
+von der des @code{\override}-Befehls unterscheidet. Weder
+Kontext noch Layout-Objekt konnen angegeben werden, denn 
+das würde zu einem Fehler führen. Beide Angaben sind 
+durch das folgende Element impliziert. Die verallgemeinerte
+Syntax des @code{\tweak}-Befehls ist also einfach
+
+@example
+\tweak #'@var{layout-eigenschaft} = #@var{Wert}
+@end example
+
+Ein @code{\tweak}-Befehl kann auch benutzt werden, um nur 
+eine von mehreren Artikulationen zu ändern, wie im nächsten
+Beispiel zu sehen ist.
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+a ^Black
+  -\tweak #'color #red ^Red
+  -\tweak #'color #green _Green
+@end lilypond
+
+@noindent
+Beachten Sie, dass dem @code{\tweak}-Befehl ein Artikulationsmodifikartor
+vorangestellt werden muss, ganz als ob er selbst ein Artikulationszeichen
+wäre.
+
+@cindex Triolen, geschachtelt
+@cindex N-tolen, geschachtelt
+@cindex Klammer, Triole
+@cindex Triolenklammer
+@cindex N-tolenklammer
+@cindex Komplizierte Rhythmen, Schachtelung von
+@funindex TupletBracket
+
+Der @code{\tweak}-Befehl muss auch benutzt werden, wenn das
+Aussehen einer vor mehreren geschachtelten Triolenklammern
+geändert werden soll, die zum selben Zeitpunkt beginnen.
+Im folgenden Beispiel beginnen die lange Klammer und die
+erste Triolenklammer zum selben Zeitpunkt, sodass ein
+@code{\override}-Befehl sich auf beide beziehen würde.
+In dem Beispiel wird @code{\tweak} benutzt, um zwischen
+ihnen zu unterscheiden. Der erste @code{\tweak}Befehl
+gibt an, dass die lange Klammer über den Noten gesetzt
+werden soll, und der zweite, dass die Zahl der rhythmischen
+Aufteilung für die erste der kurzen Klammern in rot
+gesetzt wird.
+
+@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
+\tweak #'direction #up
+\times 4/3 {
+  \tweak #'color #red
+  \times 2/3 { c8[ c8 c8] }
+  \times 2/3 { c8[ c8 c8] }
+  \times 2/3 { c8[ c8 c8] }
+}
+@end lilypond
+
+Wenn geschachtelte N-tolen nicht zum gleichen Zeitpunkt 
+beginnen, kann ihr Aussehen auf die übliche Art mit dem
+@code{\override}-Befehl geändert werden:
+
+@c NOTE Tuplet brackets collide if notes are high on staff
+@c See issue 509
+@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
+\times 2/3 { c8[ c c]}
+\once \override TupletNumber
+  #'text = #tuplet-number::calc-fraction-text
+\times 2/3 {
+  c[ c]
+  c[ c]
+  \once \override TupletNumber #'transparent = ##t
+  \times 2/3 { c8[ c c] }
+\times 2/3 { c8[ c c]}
+}
+@end lilypond
+
+@seealso
+
+Notationsreferenz:
+@ruser{The tweak command}.
+
+
+
+
+
+@node The Internals Reference manual
+@section The Internals Reference manual
+
+@menu
+* Properties of layout objects::  
+* Properties found in interfaces::  
+* Types of properties::         
+@end menu
+
+@node Properties of layout objects
+@subsection Properties of layout objects
+
+@cindex Eigenschaften von Layout-Objekten
+@cindex Eigenschaften von Grobs
+@cindex Grobs, Eigenschaften von
+@cindex Layout-Objekte, Eigenschaften von
+@cindex Property (Layout-Objekte, Grobs)
+
+Angenommen, in Ihrer Partitur tritt ein Legatobogen
+auf, der Ihrer Meinung nach zu dünn ausgefallen ist.
+Sie würden ihn gerne etwas schwerer gezeichnet 
+sehen. Wie gehen Sie vor? Von den Anmerkungen in
+früheren Abschnitten wissen Sie schon, dass LilyPond
+sehr flexibel ist und eine derartige Modifikation
+möglich sein sollte, und Sie erraten vielleicht,
+dass ein @code{\override}-Befehl angebracht ist.
+Aber gibt es eine Eigenschaft für die Dicke eines
+Legatobogens (engl. slur), und wenn es sie gibt,
+auf welche Weise lässt sie sich verändern? Hier 
+kommt die Referenz der Interna zur Geltung. Dort
+finden sich alle Informationen, um den beschriebenen
+und alle anderen @code{\override}-Befehle zu
+konstruieren.
+
+Bevor Sie jetzt in die Referenz der Interna wechseln, ist
+eine Warnung angebracht. Es handelt sich um ein
+@strong{Referenz}dokument, was heißt, dass es sehr
+wenig oder gar keine Erklärungen enthält: seine Aufgabe
+ist es, Information klar und genau darzustellen. Das
+bedeutet, dass es auf den ersten Blick entmutigend
+wirkt. Die Einführung und Erklärung in diesem Abschnitt
+wird Ihnen aber schnell ermöglichen, genau die Information
+aus der Referenz zu entnehmen, die Sie benötigen.
+@c For German users
+Beachten Sie, dass die Referenz der Interna nur auf Englisch
+existiert. Um die Eigenschaftsbezeichnung eines bestimmten
+Objektes zu finden, können Sie das Glossar (siehe
+@rglosnamed{Music Glossary,Musikglossar})
+ verwenden, in dem
+die englischen Begriffe in viele andere Sprachen übersetzt sind.
+
+@cindex Override-Beispiel
+@cindex Referenz der Interna, Benutzung
+@cindex IR (Referenz der Interna), Benutzung
+
+Das Vorgehen soll an einem konkreten Beispiel einer echten
+Komposition demonstriert werden. Hier das Beispiel:
+
+@lilypond[quote,verbatim,relative=2]
+{
+  \time 6/8
+  {
+    r4 b8 b[( g]) g |
+    g[( e]) e d[( f]) a |
+    a g
+  }
+  \addlyrics {
+    The man who feels love's sweet e -- mo -- tion
+  }
+}
+@end lilypond 
+
+Angenommen also, wir wollen die Legatobögen etwas
+dicker setzten. Ist das möglich? Die Legatobögen sind mit
+Sicherheit ein Layout-Objekt, die Frage muss also lauten:
+@qq{Gibt es eine Eigenschaft von Legatobögen, die die
+Dicke bestimmt?} Um diese Frage zu beantworten, müssen
+wir in der Referenz der Interna ( kurz IR) nachschauen.
+
+Die IR für die LilyPond-Version, die Sie benutzen, findet sich
+auf der LilyPond-Webseite unter der Adresse 
+@uref{http://lilypond.org}. Gehen Sie zur Dokumentationsseite
+und klicken Sie auf den Link zur Referenz der Interna.
+@c Addition for German users
+Die Sprache ändert sich ab hier nach englisch. Für diese Übung
+sollten Sie die HTML-Version benutzen, nicht die
+@qq{auf einer großen Seite} oder die PDF-Version.
+Damit Sie die nächsten Absätze verstehen können, müssen Sie
+genauso vorgehen, während Sie weiterlesen.
+
+Unter der Überschrift @strong{Top} befinden sich fünf Links.
+Wählen Sie den Link zum @emph{Backend}, wo sich die Information
+über Layout-Objekte befindet. Hier, unter der Überschrift
+@strong{Backend}, wählen Sie den Link @emph{All layout objects}.
+Die Seite, die sich öffnet, enthält ein Liste aller Layout-Objekte,
+die in Ihrerer LilyPond-Version benutzt werden, in alphabetischer
+Ordnung. Wählen Sie den Link @emph{Slur} und die Eigenschaften
+der Legatobögen (engl. slur) werden aufgelistet.
+
+Eine alternative Methode, auf diese Seite zu gelangen, ist von
+der Notationsreferenz aus. Auf einer der Seiten zu Legatobögen
+findet sich ein Link zur Referenz der Interna. Dieser Link führt
+Sie direkt auf diese Seite. Wenn Sie aber eine Ahnung haben, 
+wie die Bezeichnung des Layout-Objektes lauten könnte, das sie
+ändern wollen, ist es oft schneller, direkt zur IR zu gehen und 
+dort nachzuschlagen.
+
+Aus der Slur-Seite in der IR könne wir entnehmen, dass
+Legatobögen (Slur-Objekte) durch den Slur_engraver erstellt
+werden. Dann werden die Standardeinstellungen aufgelistet.
+Beachten Sie, dass diese @strong{nicht} in alphabetischer Reihenfolge
+geordnet sind. Schauen Sie sich die Liste an, ob sie eine Eigenschaft
+enthält, mit der die Dicke von Legatobögen kontrolliert werden kann.
+Sie sollten folgendes finden:
+
+@example
+@code{thickness} (number)
+     @code{1.2}
+     Line thickness, generally measured in @code{line-thickness}
+@end example
+
+Das sieht ganz danach aus, als ob damit die Dicke geändert
+werden kann. Es bedeutet, dass der Wert von
+@code{thickness} einfach eine Zahl (@emph{number}) ist,
+dass der Standardwert 1.2 ist, und dass die Einheit
+für die Dicke eine andere Eigenschaft mit der
+Bezeichnung @code{line-thickness} ist.
+
+Wie schon früher gesagt, gibt es wenig bis gar keine Erklärungen
+in der IR, aber wir haben schon genug Informationen, um 
+zu versuchen, die Dicke eines Legatobogens zu ändern. Die
+Bezeichnung des Layout-Objekts ist offensichtlich
+@code{Slur} und die Bezeichnung der Eigenschaft, die geändert
+werden soll
+@code{thickness}. Der neue Wert sollte etwas mehr als 1.2 sein,
+denn der Bogen soll ja dicker werden.
+
+Den benötigten @code{\override}-Befehl können wir jetzt einfach
+konstruieren, indem wir die Werte für die Bezeichnungen in den
+Modellbefehl einfügen und den Kontext auslassen. Setzen wir
+einmal einen sehr großen Wert für die Dicke um zu sehen, ob der
+Befehl auch funktioniert. Also:
+
+@example
+\override Slur #'thickness = #5.0
+@end example 
+
+Vergessen Sie nicht das Rautenzeichen und Apostroph
+(@code{#'}) vor der Eigenschaftsbezeichnung und das
+Rautenzeichen vor dem neuen Wert!
+
+Die nächste Frage ist nun: @qq{Wohin soll dieser Befehl geschrieben
+werden?} Solange wir uns noch im Lernstadium befinden, ist
+die beste Antwort: @qq{Innerhalb der Noten, vor den ersten
+Legatobogen und nahe bei ihm.} Also etwa so:
+
+@lilypond[quote,verbatim,relative=2]
+{
+  \time 6/8
+  {
+    % Increase thickness of all following slurs from 1.2 to 5.0
+    \override Slur #'thickness = #5.0
+    r4 b8 b[( g]) g |
+    g[( e]) e d[( f]) a |
+    a g
+  }
+  \addlyrics {
+    The man who feels love's sweet e -- mo -- tion
+  }
+}
+@end lilypond 
+
+@noindent
+und wirklich wird der Legatobogen dicker.
+
+Das ist also die grundlegende Herangehensweise, 
+@code{\override}-Befehl zu formulieren. Es gibt einige
+zusätzliche Komplikationen, denen wir uns später widmen
+werden, aber Sie haben jetzt das Handwerkszeug, um Ihre
+eigenen Befehle zu konstruieren -- wenn Sie auch noch etwas
+Übung benötigen. Die sollen Sie durch die folgenden Übungen
+erhalten.
+
+@subheading Finding the context
+@cindex Kontext, Finden
+
+Manchmal muss dennoch der Kontext spezifiziert werden.
+Welcher aber ist der richtige Kontext? Wir könnten raten,
+dass Legatobögen sich im @code{Voice}-Kontext befinden,
+denn sie sind immer einzelnen Melodielinien zugewiesen.
+Aber wir können uns dessen nicht sicher sein. Um unsere
+Annahme zu überprüfen, gehen wir wieder zu der Seite im
+IR, die die Legatobögen beschreibt und die Überschrift
+@emph{Slur} hat. Dort steht: @qq{Slur objects are created 
+by: Slur engraver}. Legatobögen werden also in dem Kontext
+erstellt, in dem sich der @code{Slur_engraver} befindet. 
+Folgen Sie dem Link zu der @code{Slur_engraver}-Seite.
+Unten auf der Seite steht, dass der @code{Slur_engraver}
+sich in fünf Stimmen-Kontexten befindet, unter anderem
+auch im normalen @code{Voice}-Kontext. Unsere Annahme
+war also richtig. Und weil @code{Voice} einer der Kontexte
+der untersten Ebene ist, welcher eindeutig schon dadurch
+definiert ist, dass wir Noten eingeben, kann er an dieser Stelle
+auch weggelassen werden.
+
+@subheading Overriding once only
+
+@cindex Override nur einmal
+@cindex once override
+@funindex \once
+
+Im Beispiel oben wurden @emph{alle} Legatobögen dicker
+gesetzt. Vielleicht wollen Sie aber nur den ersten Bogen
+dicker haben. Das können Sie mit dem @code{\once}-Befehl
+erreichen. Er wird direkt vor den @code{\override}-Befehl
+gesetzt und bewirkt, dass nur der Bogen geändert wird, der
+@strong{unmittelbar an der nächsten Note beginnt.} Wenn
+die nächste Note keinen Bogenbeginn hat, dann passiert
+gar nichts -- der Befehl wird nicht gespeichert, sondern einfach
+vergessen. Der Befehl, mit @code{\once} zusammen benutzt,
+muss also wie folgt positioniert werden:
+
+@lilypond[quote,verbatim,relative=2]
+{
+  \time 6/8
+  {
+    r4 b8
+    % Increase thickness of immediately following slur only
+    \once \override Slur #'thickness = #5.0
+    b[( g]) g |
+    g[( e]) e d[( f]) a |
+    a g
+  }
+  \addlyrics {
+    The man who feels love's sweet e -- mo -- tion
+  }
+}
+@end lilypond 
+
+@noindent
+Jetzt bezieht er sich nur noch auf den ersten Legatobogen.
+
+Der @code{\once}-Befehl kann übrigens auch vor einem @code{\set}-Befehl
+eingesetzt werden.
+
+@subheading Reverting
+
+@cindex Revert
+@cindex Rückgängig machen
+@cindex Wiederherstellen von Standardeinstellungen
+@cindex Standardeinstellungen, Wiederherstellen
+@funindex \revert
+
+Eine weitere Möglichkeit: nur die beiden ersten Legatobögen sollen
+dicker gesetzt werden. Gut, wir könnten jetzt zwei Befehle benutzen,
+jeden mit dem @code{\once}-Präfix und direkt vor die entsprechende
+Note gestellt, an welcher der Bogen beginnt:
+
+@lilypond[quote,verbatim,relative=2]
+{
+  \time 6/8
+  {
+    r4 b8
+    % Increase thickness of immediately following slur only
+    \once \override Slur #'thickness = #5.0
+    b[( g]) g |
+    % Increase thickness of immediately following slur only
+    \once \override Slur #'thickness = #5.0
+    g[( e]) e d[( f]) a |
+    a g
+  }
+  \addlyrics {
+    The man who feels love's sweet e -- mo -- tion
+  }
+}
+@end lilypond 
+
+@noindent
+Wir könnten aber auch den @code{\once}-Befehl weglassen und anstelle 
+dessen später den @code{\revert}-Befehl einsetzen, um die
+@code{thickness}-Eigenschaft wieder auf ihren Standardwert zurückzusetzen:
+
+@lilypond[quote,verbatim,relative=2]
+{
+  \time 6/8
+  {
+    r4 b8
+    % Increase thickness of all following slurs from 1.2 to 5.0
+    \override Slur #'thickness = #5.0
+    b[( g]) g |
+    g[( e])
+    % Revert thickness of all following slurs to default of 1.2
+    \revert Slur #'thickness
+    e d[( f]) a |
+    a g
+  }
+  \addlyrics {
+    The man who feels love's sweet e -- mo -- tion
+  }
+}
+@end lilypond
+
+@noindent
+Der @code{\revert}-Befehl kann benutzt werden, um eine beliebige
+Eigenschaft, die mit @code{\override} geändert worden ist, wieder in 
+ihre Standardeinstellungen zurückzuversetzen. In unserem Beispiel können
+Sie die Methode benutzen, die Ihnen lieber ist, beide haben das gleiche
+Resultat.
+
+Damit endet die Einleitung in die Referenz der Interna (IR) und die
+grundlegenden Optimierungsmethoden. Einige Beispiele folgen in späteren
+Abschnitten dieses Kapitel, einerseits um Sie mit weiteren Möglichkeiten
+der IR bekanntzumachen, andererseits um Ihnen mehr Übungsmöglichkeiten
+zu geben, die relevante Information dort zu finden. Die Beispiele werden
+Schritt für Schritt immer weniger Erklärungen beinhalten.
+
+
+@node Properties found in interfaces
+@subsection Properties found in interfaces
+
+@cindex Interface-Eigenschaften
+@cindex Eigenschaften von Interfaces
+@cindex Schnittstellen, Eigenschaften von
+@cindex Eigenschaften von Schnittstellen
+
+Der Text unseres Beispiels soll jetzt kursiv gesetzt werden. Was für
+ein @code{\override}-Befehl wird dazu benötigt? Schauen wir
+uns zunächst das Inhaltsverzeichnis in der IR an: @qq{All layout objects},
+wie auch schon zuvor. Welches Objekt könnte die Darstellung des
+Textes (engl. lyrics) beeinflussen? Es gibt den Eintrag @code{LyricText},
+das hört sich schon sehr gut an. Ein Klick hierauf zeigt alle Eigenschaften
+an, die verändert werden können. Dazu gehört 
+@code{font-series} und @code{font-size}, aber nichts, womit man kursiven
+Text erreichen könnte. Das liegt daran, dass die Schnitteigenschaft allen
+Schrift-Objekten gemeinsam ist. Sie findet sich also nicht in jedem einzlenen
+Layout-Objekt aufgelistet, sondern ist mit anderen ähnlichen Eigenschaften
+zusammen in einem @strong{Interface} -- einer Schnittstelle -- verortet;
+in diesem Fall das
+@code{font-interface}.
+
+Jetzt müssen wir also lernen, wie wir Eigenschaften von Schnittstellen finden
+und wie wir herausfinden, welche Objekte diese Schnittstelleneigenschaften
+benutzen.
+
+Schauen Sie sich noch einmal die Seite in der IR an, die @code{LyricText}
+beschreibt. Unten auf der Seite ist eine klickbare Liste (in der HTML-Version
+der IR) an Eigenschaften, die von @code{LyricText} unterstützt
+werden. Diese Liste enthält sieben Einträge, darunter auch
+@code{font-interface}. Ein Klick hierauf bringt uns zu den Eigenschaften,
+die mit dieser Schnittstelle verbunden sind, also auch @code{LyricText}.
+
+Jetzt sehen wir alle die Eigenschaften, die der Benutzer verändern kann,
+um die Schriftartendarstellung zu beeinflussen. Dazu gehört nun auch
+@code{font-shape(symbol)}, wobei @code{symbol} auf die Werte
+@code{upright} (gerade), @code{italics} (kursiv) oder @code{caps}
+(Kapitälchen) gesetzt werden kann.
+
+Sie werden gemerkt haben, dass @code{font-series} und @code{font-size}
+hier auch aufgelistet sind. Es stellt sich die Frage, warum diese
+allgemeinen Schriftarteigenschaften @code{font-series} und
+@code{font-size} sowohl unter der Überschrift
+@code{LyricText} als unter dem @code{font-interface} aufgelistet 
+sind, aber @code{font-shape} befindet sich nur im 
+@code{font-interface}? Die Antwort ist: Die globalen Einstellungen 
+von @code{font-series} und @code{font-size} werden geändert, wenn
+ein @code{LyricText}-Objekt erstellt wird, aber @code{font-shape} 
+wird davon nicht beeinflusst. Die zusätzlichen Einträge unter der
+Überschrift @code{LyricText} beinhalten dann die Werte der
+Standardeinstellungen dieser zwei Eigenschaften, wenn es sich
+um ein @code{LyricText}-Objekt handelt. Andere Objekte,
+die auch das @code{font-interface} unterstützen, setzen diese
+Eigenschaften anders, wenn sie erstellt werden.
+
+Versuchen wir nun einen @code{\override}-Befehl zu konstruieren,
+der den Gesantext kursiv setzt. Das Objekt hat die Bezeichnung
+@code{LyricText}, die Eigenschaft ist @code{font-shape} 
+und der Wert @code{italic}. Wie vorher schon lassen wir den
+Kontext aus.
+
+Am Rande sei angemerkt, dass die Werte der @code{font-shape}-Eigenschaft
+mit einem Apostroph (@code{'}) gekennzeichnet werden
+müssen, weil es sich um Symbole handelt. Aus dem gleichen
+Grund mussten auch für @code{thickness} weiter oben im
+Text ein Apostroph gesetzt werden. Symbole sind besondere
+Bezeichnungen, die LilyPond intern bekannt sind. Einige
+sind Bezeichnungen von Eigenschaften, wie eben @code{thickness}
+oder @code{font-shape}. Andere sind besondere Werte,
+die an Eigenschaften übergeben werden können, wie
+@code{italic}. Im Unterschied hierzu gibt es auch beliebige
+Zeichenketten, die immer mit Anführungszeichen, also
+als @code{"Zeichenkette"} auftreten.
+
+Gut, der @code{\override}-Befehl, mit dem der Gesangstext
+kursiv gesetzt wird, lautet:
+
+@example
+\override LyricText #'font-shape = #'italic
+@end example
+
+@noindent
+und er muss direkt vor den Text gesetzt werden, auf den er sich
+bezieht, etwa so:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+{
+  \time 6/8
+  {
+    r4 b8 b[( g]) g |
+    g[( e]) e d[( f]) a |
+    a g
+  }
+  \addlyrics {
+    \override LyricText #'font-shape = #'italic
+    The man who feels love's sweet e -- mo -- tion
+  }
+}
+@end lilypond
+
+@noindent
+Jetzt wird der Text kursiv gesetzt.
+
+@subheading Specifying the context in lyric mode
+@cindex context, specifying in lyric mode
+
+Bei Gesangstexten funktioniert der @code{\override}-Befehl
+nicht mehr, wenn Sie den Kontext im oben dargestellten
+Format angeben.  Eine Silbe wird im Gesangtextmodus
+(lyricmode) entweder von einem Leerzeichen, einer
+neuen Zeile oder einer Zahl beendet.  Alle anderen
+Zeichen werden als Teil der Silbe integriert.  Aus diesem 
+Grund muss auch vor der schließenden Klammer
+@code{@}} ein Leerzeichen gesetzt oder eine neue
+Zeile begonnen werden.  Genauso müssen Leerzeichen
+vor und nach einem Punkt benutzt werden, um die
+Kontext-Bezeichnung von der Objekt-Bezeichnung zu 
+trennen, denn sonst würden beide Bezeichnungen als
+ein Begriff interpretiert und von LilyPond nicht verstanden 
+werden.  Der Befehl muss also lauten:
+
+@example
+\override Lyrics . LyricText #'font-shape = #'italic
+@end example
+
+@warning{Innerhalb von Gesangstext muss immer ein
+Leerzeichen zwischen der letzten Silbe und der schließenden
+Klammer gesetzt werden.}
+
+@warning{Innerhalb von @code{\override}-Befehlen in
+Gesangstexten müssen Leerzeichen um Punkte zwischen
+Kontext- und Objektbezeichnungen gesetzt werden.}
+
+
+@node Types of properties
+@subsection Types of properties
+
+@cindex Eigenschaftsarten
+
+Bis jetzt hatten wir es mit zwei Arten von Eigenschaften zu
+tun: @code{number} (Zahl) und @code{symbol}.  Damit
+ein Befehl funktioniert, muss der Wert einer Eigenschaft
+vom richtigen Typ sein und die Regeln befolgen, die
+für diesen Typ gelten.  Der Eigenschaftstyp ist in der
+IR in Klammern hinter der Eigenschaftsbezeichnung
+angegeben.  Hier eine Liste der Typen, die Sie vielleicht
+benötigen werden, mit den Regeln, die für den jeweiligen
+Typ gelten und einigen Beispielen. Sie müssen immer
+ein Rautenzeichen (@code{#}) vor den Typeintrag setzen,
+wenn sie in einem @code{\override}-Befehl benutzt werden.
+
+@multitable @columnfractions .2 .45 .35
+@headitem Eigenschaftstyp           
+  @tab Regeln
+  @tab Beispiele
+@item Boolesch
+  @tab Entweder wahr oder falsch, dargestellt als #t oder #f
+  @tab @code{#t}, @code{#f}
+@item Dimension (in Notenlinienabständen)
+  @tab Eine positive Dezimalzahl (in Notenlinienabstand-Einheiten)
+  @tab @code{2.5}, @code{0.34}
+@item Richtung
+  @tab Eine gültige Richtungskonstante oder das numerische Äquivalent
+  @tab @code{LEFT}, @code{CENTER}, @code{UP},
+       @code{1}, @code{-1}
+@item Integer
+  @tab Eine positive ganze Zahl
+  @tab @code{3}, @code{1}
+@item Liste
+  @tab Eine eingeklammerte Anzahl von Einträgen, mit Klammern getrennt
+  und angeführt von einem Apostroph
+  @tab @code{'(left-edge staff-bar)}, @code{'(1)},
+       @code{'(1.0 0.25 0.5)}
+@item Textbeschriftung (markup)
+  @tab Beliebige gültige Beschriftung
+  @tab @code{\markup @{ \italic "cresc." @}}
+@item Moment
+  @tab Ein Bruch einer ganzen Note, mit der make-moment-Funktion
+  konstruiert
+  @tab @code{(ly:make-moment 1 4)},
+       @code{(ly:make-moment 3 8)}
+@item Zahl
+  @tab Eine beliebige positive oder negative Dezimalzahl
+  @tab @code{3.5}, @code{-2.45}
+@item Paar (Zahlenpaar)
+  @tab Zwei Zahlen getrennt von @qq{Leerzeichen . Leerzeichen}, eingeklammert
+  und angeführt von einem Apostroph
+  @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
+@item Symbol
+  @tab Eine beliebige Anzahl von Symbolen, die für die Eigenschaft 
+  gültig sind, angeführt von einem Apostroph
+  @tab @code{'italic}, @code{'inside}
+@item Unbekannt
+  @tab Eine Prozedur oder @code{#f} (um keine Aktion hervorzurufen)
+  @tab @code{bend::print}, @code{ly:text-interface::print},
+       @code{#f}
+@item Vektor
+  @tab Eine Liste mit drei Einträgen, eingeklammert und mit
+  Apostroph-Raute ( @code{'#}) angeführt.
+  @tab @code{'#(#t #t #f)}
+@end multitable
+
+
+@node Appearance of objects
+@section Appearance of objects
+
+In diesem Abschnitt wollen wir zeigen, wie die Kenntnisse der
+vorigen Abschnitte in der Praxis angewandt werden können,
+um das Aussehen des Musiksatzes zu beeinflussen.
+
+@menu
+* Visibility and color of objects::  
+* Size of objects::             
+* Length and thickness of objects::  
+@end menu
+
+
+@node Visibility and color of objects
+@subsection Visibility and color of objects
+
+In Unterrichtsmaterial für den Musikunterricht wird oft
+eine Partitur dargestellt, in der bestimmte Notationselemente
+fehlen, so dass der Schüler die Aufgabe bekommt, die 
+nachzutragen.  Ein einfaches Beispiel ist etwa, die
+Taktlinien zu entfernen, damit der Schüler sie selber zeichnen
+kann.  Aber die Tatklinien werden normalerweise automatisch
+eingefügt.  Wie verhindern wir, dass sie ausgegeben werden?
+
+Bevor wir uns hieran machen, sei daran erinnert, dass
+Objekteigenschaften in sogenannten @emph{Schnittstellen}
+-- engl. interface -- gruppiert sind, siehe auch
+@ref{Properties found in interfaces}.  Das dient ganz einfach
+dazu, die Eigenschaften zusammenzufassen, die üblicherweise
+zusammen benötigt werden -- wenn eine davon für ein Objekt
+gilt, dann auch die anderen.  Manche Objekte brauchen die
+Eigenschaften von der einen Schnittstelle, andere von einer 
+anderen.  Die Schnittstellen, die die Eigenschaften von einem
+bestimmten Grob beinhalten, sind in der IR unten auf der
+Seite aufgelistet, die dieses Grob beschreibt.  Die Eigenschaften
+können betrachtet werden, indem die Seite der entsprechenden
+Schnittstelle geöffnet wird.
+
+Zu Information, wie man Eigenschaften von Grobs findet, siehe
+@ref{Properties of layout objects}.  Wir benutzen also jetzt
+die selbe Methode um in der IR das Layout-Objekt zu finden,
+dass für die Tatklinien zuständig ist. Über die Überschriften
+@emph{Backend} und @emph{All layout objects} kommen
+wir zu einem Layout-Objekt mit der Bezeichnung
+@code{BarLine} (engl. TaktLinie).  Seine Eigenschaften 
+beinhalten zwei, die über die Sichtbarkeit entscheiden:
+@code{break-visibility} und @code{stencil}.  
+@code{BarLine} unterstützt auch einige Schnittstellen,
+unter anderem @code{grob-interface}, wo wir eine
+@code{transparent} und eine @code{color}-Eigenschaft
+finden.  Alle können die Sichtbarkeit von Taktlinien (und
+natürlich auch die Sichtbarkeit von vielen anderen Objekten)
+beeinflussen.  Schauen wir uns diese Eigenschaften eine
+nach der anderen an.
+
+@subheading stencil
+@cindex Stencil-Eigenschaft
+@cindex Matrizen-Eigenschaft
+
+Diese Eigenschaft kontrolliert die Erscheinung der Taktlinien,
+indem sie das Symbol bestimmt, das ausgegeben werden soll.
+Wie bei vielen anderen Eigenschaften auch, kann sie so
+eingestellt werden, dass sie nichts ausgibt, indem ihr Wert
+auf @code{#f} (falsch) gesetzt wird.  Ein Versuch also,
+wie vorher, indem wir den impliziten Kontext (@code{Voice})
+auslassen:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+{
+  \time 12/16
+  \override BarLine #'stencil = ##f
+  c4 b8 c d16 c d8 |
+  g, a16 b8 c d4 e16 |
+  e8
+}
+@end lilypond
+
+Die Taktlinien werden aber immer noch angezeigt.  Was ist da
+falsch gelaufen?  Gehen Sie zurück zur IR und schauen Sie auf 
+die Seite, die die Eigenschafter für @code{BarLine} angibt.
+Oben auf der Seite steht: @qq{Barline objects are created
+by: Bar_engraver}.  Schauen Sie sich die
+@code{Bar_engraver}-Seite an.  Unten auf der Seite steht
+eine Liste der Kontexte, in denen der Takt-Engraver
+funktioniert.  Alle Kontexte sind @code{Staff}-Typen (also
+Notensystem-Typen).  Der Grund, warum der
+@code{\override}-Befehl nicht funktioniert hat, liegt
+also darin, dass das Taktlinie-Objekt (@code{BarLine}) sich nicht
+im @code{Voice}-Kontextbefindet.  Wenn der Kontext
+falsch angegeben wird, bewirkt der Befehl einfach gar
+nichts.  Keine Fehlermeldung wird ausgegeben und auch
+nichts in die Log-Datei geschrieben.  Versuchen wir also,
+den richtigen Kontext mitanzugeben:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+{
+  \time 12/16
+  \override Staff.BarLine #'stencil = ##f
+  c4 b8 c d16 c d8 |
+  g, a16 b8 c d4 e16 |
+  e8
+}
+@end lilypond
+
+@noindent
+Jetzt sind die Taktlinien wirklich verschwunden.
+
+@subheading break-visibility
+
+@cindex break-visibility-Eigenschaft
+@cindex Unsichtbar machen (break-visibility)
+
+Aus der Beschreibung der Eigenschaften für @code{BarLine}
+in der IR geht hervor, dass die @code{break-visibility}-Eigenschaft
+einen Vektor mit drei Booleschen Werten benötigt. Diese
+kontrollieren jeweils, ob die Taktlinien am Ende einer Zeile,
+in der Mitte einer Zeile und am Anfang einer Zeile ausgegeben
+werden.  Wenn also alle Taktlinien unsichtbar sein sollen, wie in
+unserem Beispiel, brauchen wir den Wert @code{'#(#f #f #f)}.
+Versuchen wir es also, und berücksichtigen wir auch den
+@code{Staff}-Kontext.  Beachten Sie auch, dass Sie @code{#'#}
+vor der öffnenden Klammer schreiben müssen: 
+@code{'#} wird benötigt als Teil des Wertes, um einen Vektor zu
+signalisieren, und das erste @code{#} wird benötigt, um
+den Wert in einem @code{\override}-Befehl anzuführen.
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+{
+  \time 12/16
+  \override Staff.BarLine #'break-visibility = #'#(#f #f #f)
+  c4 b8 c d16 c d8 |
+  g, a16 b8 c d4 e16 |
+  e8
+}
+@end lilypond
+
+@noindent
+Auch auf diesem Weg gelingt es, die Taktlinien unsichtbar zu machen.
+
+@subheading transparent
+@cindex transparent-Eigenschaft
+@cindex Durchsichtig machen (transparent)
+
+Aus den Eigenschaftsdefinitionen auf der @code{grob-interface}-Seite
+in der IR geht hervor, dass die @code{transparent}-Eigenschaft
+boolesch ist.  Mit @code{#t} (wahr) wird also ein Grob durchsichtig
+gemacht.  Im unserem Beispiel soll jetzt die Taktart durchsichtig
+gemacht werden, anstatt die Taktlinien durchsichtig zu machen.
+Wir brauchen also wieder die Grob-Bezeichnung für die Taktart.
+Auf der @qq{All layout objects}-Seite in der IR müssen wir die
+Eigenschaften des @code{TimeSignature}-Layout-Objekts suchen
+Das Objekt wird vom @code{Time_signature_engraver} erstellt,
+der sich auch im @code{Staff}-Kontext befindet und genauso das
+@code{grob-interface} unterstützt, wie Sie sich
+überzeugen können.  Der Befehl, um die Taktangabe unsichtbar zu
+machen, ist also:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+{
+  \time 12/16
+  \override Staff.TimeSignature #'transparent = ##t
+  c4 b8 c d16 c d8 |
+  g, a16 b8 c d4 e16 |
+  e8
+}
+@end lilypond
+
+@noindent
+Die Taktangabe ist verschwunden, aber mit diesem Befehl wird ein
+freier Platz gelassen, wo sich die Taktangabe eigentlich befinden
+würde.  Das braucht man vielleicht für eine Schulaufgabe, in der
+die richtige Taktangabe eingefügt werden soll, aber in anderen
+Fällen ist diese Lücke nicht schön.  Um auch die Lücke zu entfernen,
+muss die Matrize (stencil) der Taktangabe auf @code{#f} (falsch)
+gesetzt werden:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+{
+  \time 12/16
+  \override Staff.TimeSignature #'stencil = ##f
+  c4 b8 c d16 c d8 |
+  g, a16 b8 c d4 e16 |
+  e8
+}
+@end lilypond
+
+@noindent
+Und der Unterschied wird deutlich: hiermit wird das gesamte Objekt
+entfernt, während man mit @code{transparent} ein Objekt
+unsichtbar machen kann, es aber an seinem Platz gelassen wird.
+
+@subheading color
+@cindex color property
+
+Abschließend wollen wir die Taktlinien unsichtbar machen, indem
+wir sie weiß einfärben.  (Es gibt hier eine Schwierigkeit: die weiße
+Taktlinie übermalt manchmal die Taktlinienen, wo sie sie kreuzt, 
+manchmal aber auch nicht.  Sie können in den Beispielen unten
+sehen, dass das nicht vorhersagbar ist.  Die Einzelheiten dazu, warum
+das passiert und wie sie es kontrollieren können, werden dargestellt
+in @ruser{Painting objects white}.  Im Moment wollen wir lernen, wie
+man mit Farbe arbeitet, akzeptieren Sie bitte an dieser Stelle die
+Beschränkung.)
+
+Das @code{grob-interface} bestimmt, dass der Wert der Farb-Eigenschaft
+eine Liste ist, aber es gibt keine Erklärung, was für eine Liste das
+sein soll.  Die Liste, die benötigt wird, ist eine Liste mit Werten in
+internen Einheiten, aber damit Sie nicht wissen müssen, wie diese
+aussehen, gibt es mehrere Wege, Farben anzugeben.  Der erste
+Weg ist es, @qq{normale} Farben zu benutzen, wie sie in der
+Tabelle in @ruser{List of colors} aufgelistet sind.  Beachten Sie,
+dass die Bezeichnungen auf English sind.  Um die Taktlinien auf
+weiß zu setzen, können Sie schreiben:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+{
+  \time 12/16
+  \override Staff.BarLine #'color = #white
+  c4 b8 c d16 c d8 |
+  g, a16 b8 c d4 e16 |
+  e8
+}
+@end lilypond
+
+@noindent
+und die Taktlinien verschwinden in der Tat.  Beachten Sie,
+dass @emph{white} nicht mit einem Apostroph angeführt
+wird -- es ist kein Symbol, sondern eine @emph{Funktion}.
+Wenn sie aufgerufen wird, stellt sie eine Liste mit internen
+Werten zu Verfügung, mit welcher die Farbe auf weiß
+gestellt wird.  Die anderen Farben in der Liste sind auch
+Funktionen.  Um sich zu überzeugen, dass der Befehl auch
+wirklich funktioniert, können Sie die Farbe auf eine der
+anderen Funktionen dieser Liste abändern.
+
+@cindex Farben, X11
+@cindex X11-Farben
+
+Die zweite Art die Farbe zu ändern geschieht, indem die Liste
+der X11-Farbbezeichnungen einzusetzen, siehe die zweite Liste
+in @ruser{List of colors}.  Diesen Farben muss jedoch eine
+andere Funktion vorangestellt werden, die die X11-Farbbezeichnungen
+in interne Werte konvertiert: 
+@code{x11-color}.  Das geschieht wie folgt:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+{
+  \time 12/16
+  \override Staff.BarLine #'color = #(x11-color 'white)
+  c4 b8 c d16 c d8 |
+  g, a16 b8 c d4 e16 |
+  e8
+}
+@end lilypond
+
+@noindent
+In diesem Fall hat die Funktion @code{x11-color} ein Symbol
+als Argument, darum muss dem Symbol ein Apostroph vorangestellt
+und beide zusammen in Klammern gesetzt werden.
+
+@cindex RGB-Farben
+@cindex Farben, RGB
+
+Es gibt noch eine dritte Funktion, die RGB-Werte in die
+internen Werte übersetzt -- die @code{rgb-color}-Funktion.  Sie
+braucht drei Argumente, um die Stärke von Rot, Grün und
+Blau darzustellen. Die Werte befinden sich zwischen 
+0 und 1.  Um also die Farbe Rot darzustellen, muss der
+Wert der Funktion lauten: @code{(rgb-color 1 0 0)}, weiß
+würde sein: @code{(rgb-color 1 1 1)}.
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+{
+  \time 12/16
+  \override Staff.BarLine #'color = #(rgb-color 1 1 1)
+  c4 b8 c d16 c d8 |
+  g, a16 b8 c d4 e16 |
+  e8
+}
+@end lilypond
+
+Schließlich gibt es noch eine Grauskala, die zu den X11-Farben
+gehört.  Sie reicht von schwarz (@code{'grey0'}) bis
+weiß (@code{'grey100}), in Einserschritten.  Wir wollen das
+illustrieren, indem alle Layout-Objekte im Beispiel
+verschiede Grauschattierungen erhalten:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+{
+  \time 12/16
+  \override Staff.StaffSymbol   #'color = #(x11-color 'grey30)
+  \override Staff.TimeSignature #'color = #(x11-color 'grey60)
+  \override Staff.Clef          #'color = #(x11-color 'grey60)
+  \override Voice.NoteHead      #'color = #(x11-color 'grey85)
+  \override Voice.Stem          #'color = #(x11-color 'grey85)
+  \override Staff.BarLine       #'color = #(x11-color 'grey10)
+  c4 b8 c d16 c d8 |
+  g, a16 b8 c d4 e16 |
+  e8
+}
+@end lilypond
+
+@noindent
+Beachten Sie die Kontexte, die mit jedem einzelnen Layout-Objekt
+verbunden sind.  Es ist wichtig, den richtigen Kontext einzusetzen,
+damit die Befehle funktionieren.  Denken Sie daran, dass der 
+Kontext sich daran orientiert, wo sich der entsprechende
+Engraver befindet.  Den Standardkontext für Engraver finden
+Sie, indem Sie beim Layout-Objekt beginnen, zum Engraver
+gehen, der es produziert und auf der Seite des Engravers in der
+IR finden Sie Information, in welchem Kontext sich der
+Engraver normalerweise befindet.
+
+
+@node Size of objects
+@subsection Size of objects
+
+@untranslated
+
+@node Length and thickness of objects
+@subsection Length and thickness of objects
+
+@untranslated
+
+@node Placement of objects
+@section Placement of objects
+
+@untranslated
+
+@menu
+* Automatic behavior::          
+* Within-staff objects::        
+* Outside staff objects::       
+@end menu
+
+@node Automatic behavior
+@subsection Automatic behavior
+
+@untranslated
+
+@node Within-staff objects
+@subsection Within-staff objects
+
+@untranslated
+
+@node Outside staff objects
+@subsection Outside staff objects
+
+@untranslated
+
+
+@node Collisions of objects
+@section Collisions of objects
+
+@menu
+* Moving objects::              
+* Fixing overlapping notation::  
+* Real music example::          
+@end menu
 
 @node Moving objects
 
 @node Moving objects
-@section Moving objects
+@subsection Moving objects
 
 Es wird vielleicht eine Überraschung sein, aber LilyPond ist nicht 
 perfekt. Einige Notationselemente können sich überschneiden. Das 
 
 Es wird vielleicht eine Überraschung sein, aber LilyPond ist nicht 
 perfekt. Einige Notationselemente können sich überschneiden. Das 
@@ -171,7 +1466,7 @@ c4^"piu mosso" d e f
 
 
 @node Fixing overlapping notation
 
 
 @node Fixing overlapping notation
-@section Fixing overlapping notation
+@subsection Fixing overlapping notation
 
 Im Kapitel @ref{Moving objects} wurde gezeigt, wie man Texte 
 (@code{TextScript}-Objekte) verschiebt. Mit der gleichen 
 
 Im Kapitel @ref{Moving objects} wurde gezeigt, wie man Texte 
 (@code{TextScript}-Objekte) verschiebt. Mit der gleichen 
@@ -186,9 +1481,9 @@ Kapitels  @ruser{Dynamics} findet sich:
 @quotation
 @seealso
 
 @quotation
 @seealso
 
-Programmreferenz: @internalsref{DynamicText}, @internalsref{Hairpin}.
+Programmreferenz: @rinternals{DynamicText}, @rinternals{Hairpin}.
 Vertikale Positionierung dieser Symbole wird mit
 Vertikale Positionierung dieser Symbole wird mit
-@internalsref{DynamicLineSpanner} erreicht.
+@rinternals{DynamicLineSpanner} erreicht.
 @end quotation
 
 @noindent
 @end quotation
 
 @noindent
@@ -214,8 +1509,16 @@ aber die gebräuchlichsten finden sich hier:
 @end multitable
 
 
 @end multitable
 
 
+@node Real music example
+@subsection Real music example
+
+@untranslated
+
+
+@c DEPRECATED SECTION
 @node Common tweaks
 @section Common tweaks
 @node Common tweaks
 @section Common tweaks
+
 Bestimmte Korrekturen sind so häufig, dass für sie schon fertige 
 angepasste Befehle bereitgestellt sind, so etwa 
  @code{\slurUp} um einen Bindebogen oberhalb anzuzeigen oder 
 Bestimmte Korrekturen sind so häufig, dass für sie schon fertige 
 angepasste Befehle bereitgestellt sind, so etwa 
  @code{\slurUp} um einen Bindebogen oberhalb anzuzeigen oder 
@@ -261,7 +1564,7 @@ für bestimmte Objekte zuständig ist. Weil das
  @code{MetronomeMark}-Objekt vom @code{Score}-Kontext gesetzt 
 wird, werden Veränderungen innerhalb des @code{Voice}-Kontextes 
 nicht berücksichtigt. Genauere Details im Kapitel
  @code{MetronomeMark}-Objekt vom @code{Score}-Kontext gesetzt 
 wird, werden Veränderungen innerhalb des @code{Voice}-Kontextes 
 nicht berücksichtigt. Genauere Details im Kapitel
-@ruser{Constructing a tweak}.
+@ruser{The \override command}.
 
 @cindex extra-offset
 @cindex zusätzlicher Abstand
 
 @cindex extra-offset
 @cindex zusätzlicher Abstand
@@ -352,8 +1655,29 @@ verhalten sich anders, etwa die Dicke von Balken ist an die
 Notenzeilenabstände gekoppelt. Mehr Information findet sich 
 im relevanten Teil der Programmreferenz.
 
 Notenzeilenabstände gekoppelt. Mehr Information findet sich 
 im relevanten Teil der Programmreferenz.
 
-@node Default files
-@section Default files
+@node Further tweaking
+@section Further tweaking
+
+@menu
+* Other uses for tweaks::       
+* Using variables for tweaks::  
+* Other sources of information::  
+* Avoiding tweaks with slower processing::  
+* Advanced tweaks with Scheme::  
+@end menu
+
+@node Other uses for tweaks
+@subsection Other uses for tweaks
+
+@untranslated
+
+@node Using variables for tweaks
+@subsection Using variables for tweaks
+
+@untranslated
+
+@node Other sources of information
+@subsection Other sources of information
 
 Die Programmreferenz enthält sehr viel Information über LilyPond, aber 
 noch mehr Information findet sich in den internen 
 
 Die Programmreferenz enthält sehr viel Information über LilyPond, aber 
 noch mehr Information findet sich in den internen 
@@ -386,96 +1710,23 @@ Dateien wie @file{ly/property-init.ly} und
 @file{ly/declarations-init.ly} definieren alle häufig vorkommenden Veränderungen.
 
 
 @file{ly/declarations-init.ly} definieren alle häufig vorkommenden Veränderungen.
 
 
-@node Fitting music onto fewer pages
-@section Fitting music onto fewer pages
-
-Manchmal bleiben nur noch ein oder zwei Systeme auf der 
-letzten Seite übrig. Das ist immer ärgerlich, besonders 
-wenn es scheint, dass auf den vorigen Seiten genug Platz 
-ist, um die Systeme noch unterzubringen.
-
-Wenn man versucht, das Layout zu verändern, kommt einem 
-der Befehl @code{annotate-spacing} zu Hilfe. Mit diesem 
-Befehl erhält man die Werte von verschiedenen Abstandsbefehlen 
-ausgedruckt, mehr Information im Kapitel @ruser{Displaying spacing}. 
-Anhand dieser Angaben kann dann entschieden werden, welche 
-Werte verändert werden müssen.
-
-Neben Rändern gibt es nämlich weitere Optionen, Platz zu sparen:
-
-@itemize
-@item
-LilyPond kann die Systeme so dicht wie möglich platzieren (damit 
-so viele Systeme wie möglich auf eine Seite passen), aber sie 
-dann so anordnen, dass kein weißer Rand unten auf der Seite entsteht.
-
-@example
-\paper @{
-  between-system-padding = #0.1
-  between-system-space = #0.1
-  ragged-last-bottom = ##f
-  ragged-bottom = ##f
-@}
-@end example
+@node Avoiding tweaks with slower processing
+@subsection Avoiding tweaks with slower processing
 
 
-@item
-Die Anzahl der Systeme kann reduziert werden (wenn LilyPond 
-die Musik auf 11 Systeme verteilt, kann man die Benutzung vo
-nur 10 Systemen erzwingen).
+LilyPond kann einige zusätzliche Tests durchführen, während 
+die Noten gesetzt werden. Dadurch braucht das Programm länger, 
+um den Notensatz zu produzieren, aber üblicherweise werde
+weniger nachträgliche Anpassungen nötig sein.
 
 @example
 
 @example
-\paper @{
-  system-count = #10
-@}
+%%  Um sicher zu gehen, dass Texte und Liedtext 
+%%  innerhalb der Papierränder bleiben
+\override Score.PaperColumn #'keep-inside-line = ##t 
 @end example
 
 @end example
 
-@item
-Vermeidung von Objekten, die den vertikalen Abstand von Systemen 
-vergrößern, hilft oft. Die Verwendung von Klammern bei Wiederholungen 
-etwa braucht mehr Platz. Wenn die Noten innerhalb der Klammern  auf 
-zwei Systeme verteilt sind, brauchen sie mehr Platz, als wenn sie 
-nur auf einer Zeile gedruckt werden.
-
-Ein anderes Beispiel ist es, Dynamik-Zeichen, die besonders 
-weit @qq{hervorstehen}, zu verschieben.
-
-@lilypond[verbatim,quote,fragment]
-\relative c' {
-  e4 c g\f c
-  \override DynamicLineSpanner #'padding = #-1.8
-  \override DynamicText #'extra-offset = #'( -2.1 . 0)
-  e4 c g\f c
-}
-@end lilypond
-
-@item
-Die horizontalen Abstände können mit der 
- @code{SpacingSpanner}-Eigenschaft verändert werden.  Siehe
-@ruser{Changing horizontal spacing} für Einzelheiten.
-
-@lilypond[verbatim,quote]
-\score {
-  \relative c'' {
-    g4 e e2 | f4 d d2 | c4 d e f | g4 g g2 |
-    g4 e e2 | f4 d d2 | c4 e g g | c,1 |
-    d4 d d d | d4 e f2 | e4 e e e | e4 f g2 |
-    g4 e e2 | f4 d d2 | c4 e g g | c,1 |
-  }
-  \layout {
-    \context {
-      \Score
-      \override SpacingSpanner
-                #'base-shortest-duration = #(ly:make-moment 1 4)
-    }
-  }
-}
-@end lilypond
-
-@end itemize
-
 
 @node Advanced tweaks with Scheme
 
 @node Advanced tweaks with Scheme
-@section Advanced tweaks with Scheme
+@subsection Advanced tweaks with Scheme
 
 Es wurde schon gezeigt, wie die LilyPond-Ausgabe sehr stark verändert 
 werden kann, indem man Befehle wie 
 
 Es wurde schon gezeigt, wie die LilyPond-Ausgabe sehr stark verändert 
 werden kann, indem man Befehle wie 
@@ -535,20 +1786,3 @@ pattern = #(define-music-function (parser location x y) (ly:music? ly:music?)
 }
 @end lilypond
 
 }
 @end lilypond
 
-
-@node Avoiding tweaks with slower processing
-@section Avoiding tweaks with slower processing
-
-LilyPond kann einige zusätzliche Tests durchführen, während 
-die Noten gesetzt werden. Dadurch braucht das Programm länger, 
-um den Notensatz zu produzieren, aber üblicherweise werden 
-weniger nachträgliche Anpassungen nötig sein.
-
-@example
-%%  Um sicher zu gehen, dass Texte und Liedtext 
-%%  innerhalb der Papierränder bleiben
-\override Score.PaperColumn #'keep-inside-line = ##t 
-@end example
-
-
-