]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/cs/learning/tweaks.itely
941fac0258e16fef8f0896f20bccb938cefb3d93
[lilypond.git] / Documentation / cs / learning / tweaks.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: cs -*-
2
3 @ignore
4     Translation of GIT committish: a463d80d4be008ce05b12de86fc21f2b7c1c120f
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  For details, see the Contributors'
8     Guide, node Updating translation committishes.
9 @end ignore
10
11 @c \version "2.19.22"
12
13 @node Ladění výstupu
14 @chapter Ladění výstupu
15 @translationof Tweaking output
16
17 In diesem Kapitel wird erklärt, wie man die Notenausgabe verändern
18 kann. In LilyPond kann man sehr viel konfigurieren, fast jedes
19 Notenfragment kann geändert werden.
20
21
22 @menu
23 * Základy pro ladění::
24 * Vnitřní referenční příručka::
25 * Vzhled předmětů::
26 * Umístění předmětů::
27 * Střety předmětů::
28 * Další ladění::
29 @end menu
30
31
32 @node Základy pro ladění
33 @section Základy pro ladění
34 @translationof Tweaking basics
35
36 @menu
37 * Úvod do ladění::
38 * Předměty a rozhraní::
39 * Pravidla pro pojmenovávání předmětů a vlastností::
40 * Postupy při ladění::
41 @end menu
42
43 @node Úvod do ladění
44 @subsection Úvod do ladění
45 @translationof Introduction to tweaks
46
47 @qq{Optimierung} (engl. tweaking) ist ein LilyPond-Begriff für die
48 verschiedenen Methoden, die Aktionen zu beeinflussen, die während
49 der Kompilation einer Notationsdatei vorgenommen werden sowie auf
50 das Notenbild einzuwirken. Einige dieser Optimierungen sind sehr
51 einfach, andere dagegen recht komplex. Aber insgesamt erlaubt das
52 System an Optimierungen so gut wie alle möglichen Erscheinungsformen
53 für die Notenausgabe.
54
55 In diesem Abschnitt werden die grundlegenden Konzepte vorgestellt,
56 um die Optimierung zu verstehen. Später soll eine Anzahl von fertigen
57 Befehlen bereitgestellt werden, die einfach in die Quelldatei
58 kopiert werden können um den selben Effekt wie im Beispiel
59 zu erhalten. Gleichzeitig zeigen diese Beispiele, wie die Befehle
60 konstruiert werden, so dass Sie in der Lage sein werden, eigene
61 Befehle auf dieser Grundlage zu entwickeln.
62
63 Bevor Sie mit diesem Kapitel beginnen, könnte Sie ein Blick in den
64 Abschnitt @ref{Prostředí a rytci} interessieren, dann
65 prostředí a rytci sowie die Eigenschaften, die mit ihnen
66 verknüpft sind, sind die Voraussetzung, um die Funktionsweise
67 von Optimierungen verstehen zu können.
68
69
70 @node Předměty a rozhraní
71 @subsection Předměty a rozhraní
72 @translationof Objects and interfaces
73
74 @cindex Objekte
75 @cindex Grobs
76 @cindex Spanners
77 @cindex Interfaces
78 @cindex Strecker
79 @cindex Schnittstellen
80 @cindex graphische Objekte (Grob)
81 @cindex Objekteigenschaften
82 @cindex Layout-Objekt
83 @cindex Objekt, Layout-
84 @cindex Eigenschaften von Objekten
85
86 Optimierung bedeutet, die internen Operationen und Strukturen
87 des LilyPond-Programmes zu verändern, darum sollen hier
88 zunächst die wichtigsten Begriffe erklärt werden, die zur
89 Beschreibung dieser Operationen und Strukturen benutzt werden.
90
91 Der Begriff @qq{Objekt} ist ein allgemeiner Begriff, mit dem
92 die Vielzahl an internen Strukturen bezeichnet wird, die LilyPond
93 während der Bearbeitung des Quelltextes erstellt. Wenn etwa
94 ein Befehl wie @code{\new Staff} auftritt, wird ein neues Objekt
95 vom Typ @code{Staff} erstellt. Dieses Objekt @code{Staff} enthält
96 dann alle Eigenschaften, die mit diesem speziellen Notensystem
97 verknüpft sind, wie beispielsweise seine Bezeichnung, Tonart und
98 spezifische Angaben über die Engraver, die innerhalb dieses Systems
99 eingesetzt werden. Für alle anderen Kontexte gibt es genauso
100 Objekte, die deren Eigenschaften beinhalten, beispielsweise für
101 @code{Voice}-Objekte, @code{Score}-Objekte, @code{Lyrics}-Objekte,
102 aber auch für Objekte, die Notationselemente wie die Taktlinien,
103 Notenköpfe, Bögen und Dynamikbezeichnung enthalten. Jedes
104 Objekt hat eine eigene Gruppe an Eigenschaftswerten.
105
106 Bestimmte Objekttypen tragen besondere Bezeichnungen. Objekte, die
107 Notationselemente der gesetzten Ausgabe repräsentieren, also
108 Notenköpfe, Hälse, Bögen, Fingersatz, Schlüssel usw., werden
109 @qq{Layout-Objekte}, oft auch @qq{Graphische Objekte} genannt.
110 Daraus resultiert die künstliche Abkürzung @qq{Grob}.
111 Diese sind auch Objekte im allgemeinen Sinn und haben genauso
112 Eigenschaften, die mit ihnen verknüpft sind, wie etwa Größe, Position,
113 Farbe usw.
114
115 Einige Layout-Objekte sind etwas spezieller. Phrasierungsbögen,
116 Crescendo-Klammern, Oktavierungszeichen und viele andere
117 Grobs sind nicht an einer Stelle plaziert -- sie haben vielmehr
118 einen Anfangspunkt, einen Endpunkt und eventuell noch andere
119 Eigenschaften, die ihre Form bestimmen. Objekte mit solch
120 einer erweiterten Gestalt werden als @qq{Strecker} (engl. Spanners)
121 bezeichnet.
122
123 Es bleibt uns noch übrig zu erklären, was @qq{Schnittstellen}
124 (engl. interface) sind. Wenn auch viele Objekte sehr unterschiedlich
125 sind, haben sie doch oft gemeinsame Eigenschaften, die auf
126 die gleiche Weise verarbeitet werden.  Alle Grobs beispielsweise
127 haben eine Farbe, eine Größe, eine Position usw. und alle
128 diese Eigenschaften werden von LilyPond auf die gleiche Weise
129 verarbeitet, während der Quelltext in Notensatz umgesetzt wird.
130 Um die internen Operationen zu vereinfachen, sind alle diese
131 gemeinsamen Prozesse und Eigenschaften in einem Objekt
132 mit der Bezeichnung @code{grob-interface} (Schnittstelle eines
133 graphischen Objektes) zusammengefasst. Es gibt viele andere
134 Gruppen gemeinsamer Eigenschaften, die jede eine Bezeichnung
135 besitzen, welche auf @code{-interface} endet. Insgesamt
136 gibt es über 100 dieser Schnittstellen. Wir werden später sehen,
137 was es damit auf sich hat.
138
139 Dies waren die Hauptbegriffe, die in diesem Kapitel zur Anwendung
140 kommen sollen.
141
142
143 @node Pravidla pro pojmenovávání předmětů a vlastností
144 @subsection Pravidla pro pojmenovávání předmětů a vlastností
145 @translationof Naming conventions of objects and properties
146
147 @cindex Benennungskonventionen für Objekte
148 @cindex Benennungskonventionen für Eigenschaften
149 @cindex Objekte, Benennungskonventionen
150 @cindex Eigenschaften, Benennungskonventionen
151 @cindex Regeln zur Benennung von Objekten/Eigenschaften
152
153 Es wurden schon früher einige Regeln zur Benennung von
154 Objekten vorgestellt, siehe
155 @ref{Prostředí a rytci}. Hier eine Referenzliste der
156 häufigsten Objekt- und Eigenschaftsbezeichnungen mit
157 den Regeln für ihre Bezeichnung und
158 illustrierenden echten Bezeichnungen. Es wurde @qq{A}
159 für einen beliebigen Großbuchstaben und @qq{aaa} für eine
160 beliebige Anzahl an Kleinbuchstaben eingesetzt. Andere
161 Zeichen werden explizit angegeben.
162
163 @multitable @columnfractions .33 .33 .33
164 @headitem Objekt-/Eigenschaftstyp
165   @tab Naming convention
166   @tab Beispiele
167 @item Kontexte
168   @tab Aaaa oder AaaaAaaaAaaa
169   @tab Staff, GrandStaff
170 @item Layout-Objekte
171   @tab Aaaa oder AaaaAaaaAaaa
172   @tab Slur, NoteHead
173 @item Engraver
174   @tab Aaaa_aaa_engraver
175   @tab Clef_engraver, Note_heads_engraver
176 @item Schnittstellen
177   @tab aaa-aaa-interface
178   @tab grob-interface, break-aligned-interface
179 @item Kontext-Eigenschaften
180   @tab aaa oder aaaAaaaAaaa
181   @tab alignAboveContext, skipBars
182 @item Layout-Objekt-Eigenschaften
183   @tab aaa oder aaa-aaa-aaa
184   @tab direction, beam-thickness
185 @end multitable
186
187 Es wird bald ersichtlich werden, dass die Eigenschaften von
188 unterschiedlichen Objekttypen mit unterschiedlichen Befehlen
189 geändert werden. Deshalb ist es nützlich, aus der
190 Schreibweise zu erkennen, um was
191 für ein Objekt es sich handelt, um den entsprechenden
192 Befehl einsetzen zu können.
193
194
195 @node Postupy při ladění
196 @subsection Postupy při ladění
197 @translationof Tweaking methods
198
199 @cindex override-Befehl
200 @funindex \override
201 @funindex override
202
203 @strong{Der \override-Befehl}
204
205 Wir haben uns schon mit den Befehlen @code{\set}
206 und @code{\with} bekannt gemacht, mit welchen
207 Eigenschaften von @strong{Kontexten} verändert
208 und @strong{Engraver} entfernt oder hinzugefügt
209 werden können. Siehe dazu
210 @ref{Změna vlastností prostředí} und @ref{Přidání a odstranění rytců}. Jetzt wollen wir uns weitere
211 wichtige Befehle anschauen.
212
213 Der Befehl, um die Eigenschaften von @strong{Layout-Objekten}
214 zu ändern, ist @code{\override}. Weil dieser Befehl interne
215 Eigenschaften tief in der Programmstruktur von LilyPond
216 verändern muss, ist seine Syntax nicht so einfach wie die der
217 bisherigen Befehle. Man muss genau wissen, welche Eigenschaft
218 welches Objektes in welchem Kontext geändert werden soll,
219 und welches der neu zu setzende Wert dann ist. Schauen wir
220 uns an, wie das vor sich geht.
221
222 Die allgemeine Syntax dieses Befehles ist:
223
224 @example
225 \override @var{Kontext}.@var{LayoutObjekt} #'@var{layout-eigenschaft} =
226 #@var{Wert}
227 @end example
228
229 @noindent
230 Damit wir die Eigenschaft mit der Bezeichnung @var{layout-property}
231 das Layout-Objektes mit der Bezeichnung@var{LayoutObject},
232 welches ein Mitglied des @var{Kontext}-Kontextes ist, auf den
233 Wert @var{value}.
234
235 Der @var{Kontext} kann (und wird auch normalerweise) ausgelassen
236 werden, wenn der benötigte Kontext eindeutig impliziert ist und einer
237 der untersten Kontexte ist, also etwa @code{Voice}, @code{ChordNames}
238 oder @code{Lyrics}. Auch in diesem Text wird der Kontext oft ausgelassen
239 werden. Später soll gezeigt werden, in welchen Fällen er ausdrücklich
240 definiert werden muss.
241
242 Spätere Abschnitte behandeln umfassend Eigenschaften und ihre
243 Werte, aber um ihre Funktion und ihr Format zu demonstrieren,
244 werden wir hier nur einige einfache Eigenschaften und Werte einsetzen,
245 die einfach zu verstehen sind.
246
247 Für den Moment könne Sie die @code{#'}-Zeichen ignorieren, die vor jeder
248 Layout-Eigenschaft, und die @code{#}-Zeichen, die vor jedem Wert
249 stehen. Sie müssen immer in genau dieser Form geschrieben werden.
250 Das ist der am häufigsten gebrauchte Befehl für die Optimierung,
251 und der größte Teil dieses Abschnittes wird dazu benutzt, seine Benutzung
252 zu erläutern. Hier ein einfaches Beispiel, um die Farbe des Notenkopfes
253 zu ändern:
254
255 @cindex color-Eigenschaft, Beispiel
256 @cindex Farb-Eigenschaft, Beispiel
257 @cindex NoteHead, Beispiel für override
258 @cindex Notenkopf, Beispiel für Veränderung
259
260 @lilypond[quote,ragged-right,verbatim]
261 \relative {
262   c'4 d
263   \override NoteHead.color = #red
264   e4 f |
265   \override NoteHead.color = #green
266   g4 a b c |
267 }
268 @end lilypond
269
270
271 @strong{Der \revert-Befehl}
272
273 @cindex revert-Befehl
274 @funindex \revert
275 @funindex revert
276
277 Wenn eine Eigenschaft einmal überschrieben wurde, wird ihr
278 neuer Wert so lange bewahrt, bis er noch einmal überschrieben
279 wird oder ein @code{\revert}-Befehl vorkommt. Der
280 @code{\revert}-Befehl hat die folgende Syntax und setzt den
281 Wert der Eigenschaft zurück auf den Standardwert, nicht
282 jedoch auf den vorigen Wert, wenn mehrere
283 @code{\override}-Befehle benutzt wurden.
284
285 @example
286 \revert @var{Kontext}.@var{LayoutObjekt} #'@var{layout-eigenschaft}
287 @end example
288
289 Wiederum, genauso wie der @var{Kontext} bei dem @code{\override}-Befehl,
290 wird @var{Kontext} oft nicht benötigt. Er wird in vielen der folgenden
291 Beispiele ausgelassen. Im nächsten Beispiel wird die Farbe des Notenkopfes
292 wieder auf den Standardwert für die letzten zwei Noten gesetzt.
293
294 @cindex color-Eigenschaft, Beispiel
295 @cindex Farb-Eigenschaft, Beispiel
296 @cindex NoteHead, Beispiel für override
297 @cindex Notenkopf, Beispiel für Veränderung
298
299 @lilypond[quote,ragged-right,verbatim]
300 \relative {
301   c'4 d
302   \override NoteHead.color = #red
303   e4 f |
304   \override NoteHead.color = #green
305   g4 a
306   \revert NoteHead.color
307   b4 c |
308 }
309 @end lilypond
310
311 @strong{\once-Präfix}
312
313 @funindex \once
314 @funindex once
315
316 Sowohl der @code{\override}-Befehl als auch der @code{\set}-Befehl können mit
317 dem Präfix @code{\once} (@emph{einmal}) versehen werden. Dadurch wird
318 der folgende @code{\override}- oder @code{\set}-Befehl nur für den aktuellen
319 Musik-Moment wirksam, bevor sich wieder der Standard einstellt. Am gleichen
320 Beispiel demonstriert, kann damit die Farbe eines einzelnen Notenkopfes
321 geändert werden:
322
323 @cindex color-Eigenschaft, Beispiel
324 @cindex Farb-Eigenschaft, Beispiel
325 @cindex NoteHead, Beispiel für override
326 @cindex Notenkopf, Beispiel für Veränderung
327
328 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
329 c4 d
330 \once \override NoteHead.color = #red
331 e4 f |
332 \once \override NoteHead.color = #green
333 g4 a b c |
334 @end lilypond
335
336
337 @strong{Der \overrideProperty-Befehl}
338
339 @cindex overrideProperty-Befehl
340
341 @funindex \overrideProperty
342 @funindex overrideProperty
343
344 Es gibt eine andere Form des @code{override}-Befehls,
345 @code{\overrideProperty} (überschreibe Eigenschaft),
346 welcher ab und zu benötigt wird. Es wird hier nur der
347 Vollständigkeit halber erwähnt, sein Einsatz wird demonstriert
348 in @rextend{Schwierige Korrekturen}.
349 @c Maybe explain in a later iteration  -td
350
351
352 @strong{Der \tweak-Befehl}
353
354 @cindex tweak-Befehl
355 @funindex \tweak
356 @funindex tweak
357
358 Der letzte Optimierungsbefehl in LilyPond ist @code{\tweak}
359 (engl. optimieren). Er wird eingesetzt um Eigenschaften
360 von Objekten zu verändern, die zum selben Musik-Moment
361 auftreten, wie etwa die Noten eines Akkordes. Ein
362 @code{\override} würde alle Noten des Akkords beeinflussen,
363 während mit @code{\tweak} nur das nächste Objekt der
364 Eingabe geändert wird.
365
366 Hier ein Beispiel. Angenommen, die Größe des mittleren
367 Notenkopfes (ein E) in einem C-Dur-Akkord soll geändert
368 werden. Schauen wir zuerst, was wir mit
369 @code{\once \override} erhalten:
370
371 @cindex Schriftgröße, Beispiel
372 @cindex NoteHead, Beispiel für override
373 @cindex Notenkopf, Beispiel für Veränderung
374
375 @lilypond[quote,ragged-right,verbatim]
376 \relative {
377   <c' e g>4
378   \once \override NoteHead.font-size = #-3
379   <c e g>4
380   <c e g>4
381 }
382 @end lilypond
383
384 Wie man sehen kann, beeinflusst @code{override} @emph{alle}
385 Notenköpfe des Akkordes. Das liegt daran, dass alle die Noten
386 eines Akkordes zum selben Musik-Moment auftreten und
387 die Funktion von @code{\once} ist es, die Optimierung auf
388 an allen Objekten auszuführen, die zum selben Musik-Moment
389 auftreten wie der @code{\override}-Befehl.
390
391 Der @code{\tweak}-Befehl funktioniert anders. Er bezieht sich
392 auf das direkt folgende Element in der Eingabe-Datei. Es wirkt
393 aber auch nur mit Objekten, die direkt von der Eingabe kreiert
394 werden, insbesondere Notenköpfe und Artikulationszeichen.
395 Objekte wie etwa Hälse oder Versetzungszeichen werden erst
396 später erstellt und lassen sich nicht auf diese Weise ändern.
397 Zusätzlich @emph{müssen} sich etwa Notenköpfe innerhalb
398 eines Akkordes befinden, d. h. sie müssen von einfachen spitzen
399 Klammern umschlossen sein. Um also eine einzelne Note
400 mit @code{\tweak} zu verändern, muss der Befehl innerhalb
401 der spitzen Klammern zusammen mit der Note eingegeben werden.
402
403 Um also zu unserem Beispiel zurückzukommen, könnte man die
404 mittlere Note eines Akkordes auf diese Weise ändern:
405
406 @cindex font-size-Eigenschaft, Beispiel
407 @cindex Schriftgröße, Beispiel
408 @cindex @code{\tweak}-Beispiel
409
410 @lilypond[quote,ragged-right,verbatim]
411 \relative {
412   <c' e g>4
413   <c \tweak font-size #-3 e g>4
414 }
415 @end lilypond
416
417 Beachten Sie, dass die Syntax des @code{\tweak}-Befehls sich
418 von der des @code{\override}-Befehls unterscheidet. Weder
419 Kontext noch Layout-Objekt können angegeben werden, denn
420 das würde zu einem Fehler führen. Beide Angaben sind
421 durch das folgende Element impliziert. Hier sollte auch
422 kein Gleichheitszeichen vorhanden sein.  Die verallgemeinerte
423 Syntax des @code{\tweak}-Befehls ist also einfach
424
425 @example
426 \tweak #'@var{layout-eigenschaft} #@var{Wert}
427 @end example
428
429 Ein @code{\tweak}-Befehl kann auch benutzt werden, um nur
430 eine von mehreren Artikulationen zu ändern, wie im nächsten
431 Beispiel zu sehen ist.
432
433 @cindex Farb-Eigenschaft, Beispiel
434 @cindex @code{\tweak}-Beispiel
435
436 @lilypond[quote,fragment,ragged-right,verbatim]
437 a'4^"Black"
438   -\tweak color #red ^"Red"
439   -\tweak color #green _"Green"
440 @end lilypond
441
442 @noindent
443 Beachten Sie, dass dem @code{\tweak}-Befehl ein Artikulationsmodifikator
444 vorangestellt werden muss, ganz als ob er selbst ein Artikulationszeichen
445 wäre.
446
447 @cindex Triolen, geschachtelt
448 @cindex N-tolen, geschachtelt
449 @cindex Klammer, Triole
450 @cindex Triolenklammer
451 @cindex N-tolenklammer
452 @cindex Komplizierte Rhythmen, Schachtelung von
453 @funindex TupletBracket
454
455 Der @code{\tweak}-Befehl muss auch benutzt werden, wenn das
456 Aussehen einer vor mehreren geschachtelten Triolenklammern
457 geändert werden soll, die zum selben Zeitpunkt beginnen.
458 Im folgenden Beispiel beginnen die lange Klammer und die
459 erste Triolenklammer zum selben Zeitpunkt, sodass ein
460 @code{\override}-Befehl sich auf beide beziehen würde.
461 In dem Beispiel wird @code{\tweak} benutzt, um zwischen
462 ihnen zu unterscheiden. Der erste @code{\tweak}Befehl
463 gibt an, dass die lange Klammer über den Noten gesetzt
464 werden soll, und der zweite, dass die Zahl der rhythmischen
465 Aufteilung für die erste der kurzen Klammern in rot
466 gesetzt wird.
467
468 @cindex Farb-Eigenschaft, Beispiel
469 @cindex @code{\tweak}-Beispiel
470 @cindex Richtungs-Eigenschaft, Beispiel
471 @cindex color-Eigenschaft, Beispiel
472 @cindex direction-Eigenschaft, Beispiel
473
474 @lilypond[quote,ragged-right,verbatim]
475 \relative c'' {
476   \tweak direction #up
477   \tuplet 3/4 {
478     \tweak color #red
479     \tuplet 3/2 { c8[ c c] }
480     \tuplet 3/2 { c8[ c c] }
481     \tuplet 3/2 { c8[ c c] }
482   }
483 }
484 @end lilypond
485
486 Wenn geschachtelte N-tolen nicht zum gleichen Zeitpunkt
487 beginnen, kann ihr Aussehen auf die übliche Art mit dem
488 @code{\override}-Befehl geändert werden:
489
490 @cindex text-Eigenschaft, Beispiel
491 @cindex tuplet-number-Funktion, Beispiel
492 @cindex transparent-Eigenschaft, Beispiel
493 @cindex TupletNumber, Beispiel zur Veränderung
494 @cindex Triolennummer, Beispiel zur Veränderung
495 @cindex Triolen-Nummer-Funktion, Beispiel
496
497 @c NOTE Tuplet brackets collide if notes are high on staff
498 @c See issue 509
499 @lilypond[quote,ragged-right,verbatim]
500 \relative {
501   \tuplet 3/2 { c'8[ c c] }
502   \once \override TupletNumber.text = #tuplet-number::calc-fraction-text
503   \tuplet 3/2 {
504     c8[ c]
505     c8[ c]
506     \once \override TupletNumber.transparent = ##t
507     \tuplet 3/2 { c8[ c c] }
508     \tuplet 3/2 { c8[ c c] }
509   }
510 }
511 @end lilypond
512
513
514 @seealso
515 Notationsreferenz:
516 @ruser{Der tweak-Befehl}.
517
518
519 @node Vnitřní referenční příručka
520 @section Vnitřní referenční příručka
521 @translationof The Internals Reference manual
522
523 @menu
524 * Vlastnosti předmětů v rozvržení::
525 * Vlastnosti nacházející se v rozhraních::
526 * Typy vlastností::
527 @end menu
528
529 @node Vlastnosti předmětů v rozvržení
530 @subsection Vlastnosti předmětů v rozvržení
531 @translationof Properties of layout objects
532
533 @cindex Eigenschaften von Layout-Objekten
534 @cindex Eigenschaften von Grobs
535 @cindex Grobs, Eigenschaften von
536 @cindex Layout-Objekte, Eigenschaften von
537 @cindex Property (Layout-Objekte, Grobs)
538 @cindex Regerenz der Interna
539
540 Angenommen, in Ihrer Partitur tritt ein Legatobogen
541 auf, der Ihrer Meinung nach zu dünn ausgefallen ist.
542 Sie würden ihn gerne etwas schwerer gezeichnet
543 sehen. Wie gehen Sie vor? Von den Anmerkungen in
544 früheren Abschnitten wissen Sie schon, dass LilyPond
545 sehr flexibel ist und eine derartige Modifikation
546 möglich sein sollte, und Sie erraten vielleicht,
547 dass ein @code{\override}-Befehl angebracht ist.
548 Aber gibt es eine Eigenschaft für die Dicke eines
549 Legatobogens (engl. slur), und wenn es sie gibt,
550 auf welche Weise lässt sie sich verändern? Hier
551 kommt die Referenz der Interna zur Geltung. Dort
552 finden sich alle Informationen, um den beschriebenen
553 und alle anderen @code{\override}-Befehle zu
554 konstruieren.
555
556 Bevor Sie jetzt in die Referenz der Interna wechseln, ist
557 eine Warnung angebracht. Es handelt sich um ein
558 @strong{Referenz}dokument, was heißt, dass es sehr
559 wenig oder gar keine Erklärungen enthält: seine Aufgabe
560 ist es, Information klar und genau darzustellen. Das
561 bedeutet, dass es auf den ersten Blick entmutigend
562 wirkt. Die Einführung und Erklärung in diesem Abschnitt
563 wird Ihnen aber schnell ermöglichen, genau die Information
564 aus der Referenz zu entnehmen, die Sie benötigen.
565 @c For German users
566 Beachten Sie, dass die Referenz der Interna nur auf Englisch
567 existiert. Um die Eigenschaftsbezeichnung eines bestimmten
568 Objektes zu finden, können Sie das Glossar (siehe
569 @rglosnamed{Top,Musikglossar})
570  verwenden, in dem
571 die englischen Begriffe in viele andere Sprachen übersetzt sind.
572
573 @cindex Override-Beispiel
574 @cindex Referenz der Interna, Benutzung
575 @cindex IR (Referenz der Interna), Benutzung
576 @cindex @code{\addlyrics}-Beispiel
577
578 Das Vorgehen soll an einem konkreten Beispiel einer echten
579 Komposition demonstriert werden. Hier das Beispiel:
580
581 @c Mozart, Die Zauberflöte Nr. 7 Duett
582
583 @lilypond[quote,verbatim]
584 {
585   \key es \major
586   \time 6/8
587   \relative {
588     r4 bes'8 bes[( g]) g |
589     g8[( es]) es d[( f]) as |
590     as8 g
591   }
592   \addlyrics {
593     The man who | feels love's sweet e -- | mo -- tion
594   }
595 }
596 @end lilypond
597
598 Angenommen also, wir wollen die Legatobögen etwas
599 dicker setzten. Ist das möglich? Die Legatobögen sind mit
600 Sicherheit ein Layout-Objekt, die Frage muss also lauten:
601 @qq{Gibt es eine Eigenschaft von Legatobögen, die die
602 Dicke bestimmt?} Um diese Frage zu beantworten, müssen
603 wir in der Referenz der Interna ( kurz IR) nachschauen.
604
605 Die IR für die LilyPond-Version, die Sie benutzen, findet sich
606 auf der LilyPond-Webseite unter der Adresse
607 @uref{http://lilypond.org}. Gehen Sie zur Dokumentationsseite
608 und klicken Sie auf den Link zur Referenz der Interna.
609 @c Addition for German users
610 Die Sprache ändert sich ab hier nach englisch. Für diese Übung
611 sollten Sie die HTML-Version benutzen, nicht die
612 @qq{auf einer großen Seite} oder die PDF-Version.
613 Damit Sie die nächsten Absätze verstehen können, müssen Sie
614 genauso vorgehen, während Sie weiterlesen.
615
616 Unter der Überschrift @strong{Top} befinden sich fünf Links.
617 Wählen Sie den Link zum @emph{Backend}, wo sich die Information
618 über Layout-Objekte befindet. Hier, unter der Überschrift
619 @strong{Backend}, wählen Sie den Link @emph{All layout objects}.
620 Die Seite, die sich öffnet, enthält ein Liste aller Layout-Objekte,
621 die in Ihrerer LilyPond-Version benutzt werden, in alphabetischer
622 Ordnung. Wählen Sie den Link @emph{Slur} und die Eigenschaften
623 der Legatobögen (engl. slur) werden aufgelistet.
624
625 Eine alternative Methode, auf diese Seite zu gelangen, ist von
626 der Notationsreferenz aus. Auf einer der Seiten zu Legatobögen
627 findet sich ein Link zur Referenz der Interna. Dieser Link führt
628 Sie direkt auf diese Seite. Wenn Sie aber eine Ahnung haben,
629 wie die Bezeichnung des Layout-Objektes lauten könnte, das sie
630 ändern wollen, ist es oft schneller, direkt zur IR zu gehen und
631 dort nachzuschlagen.
632
633 Aus der Slur-Seite in der IR könne wir entnehmen, dass
634 Legatobögen (Slur-Objekte) durch den Slur_engraver erstellt
635 werden. Dann werden die Standardeinstellungen aufgelistet.
636 Beachten Sie, dass diese @strong{nicht} in alphabetischer Reihenfolge
637 geordnet sind. Schauen Sie sich die Liste an, ob sie eine Eigenschaft
638 enthält, mit der die Dicke von Legatobögen kontrolliert werden kann.
639 Sie sollten folgendes finden:
640
641 @example
642 @code{thickness} (number)
643      @code{1.2}
644      Line thickness, generally measured in @code{line-thickness}
645 @end example
646
647 Das sieht ganz danach aus, als ob damit die Dicke geändert
648 werden kann. Es bedeutet, dass der Wert von
649 @code{thickness} einfach eine Zahl (@emph{number}) ist,
650 dass der Standardwert 1.2 ist, und dass die Einheit
651 für die Dicke eine andere Eigenschaft mit der
652 Bezeichnung @code{line-thickness} ist.
653
654 Wie schon früher gesagt, gibt es wenig bis gar keine Erklärungen
655 in der IR, aber wir haben schon genug Informationen, um
656 zu versuchen, die Dicke eines Legatobogens zu ändern. Die
657 Bezeichnung des Layout-Objekts ist offensichtlich
658 @code{Slur} und die Bezeichnung der Eigenschaft, die geändert
659 werden soll
660 @code{thickness}. Der neue Wert sollte etwas mehr als 1.2 sein,
661 denn der Bogen soll ja dicker werden.
662
663 Den benötigten @code{\override}-Befehl können wir jetzt einfach
664 konstruieren, indem wir die Werte für die Bezeichnungen in den
665 Modellbefehl einfügen und den Kontext auslassen. Setzen wir
666 einmal einen sehr großen Wert für die Dicke um zu sehen, ob der
667 Befehl auch funktioniert. Also:
668
669 @example
670 \override Slur.thickness = #5.0
671 @end example
672
673 Vergessen Sie nicht das Rautenzeichen und Apostroph
674 (@code{#'}) vor der Eigenschaftsbezeichnung und das
675 Rautenzeichen vor dem neuen Wert!
676
677 Die nächste Frage ist nun: @qq{Wohin soll dieser Befehl geschrieben
678 werden?} Solange wir uns noch im Lernstadium befinden, ist
679 die beste Antwort: @qq{Innerhalb der Noten, vor den ersten
680 Legatobogen und nahe bei ihm.} Also etwa so:
681
682 @cindex Legatobogen, Beispiel für Veränderung
683 @cindex thickness-Eigenschaft, Beispiel
684 @cindex Dicke-Eigenschaft, Beispiel
685
686 @lilypond[quote,verbatim]
687 {
688   \key es \major
689   \time 6/8
690   \relative {
691     % Increase thickness of all following slurs from 1.2 to 5.0
692     \override Slur.thickness = #5.0
693     r4 bes'8 bes[( g]) g |
694     g8[( es]) es d[( f]) as |
695     as8 g
696   }
697   \addlyrics {
698     The man who | feels love's sweet e -- | mo -- tion
699   }
700 }
701 @end lilypond
702
703 @noindent
704 und wirklich wird der Legatobogen dicker.
705
706 Das ist also die grundlegende Herangehensweise,
707 @code{\override}-Befehl zu formulieren. Es gibt einige
708 zusätzliche Komplikationen, denen wir uns später widmen
709 werden, aber Sie haben jetzt das Handwerkszeug, um Ihre
710 eigenen Befehle zu konstruieren -- wenn Sie auch noch etwas
711 Übung benötigen. Die sollen Sie durch die folgenden Übungen
712 erhalten.
713
714
715 @subheading Den Kontext finden
716
717 @cindex Kontext, Finden und identifizieren
718
719 Manchmal muss dennoch der Kontext spezifiziert werden.
720 Welcher aber ist der richtige Kontext? Wir könnten raten,
721 dass Legatobögen sich im @code{Voice}-Kontext befinden,
722 denn sie sind immer einzelnen Melodielinien zugewiesen.
723 Aber wir können uns dessen nicht sicher sein. Um unsere
724 Annahme zu überprüfen, gehen wir wieder zu der Seite im
725 IR, die die Legatobögen beschreibt und die Überschrift
726 @emph{Slur} hat. Dort steht: @qq{Slur objects are created
727 by: Slur engraver}. Legatobögen werden also in dem Kontext
728 erstellt, in dem sich der @code{Slur_engraver} befindet.
729 Folgen Sie dem Link zu der @code{Slur_engraver}-Seite.
730 Unten auf der Seite steht, dass der @code{Slur_engraver}
731 sich in fünf Stimmen-Kontexten befindet, unter anderem
732 auch im normalen @code{Voice}-Kontext. Unsere Annahme
733 war also richtig. Und weil @code{Voice} einer der Kontexte
734 der untersten Ebene ist, welcher eindeutig schon dadurch
735 definiert ist, dass wir Noten eingeben, kann er an dieser Stelle
736 auch weggelassen werden.
737
738
739 @subheading Nur einmal mit \override verändern
740
741 @cindex Override nur einmal
742 @cindex once override
743 @funindex \once
744 @funindex once
745
746 Im Beispiel oben wurden @emph{alle} Legatobögen dicker
747 gesetzt. Vielleicht wollen Sie aber nur den ersten Bogen
748 dicker haben. Das können Sie mit dem @code{\once}-Befehl
749 erreichen. Er wird direkt vor den @code{\override}-Befehl
750 gesetzt und bewirkt, dass nur der Bogen geändert wird, der
751 @strong{unmittelbar an der nächsten Note beginnt.} Wenn
752 die nächste Note keinen Bogenbeginn hat, dann passiert
753 gar nichts -- der Befehl wird nicht gespeichert, sondern einfach
754 vergessen. Der Befehl, mit @code{\once} zusammen benutzt,
755 muss also wie folgt positioniert werden:
756
757 @cindex Legatobogen, Beispiel zur Veränderung
758 @cindex thickness-Eigenschaft, Beispiel
759
760 @lilypond[quote,verbatim,relative=2]
761 {
762   \time 6/8
763   {
764     \key es \major
765     r4 bes8
766     % Increase thickness of immediately following slur only
767     \once \override Slur.thickness = #5.0
768     bes8[( g]) g |
769     g8[( es]) es d[( f]) as |
770     as8 g
771   }
772   \addlyrics {
773     The man who | feels love's sweet e -- | mo -- tion
774   }
775 }
776 @end lilypond
777
778 @noindent
779 Jetzt bezieht er sich nur noch auf den ersten Legatobogen.
780
781 Der @code{\once}-Befehl kann übrigens auch vor einem @code{\set}-Befehl
782 eingesetzt werden.
783
784
785 @subheading Rückgängig machen
786
787 @cindex Revert
788 @cindex Rückgängig machen
789 @cindex Wiederherstellen von Standardeinstellungen
790 @cindex Standardeinstellungen, Wiederherstellen
791 @funindex \revert
792 @funindex revert
793
794 Eine weitere Möglichkeit: nur die beiden ersten Legatobögen sollen
795 dicker gesetzt werden. Gut, wir könnten jetzt zwei Befehle benutzen,
796 jeden mit dem @code{\once}-Präfix und direkt vor die entsprechende
797 Note gestellt, an welcher der Bogen beginnt:
798
799 @cindex Legatobogen, Beispiel zur Veränderung
800 @cindex thickness-Eigenschaft, Beispiel
801
802 @lilypond[quote,verbatim]
803 {
804   \key es \major
805   \time 6/8
806   \relative {
807     r4 bes'8
808     % Increase thickness of immediately following slur only
809     \once \override Slur.thickness = #5.0
810     bes[( g]) g |
811     % Increase thickness of immediately following slur only
812     \once \override Slur.thickness = #5.0
813     g8[( es]) es d[( f]) as |
814     as8 g
815   }
816   \addlyrics {
817     The man who | feels love's sweet e -- | mo -- tion
818   }
819 }
820 @end lilypond
821
822 @noindent
823 Wir könnten aber auch den @code{\once}-Befehl weglassen und anstelle
824 dessen später den @code{\revert}-Befehl einsetzen, um die
825 @code{thickness}-Eigenschaft wieder auf ihren Standardwert zurückzusetzen:
826
827 @cindex Legatobogen, Beispiel zur Veränderung
828 @cindex thickness-Eigenschaft, Beispiel
829
830 @lilypond[quote,verbatim]
831 {
832   \key es \major
833   \time 6/8
834   \relative {
835     r4 bes'8
836     % Increase thickness of all following slurs from 1.2 to 5.0
837     \override Slur.thickness = #5.0
838     bes[( g]) g |
839     g8[( es]) es
840     % Revert thickness of all following slurs to default of 1.2
841     \revert Slur.thickness
842     d8[( f]) as |
843     as8 g
844   }
845   \addlyrics {
846     The man who | feels love's sweet e -- | mo -- tion
847   }
848 }
849 @end lilypond
850
851 @noindent
852 Der @code{\revert}-Befehl kann benutzt werden, um eine beliebige
853 Eigenschaft, die mit @code{\override} geändert worden ist, wieder in
854 ihre Standardeinstellungen zurückzuversetzen. In unserem Beispiel können
855 Sie die Methode benutzen, die Ihnen lieber ist, beide haben das gleiche
856 Resultat.
857
858 Damit endet die Einleitung in die Referenz der Interna (IR) und die
859 grundlegenden postupy při ladění. Einige Beispiele folgen in späteren
860 Abschnitten dieses Kapitel, einerseits um Sie mit weiteren Möglichkeiten
861 der IR bekanntzumachen, andererseits um Ihnen mehr Übungsmöglichkeiten
862 zu geben, die relevante Information dort zu finden. Die Beispiele werden
863 Schritt für Schritt immer weniger Erklärungen beinhalten.
864
865
866 @node Vlastnosti nacházející se v rozhraních
867 @subsection Vlastnosti nacházející se v rozhraních
868 @translationof Properties found in interfaces
869
870 @cindex Interface-Eigenschaften
871 @cindex Eigenschaften von Interfaces
872 @cindex Schnittstellen, Eigenschaften von
873 @cindex Eigenschaften von Schnittstellen
874
875 Der Text unseres Beispiels soll jetzt kursiv gesetzt werden. Was für
876 ein @code{\override}-Befehl wird dazu benötigt? Schauen wir
877 uns zunächst das Inhaltsverzeichnis in der IR an: @qq{All layout objects},
878 wie auch schon zuvor. Welches Objekt könnte die Darstellung des
879 Textes (engl. lyrics) beeinflussen? Es gibt den Eintrag @code{LyricText},
880 das hört sich schon sehr gut an. Ein Klick hierauf zeigt alle Eigenschaften
881 an, die verändert werden können. Dazu gehört
882 @code{font-series} und @code{font-size}, aber nichts, womit man kursiven
883 Text erreichen könnte. Das liegt daran, dass die Schnitteigenschaft allen
884 Schrift-Objekten gemeinsam ist. Sie findet sich also nicht in jedem einzelnen
885 Layout-Objekt aufgelistet, sondern ist mit anderen ähnlichen Eigenschaften
886 zusammen in einem @strong{Interface} -- einer Schnittstelle -- verortet;
887 in diesem Fall das
888 @code{font-interface}.
889
890 Jetzt müssen wir also lernen, wie wir Eigenschaften von Schnittstellen finden
891 und wie wir herausfinden, welche Objekte diese Schnittstelleneigenschaften
892 benutzen.
893
894 Schauen Sie sich noch einmal die Seite in der IR an, die @code{LyricText}
895 beschreibt. Unten auf der Seite ist eine klickbare Liste (in der HTML-Version
896 der IR) an Eigenschaften, die von @code{LyricText} unterstützt
897 werden. Diese Liste enthält sieben Einträge, darunter auch
898 @code{font-interface}. Ein Klick hierauf bringt uns zu den Eigenschaften,
899 die mit dieser Schnittstelle verbunden sind, also auch @code{LyricText}.
900
901 Jetzt sehen wir alle die Eigenschaften, die der Benutzer verändern kann,
902 um die Schriftartendarstellung zu beeinflussen. Dazu gehört nun auch
903 @code{font-shape(symbol)}, wobei @code{symbol} auf die Werte
904 @code{upright} (gerade), @code{italics} (kursiv) oder @code{caps}
905 (Kapitälchen) gesetzt werden kann.
906
907 Sie werden gemerkt haben, dass @code{font-series} und @code{font-size}
908 hier auch aufgelistet sind. Es stellt sich die Frage, warum diese
909 allgemeinen Schriftarteigenschaften @code{font-series} und
910 @code{font-size} sowohl unter der Überschrift
911 @code{LyricText} als unter dem @code{font-interface} aufgelistet
912 sind, aber @code{font-shape} befindet sich nur im
913 @code{font-interface}? Die Antwort ist: Die globalen Einstellungen
914 von @code{font-series} und @code{font-size} werden geändert, wenn
915 ein @code{LyricText}-Objekt erstellt wird, aber @code{font-shape}
916 wird davon nicht beeinflusst. Die zusätzlichen Einträge unter der
917 Überschrift @code{LyricText} beinhalten dann die Werte der
918 Standardeinstellungen dieser zwei Eigenschaften, wenn es sich
919 um ein @code{LyricText}-Objekt handelt. Andere Objekte,
920 die auch das @code{font-interface} unterstützen, setzen diese
921 Eigenschaften anders, wenn sie erstellt werden.
922
923 Versuchen wir nun einen @code{\override}-Befehl zu konstruieren,
924 der den Gesangstext kursiv setzt. Das Objekt hat die Bezeichnung
925 @code{LyricText}, die Eigenschaft ist @code{font-shape}
926 und der Wert @code{italic}. Wie vorher schon lassen wir den
927 Kontext aus.
928
929 Am Rande sei angemerkt, dass die Werte der @code{font-shape}-Eigenschaft
930 mit einem Apostroph (@code{'}) gekennzeichnet werden
931 müssen, weil es sich um Symbole handelt. Aus dem gleichen
932 Grund mussten auch für @code{thickness} weiter oben im
933 Text ein Apostroph gesetzt werden. Symbole sind besondere
934 Bezeichnungen, die LilyPond intern bekannt sind. Einige
935 sind Bezeichnungen von Eigenschaften, wie eben @code{thickness}
936 oder @code{font-shape}. Andere sind besondere Werte,
937 die an Eigenschaften übergeben werden können, wie
938 @code{italic}. Im Unterschied hierzu gibt es auch beliebige
939 Zeichenketten, die immer mit Anführungszeichen, also
940 als @code{"Zeichenkette"} auftreten. Für weitere
941 Einzelheiten zu Zeichenketten und Werten, siehe
942 @rextend{Scheme-Übung}.
943
944 Gut, der @code{\override}-Befehl, mit dem der Gesangstext
945 kursiv gesetzt wird, lautet:
946
947 @example
948 \override LyricText.font-shape = #'italic
949 @end example
950
951 @noindent
952 und er muss direkt vor den Text gesetzt werden, auf den er sich
953 bezieht, etwa so:
954
955 @cindex font-shape-Eigenschaft, Beispiel
956 @cindex LyricText, Beispiel zur Veränderung
957 @cindex kursiv, Beispiel
958 @cindex @code{\addlyrics}, Beispiel
959
960 @lilypond[quote,ragged-right,verbatim]
961 {
962   \key es \major
963   \time 6/8
964   \relative {
965     r4 bes'8 bes[( g]) g |
966     g8[( es]) es d[( f]) as |
967     as8 g
968   }
969   \addlyrics {
970     \override LyricText.font-shape = #'italic
971     The man who | feels love's sweet e -- | mo -- tion
972   }
973 }
974 @end lilypond
975
976 @noindent
977 Jetzt wird der Text kursiv gesetzt.
978
979
980 @subheading Den Kontext im Liedtextmodus bestimmen
981
982
983 @cindex Kontext im Gesangstextmodus angeben
984 @cindex Gesangstextmodus, Kontext angeben
985
986 Bei Gesangstexten funktioniert der @code{\override}-Befehl
987 nicht mehr, wenn Sie den Kontext im oben dargestellten
988 Format angeben.  Eine Silbe wird im Gesangtextmodus
989 (lyricmode) entweder von einem Leerzeichen, einer
990 neuen Zeile oder einer Zahl beendet.  Alle anderen
991 Zeichen werden als Teil der Silbe integriert.  Aus diesem
992 Grund muss auch vor der schließenden Klammer
993 @code{@}} ein Leerzeichen gesetzt oder eine neue
994 Zeile begonnen werden.  Genauso müssen Leerzeichen
995 vor und nach einem Punkt benutzt werden, um die
996 Kontext-Bezeichnung von der Objekt-Bezeichnung zu
997 trennen, denn sonst würden beide Bezeichnungen als
998 ein Begriff interpretiert und von LilyPond nicht verstanden
999 werden.  Der Befehl muss also lauten:
1000
1001 @example
1002 \override Lyrics.LyricText.font-shape = #'italic
1003 @end example
1004
1005 @warning{Innerhalb von Gesangstext muss immer ein
1006 Leerzeichen zwischen der letzten Silbe und der schließenden
1007 Klammer gesetzt werden.}
1008
1009 @warning{Innerhalb von @code{\override}-Befehlen in
1010 Gesangstexten müssen Leerzeichen um Punkte zwischen
1011 Kontext- und Objektbezeichnungen gesetzt werden.}
1012
1013 @seealso
1014 Erweitern: @rextend{Scheme-Übung}.
1015
1016
1017 @node Typy vlastností
1018 @subsection Typy vlastností
1019 @translationof Types of properties
1020
1021 @cindex Eigenschaftsarten
1022
1023 Bis jetzt hatten wir es mit zwei Arten von Eigenschaften zu
1024 tun: @code{number} (Zahl) und @code{symbol}.  Damit
1025 ein Befehl funktioniert, muss der Wert einer Eigenschaft
1026 vom richtigen Typ sein und die Regeln befolgen, die
1027 für diesen Typ gelten.  Der Eigenschaftstyp ist in der
1028 IR in Klammern hinter der Eigenschaftsbezeichnung
1029 angegeben.  Hier eine Liste der Typen, die Sie vielleicht
1030 benötigen werden, mit den Regeln, die für den jeweiligen
1031 Typ gelten und einigen Beispielen. Sie müssen immer
1032 ein Rautenzeichen (@code{#}) vor den Typeintrag setzen,
1033 wenn sie in einem @code{\override}-Befehl benutzt werden.
1034
1035 @multitable @columnfractions .2 .45 .35
1036 @headitem Eigenschaftstyp
1037   @tab Regeln
1038   @tab Beispiele
1039 @item Boolesch
1040   @tab Entweder wahr oder falsch, dargestellt als #t oder #f
1041   @tab @code{#t}, @code{#f}
1042 @item Dimension (in Notenlinienabständen)
1043   @tab Eine positive Dezimalzahl (in Notenlinienabstand-Einheiten)
1044   @tab @code{2.5}, @code{0.34}
1045 @item Richtung
1046   @tab Eine gültige Richtungskonstante oder das numerische Äquivalent
1047   @tab @code{LEFT}, @code{CENTER}, @code{UP},
1048        @code{1}, @code{-1}
1049 @item Integer
1050   @tab Eine positive ganze Zahl
1051   @tab @code{3}, @code{1}
1052 @item Liste
1053   @tab Eine eingeklammerte Anzahl von Einträgen, mit Klammern getrennt
1054   und angeführt von einem Apostroph
1055   @tab @code{'(left-edge staff-bar)}, @code{'(1)},
1056        @code{'(1.0 0.25 0.5)}
1057 @item Textbeschriftung (markup)
1058   @tab Beliebige gültige Beschriftung
1059   @tab @code{\markup @{ \italic "cresc." @}}
1060 @item Moment
1061   @tab Ein Bruch einer ganzen Note, mit der make-moment-Funktion
1062   konstruiert
1063   @tab @code{(ly:make-moment 1/4)},
1064        @code{(ly:make-moment 3/8)}
1065 @item Zahl
1066   @tab Eine beliebige positive oder negative Dezimalzahl
1067   @tab @code{3.5}, @code{-2.45}
1068 @item Paar (Zahlenpaar)
1069   @tab Zwei Zahlen getrennt von @qq{Leerzeichen . Leerzeichen}, eingeklammert
1070   und angeführt von einem Apostroph
1071   @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
1072 @item Symbol
1073   @tab Eine beliebige Anzahl von Symbolen, die für die Eigenschaft
1074   gültig sind, angeführt von einem Apostroph
1075   @tab @code{'italic}, @code{'inside}
1076 @item Unbekannt
1077   @tab Eine Prozedur oder @code{#f} (um keine Aktion hervorzurufen)
1078   @tab @code{bend::print}, @code{ly:text-interface::print},
1079        @code{#f}
1080 @item Vektor
1081   @tab Eine Liste mit drei Einträgen, eingeklammert und mit
1082   Apostroph-Raute ( @code{'#}) angeführt.
1083   @tab @code{'#(#t #t #f)}
1084 @end multitable
1085
1086
1087 @seealso
1088 Erweitern: @rextend{Scheme-Übung}.
1089
1090
1091 @node Vzhled předmětů
1092 @section Vzhled předmětů
1093 @translationof Appearance of objects
1094
1095 In diesem Abschnitt wollen wir zeigen, wie die Kenntnisse der
1096 vorigen Abschnitte in der Praxis angewandt werden können,
1097 um das Aussehen des Musiksatzes zu beeinflussen.
1098
1099 @menu
1100 * Viditelnost a barva předmětů::
1101 * Velikost předmětů::
1102 * Délka a tloušťka předmětů::
1103 @end menu
1104
1105
1106 @node Viditelnost a barva předmětů
1107 @subsection Viditelnost a barva předmětů
1108 @translationof Visibility and color of objects
1109
1110 In Unterrichtsmaterial für den Musikunterricht wird oft
1111 eine Partitur dargestellt, in der bestimmte Notationselemente
1112 fehlen, so dass der Schüler die Aufgabe bekommt, die
1113 nachzutragen.  Ein einfaches Beispiel ist etwa, die
1114 Taktlinien zu entfernen, damit der Schüler sie selber zeichnen
1115 kann.  Aber die Tatklinien werden normalerweise automatisch
1116 eingefügt.  Wie verhindern wir, dass sie ausgegeben werden?
1117
1118 Bevor wir uns hieran machen, sei daran erinnert, dass
1119 Objekteigenschaften in sogenannten @emph{Schnittstellen}
1120 -- engl. interface -- gruppiert sind, siehe auch
1121 @ref{Vlastnosti nacházející se v rozhraních,,vlastnosti nacházející se v rozhraních}.  Das dient ganz einfach
1122 dazu, die Eigenschaften zusammenzufassen, die üblicherweise
1123 zusammen benötigt werden -- wenn eine davon für ein Objekt
1124 gilt, dann auch die anderen.  Manche Objekte brauchen die
1125 Eigenschaften von der einen Schnittstelle, andere von einer
1126 anderen.  Die Schnittstellen, die die Eigenschaften von einem
1127 bestimmten Grob beinhalten, sind in der IR unten auf der
1128 Seite aufgelistet, die dieses Grob beschreibt.  Die Eigenschaften
1129 können betrachtet werden, indem die Seite der entsprechenden
1130 Schnittstelle geöffnet wird.
1131
1132 Zu Information, wie man Eigenschaften von Grobs findet, siehe
1133 @ref{Vlastnosti předmětů v rozvržení,,vlastnosti předmětů v rozvržení}.  Wir benutzen also jetzt
1134 die selbe Methode um in der IR das Layout-Objekt zu finden,
1135 dass für die Tatklinien zuständig ist. Über die Überschriften
1136 @emph{Backend} und @emph{All layout objects} kommen
1137 wir zu einem Layout-Objekt mit der Bezeichnung
1138 @code{BarLine} (engl. TaktLinie).  Seine Eigenschaften
1139 beinhalten zwei, die über die Sichtbarkeit entscheiden:
1140 @code{break-visibility} und @code{stencil}.
1141 @code{BarLine} unterstützt auch einige Schnittstellen,
1142 unter anderem @code{grob-interface}, wo wir eine
1143 @code{transparent} und eine @code{color}-Eigenschaft
1144 finden.  Alle können die Sichtbarkeit von Taktlinien (und
1145 natürlich auch die Sichtbarkeit von vielen anderen Objekten)
1146 beeinflussen.  Schauen wir uns diese Eigenschaften eine
1147 nach der anderen an.
1148
1149 @subheading stencil (Matrize)
1150
1151 @cindex Stencil-Eigenschaft
1152 @cindex Matrizen-Eigenschaft
1153
1154 Diese Eigenschaft kontrolliert die Erscheinung der Taktlinien,
1155 indem sie das Symbol bestimmt, das ausgegeben werden soll.
1156 Wie bei vielen anderen Eigenschaften auch, kann sie so
1157 eingestellt werden, dass sie nichts ausgibt, indem ihr Wert
1158 auf @code{#f} (falsch) gesetzt wird.  Ein Versuch also,
1159 wie vorher, indem wir den impliziten Kontext (@code{Voice})
1160 auslassen:
1161
1162 @cindex Taktlinie, Beispiel zur Veränderung
1163 @cindex stencil-Eigenschaft, Beispiel
1164
1165 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1166 {
1167   \time 12/16
1168   \override BarLine.stencil = ##f
1169   c4 b8 c d16 c d8
1170   g,8 a16 b8 c d4 e16 |
1171   e8
1172 }
1173 @end lilypond
1174
1175 Die Taktlinien werden aber immer noch angezeigt.  Was ist da
1176 falsch gelaufen?  Gehen Sie zurück zur IR und schauen Sie auf
1177 die Seite, die die Eigenschaften für @code{BarLine} angibt.
1178 Oben auf der Seite steht: @qq{Barline objects are created
1179 by: Bar_engraver}.  Schauen Sie sich die
1180 @code{Bar_engraver}-Seite an.  Unten auf der Seite steht
1181 eine Liste der Kontexte, in denen der Takt-Engraver
1182 funktioniert.  Alle Kontexte sind @code{Staff}-Typen (also
1183 Notensystem-Typen).  Der Grund, warum der
1184 @code{\override}-Befehl nicht funktioniert hat, liegt
1185 also darin, dass das Taktlinie-Objekt (@code{BarLine}) sich nicht
1186 im @code{Voice}-Kontext befindet.  Wenn der Kontext
1187 falsch angegeben wird, bewirkt der Befehl einfach gar
1188 nichts.  Keine Fehlermeldung wird ausgegeben und auch
1189 nichts in die Log-Datei geschrieben.  Versuchen wir also,
1190 den richtigen Kontext mit anzugeben:
1191
1192 @cindex Taktlinie, Beispiel zur Veränderung
1193 @cindex stencil-Eigenschaft, Beispiel
1194
1195 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1196 {
1197   \time 12/16
1198   \override Staff.BarLine.stencil = ##f
1199   c4 b8 c d16 c d8
1200   g,8 a16 b8 c d4 e16
1201   e8
1202 }
1203 @end lilypond
1204
1205 @noindent
1206 Jetzt sind die Taktlinien wirklich verschwunden.
1207
1208 Es sollte jedoch beachtet werden, dass das Setzen der
1209 @code{stencil}-Eigenschaft auf @code{#f} zu Fehlerhinweisen führen
1210 kann, wenn die Dimensionen des Objekts für die richtige Behandlung
1211 benötigt werden.  Zum Beispiel werden Fehler ausgegeben, wenn
1212 die @code{stencil}-Eigenschaft des @code{NoteHead}-Objekts auf
1213 @code{#f} gesetzt wird. Wenn dieser Fall auftritt, kann anstatt
1214 dessen die @code{point-stencil}-Funktion benutzt werden, welche
1215 den Stencil auf ein Objekt mit der Größe Null setzt:
1216
1217 @lilypond[quote,verbatim]
1218 \relative {
1219   c''4 c
1220   \once \override NoteHead.stencil = #point-stencil
1221   c4 c
1222 }
1223 @end lilypond
1224
1225
1226 @subheading break-visibility (unsichtbar machen)
1227
1228 @cindex break-visibility-Eigenschaft
1229 @cindex Unsichtbar machen (break-visibility)
1230
1231 Aus der Beschreibung der Eigenschaften für @code{BarLine}
1232 in der IR geht hervor, dass die @code{break-visibility}-Eigenschaft
1233 einen Vektor mit drei Booleschen Werten benötigt. Diese
1234 kontrollieren jeweils, ob die Taktlinien am Ende einer Zeile,
1235 in der Mitte einer Zeile und am Anfang einer Zeile ausgegeben
1236 werden.  Wenn also alle Taktlinien unsichtbar sein sollen, wie in
1237 unserem Beispiel, brauchen wir den Wert @code{'#(#f #f #f)}.
1238 Versuchen wir es also, und berücksichtigen wir auch den
1239 @code{Staff}-Kontext.  Beachten Sie auch, dass Sie @code{#'#}
1240 vor der öffnenden Klammer schreiben müssen:
1241 @code{'#} wird benötigt als Teil des Wertes, um einen Vektor zu
1242 signalisieren, und das erste @code{#} wird benötigt, um
1243 den Wert in einem @code{\override}-Befehl anzuführen.
1244
1245 @cindex Taktlinie, Beispiel zur Veränderung
1246 @cindex break-visibility-Eigenschaft, Beispiel
1247
1248 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1249 {
1250   \time 12/16
1251   \override Staff.BarLine.break-visibility = #'#(#f #f #f)
1252   c4 b8 c d16 c d8 |
1253   g,8 a16 b8 c d4 e16 |
1254   e8
1255 }
1256 @end lilypond
1257
1258 @noindent
1259 Auch auf diesem Weg gelingt es, die Taktlinien unsichtbar zu machen.
1260
1261
1262 @subheading transparent (durchsichtig)
1263
1264 @cindex transparent-Eigenschaft
1265 @cindex Durchsichtig machen (transparent)
1266
1267 Aus den Eigenschaftsdefinitionen auf der @code{grob-interface}-Seite
1268 in der IR geht hervor, dass die @code{transparent}-Eigenschaft
1269 boolesch ist.  Mit @code{#t} (wahr) wird also ein Grob durchsichtig
1270 gemacht.  Im unserem Beispiel soll jetzt die Taktart durchsichtig
1271 gemacht werden, anstatt die Taktlinien durchsichtig zu machen.
1272 Wir brauchen also wieder die Grob-Bezeichnung für die Taktart.
1273 Auf der @qq{All layout objects}-Seite in der IR müssen wir die
1274 Eigenschaften des @code{TimeSignature}-Layout-Objekts suchen
1275 Das Objekt wird vom @code{Time_signature_engraver} erstellt,
1276 der sich auch im @code{Staff}-Kontext befindet und genauso das
1277 @code{grob-interface} unterstützt, wie Sie sich
1278 überzeugen können.  Der Befehl, um die Taktangabe unsichtbar zu
1279 machen, ist also:
1280
1281 @cindex Taktart, Beispiel zur Veränderung
1282 @cindex transparent-Eigenschaft, Beispiel
1283
1284 @lilypond[quote,ragged-right,verbatim]
1285 \relative {
1286   \time 12/16
1287   \override Staff.TimeSignature.transparent = ##t
1288   c''4 b8 c d16 c d8 |
1289   g,8 a16 b8 c d4 e16 |
1290   e8
1291 }
1292 @end lilypond
1293
1294 @noindent
1295 Die Taktangabe ist verschwunden, aber mit diesem Befehl wird ein
1296 freier Platz gelassen, wo sich die Taktangabe eigentlich befinden
1297 würde.  Das braucht man vielleicht für eine Schulaufgabe, in der
1298 die richtige Taktangabe eingefügt werden soll, aber in anderen
1299 Fällen ist diese Lücke nicht schön.  Um auch die Lücke zu entfernen,
1300 muss die Matrize (stencil) der Taktangabe auf @code{#f} (falsch)
1301 gesetzt werden:
1302
1303 @cindex Taktart, Beispiel zur Veränderung
1304 @cindex stencil-Eigenschaft, Beispiel
1305
1306 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1307 {
1308   \time 12/16
1309   \override Staff.TimeSignature.stencil = ##f
1310   c4 b8 c d16 c d8 |
1311   g,8 a16 b8 c d4 e16 |
1312   e8
1313 }
1314 @end lilypond
1315
1316 @noindent
1317 Und der Unterschied wird deutlich: hiermit wird das gesamte Objekt
1318 entfernt, während man mit @code{transparent} ein Objekt
1319 unsichtbar machen kann, es aber an seinem Platz gelassen wird.
1320
1321
1322 @subheading color (Farbe)
1323
1324 @cindex color-Eigenschaft
1325 @cindex Farb-Eigenschaft
1326
1327 Abschließend wollen wir die Taktlinien unsichtbar machen, indem
1328 wir sie weiß einfärben.  (Es gibt hier eine Schwierigkeit: die weiße
1329 Taktlinie übermalt manchmal die Taktlinien, wo sie sie kreuzt,
1330 manchmal aber auch nicht.  Sie können in den Beispielen unten
1331 sehen, dass das nicht vorhersagbar ist.  Die Einzelheiten dazu, warum
1332 das passiert und wie sie es kontrollieren können, werden dargestellt
1333 in @ruser{Objekte weiß malen}.  Im Moment wollen wir lernen, wie
1334 man mit Farbe arbeitet, akzeptieren Sie bitte an dieser Stelle die
1335 Beschränkung.)
1336
1337 Das @code{grob-interface} bestimmt, dass der Wert der Farb-Eigenschaft
1338 eine Liste ist, aber es gibt keine Erklärung, was für eine Liste das
1339 sein soll.  Die Liste, die benötigt wird, ist eine Liste mit Werten in
1340 internen Einheiten, aber damit Sie nicht wissen müssen, wie diese
1341 aussehen, gibt es mehrere Wege, Farben anzugeben.  Der erste
1342 Weg ist es, @qq{normale} Farben zu benutzen, wie sie in der
1343 Tabelle in @ruser{Liste der Farben} aufgelistet sind.  Beachten Sie,
1344 dass die Bezeichnungen auf Englisch sind.  Um die Taktlinien auf
1345 weiß zu setzen, können Sie schreiben:
1346
1347 @cindex Taktlinie, Beispiel zur Veränderung
1348 @cindex color-Eigenschaft, Beispiel
1349
1350 @lilypond[quote,ragged-right,verbatim]
1351 \relative {
1352   \time 12/16
1353   \override Staff.BarLine.color = #white
1354   c''4 b8 c d16 c d8 |
1355   g,8 a16 b8 c d4 e16 |
1356   e8
1357 }
1358 @end lilypond
1359
1360 @noindent
1361 und die Taktlinien verschwinden in der Tat.  Beachten Sie,
1362 dass @emph{white} nicht mit einem Apostroph angeführt
1363 wird -- es ist kein Symbol, sondern eine @emph{Funktion}.
1364 Wenn sie aufgerufen wird, stellt sie eine Liste mit internen
1365 Werten zu Verfügung, mit welcher die Farbe auf weiß
1366 gestellt wird.  Die anderen Farben in der Liste sind auch
1367 Funktionen.  Um sich zu überzeugen, dass der Befehl auch
1368 wirklich funktioniert, können Sie die Farbe auf eine der
1369 anderen Funktionen dieser Liste abändern.
1370
1371 @cindex Farben, X11
1372 @cindex X11-Farben
1373 @funindex x11-color
1374
1375 Die zweite Art die Farbe zu ändern geschieht, indem die Liste
1376 der X11-Farbbezeichnungen einzusetzen, siehe die zweite Liste
1377 in @ruser{Liste der Farben}.  Diesen Farben muss jedoch eine
1378 andere Funktion vorangestellt werden, die die X11-Farbbezeichnungen
1379 in interne Werte konvertiert:
1380 @code{x11-color}.  Das geschieht wie folgt:
1381
1382 @cindex Taktlinie, Beispiel zur Veränderung
1383 @cindex color-Eigenschaft, Beispiel
1384
1385 @lilypond[quote,ragged-right,verbatim]
1386 \relative {
1387   \time 12/16
1388   \override Staff.BarLine.color = #(x11-color 'white)
1389   c''4 b8 c d16 c d8 |
1390   g,8 a16 b8 c d4 e16 |
1391   e8
1392 }
1393 @end lilypond
1394
1395 @noindent
1396 In diesem Fall hat die Funktion @code{x11-color} ein Symbol
1397 als Argument, darum muss dem Symbol ein Apostroph vorangestellt
1398 und beide zusammen in Klammern gesetzt werden.
1399
1400 @cindex RGB-Farben
1401 @cindex Farben, RGB
1402 @funindex rgb-color
1403
1404 Es gibt noch eine dritte Funktion, die RGB-Werte in die
1405 internen Werte übersetzt -- die @code{rgb-color}-Funktion.  Sie
1406 braucht drei Argumente, um die Stärke von Rot, Grün und
1407 Blau darzustellen. Die Werte befinden sich zwischen
1408 0 und 1.  Um also die Farbe Rot darzustellen, muss der
1409 Wert der Funktion lauten: @code{(rgb-color 1 0 0)}, weiß
1410 würde sein: @code{(rgb-color 1 1 1)}.
1411
1412 @cindex Taktlinie, Beispiel zur Veränderung
1413 @cindex color-Eigenschaft, Beispiel
1414
1415 @lilypond[quote,ragged-right,verbatim]
1416 \relative {
1417   \time 12/16
1418   \override Staff.BarLine.color = #(rgb-color 1 1 1)
1419   c''4 b8 c d16 c d8 |
1420   g,8 a16 b8 c d4 e16 |
1421   e8
1422 }
1423 @end lilypond
1424
1425 Schließlich gibt es noch eine Grauskala, die zu den X11-Farben
1426 gehört.  Sie reicht von schwarz (@code{'grey0'}) bis
1427 weiß (@code{'grey100}), in Einerschritten.  Wir wollen das
1428 illustrieren, indem alle Layout-Objekte im Beispiel
1429 verschiede Grauschattierungen erhalten:
1430
1431 @cindex StaffSymbol, Beispiel zur Veränderung
1432 @cindex TimeSignature, Beispiel zur Veränderung
1433 @cindex Schlüssel, Beispiel zur Veränderung
1434 @cindex Notenhals, Beispiel zur Veränderung
1435 @cindex Taktlinie, Beispiel zur Veränderung
1436 @cindex Farbeigenschaft, Beispiel
1437 @cindex x11-Farben, Beispiel
1438 @cindex Taktlinien, Beispiel zur Veränderung
1439 @cindex Taktart, Beispiel zur Veränderung
1440 @cindex Clef, Beispiel zur Veränderung
1441 @cindex Stem, Beispiel zur Veränderung
1442 @cindex NoteHead, Beispiel zur Veränderung
1443 @cindex Notenkopf, Beispiel zur Veränderung
1444
1445 @lilypond[quote,ragged-right,verbatim]
1446 \relative {
1447   \time 12/16
1448   \override Staff.StaffSymbol.color = #(x11-color 'grey30)
1449   \override Staff.TimeSignature.color = #(x11-color 'grey60)
1450   \override Staff.Clef.color = #(x11-color 'grey60)
1451   \override Voice.NoteHead.color = #(x11-color 'grey85)
1452   \override Voice.Stem.color = #(x11-color 'grey85)
1453   \override Staff.BarLine.color = #(x11-color 'grey10)
1454   c''4 b8 c d16 c d8 |
1455   g,8 a16 b8 c d4 e16 |
1456   e8
1457 }
1458 @end lilypond
1459
1460 @noindent
1461 Beachten Sie die Kontexte, die mit jedem einzelnen Layout-Objekt
1462 verbunden sind.  Es ist wichtig, den richtigen Kontext einzusetzen,
1463 damit die Befehle funktionieren.  Denken Sie daran, dass der
1464 Kontext sich daran orientiert, wo sich der entsprechende
1465 Engraver befindet.  Den Standardkontext für Engraver finden
1466 Sie, indem Sie beim Layout-Objekt beginnen, zum Engraver
1467 gehen, der es produziert und auf der Seite des Engravers in der
1468 IR finden Sie Information, in welchem Kontext sich der
1469 Engraver normalerweise befindet.
1470
1471
1472 @node Velikost předmětů
1473 @subsection Velikost předmětů
1474 @translationof Size of objects
1475
1476 @cindex Veränderung von Objektgrößen
1477 @cindex Objektgrößen, verändern
1478 @cindex Größen von Objekten verändern
1479
1480 Als Startpunkt wollen wir wieder ein früheres Beispiel
1481 wählen, siehe @ref{Naskládání hudebních výrazů do sebe}. Hier wurde
1482 ein neues Notensystem erstellt, wie man es für ein @rglos{ossia}
1483 braucht.
1484
1485 @cindex alignAboveContext-Eigenschaft, Beispiel
1486 @cindex über dem System anordnen, Beispiel
1487 @cindex @code{\with}-Beispiel
1488
1489 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1490 \new Staff ="main" {
1491   \relative {
1492     r4 g'8 g c4 c8 d |
1493     e4 r8
1494     <<
1495       { f c c }
1496       \new Staff \with {
1497         alignAboveContext = #"main" }
1498       { f8 f c }
1499     >>
1500     r4 |
1501   }
1502 }
1503 @end lilypond
1504
1505 Ossia-Systeme werden normalerweise ohne Schlüssel und Taktangabe
1506 geschrieben, und sie werden etwas kleiner als das Hauptsystem gesetzt.
1507 Wie man Schlüssel und Taktangabe entfernt, wissen wir schon:
1508 wir setzen den Stencil von beiden auf @code{#f}:
1509
1510 @cindex alignAboveContext-Eigenschaft, Beispiel
1511 @cindex über dem System anordnen, Beispiel
1512 @cindex @code{\with}-Beispiel
1513 @cindex stencil-Eigenschaft, Beispiel
1514 @cindex Schlüssel, Beispiel zur Veränderung
1515 @cindex Taktart, Beispiel zur Veränderung
1516
1517 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1518 \new Staff ="main" {
1519   \relative {
1520     r4 g'8 g c4 c8 d
1521     e4 r8
1522     <<
1523       { f8 c c }
1524       \new Staff \with {
1525         alignAboveContext = #"main"
1526       }
1527       {
1528         \override Staff.Clef.stencil = ##f
1529         \override Staff.TimeSignature.stencil = ##f
1530         { f8 f c }
1531       }
1532     >>
1533     r4
1534   }
1535 }
1536 @end lilypond
1537
1538 @noindent
1539 wobei ein zusätzliches Klammerpaar nach der @code{\with}-Konstruktion
1540 erforderlich ist um sicherzugehen, dass die Modifikation und
1541 die Noten sich auch auf das Ossia-System beziehen.
1542
1543 Was für einen Unterschied macht es, ob man den @code{Staff}-Kontext
1544 mit @code{\with} verändert, oder ob man die Stencils mit
1545 @code{\override} beeinflusst?  Der größte Unterschied liegt
1546 darin, dass Änderungen, die mit @code{\with} eingeführt werden,
1547 während der Erstellung des Kontextes miterzeugt werden und
1548 als @strong{Standardeinstellungen} für diesen Kontext während seiner
1549 gesamten Dauer gelten, während @code{\set}- oder @code{\override}-Befehle
1550 dynamisch in die Noten eingebettet werden -- sie führen die
1551 Änderungen synchron mit einem bestimmten Zeitpunkt in
1552 der Musik aus.  Wenn die Änderungen mit  @code{\unset}
1553 oder @code{\revert} rückgängig gemacht werden, werden
1554 wieder die Standardwerte eingesetzt, die also die sind, die
1555 mit einer @code{\with}-Konstruktion definiert wurden, oder
1556 wenn hier keine definiert worden sind, die normalen
1557 Standardwerte.
1558
1559 Manche Kontexteigenschaften können nur ein einer
1560 @code{\with}-Konstruktion verändert werden.  Das sind
1561 Eigenschaften, die nicht sinnvoll mitten im System geändert
1562 werden können.  @code{alignAboveContext} (Orientierung
1563 über dem Kontext) und die Parallele,
1564 @code{alignBelowContext} (Orientierung unter dem Kontext)
1565 sind zwei derartige Eigenschaften -- wenn das Notensystem
1566 einmal erstellt wurde, ist die Orientierung schon bestimmt
1567 und es wäre nicht sinnvoll, sie später zu ändern.
1568
1569 Die Standardwerte für Layout-Objekt-Eigenschaften können
1570 auch in der @code{\with}-Konstruktion gesetzt werden.
1571 Benutzen Sie einfach den normalen @code{\override}-Befehl
1572 ohne den Kontext, denn der Kontext ist eindeutig definiert
1573 durch die Stelle, an welcher sich @code{\with} befindet.
1574 Wenn an dieser Stelle ein Kontext angegeben wird, produziert LilyPond
1575 eine Fehlermeldung.
1576
1577 Das obige Beispiel könnte also auch so aussehen:
1578
1579 @cindex alignAboveContext-Eigenschaft, Beispiel
1580 @cindex über dem System anordnen, Beispiel
1581 @cindex @code{\with}-Beispiel
1582 @cindex stencil-Eigenschaft, Beispiel
1583 @cindex Schlüssel, Beispiel zur Veränderung
1584 @cindex Taktart, Beispiel zur Veränderung
1585
1586 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1587 \new Staff ="main" {
1588   \relative {
1589     r4 g'8 g c4 c8 d
1590     e4 r8
1591     <<
1592       { f8 c c }
1593       \new Staff \with {
1594         alignAboveContext = #"main"
1595         % Don't print clefs in this staff
1596         \override Clef.stencil = ##f
1597         % Don't print time signatures in this staff
1598         \override TimeSignature.stencil = ##f
1599       }
1600       { f8 f c }
1601     >>
1602     r4
1603   }
1604 }
1605 @end lilypond
1606
1607 Nun können wir daran gehen, auch wirklich die
1608 Größe der Objekte zu ändern.
1609
1610 Manche Layout-Objekte werden aus Glyphen erstellt,
1611 die sich in einer Schriftartdatei befinden.  Dazu gehören
1612 die Notenköpfe, Versetzungszeichen, Text, Schlüssel,
1613 Taktbezeichnung, Dynamik und Gesangstext.  Ihre
1614 Größe wird verändert, indem die
1615 @code{font-size}- (Schriftgröße)-Eigenschaft geändert wird, wie
1616 wir bald sehen werden.  Andere Layout-Objekte, wie
1617 Bögen -- oder allgemein Strecker-Objekte -- werden
1618 individuell gezeichnet, es gibt dazu also keine
1619 @code{font-size}, die mit ihnen verknüpft wäre.
1620 Weitere Eigenschaften wie die Länge von Hälsen und
1621 Taktlinien, Dicke von Balken und anderen Linien und
1622 der Abstand der Notenlinien voneinander müssen auf
1623 spezielle Weise verändert werden.
1624
1625 In unserem Ossia-Beispiel wollen wir zuerst die
1626 Schriftgröße verändern.  Das ist auf zwei Arten möglich.
1627 Entweder wir ändern die Schriftgröße für jede Objektart
1628 mit einem eigenen Befehl, etwa:
1629
1630 @example
1631 \override NoteHead.font-size = #-2
1632 @end example
1633
1634 @noindent
1635 oder wir ändern die Größe aller Schriftobjekte, indem wir
1636 den Wert einer besonderen Eigenschaft, @code{fontSize},
1637 mit dem @code{\set}-Befehl bestimmen oder sie in
1638 eine @code{\with}-Konstruktion (ohne @code{\set} einschließen.
1639
1640 @example
1641 \set fontSize = #-2
1642 @end example
1643
1644 Beide Beispiele reduzieren die Schriftgröße um zwei Schritte
1645 im Vergleich zum vorigen Wert, wobei jeder Schritt die
1646 Schriftgröße um etwa 12% verändert.
1647
1648 Setzen wir das also in unserem Ossia-Beispiel ein:
1649
1650 @cindex alignAboveContext-Eigenschaft, Beispiel
1651 @cindex über dem System anordnen, Beispiel
1652 @cindex @code{\with}-Beispiel
1653 @cindex stencil-Eigenschaft, Beispiel
1654 @cindex Schlüssel, Beispiel zur Veränderung
1655 @cindex Taktart, Beispiel zur Veränderung
1656
1657 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
1658 \new Staff ="main" {
1659   \relative {
1660     r4 g'8 g c4 c8 d
1661     e4 r8
1662     <<
1663       { f8 c c }
1664       \new Staff \with {
1665         alignAboveContext = #"main"
1666         \override Clef.stencil = ##f
1667         \override TimeSignature.stencil = ##f
1668         % Reduce all font sizes by ~24%
1669         fontSize = #-2
1670       }
1671       { f8 f c }
1672     >>
1673     r4
1674   }
1675 }
1676 @end lilypond
1677
1678 Das sieht aber immer noch nicht richtig aus.  Die Notenköpfe
1679 und Fähnchen sind kleiner, aber die Hälse im Vergleich
1680 dazu zu lang und die Notenlinien zu weit auseinander.
1681 Sie müssen auch proportional zur Schriftart verkleinert
1682 werden.  Der nächste Abschnitt behandelt diese Anpassung.
1683
1684
1685 @node Délka a tloušťka předmětů
1686 @subsection Délka a tloušťka předmětů
1687 @translationof Length and thickness of objects
1688
1689 @cindex Entfernungen
1690 @cindex Dicke
1691 @cindex Länge
1692 @funindex magstep
1693 @cindex Größe, verändern
1694 @cindex Notenhalslänge, verändern
1695 @cindex Hälse, Länge verändern
1696 @cindex Notenlinien, Länge verändern
1697
1698 Abstände und Längen werden in LilyPond üblicherweise
1699 in Notenlinienabständen (engl. staff-spaces) gemessen.
1700 Das ist der Abstand zwischen zwei Notenlinien im System.
1701 Die meisten Dicken (engl. thickness) dagegen werden in
1702 einer internen Einheit Linien-Dicke (engl. line-thickness)
1703 gemessen.  Die Linien von Dynamikklammern zum Beispiel
1704 haben standardmäßig eine Dicke von einer Einheit
1705 @code{line-thickness}, während die Dicke eines
1706 Notenhalses 1,3 ist.  Beachten Sie jedoch, dass sich
1707 manche Dicken anders verhalten: die Dicke von
1708 Balken etwa wird in Notenlinienabständen gemessen.
1709
1710 Wie also werden Längen skaliert um der Schriftgröße
1711 zu entsprechen?  Das kann mit einer besonderen Funktion
1712 @code{magstep} vorgenommen werden, die genau für
1713 diesen Zweck vorhanden ist.  Sie nimmt ein Argument auf,
1714 die Änderung der Schriftgröße (#-2 im obigen Beispiel)
1715 und gibt einen Skalierungsfaktor aus, der dazu dient,
1716 Objekte proportionell zueinander zu verändern.  So wird
1717 sie benutzt:
1718
1719 @cindex alignAboveContext-Eigenschaft, Beispiel
1720 @cindex über dem System anordnen, Beispiel
1721 @cindex @code{\with}-Beispiel
1722 @cindex stencil-Eigenschaft, Beispiel
1723 @cindex Schlüssel, Beispiel zur Veränderung
1724 @cindex Taktart, Beispiel zur Veränderung
1725 @cindex Notenlinienabstände verändern
1726 @cindex staff-space-Eigenschaft verändern
1727 @cindex magstep-Funktion, Beispiel
1728 @cindex Schriftart-Eigenschaft, Beispiel
1729
1730 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
1731 \new Staff ="main" {
1732   \relative {
1733     r4 g'8 g c4 c8 d
1734     e4 r8
1735     <<
1736       { f8 c c }
1737       \new Staff \with {
1738         alignAboveContext = #"main"
1739         \override Clef.stencil = ##f
1740         \override TimeSignature.stencil = ##f
1741         fontSize = #-2
1742         % Reduce stem length and line spacing to match
1743         \override StaffSymbol.staff-space = #(magstep -2)
1744       }
1745       { f8 f c }
1746     >>
1747     r4
1748   }
1749 }
1750 @end lilypond
1751
1752 @noindent
1753 Da die Länge eines Halses und viele andere Längeneigenschaften
1754 relativ zum Wert des Notenlinienabstands (@code{staff-space})
1755 errechnet werden, werden sie auch automatisch verkleinert.
1756 Das wirkt sich jedoch nur auf die vertikale Skalierung des Ossias
1757 aus -- die horizontale Skala ist durch das Layout des Haupsystems
1758 bestimmt und wird also von diesen Größenänderungen nicht
1759 betroffen.  Wenn natürlich die Größe der gesamten Noten reduziert
1760 würde, würde sich auch die horizontalen Abstände ändern.  Dass
1761 wird später im Layout-Abschnitt betrachtet.
1762
1763 Mit dieser Änderung ist unser Ossia fertig.  Die Größen und Längen
1764 aller anderen Objekte können auf analoge Weise geändert
1765 werden.
1766
1767 Für kleine Größenänderungen, wie in dem obigen Beispiel,
1768 braucht die Dicke der verschiedenen Linien, wie Taktlinien,
1769 Notenlinien, Balken, Dynamikklammern usw. normalerweise
1770 keine spezielle Anpassung.  Wenn die Dicke eines bestimmten
1771 Layout-Objektes angepasst werden muss, kann man das erreichen,
1772 indem die entsprechende @code{thickness}-Eigenschaft des
1773 Objekts mit @code{\override} verändert wird.  Ein Beispiel,
1774 wie man die Dicke von Bögen ändert, wurde schon gezeigt,
1775 siehe @ref{Vlastnosti předmětů v rozvržení,,vlastnosti předmětů v rozvržení}.  Die Dicke aller
1776 gezeichneten Objekte (die also nicht aus einer Schriftart
1777 stammen) können auf gleiche Weise geändert werden.
1778
1779
1780 @node Umístění předmětů
1781 @section Umístění předmětů
1782 @translationof Placement of objects
1783
1784 @menu
1785 * Automatické chování::
1786 * Předměty uvnitř notové osnovy::
1787 * Předměty vně notové osnovy::
1788 @end menu
1789
1790
1791 @node Automatické chování
1792 @subsection Automatické chování
1793 @translationof Automatic behavior
1794
1795 @cindex within-staff-předměty
1796 @cindex outside-staff-předměty
1797 @cindex Předměty uvnitř notové osnovy
1798 @cindex Předměty vně notové osnovy
1799
1800 Es gibt Objekte der Notation, die zum Notensystem gehören, und
1801 andere, die außerhalb des Systems gesetzt werden müssen.  Sie
1802 werden @code{within-staff}-Objekte bzw.
1803 @code{outside-staff}-Objekte genannt.
1804
1805 @code{within-staff}-Objekte werden innerhalb des Notensystems
1806 (engl. staff) gesetzt: Notenköpfe, Hälse, Versetzungszeichen
1807 usw.  Ihre Position ist üblicherweise durch die notierte Musik
1808 bestimmt -- sie werden vertikal auf bestimmten Linien notiert
1809 oder sind an andere Objekte gebunden, die vertikal festgelegt
1810 sind.  Kollisionen von Notenköpfen, Hälsen und Versetzungszeichen
1811 werden normalerweise automatisch vermieden.  Es gibt
1812 Befehle, um dieses automatische Verhalten zu verändern, wie
1813 unten gezeigt werden soll.
1814
1815 Objekte, die außerhalb des Notensystems gesetzt werden, sind
1816 unter Anderem Übungsmarkierungen, Text und Dynamikzeichen.
1817 LilyPonds Regel für ihre vertikale Positionierung lautet, sie so nah wie
1818 möglich am Notensystem zu setzen, aber nicht so nah, dass
1819 sie mit anderen Objekten kollidieren.  Dabei wird die
1820 @code{outside-staff-priority}-(Priorität außerhalb des Notensystems)-Eigenschaft
1821 eingesetzt, um die Reihenfolge zu bestimmen, in denen Objekte gesetzt werden
1822 sollen.
1823
1824 Zuerst werden alle Innersystemobjekte von LilyPond gesetzt.
1825 Dann werden die Objekte außerhalb des Systems nach
1826 ihrer
1827 @code{outside-staff-priority} geordnet.  Die @code{outside-staff}-Objekte
1828 werden dann nacheinander gesetzt, mit der niedrigsten
1829 Priorität beginnend, und so gesetzt, dass sie nicht mit anderen
1830 Objekten kollidieren, die schon gesetzt wurden.  Wenn also zwei
1831 @code{outside-staff}-Objekte um den selben Platz streiten,
1832 wird das mit der geringeren @code{outside-staff-priority} näher
1833 am System gesetzt werden.  Wenn zwei Objekte die selbe Priorität
1834 haben, wird das näher am System gesetzt, welches zuerst
1835 auftritt.
1836
1837 Im folgenden Beispiel haben alle Textbeschriftungen die gleiche
1838 Priorität (weil sie nicht explizit gesetzt worden ist).  Beachten Sie,
1839 dass @qq{Text3} wieder dicht am System gesetzt wurde, weil
1840 er unter @qq{Text2} passt.
1841
1842 @cindex Textbeschriftungsbeispiel
1843
1844 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1845 c2^"Text1"
1846 c2^"Text2"
1847 c2^"Text3"
1848 c2^"Text4"
1849 @end lilypond
1850
1851 Notensysteme werden in den Standardeinstellungen auch so dicht
1852 beieinander gesetzt wie es möglich ist (mit einem minimalen Abstand).
1853 Wenn Noten sehr weit aus einem System herausragen, zwingen sie
1854 das nächste System weiter weg, wenn eine Kollision drohen würde.
1855 Im nächsten Beispiel sehen Sie, wie Noten auf zwei Systemen
1856 @qq{ineinander greifen}.
1857
1858 @lilypond[quote,ragged-right,verbatim]
1859 <<
1860   \new Staff {
1861     \relative { c'4 a, }
1862   }
1863   \new Staff {
1864     \relative { c''''4 a, }
1865   }
1866 >>
1867 @end lilypond
1868
1869
1870 @node Předměty uvnitř notové osnovy
1871 @subsection Předměty uvnitř notové osnovy
1872 @translationof Within-staff objects
1873
1874 Es wurde schon gezeigt, wie die Befehle @code{\voiceXXX} die Richtung
1875 von Bögen, Fingersatz und allen anderen Objekten beeinflusst,
1876 die von der Richtung der Notenhälsen abhängen.  Diese Befehle
1877 sind nötig, wenn polyphone Musik geschrieben wird, damit sich
1878 die einzelnen Melodielinien klar abzeichnen.  Es kann aber von Zeit
1879 zu Zeit nötig sein, dieses automatische Verhalten zu verändern.  Das
1880 kann entweder für ganze Abschnitte, aber genauso auch nur für eine
1881 einzelne Note vorgenommen werden.  Die Eigenschaft, die die Richtung
1882 bestimmt, ist die @code{direction}-Eigenschaft jedes Layout-Objekts.
1883 Es soll erst erklärt werden, was sie bewirkt und dann eine Anzahl
1884 an fertigen Befehlen für die üblicheren Situationen präsentiert werden,
1885 mit denen Sie gleich loslegen können.
1886
1887 Manche Layout-Objekte, wie Legato- und Bindebögen, biegen sich
1888 oder zeigen entweder nach oben oder nach unten, andere, wie
1889 Hälse und Fähnchen, verändern auch die Position rechts oder links,
1890 je nach der Richtung, in die sie zeigen.  Das wird automatisch
1891 berücksichtigt, wenn die @code{direction}-Eigenschaft verändert
1892 wird.
1893
1894 @funindex down
1895 @funindex up
1896 @funindex center
1897 @funindex neutral
1898 @cindex hoch-Eigenschaft
1899 @cindex runter-Eigenschaft
1900 @cindex zentriert-Eigenschaft
1901 @cindex neutral-Eigenschaft
1902
1903 Das folgende Beispiel zeigt im ersten Takt die Standardeinstellung
1904 für Hälse, die bei hohen Noten nach unten zeigen und bei tiefen
1905 noten nach oben. Im nächsten Takt werden alle Hälse nach unten
1906 gezwungen, im dritten Takt nach oben, und im vierten wird wieder
1907 der Standard eingestellt.
1908
1909 @cindex Notenhals, Beispiel zur Veränderung
1910 @cindex Richtungseigenschaft, Beispiel
1911
1912 @lilypond[quote,verbatim,relative=2]
1913 a4 g c a
1914 \override Stem.direction = #DOWN
1915 a4 g c a
1916 \override Stem.direction = #UP
1917 a4 g c a
1918 \revert Stem.direction
1919 a4 g c a
1920 @end lilypond
1921
1922 Hier werden die Konstanten @code{DOWN} und @code{UP}
1923 eingesetzt.  Sie haben die Werte @code{-1} bzw. @code{+1}, und
1924 diese numerischen Werte können ebenso benutzt werden.  Auch
1925 der Wert @code{0} kann in manchen Fällen benutzt werden.  Er
1926 bedeutet für die Hälse das gleiche wie @code{UP}, für einige
1927 andere Objekte jedoch @qq{zentriert}.  Es gibt hierzu die Konstante
1928 @code{CENTER}, die den Wert @code{0} hat.
1929
1930 Es gibt aber einfachere Befehle, die normalerweise benutzt werden.
1931 Hier eine Tabelle der häufigsten.  Die Bedeutung des Befehls wird
1932 erklärt, wenn sie nicht selbstverständlich ist.
1933
1934 @multitable @columnfractions .2 .2 .25 .35
1935 @headitem Runter/Links
1936   @tab Rauf/Rechts
1937   @tab Rückgängig
1938   @tab Wirkung
1939 @item @code{\arpeggioArrowDown}
1940   @tab @code{\arpeggioArrowUp}
1941   @tab @code{\arpeggioNormal}
1942   @tab Arpeggio mit Pfeil nach unten, oben oder ohne Pfeil
1943 @item @code{\dotsDown}
1944   @tab @code{\dotsUp}
1945   @tab @code{\dotsNeutral}
1946   @tab Richtung der Verschiebung eines Punktes, um Notenlinien zu vermeiden
1947 @item @code{\dynamicDown}
1948   @tab @code{\dynamicUp}
1949   @tab @code{\dynamicNeutral}
1950   @tab Position der Dynamik-Bezeichnung relativ zum System
1951 @item @code{\phrasingSlurDown}
1952   @tab @code{\phrasingSlurUp}
1953   @tab @code{\phrasingSlurNeutral}
1954   @tab Befehl für Richtung von Phrasierungsbögen
1955 @item @code{\slurDown}
1956   @tab @code{\slurUp}
1957   @tab @code{\slurNeutral}
1958   @tab Befehl für Richtung von Legatobögen
1959 @item @code{\stemDown}
1960   @tab @code{\stemUp}
1961   @tab @code{\stemNeutral}
1962   @tab Befehl für Richtung von Hälsen
1963 @item @code{\textSpannerDown}
1964   @tab @code{\textSpannerUp}
1965   @tab @code{\textSpannerNeutral}
1966   @tab Position von Textbeschriftungen, die als Strecker eingegeben werden
1967 @item @code{\tieDown}
1968   @tab @code{\tieUp}
1969   @tab @code{\tieNeutral}
1970   @tab Befehl für Richtung von Bindebögen
1971 @item @code{\tupletDown}
1972   @tab @code{\tupletUp}
1973   @tab @code{\tupletNeutral}
1974   @tab Befehl für Richtung von Klammern/Zahlen der N-tolen
1975 @end multitable
1976
1977 Diese vordefinierten Befehl können allerdings @strong{nicht}
1978 zusammen mit @code{\once} benutzt werden.  Wenn Sie die
1979 Wirkung eines Befehl auf eine einzige Noten begrenzen wollen,
1980 müssen Sie den entsprechenden
1981 @code{\once \override}-Befehl benutzen oder den definierten
1982 Befehl, gefolgt von dem entsprechenden neutralisierenden
1983 @code{xxxNeutral}-Befehl nach der Note.
1984
1985
1986 @subheading Fingersatz
1987
1988 @cindex Fingersatz, Positionierung
1989 @cindex Fingersatz, Akkorde
1990
1991 Die Positionierung von Fingersatz kann auch durch den Wert
1992 seiner @code{direction}-Eigenschaft beeinflusst werden, aber
1993 eine Veränderung von  @code{direction} hat keinen Einfluss auf
1994 Akkorde. es gibt auch hier
1995 besondere Befehle, mit denen der Fingersatz von einzelnen
1996 Noten in Akkorden kontrolliert werden kann, wobei mögliche
1997 Positionen über, unter der Note und rechts bzw. links von
1998 ihr sind.
1999
2000 Zunächst die Wirkungsweise von @code{direction} auf
2001 den Fingersatz: im ersten Takt der Standard, dann
2002 die Wirkung von @code{DOWN} (runter) und @code{UP}
2003 (hinauf).
2004
2005 @cindex Fingersatz, Beispiel zur Veränderung
2006 @cindex direction-Eigenschaft, Beispiel
2007
2008 @lilypond[quote,verbatim,relative=2]
2009 c4-5 a-3 f-1 c'-5
2010 \override Fingering.direction = #DOWN
2011 c4-5 a-3 f-1 c'-5
2012 \override Fingering.direction = #UP
2013 c4-5 a-3 f-1 c'-5
2014 @end lilypond
2015
2016 Eine Beeinflussung der @code{direction}-Eigenschaft ist jedoch
2017 nicht die einfachste Art, Fingersatzbezeichnungen manuell über oder
2018 unter das System zu setzen.  Normalerweise bietet es sich an,
2019 @code{_} oder @code{^} anstelle von @code{-} vor der Fingersatz-Zahl
2020 zu benutzen.  Hier das vorherigen Beispiel mit dieser Methode:
2021
2022 @cindex Fingersatz-Beispiel
2023
2024 @lilypond[quote,verbatim,relative=2]
2025 c4-5 a-3 f-1 c'-5
2026 c4_5 a_3 f_1 c'_5
2027 c4^5 a^3 f^1 c'^5
2028 @end lilypond
2029
2030 Die @code{direction}-Eigenschaft wirkt sich nicht auf
2031 Akkorde aus, während die Präfixe @code{_} und @code{^} funktionieren.
2032 Standardmäßig wird der Fingersatz automatisch entweder
2033 über oder unter dem Akkord gesetzt:
2034
2035 @cindex Fingersatz-Beispiel
2036
2037 @lilypond[quote,verbatim]
2038 \relative {
2039   <c''-5 g-3>4
2040   <c-5 g-3 e-2>4
2041   <c-5 g-3 e-2 c-1>4
2042 }
2043 @end lilypond
2044
2045 @noindent
2046 aber das kann manuell geändert werden, um einzelne Fingersatzanweisungen
2047 nach oben oder unten zu zwingen:
2048
2049 @cindex Fingersatz-Beispiel
2050
2051 @lilypond[quote,verbatim]
2052 \relative {
2053   <c''-5 g-3 e-2 c-1>4
2054   <c^5 g_3 e_2 c_1>4
2055   <c^5 g^3 e^2 c_1>4
2056 }
2057 @end lilypond
2058
2059 Noch bessere Kontrolle über die Positionierung von Fingersatz für
2060 einzelne Noten in einem Akkord ist mit dem
2061 @code{\set fingeringOrientations}-Befehl möglich.  Die Syntax
2062 lautet:
2063
2064 @example
2065 @code{\set fingeringOrientations = #'([up] [left/right] [down])}
2066 @end example
2067
2068 @noindent
2069 @code{\set}wird benutzt, weil @code{fingeringOrientations} eine
2070 Eigenschaft des @code{Voice}-Kontextes ist, erstellt und eingesetzt
2071 vom @code{New_fingering_engraver}.
2072
2073 Die Eigenschaft kann als Wert eine Liste mit einem bis drei Einträgen
2074 haben.  Damit wird bestimmt, ob Fingersatz oberhalb gesetzt
2075 werden kann (wenn @code{up} in der Liste auftaucht), darunter
2076 (wenn@code{down} auftaucht), links (wenn @code{left} auftaucht)
2077 oder rechts (wenn @code{right} auftaucht).  Wenn andererseits
2078 ein Wert nicht auftaucht, wir auch kein Fingersatz in dieser Richtung
2079 gesetzt.  LilyPond nimmt diese Beschränkung als Bedingung und
2080 errechnet die besten Positionen für die Noten des nächsten Akkordes.
2081 Die seitliche Positionierung kann nur auf einer Seite des Akkordes
2082 geschehen, nicht auf beiden gleichzeitig, es kann also nur entweder
2083 @code{left} oder @code{right} auftreten, nicht beide gleichzeitig.
2084
2085 @warning{Damit eine einzelne Note mit diesem Befehl beeinflusst werden
2086 kann, muss sie als ein @qq{Ein-Noten-Akkord} geschrieben
2087 werden, indem einfache spitze Klammern um die Note positioniert
2088 werden.}
2089
2090 Hier ein paar Beispiele:
2091
2092 @cindex Fingersatz-Beispiel
2093 @cindex @code{\set}, Benutzungsbeispiel
2094 @cindex fingerOrientations-Eigenschaft, Beispiel
2095
2096 @lilypond[quote,verbatim,relative=1]
2097 \set fingeringOrientations = #'(left)
2098 <f-2>4
2099 <c-1  e-2 g-3 b-5>4
2100 \set fingeringOrientations = #'(left)
2101 <f-2>4
2102 <c-1  e-2 g-3 b-5>4
2103 \set fingeringOrientations = #'(up left down)
2104 <f-2>4
2105 <c-1  e-2 g-3 b-5>4
2106 \set fingeringOrientations = #'(up left)
2107 <f-2>4
2108 <c-1  e-2 g-3 b-5>4
2109 \set fingeringOrientations = #'(right)
2110 <f-2>4
2111 <c-1  e-2 g-3 b-5>4
2112 @end lilypond
2113
2114 @noindent
2115 Wenn die Fingersatzbezeichnung zu gedrungen aussieht,
2116 kann auch die Schriftgröße (@code{font-size}) verringert
2117 werden.  Der Standardwert kann aus dem
2118 @code{Fingering}-Objekt in der IR entnommen werden,
2119 er ist @code{-5}, versuchen wir es also mit @code{-7}.
2120
2121 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2122 \override Fingering.font-size = #-7
2123 \set fingeringOrientations = #'(left)
2124 <f-2>4
2125 <c-1  e-2 g-3 b-5>4
2126 \set fingeringOrientations = #'(left)
2127 <f-2>4
2128 <c-1  e-2 g-3 b-5>4
2129 \set fingeringOrientations = #'(up left down)
2130 <f-2>4
2131 <c-1  e-2 g-3 b-5>4
2132 \set fingeringOrientations = #'(up left)
2133 <f-2>4
2134 <c-1  e-2 g-3 b-5>4
2135 \set fingeringOrientations = #'(right)
2136 <f-2>4
2137 <c-1  e-2 g-3 b-5>4
2138 @end lilypond
2139
2140
2141
2142 @node Předměty vně notové osnovy
2143 @subsection Předměty vně notové osnovy
2144 @translationof Outside-staff objects
2145
2146 Předměty vně notové osnovy werden automatisch gesetzt,
2147 um Kollisionen zu vermeiden.  Objekten mit einem geringeren
2148 Prioritätswert der Eigenschaft @code{outside-staff-priority}
2149 werden näher an das System gesetzt, und andere Objekte außerhalb
2150 des Systems werden dann soweit vom System entfernt gesetzt, dass
2151 Zusammenstöße vermieden werden.  Die
2152 @code{outside-staff-priority}-Eigenschaft ist im
2153 @code{grob-interface} definiert und ist also eine Eigenschaft
2154 von allen Layout-Objekten.  Standardmäßig ist sie für alle Objekte
2155 auf falsch (@code{#f}) gesetzt; dieser Wert wird in einen numerischen
2156 Wert dem Objekt entsprechend geändert, wenn das Objekt für die
2157 Notenausgabe erstellt wird.  Die Tabelle unten zeigt die
2158 Standardwerte für die meistbenutzten @code{outside-staff}-Objekte,
2159 die den Voreinstellungen nach im @code{Staff}- oder
2160 @code{Voice}-Kontext gesetzt werden.
2161
2162 @cindex spanners
2163 @cindex Strecker
2164
2165 Achtung bei einigen ungewöhnlichen Objektbezeichnungen: Strecker-Objekte
2166 werden automatisch erstellt, um die vertikale Position von Grobs
2167 zu kontrollieren, die an unterschiedlichen musikalischen Momenten
2168 beginnen und enden (könnten).  Wenn also @code{outside-staff-priority}
2169 des darunterliegenden Grobs geändert wird, hat das keine Auswirkung.
2170 Zum Beispiel bringt das Ändern von @code{outside-staff-priority}
2171 des @code{Hairpin}-(Dynamikklammer)-Objekts keine Änderung in der
2172 vertikalen Position von Crescendo-Klammern -- anstatt dessen muss
2173 @code{outside-staff-priority} des hiermit assoziierten
2174 @code{DynamicLineSpanne}-Objekts geändert werden.  Dieser
2175 @code{\override}-Befehl muss zu Beginn des Streckers gesetzt werden,
2176 welcher womöglich mehrere verbundene Dynamikklammern und Dynamikbezeichnung
2177 beinhaltet.
2178
2179 @multitable @columnfractions .3 .3 .3
2180 @headitem Layout-Objekt
2181   @tab Priorität
2182   @tab Kontrolliert Position von:
2183 @item @code{MultiMeasureRestText}
2184   @tab @code{450}
2185   @tab Text über Ganztaktpausen
2186 @item @code{TextScript}
2187   @tab @code{450}
2188   @tab Textbeschriftung
2189 @item @code{OttavaBracket}
2190   @tab @code{400}
2191   @tab Ottava (Oktavierungsklammern)
2192 @item @code{TextSpanner}
2193   @tab @code{350}
2194   @tab Text-Strecker
2195 @item @code{DynamicLineSpanner}
2196   @tab @code{250}
2197   @tab Alle Dynamik-Bezeichnungen
2198 @item @code{VoltaBracketSpanner}
2199   @tab @code{100}
2200   @tab Volta-Klammern
2201 @item @code{TrillSpanner}
2202   @tab @code{50}
2203   @tab Triller-Strecker
2204 @end multitable
2205
2206 Hier ein Beispiel, das die Standardpositionierung von einigen
2207 Objekten zeigt.
2208
2209 @cindex Text-Strecker
2210 @cindex Text-Spanner
2211 @funindex \startTextSpan
2212 @funindex \stopTextSpan
2213 @funindex startTextSpan
2214 @funindex stopTextSpan
2215 @cindex Ottava-Klammer
2216 @cindex Oktavierungsklammer
2217
2218 @cindex TextSpanner, Beispiel zur Veränderung
2219 @cindex bound-details-Eigenschaft, Beispiel
2220
2221 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2222 % Set details for later Text Spanner
2223 \override TextSpanner.bound-details.left.text
2224     = \markup { \small \bold Slower }
2225 % Place dynamics above staff
2226 \dynamicUp
2227 % Start Ottava Bracket
2228 \ottava #1
2229 c'4 \startTextSpan
2230 % Add Dynamic Text and hairpin
2231 c4\pp\<
2232 c4
2233 % Add Text Script
2234 c4^Text
2235 c4 c
2236 % Add Dynamic Text and terminate hairpin
2237 c4\ff c \stopTextSpan
2238 % Stop Ottava Bracket
2239 \ottava #0
2240 c,4 c c c
2241 @end lilypond
2242
2243 Dieses Beispiel zeigt auch, wie man Text-Strecker erstellt, d.h.
2244 Text mit Bindestrichen, der sich über eine bestimmte Länge
2245 erstreckt.  Der Strecker beginnt mit dem
2246 @code{\startTextSpan}-Befehl und endet mit dem
2247 @code{\stopTextSpan}-Befehl, und das Format des Textes
2248 wird mit dem @code{\override TextSpanner}-Befehl bestimmt.
2249 Mehr Einzelheiten siehe @ruser{Text mit Verbindungslinien}.
2250
2251 Im Beispiel wird auch gezeigt, wie Oktavierungsklammern
2252 (Ottava) erstellt werden.
2253
2254 @cindex Taktzahlposition verändern
2255 @cindex Verändern der Taktzahlposition
2256 @cindex Position der Taktzahl, verändern
2257 @cindex Metronom-Bezeichnungsposition verändern
2258 @cindex Verändern der Metronom-Bezeichnungsposition
2259 @cindex Übungszeichenposition verändern
2260 @cindex Verändern der Übungszeichenposition
2261
2262 Beachten Sie, dass Taktnummern, Metronombezeichnungen
2263 und Übungszeichen nicht gezeigt werden.  Sie werden
2264 standardmäßig im @code{Score}-(Partitur)-Kontext
2265 erstellt und ihre @code{outside-staff-priority} wird
2266 in Bezug auf die Layout-Objekte, die im @code{Staff}-Kontext
2267 erstellt werden, ignoriert.  Wenn Sie Taktnummern,
2268 Metronombezeichnungen oder Übungszeichen entsprechend
2269 ihrer Außersystem-Priorität setzen wollen, müssen Sie
2270 die entsprechenden Engraver (@code{Bar_number_engraver},
2271 @code{Metronome_mark_engraver} oder @code{Mark_engraver})
2272 vom @code{Score}-Kontext entfernen und dem
2273 @code{Staff}-Kontext hinzufügen.  Wenn die Engraver so
2274 geändert werden, erhalten sie folgenden Werte für
2275 @code{outside-staff-priority}:
2276
2277 @multitable @columnfractions .3 .3
2278 @headitem Layout-Objekt           @tab Priorität
2279 @item @code{RehearsalMark}        @tab @code{1500}
2280 @item @code{MetronomeMark}        @tab @code{1000}
2281 @item @code{BarNumber}            @tab @code{ 100}
2282 @end multitable
2283
2284 Wenn die Standardwerte der @code{outside-staff-priority} nicht
2285 die Positionierung hervorrufen, die Sie wünschen, kann die
2286 Priorität eines jeden Objektes geändert werden.  Als Beispiel
2287 wollen wir zeigen, wie sich die Oktavierungsklammer unter
2288 den Textstrecker des vorigen Beispiels setzen lässt.  Wir müssen
2289 nur die Priorität des
2290 @code{OttavaBracket}-Objektes in der IR oder der Tabelle oben
2291 herausfinden und einen kleineren Wert angeben als der Wert, den
2292 das @code{TextSpanner}-(Strecker)-Objekt bekommt, wobei noch daran
2293 zu denken ist, dass @code{OttavaBracket} im @code{Staff}-Kontext
2294 erstellt wird:
2295
2296 @cindex TextSpanner, Beispiel zur Veränderung
2297 @cindex bound-details-Eigenschaft, Beispiel
2298
2299 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2300 % Set details for later Text Spanner
2301 \override TextSpanner.bound-details.left.text
2302     = \markup { \small \bold Slower }
2303 % Place dynamics above staff
2304 \dynamicUp
2305 % Place following Ottava Bracket below Text Spanners
2306 \once \override Staff.OttavaBracket.outside-staff-priority = #340
2307 % Start Ottava Bracket
2308 \ottava #1
2309 c'4 \startTextSpan
2310 % Add Dynamic Text
2311 c4\pp
2312 % Add Dynamic Line Spanner
2313 c4\<
2314 % Add Text Script
2315 c4^Text
2316 c4 c
2317 % Add Dynamic Text
2318 c4\ff c \stopTextSpan
2319 % Stop Ottava Bracket
2320 \ottava #0
2321 c,4 c c c
2322 @end lilypond
2323
2324 @cindex Legatobögen und outside-staff-priority
2325 @cindex Legatobögen und Artikulationszeichen
2326 @cindex Artikulationszeichen und Legatobögen
2327
2328 Legatobögen werden als Innersystem-Objekte klassifiziert, aber
2329 sie erscheinen oft auch über dem System, wenn die Noten, an die
2330 sie verbunden sind, sehr hoch im System notiert sind.  Dadurch
2331 können Außersystem-Objekte, wie Artikulationszeichen, zu hoch
2332 gerückt werden.  Die @code{avoid-slur}-Eigenschaft hat nur
2333 eine Auswirkung, wenn auch die @code{outside-staff-priority}
2334 auf @code{#f} gesetzt ist.  Alternativ kann die
2335 @code{outside-staff-priority}  des Legatobogens auf einen
2336 numerischen Wert gesetzt werden, sodass er mit anderen
2337 Außersystem-Objekten anhand dieses Wertes gesetzt wird.
2338 Hier ein Beispiel, das die beiden Möglichkeiten veranschaulicht:
2339
2340 @lilypond[quote,verbatim,relative=2]
2341 c4( c^\markup { \tiny \sharp } d4.) c8
2342 c4(
2343 \once \override TextScript.avoid-slur = #'inside
2344 \once \override TextScript.outside-staff-priority = ##f
2345 c4^\markup { \tiny \sharp } d4.) c8
2346 \once \override Slur.outside-staff-priority = #500
2347 c4( c^\markup { \tiny \sharp } d4.) c8
2348 @end lilypond
2349
2350 Eine Änderung der @code{outside-staff-priority} kann auch dazu
2351 benutzt werden, die vertikale Plazierung von individuellen Objekten
2352 zu kontrollieren, auch wenn das Ergebnis nicht immer optimal
2353 ist.  Im nächsten Beispiel soll @qq{Text3} oberhalb von @qq{Text4}
2354 gesetzt werden, das Beispiel wurde behandelt in
2355 @ref{Automatické chování,,automatickém chování}.  Der Wert der Priorität muss also für
2356 die Eigenschaft @code{TextScript} entweder in der IR oder in der
2357 Tabelle oben festgestellt werden und dann die Priorität für
2358 @qq{Text3} höher eingestellt werden:
2359
2360 @cindex TextScript, Beispiel zur Veränderung
2361 @cindex outside-staff-priority-Eigenschaft, Beispiel
2362
2363 @lilypond[quote,fragment,ragged-right,verbatim]
2364 c''2^"Text1"
2365 c''2^"Text2" |
2366 \once \override TextScript.outside-staff-priority = #500
2367 c''2^"Text3"
2368 c''2^"Text4" |
2369 @end lilypond
2370
2371 Damit wird zwar @qq{Text3} ganz richtig über @qq{Text4}
2372 platziert, aber auch über @qq{Text2}, und @qq{Text4}
2373 wird jetzt weiter unten gesetzt.  Eigentlich sollten ja alle
2374 diese Anmerkungen gleichweit vom System entfernt sein.
2375 Dazu muss offensichtlich horizontal etwas Platz gemacht
2376 werden.  Das kann erreicht werden mit dem
2377 @code{textLengthOn}-(Textlänge an)-Befehl.
2378
2379 @subheading \textLengthOn (Textlänge berücksichtigen)
2380
2381 @cindex Noten, durch Text gespreizt
2382 @funindex \textLengthOn
2383 @funindex textLengthOn
2384 @funindex \textLengthOff
2385 @funindex textLengthOff
2386
2387 Standardmäßig wird Text, der mit dem Beschriftungsbefehl
2388 @code{\markup} bzw. Äquivalenten erstellt wird, kein
2389 zusätzlicher Platz in Bezug auf die Positionierung der Noten
2390 zugestanden.  Der @code{\textLengthOn}-Befehl ändert
2391 dieses Verhalten, so dass die Noten gespreizt werden, wenn
2392 die Breite des Textes es erfordert:
2393
2394 @lilypond[quote,fragment,ragged-right,verbatim]
2395 \textLengthOn  % Cause notes to space out to accommodate text
2396 c''2^"Text1"
2397 c''2^"Text2" |
2398 c''2^"Text3"
2399 c''2^"Text4" |
2400 @end lilypond
2401
2402 Dieses Verhalten wird mit dem @code{\textLengthOff}-Befehl
2403 rückgängig gemacht.  Erinnern Sie sich, dass @code{\once} nur mit
2404 @code{\override}, @code{\set}, @code{\revert} oder @code{unset}
2405 funktioniert, der Befehl kann also nicht zusammen mit
2406 @code{\textLengthOn} benutzt werden.
2407
2408 @cindex Textbeschriftung, Vermeidung von Zusammenstößen
2409 @cindex Zusammenstöße vermeiden mit Textbeschriftung
2410
2411 Textbeschriftung vermeidet auch Noten, die über das System hinausstehen.
2412 Wenn das nicht gewünscht ist, kann die automatische Verschiebung
2413 nach oben hin auch vollständig ausgeschaltet werden, indem die
2414 Priorität auf @code{#f} gesetzt wird.  Hier ein Beispiel, wie
2415 eine Textbeschriftung mit diesen Noten reagiert:
2416
2417 @cindex Textbeschriftung, Beispiel zur Veränderung
2418 @cindex outside-staff-priority-Eigenschaft, Beispiel
2419
2420 @lilypond[quote,ragged-right,verbatim]
2421 \relative {
2422   % This markup is short enough to fit without collision
2423   c''2^"Tex" c'' |
2424   R1 |
2425
2426   % This is too long to fit, so it is displaced upwards
2427   c,,2^"Text" c'' |
2428   R1 |
2429
2430   % Turn off collision avoidance
2431   \once \override TextScript.outside-staff-priority = ##f
2432   c,,2^"Long Text   " c'' |
2433   R1 |
2434
2435   % Turn off collision avoidance
2436   \once \override TextScript.outside-staff-priority = ##f
2437   \textLengthOn        % and turn on textLengthOn
2438   c,,2^"Long Text   "  % Spaces at end are honored
2439   c''2 |
2440 }
2441 @end lilypond
2442
2443
2444 @subheading Dynamik
2445
2446 @cindex Verändern der Positionierung von Dynamikzeichen
2447 @cindex Dynamikzeichen: Positionierung verändern
2448
2449 Dynamikbezeichnung wird üblicherweise unter dem System
2450 gesetzt, kann aber auch nach oben mit dem Befehl
2451 @code{dynamicUp} gezwungen werden.  Die Bezeichnung
2452 wird vertikal relativ zu der Note positioniert, an die sie angefügt
2453 wurde.  Sie wird vertikal variabel gesetzt in Bezug zu
2454 Innersystemobjekten wie Bögen oder Taktnummern. Damit
2455 können oft recht gute Resultate erreicht werden, wie im
2456 folgenden Beispiel:
2457
2458 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2459 \clef "bass"
2460 \key aes \major
2461 \time 9/8
2462 \dynamicUp
2463 bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\!
2464 ees,2.~\)\mf ees4 r8
2465 @end lilypond
2466
2467 Wenn aber Noten und Dynamikzeichen sehr dicht beieinander
2468 stehen, positioniert die automatische Kollisionsvermeidung
2469 später kommende Dynamikzeichen weiter weg, was allerdings
2470 nicht immer die beste Möglichkeit ist, wie in dem folgenden,
2471 etwas gewollten Beispiel zu sehen ist:
2472
2473 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2474 \dynamicUp
2475 a4\f b\mf c\mp b\p |
2476 @end lilypond
2477
2478 @noindent
2479 Wenn eine ähnliche Situation in @qq{echter} Musik auftaucht,
2480 kann es nötig sein, die Noten etwas zu spreizen, damit die
2481 Dynamikzeichen alle auf der selben vertikalen Position
2482 gesetzt werden können.  Dieses Verhalten war im Falle von
2483 Textbeschriftungen möglich mit dem @code{\textLengthOn}-Befehl,
2484 aber es gibt keinen entsprechenden Befehl für Dynamik.  Wir
2485 müssen also unsere eigenen Befehle mit @code{\override}
2486 konstruieren.
2487
2488
2489 @subheading Verändern der Größe von grobs
2490
2491 @cindex Grob, Größenveränderung
2492 @cindex Größenveränderung von grobs
2493
2494 Zuallererst müssen wir lernen, wie die Größe von Grobs verändert
2495 wird.  Alle Grobs besitzen einen Referenzpunkt, der
2496 benutzt wird, um ihre Position in Relation zu ihnen übergeordneten
2497 Objekten zu bestimmen.  Dieser Punkt innerhalb des Grobs wird dann
2498 auf einer horizontalen Position (@code{X-offset}) und einer
2499 vertikalen Position (@code{Y-offset}) ausgerichtet, immer bezüglich
2500 des übergeordneten Objektes.  Eine horizontale Strecke wird
2501 durch ein Zahlenpaar angegeben (@code{X-extent}), welche
2502 die linke und rechte Grenze relativ zum übergeordneten Objekt
2503 bezeichnen.  Die vertikale Strecke wir genauso durch ein
2504 Zahlenpaar (@code{Y-extent}) definiert.  Diese Eigenschaften
2505 gehören zu allen Grobs, die das
2506 @code{grob-interface} unterstützen.
2507
2508 @cindex @code{extra-spacing-width}
2509
2510 Standardmäßig haben Außersystemobjekte eine Länge von Null,
2511 so dass sie sich in horizontaler Richtung überlappen können.  Das
2512 geschieht, indem dem linken Rand Unendlich zugewiesen wird
2513 und dem rechten Rand minus Unendlich (der Code der
2514 @code{extra-spacing-width}-(zusätzliche Positionierungslänge)-Eigenschaft
2515 lautet: @code{'(+inf.0 . -inf.0)}).
2516 Damit sich diese Objekte also horizontal nicht überschneiden, muss
2517 der Wert von @code{extra-spacing-width} auf
2518 @code{'(0 . 0)} gesetzt werden, sodass die wirkliche Länge eines
2519 Objektes zur Geltung kommt.  Mit diesem Befehl wird das für
2520 Dynamik-Zeichen erledigt:
2521
2522 @example
2523 \override DynamicText.extra-spacing-width = #'(0 . 0)
2524 @end example
2525
2526 @noindent
2527 Schauen wir uns an, wie es mit dem vorigen Beispiel funktioniert:
2528
2529 @cindex DynamicText, Beispiel zur Veränderung
2530 @cindex extra-spacing-width-Eigenschaft, Beispiel
2531
2532 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2533 \dynamicUp
2534 \override DynamicText.extra-spacing-width = #'(0 . 0)
2535 a4\f b\mf c\mp b\p
2536 @end lilypond
2537
2538 @noindent
2539 Damit werden die Dynamik-Zeichen also wirklich nebeneinander
2540 gesetzt, aber es gibt noch zwei Probleme.  Die Zeichen sollten
2541 etwas weiter außeinander stehen und es wäre gut, wenn sie alle
2542 den gleichen Abstand zum System hätte.  Das erste Problem ist
2543 einfach behoben.  Anstatt der @code{extra-spacing-width}-Eigenschaft
2544 Null zuzuweisen, können wir auch einen etwas größeren Wert
2545 wählen.  Die Einheit wird gemessen in dem Abstand zwischen zwei
2546 Notenlinien, es scheint also gut, den rechten und linken
2547 Rand eine halbe Einheit zu vergrößern:
2548
2549 @cindex DynamicText, Beispiel zur Veränderung
2550 @cindex extra-spacing-width-Eigenschaft, Beispiel
2551
2552 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2553 \dynamicUp
2554 % Extend width by 1 staff space
2555 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2556 a4\f b\mf c\mp b\p
2557 @end lilypond
2558
2559 @noindent
2560 Das sieht schon besser aus, aber es wäre noch besser, wenn die
2561 Dynamik-Zeichen alle an einer Linie ausgerichtet wären, anstatt
2562 höher und tiefer zu sitzen.  Das kann mit der
2563 @code{staff-padding}-Eigenschaft erreicht werden,
2564 die wir uns im folgenden Abschnitt genauer anschauen werden.
2565
2566
2567
2568 @node Střety předmětů
2569 @section Střety předmětů
2570 @translationof Collisions of objects
2571
2572 @menu
2573 * Přesouvání předmětů::
2574 * Oprava překrývajících se not::
2575 * Příklady ze života::
2576 @end menu
2577
2578 @node Přesouvání předmětů
2579 @subsection Přesouvání předmětů
2580 @translationof Moving objects
2581
2582 @cindex Verschieben von überschneidenden Objekten
2583 @cindex Verschieben von Zusammenstößen
2584 @cindex Zusammenstöße vermeiden
2585 @cindex Objekte, verschieben von Zusammestößen
2586 @cindex Vermeiden von Zusammenstößen
2587
2588 Es wird vielleicht eine Überraschung sein, aber LilyPond ist nicht
2589 perfekt. Einige Notationselemente können sich überschneiden. Das
2590 ist nicht schön, aber zum Glück sehr selten.  Normalerweise müssen
2591 die Objekte zur Klarheit oder aus ästhetischen Gründen verschoben
2592 werden -- sie könnten besser aussehen, wenn sie etwas zusätzlichen
2593 Platz erhalten.
2594
2595 Es gibt im Grunde drei Herangehensweisen, überlappende Notation
2596 zu verbessern.  Man sollte sie in der folgenden Reihenfolge
2597 anwenden:
2598
2599 @enumerate
2600 @item
2601 Die @strong{Richtung} eines der überlappenden Objekte kann
2602 geändert werden, indem die vordefinierten Befehle für
2603 Innersystemobjekte verwendet werden, wie beschrieben in
2604 @ref{Předměty uvnitř notové osnovy,,předmětech uvnitř notové osnovy)}.  Hälse, Bögen, Balken, Dynamik-Zeichen
2605 und Triolen können auf diese Weise einfach umgeordnet
2606 werden.  Beschränkt ist diese Methode insofern, als es nur
2607 zwei Möglichkeiten zur Veränderung gibt: oben oder unten.
2608
2609 @item
2610 Die @strong{Objekteigenschaft}, die LilyPond benutzt um die
2611 Layout-Objekte zu platzieren, können mit dem
2612 @code{\override}-Befehl positioniert werden.  Die Vorteile
2613 von Änderungen dieser Art sind a) dass einige Objekte
2614 automatisch verschoben werden, wenn es nötig ist Platz zu
2615 schaffen und b) ein einziges @code{\override} sich auf
2616 alle Fälle eines Objekttyps bezieht.  Zu diesen Eigenschaften
2617 gehören:
2618
2619 @itemize
2620
2621 @item
2622 @code{direction} (Richtung)
2623
2624 Das wurde schon detailliert behandelt, siehe
2625 @ref{Předměty uvnitř notové osnovy,,předměty uvnitř notové osnovy}.
2626
2627 @item
2628 @code{padding}, @code{right-padding}, @code{staff-padding} (Verschiebung)
2629
2630 @cindex Padding-Eigenschaft
2631 @cindex right-padding-Eigenschaft
2632 @cindex staff-padding-Eigenschaft
2633 @cindex Verschieben (padding)
2634 @cindex Füllung (padding)
2635 @cindex padding (Füllung)
2636
2637 Wenn ein Objekt platziert wird, bestimmt der Wert seiner
2638 @code{padding}-(Füllungs)-Eigenschaft die Größe des
2639 Abstandes, der zwischen dem Objekt selber und dem
2640 Objekt, relativ zu welchem es positioniert wird, gelassen
2641 werden muss.  Dabei zählt der @code{padding}-Wert
2642 des Objektes, das platziert werden soll, der @code{padding}-Wert
2643 des Objektes, das schon gesetzt wurde, wird hingegen
2644 ignoriert.  Abstände mit @code{padding} können zu
2645 allen Objekten hinzugefügt werden, die das
2646 @code{side-position-interface} unterstützen.
2647
2648 Anstelle von @code{padding} wird die Position von
2649 Versetzungszeichengruppen durch die Eigenschaften
2650 @code{right-padding} bestimmt. Diese Eigenschaft wird im
2651 @code{AccidentalPlacement}-(Versetzungszeichen-Positionierungs)-Objekt
2652 gefunden, das sich innerhalb des @strong{Staff}-Kontexts
2653 befindet.  Während des Notensatzes werden die Notenköpfe
2654 zuerst gesetzt und dann die Versetzungszeichen, wenn denn
2655 welche gesetzt werden, durch die @code{right-padding}-Eigenschaft
2656 auf die linke Seite der Notenköpfe positioniert, um die Entfernung
2657 von den Notenköpfen und zwischen den einzelnen Versetzungszeichen zu
2658 bestimmen.  Also nur die @code{right-padding}-(Verschiebung nach rechts)-Eigenschaft
2659 des @code{AccidentalPlacement}-Objekts hat Einfluss auf die
2660 Positionierung der Versetzungszeichen.
2661
2662 Die @code{staff-padding}-(Verschiebung zum System)-Eigenschaft
2663 ist sehr ähnlich wie die @code{padding}-Eigenschaft:
2664 @code{padding} bestimmt den Minimalabstand zwischen
2665 einem Objekt, das das @code{side-position-interface}
2666 unterstützt, und dem nächsten anderen Objekt (normalerweise
2667 die Note oder Notenlinie); @code{staff-padding} dagegen
2668 wirkt nur auf Objekte die immer außerhalb des Notensystems
2669 sind -- damit wird der minimale Abstand bestimmt, der
2670 zwischen dem Objekt und dem Notensystem gelassen werden
2671 soll.  @code{staff-padding} hat also @strong{keinen Einfluss}
2672 auf Objekte, die relativ zu einer Note positioniert werden, sondern
2673 nur auf solche, die zum System relativ stehen. Wenn es mit einem
2674 anderen Objekt eingesetzt wird, erhält man keine Fehlermeldung, aber
2675 der Befehl hat auch keine Auswirkungen.
2676
2677 Um herauszufinden, welche @code{padding}-Eigenschaft für
2678 das bestimmte Objekt nötig, ist, das Sie verschieben wollen,
2679 müssen Sie in der IR nach den Objekt-Eigenschaften schauen.
2680 Dabei sollten Sie bedenken, dass sich die @code{padding}-Eigenschaften
2681 nicht unbedingt in dem Objekt selber befinden, schauen Sie
2682 also auch in Objekten nach, die offensichtlich Ähnlichkeiten
2683 haben.
2684
2685 Alle @code{padding}-Werte werden in Notenlinienabständen
2686 gemessen.  Für die meisten Objekte ist der Wert ungefähr auf
2687 1.0 oder weniger gesetzt (das variiert von Objekt zu Objekt).
2688 Der Wert kann geändert werden, wenn ein größerer (oder
2689 kleinerer) Abstand gewünscht wird.
2690
2691 @item
2692 @code{self-alignment-X} (Selbstpositionierung)
2693
2694 @cindex self-alignment-X-Eigenschaft
2695 @cindex Samoumístění předmětů
2696 @cindex Ausrichtung von Objekten
2697
2698 Diese Eigenschaft kann benutzt werden, um ein Objekt
2699 nach links, rechts oder zentriert an dem Referenzpunkt des Objekts
2700 auszurichten, an das es verknüpft ist.  Es kann bei allen
2701 Objekten benutzt werden, die das @code{self-alignment-interface}
2702 unterstützen.  Das sind üblicherweise Objekte, die Text
2703 enthalten.  Die möglichen Werte der Eigenschaft sind @code{LEFT},
2704 @code{RIGHT} oder @code{CENTER}.  Alternativ kann ein
2705 numerischer Wert zwischen @code{-1} und @code{+1}
2706 bestimmt werden: @code{-1} heißt linksbündig, @code{+1}
2707 rechtsbündig und Zahlen dazwischen bewegen den Text
2708 schrittweise von links nach rechts.  Zahlen größer als
2709 @code{1} können angegeben werden, um den Text
2710 noch weiter nach links zu bewegen, oder weniger als @code{-1},
2711 um ihn weiter nach rechts zu schieben.  Eine Änderung
2712 um @code{1} des Wertes entspricht einer Bewegung um
2713 die halbe Textbreite.
2714
2715 @item
2716 @code{extra-spacing-width} (zusätzliche Breite)
2717
2718 @cindex extra-spacing-width-Eigenschaft
2719
2720 Diese Eigenschaft steht für alle Objekte zur Verfügung, die
2721 das @code{item-interface} unterstützen.  Es braucht zwei
2722 Zahlen als Argument, die erste wird zur rechten Ausdehnung,
2723 die zweite zur linken Ausdehnung hinzugerechnet.  Negative
2724 Zahlen verschieben die Ausdehnung nach rechts, positive nach
2725 links, um also ein Objekt zu verbreitern, muss die erste
2726 Zahl negativ und die zweite positiv sein.  Allerdings beachten
2727 nicht alle Objekte beide Zahlen.  Das
2728 @code{accidental}-(Versetzungszeichen)-Objekt etwa beachtet
2729 nur erste Zahl für die linke Ausdehnung.
2730
2731 @item
2732 @code{staff-position} (Notensystempositionierung)
2733
2734 @cindex staff-position-Eigenschaft
2735
2736 @code{staff-position} ist eine Eigenschaft des
2737 @code{staff-symbol-referencer-interface}, die von Objekten unterstützt
2738 wird, die relativ zum Notensystem (engl. staff) positioniert werden.
2739 Hiermit wird die vertikale Position eines Objekts relativ zur
2740 Mittellinie des Systems in halben Notenlinienabständen angegeben.
2741 Das ist sehr nützlich, um Zusammenstöße zwischen Layout-Objekten
2742 wie Ganztaktpausen, Bögen und Noten in verschiedenen Stimmen
2743 zu lösen.
2744
2745 @item
2746 @code{force-hshift} (vertikale Verschiebung erzwingen)
2747
2748 @cindex force-hshift-Eigenschaft
2749
2750 Eng beieinander stehende Noten in einem Akkord oder Noten, die zum
2751 gleichen Zeitpunkt in unterschiedlichen Stimmen stehen, werden
2752 in zwei oder manchmal auch mehr Kolumnen gesetzt, um Kollisionen
2753 zu umgehen.  Diese Kolumnen werden Notenkolumnen genannt;
2754 ein @code{NoteColumn}-Objekt wird erstellt um die Noten in den
2755 Kolumnen zu setzen.
2756
2757 Die @code{force-hshift}-(erzwinge horizontale Verschiebung)-Eigenschaft
2758 ist eine Eigenschaft von @code{NoteColumn} (bzw. vom
2759 @code{note-column-interface}).  Eine Veränderung dieser Eigenschaft
2760 macht es möglich, eine Notenkolumne zu verschieben, dabei gilt als
2761 Einheit die Breite einer Kolumne, also die Breite des Notenkopfes der
2762 ersten Stimme.  Diese Eigenschaft kann in Situationen benutzt werden,
2763 in denen die normalen @code{\shiftOn}-Befehle (siehe auch
2764 @ref{Přesně vyjádřené začátky hlasů}) das Problem nicht beseitigen.
2765 Diese Eigenschaft ist besser in solchen Fällen zu verwenden als die
2766 @code{extra-offset}-Eigenschaft, weil man die richtige Entfernung nicht
2767 in Notenlinienabständen ausrechnen muss.  Wenn eine Note in eine
2768 Notenkolumne oder aus ihr heraus geschoben wird, werden auch andere
2769 Funktionen beeinflusst, wie etwa die Verschmelzung von Notenköpfen.
2770
2771 @end itemize
2772
2773 @item
2774 Zu guter Letzt, wenn alles andere nicht funktioniert, können Objekte auch
2775 manuell positioniert werden, entweder vertikal in Bezug auf die
2776 Mittellinie des Systems, oder indem sie einen beliebigen Abstand weit
2777 auf eine neue Position verschoben werden.  Der Nachteil ist, dass die
2778 richtigen Werte für eine gute Position manuell ausprobiert werden müssen,
2779 meistens durch Herantasten an den richtigen Wert, und das für jedes
2780 einzelne Objekt extra.  Und weil diese Verschiebungen erst vorgenommen
2781 werden, wenn LilyPond alle anderen Objekte gesetzt hat, ist man als
2782 Notensetzer selber dafür verantwortlich, ob es Zusammenstöße gibt.
2783 Am schwerwiegendsten ist aber die Tatsache, dass die
2784 Verschiebungskoordinaten wahrscheinlich neu errechnet oder
2785 ausprobiert werden müssen, wenn sich an den Noten und deren
2786 Layout später irgend etwas ändert.  Die Eigenschaften, die für diese
2787 Arte der manuellen Verschiebung verwendet werden können, sind:
2788
2789 @table @code
2790 @item extra-offset (zusätzlicher Abstand)
2791
2792 @cindex extra-offset-Eigenschaft
2793
2794 Diese Eigenschaft gehört zu jedem Layout-Objekt, das das
2795 @code{grob-interface} unterstützt.  Sie braucht ein Zahlenpaar,
2796 das die exakte Verschiebung in horizontaler und vertikaler Richtung
2797 bezeichnet.  Negative Zahlen verschieben das Objekt nach links oder
2798 unten.  Die Einheit sind Notenlinienabstände.  Die zusätzliche
2799 Positionierung wird vorgenommen, nachdem alle anderen Objekte
2800 platziert sind, weshalb ein Objekt irgendwohin verschoben werden
2801 kann, ohne den restlichen Satz zu beeinflussen.
2802
2803 @item positions (Position)
2804
2805 @cindex positions-Eigenschaft
2806
2807 Diese Eigenschaft ist am sinnvollsten, um die Steigung und die
2808 Höhe von Balken, Bögen und Triolenklammern anzupassen.
2809 Sie braucht ein Zahlenpaar, das die Position des rechten und linken
2810 Endes relativ zur Mittellinie des Notensystems bestimmt.  Die
2811 Einheit sind Notenlinienabstände.  Bögen allerdings können nicht
2812 beliebig weit weg positioniert werden.  LilyPond erstellt zunächst eine
2813 Liste an möglichen Positionen für den Bogen und findet normalerweise
2814 die Version, die @qq{am besten aussieht}.  Wenn die
2815 @code{positions}-Eigenschaft verändert worden ist, wird der
2816 Bogen aus der Liste gewählt, der der gewünschten Position am
2817 nächsten kommt.
2818 @end table
2819
2820 @end enumerate
2821
2822 Ein bestimmtes Objekt hat vielleicht nicht alle dieser Eigenschaften.
2823 Darum ist es nötig, in der IR nachzuschlagen, welche Eigenschaften
2824 ein bestimmtes Objekt unterstützt.
2825
2826 Hier ist eine Liste an Objekten, die am wahrscheinlichsten an einer
2827 Kollision beteiligt sind, daneben findet sich die Bezeichnung des
2828 Objektes, mit der Sie es in der IR finden, um zu bestimmen,
2829 welche Eigenschaften benutzt werden können, um es zu verschieben.
2830
2831 @multitable @columnfractions .5 .5
2832 @headitem Objekttyp           @tab Objektbezeichnung
2833 @item Articulationszeichen             @tab @code{Script}
2834 @item Balken                     @tab @code{Beam}
2835 @item Dynamikzeichen (vertikal)     @tab @code{DynamicLineSpanner}
2836 @item Dynamikzeichen (horizontal)   @tab @code{DynamicText}
2837 @item Fingersatz                @tab @code{Fingering}
2838 @item Übungs-/Textmarken    @tab @code{RehearsalMark}
2839 @item Legatobögen                     @tab @code{Slur}
2840 @item Text z. B. @code{^"text"}  @tab @code{TextScript}
2841 @item Bindebögen                      @tab @code{Tie}
2842 @item N-tolen                   @tab @code{TupletBracket}
2843 @end multitable
2844
2845
2846 @node Oprava překrývajících se not
2847 @subsection Oprava překrývajících se not
2848 @translationof Fixing overlapping notation
2849
2850 Hier soll nun gezeigt werden, wie die Eigenschaften, die im
2851 vorigen Abschnitt vorgestellt wurden, bei der Problemlösung
2852 mit sich überschneidenden Notationselementen eingesetzt
2853 werden können.
2854
2855 @subheading padding (Fülleigenschafte)
2856
2857 @cindex padding (Verschiebungs-Eigenschaft)
2858 @cindex Überschneidende Notation korrigieren
2859 @cindex Korrigieren von überschneidender Notation
2860
2861 Die @code{padding}-(Verschiebungs-)Eigenschaft kann benutzt
2862 werden, um den Abstand zwischen Symbolen zu vergößern (oder
2863 zu verkleinern), die über oder unter den Noten gesetzt werden.
2864
2865 @cindex Script, Beispiel zur Veränderung
2866 @cindex Verschiebungs-Eigenschaft, Beispiel
2867 @cindex padding (Verschiebuns-Eigenschaft), Beispiel
2868
2869 @lilypond[quote,fragment,verbatim]
2870 c'2\fermata
2871 \override Script.padding = #3
2872 b2\fermata
2873 @end lilypond
2874
2875 @cindex MetronomMark, Beispiel zur Veränderung
2876 @cindex Verschiebungs-Eigenschaft, Beispiel
2877 @cindex padding (Verschiebuns-Eigenschaft), Beispiel
2878
2879 @lilypond[quote,fragment,verbatim]
2880 % This will not work, see below
2881 \override MetronomeMark.padding = #3
2882 \tempo 4 = 120
2883 c'1 |
2884 % This works
2885 \override Score.MetronomeMark.padding = #3
2886 \tempo 4 = 80
2887 d'1 |
2888 @end lilypond
2889
2890 Im zweiten Beispiel können Sie sehen, wie wichtig es ist den richtigen
2891 Kontext anzugeben.  Weil das @code{MetronomeMark}-Objekt
2892 sich im @code{Score}-Kontext befindet, werden Eigenschaftsänderungen
2893 im @code{Voice}-Kontext einfach ignoriert.  Für mehr Einzelheiten siehe
2894 @ruser{Eigenschaften verändern}.
2895
2896 Wenn die @code{padding}-Eigenschaft eines Objektes erhöht wird, das
2897 sich in einem Stapel von Objekten befindet, die nach ihrer
2898 Außersystempriorität (@code{outside-staff-priority}) positioniert werden,
2899 werden das Objekt und alle,  die sich außerhalb davon befinden,
2900 entsprechend verschoben.
2901
2902 @subheading right-padding (Verschieben nach links)
2903
2904 @cindex Verschiebung nach rechts
2905 @cindex right-padding-Eigenschaft (Verschiebung nach rechts)
2906
2907 Die @code{right-padding}-Eigenschaft wirkt sich auf den Abstand
2908 zwischen einem Versetzungszeichen und der Note, auf das sie sich
2909 bezieht, aus.  Sie wird nicht sehr oft benötigt, aber die
2910 Standardanordnung kann für einige spezielle Versetzungszeichen-Glyphen
2911 oder Kombinationsglyphen,
2912 wie sie für Mikrotonale Musik benutzt werden, falsch sein.  Derartige
2913 Glyphen müssen notiert werden, indem man den Stencil des
2914 Versetzungszeichens mit einer Textbeschriftung (Markup) ersetzt,
2915 wie im folgenden Beispiel:
2916
2917 @cindex Versetzungszeichen, Beispiel zur Veränderung
2918 @cindex Accidental, Beispiel zur Veränderung
2919 @cindex Text-Eigenschaft, Beispiel
2920 @cindex stencil-Eigenschaft, Beispiel
2921 @cindex AccidentalPlacement, Beispiel zur Veränderung
2922 @cindex right-padding-Eigenschaft, Beispiel
2923 @cindex Verschiebung nach rechts (rigth-padding), Beispiel
2924
2925 @lilypond[quote,ragged-right,verbatim]
2926 sesquisharp = \markup { \sesquisharp }
2927  \relative {
2928   c''4
2929   % This prints a sesquisharp but the spacing is too small
2930   \once \override Accidental.stencil = #ly:text-interface::print
2931   \once \override Accidental.text = #sesquisharp
2932   cis4 c
2933   % This improves the spacing
2934   \once \override Score.AccidentalPlacement.right-padding = #0.6
2935   \once \override Accidental.stencil = #ly:text-interface::print
2936   \once \override Accidental.text = #sesquisharp
2937   cis4
2938 }
2939 @end lilypond
2940
2941 @noindent
2942 Dazu ist aber ein @code{\override}-Befehl für den Stencil des
2943 Versetzungszeichens nötig, der bisher nicht behandelt wurde.
2944 Der Typ des Stencils muss eine Prozedur sein, die hier geändert
2945 wurde, um den Inhalt der @code{text}-Eigenschaft des
2946 @code{Accidental} (Versetzungszeichen)-Objekts zu setzen.  Die
2947 @code{text}-Eigenschaft wiederum wird als @code{sesquisharp}-Glyph
2948 definiert.  Dieser Glyph wird dann weiter vom Notenkopf entfernt
2949 durch die Veränderung von @code{right-padding} mit einem
2950 @code{\override}-Befehl.
2951
2952 @subheading staff-padding (Systemfüllungseigenschaft)
2953
2954 @cindex staff-padding-Eigenschaft
2955 @cindex Objekte an der Grundlinie ausrichten
2956 @cindex Ausrichten von Objekten an der Grundlinie
2957
2958 @code{staff-padding} (Verschiebung zum Notensystem) kann
2959 verwendet werden um Objekte wie Dynamikzeichen an einer
2960 Grundlinie auf einer bestimmten Höhe über dem System
2961 auszurichten, sodass sie nicht von der Position der Note abhängen,
2962 an die sie angehängt sind.  Diese Verschiebung ist keine Eigenschaft
2963 von @code{DynamicText}, sondern von @code{DynamicLineSpanner}.
2964 Das liegt daran, dass die Grundlinie sich gleicherweise auf
2965 @strong{alle} Dynamikzeichen beziehen soll, also auch auf die,
2966 die als Strecker erstellt wurden.  Hier also die Lösung, die Dynamikzeichen
2967 aus dem Beispiel des vorigen Abschnitts auszurichten:
2968
2969 @cindex DynamikText, Beispiel zur Veränderung
2970 @cindex extra-spacing-width-Eigenschaft, Beispiel
2971 @cindex DynamicLineSpanner, Beispiel zur Veränderung
2972 @cindex staff-padding-Eigenschaft, Beispiel
2973
2974 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2975 \dynamicUp
2976 % Extend width by 1 unit
2977 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2978 % Align dynamics to a base line 2 units above staff
2979 \override DynamicLineSpanner.staff-padding = #2
2980 a4\f b\mf c\mp b\p
2981 @end lilypond
2982
2983
2984 @subheading self-alignment-X (Selbstausrichtung-X-Eigenschaft)
2985
2986 @cindex self-alignment-X-Eigenschaft
2987
2988 Das nächste Beispiel zeigt, wie man den Zusammenstoß
2989 einer Fingersatzbezeichnung mit einem Notenhals
2990 verhindern kann, indem die rechte Ecke an dem
2991 Referenzpunkt der abhängigen Note angeordnet wird:
2992
2993 @cindex StringNumber, Beispiel zur Veränderung
2994
2995 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
2996 \voiceOne
2997 < a\2 >
2998 \once \override StringNumber.self-alignment-X = #RIGHT
2999 < a\2 >
3000 @end lilypond
3001
3002
3003 @subheading staff-position (Position innerhalb des Systems)
3004
3005 @cindex staff-position-Eigenschaft
3006 @cindex Notensystem-Position-Eigenschaft
3007 @cindex Střety předmětů v osnově
3008 @cindex Zusammenstöße von Objekten im System
3009
3010 Vieltaktpausen in einer Stimmen können mit Noten in anderen
3011 Stimmen kollidieren.  Da diese Pausen zentriert zwischen den
3012 Taktlinien gesetzt werden, würde es für LilyPond eine recht große
3013 Anstrengung bedeuten herauszufinden, welche Noten mit ihnen
3014 zusammenstoßen könnten, denn alle Kollisionsvermeidung
3015 für Noten und Pausen funktioniert nur für Noten bzw. Pausen, die
3016 zur selben Zeit auftreten.  Hier ein typisches Beispiel für eine
3017 Kollision dieser Art:
3018
3019 @lilypond[quote,verbatim,ragged-right]
3020 << \relative { c'4 c c c } \\ { R1 } >>
3021 @end lilypond
3022
3023 Die beste Lösung ist es, die Ganztaktpause nach unten zu
3024 schieben, denn die Pause ist in der zweiten Stimme.  Per
3025 Standardeinstellung für die zweite Stimme (@code{\voiceTwo},
3026 also die zweite Stimme in der
3027 @code{<<@{...@} \\ @{...@}>>}-Konstruktion) wird die
3028 Position auf dem System (@code{staff-position}) auf -4
3029 für @code{MultiMeasureRest}, in unserem Beispiel muss
3030 es also bspw. auf die Position @code{-8} gesetzt werden,
3031 d.h. vier halbe Notenlinienabstände weiter nach unten:
3032
3033 @cindex MultiMeasureRest, Beispiel zur Veränderung
3034 @cindex Ganztaktpausen, Beispiel zur Veränderung
3035 @cindex staff-position-Eigenschaft, Beispiel
3036
3037 @lilypond[quote,verbatim,ragged-right]
3038 <<
3039   \relative { c'4 c c c }
3040   \\
3041   \override MultiMeasureRest.staff-position = #-8
3042   { R1 }
3043 >>
3044 @end lilypond
3045
3046 Das ist besser, als etwa @code{extra-offset} zu benutzen, denn
3047 in unserem Fall wird die Hilfslinie der Pause automatisch gesetzt.
3048
3049
3050 @subheading extra-offset (Genaues Positionieren)
3051
3052 @cindex extra-offset-Eigenschaft
3053 @cindex Zusätzlicher Abstand, Positionierung
3054 @cindex Umístění předmětů
3055 @cindex Objekte, Positionierung
3056
3057 Die @code{extra-offset}-Eigenschaft bietet vollständige Kontrolle
3058 über die umístění předmětů in horizontaler und vertikaler
3059 Richtung.
3060
3061 Im Beispiel unten ist das zweite Fingersatzzeichen (@code{Fingering}) etwas nach
3062 links und 1,8 Notenlinienabstände nach unten verschoben:
3063
3064 @cindex Fingersatz, Beispiel zur Veränderung
3065 @cindex extra-offset-Eigenschaft, Beispiel
3066
3067 @lilypond[quote,fragment,relative=1,verbatim]
3068 \stemUp
3069 f4-5
3070 \once \override Fingering.extra-offset = #'(-0.3 . -1.8)
3071 f4-5
3072 @end lilypond
3073
3074
3075 @subheading Ausrichtungseigenschaft
3076
3077 @cindex positions-Eigenschaft
3078 @cindex Kontrolle über Triolen, Bögen und Balken manuell
3079 @cindex manuelle Kontrolle über Triolen, Bögen, Balken
3080 @cindex Balken, manuelle Kontrolle
3081 @cindex Bögen, manuelle Kontrolle
3082 @cindex Legatobögen, manuelle Kontrolle
3083 @cindex Phrasierungsbögen, manuelle Kontrolle
3084 @cindex Triollen-Klammer, manuelle Kontrolle
3085
3086 Die @code{positions}-Eigenschaft erlaubt die Kontrolle von Position und
3087 Steigung von Balken, Legato- und Phrasierungsbögen sowie Triolenklammern.
3088 Hier ein Beispiel, in der ein unschöner Phrasierungsbogen auftritt, weil
3089 er den Bogen des Vorschlags vermeidet:
3090
3091 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
3092 r4  \acciaccatura e8\( d8 c~ c d c d\)
3093 @end lilypond
3094
3095 @noindent
3096 Man könnte einfach den Phrasierungsbogen oberhalb der Noten setzen, und
3097 das wäre auch die beste Lösung:
3098
3099 @cindex Phrasierungsbogen, Beispiel zur Veränderung
3100 @cindex positions-Eigenschaft, Beispiel
3101 @cindex Positionierung, Beispiel
3102
3103 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
3104 r4
3105 \phrasingSlurUp
3106 \acciaccatura e8\( d8 c~ c d c d\)
3107 @end lilypond
3108
3109 @noindent
3110 aber wenn es einen Grund geben sollte, warum das nicht geht, könnte
3111 man das linke Ende des Phrasierungsbogens etwas nach unten verschieben,
3112 indem man die @code{positions}-Eigenschaft einsetzt.  Damit
3113 verschwindet auch die etwas unschöne Form:
3114
3115 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
3116 r4
3117 \once \override PhrasingSlur.positions = #'(-4 . -3)
3118 \acciaccatura e8\( d8 c~ c d c d\)
3119 @end lilypond
3120
3121 Hier noch ein weiteres Beispiel aus der Einleitung von Chopins
3122 Prelude Op. 28 Nr. 2, das untere System.  Wie zu sehen ist,
3123 stößt der Balken mit den oberen Noten zusammen:
3124
3125 @lilypond[quote,verbatim,fragment,ragged-right]
3126 {
3127   \clef "bass"
3128   << { b,8 ais, b, g, } \\ { e, g e, g } >>
3129   << { b,8 ais, b, g, } \\ { e, g e, g } >>
3130 }
3131 @end lilypond
3132
3133 @noindent
3134 Das kann manuell gelöst werden, indem beide Enden des Balkens
3135 von ihrer Position 2 Notenlinienabstände über der Mittellinie
3136 hochgeschoben werden, etwa auf 3:
3137
3138 @cindex Balken, Beispiel zur Veränderung
3139 @cindex positions-Eigenschaft, Beispiel
3140 @cindex Positionierung, Beispiel
3141
3142 @lilypond[quote,verbatim,fragment,ragged-right]
3143 {
3144   \clef "bass"
3145   <<
3146     \override Beam.positions = #'(3 . 3)
3147     { b,8 ais, b, g, }
3148   \\
3149     { e, g e, g }
3150   >>
3151   << { b,8 ais, b, g, } \\ { e, g e, g } >>
3152 }
3153 @end lilypond
3154
3155 @noindent
3156 Hier ist zu beobachten, dass die Veränderung sich auch auf die
3157 weiteren Achtelbalken der ersten Stimme auswirkt, während sie keine
3158 Auswirkung auf die Balken der zweiten Stimme hat.
3159
3160 @subheading force-hshift (vertikale Verschiebunseigenschaft)
3161
3162 @cindex force-hshift-Eigenschaft
3163 @cindex Vertikale Verschiebung erzwingen
3164
3165 An diesem Punkt können wir den letzten Feinschliff an unserem
3166 Chopin-Beispiel vornehmen, das wir behandelt haben in
3167 @ref{Slyším hlasy}.  Wir hatten es in folgende Form
3168 gebracht:
3169
3170 @lilypond[quote,verbatim,fragment,ragged-right]
3171 \new Staff \relative {
3172   \key aes \major
3173   <<
3174     { c''2 aes4. bes8 }
3175     \\
3176     { aes2 f4 fes }
3177     \\
3178     {
3179       \voiceFour
3180       <ees c>2 des
3181     }
3182   >> |
3183   <c ees aes c>1 |
3184 }
3185 @end lilypond
3186
3187 @noindent
3188 Die unteren zwei Noten des ersten Akkords (also die in der
3189 dritten Stimme) sollten nicht aus der Notenkolumne der
3190 oberen zwei Noten weggeschoben werden.  Um das zu
3191 korrigieren, setzen wir @code{force-hshift}, das eine
3192 Eigenschaft von
3193 @code{NoteColumn} ist, für diese Noten auf Null.
3194 Die untere Note des zweiten Akkordes wird am besten
3195 direkt rechts von den oberen Noten gesetzt.  Das erreichen
3196 wir, indem wir @code{force-hshift} für diese Note auf
3197 0.5 setzen, also eine halbe Notenkopfbreite nach rechts von
3198 der Kolumne der oberen Noten aus.
3199
3200 Hier das Endergebnis:
3201
3202 @cindex Notenkolumne, Beispiel zur Veränderung
3203 @cindex force-hshift-Eigenschaft, Beispiel
3204 @cindex vertikale Verschiebung, Beispiel
3205
3206 @lilypond[quote,verbatim,fragment,ragged-right]
3207 \new Staff \relative {
3208   \key aes \major
3209   <<
3210     { c''2 aes4. bes8 }
3211     \\
3212     { aes2 f4 fes }
3213     \\
3214     {
3215       \voiceFour
3216       \once \override NoteColumn.force-hshift = #0
3217       <ees c>2
3218       \once \override NoteColumn.force-hshift = #0.5
3219       des2
3220     }
3221   >> |
3222   <c ees aes c>1 |
3223 }
3224 @end lilypond
3225
3226
3227 @node Příklady ze života
3228 @subsection Příklady ze života
3229 @translationof Real music example
3230
3231 Das Kapitel zu Optimierungen soll mit einem komplizierten Beispiel
3232 beendet werden, in dem verschiedene Optimierungen vorgenommen
3233 werden müssen, bis das Ergebnis gut aussieht.  Das Beispiel wurde
3234 ganz bewusst gewählt um die Benutzung der Notationsreferenz
3235 zu zeigen, wenn ungewöhnliche Notationsprobleme gelöst werden
3236 müssen.  Es ist nicht repräsentativ für normale Notationsprojekte,
3237 lassen Sie sich also nicht durch dieses Beispiel entmutigen!  Zum
3238 Glück sind Probleme wie die hier gezeigten nicht sehr häufig.
3239
3240 Das Beispiel stammt aus Chopins Premiére Ballade, Op. 23, Takte
3241 6--9, der Übergang vom Lento der Einleitung zum Moderato.
3242 Hier zunächst der Satz, wie er aussehen soll, allerdings ohne
3243 Dynamik, Fingersatz und Pedalbezeichnung, um das Beispiel nicht
3244 zu kompliziert zu machen.
3245
3246 @c This example should not be indexed
3247 @lilypond[quote,ragged-right,line-width=6\in]
3248 rhMusic = \relative {
3249   \new Voice {
3250     r2 c''4.\( g8 |
3251     \once \override Tie.staff-position = #3.5
3252     bes1~ |
3253     \bar "||"
3254     \time 6/4
3255     \mergeDifferentlyHeadedOn
3256     \mergeDifferentlyDottedOn
3257     bes2.^\markup { \bold "Moderato" } r8
3258     <<
3259       { c,8 d fis bes a }
3260       \new Voice {
3261         \voiceTwo
3262         c,8~
3263         % Reposition the c2 to the right of the merged note
3264         \once \override NoteColumn.force-hshift = #1.0
3265         % Move the c2 out of the main note column so the merge will work
3266         \shiftOnn
3267         c2
3268       }
3269       \new Voice {
3270         \voiceThree
3271         s8
3272         % Stem on the d2 must be down to permit merging
3273         \stemDown
3274         % Stem on the d2 should be invisible
3275         \once \override Stem.transparent = ##t
3276         d2
3277       }
3278       \new Voice {
3279         \voiceFour
3280         s4 fis4.
3281       }
3282     >> |
3283     \mergeDifferentlyHeadedOff
3284     \mergeDifferentlyDottedOff
3285     g2.\)
3286   }
3287 }
3288
3289 lhMusic = \relative {
3290   r2 <c' g ees>2( |
3291   <d g, d>1)\arpeggio |
3292   r2. d,,4 r4 r |
3293   r4
3294 }
3295
3296 \score {
3297   \new PianoStaff <<
3298     \new Staff = "RH"  <<
3299       \key g \minor
3300       \rhMusic
3301     >>
3302     \new Staff = "LH" <<
3303       \key g \minor
3304       \clef "bass"
3305       \lhMusic
3306     >>
3307   >>
3308 }
3309 @end lilypond
3310
3311 Die erste Überlegung ist, dass das System für die rechte Hand
3312 im dritten Takt vier Stimmen braucht.  Das sind die fünf
3313 Achtelnoten mit Balken, das übergebundene C, die Halbe D, die
3314 mit der Achtel D verschmolzen ist, und die punktierte Viertel
3315 Fis, die auch mit einer Achtelnote verschmolzen ist.  Alles
3316 andere ist eine einzige Stimme, es ist also am einfachsten, die
3317 zusätzlichen drei Stimmen nur zeitweise zu erstellen, wenn sie
3318 auftreten.  Wenn Sie vergessen haben, wie man das anstellt,
3319 schauen Sie sich nochmal den Abschnitt @ref{Slyším hlasy}
3320 und @ref{Přesně vyjádřené začátky hlasů} an.  Hier wollen wir explizit
3321 begonnene Stimmen für die polyphone Stelle benutzen, weil LilyPond
3322 Kollisionen besser vermeidet, wenn alle Stimmen auf diese Weise
3323 explizit begonnen werden.
3324
3325
3326 Wir wollen anfange, indem wir die Noten in zwei Variablen
3327 notieren und dann die Systemstruktur in einer
3328 @code{\score}-Umgebung erstellen.  Das ist, was LilyPond
3329 erstellt:
3330
3331 @c line-width ensures no break
3332 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3333 rhMusic = \relative {
3334   \new Voice {    r2 c''4. g8 |
3335     bes1~ |
3336     \time 6/4
3337     bes2. r8
3338     % Start polyphonic section of four voices
3339     <<
3340       { c,8 d fis bes a }  % continuation of main voice
3341       \new Voice {
3342         \voiceTwo
3343         c,8~ 2
3344       }
3345       \new Voice {
3346         \voiceThree
3347         s8 d2
3348       }
3349       \new Voice {
3350         \voiceFour
3351         s4 fis4.
3352       }
3353     >> |
3354     g2.  % continuation of main voice
3355   }
3356 }
3357
3358 lhMusic = \relative {
3359   r2 <c' g ees>2 |
3360   <d g, d>1 |
3361   r2. d,,4 r4 r |
3362   r4
3363 }
3364
3365 \score {
3366   \new PianoStaff <<
3367     \new Staff = "RH"  <<
3368       \key g \minor
3369       \rhMusic
3370     >>
3371     \new Staff = "LH" <<
3372       \key g \minor
3373       \clef "bass"
3374       \lhMusic
3375     >>
3376   >>
3377 }
3378 @end lilypond
3379
3380 Alle Noten sind richtig, aber die Positionierung sehr
3381 verbesserungsbedürftig.  Der Bindebogen kollidiert mit
3382 der veränderten Taktart zusammen, einige Noten werden nicht
3383 verschmolzen und einige Notationselemente fehlen ganz.
3384 Behandeln wir zunächst die einfacheren Dinge.  Der
3385 Balken kann durch eine manuelle Begrenzung einfach
3386 korrigiert werden, und auch der Legatobogen der linken
3387 Hand und der Phrasierungsbogen der rechten Hand
3388 sind schnell gesetzt, denn sie wurden schon in der
3389 Übung erklärt.  Damit haben wir folgendes Notenbild:
3390
3391 @c line-width ensures no break
3392 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3393 rhMusic = \relative {
3394   \new Voice {
3395     r2 c''4.\( g8 |
3396     bes1~ |
3397     \time 6/4
3398     bes2. r8
3399     % Start polyphonic section of four voices
3400     <<
3401       { c,8 d fis bes a }  % continuation of main voice
3402       \new Voice {
3403         \voiceTwo
3404         c,8~ 2
3405       }
3406       \new Voice {
3407         \voiceThree
3408         s8 d2
3409       }
3410       \new Voice {
3411         \voiceFour
3412         s4 fis4.
3413       }
3414     >> |
3415     g2.\)  % continuation of main voice
3416   }
3417 }
3418
3419 lhMusic = \relative {
3420   r2 <c' g ees>2( |
3421   <d g, d>1) |
3422   r2. d,,4 r4 r |
3423   r4
3424 }
3425
3426 \score {
3427   \new PianoStaff <<
3428     \new Staff = "RH"  <<
3429       \key g \minor
3430       \rhMusic
3431     >>
3432     \new Staff = "LH" <<
3433       \key g \minor
3434       \clef "bass"
3435       \lhMusic
3436     >>
3437   >>
3438 }
3439 @end lilypond
3440
3441 Der erste Takt stimmt jetzt schon.  Der zweite Takt enthält ein
3442 Arpeggio und wird mit einer doppelten Taktlinie beschlossen.
3443 Wie können wir diese notieren, denn sie sind im Handbuch zum
3444 Lernen nicht vorgekommen?  Hier brauchen wir jetzt die
3445 Notationsreferenz.  Ein Blick in den Index zeigt uns die
3446 Einträge für @qq{Arpeggio} und @qq{Taktlinien}: ein
3447 Arpeggio also erstellt man mit dem Befehl @code{\arpeggio}
3448 hinter einem Akkord und eine doppelte Taktlinie wird mit dem
3449 Befehl @code{\bar "||"} erstellt.  Das ist einfach.  Als nächstes
3450 muss der Zusammenstoß des Bindebogens mit der Taktartbezeichnung
3451 gelöst werden.  Das geht am besten, indem wir den Bogen nach
3452 oben verschieben.  Wie man Objekte verschiebt wurde schon
3453 behandelt in @ref{Přesouvání předmětů,,přesouvání předmětů}, wo stand, dass Objekte
3454 die relativ zum System positioniert werden, vertikal verschoben werden
3455 können, indem ihre @code{staff-position}-Eigenschaft
3456 geändert wird, die in halben Notenlinienabständen relativ
3457 zur Mittellinie angegeben wird.  Dieser @code{\override}-Befehl
3458 also, direkt vor die erste übergebundene Note gestellt, verschiebt
3459 den Bindebogen (@code{tie}) 3,5 halbe Notenlinienabstände
3460 über die Mittellinie:
3461
3462 @code{\once \override Tie.staff-position = #3.5}
3463
3464 Damit ist auch der zweite Takt vollständig:
3465
3466 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3467 rhMusic = \relative {
3468   \new Voice {
3469     r2 c''4.\( g8 |
3470     \once \override Tie.staff-position = #3.5
3471     bes1~ |
3472     \bar "||"
3473     \time 6/4
3474     bes2. r8
3475     % Start polyphonic section of four voices
3476     <<
3477       { c,8 d fis bes a }  % continuation of main voice
3478       \new Voice {
3479         \voiceTwo
3480         c,8~ 2
3481       }
3482       \new Voice {
3483         \voiceThree
3484         s8 d2
3485       }
3486       \new Voice {
3487         \voiceFour
3488         s4 fis4.
3489       }
3490     >> |
3491     g2.\)  % continuation of main voice
3492   }
3493 }
3494
3495 lhMusic = \relative {
3496   r2 <c' g ees>2( |
3497   <d g, d>1)\arpeggio |
3498   r2. d,,4 r4 r |
3499   r4
3500 }
3501
3502 \score {
3503   \new PianoStaff <<
3504     \new Staff = "RH"  <<
3505       \key g \minor
3506       \rhMusic
3507     >>
3508     \new Staff = "LH" <<
3509       \key g \minor
3510       \clef "bass"
3511       \lhMusic
3512     >>
3513   >>
3514 }
3515 @end lilypond
3516
3517 In Takt drei beginnt der Moderato-Abschnitt.  In der
3518 Übung wurde behandelt, wie man fetten Text mit dem
3519 @code{\markup}-Befehl eingibt, es ist also einfach, das
3520 @qq{Moderato} in fetter Schrift hinzuzufügen.  Wie aber werden Noten
3521 verschmolzen?  Hier nehmen wir wieder die Notationsreferenz
3522 zu Hilfe.  Die Suche nach @qq{Verschmelzen} (engl. merge)
3523 im Index führt uns zu den Befehlen, um Noten mit
3524 unterschiedlichen Köpfen und unterschiedlichen Punkten
3525 zu verschmelzen, in @ruser{Auflösung von Zusammenstößen}.  In unserem
3526 Beispiel müssen sowohl unterschiedliche Köpfe also auch
3527 unterschiedliche Punktierung verschmolzen werden, wir
3528 brauchen also die Befehle
3529
3530 @example
3531 \mergeDifferentlyHeadedOn
3532 \mergeDifferentlyDottedOn
3533 @end example
3534
3535 @noindent
3536 aus der Notationsreferenz, die wir an den Beginn unseres
3537 Abschnittes stellen und
3538
3539 @example
3540 \mergeDifferentlyHeadedOff
3541 \mergeDifferentlyDottedOff
3542 @end example
3543
3544 @noindent
3545 um das Verhalten wieder auszuschalten. Das sieht so aus:
3546
3547 @cindex Bindebogen, Beispiel zur Veränderung
3548 @cindex staff-position-Eigenschaft, Beispiel
3549
3550 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3551 rhMusic = \relative {
3552   \new Voice {
3553     r2 c''4.\( g8 |
3554     \once \override Tie.staff-position = #3.5
3555     bes1~ |
3556     \bar "||"
3557     \time 6/4
3558     bes2.^\markup { \bold "Moderato" } r8
3559     \mergeDifferentlyHeadedOn
3560     \mergeDifferentlyDottedOn
3561     % Start polyphonic section of four voices
3562     <<
3563       { c,8 d fis bes a }  % continuation of main voice
3564       \new Voice {
3565         \voiceTwo
3566         c,8~ 2
3567       }
3568       \new Voice {
3569         \voiceThree
3570         s8 d2
3571       }
3572       \new Voice {
3573         \voiceFour
3574         s4 fis4.
3575       }
3576     >> |
3577     \mergeDifferentlyHeadedOff
3578     \mergeDifferentlyDottedOff
3579     g2.\)  % continuation of main voice
3580   }
3581 }
3582
3583 lhMusic = \relative {
3584   r2 <c' g ees>2( |
3585   <d g, d>1)\arpeggio |
3586   r2. d,,4 r4 r |
3587   r4
3588 }
3589
3590 \score {
3591   \new PianoStaff <<
3592     \new Staff = "RH"  <<
3593       \key g \minor
3594       \rhMusic
3595     >>
3596     \new Staff = "LH" <<
3597       \key g \minor
3598       \clef "bass"
3599       \lhMusic
3600     >>
3601   >>
3602 }
3603 @end lilypond
3604
3605 Mit diesen Veränderungen wurden die beiden Fis-Noten
3606 verschmolzen, aber nicht die zwei Ds.  Warum nicht?  Die
3607 Antwort befindet sich im gleicher Abschnitt der Notationsreferenz:
3608 Noten, die verschmolzen werden, müssen Hälse in entgegengesetzte
3609 Richtungen aufweisen und zwei Noten können nicht verschmolzen
3610 werden, wenn eine dritte Noten in der gleichen Kolumne
3611 stört.  In unserem Fall weisen beide Hälse nach oben und es
3612 befindet sich zur gleichen Zeit auch noch eine dritte Note, das C.
3613 Wie die Richtung von Hälsen geändert wird, wissen wir schon:
3614 mit @code{\stemDown}, und in der Notationsreferenz findet
3615 sich auch Information, wie das C verschoben werden kann: mit
3616 dem @code{\shift}-Befehl.  Aber welcher von ihnen?  Das C
3617 befindet sich in der zweiten Stimme, die @qq{shift off} hat,
3618 die zwei Ds sind in den Stimmen eins und drei, die @qq{shift
3619 off} bzw. @qq{shift on} haben.  Das C muss also noch eine
3620 Stufe weiter verschoben werden mit @code{\shiftOnn}, damit
3621 es die Verschmelzung der Ds nicht stört.  Das sieht jetzt so
3622 aus:
3623
3624 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3625 rhMusic = \relative {
3626   \new Voice {
3627     r2 c''4.\( g8 |
3628     \once \override Tie.staff-position = #3.5
3629     bes1~ |
3630     \bar "||"
3631     \time 6/4
3632     bes2.^\markup { \bold "Moderato" } r8
3633     \mergeDifferentlyHeadedOn
3634     \mergeDifferentlyDottedOn
3635     % Start polyphonic section of four voices
3636     <<
3637       { c,8 d fis bes a }  % continuation of main voice
3638       \new Voice {
3639         \voiceTwo
3640         % Move the c2 out of the main note column so the merge will work
3641         c,8~ \shiftOnn c2
3642       }
3643       \new Voice {
3644         \voiceThree
3645         % Stem on the d2 must be down to permit merging
3646         s8 \stemDown d2
3647       }
3648       \new Voice {
3649         \voiceFour
3650         s4 fis4.
3651       }
3652     >> |
3653     \mergeDifferentlyHeadedOff
3654     \mergeDifferentlyDottedOff
3655     g2.\)  % continuation of main voice
3656   }
3657 }
3658
3659 lhMusic = \relative {
3660   r2 <c' g ees>2( |
3661   <d g, d>1)\arpeggio |
3662   r2. d,,4 r4 r |
3663   r4
3664 }
3665
3666 \score {
3667   \new PianoStaff <<
3668     \new Staff = "RH"  <<
3669       \key g \minor
3670       \rhMusic
3671     >>
3672    \new Staff = "LH" <<
3673       \key g \minor
3674       \clef "bass"
3675       \lhMusic
3676     >>
3677   >>
3678 }
3679 @end lilypond
3680
3681 Fast schon geschafft.  Nur noch ein Problem ist übrig: Der Hals nach
3682 unten des verschmolzenen sollte nicht da sein, und das C sähe
3683 besser auf der rechten Seite des Ds aus.  Beides können wir mit den
3684 gelernten postupy při ladění erreichen. Den Hals machen
3685 wir durchsichtig und das C verschieben wir mit der
3686 @code{force-hshift}-Eigenschaft.  Hier ist das Endergebnis:
3687
3688 @cindex Notenkolumne, Beispiel zur Veränderung
3689 @cindex force-hshift-Eigenschaft, Beispiel
3690 @cindex Hals, Beispiel zur Veränderung
3691 @cindex Notenhals, Beispiel zur Veränderung
3692 @cindex transparent-Eigenschaft, Beispiel
3693
3694 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3695 rhMusic = \relative {
3696   \new Voice {
3697     r2 c''4.\( g8 |
3698     \once \override Tie.staff-position = #3.5
3699     bes1~ |
3700     \bar "||"
3701     \time 6/4
3702     bes2.^\markup { \bold "Moderato" } r8
3703     \mergeDifferentlyHeadedOn
3704     \mergeDifferentlyDottedOn
3705     % Start polyphonic section of four voices
3706     <<
3707       { c,8 d fis bes a }  % continuation of main voice
3708       \new Voice {
3709         \voiceTwo
3710         c,8~
3711         % Reposition the c2 to the right of the merged note
3712         \once \override NoteColumn.force-hshift = #1.0
3713         % Move the c2 out of the main note column so the merge will work
3714         \shiftOnn
3715         c2
3716       }
3717       \new Voice {
3718         \voiceThree
3719         s8
3720         % Stem on the d2 must be down to permit merging
3721         \stemDown
3722         % Stem on the d2 should be invisible
3723         \once \override Stem.transparent = ##t
3724         d2
3725       }
3726       \new Voice {
3727         \voiceFour
3728         s4 fis4.
3729       }
3730     >> |
3731     \mergeDifferentlyHeadedOff
3732     \mergeDifferentlyDottedOff
3733     g2.\)  % continuation of main voice
3734   }
3735 }
3736
3737 lhMusic = \relative {
3738   r2 <c' g ees>2( |
3739   <d g, d>1)\arpeggio |
3740   r2. d,,4 r4 r |
3741   r4
3742 }
3743
3744 \score {
3745   \new PianoStaff <<
3746     \new Staff = "RH"  <<
3747       \key g \minor
3748       \rhMusic
3749     >>
3750     \new Staff = "LH" <<
3751       \key g \minor
3752       \clef "bass"
3753       \lhMusic
3754     >>
3755   >>
3756 }
3757 @end lilypond
3758
3759
3760 @node Další ladění
3761 @section Další ladění
3762 @translationof Further tweaking
3763
3764 @menu
3765 * Jiné využití ladění::
3766 * Použití proměnných pro ladění::
3767 * Celkové formátování::
3768 * Více informací::
3769 * Vyhnutí se ladění s pomalejším překladem::
3770 * Pokročilá ladění se Scheme::
3771 @end menu
3772
3773 @node Jiné využití ladění
3774 @subsection Jiné využití ladění
3775 @translationof Other uses for tweaks
3776
3777 @cindex Transparente Objekte
3778 @cindex Entfernen von Objekten
3779 @cindex Verstecken von Objekten
3780 @cindex Unsichtbare Objekte
3781 @cindex transparent-Eigenschaft, Benutzung
3782 @cindex Objekte unsichtbar machen
3783 @cindex Objekte entfernen
3784 @cindex Objekte verstecken
3785 @cindex Noten zwischen Stimmen überbinden
3786 @cindex Überbinden von Noten zwischen Stimmen
3787
3788 @subheading Noten zwischen unterschiedlichen Stimmen überbinden
3789
3790 Das nächste Beispiel zeigt, wie man Noten von verschiedenen
3791 Stimmen miteinander verknüpfen kann, indem man Bindebögen
3792 für Überbindungen benutzt.  Normalerweise können nur zwei
3793 Noten der gleichen Stimme übergebunden werden.  Wenn
3794 man zwei Stimmen benutzt, wobei die überbundenen Noten
3795 sich in der selben befinden,
3796
3797 @lilypond[quote,fragment,relative=2]
3798 << { b8~ 8\noBeam } \\ { b[ g8] } >>
3799 @end lilypond
3800
3801 @noindent
3802 und dann den ersten Hals nach oben unsichtbar macht,
3803 sieht es so aus, als ob die Überbindung zwischen
3804 den Stimmen stattfindet:
3805
3806 @cindex Hals, Beispiel zur Veränderung
3807 @cindex Notenhals, Beispiel zur Veränderung
3808 @cindex transparent-Eigenschaft, Beispiel
3809
3810 @lilypond[quote,fragment,relative=2,verbatim]
3811 <<
3812   {
3813     \once \override Stem.transparent = ##t
3814     b8~ 8\noBeam
3815   }
3816 \\
3817   { b8[ g] }
3818 >>
3819 @end lilypond
3820
3821 Um sicherzugehen, dass der unsichtbare Hals den Bindebogen
3822 nicht zu sehr verkleinert, kann er verlängert werden, indem
3823 seine Länge (@code{length}) auf den Wert @code{8}
3824 gesetzt wird:
3825
3826 @lilypond[quote,fragment,relative=2,verbatim]
3827 <<
3828   {
3829     \once \override Stem.transparent = ##t
3830     \once \override Stem.length = #8
3831     b8~ 8\noBeam
3832   }
3833 \\
3834   { b[ g8] }
3835 >>
3836 @end lilypond
3837
3838
3839 @subheading Eine Fermate in MIDI simulieren
3840
3841 @cindex stencil-Eigenschaft, Benutzung
3842 @cindex Fermate, Benutzung in MIDI
3843 @cindex MIDI: Fermate erstellen
3844
3845 Pro předměty vně notové osnovy ist es normalerweise
3846 besser, die @code{stencil}-Eigenschaft anstelle der
3847 @code{transparent}-Eigenschaft zu verändern, wenn man
3848 sie vom fertigen Notensatz entfernen will.  Indem die
3849 @code{stencil}-Eigenschaft auf falsch (@code{#f}) gesetzt
3850 wird, wird das entsprechende Objekt vollständig entfernt.
3851 Das bedeutet, dass es die Positionierung der anderen Objekte
3852 nicht beeinflusst.
3853
3854 Auf diese Art kann etwa das Tempo geändert werden, damit
3855 in der MIDI-Ausgabe eine Fermate zu hören ist, ohne dass
3856 im Notensatz etwas von diesen Tempoänderungen zu sehen
3857 ist.  Die Metronombezeichnung soll auch nicht die Position
3858 von Text an der gleichen Stelle oder die Abstände zwischen
3859 zwei Systemen beeinflussen.  Darum ist es am besten,
3860 @code{stencil} auf @code{#f} zu setzen.  Im Beispiel wird
3861 der Unterschied zwischen einem unsichtbaren Objekt und
3862 einem entfernten Objekt gezeigt:
3863
3864 @cindex Metronom-Bezeichnung, Beispiel zur Veränderung
3865 @cindex transparent-Eigenschaft, Beispiel
3866
3867 @lilypond[quote,verbatim,ragged-right]
3868 \score {
3869   \relative {
3870     % Visible tempo marking
3871     \tempo 4=120
3872     a'4 a a
3873     \once \override Score.MetronomeMark.transparent = ##t
3874     % Invisible tempo marking to lengthen fermata in MIDI
3875     \tempo 4=80
3876     a4\fermata
3877     % New tempo for next section
3878     \tempo 4=100
3879     a4 a a a
3880   }
3881   \layout { }
3882   \midi { }
3883 }
3884 @end lilypond
3885
3886 @lilypond[quote,verbatim,ragged-right]
3887 \score {
3888   \relative {
3889     % Visible tempo marking
3890     \tempo 4=120
3891     a'4 a a
3892     \once \override Score.MetronomeMark.stencil = ##f
3893     % Invisible tempo marking to lengthen fermata in MIDI
3894     \tempo 4=80
3895     a4\fermata
3896     % New tempo for next section
3897     \tempo 4=100
3898     a4 a a a
3899   }
3900   \layout { }
3901   \midi { }
3902 }
3903 @end lilypond
3904
3905 @noindent
3906 Mit beiden Methoden wird die Tempobezeichnung entfernt, mit
3907 der die Fermate verlängert wird, und beide beeinflussen die
3908 MIDI-Ausgabe wie gewünscht.  Die unsichtbare Metronombezeichnung
3909 schiebt aber die folgende Bezeichnung in die Höhe, während
3910 das im zweiten Beispiel, in dem der @code{stencil} entfernt
3911 wurde, nicht passiert.
3912
3913 @seealso
3914 Glossar:
3915 @rglos{system}.
3916
3917
3918 @node Použití proměnných pro ladění
3919 @subsection Použití proměnných pro ladění
3920 @translationof Using variables for tweaks
3921
3922 @cindex Variablen, Benutzung zur Optimierung
3923 @cindex Optimierung mit Variablen
3924
3925 @code{\override}-Befehle sind oft lang und mühsam zu
3926 tippen, und sie müssen immer absolut richtig sein.  Wenn
3927 derselbe Befehl mehrere Male benutzt werden muss, lohnt
3928 es sich oft schon, eine Variable zu definieren, in der er
3929 sich befindet.
3930
3931 Als Beispiel sollen einige Worte im
3932 Gesangstext fett und kursiv hervorgehoben werden.
3933 Die Befehle @code{\italic} und @code{\bold} funktionieren
3934 im Gesangstext-Kontext nur, wenn sie gleichzeitig mit den Wörtern,
3935 auf die sie angewendet werden sollen, zusätzlich
3936 in eine @code{\markup}-Umgebung eingeschlossen
3937 werden. Durch diese Einbettung können einzelne Wörter nicht
3938 einfach zu einer Variable umgeformt werden.  Als
3939 Alternative versuchen wir, einen Befehl mit
3940 @code{\override} und @code{\revert} zu konstruieren.
3941
3942 @example
3943 @code{\override Lyrics.LyricText.font-shape = #'italic}
3944 @code{\override Lyrics.LyricText.font-series = #'bold}
3945
3946 @code{\revert Lyrics.LyricText.font-shape}
3947 @code{\revert Lyrics.LyricText.font-series}
3948 @end example
3949
3950 Das wäre natürlich noch viel mühsamer, wenn viele Wörter eine
3951 Hervorhebung benötigen.  Anstelle dieser Befehlsketten @emph{können}
3952 wir jedoch zwei Variablen definieren.  Mit ihnen und dem entsprechenden
3953 Wort in geschweiften Klammern erreichen wir den gewünschten Effekt.
3954 Ein weiterer Vorteil ist, dass in diesem Fall die Leerzeichen um die
3955 Punkte herum nicht benötigt werden, weil sie nicht innerhalb des
3956 @code{lyricmode}-Kontextes interpretiert werden.  Hier ein Beispiel;
3957 die Bezeichnungen können natürlich auch kürzer sein,
3958 um noch weniger schreiben zu müssen:
3959
3960 @cindex LyricText, Beispiel zur Veränderung
3961 @cindex Gesangstext, Beispiel zur Veränderung
3962 @cindex font-shape-Eigenschaft, Beispiel
3963 @cindex font-series-Eigenschaft, Beispiel
3964
3965 @lilypond[quote,verbatim]
3966 emphasize = {
3967   \override Lyrics.LyricText.font-shape = #'italic
3968   \override Lyrics.LyricText.font-series = #'bold
3969 }
3970 normal = {
3971   \revert Lyrics.LyricText.font-shape
3972   \revert Lyrics.LyricText.font-series
3973 }
3974
3975 global = { \key c \major \time 4/4 \partial 4 }
3976
3977 SopranoMusic = \relative { c'4 | e4. e8 g4 g    | a4   a   g  }
3978 AltoMusic    = \relative { c'4 | c4. c8 e4 e    | f4   f   e  }
3979 TenorMusic   = \relative  { e4 | g4. g8 c4.  b8 | a8 b c d e4 }
3980 BassMusic    = \relative  { c4 | c4. c8 c4 c    | f8 g a b c4 }
3981
3982 VerseOne = \lyrics {
3983   E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
3984 }
3985
3986 VerseTwo = \lyricmode {
3987   O | \emphasize Christ, \normal whose voice the | wa -- ters heard,
3988 }
3989
3990 VerseThree = \lyricmode {
3991   O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
3992 }
3993
3994 VerseFour = \lyricmode {
3995   O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
3996 }
3997
3998 \score {
3999   \new ChoirStaff <<
4000     \new Staff <<
4001       \clef "treble"
4002       \new Voice = "Soprano"  { \voiceOne \global \SopranoMusic }
4003       \new Voice = "Alto" { \voiceTwo \AltoMusic }
4004       \new Lyrics \lyricsto "Soprano" { \VerseOne }
4005       \new Lyrics \lyricsto "Soprano" { \VerseTwo }
4006       \new Lyrics \lyricsto "Soprano" { \VerseThree }
4007       \new Lyrics \lyricsto "Soprano" { \VerseFour }
4008     >>
4009     \new Staff <<
4010       \clef "bass"
4011       \new Voice = "Tenor" { \voiceOne \TenorMusic }
4012       \new Voice = "Bass"  { \voiceTwo \BassMusic }
4013     >>
4014   >>
4015 }
4016 @end lilypond
4017
4018
4019 @node Celkové formátování
4020 @subsection Celkové formátování
4021 @translationof Style sheets
4022
4023 Die Ausgabe von LilyPond kann sehr stark verändert werden, siehe
4024 zu Einzelheiten @ref{Ladění výstupu,,ladění výstupu}.  Aber was ist,
4025 wenn man mehrere Eingabedateien hat, die die gleichen Anpassungen
4026 erfahren sollen?  Oder wenn Sie einfach nur die Anpassungen von
4027 der eigentlichen Musik trennen wollen?  Das lässt sich recht einfach
4028 erreichen.
4029
4030 Schauen wir uns ein Beispiel an.  Sorgen Sie sich nicht, wenn Sie
4031 den Abschnitt mit den vielen @code{#()} nicht verstehen.  Das wird
4032 erklärt in @ref{Pokročilá ladění se Scheme,,pokročilých laděních se Scheme}.
4033
4034 @lilypond[quote,verbatim,ragged-right]
4035 mpdolce =
4036  #(make-dynamic-script
4037   #{ \markup { \hspace #0
4038                \translate #'(5 . 0)
4039                \line { \dynamic "mp"
4040                        \text \italic "dolce" } }
4041   #})
4042
4043 inst =
4044 #(define-music-function
4045      (string)
4046      (string?)
4047     #{ <>^\markup \bold \box #string #})
4048
4049 \relative {
4050   \tempo 4=50
4051   a'4.\mpdolce d8 cis4--\glissando a |
4052   b4 bes a2 |
4053   \inst "Clarinet"
4054   cis4.\< d8 e4 fis |
4055   g8(\! fis)-. e( d)-. cis2 |
4056 }
4057 @end lilypond
4058
4059 Es gibt einige Probleme mit sich überschneidender Ausgabe, die wird
4060 zurechtgerückt mit den Techniken von @ref{Přesouvání předmětů,,přesouvání předmětů}.
4061 Aber jetzt zu den Definitionen von @code{mpdolce} und @code{inst}.
4062 Sie erstellen die gewünschte Ausgabe, aber wir wollen sie vielleicht
4063 auch in einem anderen Stück verwenden.  Wir könnten sie immer wieder
4064 kopieren und oben in jedes Stück einfügen, aber das ist sehr aufwändig.
4065 Dadurch werden die Definitionen auch in der Eingabedatei belassen,
4066 und ich finde diese @code{#()} irgendwie hässlich.  Verstecken
4067 wir sie also:
4068
4069 @example
4070 %%% in Datei "definitions.ily" speichern
4071 mpdolce =
4072  #(make-dynamic-script
4073   #@{ \markup @{ \hspace #0
4074                \translate #'(5 . 0)
4075                \line @{ \dynamic "mp"
4076                        \text \italic "dolce" @} @}
4077   #@})
4078
4079 inst =
4080 #(define-music-function
4081      (string)
4082      (string?)
4083         #@{ <>^\markup \bold \box #string #@})
4084 @end example
4085
4086 Diese Datei wir mit dem @code{\include}-Befehl ziemlich weit oben
4087 in der Datei eingefügt.  (Die Erweiterung @file{.ily} wird benutzt,
4088 um diese Datei als eine eingefügte, inkludierte zu kennzeichnen, die
4089 man nicht alleinstehend kompilieren kann.)  Jetzt ändern wir die
4090 Noten (in der Datei @file{music.ly}).
4091
4092 @c  We have to do this awkward example/lilypond-non-verbatim
4093 @c  because we can't do the \include stuff in the manual.
4094
4095 @example
4096 \include "definitions.ily"
4097
4098 \relative @{
4099   \tempo 4=50
4100   a'4.\mpdolce d8 cis4--\glissando a |
4101   b4 bes a2 |
4102   \inst "Clarinet"
4103   cis4.\< d8 e4 fis |
4104   g8(\! fis)-. e( d)-. cis2 |
4105 @}
4106 @end example
4107
4108 @lilypond[quote,ragged-right]
4109 mpdolce =
4110  #(make-dynamic-script
4111   #{ \markup { \hspace #0
4112                \translate #'(5 . 0)
4113                \line { \dynamic "mp"
4114                        \text \italic "dolce" } }
4115   #})
4116
4117 inst =
4118 #(define-music-function
4119      (string)
4120      (string?)
4121    #{ <>^\markup \bold \box #string #})
4122
4123 \relative {
4124   \tempo 4=50
4125   a'4.\mpdolce d8 cis4--\glissando a |
4126   b4 bes a2 |
4127   \inst "Clarinet"
4128   cis4.\< d8 e4 fis |
4129   g8(\! fis)-. e( d)-. cis2 |
4130 }
4131 @end lilypond
4132
4133 Das sieht schon besser aus, aber einige Änderungen könnten wir noch vornehmen.
4134 Das Glissando ist kaum sichtbar, machen wir es also etwas dicker und
4135 näher an den Notenkopf.  Die Metronombezeichnung soll über dem
4136 Schlüssel stehen, anstatt über der ersten Note.  Und schließlich
4137 mag mein Kompositionsprofessor keine @qq{C}-Taktangaben, das ändern
4138 wir also in @qq{4/4}.
4139
4140 Ändern Sie jetzt jedoch nicht @file{music.ly}.  Ändern Sie die
4141 @file{definitions.ily} mit dem Folgenden:
4142
4143 @example
4144 %%%  definitions.ily
4145 mpdolce =
4146 #(make-dynamic-script
4147   #@{ \markup @{ \hspace #0
4148                \translate #'(5 . 0)
4149                \line @{ \dynamic "mp"
4150                        \text \italic "dolce" @} @}
4151   #@})
4152
4153 inst =
4154 #(define-music-function
4155      (string)
4156      (string?)
4157    #@{ <>^\markup \bold \box #string #@})
4158
4159 \layout@{
4160   \context @{
4161     \Score
4162     \override MetronomeMark.extra-offset = #'(-9 . 0)
4163     \override MetronomeMark.padding = #'3
4164   @}
4165   \context @{
4166     \Staff
4167     \override TimeSignature.style = #'numbered
4168   @}
4169   \context @{
4170     \Voice
4171     \override Glissando.thickness = #3
4172     \override Glissando.gap = #0.1
4173   @}
4174 @}
4175 @end example
4176
4177 @lilypond[quote,ragged-right]
4178 mpdolce =
4179 #(make-dynamic-script
4180   #{ \markup { \hspace #0
4181                \translate #'(5 . 0)
4182                \line { \dynamic "mp"
4183                        \text \italic "dolce" } }
4184   #})
4185
4186 inst =
4187 #(define-music-function
4188      (string)
4189      (string?)
4190    #{ <>^\markup \bold \box #string #})
4191
4192 \layout{
4193   \context {
4194     \Score
4195     \override MetronomeMark.extra-offset = #'(-9 . 0)
4196     \override MetronomeMark.padding = #'3
4197   }
4198   \context {
4199     \Staff
4200     \override TimeSignature.style = #'numbered
4201   }
4202   \context {
4203     \Voice
4204     \override Glissando.thickness = #3
4205     \override Glissando.gap = #0.1
4206   }
4207 }
4208
4209 \relative {
4210   \tempo 4=50
4211   a'4.\mpdolce d8 cis4--\glissando a |
4212   b4 bes a2 |
4213   \inst "Clarinet"
4214   cis4.\< d8 e4 fis |
4215   g8(\! fis)-. e( d)-. cis2 |
4216 }
4217 @end lilypond
4218
4219 Das sieht besser aus!  Aber nehmen wir an, Ich will dieses Stück publizieren.
4220 Mein Professor mag die @qq{C}-Taktangabe nicht, mir gefällt sie aber sehr
4221 gut.  Kopieren wir also die Datei @file{definitions.ily} nach
4222 @file{web-publish.ily} und verändern diese.  Weil die Noten als PDF
4223 auf dem Monitor dargestellt werden sollen, wird auch die Notengröße
4224 global geändert.
4225
4226 @example
4227 %%%  definitions.ily
4228 mpdolce =
4229 #(make-dynamic-script
4230   #@{ \markup @{ \hspace #0
4231                \translate #'(5 . 0)
4232                \line @{ \dynamic "mp"
4233                        \text \italic "dolce" @} @}
4234   #@})
4235
4236 inst =
4237 #(define-music-function
4238      (string)
4239      (string?)
4240    #@{ <>^\markup \bold \box #string #@})
4241
4242 #(set-global-staff-size 23)
4243
4244 \layout@{
4245   \context @{
4246     \Score
4247     \override MetronomeMark.extra-offset = #'(-9 . 0)
4248     \override MetronomeMark.padding = #'3
4249   @}
4250   \context @{
4251     \Staff
4252   @}
4253   \context @{
4254     \Voice
4255     \override Glissando.thickness = #3
4256     \override Glissando.gap = #0.1
4257   @}
4258 @}
4259 @end example
4260
4261 @lilypond[quote,ragged-right]
4262 mpdolce =
4263 #(make-dynamic-script
4264   #{ \markup { \hspace #0
4265                \translate #'(5 . 0)
4266                \line { \dynamic "mp"
4267                        \text \italic "dolce" } }
4268   #})
4269
4270 inst =
4271 #(define-music-function
4272      (string)
4273      (string?)
4274    #{ <>^\markup \bold \box #string #})
4275
4276 #(set-global-staff-size 23)
4277
4278 \layout{
4279   \context { \Score
4280     \override MetronomeMark.extra-offset = #'(-9 . 0)
4281     \override MetronomeMark.padding = #'3
4282   }
4283   \context { \Voice
4284     \override Glissando.thickness = #3
4285     \override Glissando.gap = #0.1
4286   }
4287 }
4288
4289 \relative {
4290   \tempo 4=50
4291   a'4.\mpdolce d8 cis4--\glissando a |
4292   b4 bes a2 |
4293   \inst "Clarinet"
4294   cis4.\< d8 e4 fis |
4295   g8(\! fis)-. e( d)-. cis2 |
4296 }
4297 @end lilypond
4298
4299 In der Eingabedatei muss jetzt nur noch die Zeile
4300 @code{\include "definitions.ily"} mit
4301 @code{\include "web-publish.ily"} ersetzt werden.  Das könnte
4302 man natürlich noch besser machen.  Es könnte eine Datei
4303 @file{definitions.ily} mit allen Definitionen (also
4304 @code{mpdolce} und @code{inst}) geben, eine Datei
4305 @file{web-publish.ily}, die nur die @code{\layout}-Veränderung
4306 enthält und eine Datei @file{university.ily}, die nur die
4307 Prozedur enthält, die Ausgabe meinem Professor angenehm zu  machen.
4308 Der Anfang von @file{music.ly} würde dann folgendermaßen aussehen:
4309
4310 @example
4311 \include "definitions.ily"
4312
4313 %%%  nur eine der zwei Zeilen auskommentieren!
4314 \include "web-publish.ily"
4315 %\include "university.ily"
4316 @end example
4317
4318 Diese Herangehensweise kann auch schon nützlich sein, wenn man
4319 nur ein paar Stimmen schreiben will.  Ich habe eine ganze Anzahl
4320 an @qq{Stylesheets} für meine Projekte.  Ich fange jede Datei mit
4321 der Zeile @code{\include "../global.ily"} an, die etwa folgendes
4322 einbindet:
4323
4324 @example
4325 %%%   global.ily
4326 \version @w{"@version{}"}
4327
4328 #(ly:set-option 'point-and-click #f)
4329
4330 \include "../init/init-defs.ly"
4331 \include "../init/init-layout.ly"
4332 \include "../init/init-headers.ly"
4333 \include "../init/init-paper.ly"
4334 @end example
4335
4336
4337
4338 @node Více informací
4339 @subsection Více informací
4340 @translationof Other sources of information
4341
4342 Die Programmreferenz enthält sehr viel Information über LilyPond, aber
4343 noch více informací findet sich in den internen
4344 LilyPond-Dateien.  Um sie erforschen zu können, müssen Sie erst
4345 das richtige Verzeichnis auf Ihrem System finden.  Die Position
4346 hängt a) davon ab, ob Ihre LilyPond-Installation mit der vorkompilierten
4347 Version von der LilyPond-Internetseite vorgenommen wurde oder Sie
4348 die Version durch Ihren Paketmanager installiert haben (also
4349 z. B. in einer Linux-Distribution oder unter fink oder cygwin
4350 installiert), und b) auf welchem Betriebssystem Sie das Programm
4351 benutzen:
4352
4353 @strong{Von lilypond.org heruntergeladen}
4354
4355 @itemize @bullet
4356 @item Linux
4357
4358 Wechseln Sie in das Verzeichnis
4359 @file{@var{INSTALL_VERZ}/lilypond/usr/@/share/lilypond/current/}
4360
4361 @item MacOS X
4362
4363 Wechseln Sie in das Verzeichnis
4364 @file{@var{INSTALL_VERZ}/LilyPond.app/Contents/@/Resources/share/lilypond/current/}
4365 indem Sie entweder mit dem Befehl @code{cd} vom Terminal aus
4366 in das Verzeichnis wechseln, oder mit Control-Klick auf das
4367 LilyPond-Programmsymbol gehen und @qq{Show Package Contents}
4368 auswählen.
4369
4370 @item Windows
4371
4372 Wechseln Sie mit dem Windows Explorer ins Verzeichnis
4373 @file{@var{INSTALL_VERZ}/LilyPond/usr/@/share/lilypond/current/}
4374
4375 @end itemize
4376
4377 @strong{Mit einem Paket-Manager installiert oder selber aus
4378 den Quellen kompiliert}
4379
4380 Wechseln Sie in das Verzeichnis
4381 @file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/}, wobei
4382 @var{PREFIX} bei Ihrem Paket-Manager oder dem
4383 @code{configure}-Skript gesetzt wird, und @var{X.Y.Z}
4384 die LilyPond-Versionsnummer.
4385
4386 @smallspace
4387
4388 In diesem Ordner sind die zwei interessanten Unterordner:
4389
4390 @itemize
4391 @item @file{ly/} - beinhaltet Dateien im LilyPond-Format
4392 @item @file{scm/} - beinhaltet Dateien im Scheme-Format
4393 @end itemize
4394
4395 Schauen wir uns zuerst einige Dateien in @file{ly/} an.
4396 Öffnen Sie @file{ly/property-init.ly} in einem Texteditor.
4397 Der, den Sie normalerweise für @file{.ly}-Dateien benutzen,
4398 genügt.  Diese Datei enthält die Definitionen aller vordefinierten
4399 Befehle für LilyPond, wie etwa @code{\stemUp} und
4400 @code{\slurDotted}.  Sie können sehen, dass es sich um
4401 nichts mehr handelt als Definitionen von Variablen, die eine
4402 oder mehrere @code{\override}-Befehle enthalten.  Der
4403 Befehl @code{/tieDotted} etwa wird folgendermaßen definiert:
4404
4405 @example
4406 tieDotted = @{
4407   \override Tie.dash-period = #0.75
4408   \override Tie.dash-fraction = #0.1
4409 @}
4410 @end example
4411
4412 Wenn Sie diese Voreinstellungen der vordefinierten Befehl nicht
4413 mögen, können Sie sie ganz einfach umdefinieren, genauso wie
4414 jede andere Variable auch, indem Sie sie an den Anfang Ihrer
4415 Quelldatei schreiben.
4416
4417 Hier sind die wichtigsten Dateien, die sich im Ordner
4418 @file{ly/} befinden:
4419
4420 @multitable @columnfractions .4 .6
4421 @headitem Dateiname
4422   @tab Inhalt
4423 @item @file{ly/engraver-init.ly}
4424   @tab Definitionen von Engraver-Kontexten
4425 @item @file{ly/paper-defaults-init.ly}
4426   @tab Spezifikationen von Voreinstellungen für Papiermaße
4427 @item @file{ly/performer-init.ly}
4428   @tab Definitionen von Performer-Kontexten
4429 @item @file{ly/property-init.ly}
4430   @tab Definitionen aller vordefinierten Befehle
4431 @item @file{ly/spanner-init.ly}
4432   @tab Definitionen aller vordefinierten Strecker-Befehle
4433 @end multitable
4434
4435 Andere Einstellungen (wie die Definitionen von Beschriftungsbefehlen)
4436 sind in @file{.scm}-(Scheme)-Dateien gespeichert.  Die
4437 Scheme-Programmiersprache wird benutzt, um eine
4438 programmierbare Schnittstelle zu den internen Operationen von
4439 LilyPond zu haben.  Eine weitere Erklärung dieser Dateien ist
4440 im Moment außerhalb des Rahmens dieses Handbuchs, denn
4441 sie erfordern einige Kenntnis der Scheme-Sprache.  Die Warnung
4442 ist hier angebracht, dass des ein gutes technisches Verständnis
4443 oder sehr viel Zeit braucht, um Scheme und diese
4444 Dateien zu verstehen (siehe auch @rextend{Scheme-Übung}).
4445
4446 Wenn Sie sich mit Scheme auskennen, sind hier mögliche
4447 interessante Dateien:
4448
4449 @multitable @columnfractions .4 .6
4450 @headitem Dateiname
4451   @tab Inhalt
4452 @item @file{scm/auto-beam.scm}
4453   @tab Sub-Balken-Voreinstellungen
4454 @item @file{scm/define-grobs.scm}
4455   @tab Voreinstellungen für Grob-Eigenschaften
4456 @item @file{scm/define-markup-commands.scm}
4457   @tab Definition aller Markup-Beschriftungsbefehle
4458 @item @file{scm/midi.scm}
4459   @tab Voreinstellung für die MIDI-Ausgabe
4460 @item @file{scm/output-lib.scm}
4461   @tab Einstellungen mit Einfluss auf die Darstellung von Bunddiagrammen, Farben, Versetzungszeichen, Taktlinien usw.
4462 @item @file{scm/parser-clef.scm}
4463   @tab Definitionen der unterstützten Schlüssel
4464 @item @file{scm/script.scm}
4465   @tab Voreinstellungen für Artikulationszeichen
4466 @end multitable
4467
4468
4469 @node Vyhnutí se ladění s pomalejším překladem
4470 @subsection Vyhnutí se ladění s pomalejším překladem
4471 @translationof Avoiding tweaks with slower processing
4472
4473 @untranslated
4474
4475 LilyPond kann einige zusätzliche Tests durchführen, während
4476 die Noten gesetzt werden.  Dadurch braucht das Programm länger,
4477 um den Notensatz zu produzieren, aber üblicherweise werden
4478 weniger nachträgliche Anpassungen nötig sein.  Wenn eine
4479 Textsilbe oder eine Beschriftung aus dem Rand der Partitur
4480 ragt, wird durch diese Tests die Zeile gerade so weit komprimiert,
4481 dass sie sich innerhalb der Ränder befindet.
4482
4483 Damit diese Tests immer funktionieren, müssen sie aktiviert werden,
4484 indem die @bs{}@code{override}-Befehle in einer @code{context}-Umgebung
4485 innerhalb der @code{layout}-Umgebung notiert werden und nicht innerhalb
4486 der Noten:
4487
4488 @example
4489 \score @{
4490   @{ @dots{}Noten@dots{} @}
4491   \layout @{
4492     \context @{
4493       \Score
4494  %  Um sicher zu gehen, dass Texte und Liedtext
4495  %  innerhalb der Papierränder bleiben
4496  \override PaperColumn.keep-inside-line = ##t
4497  \override NonMusicalPaperColumn.keep-inside-line = ##t
4498     @}
4499   @}
4500 @}
4501 @end example
4502
4503 @code{keep-inside-line} braucht jedoch sehr viel Berechnungen,
4504 sodass es sich anbietet, diese Funktion zunächst nicht zu aktivieren
4505 und erst einzufügen, wenn man die endgültige Version erstellt.
4506 Auf diese Weise muss man nicht mit der Hand @code{\break}-Befehle
4507 hinzufügen, um zu vermeiden, dass Text über den rechten Rand der
4508 Seite hinausragt.
4509
4510
4511 @node Pokročilá ladění se Scheme
4512 @subsection Pokročilá ladění se Scheme
4513 @translationof Advanced tweaks with Scheme
4514
4515 Auch wenn viele Sachen mit @code{\override} und @code{\tweak}
4516 möglich sind, gibt es eine sehr viel mächtigere Möglichkeit, die
4517 Arbeitsweise von LilyPond mit Hilfe der programmierbaren Schnittstelle
4518 zu beeinflussen.  Code, der in der Scheme-Programmiersprache
4519 geschrieben ist, kann direkt in die interne Satzmaschine von LilyPond
4520 eingefügt werden.  Natürlich brauchen Sie dazu wenigstens ein
4521 grundlegendes Verständnis von Scheme.  Eine Einleitung finden
4522 Sie in der @rextend{Scheme-Übung}.
4523
4524 Zur Illustration der vielen Möglichkeiten soll gezeigt werden, dass eine
4525 Eigenschaft nicht nur auf eine Konstante, sondern auch auf eine
4526 Scheme-Prozedur gesetzt werden kann, die dann jedes Mal
4527 aufgerufen wird, wenn die Eigenschaft von LilyPond benutzt
4528 wird.  Die Eigenschaft kann damit dynamisch auf einen Wert
4529 gesetzt werden, der durch die Prozedur jedes Mal neu bestimmt
4530 wird.  In diesem Beispiel wird die Farbe der Notenköpfe entsprechend
4531 zu ihrer Position innerhalb der Tonleiter gesetzt.
4532
4533 @cindex x11-Farben, Beispiel zur Benutzung
4534 @cindex Notenkopf, Beispiel zur Veränderung
4535 @cindex Farb-Eigenschaft, in Scheme-Prozedur gesetzt
4536
4537 @lilypond[quote,verbatim,ragged-right]
4538 #(define (color-notehead grob)
4539    "Color the notehead according to its position on the staff."
4540    (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
4541                                7)))
4542      (case mod-position
4543        ;;   Return rainbow colors
4544        ((1) (x11-color 'red    ))  ; for C
4545        ((2) (x11-color 'orange ))  ; for D
4546        ((3) (x11-color 'yellow ))  ; for E
4547        ((4) (x11-color 'green  ))  ; for F
4548        ((5) (x11-color 'blue   ))  ; for G
4549        ((6) (x11-color 'purple ))  ; for A
4550        ((0) (x11-color 'violet ))  ; for B
4551        )))
4552
4553 \relative {
4554   % Arrange to obtain color from color-notehead procedure
4555   \override NoteHead.color = #color-notehead
4556   a2 b | c2 d | e2 f | g2 a |
4557 }
4558 @end lilypond
4559
4560 Weiter Beispiele, die die Benutzung dieser programmierbaren
4561 Schnittstelle zeigen, finden sich in @rextend{Optimierungen mit Scheme}.