]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/de/notation/changing-defaults.itely
Doc-de: update to notation manual 4
[lilypond.git] / Documentation / de / notation / changing-defaults.itely
index c3cce8cd6c5c3208d6f182f5707015ca23967447..6df6eaf0c2bf62b5a6f6a69d45ed123401f86f8a 100644 (file)
@@ -1,14 +1,14 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: c1df40da9f8b2794e173583c363f9e736e5531bd
+    Translation of GIT committish: a0077273ac8bf29ae472c8712bc78a02d138f898
 
     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.15.20"
+@c \version "2.15.39"
 
 @c Translators: Till Paala
 
@@ -37,7 +37,7 @@ der Interna}.  Diese Referenz zeigt alle Variablen, Funktionen und Optionen,
 die in LilyPond möglich sind.  Es existiert als ein HTML-Dokumente, das
 sich
 @c leave the @uref as one long line.
-@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/user/@/lilypond@/-internals/,on@/-line},
+@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/internals/,on@/-line},
 aber auch lokal in das LilyPond-Dokumentationspaket integriert lesen lässt.
 
 Intern benutzt LilyPond Scheme (ein LISP-Dialekt), um eine Infrastruktur
@@ -384,7 +384,7 @@ die dem Kontext gegeben wurde.
 Diese Variante wird bei musikalischen Ausdrücken benutzt, die auf
 verschiedenen Ebenen interpretiert werden können.  Beispielsweise
 der @code{\applyOutput}-Befehl (siehe
-@ref{Eine Funktion auf alle Layout-Objekte anwenden}).  Ohne einen
+@rextend{Eine Funktion auf alle Layout-Objekte anwenden}).  Ohne einen
 expliziten @code{\context} wird die Ausgabe normalerweise einem
 @code{Voice}-Kontext zugewiesen:
 
@@ -570,7 +570,7 @@ nicht nur Eigenschaften, sie enthalten auch Plugins (@qq{engraver}
 genannt), die die einzelnen Notationselemente erstellen.  Ein
 @code{Voice}-Kontext enthält beispielsweise einen
 @code{Note_heads_engraver}, der die Notenköpfe erstellt, und ein
-@code{Staff}-Kontext einen @code{Key_signature_engraver}, der die
+@code{Staff}-Kontext einen @code{Key_engraver}, der die
 Vorzeichen erstellt.
 
 Eine vollständige Erklärung jedes Plugins findet sich in
@@ -681,103 +681,81 @@ jedes System eine unterschiedliche Taktart hat:
 
 @knownissues
 
-Normalerweise spielt es keine Rolle, in welcher Reihenfolge
-Engraver angegeben werden, aber in einigen Spezialfällen
+Die Reihenfolge, in der die Engraver definiert werden,
+ist die Reihenfolge, in welcher sie aufgerufen werden, um
+ihre Verarbeitung vorzunehmen.  Normalerweise spielt die
+Reihenfolge, in welcher die Engraver angegeben werden,
+keine Rolle, aber in einigen Spezialfällen
 ist die Reihenfolge sehr wichtig.  Das kann beispielsweise
 vorkommen, wenn ein Engraver eine Eigenschaft erstellt und
 ein anderer von ihr liest, oder ein Engraver erstellt ein
-Grob und ein anderer wertet es aus.  Die Reihenfolge, in der
-Engraver angegeben werden, ist die Reihenfolge, in der sie
-aufgerufen werden, um ihre Tätigkeiten auszuführen.
+Grob und ein anderer wertet es aus.
 
-Folgende Reihenfolgen müssen beachtet werden: der
-@code{Bar_engraver} muss normalerweise zuerst kommen, und
+Folgende Reihenfolgen müssen beachtet werden:
+
+@itemize
+@item
+der @code{Bar_engraver} muss normalerweise zuerst kommen,
+
+@item
 der @code{New_fingering_engraver} muss vor dem
-@code{Script_column_engraver} kommen.  Es gibt möglicherweise weitere
-Abhängigkeiten von der Reihenfolge geben.
+@code{Script_column_engraver} kommen,
+
+@item
+der @code{Timing_translator} muss vor dem @code{Bar_number_engraver}
+kommen.
+@end itemize
+
+@seealso
+Installlierte Dateien:
+@file{ly/engraver-init.ly}.
 
 
 @node Die Standardeinstellungen von Kontexten ändern
 @subsection Die Standardeinstellungen von Kontexten ändern
 @translationof Changing context default settings
 
-Die Kontexteinstellungen, die standardmäßig in
-@code{Score}, @code{Staff} und @code{Voice}-Kontexten
-benutzt werden, können in einer @code{\layout}-Umgebung
-eingestellt werden, wie das folgende Beispiel zeigt.  Die
-@code{\layout}-Umgebung sollte innerhalb der
-@code{\score}-Umgebung gesetzt werden, auf die sie sich
-auswirken soll, aber außerhalb von Notation.
+@cindex Standardkontexteigenschaften, ändern
+@cindex Kontexteigenschaften, Einstellungen ändern
 
-Auch muss der @code{\set}-Befehl und der Kontext weggelassen
-werden, wenn die Einstellungen für den Kontext auf diese Weise
-vorgenommen werden:
+Kontext- und Grob-Eigenschaften können mit den Befehlen @code{\set}
+und @code{\override} verändert werden, wie beschrieben in
+@ref{Eigenschaften verändern}.  Diese Befehle erstellen musikalische
+Ereignisse, damit die Veränderungen zum Zeitpunkt der Verarbeitung
+in den Noten erscheinen.
 
-@lilypond[quote,verbatim]
-\score {
-  \relative c'' {
-    a4^"Really small, thicker stems, no time signature" a a a
-    a a a a
-  }
-  \layout {
-    \context {
-      \Staff
-      fontSize = #-4
-      \override Stem #'thickness = #4.0
-      \remove "Time_signature_engraver"
-    }
-  }
-}
-@end lilypond
+Dieser Abschnitt hingegen erklärt, wie man die @emph{Standardwerte} von
+Kontext- und Grob-Eigenschaften zum Zeitpunkt, an dem der Kontext erstellt
+wird, verändert.  Es gibt hierzu zwei Möglichkeiten.  Die eine verändert
+die Standardeinstellungen aller Kontexte eines bestimmten Typs, die andere
+verändert die Standardwerte nur eines bestimmten Kontextes.
 
-Hier zeigt der @code{\Staff}-Befehl an, dass die folgenden Einstellungen
-sich auf alle Systeme in dieser Partitur erstrecken sollen.
+@menu
+* Alle Kontexte des gleichen Typs verändern::
+* Nur einen bestimmten Kontext verändern::
+* Rangfolge von Kontextwerten::
+@end menu
 
-Veränderungen können auch für den @code{Score}- oder alle
-@code{Voice}-Kontexte auf gleiche Weise vorgenommen werden.
+@node Alle Kontexte des gleichen Typs verändern
+@unnumberedsubsubsec Alle Kontexte des gleichen Typs verändern
+@translationof Changing all contexts of the same type
 
-Kontextänderungen können in eine Variable geschrieben werden und dann
-einer @code{\context}-Definition zu gewiesen werden, indem man der
-Veränderung ein @code{\with} voranstellt:
+@cindex \context in \layout-Umgebung
+@funindex \context
+@funindex \layout
 
-@lilypond[quote,verbatim]
-blubb = \with {
-  fontSize = #-4
-  \override Stem #'thickness = #4.0
-  \remove "Time_signature_engraver"
-}
 
-bla = \with {
-  fontSize = #3
-  \override Stem #'thickness = #-2.0
-}
 
-melody = \relative c'' {
-  a4 a a a |
-  a4 a a a |
-}
+@node Nur einen bestimmten Kontext verändern
+@unnumberedsubsubsec Nur einen bestimmten Kontext verändern
+@translationof Changing just one specific context
+
 
-\score {
-  <<
-    \new Staff <<
-      \melody
-      s1*0^"Small, thicker stems, no time signature"
-    >>
-    \new Staff \bla <<
-      \melody
-      s1*0^"Different"
-    >>
-  >>
-  \layout {
-    \context {
-      \Staff
-      \blubb
-    }
-  }
-}
-@end lilypond
 
- @c TODO: add \with in here.
+@node Rangfolge von Kontextwerten
+@unnumberedsubsubsec Rangfolge von Kontextwerten
+@translationof Order of precedence
+
  
 
 @node Neue Kontexte definieren
@@ -1988,7 +1966,7 @@ f'
 Der Strom der musikalischen Ereignisse (engl. music stream), der aus
 dem Quelltext erstellt wird, und zu dem auch die automatisch eingefügten
 Elemente gehören, kann betrachtet werden, siehe
-@ref{Musikalische Funktionen darstellen}.  Das kann nützlich sein,
+@rextend{Musikalische Funktionen darstellen}.  Das kann nützlich sein,
 wenn man herausfinden will, was mit dem @code{\tweak}-Befehl
 verändert werden kann.
 
@@ -2420,6 +2398,17 @@ c2( c)
 c2( c)
 @end lilypond
 
+In polyphoner Musik ist es normalerweise besser, eine explizite
+Stimme (@code{voice} zu erstellen, als die Richtung eines Objektes zu
+ändern.  Zu mehr Information siehe @ref{Mehrere Stimmen}.
+
+@seealso
+Handbuch zum Lernen:
+@rlearning{within-staff (Objekte innerhalb des Notensystems)}.
+
+Notationsreferenz:
+@ref{Mehrere Stimmen}.
+
 
 @node Abstände und Maße
 @subsection Abstände und Maße
@@ -3217,7 +3206,7 @@ Schlüsselsymbol als auch das damit verknüpfte Oktavierungssymbol.
 
 @seealso
 Handbuch zum Lernen:
-@rlearning{Sichtbarkeit und Farbe von Objekten}
+@rlearning{Sichtbarkeit und Farbe von Objekten}.
 
 
 @node Linienstile
@@ -3286,12 +3275,12 @@ werden, aber die Methode, mit der die Änderung vorgenommen
 werden muss, unterscheidet sich je nach Objekt.
 
 @menu
-* Drehen von Objekten::
+* Drehen von Layout-Objekten::
 * Textbeschriftung drehen::
 @end menu
 
-@node Drehen von Objekten
-@unnumberedsubsubsec Drehen von Objekten
+@node Drehen von Layout-Objekten
+@unnumberedsubsubsec Drehen von Layout-Objekten
 @translationof Rotating layout objects
 
 @cindex Drehen von Objekten
@@ -3361,6 +3350,7 @@ Aussehen des Notenbildes zu polieren.
 * Vertikale Gruppierung der grafischen Objekte („grob“s)::
 * stencils verändern::
 * Formen verändern::
+* Reine und unreine Container::
 @end menu
 
 
@@ -3371,8 +3361,10 @@ Handbuch zum Lernen:
 
 Notationsreferenz:
 @ref{Die Referenz der Programminterna erklärt},
-@ref{Eigenschaften verändern},
-@ref{Schnittstellen für Programmierer}.
+@ref{Eigenschaften verändern}.
+
+Erweitern:
+@rextend{Schnittstellen für Programmierer}.
 
 Installierte Dateien:
 @file{scm/define-grobs.scm}.
@@ -3784,8 +3776,6 @@ Alle Schriftzeichen in der feta-Schriftart können
 mit dem @code{\musicglyph}-Befehl erreicht werden.
 Siehe auch @ref{Die Feta-Schriftart}.
 
-
-
 @seealso
 Notationsreferenz:
 @ref{Graphische Notation innerhalb einer Textbeschriftung},
@@ -3895,6 +3885,120 @@ Referenz der Interna:
 @rinternals{TieColumn}.
 
 
+@cindex Scheme, reine Container
+@cindex Scheme, unreine Container
+@cindex reine Container, Scheme
+@cindex unreine Container, Scheme
+@cindex horizontale Platzierung, verändern
+
+@node Reine und unreine Container
+@subsection Reine und unreine Container
+@translationof Unpure-pure containers
+
+Unreine und reine Container (engl. unpure/pure containers) sind
+nützlich, wenn man die Berechnungen der Platzierungen für die
+@emph{Y-Achse} verändern will, insbesondere für @code{Y-offset}
+und @code{Y-extent}.  Mit diesen Containern kann die Veränderung
+durch eine Scheme-Funktion anstelle einer direkten Zahl oder eines
+Paares vorgenommen werden.
+
+Für bestimmte Grobs basiert die Eigenschaft @code{Y-extent} auf
+der @code{stencil}-Eigenschaft.  Wenn diese mit @code{\override}
+verändert werden soll, braucht man eine zusätzliche Veränderung
+von @code{Y-extent} mit einem unreinen-reinen Container.  Wenn eine
+Funktion @code{Y-offset} und/oder @code{Y-extent} verändert, wird
+angenommen, dass dadurch Zeilenumbruchsberechnungen zu früh während
+der Kompilation aufgerufen werden.  Die Funktion wird also überhaupt
+nicht ausgewertet (und gibt also normalerweise den Wert @samp{0} oder
+@samp{'(0 . 0)} zurück), wodurch sich Zusammenstöße ergeben können.
+Eine @qq{saubere} Funktion beeinflusst keine Eigeschaften, Objekte
+oder Grob-Suizide, weshalb ihre Werte, die sich auf @code{Y-axis}
+beziehen, richtig berechnet werden.
+
+Es gibt zuzeit etwa 30 Funktionen, die schon als @qq{sauber} erachtet
+werden, und unsaubere-saubere Container sind eine Möglichkeit, auch
+Funktionen, die sich nicht auf dieser Liste befinden, als @qq{sauber}
+zu markieren.  Die @qq{saubere} Funktion wird ausgewertet, @emph{bevor}
+Seitenumbruch stattfindet, sodass die horizontale Platzierung
+@qq{rechtzeitig} stattfindet.  Die @qq{unsaubere} Funktion wird dann
+@emph{nach} dem Seitenumbruch ausgewertet.
+
+@warning{Da es schwierig ist, immer sicher zu sein, welche Funktionen sich
+auf dieser Liste befinden, wird empfohlen, dass die selbsterstellten
+@qq{sauberen} Funktionen nicht die Grobs @code{Beam} oder @code{VerticalAlignment}
+einsetzen.}
+
+Ein unsauberer-sauberer Container wird wie folgend erstellt:
+
+@code{(ly:make-unpure-pure-container f0 f1)}
+
+wobei @code{f0} eine Fuktion ist, die @var{n} Arguments braucht
+(@var{n >= 1}) und deren erstes Argument immer der Grob sein muss.
+Das ist die Funktion, die das eigentliche Resultat ausgibt.  @var{f1}
+ist die Funktion, die als @qq{sauber} bezeichnet wird, und braucht @var{n + 2}
+Argumente.  Wiederum muss das erste Argument immer der Grob sein, aber
+das erste und zweite Argument sind @qq{Beginn-} und @qq{Endeargumente}.
+
+
+
+@var{start} (Beginn) und @var{end} (Ende) sind absichtlich
+nur Platzhalter, die nur für die Strecker gelten (etwa @code{Hairpin} oder
+@code{Beam}), die unterschiedliche Höhenberechnungen je nach beginnender und
+endender Note ausgeben können.
+
+Der Rest sind andere Argumente für die erste Funktion (es können auch
+Null sein, wenn @var{n = 1}).
+
+Die Ergebnisse der zweiten Funktion werden als Näherungswert des benötigten
+Wertes benutzt, welche dann von der ersten Funktion eingesetzt wird,
+um den wirklichen Wert auszugeben, mit dem dann sehr viel später im
+Layoutprozess die Platzierung justiert werden soll.
+
+@lilypond[verbatim,quote,ragged-right]
+#(define (square-line-circle-space grob)
+(let* ((pitch (ly:event-property (ly:grob-property grob 'cause) 'pitch))
+      (notename (ly:pitch-notename pitch)))
+ (if (= 0 (modulo notename 2))
+     (make-circle-stencil 0.5 0.0 #t)
+     (make-filled-box-stencil '(0 . 1.0)
+                              '(-0.5 . 0.5)))))
+
+squareLineCircleSpace = {
+  \override NoteHead #'stencil = #square-line-circle-space
+}
+
+smartSquareLineCircleSpace = {
+  \squareLineCircleSpace
+  \override NoteHead #'Y-extent =
+   #(ly:make-unpure-pure-container
+      ly:grob::stencil-height
+      (lambda (grob start end) (ly:grob::stencil-height grob)))
+}
+
+\new Voice \with { \remove "Stem_engraver" }
+\relative c'' {
+  \squareLineCircleSpace
+  cis4 ces cisis c
+  \smartSquareLineCircleSpace
+  cis4 ces cisis c
+}
+@end lilypond
+
+Im ersten Takt weiß die Layoutmaschine ohne den unsauberen-sauberen
+Container nicht die Breite des Notenkopfes und lässt ihn deshalb mit
+den Versetzungszeichen zusammenstoßen.  Im zweiten Takt, mit
+unreinen-reinen Containern, weiß die Layoutmaschine die Breite
+des Notenkopfes und vermeidet den Zusammenstoßf, indem die Zeile
+entsprechend verlängert wird.
+
+Normalerweise können für eine einfache Berechnungen fast identische
+Funktionen für den @qq{unsauberen} und @qq{sauberen} Teil benutzt
+werden, indem nur die Zahl der Argumente und die Reichweite der
+Funktion verändert wird.
+
+@warning{Wenn eine Funktion als @qq{sauber} bezeichnet ist und das aber
+nicht ist, können unerwartete Ergebnisse auftreten.}
+
 
 @node Musikfunktionen benutzen
 @section Musikfunktionen benutzen
@@ -3912,7 +4016,7 @@ beschrieben in @rextend{Musikalische Funktionen}.
 
 @menu
 * Syntax der Ersetzungsfunktion::
-* Beispiele der Ersetzungsfunktion::
+* Beispiele der Ersetzungsfunktionen::
 @end menu
 
 @node Syntax der Ersetzungsfunktion