@c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
@ignore
- Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+ Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
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.14.0"
@c Translators: Till Paala
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.
@rlearning{Kontexte und Engraver}.
Installierte Dateien:
-@file{ly/@/engraver@/-init@/.ly},
-@file{ly/@/performer@/-init@/.ly}.
+@file{ly/engraver-init.ly},
+@file{ly/performer-init.ly}.
Schnipsel:
@rlsr{Contexts and engravers}.
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
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 }
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
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_head_engraver}, der die Notenköpfe erstellt, und ein
+@code{Note_heads_engraver}, der die Notenköpfe erstellt, und ein
@code{Staff}-Kontext einen @code{Key_signature_engraver}, der die
Vorzeichen erstellt.
@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
@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
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
@}
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
Es wurde immer von einem @code{Fingering}-Objekt gesprochen, aber
eigentlich handelt es sich nicht um sehr viel. Die Initialisierungsdatei
-@file{scm/@/define@/-grobs@/.scm} zeigt den Inhalt dieses @qq{Objekts}
+@file{scm/define-grobs.scm} zeigt den Inhalt dieses @qq{Objekts}
(zu Information, wo diese Dateien sich finden siehe
@rlearning{Mehr Information}):
(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
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
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
@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
* Der override-Befehl::
* Der tweak-Befehl::
* set versus override::
+* Alisten verändern::
@end menu
@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
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
@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
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
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
üblicherweise @code{ChordNames}, @code{Voice} oder
@code{Lyrics}.
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
\set Score.autoBeaming = ##f
<<
{
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
Kontext rückgängig. Wenn also im @code{Staff}-Kontext die
Bebalkung ausgeschaltet wird:
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
\set Score.autoBeaming = ##t
<<
{
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
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
+assoziative Liste. Siehe @file{scm/define-grobs.scm} für die
Einstellungen aller Grob-Beschreibungen. Grob-Beschreibungen werden
mit @code{\override} verändert.
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, fragment]
+@lilypond[quote, verbatim, relative=2]
c4 c
\override Voice.Stem #'thickness = #3.0
c4 c
Wenn kein Kontext angegeben wird, wird der tiefste aktuelle Kontext
benutzt:
-@lilypond[quote, verbatim, relative=2, fragment]
+@lilypond[quote, verbatim, relative=2]
{ \override Staff.Stem #'thickness = #3.0
<<
{
Die Auswirkungen von @code{\override} können mit @code{\revert} wieder
rückgängig gemacht werden:
-@lilypond[quote, verbatim, relative=2, fragment]
+@lilypond[quote, verbatim, relative=2]
c4
\override Voice.Stem #'thickness = #3.0
c4 c
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, fragment]
+@lilypond[quote, verbatim, relative=2]
{
<<
{
@code{\once} kann zusammen mit @code{\override} benutzt werden,
um nur den aktuellen Zeitwert zu verändern:
-@lilypond[quote, verbatim, relative=2, fragment]
+@lilypond[quote, verbatim, relative=2]
{
<<
{
ausschalten will, die Probleme verursachen.
@end ignore
+
@seealso
Referenz der Interna:
@subsection @code{\\set} versus @code{\\override}
@translationof set versus override
-TODO: überflüssig?
+@c TODO: überflüssig?
@ignore
Es wurden zwei unterschiedliche Methoden vorgestellt, mit denen
@code{GroßGroß} benannt (beginnen also auch mit einem
Großbuchstaben). Sie beinhalten die Standardeinstellungen
für die besagten graphischen Objekte in Form einer
-Assosiationsliste. Siehe auch die Datei @file{scm/@/define@/-grobs@/.scm}
+Assosiationsliste. Siehe auch die Datei @file{scm/define-grobs.scm}
für ein Beispiel zu diesen Einstellungen. Elementbeschreibungen
können mit dem Befehl @code{\override} verändert werden.
@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{basic-distance} (Grund-Abstand),
+@code{minimum-distance} (minimaler Abstand), @code{padding} (Verschiebung)
+und @code{stretchability} (Dehnbarkeit). Die Standardwerte dieser
+Eigenschaft finden sich im Abschnitt @qq{Backend} der Referenz der
+Interna (siehe @rinternals{StaffGrouper}):
+
+@example
+'((basic-distance . 9)
+ (minimum-distance . 7)
+ (padding . 1)
+ (stretchability . 5))
+@end example
+
+Eine Möglichkeit, die Systemen dichter zueinander zu zwingen,
+ist es, der Wert des @code{basic-distance}-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 {
+ % this is the nested declaration
+ \override StaffGrouper #'staff-staff-spacing #'basic-distance = #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{basic-distance} 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. Man muss jedoch nicht vier
+Werte 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 =
+ #'((basic-distance . 0)
+ (minimum-distance . 0)
+ (padding . 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 =
+ #'((basic-distance . 7))
+
+\override StaffGrouper #'staff-staff-spacing =
+ #'((basic-distance . 7)
+ (minimum-distance . 0)
+ (padding . 0)
+ (stretchability . 7))
+@end example
+
+Eine möglicherweise ungewollte Konsequenz hiervon ist, dass alle
+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
@section Nützliche Konzepte und Eigenschaften
@translationof Useful concepts and properties
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}
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)
skalierbaren Einheiten (siehe folgenden Absatz) definiert
werden, indem man den Befehl @code{\staff-space} an die
Zahl hängt. Das Seitenlayout ist genauer beschrieben in
-@ref{Seitenformatierung}.
+@ref{Seitenlayout}.
Skalierbare Abstände werden immer in Einheiten von
Notenlinienabständen angegeben, oder seltener in halben
@rlearning{Länge und Dicke von Objekten}.
Notationsreferenz:
-@ref{Seitenformatierung},
+@ref{Seitenlayout},
@ref{Die Notensystemgröße einstellen}.
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
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
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
@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
wo kein Zeilenumbruch auftritt oder nach einem Zeilenumbruch.
Die acht möglichen Kombinationen können auch durch vordefinierte
-Funktionen bestimmt werden, welche in der Datei @file{scm/@/output@/-lib@/.scm}
+Funktionen bestimmt werden, welche in der Datei @file{scm/output-lib.scm}
definiert sind. Die letzten drei Spalten der folgenden Tabelle
zeigen an, ob das Layout-Objekt an einer bestimmten Position
sichtbar sein wird oder nicht:
Das kleine Oktavierungssymbol von oktavierten Notenschlüsseln
wird durch das @code{OctavateEight}-Layout-Objekt erstellt.
-Seine Sichtbarkeit wird unabhängig vom @code{Clef}-Objekt
-bestimmt, sodass notwendige Veränderungen von @code{break-visibility}
-sowohl für @code{Clef} als auch für @code{OctavateEight} vorgenommen
-werden müssen, damit derartige Schlüssel entfernt werden.
+Seine Sichtbarkeit wird automatisch vom @code{Clef}-Objekt
+geerbt, sodass Veränderungen von @code{break-visibility}
+des @code{OctavateEight}-Layout-Objekts nicht auch noch
+für unsichtbare Schlüssel zusätzlich vorgenommen werden müssen.
Bei expliziten Schlüsseländerungn kontrolliert die
@code{explicitClefVisibility}-Eigenschaft wohl das
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
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
@ref{Schnittstellen für Programmierer}.
Installierte Dateien:
-@file{scm/@/define@/-grobs@/.scm}.
+@file{scm/define-grobs.scm}.
Schnipsel:
@rlsr{Tweaks and overrides}.
Notationsreferenz:
@ref{Graphische Notation innerhalb einer Textbeschriftung},
@ref{Text formatieren},
-@ref{Text markup commands},
+@ref{Textbeschriftungsbefehle},
@ref{Die Feta-Schriftart}.
@node Beispiele der Ersetzungsfunktionen
-@subsection Beispiele der Ersetzungsfunktionen
+@subsection Beispiele der Ersetzungsfunktionen
@translationof Substitution function examples
Dieser Abschnitt zeigt einige Beispiele von Ersetzungsfunktionen.