1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
4 Translation of GIT committish: 4f7427e7a314a71bde16559247885544256b8213
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..
13 @c Translators: Reinhold Kainhofer, Till Paala
14 @c Translation checkers: Till Paala
16 @node lilypond starten
17 @chapter @command{lilypond} starten
18 @translationof Running lilypond
20 Dieses Kapitel behandelt die technischen Details, wie Lilypond ausgeführt werden kann.
24 * Übliche Programmbenutzung::
25 * Benutzung auf der Kommandozeile::
27 * Häufige Fehlermeldungen::
30 @node Übliche Programmbenutzung
31 @section Übliche Programmbenutzung
32 @translationof Normal usage
34 Die meisten Benutzer führen LilyPond von einer graphischen Benutzeroberfläche
35 aus. Siehe @rlearning{Übung}, falls Sie dies nicht bereits getan haben. Wenn
36 Sie einen alternativen Editor für Ihre LilyPond-Dateien verwenden, lesen Sie
37 bitte die Dokumentation dieses Editors.
40 @node Benutzung auf der Kommandozeile
41 @section Benutzung auf der Kommandozeile
42 @translationof Command-line usage
44 Dieser Abschnitt enthält zusätzliche Informationen, wie Sie LilyPond
45 von der Kommandozeile ausführen können. Dies kann erforderlich sein,
46 um etwa zusätzliche Optionen an das Programm zu übergeben. Außerdem
47 sind einige Zusatzprogramme (wie etwa @code{midi2ly}) nur von der
48 Kommandozeile verfügbar.
50 Unter @q{Kommandozeile} verstehen wir die Kommandozeile des jeweiligen
51 Betriebssystems. Windows Benutzern ist sie vielleicht eher unter den
52 englischen Begriffen @q{DOS shell} oder @q{command shell} bekannt.
53 MacOS@tie{}X Benutzer kennen sie eher unter @q{Terminal} oder @q{Konsole}.
54 Einige zusätzliche Einrichtungsarbeiten werden unter MacOS@tie{}X,
57 Wie die Kommandozeile im jeweiligen Betriebssystem benutzt werden kann,
58 soll in diesem Handbuch nicht näher beschrieben werden. Sehen Sie bitte
59 im Handbuch Ihres Betriebssystems nach oder informieren Sie sich im
60 Internet, wenn Sie mit der Kommandozeile nicht vertraut sind.
65 * Optionen von lilypond auf der Kommandozeile::
66 * Umgebungsvariablen::
67 * LilyPond in chroot-Kerker::
70 @node lilypond aufrufen
71 @subsection @command{lilypond} aufrufen
72 @translationof Invoking lilypond
74 @cindex @command{lilypond} aufrufen
75 @cindex Kommandozeilen-Optionen für @command{lilypond}
76 @cindex Optionen an der Kommandozeile
78 Das @command{lilypond} Programm kann folgendermaßen von der Kommandozeile
82 lilypond [@var{Option}]@dots{} @var{Dateiname}@dots{}
86 Wird ein @file{Dateiname} ohne Erweiterung angegeben, so wird @file{.ly} als
87 Standarderweiterung für LilyPond-Dateien benutzt. Um Daten von
88 @code{stdin} einzulesen, benutzen Sie einfach einen Bindestrich (@code{-})
91 Wenn Lilypond die Datei @file{Dateiname.ly} verarbeitet, werden daraus
92 die Dateien @file{Dateiname.ps} und @file{Dateiname.pdf} erzeugt.
93 Es können an @code{lilypond} auch mehrere @file{.ly} Dateien übergeben
94 werden, die dann einzeln und voneinander unabhängig abgearbeitet
95 werden.@footnote{Der Zustand von GUILE wird allerdings nicht nach
96 jeder Datei zurückgesetzt, sodass Achtung geboten ist, wenn in einer
97 Datei globale Änderungen von Scheme aus durchgeführt werden.}
99 Falls @file{Dateiname.ly} mehr als eine @code{\book}-Umgebung enthält,
100 werden die weiteren Stücke in durchnummerierte Dateien der Form
101 @file{Dateiname-1.pdf} ausgegeben. Zusätzlich wird der Wert der
102 Variable @code{output-suffix} zwischen den ursprünglichen Dateinamen
103 und der Zahl eingefügt. Eine Lilypond-Datei @var{Dateiname.ly} mit dem Inhalt
106 #(define output-suffix "Geige")
108 #(define output-suffix "Cello")
113 erzeugt daher die Dateien @var{Dateiname}@file{-Geige.pdf} und
114 @var{Dateiname}@file{-Cello-1.pdf}.
118 @node Optionen von lilypond auf der Kommandozeile
119 @subsection Optionen auf der Kommandozeile für @command{lilypond}
120 @translationof Command line options for lilypond
122 Die folgenden Kommandozeilenoptionen werden von @command{lilypond} unterstützt:
124 @cindex @command{lilypond} auf der Kommandozeile
125 @cindex Kommandozeile, @command{lilypond} aufrufen
126 @cindex Optionen, Kommandozeile
127 @cindex Terminal, @command{lilypond} aufrufen
131 @item -e,--evaluate=@var{expr}
132 Wertet den Scheme-Ausdruck @var{expr} aus, bevor die @file{.ly} Dateien
133 gelesen und interpretiert werden.
134 Die @code{-e} Option kann auch mehrfach angegeben werden, die Ausdrücke
135 werden nacheinander ausgewertet.
137 Da der Ausdruck im @code{guile-user} Modul ausgewertet wird, ist bei der
138 Definitionen innerhalb von @var{expr} folgendes Vorgehen nötig. An der
139 Kommandozeile wird z.B. @code{a} im @code{guile-user} Modul definiert:
142 lilypond -e '(define-public a 42)'
146 Am Beginn der @file{.ly}-Datei muss dann das @code{guile-user} Modul noch geladen werden, bevor die Definition von @var{a} verfügbar ist:
149 #(use-modules (guile-user))
153 @item -f,--format=@var{Format}
154 Bestimmt das Ausgabeformat. Mögliche Werte von @var{Format} sind
155 @code{svg}, @code{ps}, @code{pdf} und @code{png}.
157 Beispiel: @code{lilypond -fpng @var{Dateiname}.ly}
161 @item -d,--define-default=@var{Variable}=@var{Wert}
162 Damit wird die interne Programmoption @var{Variable} auf den Scheme-Wert
163 @var{Wert} gesetzt. Wird kein @var{Wert} angegeben, so wird @var{#t} benutzt.
164 Um eine Option auszuschalten, kann der Präfix @code{no-} dem Namen
165 @var{Variable} der Variable vorangestellt werden. So ist etwa
167 @cindex Point and Click, Kommandozeile
176 -dpoint-and-click='#f'
179 Hier sind ein paar interessante Optionen:
181 @cindex Hilfe, Kommandozeile
185 Die Ausführung von @code{lilypond -dhelp} zeigt alle verfügbaren @code{-d}
188 @cindex Papierformat, Kommandozeile
191 Setzt das Standard-Papierformat,
193 -dpaper-size=\"letter\"
197 Die Zeichenkette, die das Format angibt, muss in Anführungszeichen mit Backslash
198 ( @code{\"} ) stehen.
200 @cindex sicher, Kommandozeile
201 @cindex safe, Kommandozeile
204 Vertraut der @code{.ly} Datei nicht.
206 Wenn LilyPond über einen Webserver verfügbar gemacht wird, @b{MUSS} unbedingt
207 eine die Optionen @code{--safe} oder @code{--jail} angegeben werden.
208 Die @code{--safe} Option verhindert, dass in der .ly-Datei angegebener
209 Scheme-Code das System gefährden kann, wie etwa in folgendem Beispiel:
215 c4^#(ly:export (ly:gulp-file "/etc/passwd"))
220 Mit der @code{-dsafe} Option werden alle Scheme-Ausdrücke einem speziellen
221 sicheren Modus ausgewertet. Dieser Modus ist vom GUILE @file{safe-r5rs} Modul
222 abgeleitet und fügt noch zahlreiche weitere erlaubte Funktionen der
223 LilyPond Programm-Schnittstelle hinzu. Diese Funktionen sind in
224 @file{scm/@/safe@/-lily@/.scm} angegeben.
226 Zusätzliche verbietet der sichere Modus auch @code{\include} Befehle.
228 Im sicheren Modus ist es nicht möglich, LilyPond-Variablen nach Scheme
231 @code{-dsafe} erkennt jedoch @emph{KEINE} Überbeanspruchung der verfügbaren
232 Ressourcen. In diesem Modus ist es also trotzdem möglich, dass LilyPond in einer
233 Endlosschleife hängt, z.B. wenn zyklische Datenstrukturen an das Backend
234 übergeben werden. Wenn LilyPond also auf einem öffentlich zugänglichen
235 Webserver verfügbar gemacht wird, sollte der Prozess sowohl in der CPU-
236 als auch in der Speichernutzung limitiert werden.
238 Der sichere Modus verhindert auch, dass zahlreiche nützliche
239 Musikfragmente von LilyPond verarbeitet werden. Die @code{--jail} Option ist
240 eine sicherere Alternative, benötigt allerdings auch mehr Aufwand zur
243 @cindex Ausgabeformat, Definition von
246 Gibt an, welches Ausgabeformat das LilyPond Backend benutzt. Mögliche Werte
247 für diese Option sind:
251 PostScript-Ausgabeformat.
253 @cindex PostScript Ausgabeformat
255 Postscript-Dateien enthalten auch TTF-, Type1- und OTF-Schriften. Allerdings
256 wird die gesamte Schriftart eingefügt und nicht nur die benötigten Zeichen.
257 Vor allem wenn nicht-westliche Zeichensätze benutzt werden, kann dies zu sehr
258 großen Dateien führen.
260 @cindex PostScript Ausgabeformat
261 @cindex EPS (encapsulated PostScript)
264 Erzeugt @q{encapsulated PostScript} (EPS). Jede Seite (oder jedes System) wird
265 als eigene @file{EPS}-Datei ausgegeben, inklusive Schriftarten. Außerdem wird
266 eine Datei mit allen Seiten (bzw. Systemen) und Schriftarten erzeugt.
268 Dies ist die Standardeinstellung von @command{lilypond-book}.
270 @cindex SVG (scalable vector graphics)
271 @cindex Vektorgraphik (SVG)
275 SVG-Ausgabe (Scalable Vector Graphics).
277 Hiermit wird eine einzelne SVG-Datei ohne eingebundene Schriften
278 für jede Seite der Partitur erstellt. Es wird empfohlen, Century
279 Schoolbook-Schriftarten zu installieren, die auch in der LilyPond-Installation
280 enthalten sind, um optimales Rendern zu erhalten. Unter UNIX können
281 diese Schriftarten einfach aus dem LilyPond-Verzeichnis (normalerweise
282 @file{/usr/share/lilypond/VERSION/fonts/otf/}) nach @file{~/.fonts}
283 kopiert werden. Die SVG-Ausgabe sollte mit allen SVG-Editoren oder
284 Betrachtungsprogrammen kompatibel sein.
289 gibt die rohen Scheme-basierenden Zeichenbefehle aus, wie sie intern von
290 LilyPond benutzt werden.
295 Keine Partitur wird ausgegeben, hat gleichen Effekt wie @code{-dno-print-pages}.
299 Beispiel: @code{lilypond -dbackend=svg @var{Dateiname}.ly}
304 Erzeugt eine Ausgabedatei, die nur die Titelzeilen und das erste System
305 enthält. Wenn @code{\bookpart}-Umgebungen benutzt werden, erscheinen die
306 Titel und ersten Systeme jedes @code{\bookpart}-Abschnitts in der Datei.
307 Die Backends @code{ps}, @code{eps} und @code{svg} unterstützen diese Option.
310 Erzeugt vollständige Seiten (Standardeinstellung). @code{-dno-print-pages}
311 ist in Verbindung mit @code{-dpreview} nützlich.
318 Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen.
320 @item -H,--header=@var{FELD}
321 Gibt den Inhalt eines Feldes aus dem @code{\header}-Block in die Datei
322 @file{Dateiname.@var{FELD}} aus.
324 @item --include, -I=@var{Verzeichnis}
325 Fügt @var{Verzeichnis} zur Liste der Suchpfade hinzu.
329 @item -i,--init=@var{Initialisierungsdatei}
330 Benutzt @var{Initialisierungsdatei} zur gesamten Programminitialisierung. Der
331 Standardwert ist @file{init.ly}.
333 @item -o,--output=@var{DATEI}
334 Schreibt das Ergebnis der Verarbeitung mit LilyPond in die Ausgabedatei
335 @var{DATEI}. Die entsprechende Dateinamenserweiterung wird angehängt (z.B.
336 @code{.pdf} für pdf).
338 @cindex PostScript-Ausgabe
344 @cindex Portable Network Graphics (PNG)
347 Erzeugt eine Grafik-Datei im PNG-Format von jeder Seite. Diese Option
348 impliziert auch @code{--ps}. Die Auflösung in DPI der Grafik kann festgelegt
355 @cindex Portable Document Format (PDF)
358 Erzeugt PDF-Dateien. Dies impliziert @code{--ps}.
360 @item -j,--jail=@var{Benutzer},@var{Gruppe},@var{Jail-Verzeichnis},@var{Arbeitsverzeichnis}
361 Führt @command{lilypond} in einem chroot-Jail aus.
363 Die @code{--jail} Option ist eine flexiblere Alternative zu @code{--safe}, wenn
364 LilyPond über das Internet verfügbar gemacht wird oder LilyPond-Quelldateien
365 von Dritten automatisch verarbeitet werden.
367 Sie funktioniert dergestalt, dass das Wurzelverzeichnis von
368 @command{lilypond} auf @var{Jail-Verzeichnis} gesetzt wird, bevor die
369 tatsächliche Kompilierung der .ly-Datei beginnt. Der Benutzer und die Gruppe
370 werden auf die angegebenen Werte gesetzt und das aktuelle Arbeitsverzeichnis
371 wird ebenfalls auf den angegebenen Wert @var{Arbeitsverzeichnis} gesetzt.
372 Diese Einstellungen garantieren (zumindest in der Theorie), dass es nicht
373 möglich ist, aus dem Jail auszubrechen. Damit @code{--jail} funktioniert, muss
374 @command{lilypond} allerdings als root ausgeführt werden, was normalerweise
375 auf sichere Art mit dem Kommando @command{sudo} erreicht werden kann.
377 Das Jail-Verzeichnis zu erstellen ist etwas heikel, da LilyPond alle zur
378 Ausführung nötigen Bibliotheken und Dateien @emph{innerhalb des
379 Jail-Verzeichnisses} finden muss. Ein typisches Setup besteht aus folgenden
383 @item Erstellung eines getrennten Dateisystems
384 Ein eigenes Dateisystem muss für LilyPond erstellt werden, sodass es mit
385 sicheren Einstellungen wie @code{noexec}, @code{nodev} und @code{nosuid}
386 eingebunden werden kann. Damit ist es unmöglich, Programme von diesem
387 Dateisystem auszuführen oder direkt auf eine Hardware-Schnittstelle
388 zuzugreifen. Wenn Sie keine eigene Partition erstellen möchten, können Sie
389 auch eine Datei der entsprechenden Größe erstellen und sie als @q{loop}-Gerät
390 einbinden. Ein getrenntes Dateisystem garantiert auch, dass LilyPond nicht
391 mehr Festplattenspeicher benutzt als erlaubt.
393 @item Erstellung eines eigenen Benutzerkontos
394 Es sollte ein eigener Benutzer und eine eigene Gruppe (z. B.
395 @code{lily}/@code{lily}) mit geringen Rechten für die Ausführung von LilyPond
396 innerhalb des Jails benutzt werden. Nur ein einziges Verzeichnis des Jails sollte
397 für den Benutzer schreibbar sein und als @var{Arbeitsverzeichnis} an
398 @code{lilypond} übergeben werden.
400 @item Einrichtung des Jails
401 LilyPond muss zahlreiche Dateien für die Ausführung einlesen. All diese
402 Dateien müssen in das Jail-Verzeichnis kopiert werden (mit denselben Pfaden
403 wie im tatsächlichen Wurzel-Dateisystem). Die gesamte LilyPond-Installation
404 (typischerweise @file{/usr/share/lilypond}) sollte kopiert werden.
406 Falls Probleme auftreten, ist es am einfachsten, Lilypond mittels
407 @command{strace} zu starten, wodurch Sie relativ leicht feststellen können,
408 welche Dateien im Jail noch fehlen.
410 @item Ausführung von LilyPond
411 In einem mit @code{noexec} eingebundenen Jail ist es nicht möglich, externe
412 Programme auszuführen. Daher muss LilyPond auf eine Art gestartet werden,
413 die keine weitere Ausführung von Programmen benötigt. Wie bereits erwähnt
414 muss LilyPond mit Administrator-Rechten gestartet werden (die es allerdings
415 sofort wieder abgibt), beispielsweise mittels @command{sudo}. Außerdem
416 ist es eine gute Idee, die LilyPond zur Verfügung stehende CPU-Zeit zu
417 limitieren (z. B. mit @command{ulimit -t}) und -- falls das Betriebssystem
418 dies unterstützt -- auch den zur Verfügung stehenden Hauptspeicher.
423 Gibt die Versionsnummer aus.
426 Gibt ausführliche informative Meldungen aus: Zeigt die vollen Dateipfade
427 aller gelesenen Dateien sowie Informationen über die Laufzeit.
430 Zeigt die Garantiebedingungen an, unter denen GNU LilyPond steht. (Es besteht
431 @strong{KEINERLEI GARANTIE}!)
435 @node Umgebungsvariablen
436 @subsection Umgebungsvariablen
437 @translationof Environment variables
440 @cindex LILYPOND_DATADIR
441 @cindex Variablen, Umgebungs-
442 @cindex Umgebungsvariablen
444 @command{lilypond} erkennt und benützt die folgenden Umgebungsvariablen:
446 @item LILYPOND_DATADIR
447 Diese Variable gibt das Verzeichnis an, wo Lilypond seine eigenen Dateien,
448 Meldungen und Übersetzungen finden kann. Dieses Verzeichnis sollte
449 Unterverzeichnisse @file{ly/}, @file{ps/}, @file{tex/}, etc. beinhalten.
452 Gibt die Sprache an, in der Warnungen und Fehlermeldungen ausgegeben werden.
454 @item LILYPOND_GC_YIELD
455 Mit dieser Variable (mit Werten zwischen 0 und 100) kann die Feinabstimmung
456 zwischen dem Bedarf an Hauptspeicher und Rechenleistung bei der Ausführung
457 von LilyPond durchgeführt werden. Bei höheren Werten benutzt LilyPond
458 mehr Hauptspeicher, benötigt aber weniger Prozessor-Leistung. Bei
459 niedrigeren Werten wird mehr Prozessor-Zeit, dafür weniger Hauptspeicher
460 benötigt. Voreinstellung ist ein Wert von @code{70}.
466 @node LilyPond in chroot-Kerker
467 @unnumberedsubsec LilyPond in chroot-Kerker
468 @translationof LilyPond in chroot jail
470 Einen Server einzurichten, der LilyPond in einem chroot-Kerker bedient, ist
471 recht kompliziert. Die einzelnen Schritten finden sich unten aufgeliestet.
472 Beispiele sind für Ubuntu Linux und erfordern evtl. die Benutzung von
473 @code{sudo} an den entsprechenden Stellen.
477 @item Installieren Sie die nötigen Pakete: LilyPond, GhostScript und ImageMagick.
479 @item Erstellen Sie einen neuen Benutzer mit dem Namen @code{lily}:
486 Hierdurch wird auch eine Gruppe @code{lily} und ein Heimat-Ordner
487 @code{/home/lily} für den neuen Benutzer erstellt.
489 @item Im Heimat-Ordner des Benutzers @code{lily} erstellen Sie eine Datei, die als
490 eigenes Dateisystem eingesetzt wird:
493 dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000
497 In diesem Beispiel wird eine 200-MB-Datei als Kerker-Dateisystem erstellt.
499 @item Erstellen Sie ein loop device, erstellen Sie ein Dateisystem und
500 mounten Sie es, dann erstellen Sie dort einen Ordner, in dem der Benutzer
501 @code{lily} Schreibrechte hat:
505 losetup /dev/loop0 /home/lily/loopfile
506 mkfs -t ext3 /dev/loop0 200000
507 mount -t ext3 /dev/loop0 /mnt/lilyloop
508 mkdir /mnt/lilyloop/lilyhome
509 chown lily /mnt/lilyloop/lilyhome
512 @item In der Konfiguration des Servers ist der Kerker (JAIL) @code{/mnt/lilyloop}
513 und das Verzeichnis (DIR) @code{/lilyhome}.
515 @item Erstellen Sie einen großen Verzeichnisbaum in dem Kerker, indem Sie die
516 notwendigen Dateien dorthin kopiert, wie das Beispielskript unten zeigt.
518 Sie könne @code{sed} benutzen, um die notwendigen Kopierbefehle für ein
519 bestimmtes Programm zu erstellen:
522 for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/; do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done
527 @subheading Beispiel-Skript für 32-bit Ubuntu 8.04
535 loopdevice=/dev/loop0
536 jaildir=/mnt/lilyloop
537 # the prefix (without the leading slash!)
539 # the directory where lilypond is installed on the system
540 lilydir=/$lilyprefix/lilypond/
542 userhome=$home/$username
543 loopfile=$userhome/loopfile
545 dd if=/dev/zero of=$loopfile bs=1k count=200000
547 losetup $loopdevice $loopfile
548 mkfs -t ext3 $loopdevice 200000
549 mount -t ext3 $loopdevice $jaildir
550 mkdir $jaildir/lilyhome
551 chown $username $jaildir/lilyhome
554 mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp
557 cp -r -L $lilydir $lilyprefix
558 cp -L /bin/sh /bin/rm bin
559 cp -L /usr/bin/convert /usr/bin/gs usr/bin
560 cp -L /usr/share/fonts/truetype usr/share/fonts
562 # Now the library copying magic
563 for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh" "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done | sh -s
565 # The shared files for ghostscript...
566 cp -L -r /usr/share/ghostscript usr/share
567 # The shared files for ImageMagick
568 cp -L -r /usr/lib/ImageMagick* usr/lib
570 ### Now, assuming that you have test.ly in /mnt/lilyloop/lilyhome, you should be able to run:
571 ### Note that /$lilyprefix/bin/lilypond is a script, which sets the LD_LIBRARY_PATH - this is crucial
572 /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly
576 @node Fehlermeldungen
577 @section Fehlermeldungen
578 @translationof Error messages
580 @cindex error messages
581 @cindex Fehlermeldungen
583 Während der Verarbeitung einer Dateien können diverse Meldungen an der
584 Kommandozeile auftreten:
588 @item Warnung (Warning)
590 Irgendetwas ist verdächtig. Wenn Sie etwas Ungewöhnliches in Ihrer
591 Datei durchführen, dann werden Sie die Meldung verstehen und können
592 sie gegebenenfalls ignorieren. Im Normalfall jedoch bedeutet eine
593 Warnung, dass mit Ihrer Datei etwas nicht stimmt, LilyPond jedoch
594 trotzdem versucht, die Datei soweit wie möglich korrekt zu übersetzen.
598 Irgendetwas stimmt definitiv nicht. Der aktuelle Bearbeitungsschritt
599 (Einlesen, Interpretieren oder Formatieren der Datei) wird noch fertig
600 ausgeführt, danach bricht die Bearbeitung aber ab.
602 @item Fataler Fehler (Fatal error)
603 @cindex Fataler Fehler
604 Irgendetwas stimmt definitiv nicht und LilyPond kann nicht weiter
605 ausgeführt werden. Dies ist nur sehr selten der Fall, meist sind
606 die Schriftarten nicht korrekt installiert.
608 @item Scheme Fehler (Scheme error)
609 @cindex Fehlerprotokoll, Scheme
610 @cindex Scheme Fehler
611 Fehler, die während der Ausführung von Scheme-Code auftreten, werden
612 vom Scheme-Interpreter aufgefangen und an der Kommandozeile ausgegeben.
613 Wenn Sie LilyPond mit der @code{--verbose} Option (auch @code{-V})
614 ausführen, wird der sogenannte @q{Call trace} ausgegeben, der die
615 aufgerufenen Funktionen zur Zeit des Fehlers angibt.
617 @item Programmierfehler (Programming error)
618 @cindex Programmierfehler
619 Eine interne Inkonsistenz ist aufgetreten. Diese Fehlermeldungen
620 sollen den Programmierern die Fehlersuche erleichtern und
621 können meistens einfach ignoriert werden. In manchen Fällen werden
622 so viele Meldungen ausgegeben, dass die Lesbarkeit der restliche
623 Ausgabe davon beeinträchtigt wird.
625 @item Abgebrochen (core dumped)
626 Dies bezeichnet einen ernsten Programmierfehler, der das Programm
627 zum Absturz gebracht hat. Solche Fehler werden als kritisch angesehen.
628 Falls daher einer auftritt, senden Sie bitte einen Bug-Report!
631 @cindex Fehlermeldung, Format
632 @cindex Form der Fehlermeldungen
633 Wenn Warnungen oder Fehlermeldungen mit einer konkreten Stelle in der
634 Eingabedatei verknüpft werden können, dann hat die Meldung die folgende
638 @var{Dateiname}:@var{Zeile}:@var{Spalte}: @var{Meldung}
639 @var{Fehlerhafte Eingabezeile}
642 Ein Zeilenumbruch wird in der fehlerhaften Zeile an jener Stelle eingefügt,
643 wo der Fehler aufgetreten ist. Zum Beispiel
646 test.ly:2:19: Fehler: keine gültige Dauer: 5
651 Diese Stellen sind LilyPonds Vermutung, wo die Warnung oder der Fehler
652 aufgetreten ist, allerdings treten Warnungen und Fehler ja gerade in
653 unerwarteten Fällen auf. Manchmal kann Lilypond auch eine fehlerhafte
654 Stelle zwar noch problemlos verarbeiten, ein paar Zeilen später wirkt
655 sich der Fehler aber dann doch noch aus. In solchen Fällen, wo Sie in
656 der angegebenen Zeile keinen Fehler erkennen, sollten Sie auch die Zeilen
657 oberhalb der angegebenen Stelle genauer unter die Lupe nehmen.
659 Mehr Information darüber findet sich in @ref{Häufige Fehlermeldungen}.
663 @node Häufige Fehlermeldungen
664 @section Häufige Fehlermeldungen
665 @translationof Common errors
667 Die Fehlermeldungen, die unten beschrieben werden, treten of auf,
668 es ist jedoch nicht immer einfach, die Urache zu finden. Wenn
669 der Fehler einmal verstanden ist, kann er einfach behoben werden.
673 * Noten laufen aus der Seite heraus::
674 * Ein zusätzliches System erscheint::
675 * Offensichtlicher Fehler in ../ly/init.ly::
676 * Fehlermeldung Ungebundene Variable %::
677 * Fehlermeldung FT_Get_Glyph_Name::
680 @node Noten laufen aus der Seite heraus
681 @unnumberedsubsec Noten laufen aus der Seite heraus
682 @translationof Music runs off the page
684 Noten, die rechts aus der Seite herauslaufen oder sehr komprimiert
685 aussehen, liegen in fast allen Fällen an einer falschen Notendauer
686 einer Note, die dazu fürt, dass die letzte Note im Takt über die
687 Taktgrenze hinwegdauert. Es ist nicht falsch, wenn die letzte
688 Note eines Taktes über den Takt hinausdauert, weil einfach angenommen
689 wird, dass sie im nächsten Takt fortgesetzt wird. Aber wenn eine
690 längere Sequenz dieser überhängenden Noten auftritt, können die
691 Noten sehr gedrängt aussehen oder über den Seitenrand fließen, weil
692 die automatische Zeilenumbruchsfunktion einen Umbruch nur am Ende
693 eines vollständigen Taktes einfügen kann, also wenn alle Noten
694 zum Ende des Taktstriches auch wirklich aufhören.
696 @warning{Eine falsche Dauer kann dazu führen, dass Zeilenumbrüche
697 nicht möglich sein und die Zeile entweder sehr gedrängt dargestllt
698 wird oder über den Seitenrand fließt.}
700 Die falsche Dauer kann einfach gefunden werden, wenn Taktstrichüberprüfung
701 eingesetzt wird, siehe @ruser{Takt- und Taktzahlüberprüfung}.
703 If you actually intend to have a series of such carry-over measures
704 you will need to insert an invisible bar line where you want the
705 line to break. For details, see @ruser{Taktstriche}.
708 @node Ein zusätzliches System erscheint
709 @unnumberedsubsec Ein zusätzliches System erscheint
710 @translationof An extra staff appears
712 Wenn Kontext nicht explizit mit @code{\new} oder
713 @code{\context} erstellt werden, werden sie vom Programm erstellt,
714 sobald ein Befehl angetroffen wird, der im aktuellen Kontext nicht
715 funktioniert. In einfachen Partituren ist diese automatische
716 Erstellung sehr nützlich und die meisten Beispiele der LilyPond-Handbücher
717 benutzen diese Schreiberleicherterung. Manchmal jedoch kann es
718 vorkommen, dass durch die automatische Erstellung von Systemen aufeinmal
719 unerwartete Notensysteme erstellt werden. Beispielsweise könnte man
720 annehmen, dass folgendes Beispiel alle Notenköpfe in dem Notensystem
721 rot macht, aber als Resultat hat man zwei Systeme, während die
722 Notenköpfe immernoch schwarz im unteren System erscheinen.
724 @lilypond[quote,verbatim,relative=2]
725 \override Staff.NoteHead #'color = #red
729 Das liegt daran, dass kein @code{Staff}-Kontext existiert, wenn
730 der @code{\override}-Befehl verarbeitet wird, sodass ein System
731 für diesen Befehl erstellt wird. Dann aber erstellt @code{\new Staff}
732 noch ein zusätzliches System, wo die Noten gesetzt werden. Die
733 richtige Schreibweise wäre:
735 @lilypond[quote,verbatim,relative=2]
737 \override Staff.NoteHead #'color = #red
742 Ein zweites Beispiel zeigt, dass ein @code{\relative}-Befehl innerhalb
743 von @code{\repeat} zwei Systeme erstellt, wobei der zweite etwas verschoben
744 ist. Das liegt daran, dass @code{\repeat} zwei @code{\relative}-Umgebungen
745 erstellt, die jede implizit einen @code{Staff}- und @code{Voice}-Kontext
748 @lilypond[quote,verbatim]
750 \relative c' { c4 d e f }
754 Indem man die @code{Voice}-Kontexte explizit erstellt, kann das Problem
757 @lilypond[quote,verbatim]
760 \relative c' { c4 d e f }
766 @node Offensichtlicher Fehler in ../ly/init.ly
767 @unnumberedsubsec Offensichtlicher Fehler in ../ly/init.ly
768 @translationof Apparent error in @code{../ly/init.ly}
770 Verschiedene seltsame Fehlermeldungen können über Syntax-Fehler in
771 @code{../ly/init.ly} auftauchen, wenn die Eingabedatei nicht richtig
772 formuliert ist, wenn sie etwa nicht richtig passende Klammerpaare
773 oder Anführungszeichen enthält.
775 Der üblichste Fehler ist das Fehlen einer geschweiften Klammer
776 (@code{@}}) am Ende der @code{score}-Umbgebung. Die Lösung ist hier
777 klar: überprüfen Sie, ob die @code{score}-Umgebung richtig beendet
778 wurde. Die richtige Struktur einer Eingabedatei wird beschrieben
779 in @rlearning{Wie eine LilyPond-Eingabe-Datei funktioniert}.
780 Ein Editor, der die Klammerpaare automatisch anzeigt, ist sehr
781 hilfreich, um derartige Fehler zu vermeiden.
783 Eine weitere übliche Fehlerquelle ist kein Leerzeichen zwischen der
784 letzten Silbe einer @code{lyrics}-Umgebung und der schließenden
785 Klammer (@code{@}}). Ohne diese Trennung wird die Klammer als
786 Teil der Silbe gewertet. Es bietet sich immer an, Leerzeichen vor
787 und hinter @emph{jede} Klammer zu setzen. Wie wichtig das ist, wenn
788 Gesangstext eingesetzt wird, siehe @ruser{Was ist Gesangtext}.
790 Diese Fehlermeldung kann auch mit einem fehlenden schließenden Anführungszeichen
791 (@code{"}) auftreten. In diesem Fall sollte die begleitende Fehlermeldung
792 eine Zeilenzahl angeben, die dicht am Fehler liegt. Die nicht paarigen
793 Anführungszeichen sind meistens ein oder zwei Zeilen darüber.
796 @node Fehlermeldung Ungebundene Variable %
797 @unnumberedsubsec Fehlermeldung Ungebundene Variable %
798 @translationof Error message Unbound variable %
800 Diese Fehlermeldung erscheint am Ende der Kommandozeilenausgabe oder in der
801 Log-Datei mit einer Meldung @qq{GUILE signalled an error ...}
802 jedes Mal, wenn eine Scheme-Routine aufgerufen wird, die
803 (falscherweise) ein @emph{LilyPond}-Kommentar und kein
804 @emph{Scheme}-Kommentar enthält.
806 LilyPond-Kommentare befginnen mit dem Prozent-Zeichen (@code{%}) und
807 dürfen nicht in Scheme-Routinen benutzt werden. Scheme-Kommentare beginnen
808 mit einem Semikolon (@code{;}).
810 @node Fehlermeldung FT_Get_Glyph_Name
811 @unnumberedsubsec Fehlermeldung FT_Get_Glyph_Name
812 @translationof Error message FT_Get_Glyph_Name
814 Diese Fehlermeldung erscheint in der Kommandozeilenausgabe, wenn die
815 Datei ein Zeichen enthält, das nicht zu ASCII gehört und die Datei
816 nicht in UTF-8-Kodierung gespeichert wurd. Sie auch @ruser{Zeichenkodierung}.