]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/de/user/changing-defaults.itely
db22e96db98a60e1fc889a1778e66a08cfb11ea7
[lilypond.git] / Documentation / de / user / changing-defaults.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
2 @c This file is part of lilypond.tely
3 @ignore
4     Translation of GIT committish: 5131c3292d30cabdf08839daa02a006e4d3c96c5
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  See TRANSLATION for details.
8 @end ignore
9
10 @c \version "2.12.0"
11
12 @node Changing defaults
13 @chapter Changing defaults
14
15 Das Ziel von LilyPonds Design ist es, von sich aus gut gesetzte Noten
16 zu produzieren.  Es kann aber trotzdem vorkommen, dass Sie diesen
17 Standardsatz ändern wollen.  Das Layout kann mithilfe einer recht
18 großen Anzahl von @qq{Schaltern und Knöpfen} kontrolliert werden.
19 Sie werden als @qq{Eigenschaften} (engl. properties)  bezeichnet.
20 Eine kurze Einführung und Übung, wie man auf diese Eigenschaften
21 zugreifen kann und sie verändern kann, findet sich im Handbuch
22 zum Lernen, siehe @rlearning{Tweaking output}.  Das Kapitel
23 sollte zuerst gelesen werden.  In diesem Kapitel werden die gleichen
24 Themen behandelt, aber der Schwerpunkt liegt eher auf einer technischen
25 Darstellung.
26
27 @cindex Referenz der Interna
28 @cindex Internals Reference
29
30 Die definitive Beschreibung der unterschiedlichen Einstellmöglichenkeiten
31 findet sich in einem eigenen Dokument: @rinternalsnamed{Top,der Referenz
32 der Interna}.  Diese Referenz zeigt alle Variablen, Funktionen und Optionen,
33 die in LilyPond möglich sind.  Es existiert als ein HTML-Dokumente, das
34 sich 
35 @c leave the @uref as one long line.
36 @uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/user/@/lilypond@/-internals/,on@/-line},
37 aber auch lokal in das LilyPond-Dokumentationspaket integriert lesen lässt.
38
39 Intern benutzt LilyPond Scheme (ein LISP-Dialekt), um eine Infrastruktur
40 zur Verfügung zu stellen.  Wenn Layoutentscheidungen verändert werden
41 sollen, müssen auf die programminternen Prozesse zugegriffen werden,
42 wozu Scheme-Code benötigt wird.  Scheme-Abschnitte werden in einer
43 LilyPond-Quelldatei mit einer Raute @code{#} begonnen (siehe auch
44 @rlearning{Scheme tutorial}).
45
46
47 @menu
48 * Interpretation contexts::
49 * Explaining the Internals Reference::
50 * Modifying properties::
51 * Useful concepts and properties::
52 * Advanced tweaks::
53 @end menu
54
55
56 @node Interpretation contexts
57 @section Interpretation contexts
58
59 Dieser Abschnitt erklärt, was Kontexte sind und wie man sie
60 verändern kann.
61
62 @menu
63 * Contexts explained::
64 * Creating contexts::
65 * Keeping contexts alive::
66 * Modifying context plug-ins::
67 * Changing context default settings::
68 * Defining new contexts::
69 * Aligning contexts::
70 @end menu
71
72
73 @seealso
74 Handbuch zum Lernen:
75 @rlearning{Contexts and engravers}.
76
77 Installierte Dateien:
78 @file{ly/@/engraver@/-init@/.ly},
79 @file{ly/@/performer@/-init@/.ly}.
80
81 Schnipsel:
82 @rlsr{Contexts and engravers}.
83
84 Referenz der Interna:
85 @rinternals{Contexts},
86 @rinternals{Engravers and Performers}.
87
88
89 @node Contexts explained
90 @subsection Contexts explained
91
92 Kontexte sind hierarchisch geordnet:
93
94 @menu
95 * Score - the master of all contexts::
96 * Top-level contexts - staff containers::
97 * Intermediate-level contexts - staves::
98 * Bottom-level contexts - voices::
99 @end menu
100
101 @node Score - the master of all contexts
102 @unnumberedsubsubsec Score - the master of all contexts
103
104 @code{Score} (Partitur) ist der höchste Notationskontext.  Kein anderer Kontext
105 kann einen @code{Score}-Kontext enthalten.  Im Normalfall kümmert
106 sich der @code{Score}-Kontext um die Verwaltung der Taktarten und sorgt
107 dafür, dass Elemente wie Schlüssel und Taktart- oder Tonartbezeichnungen
108 über die Systeme hinweg aneinander ausgerichtet sind.
109
110 Ein @code{Score}-Kontext wird eingerichtet, wenn eine
111 @code{\score @{@dots{}@}} oder @code{\layout @{@dots{}@}}-Umgebung
112 interpretiert wird, oder explizit mit dem @code{\new Score}-Befehl.
113
114
115 @node Top-level contexts - staff containers
116 @unnumberedsubsubsec Top-level contexts - staff containers
117
118 @c Remark for German translation
119 Diese Kontexte fassen Systeme zu Gruppen zusammen und werden darum hier
120 als Systemgruppen bezeichnet (engl. staffgroup).
121
122 @strong{@emph{StaffGroup}}
123
124 Gruppiert Systeme und fügt eine eckige Klammer auf der linken Seite
125 hinzu.  Die Taktstriche der enthaltenen Systeme werden vertikal
126 miteinander verbunden. @code{StaffGroup} besteht nur aus einer Ansammlung
127 von Systemen mit einer eckigen Klammer zu Beginn der Zeile und
128 durchgezogenen Taktstriche.
129
130 @strong{@emph{ChoirStaff}}
131
132 Entspricht @code{StaffGroup}, außer dass die Taktstriche der enthaltenen
133 Systeme nicht vertikal miteinander verbunden sind.
134
135 @strong{@emph{GrandStaff}}
136
137 Gruppiert Systeme mit einer geschweiften Klammer zur Linken.  Die
138 Taktlinien der enthaltenen Systeme werden vertikal verbunden.
139
140 @strong{@emph{PianoStaff}}
141
142 Entspricht @code{GrandStaff}, hat aber zusätzlich Unterstützung für
143 Instrumentenbezeichnungen zu Beginn jeder Systemgruppe.
144
145
146 @node Intermediate-level contexts - staves
147 @unnumberedsubsubsec Intermediate-level contexts - staves
148
149 Diese Kontexte stellen verschiedene Arten einzelner Notationssysteme
150 (engl. staff) dar.
151
152 @strong{@emph{Staff}}
153
154 Kümmert sich um Schlüssel, Taktstriche, Tonarten und Versetzungszeichen.
155 Er kann @code{Voice}-Kontexte enthalten.
156
157 @strong{@emph{RhythmicStaff}}
158
159 Entspricht @code{Staff}, aber dient zur Notation von Rhythmen: Tonhöhen
160 werden ignoriert und die Noten auf einer einzigen Linie ausgegeben.
161
162 @strong{@emph{TabStaff}}
163
164 Ein Kontext um Tabulaturen zu erstellen.  Die Standardeinstellung ist
165 eine Gitarrentabulatur mit sechs Notenlinien.
166
167 @strong{@emph{DrumStaff}}
168
169 Ein Kontext zur Notation von Perkussion.  Er kann
170 @code{DrumVoice}-Kontexte enthalten.
171
172 @strong{@emph{VaticanaStaff}}
173
174 Entspricht @code{Staff}, aber eignet sich besondert zum Notensatz des
175 Gregorianischen Chorals.
176
177 @strong{@emph{MensuralStaff}}
178
179 Entspricht @code{Staff}, aber eignet sich zum Notensatz von Noten in
180 der Mensuralnotation.
181
182
183 @node Bottom-level contexts - voices
184 @unnumberedsubsubsec Bottom-level contexts - voices
185
186 Stimmen-(@code{Voice}-Kontexte initialisieren bestimmte Eigenschaften
187 und laden bestimmte Engraver.  Weil es sich bei Stimmen um die
188 untersten Kontexte handelt, können sie keine weiteren Kontexte enthalten.
189
190 @strong{@emph{Voice}}
191
192 Entspricht einer Stimme auf einem Notensystem.  Der Kontext kümmert sich
193 um die Umsetzung von Noten, Dynamikzeichen, Hälsen, Balken, diversen Texten,
194 Bögen und Pausen.  Wenn mehr als eine Stimme pro System benötigt wird,
195 muss dieser Kontext explizit initialisiert werden.
196
197 @strong{@emph{VaticanaVoice}}
198
199 Entspricht @code{Voice}, aber eignet sich besonders zum Notensatz
200 des Gregorianischen Chorals.
201
202 @strong{@emph{MensuralVoice}}
203
204 Entspricht @code{Voice}, aber mit Änderungen, um Mensuralnotation
205 setzen zu können.
206
207 @strong{@emph{Lyrics}}
208
209 Entspricht einer Stimme mit Gesangstext.  Kümmert sich um den Satz
210 des Gesangstextes auf einer Zeile.
211
212 @strong{@emph{DrumVoice}}
213
214 Der Stimmenkontext in einem Perkussionssystem.
215
216 @strong{@emph{FiguredBass}}
217
218 Der Kontext, in dem Generalbassziffern (@code{BassFigure}-Objekte)
219 gesetzt werden, die in der @code{\figuremode}-Umgebung
220 notiert werden.
221
222 @strong{@emph{TabVoice}}
223
224 Dieser Stimmenkontext wird in einer Tabulatur (@code{TabStaff}-Kontext)
225 benutzt.  Er wird normalerweise implizit erstellt.
226
227 @strong{@emph{ChordNames}}
228
229 Ausgabe von Akkordsymbolen.
230
231
232 @node Creating contexts
233 @subsection Creating contexts
234
235 In Partituren mit einer Stimme und einem System werden die Kontexte
236 normalerweise automatisch erstellt.  In komplizierteren Partituren
237 muss man sie aber direkt erstellen.  Es gibt drei Möglichkeiten,
238 Kontexte zu erstellen:
239
240 @funindex \new
241 @funindex \context
242 @funindex new
243 @funindex context
244
245 @cindex neue Kontexte
246 @cindex Kontexte erstellen
247 @cindex eigene Kontexte erstellen
248
249 @itemize
250
251 @item
252 Der einfachste Befehl ist @code{\new}.  Er wird zusammen mit dem
253 Kontextnamen vor einem musikalischen Ausdruck eingesetzt, etwa
254
255 @example
256 \new @var{Kontext} @var{musik. Ausdruck}
257 @end example
258
259 @noindent
260 wobei @var{Kontext} eine Kontextbezeichnung (wie @code{Staff} oder
261 @code{Voice}) ist.  Dieser Befehl erstellt einen neuen Kontext und
262 beginnt mit der Auswertung von @var{musik. Ausdruck} innerhalb
263 dieses Kontextes.
264
265 Eine praktische Anwendung von @code{\new} ist eine Partitur mit vielen
266 Systemen.  Jede Stimme wird auf einem eigenen System notiert, das
267 mit @code{\new Staff} begonnen wird.
268
269 @lilypond[quote,verbatim,relative=2,ragged-right,fragment]
270 <<
271   \new Staff { c4 c }
272   \new Staff { d4 d }
273 >>
274 @end lilypond
275
276 Der @code{\new}-Befehl kann den Kontext auch benennen:
277
278 @example
279 \new @var{Kontext} = @var{ID} @var{musik. Ausdruck}
280 @end example
281
282 Dieser vom Benutzer definierte Name wird aber auch nur wirklich
283 benutzt, wenn nicht vorher schon der gleiche Name definiert worden
284 ist.
285
286 @item
287 Ähnlich dem @code{\new}-Befehl wird auch mit dem @code{\context}-Befehl
288 ein musikalischer Ausdruck in einen Kontext umgeleitet.  Diesem
289 Kontext wird ein expliziter Name zugewiesen.  Die Syntax lautet:
290
291 @example
292 \context @var{Kontext} = @var{ID} @var{musik. Ausdruck}
293 @end example
294
295 Diese Art von Befehl sucht nach einem existierenden Kontext vom Typus
296 @var{Kontext} mit der Bezeichnung @var{ID}.  Wenn ein derartiger
297 Kontext nicht existiert, wird ein neuer Kontext mit der entsprechenden
298 Bezeichnung erstellt.  Das ist nützlich, wenn auf den Kontext später
299 zurückverwiesen werden soll.  Um etwa Gesangstext zu einer Melodie
300 hinzuzufügen, wird die Melodie in einem bezeichneten Kontext
301 notiert:
302
303 @example
304 \context Voice = "@b{Tenor}" @var{musik. Ausdruck}
305 @end example
306
307 @noindent
308 sodass der Text an den Noten ausgerichtet werden kann:
309
310 @example
311 \new Lyrics \lyricsto "@b{Tenor}" @var{Gesangstext}
312 @end example
313
314
315 Eine andere Möglichkeit für bezeichnete Kontexte ist es, zwei
316 unterschiedliche musikalische Ausdrücke in einen Kontext zu
317 verschmelzen.  Im nächsten Beispiel werden Artikulationszeichen
318 und Noten getrennt notiert:
319
320 @example
321 Noten = @{ c4 c4 @}
322 Artik = @{ s4-. s4-> @}
323 @end example
324
325 @noindent
326 Dann werden sie kombiniert, indem sie dem selben @code{Voice}-Kontext
327 zugewiesen werden:
328
329 @example
330 <<
331   \new Staff \context Voice = "A" \Noten
332   \context Voice = "A" \Artik
333 >>
334 @end example
335
336 @lilypond[quote,ragged-right]
337 music = { c4 c4 }
338 arts = { s4-. s4-> }
339 \relative c'' <<
340   \new Staff \context Voice = "A" \music
341   \context Voice = "A" \arts
342 >>
343 @end lilypond
344
345 Durch diesen Mechanismus ist es möglich eine Urtextausgabe zu
346 erstellen, mit der optionalen Möglichkeit, besimmte zusätzliche
347 Artikulationszeichen zu den gleichen Noten hinzuzufügen und so
348 eine editierte Ausgabe zu erhalten.
349
350 @item
351 Der dritte Befehl, um Kontexe zu erstellen, ist:
352
353 @example
354 \context @var{Kontext} @var{musik. Ausdruck}
355 @end example
356
357 @noindent
358 Dies entspricht dem @code{\context} mit @code{= @var{ID}}, aber hier
359 wird ein belieber Kontext des Typs @var{Kontext} gesucht und der
360 musikalische Ausdruck darin ausgewertet, unabhängig von der Bezeichnung,
361 die dem Kontext gegeben wurde.
362
363 Diese Variante wird bei musikalischen Ausdrücken benutzt, die auf
364 verschiedenen Ebenen interpretiert werden können.  Beispielsweise
365 der @code{\applyOutput}-Befehl (siehe
366 @ref{Running a function on all layout objects}).  Ohne einen
367 expliziten @code{\context} wird die Ausgabe normalerweise einem
368 @code{Voice}-Kontext zugewiesen:
369
370 @example
371 \applyOutput #'@var{Kontext} #@var{Funktion}   % auf Voice anwenden
372 @end example
373
374 Damit aber die Funktion auf @code{Score}- oder @code{Staff}-Ebene
375 interpretiert wird, muss folgende Form benutzt werden:
376
377 @example
378 \applyOutput #'Score #@var{Funktion}
379 \applyOutput #'Staff #@var{Funktion}
380 @end example
381
382 @end itemize
383
384
385
386 @node Keeping contexts alive
387 @subsection Keeping contexts alive
388
389 @cindex Kontexte, am Leben erhalten
390 @cindex Kontexte, Lebensdauer
391
392 Kontexte werden normalerweise am ersten musikalischen Moment
393 beendet, an dem sie nichts mehr zu tun haben.  Ein
394 @code{Voice}-Kontext stirbt also sofort, wenn keine Ereignisse
395 mehr auftreten, @code{Staff}-Kontexte sobald alle in ihnen
396 enthaltenen @code{Voice}-Kontexte keine Ereignisse mehr aufweisen
397 usw.  Das kann Schwierigkeiten ergeben, wenn auf frühere
398 Kontexte verwiesen werden soll, die in der Zwischenzeit schon
399 gestorben sind, beispielsweise wenn man Systemwechsel mit
400 @code{\change}-Befehlen vornimmt, wenn Gesangstext einer
401 Stimme mit dem @code{\lyricsto}-Befehl zu gewiesen wird oder
402 wenn weitere musikalische Ereignisse zu einem früheren Kontext
403 hinzugefügt werden sollen.
404
405 Es gibt eine Ausnahme dieser Regel: genau ein @code{Voice}-Kontext
406 innerhalb eines @code{Staff}-Kontextes oder in einer
407 @code{<<...>>}-Konstruktion bleibt immer erhalten bis zum Ende
408 des @code{Staff}-Kontextes oder der @code{<<...>>}-Konstruktion, der ihn einschließt, auch wenn es Abschnitte gibt, in der er nichts zu
409 tun hat.  Der Kontext, der erhalten bleibt ist immer der erste,
410 der in der ersten enthaltenden @code{@{...@}}-Konstruktion
411 angetroffen wird, wobei @code{<<...>>}-Konstruktionen ignoriert
412 werden.
413
414 Jeder Kontext kann am Leben gehalten werden, indem man sicherstellt
415 dass er zu jedem musikalischen Moment etwas zu tun hat.  
416 @code{Staff}-Kontexte werden am Leben gehalten, indem man sicherstellt,
417 dass eine der enthaltenen Stimmen am Leben bleibt.  Eine Möglichkeit,
418 das zu erreichen, ist es, unsichtbare Pause zu jeder Stimme
419 hinzuzufügen, die am Leben gehalten werden soll.  Wenn mehrere
420 Stimmen sporadisch benutzt werden sollen, ist es am sichersten,
421 sie alle am Leben zu halten und sich nicht auf die Ausnahmeregel
422 zu verlassen, die im vorigen Abschnitt dargestellt wurde.
423
424 Im folgenden Beispiel werden sowohl Stimme A als auch B auf diese
425 Weise für die gesamte Dauer des Stückes am Leben gehalten.
426
427 @lilypond[quote,verbatim]
428 musicA = \relative c'' { d4 d d d }
429 musicB = \relative c'' { g4 g g g }
430 keepVoicesAlive = {
431   <<
432     \new Voice = "A" { s1*5 }  % Keep Voice "A" alive for 5 bars
433     \new Voice = "B" { s1*5 }  % Keep Voice "B" alive for 5 bars
434   >>
435 }
436
437 music = {
438   \context Voice = "A" {
439     \voiceOneStyle
440     \musicA
441   }
442   \context Voice = "B" {
443     \voiceTwoStyle
444     \musicB
445   }
446   \context Voice = "A" { \musicA }
447   \context Voice = "B" { \musicB }
448   \context Voice = "A" { \musicA }
449 }
450
451 \score {
452   \new Staff <<
453     \keepVoicesAlive
454     \music
455   >>
456 }
457 @end lilypond
458
459 @cindex Gesangstext, an einer sporadischen Melodie ausrichten
460
461 Das nächste Beispiel zeigt eine Melodie, die zeitweise unterbrochen
462 wird und wie man den entsprechenden Gesangstext mit ihr verknüpfen
463 kann, indem man die Stimme am Leben hält.  In wirklichen Situationen
464 würden Begleitung und Melodie natürlich aus mehreren Abschnitten bestehen.
465
466 @lilypond[quote,verbatim]
467 melody = \relative c'' { a4 a a a }
468 accompaniment = \relative c' { d4 d d d }
469 words = \lyricmode { These words fol -- low the mel -- o -- dy }
470 \score {
471   <<
472     \new Staff = "music" {
473       <<
474         \new Voice = "melody" {
475           \voiceOne
476           s1*4  % Keep Voice "melody" alive for 4 bars
477         }
478         {
479           \new Voice = "accompaniment" {
480             \voiceTwo
481             \accompaniment
482           }
483           <<
484             \context Voice = "melody" { \melody }
485             \context Voice = "accompaniment" { \accompaniment }
486           >>
487           \context Voice = "accompaniment" { \accompaniment }
488           <<
489             \context Voice = "melody" { \melody }
490             \context Voice = "accompaniment" { \accompaniment }
491           >>
492         }
493       >>
494     }
495     \new Lyrics \with { alignAboveContext = #"music" }
496     \lyricsto "melody" { \words }
497   >>
498 }
499 @end lilypond
500
501 Eine Alternative, die in manchen Umständen besser geeignet sein kann,
502 ist es, einfach unsichtbare Pausen einzufügen, um die Melodie
503 mit der Begleitung passend auszurichten:
504
505 @lilypond[quote,verbatim]
506 melody = \relative c'' {
507   s1  % skip a bar
508   a4 a a a
509   s1  % skip a bar
510   a4 a a a
511 }
512 accompaniment = \relative c' {
513   d4 d d d
514   d4 d d d
515   d4 d d d
516   d4 d d d
517 }
518 words = \lyricmode { These words fol -- low the mel -- o -- dy }
519
520 \score {
521   <<
522     \new Staff = "music" {
523       <<
524         \new Voice = "melody" {
525           \voiceOne
526           \melody
527         }
528         \new Voice = "accompaniment" {
529           \voiceTwo
530           \accompaniment
531         }
532       >>
533     }
534     \new Lyrics \with { alignAboveContext = #"music" }
535     \lyricsto "melody" { \words }
536   >>
537 }
538 @end lilypond
539
540
541
542 @node Modifying context plug-ins
543 @subsection Modifying context plug-ins
544
545 Notationskontexte (wie @code{Score} oder @code{Staff}) speichern
546 nicht nur Eigenschaften, sie enthalten auch Plugins (@qq{engraver}
547 genannt), die die einzelnen Notationselemente erstellen.  Ein
548 @code{Voice}-Kontext enthält beispielsweise einen
549 @code{Note_head_engraver}, der die Notenköpfe erstellt, und ein
550 @code{Staff}-Kontext einen @code{Key_signature_engraver}, der die
551 Vorzeichen erstellt.
552
553 Eine vollständige Erklärung jedes Plugins findet sich in
554 @ifhtml
555 @rinternals{Engravers and Performers}.
556 @end ifhtml
557 @ifnothtml
558 Refernz der Interna: @expansion{} Translation @expansion{} Engravers.
559 @end ifnothtml
560 Alle Kontexte sind erklärt in
561 @ifhtml
562 @rinternals{Contexts}
563 @end ifhtml
564 @ifnothtml
565 Referenz der Interna: @expansion{} Translation @expansion{} Context.
566 @end ifnothtml
567
568 Es kann teilweise nötig sein, diese Engraver umzupositionieren.  Das
569 geschieht, indem man einen neuen Kontext mit @code{\new} oder
570 @code{\context} beginnt und ihn dann verändert:
571
572 @funindex \with
573 @funindex with
574
575 @example
576 \new @var{context} \with @{
577   \consists @dots{}
578   \consists @dots{}
579   \remove @dots{}
580   \remove @dots{}
581   @emph{etc.}
582 @}
583 @{
584   @emph{..Noten..}
585 @}
586 @end example
587
588 @noindent
589 @dots{} steht hier für die Bezeichnung des Engravers.  @code{\consists}
590 fügt einen Engraver hinzu und @code{\remove} entfernt ihn.
591 Es folgt ein einfaches Beispiel, in dem der
592 @code{Time_signature_engraver} (Engraver für den Takt) und der
593 @code{Clef_engraver} (Engraver für den Schlüssel) aus dem
594 @code{Staff}-Kontext entfernt werden:
595
596 @lilypond[quote,relative=1,verbatim,fragment]
597 <<
598   \new Staff {
599     f2 g
600   }
601   \new Staff \with {
602      \remove "Time_signature_engraver"
603      \remove "Clef_engraver"
604   } {
605     f2 g2
606   }
607 >>
608 @end lilypond
609
610 Das zweite Notensystem enthält keine Taktangabe und keinen Notenschlüssel.
611 Das ist eine recht brutale Methode, Objekte zu verstecken, weil es sich
612 auf das gesamte System auswirkt.  Diese Methode beeinflusst auch die
613 Platzaufteilung, was erwünscht sein kann.  Vielfältigere Methoden,
614 mit denen Objekte unsichtbar gemacht werden können, finden sich in
615 @rlearning{Visibility and color of objects}.
616
617 Das nächste Beispiel zeigt eine Anwendung in der Praxis.  Taktstriche
618 und Taktart werden normalerweise in einer Paritur synchronisiert.  Das
619 geschieht durch @code{Timing_translator} und @code{Default_bar_line_engraver}.
620 Diese Plugins sorgen sich um die Verwaltung der Taktzeiten und die
621 Stelle innerhalb des Taktes, zu dem eine Note erscheint usw.  Indem
622 man diese Engraver aus dem @code{Score}-Kontext in den @code{Staff}-Kontext
623 verschiebt, kann eine Partitur erstellt werden, in welcher
624 jedes System eine unterschiedliche Taktart hat:
625
626 @cindex polymetrische Partitur
627 @cindex Taktarten, mehrere in Partitur
628 @cindex Taktarten, unterschiedliche per System
629
630 @lilypond[quote,relative=1,ragged-right,verbatim,fragment]
631 \new Score \with {
632   \remove "Timing_translator"
633   \remove "Default_bar_line_engraver"
634 } <<
635   \new Staff \with {
636     \consists "Timing_translator"
637     \consists "Default_bar_line_engraver"
638   } {
639       \time 3/4
640       c4 c c c c c
641   }
642   \new Staff \with {
643     \consists "Timing_translator"
644     \consists "Default_bar_line_engraver"
645   } {
646        \time 2/4
647        c4 c c c c c
648   }
649 >>
650 @end lilypond
651
652 @knownissues
653
654 Normalerweise spielt es keine Rolle, in welcher Reihenfolge
655 Engraver angegeben werden, aber in einigen Spezialfällen
656 ist die Reihenfolge sehr wichtig.  Das kann beispielsweise
657 vorkommen, wenn ein Engraver eine Eigenschaft erstellt und
658 ein anderer von ihr liest, oder ein Engraver erstellt ein
659 Grob und ein anderer wertet es aus.  Die Reihenfolge, in der
660 Engraver angegeben werden, ist die Reihenfolge, in der sie
661 aufgerufen werden, um ihre Tätigkeiten auszuführen.
662
663 Folgende Reihenfolgen müssen beachtet werden: der
664 @code{Bar_engraver} muss normalerweise zuerst kommen, und
665 der @code{New_fingering_engraver} muss vor dem
666 @code{Script_column_engraver} kommen.  Es gibt möglicherweise weitere
667 Abhängigkeiten von der Reihenfolge geben.
668
669
670 @node Changing context default settings
671 @subsection Changing context default settings
672
673 Die Kontexteinstellungen, die standardmäßig in
674 @code{Score}, @code{Staff} und @code{Voice}-Kontexten
675 benutzt werden, können in einer @code{\layout}-Umgebung
676 eingestellt werden, wie das folgende Beispiel zeigt.  Die
677 @code{\layout}-Umgebung sollte innerhalb der
678 @code{\score}-Umgebung gesetzt werden, auf die sie sich
679 auswirken soll, aber außerhalb von Notation.
680
681 Auch muss der @code{\set}-Befehl und der Kontext weggelassen
682 werden, wenn die Einstellungen für den Kontext auf diese Weise
683 vorgenommen werden:
684
685 @lilypond[quote,verbatim]
686 \score {
687   \relative c'' {
688     a4^"Really small, thicker stems, no time signature" a a a
689     a a a a
690   }
691   \layout {
692     \context {
693       \Staff
694       fontSize = #-4
695       \override Stem #'thickness = #4.0
696       \remove "Time_signature_engraver"
697     }
698   }
699 }
700 @end lilypond
701
702 Hier zeigt der @code{\Staff}-Befehl an, dass die folgenden Einstellungen
703 sich auf alle Systeme in dieser Partitur erstrecken sollen.
704
705 Veränderungen können auch für den @code{Score}- oder alle
706 @code{Voice}-Kontexte auf gleiche Weise vorgenommen werden.
707
708 @knownissues
709
710 Es ist nicht möglich, Kontextänderungen als Variable zu definieren und
711 sie dann in der @code{\context}-Definition anzuwenden, indem man die
712 Variable aufruft.
713
714 Der Befehl @code{\RemoveEmptyStaffContext} überschreibt die
715 aktuellen Einstellungen für @code{Staff}.  Wenn die Einstellungen
716 für Systeme verändert werden sollen, die @code{\RemoveEmptyStaffContext}
717 benutzen, muüssen die Veränderungen gemacht werden, nachdem
718 @code{\RemoveEmptyStaffContext} aufgerufen wurde, etwa:
719
720 @example
721 \layout @{
722   \context @{
723     \RemoveEmptyStaffContext
724
725     \override Stem #'thickness = #4.0
726   @}
727 @}
728 @end example
729
730
731 @node Defining new contexts
732 @subsection Defining new contexts
733
734 Bestimme Kontexte, wie @code{Staff} oder @code{Voice}, werden
735 erstellt, indem man sie mit einer Musikumgebung aufruft.  Es ist
736 aber auch möglich, eigene neue Kontexte zu definieren, in denen
737 dann unterschiedliche Engraver benutzt werden.
738
739 Das folgende Beispiel zeigt, wie man etwa @code{Voice}-Kontexte
740 von Grund auf neu bauen kann.  Ein derartiger Kontext ähnelt
741 @code{Voice}, es werden aber nur zentrierte Schrägstriche als
742 Notenköpfe ausgegeben.  Das kann benutzt werden, um Improvisation
743 in Jazzmusik anzuzeigen.
744
745 @c KEEP LY
746 @lilypond[quote,ragged-right]
747 \layout { \context {
748   \name ImproVoice
749   \type "Engraver_group"
750   \consists "Note_heads_engraver"
751   \consists "Rhythmic_column_engraver"
752   \consists "Text_engraver"
753   \consists Pitch_squash_engraver
754   squashedPosition = #0
755   \override NoteHead #'style = #'slash
756   \override Stem #'transparent = ##t
757   \alias Voice
758 }
759 \context { \Staff
760   \accepts "ImproVoice"
761 }}
762
763 \relative c'' {
764   a4 d8 bes8 \new ImproVoice { c4^"ad lib" c
765    c4 c^"ausziehen" c_"während des Spiels :)" c }
766   a1
767 }
768 @end lilypond
769
770 Diese Einstellungen werden innerhalb der @code{\context}-Umgebung
771 innerhalb der @code{\layout}-Umgebung definiert:
772
773 @example
774 \layout @{
775   \context @{
776     @dots{}
777   @}
778 @}
779 @end example
780
781 Der Beispielcode des folgenden Abschnittest muss anstelle der Punkte
782 im vorigen Beispiel eingesetzt werden.
783
784 Zuerst ist es nötig eine Bezeichnung für den neuen Kontext zu
785 definieren:
786
787 @example
788 \name ImproVoice
789 @end example
790
791 Weil dieser neue Kontext ähnlich wie @code{Voice} ist, sollen die Befehle,
792 die in @code{Voice}-Kontexten funktionieren, auch
793 in dem neuen Kontext funktionieren.  Das wird erreicht, indem der
794 Kontext als Alias @code{Voice} erhält:
795
796 @example
797 \alias Voice
798 @end example
799
800 Der Kontext gibt Noten und Text aus, darum müssen wir die Engraver
801 hinzufügen, die für diese Aktionen zuständig sind:
802
803 @example
804 \consists Note_heads_engraver
805 \consists Text_engraver
806 @end example
807
808 @noindent
809 aber die Noten sollen nur auf der mittleren Linie ausgegeben werden:
810
811 @example
812 \consists Pitch_squash_engraver
813 squashedPosition = #0
814 @end example
815
816 Der @code{Pitch_squash_engraver} verändert Notenköpfe (die vom
817 @code{Note_heads_engraver} erstellt werden) und setzt ihre vertikale
818 Position auf den Wert von @code{squashedPosition}, in diesem Fall ist
819 das die Mittellinie.
820
821 Die Noten sehen wie ein Querstrich aus und haben keine Hälse:
822
823 @example
824 \override NoteHead #'style = #'slash
825 \override Stem #'transparent = ##t
826 @end example
827
828 Alle diese Engraver müssen zusammenarbeiten, und das wird erreicht mit
829 einem zusätzlichen Plugin, das mit dem Befehl @code{\type} gekennzeichnet
830 werden muss.  Dieser Typ solle immer @code{Engraver_group} lauten:
831
832 @example
833 \type "Engraver_group"
834 @end example
835
836 Alles zusammen haben wir folgende Einstellungen:
837
838 @example
839 \context @{
840   \name ImproVoice
841   \type "Engraver_group"
842   \consists "Note_heads_engraver"
843   \consists "Text_engraver"
844   \consists Pitch_squash_engraver
845   squashedPosition = #0
846   \override NoteHead #'style = #'slash
847   \override Stem #'transparent = ##t
848   \alias Voice
849 @}
850 @end example
851
852 @funindex \accepts
853 @funindex accepts
854
855 Kontexte sind hierarchisch.  Wie wollen, dass @code{ImproVoice}
856 sich als Unterkontext von @code{Staff} erkennt, wie eine normale
857 Stimme.  Darum wird die Definition von @code{Staff} mit dem
858 @code{\accepts}-Befehl verändert:
859
860 @example
861 \context @{
862   \Staff
863   \accepts ImproVoice
864 @}
865 @end example
866
867 @funindex \denies
868 @funindex denies
869
870 Das Gegenteil von @code{\accepts} ist @code{\denies} (verbietet), was
871 manchmal gebraucht werden kann, wenn schon existierende Kontext-Definitionen
872 wieder benutzt werden sollen.
873
874 Beide Definitionen müssen in die @code{\layout}-Umgebung geschrieben
875 werden:
876
877 @example
878 \layout @{
879   \context @{
880     \name ImproVoice
881     @dots{}
882   @}
883   \context @{
884     \Staff
885     \accepts "ImproVoice"
886   @}
887 @}
888 @end example
889
890 Jetzt kann die Notation zu Beginn des Abschnitts folgendermaßen
891 notiert werden:
892
893 @example
894 \relative c'' @{
895   a4 d8 bes8
896   \new ImproVoice @{
897     c4^"ad lib" c
898     c4 c^"ausziehen"
899     c c_"während des Spielens :)"
900   @}
901   a1
902 @}
903 @end example
904
905
906 @node Aligning contexts
907 @subsection Aligning contexts
908
909 Neue Kontexte können über oder unter existierenden ausgerichtet
910 werden.  Das kann nützlich sein, wenn man eine Chorparitur
911 oder Ossia schreiben will:
912
913 @cindex Ossia
914
915 @funindex alignAboveContext
916 @funindex alignBelowContext
917
918 @lilypond[quote,ragged-right]
919 ossia = { f4 f f f }
920 \score{
921   \relative c' \new Staff = "main" {
922     c4 c c c
923     <<
924       \new Staff \with { alignAboveContext = #"main" } \ossia
925       { d8 f d f d f d f }
926     >>
927   }
928 }
929 @end lilypond
930
931 @cindex verschachtelte Kontexte
932 @cindex Kontexte, verschachtelt
933
934 @funindex \accepts
935 @funindex accepts
936 @funindex \denies
937 @funindex denies
938
939 Kontexte wie @code{PianoStaff} können andere Kontexte innerhalb
940 enthalten.  Kontexte, die als innere Kontexte akzeptiert werden,
941 werden in einer @qq{accepts}-Liste für den bestimmten Kontext
942 definiert.  Kontexte, die sich nicht in dieser Liste finden,
943 werden unter den äußeren Kontext gesetzt.  Der
944 @code{PianoStaff}-Kontext etwa akzeptiert die Kontexte @code{Staff}
945 und @code{FiguredBass} innerhalb, aber beispielsweise keinen
946 @code{Lyrics}-(Gesangstext)-Kontext.  In dem folgenden Beispiel
947 wird deshalb der Gesangstext unter das gesamte Klaviersystem
948 gesetzt, anstatt zwischen die beiden Notensysteme zu kommen:
949
950 @lilypond[verbatim,quote,relative=1]
951 \new PianoStaff
952 <<
953   \new Staff { e4 d c2 }
954   \addlyrics { Three blind mice }
955   \new Staff {
956     \clef "bass"
957     { c,1 }
958   }
959 >>
960 @end lilypond
961
962 Die @qq{accepts}-Liste eines Kontextes kann verändert werden, so
963 dass sie weitere innere Kontexte akzeptiert.  Wenn also der
964 Gesangstext als Teil eines Klaviersystems gesetzt werden soll,
965 müsste man schreiben:
966
967 @lilypond[verbatim,quote,relative=1]
968 \new PianoStaff \with { \accepts Lyrics }
969 <<
970   \new Staff { e4 d c2 }
971   \addlyrics { Three blind mice }
972   \new Staff {
973     \clef "bass"
974     { c,1 }
975   }
976 >>
977 @end lilypond
978
979 Das Gegenteil von @code{\accepts} ist @code{\denies}; es bedeutet,
980 dass ein Kontext aus der @code{\accepts}-Liste gestrichen wird.
981
982
983 @node Explaining the Internals Reference
984 @section Explaining the Internals Reference
985
986 @menu
987 * Navigating the program reference::
988 * Layout interfaces::
989 * Determining the grob property::
990 * Naming conventions::
991 @end menu
992
993
994 @node Navigating the program reference
995 @subsection Navigating the program reference
996
997 Arbeit mit der Referenz der Interna soll hier an
998 einigen Beispiel illustriert werden.  Die Referenz
999 der Interna existiert nur auf Englisch,
1000 darum sind auch die Beispiele dieses Abschnittes nicht
1001 übersetzt.
1002
1003 Folgende Aufgabe wird bearbeitet:  Der Fingersatz aus dem Beispiel
1004 unten soll verändert werden:
1005
1006 @lilypond[quote,fragment,relative=2,verbatim]
1007 c-2
1008 \stemUp
1009 f
1010 @end lilypond
1011
1012 In der Dokumentation über Fingersatz (
1013 @ref{Fingering instructions}) gibt es folgenden Abschnitt:
1014
1015 @quotation
1016 @strong{Siehe auch:}
1017
1018 Referez der Interna: @rinternals{Fingering}.
1019
1020 @end quotation
1021
1022 Gehen Sie über diesen Link zum Abschnitt @rinternals{Fingering}.
1023 Oben auf der Seite findet sich:
1024
1025 @quotation
1026 Fingering objects are created by: @rinternals{Fingering_engraver} and
1027 @rinternals{New_fingering_engraver}.
1028 @end quotation
1029
1030 Indem Sie die Links in der Referenz der Interna folgen, können Sie
1031 verfolgen, wie LilyPond intern arbeitet:
1032
1033 @itemize
1034
1035 @item @rinternals{Fingering}:
1036 @rinternals{Fingering} objects are created by:
1037 @rinternals{Fingering_engraver}
1038
1039 @item @rinternals{Fingering_engraver}:
1040 Music types accepted: @rinternals{fingering-event}
1041
1042 @item @rinternals{fingering-event}:
1043 Music event type @code{fingering-event} is in Music expressions named
1044 @rinternals{FingeringEvent}
1045 @end itemize
1046
1047 Fingersatz-Objekte werden also durch den @code{Fingering_engraver}
1048 erstellt, welcher folgende Musikereignistypen akzeptiert:
1049 @code{fingering-event}.  Ein Musikereignis vom Typ
1050 @code{fingering-event} ist ein musikalischer Ausdruck mit der
1051 Bezeichnung @rinternals{FingeringEvent}.
1052
1053 Dieser Pfad geht genau die entgegengesetzte Richtung von LilyPonds
1054 Wirkungsweise: er beginnt bei der graphischen Ausgabe und
1055 arbeitet sich voran zur Eingabe.  Man könnte auch mit einem
1056 Eingabe-Ereignis starten und dann die Links zurückverfolgen,
1057 bis man zum Ausgabe-Objekt gelangt.
1058
1059 Die Referenz der Interna kann auch wie ein normales Dokument
1060 durchsucht werden.  Sie enthält Kapitel über
1061 @ifhtml
1062 @rinternals{Music definitions},
1063 @end ifhtml
1064 @ifnothtml
1065 @code{Music definitions},
1066 @end ifnothtml
1067 über @rinternals{Translation} und @rinternals{Backend}.  Jedes
1068 Kapitel listet alle die Definitionen und Eigenschaften auf,
1069 die benutzt und verändert werden können.
1070
1071
1072 @node Layout interfaces
1073 @subsection Layout interfaces
1074
1075 @cindex Layout-Schnittstelle
1076 @cindex Schnittstellt, Layout-
1077 @cindex Grob
1078
1079 Die HTML-Seite, die im vorigen Abschnitt betrachtet wurde,
1080 beschreibt ein Layoutobjekt mit der Bezeichnung
1081 @code{Fingering}.  Ein derartiges Objekt ist ein Symbol
1082 in der Paritur.  Es hat Eigenschaften, die bestimmte
1083 Zahlen speichern (wie etwa Dicke und Richtung), aber auch
1084 Weiser auf verwandte Objekte.  Ein Layoutobjekt wird auch
1085 als @qq{Grob} bezeichnet, die Abkürzung für @emph{Gr}aphisches
1086 @emph{Ob}jekt.  Mehr Information zu Grobs findet sich in
1087 @rinternals{grob-interface}.
1088
1089 Die Seite zu @code{Fingering} enthält Definitionen für das
1090 @code{Fingering}-Objekt.  Auf der Seite steht etwa:
1091
1092 @quotation
1093 @code{padding} (dimension, in staff space):
1094
1095 @code{0.5}
1096 @end quotation
1097
1098 @noindent
1099 was bedeutet, dass der Abstand zu anderen Objekten mindestens
1100 0.5 Notenlinienabstände beträgt.
1101
1102 Jedes Layoutobjekt kann mehrere Funktionen sowohl als typographisches
1103 als auch als Notationselement einnehmen.  Das Fingersatzobjekt
1104 beispielsweise hat folgende Aspekte:
1105
1106 @itemize
1107 @item
1108 Seine Größe is unabhängig von der horizontalen Platzaufteilung,
1109 anders als etwa bei Legatobögen.
1110
1111 @item
1112 Es handelt sich um Text, normalerweise sehr kurz.
1113
1114 @item
1115 Dieser Text wird durch ein Glyph einer Schriftart gesetzt,
1116 anders als bei Legatobögen.
1117
1118 @item
1119 Der Mittelpunkt des Symbols sollte horizontal mit dem
1120 Mittelpunkt des Notenkopfes ausgerichtet werden.
1121
1122 @item
1123 Vertikal wird das Objekt neben die Note und das Notensystem
1124 gesetzt.
1125
1126 @item
1127 Die vertikale Position wird auch mit anderen Textelementen
1128 abgeglichen.
1129
1130 @end itemize
1131
1132 Jeder dieser Aspekte findet sich in sogenannten Schnittstellen
1133 (engl. interface), die auf der @rinternals{Fingering}-Seite
1134 unten aufgelistet sind:
1135
1136 @quotation
1137 This object supports the following interfaces:
1138 @rinternals{item-interface},
1139 @rinternals{self-alignment-interface},
1140 @rinternals{side-position-interface}, @rinternals{text-interface},
1141 @rinternals{text-script-interface}, @rinternals{font-interface},
1142 @rinternals{finger-interface}, and @rinternals{grob-interface}.
1143 @end quotation
1144
1145 Ein Klick auf einen der Links öffnet die Seite der entsprechenden
1146 Schnittstelle.  Jede Schnittstelle hat eine Anzahl von Eigenschaften.
1147 Einige sind nicht vom Benutzer zu beeinflussen (@qq{interne
1148 Eigenschaften}), andere aber können verändert werden.
1149
1150 Es wurde immer von einem @code{Fingering}-Objekt gesprochen, aber
1151 eigentlich handelt es sich nicht um sehr viel.  Die Initialisierungsdatei
1152 @file{scm/@/define@/-grobs@/.scm} zeigt den Inhalt dieses @qq{Objekts}
1153 (zu Information, wo diese Dateien sich finden siehe
1154 @rlearning{Other sources of information}):
1155
1156 @example
1157 (Fingering
1158   . ((padding . 0.5)
1159      (avoid-slur . around)
1160      (slur-padding . 0.2)
1161      (staff-padding . 0.5)
1162      (self-alignment-X . 0)
1163      (self-alignment-Y . 0)
1164      (script-priority . 100)
1165      (stencil . ,ly:text-interface::print)
1166      (direction . ,ly:script-interface::calc-direction)
1167      (font-encoding . fetaNumber)
1168      (font-size . -5)           ; don't overlap when next to heads.
1169      (meta . ((class . Item)
1170      (interfaces . (finger-interface
1171                     font-interface
1172                     text-script-interface
1173                     text-interface
1174                     side-position-interface
1175                     self-alignment-interface
1176                     item-interface))))))
1177 @end example
1178
1179 @noindent
1180 Wie man sehen kann, ist das Fingersatzobjekt nichts anderes als
1181 eine Ansammlung von Variablen, und die Internetseite der
1182 Referenz der Interna ist direkt aus diesen Anweisungen generiert.
1183
1184
1185 @node Determining the grob property
1186 @subsection Determining the grob property
1187
1188 Die Position der @b{2} aus dem Beispiel unten soll also geändert werden:
1189
1190 @lilypond[quote,fragment,relative=2,verbatim]
1191 c-2
1192 \stemUp
1193 f
1194 @end lilypond
1195
1196 Weil die @b{2} vertikal an der zugehörigen Note ausgerichtet ist,
1197 müssen wir uns mit der Schnittstelle auseinander setzen, die diese
1198 Positionierung veranlasst.  Das ist hier @code{side-position-interface}.
1199 Auf der Seite für diese Schnittstelle heißt es:
1200
1201 @quotation
1202 @code{side-position-interface}
1203
1204 Position a victim object (this one) next to other objects (the
1205 support).  The property @code{direction} signifies where to put the
1206 victim object relative to the support (left or right, up or down?)
1207 @end quotation
1208
1209 @cindex Verschiebung
1210
1211 @noindent
1212 Darunter wird die Variable @code{padding} (Verschiebung) beschrieben:
1213
1214 @quotation
1215 @table @code
1216 @item padding
1217 (dimension, in staff space)
1218
1219 Add this much extra space between objects that are next to each other.
1220 @end table
1221 @end quotation
1222
1223 Indem man den Wert von @code{padding} erhöht, kann die Fingersatzanweisung
1224 weiter weg von der Note gesetzt werden.  Dieser Befehl beispielsweise
1225 fügt drei Notenlinienzwischenräume zwischen die Zahl und den Notenkopf:
1226
1227 @example
1228 \once \override Voice.Fingering #'padding = #3
1229 @end example
1230
1231 Wenn dieser Befehl in den Quelltext eingefügt wird, bevor der
1232 Fingersatz notiert ist, erhält man folgendes:
1233
1234 @lilypond[quote,relative=2,fragment,verbatim]
1235 \once \override Voice.Fingering #'padding = #3
1236 c-2
1237 \stemUp
1238 f
1239 @end lilypond
1240
1241 In diesem Fall muss die Veränderung speziell für den @code{Voice}-Kontext
1242 definiert werden.  Das kann auch aus der Referenz der Interna entnommen
1243 werden, da die Seite des @rinternals{Fingering_engraver} schreibt:
1244
1245 @quotation
1246 Fingering_engraver is part of contexts: @dots{} @rinternals{Voice}
1247 @end quotation
1248
1249
1250 @node Naming conventions
1251 @subsection Naming conventions
1252
1253 Die Bezeichnungen für Funktionen, Variablen, Engraver und Objekte
1254 folgen bestimmten Regeln:
1255
1256 @itemize
1257
1258 @item
1259     Scheme-Funktionen: kleinbuchstaben-mit-bindestrichen
1260
1261 @item
1262     Scheme-Funktionen: ly:plus-scheme-stil
1263     
1264 @item
1265     Musikalische Ereignisse, Musikklassen und Musikeigenschaften: wie-scheme-funktionen
1266
1267 @item
1268     Grob-Schnittstellen: scheme-stil
1269     
1270 @item
1271     backend-Eigenschaften: scheme-stil (aber X und Y)
1272     
1273 @item
1274     Kontexte: Großbuchstabe, oder GroßbuchstabeZwischenWörtern (CamelCase)
1275
1276 @item
1277     Kontext-Eigenschaften: kleinbuchstabeMitFolgendenGroßbuchstaben
1278     
1279 @item
1280     Engraver:  Großbuchstabe_gefolgt_von_kleinbuchstaben_mit_unterstrichen
1281 @end itemize
1282
1283
1284 @node Modifying properties
1285 @section Modifying properties
1286
1287 @menu
1288 * Overview of modifying properties::
1289 * The set command::
1290 * The override command::
1291 * The tweak command::
1292 * set versus override::
1293 @end menu
1294
1295
1296 @node Overview of modifying properties
1297 @subsection Overview of modifying properties
1298
1299 Jeder Kontext ist verantwortlich für die Erstellung bestimmter
1300 graphischer Objekte.  Die Einstellungen für diese Objekte werden
1301 auch in dem Kontext gespeichert.  Wenn man diese Einstellungen
1302 verändert, kann die Erscheinung der Objekte geändert werden.
1303
1304 Die Syntax hierzu lautet:
1305
1306 @example
1307 \override @var{Kontext}.@var{Bezeichnung} #'@var{Eigenschaft} = #@var{Wert}
1308 @end example
1309
1310
1311 @var{Bezeichnung} ist die Bezeichnung eines graphischen Objekts,
1312 wie @code{Stem} (Hals) oder @code{NoteHead} (Notenkopf), und 
1313 @var{Eigenschaft} ist eine interne Variable des Formatierungssystems
1314 (eine @qq{Grob-Eigenschaft} oder @qq{Layout-Eigenschaft}).  Diese
1315 Eigenschaft ist ein Symbol, muss also mit einem Anführungsstrich
1316 versehen werden.  Wie die Felder @var{Bezeichnung}, @var{Eigenschaft}
1317 und @var{Wert} richtig gefüllt werden, zeigt der Abscnitt
1318 @ref{Modifying properties}.  Hier wird nur die Funktionalität des
1319 Befehls betrachtet.
1320
1321 Der Befehl
1322
1323 @verbatim
1324 \override Staff.Stem #'thickness = #4.0
1325 @end verbatim
1326
1327 @noindent
1328 bewirkt, dass der Notenhals dicker gesetzt wird (Standard ist
1329 1.3, die Dicke der Notenlinie entspricht dem Wert 1).  Da der
1330 Befehl den Kontext @code{Staff} angibt, wirkt er sich nur auf
1331 das gerade aktuelle Notensystem aus.  Andere Systeme behalten
1332 ihr normales Aussehen.  Hier ein Beispiel mit diesem Befehl:
1333
1334 @lilypond[quote,verbatim,relative=2,fragment]
1335 c4
1336 \override Staff.Stem #'thickness = #4.0
1337 c4
1338 c4
1339 c4
1340 @end lilypond
1341
1342 Der @code{\override}-Befehl verändert die Definitionen von
1343 @code{Stem} (Hals) innerhalb des aktuellen @code{Staff}
1344 (Notensystems).  Nachdem der Befehl gelesen wurde, werden
1345 alle Hälse dicker gesetzt.
1346
1347 Wie auch bei dem @code{\set}-Befehl kann auch hier der
1348 Kontext ausgelassen werden, wobei dann immer implizit der
1349 @code{Voice}-Kontext angenommen wird.  Mit einem zusätzlichen
1350 @code{\once} wirkt sich die Änderung nur einmal aus:
1351
1352 @lilypond[quote,fragment,verbatim,relative=2]
1353 c4
1354 \once \override Stem #'thickness = #4.0
1355 c4
1356 c4
1357 @end lilypond
1358
1359 Der @code{\override}-Befehl muss geschrieben sein, bevor das Objekt
1360 begonnen wird.  Wenn also ein @emph{Strecker}-Objekt wie etwa
1361 ein Bogen verändert werden soll, muss der @code{\override}-Befehl
1362 schon geschrieben werden, bevor das Objekt begonnen wird.  In dem
1363 folgenden Beispiel
1364
1365 @lilypond[quote,fragment,verbatim,relative=2]
1366 \override Slur #'thickness = #3.0
1367 c8[( c
1368 \override Beam #'thickness = #0.6
1369 c8 c])
1370 @end lilypond
1371
1372 @noindent
1373 ist der Bogen dicker, der Balken aber nicht.  Das liegt daran, dass der Befehl
1374 zum Ändern des @code{Beam}-Objekts erst gesetzt wurde, nachdem der Balken
1375 schon begonnen hat.
1376
1377 Der @code{\revert}-Befehl macht alle Änderungen rückgängig, die mit einem
1378 @code{\override}-Befehl vorgenommen worden sind, dabei werden allerdings
1379 nur Einstellungen betroffen, die sich im gleichen Kontext befinden.  Der
1380 @code{\revert}-Befehl des folgenden Beispiels bewirkt also gar nichts,
1381 weil er für den falschen Kontext gefordert wird.
1382
1383 @example
1384 \override Voice.Stem #'thickness = #4.0
1385 \revert Staff.Stem #'thickness
1386 @end example
1387
1388 Einige veränderbare Optionen werden als Untereigenschaften (engl.
1389 subproperties) bezeichnet und befinden sich innerhalb von den
1390 normalen Eigenschaften.  Wenn man sie verändern will, nimmt der
1391 Befehl folgende Form an:
1392
1393 @c leave this as a long long
1394 @example
1395 \override @var{Kontext}.@var{Bezeichnung} #'@var{Eigenschaft} #'@var{Untereigenschaft} = #@var{Wert}
1396 @end example
1397
1398 @noindent
1399 wie beispielsweise
1400
1401 @example
1402 \override Stem #'(details beamed-lengths) = #'(4 4 3)
1403 @end example
1404
1405
1406 @seealso
1407 Referenz der Interna:
1408 @rinternals{OverrideProperty},
1409 @rinternals{RevertProperty},
1410 @rinternals{PropertySet},
1411 @rinternals{Backend},
1412 @rinternals{All layout objects}.
1413
1414
1415 @knownissues
1416
1417 Das Back-end ist nicht sehr streng bei der Überprüfung
1418 der Typen von Objekteigenschaften.  Auf sich selbst verweisende
1419 Bezüge in Scheme-Werten der Eigenschaften können Verzögerung
1420 oder einen Absturz des Programms hervorrufen.
1421
1422
1423
1424 @node The set command
1425 @subsection The @code{\set} command
1426
1427 @cindex Eigenschaften
1428 @cindex Verändern von Eigenschaften
1429 @funindex \set
1430 @funindex set
1431
1432 Jeder Kontext kann unterschiedliche @emph{Eigenschafte} besitzen,
1433 Variablen, die in diesem Kontext definiert sind.  Sie können
1434 während der Interpretation des Kontextes verändert werden.  Hierzu
1435 wird der @code{\set}-Befehl eingesetzt:
1436
1437 @example
1438 \set @var{Kontext}.@var{Eigenschaft} = #@var{Wert}
1439 @end example
1440
1441 Das kann beispielsweise so aussehen:
1442
1443 @lilypond[quote,verbatim,relative=2,fragment]
1444 R1*2
1445 \set Score.skipBars = ##t
1446 R1*2
1447 @end lilypond
1448
1449 Mit diesem Befehl werden Takte übersprungen, die keine Noten
1450 haben.  Als Resultat werden Ganztaktpausentakte komprimiert.
1451 Der Wert, der der Eigenschaft zugewiesen wird, ist ein
1452 Scheme-Objekt.  In diesem Fall ist es @code{#t}, der
1453 Boolsche Wert für @qq{wahr}.
1454
1455 Wenn das @var{Kontext}-Argument ausgelassen wird, bezieht sich
1456 der Befehl auf den gerade aktiven unterstmöglichen Kontext,
1457 üblicherweise @code{ChordNames}, @code{Voice} oder
1458 @code{Lyrics}.  In diesem Beispiel:
1459
1460 @lilypond[quote,verbatim,relative=2,fragment]
1461 c8 c c c
1462 \set autoBeaming = ##f
1463 c8 c c c
1464 @end lilypond
1465
1466 @noindent
1467 wurde das @var{Kontext}-Argument für den @code{\set}-Befehl
1468 ausgelassen, sodass automatische Bebalkung für die aktuelle
1469 Stimme (@code{Voice}-Kontext) abgeschaltet wird.  Dabei
1470 gilt zu beachten, dass der unterste Kontext nicht immer die
1471 Eigenschaft enthält, die verändert werden soll.  Wenn man
1472 beispielsweise @code{skipBars} aus dem oberen Beispiel
1473 ohne Angabe des Kontextes zu verändern sucht, hat der Befehl
1474 keine Auswirkung, weil er sich auf den @code{Voice}-Kontext
1475 bezieht, die Eigenschaft sich aber im @code{Score}-Kontext
1476 befindet:
1477
1478 @lilypond[quote,verbatim,relative=2,fragment]
1479 R1*2
1480 \set skipBars = ##t
1481 R1*2
1482 @end lilypond
1483
1484 Kontexte sind hierarchisch angeordnet.  Wenn ein übergeordneter
1485 Kontext angegeben wird, etwa @code{Staff}, dann beziehen sich
1486 die Änderungen auf alle Stimmen (@code{Voice}), die in diesem
1487 Kontext enthalten sind.  Da der Befehl zu dem Zeitpunkt gültig
1488 wird, an dem er im Quelltext auftritt, wird im Bebalkungsbeispiel
1489 oben die Einstellung erst für die zweite Achtelgruppe wirksam.
1490
1491 @funindex \unset
1492 @funindex unset
1493
1494 Es gibt auch einen @code{\unset}-Befehl:
1495
1496 @example
1497 \unset @var{Kontext}.@var{Eigenschaft}
1498 @end example
1499
1500 @noindent
1501 der bewirkt, dass die vorgenommenen Definitionen für @var{Eigenschaft}
1502 entfernt werden.  Dieser Befehl macht nur Einstellungen im richtigen
1503 Kontext rückgängig.  Wenn also im @code{Staff}-Kontext die
1504 Bebalkung ausgeschaltet wird:
1505
1506 @example
1507 \set Staff.autoBeaming = ##f
1508 @end example
1509
1510 @noindent
1511 bezieht sich das auch auf die in dem @code{Staff} enthaltenen Stimmen.
1512 Der Befehl
1513
1514 @example
1515 \unset Voice.autoBeaming
1516 @end example
1517
1518 @noindent
1519 ist jedoch ungültig und bewirkt nichts.  Damit die Einstellung richtig
1520 rückgängig gemacht werden kann, muss der Befehl auf der gleichen
1521 Kontextebene ausgeführt werden wie der ursprüngliche @code{\set}-Befehl.
1522 Hier braucht man also den Befehl:
1523
1524 @example
1525 \unset Staff.autoBeaming
1526 @end example
1527
1528 Genauso wie für @code{\set}, muss auch für @code{\unset} der unterste
1529 Kontext nicht angegeben werden, die zwei Befehle
1530
1531 @example
1532 \set Voice.autoBeaming = ##t
1533 \set autoBeaming = ##t
1534 @end example
1535
1536 @noindent
1537 bedeuten also das Gleiche.
1538
1539 @funindex \once
1540 @funindex once
1541
1542 Einstellungen, die nur einmal vorgenommen werden sollen, können
1543 mit @code{\once} notiert werden, etwa:
1544
1545 @lilypond[quote,verbatim,relative=2,fragment]
1546 c4
1547 \once \set fontSize = #4.7
1548 c4
1549 c4
1550 @end lilypond
1551
1552 @noindent
1553 Damit wirkt sich die Änderung der Schriftgröße nur auf die zweite
1554 Note aus und wird automatisch wieder rückgängig gemacht.
1555
1556 Eine vollständige Beschreibung aller vorhandenen Kontexteigenschaften
1557 findet sich in der Referenz der Interna, siehe
1558
1559 @ifhtml
1560 @rinternals{Tunable context properties}.
1561 @end ifhtml
1562 @ifnothtml
1563 @qq{Translation @expansion{} Tunable context properties}.
1564 @end ifnothtml
1565
1566
1567
1568 @node The override command
1569 @subsection The @code{\override} command
1570
1571 Befehle, die die Ausgabe grundlegend verändern, haben folgende
1572 Form:
1573
1574 @example
1575 \override Voice.Stem #'thickness = #3.0
1576 @end example
1577
1578 @noindent
1579 Um derartige Einstellungen vorzunehmen, müssen folgende Informationen
1580 bekannt sein:
1581
1582 @itemize
1583 @item der Kontext: in diesem Fall @code{Voice}.
1584 @item das Layout-Objekt: in diesem Fall @code{Stem}.
1585 @item die Layout-Eigenschaft: in diesem Fall @code{thickness}.
1586 @item ein vernünftiger Wert: in diesem Fall @code{3.0}.
1587 @end itemize
1588
1589 Einige veränderbare Optionen werden als Untereigenschaften (engl.
1590 subproperties) bezeichnet und befinden sich innerhalb der Eigenschaften.
1591 Um sie zu verändern, werden Befehl in der Form
1592
1593 @example
1594 \override Stem #'(details beamed-lengths) = #'(4 4 3)
1595 @end example
1596
1597 @noindent
1598 eingesetzt.
1599
1600 @cindex Referenz der Interna
1601 @cindex Grafische Objekte, Finden
1602 @cindex Finden von graphischen Objekten
1603 @cindex Beschreibung von graphischen Objekten
1604 @cindex Grafische Objekte, Beschreibung
1605 @cindex Grob, Beschreibung
1606 @cindex Veränderungen der Einstellungen
1607 @cindex Einstellungen verändern
1608
1609 @funindex override
1610 @funindex \override
1611
1612 Viele Eigenschaften können unabhängig von der Art der Daten, die
1613 sie enthalten, ausgeschaltet werden, indem man sie als @qq{falsch}
1614 (@code{##f}) definiert.  Dadurch wird diese Eigenschaft von LilyPond
1615 ignoriert.  Das ist insbesondere nützlich, wenn man Grob-Eigenschaften
1616 ausschalten will, die Probleme verursachen.
1617
1618
1619 @node The tweak command
1620 @subsection The @code{\tweak} command
1621
1622 @funindex \tweak
1623 @funindex tweak
1624
1625 @cindex Optimieren
1626
1627 In einigen Fällen ist es möglich, mit einem abgekürzten Befehl
1628 graphische Objekte zu verändern.  Wenn Objekte direkt von einem
1629 Element des Quelltextes erstellt werden, kann der @code{\tweak}-Befehl
1630 eingesetzt werden:
1631
1632 @lilypond[relative=2,verbatim]
1633 < c
1634   \tweak #'color #red
1635   d
1636   g
1637   \tweak #'duration-log #1
1638   a
1639 > 4
1640 -\tweak #'padding #8
1641 -^
1642 @end lilypond
1643
1644 @cindex Akkord, eine Note verändern
1645
1646 Die hauptsächliche Benutzung von @code{\tweak} ist dann, wenn
1647 man nur ein Element von einer Ansammlung an Elementen verändern
1648 will, die alle zum gleichen musikalischen Moment beginnen.  Das
1649 kann eine Noten in einem Akkord sein, oder eine von mehreren
1650 Triolenklammern, die zur gleichen Zeit beginnen.
1651
1652 Eine Einleitung der Syntax für den @code{\tweak}Befehl findet
1653 sich in @rlearning{Tweaking methods}.
1654
1655 Der @code{\tweak}-Befehl verändert die Eigenschaft des folgenden
1656 Objekts direkt, ohne dass die Bezeichnung des Objekts (Grobs) oder
1657 des Kontextes angegeben werden muss.  Damit das funktioniert, muss
1658 das Objekt direkt auf den @code{\tweak}-Befehl folgen, auf das
1659 er sich auswirken soll.  Das ist in manchen Fällen nicht gegeben,
1660 da viele Objekte durch LilyPond automatisch eingesetzt werden.
1661 Wenn etwa eine Note interpretiert wird, die nicht Teil eines
1662 Akkords ist, fügt LilyPond implizit einen @code{ChordEvent}
1663 vor die Note ein, sodass der @code{\tweak}-Befehl von der
1664 Note getrennt wird.  Wenn aber Akkord-Klammern um die Note
1665 und den @code{\tweak}-Befehl gesetzt werden, folgt der
1666 @code{ChordEvent} auf den @code{\tweak}-Befehl und befindet
1667 sich deshalb direkt vor der Note, auf die er einwirken soll,
1668 sodass die Veränderung funktioniert.
1669
1670 An einem Beispiel demonstriert:  Das funktioniert:
1671
1672
1673 @lilypond[relative=2,verbatim,quote]
1674 <\tweak #'color #red c>4
1675 @end lilypond
1676
1677 @noindent
1678 und das nicht:
1679
1680 @lilypond[relative=2,verbatim,quote]
1681 \tweak #'color #red c4
1682 @end lilypond
1683
1684 Wenn mehrere gleichartige Elemente zum gleichen musikalischen
1685 Moment auftreten, kann der @code{\override}-Befehl nicht
1686 benutzt werden, um nur einen von ihnen zu verändern: hier braucht
1687 man den @code{\tweak}-Befehl.  Elemente, die mehrfach zum
1688 gleichen musikalischen Moment auftreten können sind unter Anderem:
1689
1690 @c TODO expand to include any further uses of \tweak
1691 @itemize
1692 @item Notenköpfe von Noten innerhalb eines Akkordes
1693 @item Artikulationszeichen an einer einzelnen Note
1694 @item Bindebögen zwischen Noten eines Akkordes
1695 @item Llammern für rhythmische Verhältnisse (wie Triolen), die zur gleichen Zeit beginnen
1696 @end itemize
1697
1698 @c TODO add examples of these
1699
1700 @noindent
1701 @code{\tweak} kann eingesetzt werden, um ein einzelnes Element aus der Gruppe
1702 zu verändern.
1703
1704 Der @code{\tweak}-Befehl kann @emph{nicht} eingesetzt werden, um
1705 Hälse, Balken oder Versetzungszeichen zu verändern, weil diese
1706 später durch den Notenkopf erstellt werden und nicht direkt durch
1707 den Quelltext.  @code{\tweak} kann auch nicht verwendet werden,
1708 um Schlüssel oder Taktarten zu verändern, denn sie werden von
1709 dem @code{\tweak}-Befehl während der Interpretation durch
1710 automatisches Einfügen von zusätzlichen Kontextelementen getrennt.
1711
1712 Der @code{\tweak}-Befehl @emph{kann} aber als Alternative des
1713 @code{\override}-Befehls eingesetzt werden, wenn die zu verändernden
1714 Elemente keine zusätzlichen impliziten Elemente während der
1715 Interpretation hinzufügen.  Legatobögen können also auch auf
1716 die folgende Weise verändert werden:
1717
1718 @lilypond[verbatim,quote,relative=1]
1719 c-\tweak #'thickness #5 ( d e f)
1720 @end lilypond
1721
1722 Mehrere @code{\tweak}-Befehle können vor ein Notatioselement
1723 gesetzt werden und alle werden interpretiert:
1724
1725 @lilypond[verbatim,quote,relative=1]
1726 c
1727 -\tweak #'style #'dashed-line
1728 -\tweak #'dash-fraction #0.2
1729 -\tweak #'thickness #3
1730 -\tweak #'color #red
1731  \glissando
1732 f'
1733 @end lilypond
1734
1735 Der Strom der musikalischen Ereignisse (engl. music stream), der aus
1736 dem Quelltext erstellt wird, und zu dem auch die automatisch eingefügten
1737 Elemente gehören, kann betrachtet werden, siehe
1738 @ref{Displaying music expressions}.  Das kann nützlich sein,
1739 wenn man herausfinden will, was mit dem @code{\tweak}-Befehl
1740 verändert werden kann.
1741
1742 @seealso
1743 Handbuch zum Lernen:
1744 @rlearning{Tweaking methods}.
1745
1746 Notationsreferenz:
1747 @ref{Displaying music expressions}.
1748
1749 @knownissues
1750
1751 @cindex tweak-Befehl in einer Variable
1752 @cindex Variable, tweak-Befehl benutzen
1753
1754 Der @code{\tweak}-Befehl kann nicht innerhalb von einer Variable eingesetzt werden.
1755
1756 @cindex tweaks-Befehl in Gesangstext
1757 @cindex lyrics und tweak-Befehl
1758 @cindex Gesangstext und tweak-Befehl
1759
1760 Der @code{\tweak}-Befehl kann nicht innerhalb von @code{\lyricmode} eingesetzt werden.
1761
1762 @cindex Kontrollpunkte und tweak
1763 @cindex tweak und Kontrollpunkte
1764
1765 Der @code{\tweak}-Befehl kann nicht benutzt werden, um die Kontrollpunkte
1766 eines von mehreren Bindebögen eines Akkorden zu verändern. Anstelle dessen
1767 wird der erste Bogen verändert, der in der Eingabedatei auftritt.
1768
1769
1770 @node set versus override
1771 @subsection @code{\set} vs. @code{\override}
1772
1773 Es wurden zwei unterschiedliche Methoden vorgestellt, mit denen
1774 Eigenschaften verändert werden können: @code{\set} und
1775 @code{\override}.  Im Grunde genommen gibt es auch zwei
1776 unterschiedliche Arten von Eigenschaften.
1777
1778 Kontexte können Eigenschaften haben, deren Bezeichnungen
1779 üblicherweise dem Schema @code{kleinGroß} folgen.  Derartige
1780 Eigenschaften sind vor allen Dingen für die Übersetzung der
1781 Musik in Notation zuständig, beispielsweise @code{localKeySignature}
1782 (um zu bestimmen, ob Versetzungszeichen ausgegeben werden
1783 müssen), @code{measurePosition} (um zu bestimmen, ob eine
1784 Taktlinie gesetzt werden muss).  Kontexteigenschaften können
1785 ihren Wert verändern, während ein Musikstück ausgewertet wird;
1786 @code{measurePosition} (Taktposition) ist ein gutes Beispiel
1787 hierfür.  Kontexteigenschaften werden mit dem Befehl @code{\set}
1788 verändert.
1789
1790 Dann gibt es einen Spezialtyp der Kontexeigenschaften: die
1791 Elementbeschreibung.  Diese Eigenschaften werden mit
1792 @code{GroßGroß} benannt (beginnen also auch mit einem
1793 Großbuchstaben).  Sie beinhalten die Standardeinstellungen
1794 für die besagten graphischen Objekte in Form einer
1795 Assosiationsliste.  Siehe auch die Datei @file{scm/@/define@/-grobs@/.scm}
1796 für ein Beispiel zu diesen Einstellungen.  Elementbeschreibungen
1797 können mit dem Befehl @code{\override} verändert werden.
1798
1799 @code{\override} ist eigentlich eine Abkürzung:
1800
1801 @example
1802 \override @var{Kontext}.@var{Bezeichnung} #'@var{Eigenschaft} = #@var{Wert}
1803 @end example
1804
1805 @noindent
1806 entspricht mehr oder weniger:
1807
1808 @c  leave this long line -gp
1809 @example
1810 \set @var{Kontext}.@var{Bezeichnung} #'@var{Eigenschaft} = #(cons (cons '@var{Eigenschaft} @var{Wert}) <voriger Wert von @var{Kontext})
1811 @end example
1812
1813 Der Wert von @code{context} (die @qq{alist}) wird benutzt, um
1814 die Eigenschaften von einzelnen Grobs zu initiieren.  Grobs haben
1815 auch Eigenschaften, die im Scheme-Stil benannt werden, also
1816 @code{wort-mit-bindestrich}.  Die Werte der Grob-Eigenschaften
1817 ändern sich während des Formatierungsprozesses: Formatierung
1818 läuft im Prinzip darauf hinaus, Eigenschaften zu errechnen, indem
1819 Callback-Funktionen eingesetzt werden.
1820
1821 @code{fontSize} ist eine besondere Eigenschaft: sie entspricht
1822 @code{\override ... #'font-size} für alle möglichen Objekte.
1823 Weil es sich hier um eine globale Änderung handelt, wurde
1824 die spezielle Form (die mit @code{\set} verändert wird) erstellt.
1825
1826
1827 @node Useful concepts and properties
1828 @section Useful concepts and properties
1829
1830 @menu
1831 * Input modes::
1832 * Direction and placement::
1833 * Distances and measurements::
1834 * Staff symbol properties::
1835 * Spanners::
1836 * Visibility of objects::
1837 * Line styles::
1838 * Rotating objects::
1839 @end menu
1840
1841
1842 @node Input modes
1843 @subsection Input modes
1844
1845 Die Art, wie die Notation einer Eingabedatei interpretiert
1846 wird, hängt vom aktuellen Eingabemodus ab.
1847
1848 @strong{Chord (Akkordmodus)}
1849
1850 Man erreicht ihn durch den Befehl @code{\chordmode}.  Hierdurch
1851 wird die Eingabe entsprechend der Syntax der Akkordnotation
1852 interpretiert, siehe @ref{Chord notation}.  Akkorde werden als
1853 Noten auf einem System dargestellt.
1854
1855 Der Akkordmodus wird auch mit dem Befehl @code{\chords} initiiert.
1856 Dadurch wird gleichzeitig ein neuer @code{ChordNames}-Kontext
1857 erstellt, die Eingabe entsprechend der Syntax der Akkordnotation
1858 interpretiert und als Akkordbezeichnungen in einem
1859 @code{ChordNames}-Kontext dargestellt. Siehe @ref{Printing chord names}.
1860
1861 @strong{Drum (Schlagzeugmodus)}
1862
1863 Man erreicht ihn mit dem Befehl @code{\drummode}.  Die Eingabe
1864 wird entsprechend der Syntax der Schlagzeugnotation interpretiert,
1865 siehe @ref{Basic percussion notation}.
1866
1867 Der Schlagzeugmodus wird auch mit dem Befehl @code{\drums} aktiviert.
1868 Dadurch wird gleichzeitig ein neuer @code{DrumStaff}-Kontext
1869 erstellt, die Eingabe entsprechend der Syntax der Schlagzeugnotation
1870 interpretiert und als Schlagzeugsymbole auf einem Schlagzeugsystem
1871 dargestellt.  Siehe @ref{Basic percussion notation}.
1872
1873 @strong{Figure (Ziffernmodus)}
1874
1875 Man erreicht ihn mit dem Befehl @code{\figuremode}.  Die Eingabe
1876 wird entsprechend der Syntax für Generalbass interpretiert, siehe
1877 @ref{Entering figured bass}.
1878
1879 Der Ziffernmodus wird auch mit dem Befehl @code{\figures} aktiviert.
1880 Dadurch wird gleichzeitig ein neuer @code{FiguredBass}-Kontext
1881 erstellt, die Eingabe entsprechend der Syntax für Generalbass
1882 interpretiert und als Generalbassziffern im @code{FiguredBass}-Kontext
1883 dargestellt.  Siehe @ref{Introduction to figured bass}.
1884
1885 @strong{Fret/tab (Griffsymbol-/Tabulaturmodus)}
1886
1887 Es gibt keinen besonderen Eingabemodus für Griffsymbole und
1888 Tabulaturen.
1889
1890 Um Tabulaturen zu erstellen, werden Noten oder Akkorde im
1891 Notenmodus notiert und dann in einem @code{TabStaff}-Kontext
1892 interpretiert, siehe
1893 @ref{Default tablatures}.
1894
1895 Um Griffsymbole oberhalb eines Notensystems zu erstellen, gibt
1896 es zwei Möglichkeiten.  Man kann den @code{FretBoards}-Kontext
1897 einsetzen (siehe @ref{Automatic fret diagrams}) oder sie können
1898 als Beschriftung über den Noten eingefügt werden, indem man
1899 den @code{\fret-diagram}-Befehl einsetzt (siehe
1900 @ref{Fret diagram markups}).
1901
1902 @strong{Lyrics (Gesangstextmodus)}
1903
1904 Man erreicht ihn mit dem Befehl @code{\lyricmode}.  Die Eingabe
1905 wird entsprechend der Syntax für Silben eines Gesangstextes
1906 interpretiert, wobei optional Dauern und verknüpfte 
1907 Gesangstextveränderer möglich  sind, siehe @ref{Vocal music}.
1908
1909 Der Gesangstextmodus wird auch durch den Befehl @code{\addlyrics}
1910 aktiviert.  Dadurch wird auch ein neuer @code{Lyrics}-Kontext
1911 erstellt und ein impliziter @code{\lyricsto}-Befehl, der den
1912 nachfolgenden Gesangstext mit der vorhergehenden Musik verknüpft.
1913
1914 @strong{Markup (Textbeschriftungsmodus)}
1915
1916 Man erreicht ihn mit dem Befehl @code{\markup}.  Die Eingabe wird
1917 entsprechend der Syntax für Textbeschriftung interpretiert, siehe
1918 @ref{Text markup commands}.
1919
1920 @c silly work-around for texinfo broken-ness
1921 @c (@strong{Note...} causes a spurious cross-reference in Info)
1922 @b{Note (Notenmodus)}
1923
1924 Das ist der Standardmodus.  Er kann auch mit dem Befehl
1925 @code{\notemode} gefordert werden.  Die Eingabe wird als Tonhöhen,
1926 Dauern, Beschriftung usw. interpretiert und als musikalische
1927 Notation auf einem Notensystem gesetzt.
1928
1929 Es ist normalerweise nicht nötig, den Notenmodus extra anzugeben,
1930 aber es kann in bestimmten Situationen durchaus nützlich sein,
1931 etwa wenn man in einem Gesangstext-, Akkord- oder einem anderen
1932 Modus arbeitet aber ein Zeichen braucht, das nur im Notenmodus
1933 benutzt werden kann.
1934
1935 Um etwa Dynamikzeichen vor die Nummern von unterschiedlichen
1936 Strophen zu setzen, muss man den Notenmodus betreten:
1937
1938 @lilypond[verbatim,relative=2,quote]
1939 { c4 c4 c4 c4 }
1940 \addlyrics {
1941   \notemode{ \set stanza = \markup{ \dynamic f 1. } }
1942   To be sung loudly
1943 }
1944 \addlyrics {
1945   \notemode{ \set stanza = \markup{ \dynamic p 2. } }
1946   To be sung quietly
1947 }
1948 @end lilypond
1949
1950
1951 @node Direction and placement
1952 @subsection Direction and placement
1953
1954 Die Platzierung und Richtung von Objekten ist im Notensatz oft durch eine
1955 enge Auswahl begrenzt: Notenhälse beispielsweise können entweder nach
1956 oben oder nach unten zeigen, Gesangstext, Dynamikzeichen und andere
1957 Ausdrucksbezeichnungen können über oder unter dem System gesetzt werden,
1958 Text kann rechts, links oder mittig ausgerichtet werden usw.  Die meisten
1959 dieser Eintscheidungen können LilyPond direkt überlassen werden; in
1960 einigen Fällen kann es allerdings nötig sein, eine bestimmte Richtung
1961 oder eine Position zu erzwingen.
1962
1963 @strong{Standardeinstellungen}
1964
1965 Standardmäßig sind bestimmte Objekte immer nach oben oder unten ausgerichtet,
1966 wie Dynamikzeichen oder Fermaten, während andere Objekte zwischen
1967 oben und unten wechseln, was vor allem von der Richtung der Notenhälse
1968 abhängt und etwa Bögen und Akzente betrifft.
1969
1970 @strong{Anordnung des Kontextlayouts}
1971
1972 Kontexte werden normalerweise in einer Notensystemgruppe von oben nach
1973 unten erstellt, in der Reihenfolge, in der sie auftreten.  Dabei sollte
1974 aber bedacht werden, dass ein Kontext implizit erstellt werden kann,
1975 wenn ein Befehl vorkommt, der in dem gegenwärtigen Kontext nicht
1976 asgeführt werden kann.  Wenn Kontexte verschachtelt sind, schließt
1977 der äußere Kontext die inneren Kontexte aus, die nicht in seiner
1978 @qq{accepts}-Liste aufgeführt sind.  Ausgeschlossene Kontexte werden
1979 unter dem äußeren Kontext gesetzt.
1980
1981 Die normale Reihenfolge, in der Kontexte angeordnet werden, sowie auch
1982 die @qq{accepts}-Liste, können geändert werden, siehe
1983 @ref{Aligning contexts}.
1984
1985 @strong{Anzeige der Ausrichtung von Artikulationszeichen}
1986
1987 Wenn man Artikulationszeichen an Noten anhängt, können die
1988 Ausrichtungsmarken @code{^} (bedeutet @qq{nach oben}), @code{_}
1989 (bedeutet @qq{nach unten}) bzw. @code{-} (bedeutet @qq{Standardrichtung}
1990 benutzen) normalerweise weggelassen werden.  In diesem Fall wird
1991 @code{-} angenommen.  Eine Richtungsanweisung ist jedoch
1992 @strong{immer} erforderlich vor
1993
1994 @itemize
1995 @item @code{\tweak}-Befehlen
1996 @item @code{\markup}-(Textbeschriftungs-)Befehlen
1997 @item @code{\tag}-Befehlen
1998 @item Textbeschriftungen in reiner Textform, wie etwa @code{-"string"}
1999 @item Fingersagzanweisungen: @code{-1}
2000 @item Abkürzungen von Artikulationen, wie @code{-.}, @code{->}, @code{--}
2001 @end itemize
2002
2003 @strong{Die @code{direction}-(Richtungs-)Eigenschaft}
2004
2005 Die Position oder Richtung vieler Layoutobjekte wird von der
2006 @code{direction}-Eigenschaft kontrolliert.
2007
2008 Der Wert der @code{direction}-Eigenschaft kann auf den Wert
2009 @code{1} gesetzt werden, was gleichbedeutend mit @qq{nach oben}
2010 bzw. @qq{oberhalb} ist, oder auf den Wert @code{-1}, was
2011 @qq{nach unten} bzw. @qq{unterhalb} bedeutet.  Die Symbole
2012 @code{UP} und @code{DOWN} können anstelle von @code{1}
2013 und @code{-1} benutzt werden.  Die Standardausrichtung kann
2014 angegeben werden, indem @code{direction} auf den Wert
2015 @code{0} oder @code{CENTER} gesetzt wird.  In vielen Fällen
2016 bestehen auch vordefinierte Befehle, mit denen die Ausrichtung
2017 bestimmt werden kann.  Sie haben die Form
2018
2019 @noindent
2020 @code{\xxxUp}, @code{xxxDown}, @code{xxxNeutral}
2021
2022 @noindent
2023 wobei @code{xxxNeutral} bedeutet: @qq{Benutze die
2024 Standardausrichtung}.  Siehe auch
2025 @rlearning{Within-staff objects}.
2026
2027 In wenigen Fällen, von denen Arpeggio das einzige häufiger
2028 vorkommende Beispiel darstellt, entscheidet der Wert von
2029 @code{direction}, ob das Objekt auf der rechten oder linken
2030 Seite das Ursprungsobjektes ausgegeben wird.  In diesem Fall
2031 bedeutet @code{-1} oder @code{LEFT} @qq{auf der linken Seite}
2032 und @code{1} oder @code{RIGHT} @qq{auf der rechten Seite}.  @code{0}
2033 oder @code{CENTER} bedeutet @qq{benutze Standardausrichtung}.
2034
2035
2036 @node Distances and measurements
2037 @subsection Distances and measurements
2038
2039 @cindex Abstände, absolut
2040 @cindex Abstände, skaliert
2041
2042 @funindex \mm
2043 @funindex \cm
2044 @funindex \in
2045 @funindex \pt
2046
2047 In LilyPond gibt es zwei Arten von Abständen: absolute und
2048 skalierte.
2049
2050 Absolute Abstände werden benutzt, um Ränder, Einzüge und andere
2051 Einzelheiten des Seitenlayouts zu bestimmen.  Sie sind in den
2052 Standardeinstellungen in Millimetern definiert.  Abstände können
2053 auch in anderen Einheiten definiert werden, indem folgende
2054 Befehle auf die Zahl folgen: @code{\mm}, @code{\cm},
2055 @code{\in}@tie{}(Zoll=2,54 cm) und @code{\pt}@tie{}(Punkte, 1/72.27
2056 eines Zolls).  Abstände des Seitenlayouts können auch in
2057 skalierbaren Einheiten (siehe folgenden Absatz) definiert
2058 werden, indem man den Befehl @code{\staff-space} an die
2059 Zahl hängt.  Das Seitenlayout ist genauer beschrieben in
2060 @ref{Page formatting}.
2061
2062 Skalierbare Abstände werden immer in Einheiten von
2063 Notenlinienabständen angegeben, oder seltener in halben
2064 Notenlinienabständen.  Ein Notenlinienabstand ist der
2065 Abstand zwischen zwei benachbarten Linien eines Notensystems.
2066 Der Standardwert dieser Einheit kann global geändert werden,
2067 indem man die globale Notensystemgröße ändert, oder sie
2068 kann lokal geändert werden, indem man die Eigenschaft
2069 @code{staff-space} des @code{StaffSymbol}-Objekts mit
2070 @code{\override} verändert.  Skalierte Abstände verändern
2071 sich automatisch entsprechend, wenn der Notenlinienabstand
2072 entweder global oder lokal verändert wird, aber Schriftarten
2073 verändern ihre Größe nur, wenn der Notenlinienabstand
2074 global verändert wird.  Mit dem globalen Notenlinienabstand
2075 kann man also auf einfach Art und Weise die gesamte Größe
2076 einer Partitur verändern.  Zu Methoden, wie der globale
2077 Notenlinienabstand verändert werden kann, siehe
2078 @ref{Setting the staff size}.
2079
2080 @funindex magstep
2081
2082 Wenn nur eine ein Abschnitt einer Partitur in einer anderen
2083 Größe erscheinen soll, etwa ein Ossia-Abschnitt in einer
2084 Fußnote, kann die globale Notensystemgröße nicht einfach
2085 geändert werden, weil sich diese Änderung auf die gesamte Partitur
2086 auswirken würde.  In derartigen Fällen muss die Größenänderung
2087 vorgenommen werden, indem man sowohl die
2088 @code{staff-space}-Eigenschaft von @code{StaffSymbol} als auch
2089 die Größe der Schriftarten verändert.  Eine Scheme-Funktion,
2090 @code{magstep}, kann von einer Schriftartveränderung zu der
2091 entsprechenden Veränderung in @code{staff-space} (Notenlinienabständen)
2092 konvertieren.  Zu einer Erklärung und Beispielen zu ihrer
2093 Verwendung siehe @rlearning{Length and thickness of objects}.
2094
2095
2096 @seealso
2097 Handbuch zum Lernen:
2098 @rlearning{Length and thickness of objects}.
2099
2100 Notationsreferenz:
2101 @ref{Page formatting},
2102 @ref{Setting the staff size}.
2103
2104
2105 @node Staff symbol properties
2106 @subsection Staff symbol properties
2107
2108 @cindex Anpassen von staff symbol
2109 @cindex Notensystem, anpassen
2110 @cindex Veränderung des Notensystems
2111
2112 Die vertikale Position der Notenlinien und die Anzahl der
2113 Notenlinien kann gleichzeit definiert werden.  Wie das
2114 folgende Beispiel zeigt, werden Notenpositionen nicht
2115 durch die Position der Notenlinien verändert:
2116
2117 @warning{Die @code{'line-positions}-Eigenschaft
2118 verändert die @code{'line-count}-Eigenschaft.  Die
2119 Anzahl der Notenlinien wird implizit definiert durch
2120 die Anzahl der Elemente in der Liste der Werte von
2121 @code{'line-positions}.}
2122
2123 @lilypond[verbatim,quote,relative=1]
2124 \new Staff \with {
2125   \override StaffSymbol #'line-positions = #'(7 3 0 -4 -6 -7)
2126 }
2127 { a4 e' f b | d1 }
2128 @end lilypond
2129
2130 Die Breite eines Notensystes kann verändert werden.  Die Einheit
2131 ist in Notenlinienabständen.  Die Abstände von Objekten
2132 in diesem Notensystem wird durch diese Einstellung nicht
2133 beeinflusst.
2134
2135 @lilypond[verbatim,quote,relative=1]
2136 \new Staff \with {
2137   \override StaffSymbol #'width = #23
2138 }
2139 { a4 e' f b | d1 }
2140 @end lilypond
2141
2142
2143 @node Spanners
2144 @subsection Spanners
2145
2146 Viele Objekte der Musiknotation erstrecken sich über mehrere
2147 Objekte oder gar mehrere Takte.  Beispiele hierfür sind etwa
2148 Bögen, Balken, Triolenklammern, Volta-Klamern in Wiederholungen,
2149 Crescendo, Triller und Glissando.  Derartige Objekte werden
2150 als @qq{Strecker} bezeichnet.  Sie haben spezielle Eigenschaften,
2151 mit welchen ihre Eigenschaften und ihr Verhalten beeinflusst
2152 werden kann.  Einige dieser Eigenschaften gelten für alle
2153 Strecker, andere beschränken sich auf eine Untergruppe der
2154 Strecker.
2155
2156 Alle Strecker unterstützen das @code{spanner-interface}
2157 (Strecker-Schnittstelle).
2158 Ein paar, insbesondere die, die zwischen zwei Objekten eine
2159 gerade Linie ziehen, unterstützen auch das
2160 @code{line-spanner-interface} (Strecker-Linienschnittstelle).
2161
2162
2163 @unnumberedsubsubsec Using the @code{spanner-interface}
2164
2165 Diese Schnittstelle stellt zwei Eigenschaften zur Verfügung,
2166 die sich auf mehrere Strecker auswirken:
2167
2168 @strong{@i{Die @code{minimum-length}-Eigenschaft}}
2169
2170 Die Mindestlänge eines Streckers wird durch die
2171 @code{minimum-length}-Eigenschaft definiert.  Wenn diese
2172 Eigenschaft vergrößert wird, muss in den meisten Fällen
2173 auch der Abstand der Noten zwischen den zwei Endpunkten
2174 eines Streckers verändert werden.  Eine Veränderung dieser
2175 Eigenschaft hat jedoch auf die meisten Strecker keine Auswirkung,
2176 weil ihre Länge aus anderen Berechnungen hervorgeht.
2177 Einige Beispiele, wo die Eigenschaft benutzt wird, sind
2178 unten dargestellt.
2179
2180 @lilypond[verbatim,quote,relative=2]
2181 a~a
2182 a
2183 % increase the length of the tie
2184 -\tweak #'minimum-length #5
2185 ~a
2186 @end lilypond
2187
2188 @lilypond[verbatim,quote,relative=2]
2189 a1
2190 \compressFullBarRests
2191 R1*23
2192 % increase the length of the rest bar
2193 \once \override MultiMeasureRest #'minimum-length = #20
2194 R1*23
2195 a1
2196 @end lilypond
2197
2198 @lilypond[verbatim,quote,relative=2]
2199 a \< a a a \!
2200 % increase the length of the hairpin
2201 \override Hairpin #'minimum-length = #20
2202 a \< a a a \!
2203 @end lilypond
2204
2205 Diese Veränderung kann auch eingesetzt werden, um die Länge
2206 von Legato- und Phrasierungsbögen zu verändern:
2207
2208 @lilypond[verbatim,quote,relative=2]
2209 a( a)
2210 a
2211 -\tweak #'minimum-length #5
2212 ( a)
2213
2214 a\( a\)
2215 a
2216 -\tweak #'minimum-length #5
2217 \( a\)
2218 @end lilypond
2219
2220 Im Falle einiger Layoutobjekte wirkt sich die
2221 @code{minimum-length}-Eigenschaft erst dann aus, wenn die
2222 @code{set-spacing-rods}-Prozedur explizit aufgerufen wird.
2223 Um das zu tun, sollte die @code{springs-and-rods}-Eigenschaft
2224 auf @code{ly:spanner::set-spacing-rods} gesetzt werden.  Die
2225 Mindestlänge eines Glissandos etwa wird erst aktiv, wenn
2226 die @code{springs-and-rods}-Eigenschaft gesetzt ist:
2227
2228 @lilypond[verbatim,quote,relative=1]
2229 % default
2230 e \glissando c'
2231
2232 % not effective alone
2233 \once \override Glissando #'minimum-length = #20
2234 e, \glissando c'
2235
2236 % effective only when both overrides are present
2237 \once \override Glissando #'minimum-length = #20
2238 \once \override Glissando #'springs-and-rods = #ly:spanner::set-spacing-rods
2239 e, \glissando c'
2240 @end lilypond
2241
2242 Das gilt auch für das @code{Beam}-(Balken-)Objekt:
2243
2244 @lilypond[verbatim,quote,relative=1]
2245 % not effective alone
2246 \once \override Beam #'minimum-length = #20
2247 e8 e e e
2248
2249 % effective only when both overrides are present
2250 \once \override Beam #'minimum-length = #20
2251 \once \override Beam #'springs-and-rods = #ly:spanner::set-spacing-rods
2252 e8 e e e
2253 @end lilypond
2254
2255 @strong{@i{Die @code{to-barline}-Eigenschaft}}
2256
2257 Die zweite nützliche Eigenschaft des @code{spanner-interface} ist
2258 @code{to-barline} (bis zum Taktstrich).  In den Standardeinstellungen
2259 ist diese Eigenschaft auf @qq{wahr} gesetzt, was bedeutet, dass
2260 ein Strecker, etwa eine Crescendo-Klammer, der an der ersten Noten
2261 eines Taktes beendet wird, sich nur bis zum vorhergehenden
2262 Taktstrich erstreckt.  Wenn die Eigenschaft auf @qq{falsch} gesetzt
2263 wird, erstrecken sich die Strecker entsprechend über die Taktlinie
2264 hinüber und enden erst an der entsprechenden Note:
2265
2266 @lilypond[verbatim,quote,relative=2]
2267 a \< a a a a \! a a a \break
2268 \override Hairpin #'to-barline = ##f
2269 a \< a a a a \! a a a
2270 @end lilypond
2271
2272 Diese Eigenschaft wirkt sich nicht auf alle Strecker aus.  Im Falle
2273 von Legato- oder Phrasierungsbögen etwa hat diese Eigenschaft
2274 keinen Effekt.  Das gilt auch für alle anderen Streckern, bei
2275 denen es nicht sinnvoll währe, sie an einer Taktlinie abzuschließen.
2276
2277
2278 @unnumberedsubsubsec Using the @code{line-spanner-interface}
2279
2280 Objekte, die das @code{line-spanner-interface} unterstützen,
2281 sind unter Anderem:
2282
2283 @itemize
2284 @item @code{DynamicTextSpanner}
2285 @item @code{Glissando}
2286 @item @code{TextSpanner}
2287 @item @code{TrillSpanner}
2288 @item @code{VoiceFollower}
2289 @end itemize
2290
2291 Die Routine, die das Setzen der Matrizen dieser Strecker
2292 hervorruft, ist @code{ly:line-interface::print}.  Diese
2293 Routine bestimmt die exakte Position der zwei Endpunkte
2294 und zeichnet eine Linie zwischen ihnen, in dem erforderlichen
2295 Stil.  Die Position der zwei Endpunkte des Streckers wird
2296 in Echtzeit errechnet, aber es ist möglich, ihre
2297 Y-Koordinaten zu verändern.  Die Eigenschaften, die angegeben
2298 werden müssen, sind zwei Ebenen in der Objekthierarchie
2299 tiefer angeordnet, aber die Syntax des @code{\override}-Befehls
2300 ist ziemlich einfach:
2301
2302 @lilypond[relative=2,quote,verbatim]
2303 e2 \glissando b
2304 \once \override Glissando #'(bound-details left Y) = #3
2305 \once \override Glissando #'(bound-details right Y) = #-2
2306 e2 \glissando b
2307 @end lilypond
2308
2309 Die Einheiten für die @code{Y}-Eigenschaft werden in
2310 Notenlinienabständen angegeben, wobei die Mittellinie des
2311 Notensystems die Null darstellt.  Für das Glissando ist
2312 der Wert von @code{Y} am entsprechenden X-Koordinatenpunkt
2313 entsprechend dem Mittelpunkt des Notenkopfes, wenn die
2314 Linie bis in die Noten hinein weitergeführt werden würde.
2315
2316 Wenn @code{Y} nicht gesetzt wird, wird der Wert aus der
2317 vertikalen Position des entsprechenden Anknüpfpunkts des
2318 Streckers errechnet.
2319
2320 Im Fall eines Zeilenumbruchs werden die Werte der Endpunkte
2321 in den Unterlisten @code{left-broken} bzw. @code{right-broken}
2322 von @code{bound-details} abgelegt.  Zum Beispiel:
2323
2324 @lilypond[relative=2,ragged-right,verbatim,fragment]
2325 \override Glissando #'breakable = ##t
2326 \override Glissando #'(bound-details right-broken Y) = #-3
2327 c1 \glissando \break
2328 f1
2329 @end lilypond
2330
2331 Eine Anzahl weitere Eigenschaft der @code{left}- und
2332 @code{right}-Unterlisten der @code{bound-details}-Eigenschaft
2333 kann auf gleiche Weise wie  @code{Y} verändert werden:
2334
2335 @table @code
2336 @item Y
2337 Hiermit wird der Y-Koordinationspunkt des Endpunktes in
2338 Notenlinienabständen vom Mittelpunkt des Notensystems
2339 ausgehend angegeben.  Der Endpunkt ist normalerweise
2340 der Mittelpunkt des Elternobjektes, sodass Glissandos
2341 vertikal auf den Mittelpunkt eines Notenkopfes weist.
2342
2343 Für horizontale Strecker, wie Textstrecker und Trillerstrecker
2344 ist sein Wert mit 0 definiert.
2345
2346 @item attach-dir
2347 Das entscheidet, wo die Linie auf der X-Achse beginnt und endet,
2348 relativ zum Elternobjekt.  Ein Wert @code{-1} (oder
2349 @code{LEFT}) lässt die Linie an der linken Seite der Noten
2350 beginnen/enden, mit der sie verknüpft ist.
2351
2352 @item X
2353 Das ist der absolute X-Koordinatenpunkt des Endpunktes.  Der
2354 Wert wird normalerweise in Echtzeit errechnet, und ihn zu
2355 verändern ist normalerweise nicht nützlich.
2356
2357 @item stencil
2358 Linienstrecker können Symbole am Ende oder zu Anfang des
2359 Streckers haben, die in dieser Untereigenschaft definiert
2360 werden.  Die Eigenschaft ist für interne Benutzung, es
2361 wird empfohlen, die Eigenschaft @code{text} zu benutzen.
2362
2363 @item text
2364 Das ist eine Textbeschriftung, die ausgewertet wird und die
2365 @code{stencil}-Eigenschaft überschreibt.  Sie wird eingesetzt,
2366 um @i{cresc.}, @i{tr} oder andere Texte an horizontale
2367 Strecker zu setzen.
2368
2369 @lilypond[quote,ragged-right,fragment,relative=2,verbatim]
2370 \override TextSpanner #'(bound-details left text)
2371    = \markup { \small \bold Slower }
2372 c2\startTextSpan b c a\stopTextSpan
2373 @end lilypond
2374
2375 @item stencil-align-dir-y
2376 @item stencil-offset
2377 Wenn keine dieser beiden Eigenschaften gesetzt wird, wird
2378 die Matrize (engl. stencil) einfach am Endpunkt des Streckers,
2379 auf seiner Mittellinie (wie durch @code{X} und @code{Y}
2380 definiert) zentriert, ausgegeben.  Wenn entweder
2381 @code{stencil-align-dir-y} oder @code{stencil-offset}
2382 gesetzt werden, wird das Symbol am Rand vertiakl entsprechend
2383 des Endpunktes der Linie verschoben:
2384
2385 @lilypond[relative=1,fragment,verbatim]
2386 \override TextSpanner
2387   #'(bound-details left stencil-align-dir-y) = #-2
2388 \override TextSpanner
2389   #'(bound-details right stencil-align-dir-y) = #UP
2390
2391 \override TextSpanner
2392   #'(bound-details left text) = #"ggg"
2393 \override TextSpanner
2394   #'(bound-details right text) = #"hhh"
2395 c4^\startTextSpan c c c \stopTextSpan
2396 @end lilypond
2397
2398 Dabei sollte beachtet werden, dass negative Werte das Objekt
2399 nach @emph{oben} verschieben, anders als man erwarten könnte,
2400 weil der Wert @code{-1} oder @code{DOWN} bedeutet, dass
2401 die @emph{Unterkante} des Textes mit der Streckerlinie
2402 ausgerichtet wird.  Ein Wert @code{1} oder @code{UP}
2403 richtet die Oberkante des Textes mit der Streckerlinie aus.
2404
2405 @item arrow
2406 Wenn diese Untereigenschaft auf @code{#t} gesetzt wird,
2407 wird ein Pfeilkopf am Ende der Linie erstellt.
2408
2409 @item padding
2410 Diese Eigenschaft kontrolliert den Abstand zwischen
2411 dem angegebenen Endpunkt der Linie und dem wirklichen Ende.
2412 Ohne Füllung (engl. padding) würde ein Glissando in der
2413 Mitte eines Notenkopfes beginnen und enden.
2414
2415 @end table
2416
2417 Die musikalische Funktion @code{\endSpanners} beschließt
2418 den Strecker, der an der direkt folgenden Note beginnt,
2419 bevor er eigentlich zu ende wäre.  Er wird exakt nach
2420 einer Note beendet, oder am nächsten Taktstrich, wenn
2421 @code{to-barline} auf wahr gesetzt ist und eine Taktlinie
2422 vor der nächsten Note erscheint.
2423
2424 @lilypond[verbatim,quote,ragged-right,relative=2,fragment]
2425 \endSpanners
2426 c2 \startTextSpan c2 c2
2427 \endSpanners
2428 c2 \< c2 c2
2429 @end lilypond
2430
2431 Wenn man @code{\endSpanners} benutzt, ist es nicht
2432 nötig, den Befehl \startTextSpan mit \stopTextSpan
2433 zu beenden, und es ist auch nicht nötig, Crescendo-Klammern
2434 mit @code{\!} zu beenden.
2435
2436
2437 @seealso
2438 Referenz der Interna:
2439 @rinternals{TextSpanner},
2440 @rinternals{Glissando},
2441 @rinternals{VoiceFollower},
2442 @rinternals{TrillSpanner},
2443 @rinternals{line-spanner-interface}.
2444
2445
2446 @node Visibility of objects
2447 @subsection Visibility of objects
2448
2449 @cindex Objekte, Sichtbarkeit
2450 @cindex Grobs, Sichtbarkeit
2451 @cindex Sichtbarkeit von Objekten
2452
2453 Die Sichtbarkeit von Layout-Objekten kann auf vier Arten
2454 kontrolliert werden: Ihre Matrizen (engl stencil) können
2455 entfernt werden, sie können unsichtbar gemacht werden,
2456 sie können weiß eingefärbt werden und ihre
2457 @code{break-visibility}-Eigenschaft kann verändert werden.
2458 Die ersten drei Möglichkeiten beziehen sich auf alle
2459 Layout-Objekte, die letzte nur auf einige wenige, nämlich
2460 die @emph{zerteilbaren} Objekte.  Das Handbuch zum Lernen
2461 führt in alle vier Möglichkeiten ein, siehe
2462 @rlearning{Visibility and color of objects}.
2463
2464 Es gibt auch einige weitere Techniken, die sich nur auf
2465 bestimmte Layout-Objekte beziehen.  Sie werden im letzten
2466 Abschnitt behandelt.
2467
2468 @menu
2469 * Removing the stencil::
2470 * Making objects transparent::
2471 * Painting objects white::
2472 * Using break-visibility::
2473 * Special considerations::
2474 @end menu
2475
2476
2477 @node Removing the stencil
2478 @unnumberedsubsubsec Removing the stencil
2479
2480 @cindex stencil, entfernen
2481 @cindex Matrize, entfernen
2482 @cindex Stempel (stencil), entfernen
2483 @cindex Entfernen eines Stencil
2484
2485 Jedes Layout-Objekt hat eine Matrizen-(stencil)-Eigenschaft.
2486 Sie ist normalerweise definiert als die Funktion, die das
2487 entsprechende Objekt zeichnet.  Wenn die Eigenschaft mit
2488 @code{\override} auf @code{#f} gesetzt wird, wird keine
2489 Funktion aufgerufen und also auch kein Objekt gezeichnet.
2490 Das Standardverhalten kann mit dem Befehl @code{\revert}
2491 wieder hergestellt werden.
2492
2493 @lilypond[quote,verbatim,relative=1]
2494 a1 a
2495 \override Score.BarLine #'stencil = ##f
2496 a a
2497 \revert Score.BarLine #'stencil
2498 a a a
2499 @end lilypond
2500
2501
2502 @node Making objects transparent
2503 @unnumberedsubsubsec Making objects transparent
2504
2505 @cindex transparent, Objekte
2506 @cindex unsichtbar, Objekte
2507 @cindex durchsichtig, Objekte
2508
2509 Jedes Layout-Objekt hat eine Durchsichtigkeits-Eigenschaft
2510 (@code{'transparent}),
2511 die normalerweise auf den Wert @code{#f} gesetzt ist.  Wenn
2512 sie auf @code{#t} gesetzt wird, nimmt das Objekt immer noch
2513 den entsprechenden Platz ein, ist aber unsichtbar.
2514
2515 @lilypond[quote,verbatim,relative=2]
2516 a4 a
2517 \once \override NoteHead #'transparent = ##t
2518 a a
2519 @end lilypond
2520
2521
2522 @node Painting objects white
2523 @unnumberedsubsubsec Painting objects white
2524
2525 @cindex Objekte, einfärben
2526 @cindex Färben von Objekten
2527 @cindex Einfärben von Objekten
2528 @cindex Ebenen (layer)
2529 @cindex layer (Ebenen)
2530 @cindex Druckreihenfolge
2531 @cindex Objekte verändern
2532 @cindex verändern von Objekten
2533 @cindex Grobs, verändern
2534
2535 Alle Layout-Objekte haben eine Farb-(color)-Eigenschaft, die
2536 normalerweise schwarz (@code{black}) definiert ist.  Wenn
2537 sie nach weiß (@code{white}) verändert wird, kann man das
2538 Objekt nicht mehr vom weißen Hintergrund unterscheiden.
2539 Wenn das Objekt jedoch andere Objekte überschneidet, wird
2540 die Farbe der Überschneidungen von der Reihenfolge entschieden,
2541 in welcher die Objekte gesetzt werden.  Es kann also vorkommen,
2542 dass man die Umrisse des weißen Objektes erahnen kann, wie
2543 in diesem Beispiel:
2544
2545 @lilypond[quote,verbatim,relative=2]
2546 \override Staff.Clef #'color = #white
2547 a1
2548 @end lilypond
2549
2550 Das kann man vermeiden, indem man die Satzreihenfolge der Objekte
2551 verändert.  Alle Layout-Objekte haben eine @code{layer}-Eigenschaft,
2552 die auf eine ganze Zahl gesetzt sein muss.  Objekte mit der
2553 niedrigsten Zahl in der @code{layer}-Eigenschaft werden zuerst
2554 gesetzt, dann die nächstne Objekte in ansteigender Ordnung.  Objekte
2555 mit höheren Werten überschneiden also Objekte mit niedrigeren
2556 Werten.  Die meisten Objekte bekommen den Wert @code{1} zugewiesen,
2557 einige wenige Objekte, unter die auch @code{StaffSymbol} (die
2558 Notenlinien) gehört, jedoch den Wert @code{0}.  Die Reihenfolge,
2559 in der Objekte mit demselben Wert gesetzt werden, ist nicht
2560 definiert.
2561
2562 Im oberen Beispiel wird der weiße Schlüssel, der einen Wert von
2563 @code{1} für @code{layer} hat, nach den Notenlinien gesetzt
2564 (die einen Wert von @code{0} für @code{layer} haben) und
2565 überschneidet sie also.  Um das zu ändern, muss dem @code{Clef}-Objekt
2566 (Notenschlüssel) ein niedrigerer Wert, etwa @code{-1}, gegeben
2567 werden, sodass es früher gesetzt wird:
2568
2569 @lilypond[quote,verbatim,relative=2]
2570 \override Staff.Clef #'color = #white
2571 \override Staff.Clef #'layer = #-1
2572 a1
2573 @end lilypond
2574
2575
2576 @node Using break-visibility
2577 @unnumberedsubsubsec Using break-visibility
2578
2579 @funindex break-visibility
2580 @cindex break-visibility
2581
2582 Die meisten Layout-Objekte werden nur einmal gesetzt, aber
2583 einige, wie Taktstriche, Schlüssel, Taktartbezeichnung und
2584 Tonartvorzeichen, müssen mehrmals gesetzt werden, wenn
2585 die Zeile gewechselt wird: einmal am Ende des oberen Systems
2586 und ein zweites Mal zu Beginn des nächsten Systems.
2587 Derartige Objekte werden als @emph{trennbar} bezeichnet
2588 und haben eine Eigenschaft, die @code{break-visibility}-Eigenschaft,
2589 mit der ihre Sichtbarkeit an allen drei Positionen, an denen
2590 sie auftreten können, kontrolliert werden kann: zu Beginn
2591 einer Zeile, innerhalb einer Zeile, wenn sie verändert werden,
2592 und am Ende einer Zeile, wenn die Änderung hier stattfindet.
2593
2594 Die Taktart wird beispielsweise standardmäßig nur zu Beginn des
2595 ersten Systems gesetzt, aber an anderen Stellen nur, wenn sie
2596 sich ändert.  Wenn diese Änderung am Ende eines Systems auftritt,
2597 wird die neue Taktart am Ende des aktuellen Systems als auch
2598 zu Beginn des nächsten Systems gesetzt.
2599
2600 Dieses Verhalten wird von der @code{break-visibility}-Eigenschaft
2601 kontrolliert, die erklärt wird in
2602 @c Leave this ref on a newline - formats incorrectly otherwise -td
2603 @rlearning{Visibility and color of objects}.  Die Eigenschaft
2604 bruacht einen Vektor von drei Boolschen Werten, die in ihrer
2605 Reihenfolge bestimmte, ob das Objekt a) zu Ende der Zeile,
2606 b) innerhalb einer Zeile oder c) zu Beginn einer Zeile gesetzt
2607 wird.  Oder, genauer gesagt, vor einem Zeilenumbruch, an Stellen,
2608 wo kein Zeilenumbruch auftritt oder nach einem Zeilenumbruch.
2609
2610 Die acht möglichen Kombinationen können auch durch vordefinierte
2611 Funktionen besetimmt werden, welche in der Datei @file{scm/output-lib.scm}
2612 definiert sind.  Die letzten drei Spalten der folgenden Tabelle
2613 zeigen an, ob das Layout-Objekt an einer besetimmten Position
2614 sichtbar sein wird oder nicht:
2615
2616 @multitable {@code{begin-of-line-invisible}} {@code{'#(#t #t #t)}} {ja} {ja} {ja}
2617 @headitem Funktion                   @tab Vektor                  @tab Vor @tab kein    @tab Nach
2618 @headitem Form                       @tab Form                    @tab Umbruch  @tab Umbruch    @tab Umbruch
2619
2620 @item @code{all-visible}             @tab @code{'#(#t #t #t)}     @tab ja    @tab ja      @tab ja
2621 @item @code{begin-of-line-visible}   @tab @code{'#(#f #f #t)}     @tab nein  @tab nein       @tab ja
2622 @item @code{center-visible}          @tab @code{'#(#f #t #f)}     @tab nein    @tab ja      @tab nein
2623 @item @code{end-of-line-visible}     @tab @code{'#(#t #f #f)}     @tab ja   @tab nein       @tab nein
2624 @item @code{begin-of-line-invisible} @tab @code{'#(#t #t #f)}     @tab ja    @tab ja       @tab nein
2625 @item @code{center-invisible}        @tab @code{'#(#t #f #t)}     @tab ja    @tab nein       @tab ja
2626 @item @code{end-of-line-invisible}   @tab @code{'#(#f #t #t)}     @tab nein     @tab ja     @tab ja
2627 @item @code{all-invisible}           @tab @code{'#(#f #f #f)}     @tab nein   @tab nein       @tab nein
2628 @end multitable
2629
2630 Die Standardeinstellungen von @code{break-visibility} hängen vom
2631 Layout-Objekt ab.  Die folgende Tabelle zeigt alle wichtigen Layout-Objekte,
2632 die mit @code{break-visibility} verändert werden können und die
2633 jeweiligen Standardeinstellungen der Eigenschaft:
2634
2635 @multitable @columnfractions .3 .3 .4
2636
2637 @headitem Layout-Objekt   @tab Normaler Kontext  @tab Standardeinstellung
2638
2639 @c omit Ambitus as it appears not to be affected by break-visibility -td
2640 @c @item @code{Ambitus}          @tab as specified   @tab @code{begin-of-line-visible}
2641 @item @code{BarLine} (Taktstrich)            @tab @code{Score}          @tab calculated
2642 @item @code{BarNumber} (Taktzahl)          @tab @code{Score}          @tab @code{begin-of-line-visible}
2643 @c omit the following item until it can be explained -td
2644 @c @item @code{BreakAlignGroup}  @tab @code{Score}          @tab calculated
2645 @item @code{BreathingSign} (Atemzeichen)       @tab @code{Voice}          @tab @code{begin-of-line-invisible}
2646 @item @code{Clef}  (Schlüssel)              @tab @code{Staff}          @tab @code{begin-of-line-visible}
2647 @item @code{Custos}              @tab @code{Staff}          @tab @code{end-of-line-visible}
2648 @item @code{DoublePercentRepeat} (Doppel-Prozent-Wiederholung @tab @code{Voice}          @tab @code{begin-of-line-invisible}
2649 @c omit KeyCancellation until it can be explained -td
2650 @c @item @code{KeyCancellation}  @tab ??             @tab @code{begin-of-line-invisible}
2651 @item @code{KeySignature} (Tonart)       @tab @code{Staff}          @tab @code{begin-of-line-visible}
2652 @c omit LeftEdge until it can be explained -td
2653 @c @item @code{LeftEdge}         @tab @code{Score}          @tab @code{center-invisible}
2654 @item @code{OctavateEight} (Oktavierungs-Acht)      @tab @code{Staff}          @tab @code{begin-of-line-visible}
2655 @item @code{RehearsalMark} (Übungszeichen)      @tab @code{Score}          @tab @code{end-of-line-invisible}
2656 @item @code{TimeSignature} (Taktart)      @tab @code{Staff}          @tab @code{all-visible}
2657
2658 @end multitable
2659
2660 Das Beispiel unten zeigt die Verwendung der Vektor-Form um die
2661 Sichtbarkeit von Taktlinien zu bestimmten:
2662
2663 @lilypond[quote,verbatim,relative=1,ragged-right]
2664 f4 g a b
2665 f4 g a b
2666 % Remove bar line at the end of the current line
2667 \once \override Score.BarLine #'break-visibility = #'#(#f #t #t)
2668 \break
2669 f4 g a b
2670 f4 g a b
2671 @end lilypond
2672
2673 Obwohl alle drei Bestandteile des Vektors, mit denen
2674 @code{break-visibility} definiert wird, vorhanden sein
2675 müssen, haben nicht alle eine Auswirkung auf jedes
2676 Layout-Objekt, und einige Kombinationen können sogar
2677 Fehler hervorrufen.  Es gelten die folgenden Einschränkungen:
2678
2679 @itemize @bullet
2680 @item Taktstriche können nicht zu Beginn einer Zeile gesetzt werden.
2681 @item Eine Taktzahl kann nicht zu Beginn der ersten Zeile gesetzt
2682 werden, außer wenn er nicht 1 ist.
2683 @item Schlüssel -- siehe unten.
2684 @item Doppel-Prozent-Wiederholungen werden entweder alle ausgegeben
2685 oder alle unterdrückt.  Mit @code{begin-of-line-invisible} werden
2686 sie ausgegeben, mit @code{all-invisible} unterdrückt.
2687 @item Tonart -- siehe unten.
2688 @item Oktavieruns-Acht -- siehe unten.
2689 @end itemize
2690
2691
2692 @node Special considerations
2693 @unnumberedsubsubsec Special considerations
2694
2695 @strong{@emph{Sichtbarkeit nach expliziten Änderungen}}
2696
2697 @cindex Tonart, Sichtbarkeit nach expliziter Änderung
2698 @cindex Schlüssel, Sichtbarkeit nach expliziter Änderung
2699
2700 @funindex explicitKeySignatureVisibility
2701 @funindex explicitClefVisibility
2702
2703 Die @code{break-visibility}-Eigenschaft kontrolliert die Sichtbarkeit
2704 von Tonarten und Schlüsseländerungen nur zu Beginn einer Zeile,
2705 d.h. nach einem Zeilenumbruch.  Sie hat keinen Einfluss auf die
2706 Sichtbarkeit von Tonarten bzw. Schlüsseln, die nach einer
2707 expliziten Tonart- oder Schlüsseländerung in oder am Ende einer
2708 Zeile angezeigt werden.  Im nächsten Beispiel ist die Tonartangabe
2709 nach dem expliziten Wechsel zu B-Dur immer noch sichtbar, obwohl
2710 @code{all-invisible} eingesetzt wurde:
2711
2712 @lilypond[quote,verbatim,relative=1,ragged-right]
2713 \key g \major
2714 f4 g a b
2715 % Try to remove all key signatures
2716 \override Staff.KeySignature #'break-visibility = #all-invisible
2717 \key bes \major
2718 f4 g a b
2719 \break
2720 f4 g a b
2721 f4 g a b
2722 @end lilypond
2723
2724 Die Sichtbarkeit derartiger expliziter Tonart- und Schlüsseländerungen
2725 wird von den @code{explicitKeySignatureVisibility}- und
2726 @code{explicitClefVisibility}-Eigenschaften kontrolliert.  Sie
2727 entsprechen der @code{break-visibility}-Eigenschaft und beide
2728 brauchen drei Boolsche Werte bzw. die oben aufgelisteten vordefinierten
2729 Funktionen als Argument, genau wie @code{break-visibility}.
2730 Beide sind Eigenschaft des @code{Staff}-Kontextes, nicht der
2731 Layout-Objekte selber, weshalb sie mit dem Befehl @code{\set}
2732 eingesetzt werden.  Beide sind standardmäßig auf die Funktion
2733 @code{all-visible} gesetzt.  Diese Eigenschaften kontrollieren nur
2734 die Sichtbarkeit von Tonarten bzw. Schlüssel, die von expliziten
2735 Änderungen herrühren, und haben keinen Einfluss auf Tonarten und
2736 Schlüssel zu Beginn einer Zeile -- um diese zu beeinflussen, muss
2737 @code{break-visibility} benutzt werden.
2738
2739 @lilypond[quote,verbatim,relative=1,ragged-right]
2740 \key g \major
2741 f4 g a b
2742 \set Staff.explicitKeySignatureVisibility = #all-invisible
2743 \override Staff.KeySignature #'break-visibility = #all-invisible
2744 \key bes \major
2745 f4 g a b \break
2746 f4 g a b
2747 f4 g a b
2748 @end lilypond
2749
2750 @strong{@emph{Sichtbarkeit von erinnernden Versetzungszeichen}}
2751
2752 Um erinnernde Versetzungszeichen zu entfernen, die nach einer
2753 expliziten Tonartänderung auftreten, muss die @code{Staff}-Eigenschaft
2754 @code{printKeyCancellation} auf @code{#f} gesetzt werden:
2755
2756 @lilypond[quote,verbatim,relative=1,ragged-right]
2757 \key g \major
2758 f4 g a b
2759 \set Staff.explicitKeySignatureVisibility = #all-invisible
2760 \set Staff.printKeyCancellation = ##f
2761 \override Staff.KeySignature #'break-visibility = #all-invisible
2762 \key bes \major
2763 f4 g a b \break
2764 f4 g a b
2765 f4 g a b
2766 @end lilypond
2767
2768 Mit diesen Veränderungen bleiben nur noch die Versetzungszeichen
2769 vor den Noten übrig um den Wechsel der Tonart anzuzeigen.
2770
2771 @strong{@emph{Automatische Takte}}
2772
2773 @funindex automaticBars
2774
2775 @cindex Taktstriche, unterdrücken
2776
2777 Ein Sonderfall sind die automatischen Taktstriche, die mit der
2778 Eigenschaft @code{automaticBars} im @code{Score}-Kontext
2779 ausgeschaltet werden können.  Wenn sie auf @code{#f} gesetzt
2780 ist, werden Taktstrich nicht automatisch ausgegeben sondern
2781 müssen explizit mit dem @code{\bar}-Befehl eingegeben werden.
2782 Anders als bei dem @code{\cadenzaOn}-Befehl werden die Takte
2783 allerdings immer noch gezählt.  Takterstellung wird später
2784 wieder mit diesem Zahl aufgenommen, wenn die Eigenschaft
2785 wieder auf @code{#t} gesetzt wird.  Wenn sie den Wert @code{#f}
2786 hat, können Zeilenumbrüche nur an expliziten @code{\bar}-Befehlen
2787 auftreten.
2788
2789 @c TODO Add example
2790
2791 @strong{@emph{Oktavierte Schlüssel}}
2792
2793 @cindex oktavierte Schlüssel, Sichtbarkeit
2794 @cindex Sichtbarkeit von oktavierten Schlüsseln
2795 @cindex Schlüssel, Sichtbarkeit der Oktavierung
2796
2797 Das kleine Oktavierungssymbol von oktavierten Notenschlüsseln
2798 wird durch das @code{OctavateEight}-Layout-Objekt erstellt.
2799 Seine Sichtbarkeit wird unabhängig vom @code{Clef}-Objekt
2800 bestimmt, sodass notwendige Veränderungen von @code{break-visibility}
2801 sowohl für @code{Clef} als auch für @code{OctavateEight} vorgenommen
2802 werden müssen, damit derartige Schlüssel entfernt werden.
2803
2804 Bei expliziten Schlüsseländerungn kontrolliert die
2805 @code{explicitClefVisibility}-Eigenschaft wohl das
2806 Schlüsselsymbol als auch das damit verknüpfte Oktavierungssymbol.
2807
2808 @seealso
2809 Handbuch zum Lernen:
2810 @rlearning{Visibility and color of objects}
2811
2812
2813 @node Line styles
2814 @subsection Line styles
2815
2816 Einige Aufführungsanweisungen (z. B. @i{rallentando} und
2817 @i{accelerando} oder Triller werden als Text gesetzt und
2818 möglicherweise über mehrere Takte mit Linien fortgeführt,
2819 die teilweise gestrichelt oder gewellt sind.
2820
2821 Alle benutzen die gleichen Routinen wie das Glissando,
2822 um Text und Linien zu produzieren, weshalb auch eine
2823 Veränderungen der Erscheinung auf gleiche Weise vonstatten
2824 geht.  Die Ausgabe erfolgt durch einen Strecker (engl. spanner), und
2825 die Routine, die ihn setzt, heißt @code{ly:line-interface::print}.
2826 Diese Routine bestimmt die exakte Position von zwei
2827 @i{Strecker-Punkten} und zeichnet eine Linie zwischen sie
2828 im gewünschten Linienstil.
2829
2830 Hier einige Beispiele, welche Linienstile möglich sind
2831 und wie sie verändert werden können:
2832
2833 @lilypond[relative=2,ragged-right,verbatim,fragment]
2834 d2 \glissando d'2
2835 \once \override Glissando #'style = #'dashed-line
2836 d,2 \glissando d'2
2837 \override Glissando #'style = #'dotted-line
2838 d,2 \glissando d'2
2839 \override Glissando #'style = #'zigzag
2840 d,2 \glissando d'2
2841 \override Glissando #'style = #'trill
2842 d,2 \glissando d'2
2843 @end lilypond
2844
2845 Die Position der Endpunkte des Streckers werden in
2846 Realzeit für jedes graphische Objekt errechnet, aber
2847 es ist möglich, sie manuell vorzugeben:
2848
2849 @c FIXME Complete
2850 @lilypond[relative=2,ragged-right,verbatim,fragment]
2851 e2 \glissando f
2852 \once \override Glissando #'(bound-details right Y) = #-2
2853 e2 \glissando f
2854 @end lilypond
2855
2856 Der Wert von @code{Y} wird für den rechten Endpunkt auf
2857 @code{-2} gesetzt.  Die linke Seite kann ähnlich angepasst
2858 werden, indem man @code{left} antelle von @code{right} angibt.
2859
2860 Wenn @code{Y} nicht gesetzt ist, wird der Wert ausgehend von
2861 der vertikalen Position der linken und rechten Anbindepunkte
2862 des Streckers errechnet.
2863
2864 Andere Anpassungen der Strecker sind auch möglich, für Einzelheiten
2865 siehe @ref{Spanners}.
2866
2867
2868 @node Rotating objects
2869 @subsection Rotating objects
2870
2871 Layout-Objekte und Textbeschriftungselemente können zu einem
2872 beliebigen Winkel um einen beliebigen Punkt herum gedreht
2873 werden, aber die Methode, mit der die Änderung vorgenommen
2874 werden muss, unterscheidet sich je nach Objekt.
2875
2876 @menu
2877 * Rotating layout objects::
2878 * Rotating markup::
2879 @end menu
2880
2881 @node Rotating layout objects
2882 @unnumberedsubsubsec Rotating layout objects
2883
2884 @cindex Drehen von Objekten
2885 @cindex Objekte, Drehen
2886
2887 Alle Layout-Objekte, die das @code{grob-interface} unterstützen,
2888 können gedreht werden, indem man ihre @code{rotation}-Eigenschaft
2889 einstellt.  Sie erhält eine Liste mit drei Einträgen: den
2890 Winkel der Drehung gegen den Uhrzeiger sowie die X- und
2891 Y-Koordinaten des Punktes relativ zum Referenzpunkt des Objekts,
2892 um welchen herum die Drehung stattfinden soll.  Der Winkel
2893 der Drehung wird in Grad angegeben, die Koordinaten in
2894 Notenlinienzwischenräumen.
2895
2896 Der Winkel der Drehung und die Koordinaten des Drehpunktes müssen
2897 durch Ausprobieren herausgefunden werden.
2898
2899 @cindex Crescendoklammern, gedreht
2900 @cindex gedrehte Crescendoklammern
2901 @cindex schräge Crescendoklammern
2902 @cindex Klammern, Crescendo, schräg
2903
2904 Es gibt nur wenige Situationen, in welchen die Drehung eines
2905 Layout-Objektes sinnvoll ist.  Das folgende Beispiel zeigt
2906 eine sinnvolle Anwendung:
2907
2908 @lilypond[quote,verbatim,relative=1]
2909 g4\< e' d' f\!
2910 \override Hairpin #'rotation = #'(20 -1 0)
2911 g,,4\< e' d' f\!
2912 @end lilypond
2913
2914
2915 @node Rotating markup
2916 @unnumberedsubsubsec Rotating markup
2917
2918 Jede Textbeschriftung kann gedreht werden, indem vor die Anweisung
2919 der Befehl @code{\rotate} gesetzt wird.  Der Befehl hat zwei
2920 Argumente:  Den Winkel der Drehung in Grad gegen den Uhrzeiger und
2921 der Text, der gedreht dargestllt werden soll.  Die Ausdehnung des
2922 Textes wird nicht gedreht, sie erhält ihren Wert von den Extrempunkten
2923 der x- und y-Koordinaten des gedrehten Textes.  Im folgenden
2924 Beispiel wird die @code{outside-staff-priority}-Eigenschaft auf
2925 @code{#f} gesetzt, damit automatische Zusammenstöße nicht verhindert
2926 werden, wodurch andernfalls einige der Texte zu hoch geschoben werden
2927 würden.
2928
2929 @lilypond[quote,verbatim,relative=1]
2930 \override TextScript #'outside-staff-priority = ##f
2931 g4^\markup { \rotate #30 "a G" }
2932 b^\markup { \rotate #30 "a B" }
2933 des^\markup { \rotate #30 "a D-Flat" }
2934 fis^\markup { \rotate #30 "an F-Sharp" }
2935 @end lilypond
2936
2937
2938 @node Advanced tweaks
2939 @section Advanced tweaks
2940
2941 Dieser Abschnitt behandelt verschiedene Möglichkeiten, das
2942 Aussehen des Notenbildes zu polieren.
2943
2944 @menu
2945 * Aligning objects::
2946 * Vertical grouping of grobs::
2947 * Modifying stencils::
2948 * Modifying shapes::
2949 @end menu
2950
2951
2952 @seealso
2953 Handbuch zum Lernen:
2954 @rlearning{Tweaking output},
2955 @rlearning{Other sources of information}.
2956
2957 Notationsreferenz:
2958 @ref{Explaining the Internals Reference},
2959 @ref{Modifying properties},
2960 @ref{Interfaces for programmers}.
2961
2962 Installierte Dateien:
2963 @file{scm/@/define@/-grobs@/.scm}.
2964
2965 Schnipsel:
2966 @rlsr{Tweaks and overrides}.
2967
2968 Referenz der Interna:
2969 @rinternals{All layout objects}.
2970
2971
2972 @node Aligning objects
2973 @subsection Aligning objects
2974
2975 Graphische Objekte, die das @code{self-alignment-interface} und/obder
2976 das @code{side-position-interface} unterstützen, können an einem
2977 vorher gesetzten Objekt auf verschiedene Weise ausgerichtet werden.
2978 Eine Liste derartiger Objekte findet sich in
2979 @rinternals{self-alignment-interface} und @rinternals{side-position-interface}.
2980
2981 Alle graphischen Objekte haben einen Referenzpunkt, eine horizontale
2982 Ausdehnung und eine vertikale Ausdehnung.  Die horizontale Ausdehnung ist
2983 ein Zahlenpaar, mit dem die Verschiebung der rechten und linken Ecken
2984 ausgehend vom Referenzpunkt angegeben werden, wobei Verschiebungen
2985 nach links mit negativen Zahlen notiert werden.  Die vertikale Ausdehnung
2986 ist ein Zahlenparr, das die Verschiebung der unteren und oberen
2987 Ränder vom Referenzpunkt ausgehend angibt, wobei Verschiebungen nach
2988 unten mit negativen Zahlen notiert werden.
2989
2990 Die Position eines Objektes auf dem Notensystem wird mit Werten
2991 von @code{X-offset} und @code{Y-offset} angegeben.  Der Wert von
2992 @code{X-offset} gibt die Verschiebung von der x-Koordinate des
2993 Referenzpunkts des Elternobjektes an, der Wert von @code{Y-offset}
2994 die Verschiebung ausgehend von der Mittellinie des Notensystemes.
2995 Die Werte von @code{X-offset} und @code{Y-offset} können direkt
2996 bestimmt werden oder durch Prozeduren errechnet werden, sodass
2997 eine Ausrichtung mit dem Elternobjekt auf verschiedene Weise
2998 erreicht werden kann.
2999
3000 @warning{Viele Objekte brauchen besondere Überlegungen zu ihrer
3001 Position, weshalb in manchen Fällen manuell gesetzte Werte von
3002 @code{X-offset} oder @code{Y-offset} ignoriert oder verändert
3003 werden können, obwohl das Objekt das
3004 @code{self-alignment-interface} unterstützt.}
3005
3006 Ein Versetzungszeichen beispielsweise kann vertikal durch Veränderung
3007 von @code{Y-offset} verschoben werden, aber Änderungen von
3008 @code{X-offset} haben keine Auswirkung.
3009
3010 Übungszeichen können an trennbaren Objekten (wie Taktstrichen,
3011 Schlüsseln, Taktarten und Tonartvorzeichen) ausgerichtet werden.
3012 In @code{break-aligned-interface} finden sich besondere Eigenschaften,
3013 mit denen Übungszeichen an derartigen objekten ausgerichtet werden können.
3014
3015
3016 @menu
3017 * Setting @code{X-offset} and @code{Y-offset} directly::
3018 * Using the @code{side-position-interface}::
3019 * Using the @code{self-alignment-interface}::
3020 * Using the @code{break-alignable-interface}::
3021 @end menu
3022
3023 @node Setting @code{X-offset} and @code{Y-offset} directly
3024 @unnumberedsubsubsec Setting @code{X-offset} and @code{Y-offset} directly
3025
3026 Numereische Werte können den @code{X-offset}- und @code{Y-offset}-Eigesnchaften
3027 vieler Objekte zugewiesen werden.  Das folgende Beispiel zeigt
3028 drei Noten mit der Standardposition von Fingersatzanweisungen
3029 und die Positionen, wenn @code{X-offset} und @code{Y-offset}
3030 verändert werden.
3031
3032 @lilypond[verbatim,quote,relative=2]
3033 a-3
3034 a
3035 -\tweak #'X-offset #0
3036 -\tweak #'Y-offset #0
3037 -3
3038 a
3039 -\tweak #'X-offset #-1
3040 -\tweak #'Y-offset #1
3041 -3
3042 @end lilypond
3043
3044
3045
3046 @node Using the @code{side-position-interface}
3047 @unnumberedsubsubsec Using the @code{side-position-interface}
3048
3049 Ein Objekt, das die @code{side-position-interface}-Schnittstellt
3050 unterstützt, kann neben sein Elternobjekt gesetzt werden,
3051 sodass zwei definierte Enden der Objekte sich berühren.
3052 Das Objekt kann über, unter, rechts oder links vom
3053 Ursprungsobjekt positioniert werden.  Das Ursprungsobjekt
3054 kann nicht definiert werden: es ergibt sich aus der Reihenfolge
3055 der Objekte in der Eingabe.  Die meisten Objekte haben
3056 einen Notenkopf als Ursprung assoziiert.
3057
3058 Die Werte von @code{side-axis} und @code{direction} bestimmen,
3059 wo das Objekt platziert werden soll, wie in der Tabelle
3060 zu sehen:
3061
3062 @c TODO add an example of each to the table
3063
3064 @multitable @columnfractions .3 .3 .3
3065 @headitem @code{side-axis}-  @tab @code{direction}-  @tab
3066 @headitem Eigenschaft          @tab Eigenschaft          @tab Platzierung
3067
3068 @item     @code{0}          @tab @code{-1}         @tab links
3069 @item     @code{0}          @tab @code{1}          @tab rechts
3070 @item     @code{1}          @tab @code{-1}         @tab unten
3071 @item     @code{1}          @tab @code{1}          @tab oben
3072
3073 @end multitable
3074
3075 Wenn @code{side-axis} gleich @code{0} ist, sollte @code{X-offset}
3076 auf die Prozedur @code{ly:side-position-interface::x-aligned-side}
3077 gesetzt werden.  Diese Prozedur errechnet den richtigen Wert für
3078 @code{X-offset}, sodass das Objekt auf der rechten oder linken
3079 Seite des Ursprungs angeordnet wird, entsprechend dem Wert
3080 der @code{direction}-Eigenschaft.
3081
3082 Wenn @code{side-axis} gleich @code{1} ist, sollte @code{Y-offset}
3083 auf die Prozedur @code{ly:side-position-interface::y-aligned-side}
3084 gesetzt werden.  Diese Prozedur errechnet den richtigen Wert für
3085 @code{Y-offset}, sodass das Objekt über oder unter dem Ursprungsobjekt
3086 angeordnet wird, entsprechend dem Wert der @code{direction}-Eigenschaft.
3087
3088
3089
3090
3091 @node Using the @code{self-alignment-interface}
3092 @unnumberedsubsubsec Using the @code{self-alignment-interface}
3093
3094 @emph{Selbstausrichtende Objekte horizontal}
3095
3096 Die horizontale Ausrichtung eines Objektes, das die
3097 @code{self-alignment-interface}-(Selbstausrichtungs)-Schnittstelle
3098 unterstützt, wird durch den Wert von @code{self-alignment-X}
3099 kontrolliert, vorausgesetzt die Eigenschaft @code{X-offset} des
3100 Objektes ist auf @code{ly:self-alignment-interface::x-aligned-on-self}
3101 gesetzt.  @code{self-alignment-X} kann eine beliebige reale
3102 Zahl zugewiesen werden, in Einheiten der Hälfte der
3103 X-Gesamtausdehnung des Objekts.  Negative Werte verschieben
3104 das Objekt nach rechts, positive nach links.  Ein Wert von
3105 @code{0} zentriert das Objekt auf dem Referenzpunkt des
3106 Ursprungs, ein Wert von @code{-1} richtet die linke Ecke des
3107 Objekts am Referenzpunkt des Ursprungsobjektes aus, ein
3108 Wert von @code{1} richtet die rechte Ecke des Objektes am
3109 Referenzpunkt des Ursprungsobjektes aus.  Die Symbole
3110 @code{LEFT}, @code{CENTER} und @code{RIGHT} können anstelle
3111 von @code{-1, 0, 1} eingesetzt werden.
3112
3113 Normalerweise würde der @code{\override}-Befehl benutzt werden, um
3114 die Werte von @code{self-alignment-X} zu verändern, aber der
3115 @code{\tweak}-Befehl kann benutzen, um verschiedene Anmerkungen
3116 an einer einzigen Note auszurichten:
3117
3118 @lilypond[quote,verbatim,relative=1]
3119 a'
3120 -\tweak #'self-alignment-X #-1
3121 ^"left-aligned"
3122 -\tweak #'self-alignment-X #0
3123 ^"center-aligned"
3124 -\tweak #'self-alignment-X #RIGHT
3125 ^"right-aligned"
3126 -\tweak #'self-alignment-X #-2.5
3127 ^"aligned further to the right"
3128 @end lilypond
3129
3130
3131 @emph{Objekte vertikal automatisch ausrichten}
3132
3133 Objekte können auf ähnliche Weise auch vertikal aneinander
3134 ausgerichtet werden, wenn ihre @code{Y-offset}-Eigenschaft
3135 auf @code{ly:self-alignment-interface::y-aligned-on-self}
3136 gesetzt ist.  Oft greifen jedoch auch andere Mechanismen
3137 bei der vertikalen Ausrichtung ein:  Der Wert von
3138 @code{Y-offset} ist nur eine der Variablen, die für die
3139 Berechnung benutzt werden.  Darum ist es kompliziert, den
3140 Wert für einige Objekte richtig anzupassen.  Die Einheiten
3141 sind Halbe der vertikalen Ausdehnung des Objektes, welche
3142 normalerweise recht klein ist, sodass ziemlich große Werte
3143 erforderlich sein können.  Der Wert @code{-1} richtet die
3144 untere Kante des Objekts am Referenzpunkt des Ursprungsobjektes
3145 aus, der Wert @code{0} richtet die Mitte des Objekts am
3146 Referenzpunkt des Ursprungsobjektes aus und der Wert @code{1}
3147 richtet die Oberkante des Objektes am Referenzpunkt des
3148 Ursprungsobjektes aus.  Die Symbole @code{DOWN}, @code{CENTER}
3149 und @code{UP} können anstelle von @code{-1, 0, 1} benutzt
3150 werden.
3151
3152 @emph{Automatische Ausrichtung in beide Richtungen}
3153
3154 Indem sowohl @code{X-offset} als auch @code{Y-offset} eingestllt
3155 werden, kann ein Objekt gleichzeitig in beiden Richtungen ausgerichtet
3156 werden.
3157
3158 Das folgende Beispiel zeigt, wie man eine Fingersatzanweisung so
3159 ausrichtet, dass sie nah am Notenkopf bleibt.
3160
3161 @lilypond[quote,verbatim,relative=2]
3162 a
3163 -\tweak #'self-alignment-X #0.5  % move horizontally left
3164 -\tweak #'Y-offset #ly:self-alignment-interface::y-aligned-on-self
3165 -\tweak #'self-alignment-Y #-1  % move vertically up
3166 -3  % third finger
3167 @end lilypond
3168
3169
3170
3171
3172 @node Using the @code{break-alignable-interface}
3173 @unnumberedsubsubsec Using the @code{break-alignable-interface}
3174
3175 @cindex Ausrichtung an Objekten
3176
3177 @funindex break-align-symbols
3178
3179 Übungszeichen und Taktzahlen können an Notationsobjekten (ausschließlich
3180 Taktstriche) ausgerichtet werden.  Zu diesen Objekten gehören
3181 @code{ambitus}, @code{breathing-sign}, @code{clef}, @code{custos},
3182 @code{staff-bar}, @code{left-edge}, @code{key-cancellation},
3183 @code{key-signature} und @code{time-signature}.
3184
3185 Standardmäßig werden Übungszeichen und Taktzahlen horizontal
3186 über dem Objekt zentriert:
3187
3188 @lilypond[verbatim,quote,relative=1]
3189 e1
3190 % the RehearsalMark will be centered above the Clef
3191 \override Score.RehearsalMark #'break-align-symbols = #'(clef)
3192 \key a \major
3193 \clef treble
3194 \mark "↓"
3195 e
3196 % the RehearsalMark will be centered above the TimeSignature
3197 \override Score.RehearsalMark #'break-align-symbols = #'(time-signature)
3198 \key a \major
3199 \clef treble
3200 \time 3/4
3201 \mark "↓"
3202 e2.
3203 @end lilypond
3204
3205 Eine Liste von möglichen Objekten zur Ausrichtung kann definiert
3206 werden.  Wenn eins dieser Objekte an der aktuellen Stelle unsichtbar
3207 ist (etwa durch Einstellung von @code{break-visibility} oder die
3208 expliziten Sichtbarkeitseinstellungen von Taktart und Vorzeichen),
3209 werden Übungszeichen und Taktzahlen an dem ersten Objekt in der
3210 Liste ausgerichtet, dass sichtbar ist.  Wenn keine Objekte in der
3211 Liste sichtbar sind, wird das Objekt am Taktstrich ausgerichtet.
3212 Wenn der Taktstrich unsichtbar ist, wird das Objekt an der Stelle
3213 ausgerichtet, an der sich der Taktstrich befinden würde.
3214
3215 @lilypond[verbatim,quote,relative=1]
3216 e1
3217 % the RehearsalMark will be centered above the Key Signature
3218 \override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef)
3219 \key a \major
3220 \clef treble
3221 \mark "↓"
3222 e
3223 % the RehearsalMark will be centered above the Clef
3224 \set Staff.explicitKeySignatureVisibility = #all-invisible
3225 \override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef)
3226 \key a \minor
3227 \clef bass
3228 \mark "↓"
3229 e,
3230 @end lilypond
3231
3232 Die Ausrichtung des Übungszeichen relativ zum Notationsobjekt kann
3233 verändert werden, wie das nächste Beispiel zeigt.  In einer Partitur
3234 mit vielen Systemen würde man diese Einstellung für alle Systeme
3235 vornehmen.
3236
3237 @lilypond[verbatim,quote,relative=1]
3238 % The RehearsalMark will be centered above the KeySignature
3239 \override Score.RehearsalMark #'break-align-symbols = #'(key-signature)
3240 \key a \major
3241 \clef treble
3242 \time 4/4
3243 \mark "↓"
3244 e1
3245 % The RehearsalMark will be aligned with the left edge of the KeySignature
3246 \once \override Score.KeySignature #'break-align-anchor-alignment = #LEFT
3247 \mark "↓"
3248 \key a \major
3249 e
3250 % The RehearsalMark will be aligned with the right edge of the KeySignature
3251 \once \override Score.KeySignature #'break-align-anchor-alignment = #RIGHT
3252 \key a \major
3253 \mark "↓"
3254 e
3255 @end lilypond
3256
3257 Das Übungszeichen kann auch nach rechts oder links um einen beliebigen Wert
3258 verschoben werden.  Die Einheiten sind in Notenlinienzwischenräumen:
3259
3260 @lilypond[verbatim,quote,relative=1]
3261 % The RehearsalMark will be aligned with the left edge of the KeySignature
3262 % and then shifted right by 3.5 staff-spaces
3263 \override Score.RehearsalMark #'break-align-symbols = #'(key-signature)
3264 \once \override Score.KeySignature #'break-align-anchor = #3.5
3265 \key a \major
3266 \mark "↓"
3267 e
3268 % The RehearsalMark will be aligned with the left edge of the KeySignature
3269 % and then shifted left by 2 staff-spaces
3270 \once \override Score.KeySignature #'break-align-anchor = #-2
3271 \key a \major
3272 \mark "↓"
3273 e
3274 @end lilypond
3275
3276
3277
3278 @node Vertical grouping of grobs
3279 @subsection Vertical grouping of grobs
3280
3281 Die graphischen Objekte @code{VerticalAlignment} und
3282 @code{VerticalAxisGroup} funktionieren zusammen.
3283 @code{VerticalAxisGroup} gruppiert unterschiedliche Objekte
3284 wie Notensysteme, Gesangstext usw. zusammen.
3285 @code{VerticalAlignment} richtet die unterschiedlichen
3286 Objektgruppen dann aneinander aus.  Es gibt normalerweise
3287 nur ein @code{VerticalAlignment} in einer Partitur, aber
3288 jedes Notensystem, Gesangstext usw. hat eine eigene
3289 @code{VerticalAxisGroup}.
3290
3291
3292 @node Modifying stencils
3293 @subsection Modifying stencils
3294
3295 Alle Layout-Objekte haben eine @code{stencil}-(Stempel-)Eigenschaft,
3296 die ein Teil von @code{grob-interface} ist.  Diese Eigenschaft
3297 ist normalerweise als eine Funktion definiert, die auf das jweilige
3298 Objekt angepasst ist und das Symbol erstellt, dass dann im Druckbild
3299 erscheint.  Beispielsweise die Standardeinstellung für die
3300 @code{stencil}-Eigenschaft von @code{MultiMeasureRest}
3301 (Ganztaktpausenobjekt) ist @code{ly:multi-measure-rest::print}.
3302
3303 Das Standardsymbol für jedes Objekt kann ersetzt werden, indem man
3304 die @code{stencil}-Eigenschaft verändert, sodass sie auf eine
3305 andere, speziell geschriebene Prozedur verweist.  Das erfordert
3306 einen hohen Grad an Kenntnis der LilyPond-Interna, aber es gibt
3307 einen einfacheren Weg, mit dem man oft vergleichbarere Ergebnisse
3308 erzielen kann.
3309
3310 Dieser Weg besteht darin, die @code{stencil}-Eigenschaft auf die
3311 Prozedur zu verweisen, die Text ausgibt: @code{ly:text-interface::print}
3312 und eine @code{text}-Eigenschaft zu dem Objekt hinzuzufügen,
3313 in welcher dann die Textbeschriftung definiert wird, mit der
3314 das entsprechende Symbol dargestellt wird.  Aufgrund der
3315 Flexibilität der Textbeschriftung ist hier sehr viel möglich.
3316 Siehe zu Details insbesondere
3317 @ref{Graphic notation inside markup}.
3318
3319 Das folgende Beispiel zeigt diese Methode, indem das Symbol
3320 der Notenköpfe in ein Kreuz innerhalb eines Kreises umgewandelt
3321 wird.
3322
3323 @lilypond[verbatim,quote]
3324 XinO = {
3325   \once \override NoteHead  #'stencil = #ly:text-interface::print
3326   \once \override NoteHead #'text = \markup {
3327     \combine
3328       \halign #-0.7 \draw-circle #0.85 #0.2 ##f
3329       \musicglyph #"noteheads.s2cross"
3330   }
3331 }
3332 \relative c'' {
3333   a a \XinO a a
3334 }
3335 @end lilypond
3336
3337 Alle Schriftzeichen in der feta-Schriftart können
3338 mit dem @code{\musicglyph}-Befehl erreicht werden.
3339 Siehe auch @ref{The Feta font}.
3340
3341
3342
3343 @seealso
3344 Notationsreferenz:
3345 @ref{Graphic notation inside markup},
3346 @ref{Formatting text},
3347 @ref{Text markup commands},
3348 @ref{The Feta font}.
3349
3350
3351
3352 @node Modifying shapes
3353 @subsection Modifying shapes
3354
3355 @menu
3356 * Modifying ties and slurs::
3357 @end menu
3358
3359 @node Modifying ties and slurs
3360 @unnumberedsubsubsec Modifying ties and slurs
3361
3362 Binde-, Legato- und Phrasierungsbögen werden als Bézierkurven
3363 dritter Ordnung gezeichnet.  Wenn die Form eines automatischen
3364 Bogens nicht optimal ist, kann sie manuell verändert werdne,
3365 indem man die vier erforderlichen Kontrollpunkte angibt.
3366
3367
3368 Bézierkurven dritter Ordnung (auch als quadratische Bézierkurven
3369 bezeichnet) werden durch vier Kontrollpunkte definiert.  Der
3370 erste und vierte Kontrollpunkt geben Beginn und Ende der Kurve
3371 an.  Die zwei Punkte dazwischen werden benutzt, um die Form
3372 der Kurve zu bestimmen.  Im Internet gibt es Animationen,
3373 die illustrieren, wie eine derartige Kurve gezeichnet wird,
3374 aber die folgende Beschreibung kann hilfreich sein.  Die
3375 Kurve beginnt am ersten Kontrollpunkt in Richtung des zweiten,
3376 wobei sie sich schrittweise krümmt um zum dritten Kontrollpunkt
3377 zu gelangen, von wo aus sie sich weiter zum vierten Punkt hin
3378 krümmt.  Die Form der Kurve wird vollständig von den vier
3379 Punkten definiert.
3380
3381 Hier ein Beispiel eines Falles, in dem der Bogen nicht optimal
3382 erscheint, und wo auch @code{\tieDown} das Problem nicht
3383 lösen würde.
3384
3385 @lilypond[verbatim,quote,relative=1]
3386 <<
3387   { e1 ~ e }
3388 \\
3389   { r4 <g c,> <g c,> <g c,> }
3390 >>
3391 @end lilypond
3392
3393 Eine Möglichkeit, diesen Bogen zu verbessern, ist es, seine
3394 Kontrollpunkte manuell zu verändern:
3395
3396 Die Koordinaten von Bézierkontrollpunkten werden in
3397 Notenlinienzwischenräumen angegeben.  Die X-Achse
3398 ist relativ zum Referenzpunkt der Note, an die der Bogen
3399 angefügt wird, und die Y-Achse relativ zur Mittellinie
3400 des Notensystems.  Die Koordinaten werden als eine Liste
3401 von vier Paaren an realen Dezimalzahlen eingegeben.  Eine
3402 Möglichkeit ist es, die Koordinaten der zwei Endpunkte
3403 zu schätzen und dann die zwei Zwischenpunkte zu erraten.
3404 Die optimalen Werte können nur durch Ausprobieren gefunden
3405 werden.
3406
3407 Es lohnt sich daran zu denken, dass eine symmtrische Kurve
3408 symmetrische Kontrollpunkte benötigt, und dass Bézierkurven
3409 die nützliche Eigenschaft haben, dass eine Transformation
3410 der Kurve wie eine Übersetzung, Drehung oder Skalierung
3411 der Kurve erreicht werden kann, indem man die gleiche
3412 Skalierung auf die Kontrollpunkte anwendet.
3413
3414 In dem obigen Beispiel geben folgende Werte einen
3415 zufriedenstellenden Bogen:
3416
3417 @lilypond[verbatim,quote,relative=1]
3418 <<
3419   \once \override Tie
3420     #'control-points = #'((1 . -1) (3 . 0.6) (12.5 . 0.6) (14.5 . -1))
3421   { e1 ~ e1 }
3422 \\
3423   { r4 <g c,> <g c,> <g c,>4  }
3424 >>
3425 @end lilypond
3426
3427 @knownissues
3428
3429 Es ist nicht möglich, die Form von Bögen anhand ihrer
3430 @code{control-points}-Eigenschaft zu verändern, wenn
3431 mehr als ein Bogen zum gleichen musikalischen Moment
3432 auftritt, nicht einmal mit dem @code{\tweak}-Befehl.
3433
3434
3435
3436
3437
3438