]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/de/user/working.itely
Add a TODO comment re grace note spacing.
[lilypond.git] / Documentation / de / user / working.itely
1 @c -*- coding: utf-8; mode: texinfo; -*-
2 @c This file is part of lilypond.tely
3 @ignore
4     Translation of GIT committish: 3121682025660b6c85fbf3f22bb9cd8396699ad1
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  See TRANSLATION for details.
8 @end ignore
9
10 @node Working on LilyPond projects
11 @chapter Working on LilyPond projects
12
13 Dieses Kapitel erklärt, wie bestimmte häufige Probleme zu 
14 lösen oder ganz zu vermeiden sind. Wenn Sie schon 
15 Programmiererfahrung mitbringen, erscheinen diese Hinweise 
16 vielleicht überflüssig, aber es wird dennoch empfohlen, dieses Kapitel 
17 zu lesen.
18
19
20 @menu
21 * Suggestions for writing LilyPond files::  
22 * Saving typing with identifiers and functions::  
23 * Style sheets::                
24 * Updating old files::          
25 * Troubleshooting (taking it all apart)::  
26 * Minimal examples::            
27 @end menu
28
29
30 @node Suggestions for writing LilyPond files
31 @section Suggestions for writing LilyPond files
32 Jetzt sind Sie so weit, größere Stücke mit LilyPond zu schreiben -- 
33 nicht 
34 nur die kleinen Beispiele aus der Übung, sondern ganze Stücke.
35 Aber wie geht man das am besten an?
36
37 Solange LilyPond Ihre Dateien versteht und die Noten so setzt, 
38 wie Sie das wollen, spielt es eigentlich keine Rolle, wie Ihre 
39 Dateien aussehen. Es gibt aber trotzdem ein paar Dinge, die man 
40 beim Schreiben von LilyPond-Code berücksichtigen sollte.
41
42 @itemize @bullet
43 @item Was ist, wenn Sie einen Fehler machen? Die Struktur einer 
44 LilyPond-Datei kann es erleichtern (oder erschweren), bestimmte 
45 Fehler zu finden.
46
47 @item Was ist, wenn Sie Ihre Dateien mit jemandem austauschen 
48 wollen? Oder Ihre Dateien nach einige Jahren noch einmal überarbeiten 
49 wollen? Manche LilyPond-Dateien vesteht man auf den ersten Blick, 
50 über anderen muss man eine Stunde grübeln, um die Struktur zu ahnen.
51
52 @item Was ist, wenn sie Ihre Dateien auf eine neuere LilyPond-Version 
53 aktualisieren wollen? Die Syntax der Eingabesprache verändert sich 
54 allmählich mit Verbesserungen im Programm. Die meisten Verändernungen 
55 können automatisch durch @code{convert-ly} gelöst werden, aber 
56 bestimmte Änderungen brauchen Hanbarbeit. LilyPond-Dateien können 
57 strukturiert werden, damit sie einfacher aktualisierbar sind.
58 @end itemize
59
60 @menu
61 * General suggestions::         
62 * Typesetting existing music::  
63 * Large projects::              
64 @end menu
65
66
67 @node General suggestions
68 @subsection General suggestions
69
70 Hier einige Vorschläge, wie Sie Probleme vermeiden oder lösen können:
71
72 @itemize @bullet
73 @item @strong{Schreiben Sie immer mit @code{\version} die 
74 Versionsnummer 
75 in jede Datei}. Beachten Sie, dass in allen Vorlagen die Versionsnummer  
76 @code{\version "2.11.23"} eingetragen ist. Es empfielt sich, in alle 
77 Dateien, unabhängig von ihrer Größe, den @code{\version}-Befehl 
78 einzufügen. Persönliche Erfahrung hat gezeigt, dass es ziemlich 
79 frustrierend sein kann zu erinnern, welche Programmversion man etwa 
80 vor einem Jahr verwendet hat. Auch @code{convert-ly} benötigt die 
81 Versionsnummer.
82
83 @item @strong{Benutzen Sie Überprüfungen}: @ruser{Bar check}, 
84 @ruser{Octave check} und
85 @ruser{Barnumber check}.  Wenn Sie hier und da diese Überprüfungen 
86 einfügen, finden Sie einen möglichen Fehler weit schneller. Wie oft 
87 aber 
88 ist @qq{hier und da}? Das hängt von der Komplexität der Musik ab. Bei 
89 einfachen Stücken reicht es vielleicht ein- oder zweimal, in sehr
90 komplexer Musik sollte man sie vielleicht in jeden Takt einfügen.
91
92 @item @strong{Ein Takt pro Textzeile}. Wenn irgendetwas kompliziertes 
93 vorkommt, entweder in der Musik selber oder in der Anpassung der 
94 Ausgabe,
95 empfielt es sich oft, nur einen Takt pro Zeile zu schreiben. 
96 Bildschirmplatz zu sparen, indem Sie acht Takte in eine Zeile zwängen, 
97 hilft nicht weiter, wenn Sie ihre Datei @qq{debuggen} müssen.
98
99 @item @strong{Kommentieren Sie ihre Dateien}.  Benutzen Sie entweder 
100 Taktnummern (in regelmäßigen Abständen) oder Verweise auf musikalische 
101 Themen (@qq{Zweites Thema in den Geigen}, @qq{vierte Variation} usw.). 
102 Sie brauchen diese Kommentare vielleicht noch nicht, wenn Sie das Stück  
103 notieren, aber spätestens wenn Sie nach ein paar Jahren etwas 
104 verändern 
105 wollen oder Sie den Quelltext an einen Freund weitergeben wollen, 
106 ist es weitaus komplizierter, die Dateistruktur ohne Kommentare zu 
107 verstehen, als wenn Sie sie rechtzeitig eingefügt hätten.
108
109 @item @strong{Schreiben Sie Klammern mit Einrückung}.  Viele 
110 Probleme entstehen durch ungerade Anzahl von  @code{@{} and 
111 @code{@}}-Klammern.
112
113 @item @strong{Schreiben Sie Tondauerangaben} am Anfang von 
114 Abschnitten und Bezeichnern. Wenn Sie beispielsweise 
115  @code{c4 d e} am Anfang eines Abschnittes schreiben, 
116 ersparen Sie sich viele Probleme, wenn Sie ihre Musik 
117 eines Tages umarrangieren wollen.
118
119 @item @strong{Trennen Sie Einstellungen} von den eigentlichen 
120 Noten. Siehe auch @ruser{Saving typing with identifiers and functions} 
121 und
122 @ruser{Style sheets}.
123
124 @end itemize
125
126
127 @node Typesetting existing music
128 @subsection Typesetting existing music
129
130 Wenn Sie Musik aus einer fertigen Partitur kopieren (z. B. die 
131 LilyPond-Eingabe einer gedruckten Partitur):
132
133 @itemize @bullet
134
135 @item Schreiben Sie ein System ihrer Quelle nach dem anderen 
136 (aber trotzdem nur einen Takt pro Textzeile) und überprüfen 
137 Sie jedes System, nachdem Sie es fertig kopiert haben. Mit dem 
138 @code{showLastLength}-Befehl können Sie den Übersetzungsprozess 
139 beschleunigen. Siehe auch 
140 @ruser{Skipping corrected music}.
141
142 @item Definieren Sie @code{mBreak = @{ \break @}} und schreiben Sie
143  @code{\mBreak} in der Quelldatei immer dann, wenn im Manuskript 
144 ein Zeilenumbruch vorkommt. Das macht es einfacher, die gesetzte 
145 Zeile mit den ursprünglichen Noten zu vergleichen. Wenn Sie die 
146 Partitur fertig gestellt haben, könne Sie  @code{mBreak = @{ @}}, 
147 also leer definieren, um diese manuellen Zeilenumbrüche zu entfernen. 
148 Damit kann dann LilyPond selber entscheiden, wohin es passende 
149 Zeilenumbrüche plaziert.
150
151 @end itemize
152
153
154 @node Large projects
155 @subsection Large projects
156
157 Besonders wenn Sie an größeren Projekten arbeiten, ist es 
158 unumgänglich, dass Sie ihre LilyPond-Dateien klar strukturieren.
159
160 @itemize @bullet
161
162 @item @strong{Verwenden Sie Variablen für jede Stimme}, innerhalb 
163 der Definition sollte so wenig Struktur wie möglich sein. Die 
164 Struktur des @code{\score}-Abschnittes verändert sich am ehesten, 
165 während die @code{violin}-Definition sich wahrscheinlich mit einer 
166 neuen Programmversion nicht verändern wird.
167
168 @example
169 violin = \relative c'' @{
170 g4 c'8. e16
171 @}
172 ...
173 \score @{
174   \new GrandStaff @{
175     \new Staff @{
176       \violin
177     @}
178   @}
179 @}
180 @end example
181
182 @item @strong{Trennen Sie Einstellungen von den Noten}.  Diese 
183 Empfehlung wurde schon im Abschnitt @ruser{General suggestions} gegeben, 
184 aber für große Projekte ist es unumgänglich. Muss z. B. die 
185 Definition für @code{fdannp} verändert werden, so braucht 
186 man es nur einmal vorzunehmen und die Noten in der Geigenstimme, 
187 @code{violin}, bleiben unberührt.
188
189 @example
190 fdannp = _\markup@{
191   \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
192 violin = \relative c'' @{
193 g4\fdannp c'8. e16
194 @}
195 @end example
196
197 @end itemize
198
199
200 @node Saving typing with identifiers and functions
201 @section Saving typing with identifiers and functions
202
203 @cindex Variable
204 @cindex Bezeichner
205
206 Bis jetzt haben Sie immer etwa solche Noten gesehen:
207
208 @lilypond[quote,verbatim,ragged-right]
209 hornNotes = \relative c'' { c4 b dis c }
210 \score {
211   {
212     \hornNotes
213   }
214 }
215 @end lilypond
216
217 Das könnte auch nützlich in Minimal-Music sein:
218
219 @lilypond[quote,verbatim,ragged-right]
220 fragA = \relative c'' { a4 a8. b16 }
221 fragB = \relative c'' { a8. gis16 ees4 }
222 violin = \new Staff { \fragA \fragA \fragB \fragA }
223 \score {
224   {
225     \violin
226   }
227 }
228 @end lilypond
229
230 Sie können diese Bezeichner oder Variablen aber auch für 
231 (eigene) Einstellungen verwenden:
232
233 @lilypond[quote,verbatim,ragged-right]
234 dolce = \markup{ \italic \bold dolce }
235 padText = { \once \override TextScript #'padding = #5.0 }
236 fthenp=_\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p }
237 violin = \relative c'' {
238   \repeat volta 2 {
239     c4._\dolce b8 a8 g a b |
240     \padText
241     c4.^"hi there!" d8 e' f g d |
242     c,4.\fthenp b8 c4 c-. |
243   }
244 }
245 \score {
246   {
247     \violin
248   }
249 \layout{ragged-right=##t}
250 }
251 @end lilypond
252
253 Die Variablen haben in diesem Beispiel deutlich die 
254 Tipparbeit erleichtert. Aber es lohnt sich, sie zu 
255 einzusetzen, auch wenn man sie nur einmal anwendet, 
256 denn sie vereinfachen die Struktur. 
257 Hier ist das vorangegangene Beispiel ohne 
258 Variablen. Es ist sehr viel komplizierter zu lesen, 
259 besonders die letzte Zeile. 
260
261 @example
262 violin = \relative c'' @{
263   \repeat volta 2 @{
264     c4._\markup@{ \italic \bold dolce @} b8 a8 g a b |
265     \once \override TextScript #'padding = #5.0
266     c4.^"hi there!" d8 e' f g d |
267     c,4.\markup@{ \dynamic f \italic \small @{ 2nd @}
268       \hspace #0.1 \dynamic p @} b8 c4 c-. |
269   @}
270 @}
271 @end example
272
273 Bis jetzt wurde nur statische Substitution vorgestellt 
274 -- wenn LilyPond den Befehl @code{\padText} findet, wird 
275 er ersetzt durch durch unsere vorherige Definition (alles, 
276 was nach dem @code{padtext =} kommt).
277
278 LilyPond kennt aber auch nicht-statische Substitutionen (man 
279 kann sie sich als Funktionen vorstellen).
280
281 @lilypond[quote,verbatim,ragged-right]
282 padText =
283 #(define-music-function (parser location padding) (number?)
284   #{
285     \once \override TextScript #'padding = #$padding
286   #})
287
288 \relative c''' {
289   c4^"piu mosso" b a b
290   \padText #1.8
291   c4^"piu mosso" d e f
292   \padText #2.6
293   c4^"piu mosso" fis a g
294 }
295 @end lilypond
296
297 Die Benutzung von Variablen hilft auch, viele Schreibarbeit zu 
298 vermeiden, wenn die Eingabesyntax von LilyPond sich verändert 
299 (siehe auch @ruser{Updating old files}). Wenn nur eine einzige 
300 Definition (etwa @code{\dolce}) für alle Dateien verwendet wird 
301 (vgl. @ruser{Style sheets}), muss nur diese einzige Definition 
302 verändert werden, wenn sich die Syntax ändert. Alle Verwendungen 
303 des Befehles beziehen sich dann auf die neue Definition.
304
305 @node Style sheets
306 @section Style sheets
307
308 Die Ausgabe, die LilyPond erstellt, kann sehr start modifiziert 
309 werden, siehe @ruser{Tweaking output} für Einzelheiten. Aber wie 
310 kann man diese Änderungen auf eine ganze Serie von Dateien 
311 anwenden? Oder die Einstellungen von den Noten trennen? Das 
312 Verfahren ist ziemlich einfach.
313
314 Hier ist ein Beispiel. Es ist nicht schlimm, wenn Sie nicht auf 
315 Anhieb die Abschnitte mit den ganzen @code{#()} verstehen. Das 
316 wird im Kapitel @ruser{Advanced tweaks with Scheme} erklärt.
317
318 @lilypond[quote,verbatim,ragged-right]
319 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
320   #:line(#:dynamic "mp" #:text #:italic "dolce" )))
321 tempoMark = #(define-music-function (parser location markp) (string?)
322 #{
323   \once \override Score . RehearsalMark #'self-alignment-X = #left
324   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
325   \mark \markup { \bold $markp }
326 #})
327
328 \relative c'' {
329   \tempo 4=50
330   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
331   \tempoMark "Poco piu mosso"
332   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
333 }
334 @end lilypond
335
336 Es treten einige Probleme mit überlappenden Symbolen auf. Sie 
337 werden beseitigt mit den Tricks aus dem Kapitel @ruser{Moving objects}.
338 Aber auch die @code{mpdolce} und @code{tempoMark}-Defintiionen 
339 können verbessert werden. Sie produzieren das Ergebnis, das 
340 gewünscht ist, aber es wäre schön, sie auch in anderen Stücken 
341 verwenden zu können. Man könnte sie natürlich einfach kopieren 
342 und in die anderen Dateien einfügen, aber das ist lästig. Die 
343 Defintionen verbleiben auch in der Notendatei und diese @code{#()} 
344 sehen nicht wirklich schön aus. Sie sollen in einer anderen 
345 Datei versteckt werden:
346
347 @example
348 %%% speichern in einer Datei "definitions.ly"
349 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
350   #:line(#:dynamic "mp" #:text #:italic "dolce" )))
351 tempoMark = #(define-music-function (parser location markp) (string?)
352 #@{
353   \once \override Score . RehearsalMark #'self-alignment-X = #left
354   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
355   \mark \markup @{ \bold $markp @}
356 #@})
357 @end example
358
359 Jetzt muss natürlich noch die Notendatei angepasst werden (gespeichert 
360 unter dem Namen @file{"music.ly"}).
361
362 @c  We have to do this awkward example/lilypond-non-verbatim
363 @c  because we can't do the \include stuff in the manual.
364
365 @example
366 \include "definitions.ly"
367
368 \relative c'' @{
369   \tempo 4=50
370   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
371   \once \override Score.RehearsalMark #'padding = #2.0
372   \tempoMark "Poco piu mosso"
373   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
374 @}
375 @end example
376
377 @lilypond[quote,ragged-right]
378 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
379   #:line(#:dynamic "mp" #:text #:italic "dolce" )))
380 tempoMark = #(define-music-function (parser location markp) (string?)
381 #{
382   \once \override Score . RehearsalMark #'self-alignment-X = #left
383   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
384   \mark \markup { \bold $markp }
385 #})
386
387 \relative c'' {
388   \tempo 4=50
389   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
390   \once \override Score.RehearsalMark #'padding = #2.0
391   \tempoMark "Poco piu mosso"
392   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
393 }
394 @end lilypond
395
396 Das sieht schon besser aus, aber es sind noch einige Verbesserungen 
397 möglich. 
398 Das Glissando ist schwer zu sehen, also soll es etwas dicker erscheinen 
399 und dichter an den Notenköpfen gesetzt werden. Das Metronom-Zeichen 
400 soll über dem Schlüssel erscheinen, nicht über der ersten Note. Und 
401 schließlich kann unser Kompositionsprofessor @qq{C}-Taktangaben 
402 überhaupt nicht leiden, also 
403 müssen sie in @qq{4/4} verändert werden.
404
405 Diese Veränderungen sollten Sie aber nicht in der @file{music.ly}-Datei 
406 vornehmen. Ersetzen Sie die @file{definitions.ly}-Datei hiermit:
407
408 @example
409 %%%  definitions.ly
410 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
411   #:line( #:dynamic "mp" #:text #:italic "dolce" )))
412 tempoMark = #(define-music-function (parser location markp) (string?)
413 #@{
414   \once \override Score . RehearsalMark #'self-alignment-X = #left
415   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
416   \mark \markup @{ \bold $markp @}
417 #@})
418
419 \layout@{
420   \context @{ \Score
421     \override MetronomeMark #'extra-offset = #'(-9 . 0)
422     \override MetronomeMark #'padding = #'3
423   @}
424   \context @{ \Staff
425     \override TimeSignature #'style = #'numbered
426   @}
427   \context @{ \Voice
428     \override Glissando #'thickness = #3
429     \override Glissando #'gap = #0.1
430   @}
431 @}
432 @end example
433
434 @lilypond[quote,ragged-right]
435 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
436   #:line( #:dynamic "mp" #:text #:italic "dolce" )))
437 tempoMark = #(define-music-function (parser location markp) (string?)
438 #{
439   \once \override Score . RehearsalMark #'self-alignment-X = #left
440   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
441   \mark \markup { \bold $markp }
442 #})
443
444 \layout{
445   \context { \Score
446     \override MetronomeMark #'extra-offset = #'(-9 . 0)
447     \override MetronomeMark #'padding = #'3
448   }
449   \context { \Staff
450     \override TimeSignature #'style = #'numbered
451   }
452   \context { \Voice
453     \override Glissando #'thickness = #3
454     \override Glissando #'gap = #0.1
455   }
456 }
457
458 \relative c'' {
459   \tempo 4=50
460   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
461   \once \override Score.RehearsalMark #'padding = #2.0
462   \tempoMark "Poco piu mosso"
463   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
464 }
465 @end lilypond
466
467 Das sieht schon besser aus! Aber angenommen Sie möchten dieses 
468 Stück jetzt veröffentlichen. Ihr Kompositionsprofessor mag 
469 die @qq{C}-Taktangaben nicht, aber Sie finden sie irgendwie 
470 schöner. Also kopieren Sie die Datei @file{definitions.ly} nach 
471 @file{web-publish.ly} und veränderen diese. Weil die Noten 
472 in einer PDF-Datei auf dem Bilschirm angezeigt werden sollen, 
473 bietet es sich auch an, die gesamte Ausgabe zu vergrößern.
474
475 @example
476 %%%  definitions.ly
477 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
478   #:line( #:dynamic "mp" #:text #:italic "dolce" )))
479 tempoMark = #(define-music-function (parser location markp) (string?)
480 #@{
481   \once \override Score . RehearsalMark #'self-alignment-X = #left
482   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
483   \mark \markup @{ \bold $markp @}
484 #@})
485
486 #(set-global-staff-size 23)
487 \layout@{
488   \context @{ \Score
489     \override MetronomeMark #'extra-offset = #'(-9 . 0)
490     \override MetronomeMark #'padding = #'3
491   @}
492   \context @{ \Staff
493   @}
494   \context @{ \Voice
495     \override Glissando #'thickness = #3
496     \override Glissando #'gap = #0.1
497   @}
498 @}
499 @end example
500
501 @lilypond[quote,ragged-right]
502 mpdolce = #(make-dynamic-script (markup #:hspace 1 #:translate (cons 5 0)
503   #:line( #:dynamic "mp" #:text #:italic "dolce" )))
504 tempoMark = #(define-music-function (parser location markp) (string?)
505 #{
506   \once \override Score . RehearsalMark #'self-alignment-X = #left
507   \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0)
508   \mark \markup { \bold $markp }
509 #})
510
511 #(set-global-staff-size 23)
512 \layout{
513   \context { \Score
514     \override MetronomeMark #'extra-offset = #'(-9 . 0)
515     \override MetronomeMark #'padding = #'3
516   }
517   \context { \Voice
518     \override Glissando #'thickness = #3
519     \override Glissando #'gap = #0.1
520   }
521 }
522
523 \relative c'' {
524   \tempo 4=50
525   a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
526   \once \override Score.RehearsalMark #'padding = #2.0
527   \tempoMark "Poco piu mosso"
528   cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
529 }
530 @end lilypond
531
532 In der Notendatei muss jetzt nur noch @code{\include "definitions.ly"}
533 durch @code{\include "web-publish.ly"} ausgetauscht werden. 
534 Das könnte man natürlich noch weiter vereinfachen. Also 
535 eine Datei @file{definitions.ly}, die nur die Definitionen 
536 von @code{mpdolce} und @code{tempoMark} enthält, eine Datei 
537 @file{web-publish.ly}, die alle die Änderungen für den 
538 @code{\layout}-Abschnitt enthält und eine Datei @file{university.ly} 
539 für eine Ausgabe, die den Wünschen des Professors entspricht. 
540 Der Anfang der @file{music.ly}-Datei würde dann so aussehen:
541
542 @example
543 \include "definitions.ly"
544
545 %%%  Nur eine der beiden Zeilen auskommentieren!
546 \include "web-publish.ly"
547 %\include "university.ly"
548 @end example
549
550 Durch diese Herangehensweise kann auch bei der Erstellung 
551 von nur einer Ausgabeversion Arbeit gespart werden. Ich 
552 benutze ein halbes Dutzent verschidener Stilvorlagen 
553 für meine Projekte. Jede Notationsdatei fängt an mit 
554 @code{\include "../global.ly"}, welches folgenden Inhalt hat:
555
556
557 @example
558 %%%   global.ly
559 \version "2.11.23"
560 #(ly:set-option 'point-and-click #f)
561 \include "../init/init-defs.ly"
562 \include "../init/init-layout.ly"
563 \include "../init/init-headers.ly"
564 \include "../init/init-paper.ly"
565 @end example
566
567
568 @node Updating old files
569 @section Updating old files
570
571 Die Syntax von LilyPond verändert sich ab und zu. Wenn LilyPond 
572 besser wird, muss auch die Syntax (Eingabesprache) entsprechend 
573 angepasst werden. Teilweise machen diese Veränderungen die 
574 Eingabesprache einfacher lesbar, teilweise dienen sie dazu, neue 
575 Eigenschaften des Programmes benutzbar zu machen.
576
577 LilyPond stellt ein Programm bereit, das Aktualisierungen 
578 vereinfacht: @code{convert-ly}. Einzelheiten zur Programmbenutzung 
579 finden sich in @rprogram{Updating files with convert-ly}.
580
581 Leider kann @code{convert-ly} nicht alle Veränderungen der Syntax
582 berücksichtigen. Hier werden einfache @qq{Suchen und
583 Ersetzen}-Veränderungen vorgenommen (wie etwa @code{raggedright} zu
584 becoming @code{ragged-right}), aber einige Veränderungen sind zu
585 kompliziert. Die Syntax-Veränderungen, die das Programm nicht
586 berücksichtigt, sind im Kapitel @rprogram{Updating files with
587 convert-ly} aufgelistet.
588
589 Zum Beispiel wurden in LilyPond 2.4 und früheren Versionen 
590 Akzente und Umlaute mit LaTeX-Befehlen eingegeben, ein 
591 @qq{No\"el} etwa ergäbe das französische Wort für Weihnachten.
592 In LilyPond 2.6 und höher müssen diese Sonderzeichen direkt 
593 als utf-8-Zeichen eingegeben werden, in diesem Fall also @qq{ë}. 
594 @code{convert-ly} kann nicht alle dieser LaTeX-Befehle 
595 verändern, das muss manuell vorgenommen werden.
596
597
598 @node Troubleshooting (taking it all apart)
599 @section Troubleshooting (taking it all apart)
600
601 Früher oder später werden Sie in die Lage kommen, 
602 dass LilyPond Ihre Datei nicht kompilieren will. Die 
603 Information, die LilyPond während der Übersetzung 
604 gibt, können Ihnen helfen, den Fehler zu finden, aber 
605 in vielen Fällen müssen Sie nach der Fehlerquelle 
606 auf die Suche gehen.
607
608 Die besten Hilfmittel sind in diesem Fall das Zeilen- 
609 und Blockkommentar (angezeigt durch @code{%} bzw. 
610 @code{%@{ ... %@}}). Wenn Sie nicht bestimmen können, 
611 wo sich das Problem befindet, beginnen Sie damit, große 
612 Teile des Quelltextes auszukommentieren. Nachdem Sie 
613 einen Teil auskommentiert haben, versuchen Sie, die Datei 
614 erneut zu übersetzen. Wenn es jetzt funktioniert, muss 
615 sich das Problem innerhalb der Kommentare befinden. 
616 Wenn es nicht funktioniert, müssen Sie weitere Teile 
617 auskommentieren bis sie eine Version haben, die funktioniert.
618
619 In Extremfällen bleibt nur noch solch ein Beispiel übrig:
620
621 @example
622 \score @{
623   <<
624     % \melody
625     % \harmony
626     % \bass
627   >>
628   \layout@{@}
629 @}
630 @end example
631
632 @noindent
633 (also eine Datei ohne Noten).
634
635 Geben Sie nicht auf, wenn das vorkommen sollte. Nehmen 
636 Sie das Kommentarzeichen von einem Teil wieder weg, sagen 
637 wir der Bassstimme, und schauen Sie, ob es funktioniert. 
638 Wenn nicht, dann kommentieren Sie die gesamte Bassstimme 
639 aus, aber nicht den @code{\bass}-Befehl in dem 
640  @code{\score}-Abschnitt:
641
642 @example
643 bass = \relative c' @{
644 %@{
645   c4 c c c
646   d d d d
647 %@}
648 @}
649 @end example
650
651 Jetzt beginnen Sie damit, langsam Stück für Stück der 
652 Bassstimme wieder hineinzunehmen, bis Sie die problematische 
653 Zeile finden.
654
655 Eine andere nützliche Technik zur Problemlösung ist es, 
656 @ruser{Minimal examples} zu konstruieren.
657
658
659 @node Minimal examples
660 @section Minimal examples
661
662 Ein Minimalbeispiel ist eine Beispieldatei, die so klein wie 
663 möglich ist. Diese Beispiele sind sehr viel einfacher zu 
664 verstehen als die langen Originaldateien. Minimalbeispiele 
665 werden benutzt, um
666
667
668 @itemize
669 @item Fehlerberichte zu erstellen,
670 @item eine Hilfeanfrage an die E-Mail-Liste zu schicken,
671 @item Ein Beispiel zur @uref{http://lsr@/.dsi@/.unimi@/.it/,LilyPond
672 Schnipselsammlung}hinzuzufügen.
673 @end itemize
674
675 Um ein Beispiel zu konstruieren, das so klein wie möglich ist, 
676 gibt es eine einfache Regel: Alles nicht Notwendige entfernen. 
677 Wenn Sie unnötige Teile einer Datei entfernen, bietet es sich an, 
678 sie auszukommentieren und nicht gleich zu löschen. Auf diese Weise 
679 können Sie eine Zeile leicht wieder mit aufnehmen, sollten Sie sie 
680 doch brauchen, anstatt sie von Anfang an neu zu schreiben.
681
682 Es gibt zwei Ausnahmen dieser @qq{So klein wie möglich}-Regel:
683
684 @itemize
685 @item Fügen Sie immer einen @code{\version}Befehl ein.
686 @item Wenn es möglich ist, benutzen Sie @code{\paper@{ ragged-right = ##t @}}
687 am Beginn des Beispiels.
688 @end itemize
689
690 Der Sinn der Minimalbeispiele ist, dass sie einfach lesbar sind:
691
692 @itemize
693 @item Vermeiden Sie es, komplizierte Noten, Schlüssel oder Taktangaben 
694 zu verwenden, es sei denn, Sie wollen genau an diesen Elementen 
695 etwas demonstrieren.
696 @item Benutzen Sie keine @code{\override}-Befehle, wenn sie nicht der 
697 Zweck des Beispieles sind.
698 @end itemize
699
700