1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
4 Translation of GIT committish: e5a609e373eae846857f9a6d70a402a3d42b7d94
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 * Grundlegende Optionen auf der Kommandozeile für LilyPond::
66 * Fortgeschrittene Optionen auf der Kommandozeile für LilyPond::
67 * Umgebungsvariablen::
68 * LilyPond in chroot-Kerker::
71 @node lilypond aufrufen
72 @unnumberedsubsec @command{lilypond} aufrufen
73 @translationof Invoking lilypond
75 @cindex @command{lilypond} aufrufen
76 @cindex Kommandozeilen-Optionen für @command{lilypond}
77 @cindex Optionen an der Kommandozeile
79 Das @command{lilypond} Programm kann folgendermaßen von der Kommandozeile
83 lilypond [@var{Option}]@dots{} @var{Dateiname}@dots{}
87 Wird ein @file{Dateiname} ohne Erweiterung angegeben, so wird @file{.ly} als
88 Standarderweiterung für LilyPond-Dateien benutzt. Um Daten von
89 @code{stdin} einzulesen, benutzen Sie einfach einen Bindestrich (@code{-})
92 Wenn Lilypond die Datei @file{Dateiname.ly} verarbeitet, werden daraus
93 die Dateien @file{Dateiname.ps} und @file{Dateiname.pdf} erzeugt.
94 Es können an @code{lilypond} auch mehrere @file{.ly} Dateien übergeben
95 werden, die dann einzeln und voneinander unabhängig abgearbeitet
96 werden.@footnote{Der Zustand von GUILE wird allerdings nicht nach
97 jeder Datei zurückgesetzt, sodass Achtung geboten ist, wenn in einer
98 Datei globale Änderungen von Scheme aus durchgeführt werden.}
100 Falls @file{Dateiname.ly} mehr als eine @code{\book}-Umgebung enthält,
101 werden die weiteren Stücke in durchnummerierte Dateien der Form
102 @file{Dateiname-1.pdf} ausgegeben. Zusätzlich wird der Wert der
103 Variable @code{output-suffix} zwischen den ursprünglichen Dateinamen
104 und der Zahl eingefügt. Eine Lilypond-Datei @file{Dateiname.ly} mit dem Inhalt
107 #(define output-suffix "Geige")
109 #(define output-suffix "Cello")
114 erzeugt daher die Dateien @var{Dateiname}@file{-Geige.pdf} und
115 @var{Dateiname}@file{-Cello-1.pdf}.
119 @unnumberedsubsubsec Häufige Kommandozeilenbefehle
121 Wenn Ihre Kommandozeile normale Weiterleitungen unterstützt, können
122 Sie es nützlich finden, mit folgenden Befehlen die Ausgabe der
123 Kommandozeile in eine Datei zu leiten:
128 @code{lilypond file.ly 1>stdout.log} um normale Ausgabe zu erhalten
130 @code{lilypond file.ly 2>stderr.log} um Fehlermeldungen zu erhalten
133 @code{lilypond file.ly &>all.log} um alle Meldungen zu erhalten
137 Wenden Sie sich an die Dokumentation für Ihre Kommandozeile, um
138 zu sehen, ob derartige Optionen unterstützt werden oder die Syntax
139 unterschiedlich ist. Beachten Sie, dass es sich hier um
140 reine Verwaltungsprogramme handelt, die nichts mit LilyPond zu tun
144 @node Grundlegende Optionen auf der Kommandozeile für LilyPond
145 @unnumberedsubsec Grundlegende Optionen auf der Kommandozeile für LilyPond
146 @translationof Basic command line options for LilyPond
148 Die folgenden Kommandozeilenoptionen werden von @command{lilypond} unterstützt:
150 @cindex @command{lilypond} auf der Kommandozeile
151 @cindex Kommandozeile, @command{lilypond} aufrufen
152 @cindex Optionen, Kommandozeile
153 @cindex Terminal, @command{lilypond} aufrufen
157 @item -d,--define-default=@var{Variable}=@var{Wert}
158 Siehe @ref{Fortgeschrittene Optionen auf der Kommandozeile für LilyPond}.
160 @cindex Scheme, Auswertung von Ausdrücken
161 @cindex Auswertung von Ausdrücken, Scheme
163 @item -e,--evaluate=@var{expr}
164 Wertet den Scheme-Ausdruck @var{expr} aus, bevor die @file{.ly} Dateien
165 gelesen und interpretiert werden.
166 Die @code{-e} Option kann auch mehrfach angegeben werden, die Ausdrücke
167 werden nacheinander ausgewertet.
169 Da der Ausdruck im @code{guile-user} Modul ausgewertet wird, ist bei der
170 Definitionen innerhalb von @var{expr} folgendes Vorgehen nötig. An der
171 Kommandozeile wird z.B. @code{a} im @code{guile-user} Modul definiert:
174 lilypond -e '(define-public a 42)'
178 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:
181 #(use-modules (guile-user))
184 @warning{Windows-Benutzer müssen doppelte anstelle der einfachen
185 Anführungsstriche einsetzen.}
187 @cindex Ausgabeformat
189 @item -f,--format=@var{Format}
190 Bestimmt das Ausgabeformat. Mögliche Werte von @var{Format} sind
191 @code{svg}, @code{ps}, @code{pdf} und @code{png}.
193 Beispiel: @code{lilypond -fpng @var{Dateiname}.ly}
196 Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen.
198 @item -H,--header=@var{FELD}
199 Gibt den Inhalt eines Feldes aus dem @code{\header}-Block in die Datei
200 @file{Dateiname.@var{FELD}} aus.
202 @item -i,--init=@var{Initialisierungsdatei}
203 Benutzt @var{Initialisierungsdatei} zur gesamten Programminitialisierung. Der
204 Standardwert ist @file{init.ly}.
206 @item -I, --include=@var{Verzeichnis}
207 Fügt @var{Verzeichnis} zur Liste der Suchpfade hinzu.
212 Mehrere -I-Optionen können angegeben werden. Die Suche beginnt mit dem
213 ersten definierten Verzeichnis und setzt in den weiteren Verzeichnissen
214 fort, wenn die gesuchte Datei nicht in dem Verzeichnis gefunden wird.
216 @cindex Kerker, Programm ausführen
217 @cindex Jail, Programm ausführen
219 @item -j,--jail=@var{Benutzer},@var{Gruppe},@var{Jail-Verzeichnis},@var{Arbeitsverzeichnis}
220 Führt @command{lilypond} in einem chroot-Jail aus.
222 Die @option{--jail} Option ist eine flexiblere Alternative zu @option{-dsafe}, wenn
223 LilyPond über das Internet verfügbar gemacht wird oder LilyPond Befehle ausführt,
224 die aus externe Quellen stammen (siehe @ref{Fortgeschrittene Optionen auf der Kommandozeile für LilyPond}).
226 Sie funktioniert dergestalt, dass das Wurzelverzeichnis von
227 @command{lilypond} auf @var{Jail-Verzeichnis} gesetzt wird, bevor die
228 tatsächliche Kompilierung der @file{.ly}-Datei beginnt. Der Benutzer und die Gruppe
229 werden auf die angegebenen Werte gesetzt und das aktuelle Arbeitsverzeichnis
230 wird ebenfalls auf den angegebenen Wert @var{Arbeitsverzeichnis} gesetzt.
231 Diese Einstellungen garantieren (zumindest in der Theorie), dass es nicht
232 möglich ist, aus dem Jail auszubrechen. Damit @option{--jail} funktioniert, muss
233 @command{lilypond} allerdings als root ausgeführt werden, was normalerweise
234 auf sichere Art mit dem Kommando @command{sudo} erreicht werden kann.
236 Das Jail-Verzeichnis zu erstellen ist etwas heikel, da LilyPond alle zur
237 Ausführung nötigen Bibliotheken und Dateien @emph{innerhalb des
238 Jail-Verzeichnisses} finden muss. Ein typisches Setup besteht aus folgenden
243 @item Erstellung eines getrennten Dateisystems
244 Ein eigenes Dateisystem muss für LilyPond erstellt werden, sodass es mit
245 sicheren Einstellungen wie @code{noexec}, @code{nodev} und @code{nosuid}
246 eingebunden werden kann. Damit ist es unmöglich, Programme von diesem
247 Dateisystem auszuführen oder direkt auf eine Hardware-Schnittstelle
248 zuzugreifen. Wenn Sie keine eigene Partition erstellen möchten, können Sie
249 auch eine Datei der entsprechenden Größe erstellen und sie als @q{loop}-Gerät
250 einbinden. Ein getrenntes Dateisystem garantiert auch, dass LilyPond nicht
251 mehr Festplattenspeicher benutzt als erlaubt.
253 @item Erstellung eines eigenen Benutzerkontos
254 Es sollte ein eigener Benutzer und eine eigene Gruppe (z. B.
255 @code{lily}/@code{lily}) mit geringen Rechten für die Ausführung von LilyPond
256 innerhalb des Jails benutzt werden. Nur ein einziges Verzeichnis des Jails sollte
257 für den Benutzer schreibbar sein und als @var{Arbeitsverzeichnis} an
258 @code{lilypond} übergeben werden.
260 @item Einrichtung des Jails
261 LilyPond muss zahlreiche Dateien für die Ausführung einlesen. All diese
262 Dateien müssen in das Jail-Verzeichnis kopiert werden (mit denselben Pfaden
263 wie im tatsächlichen Wurzel-Dateisystem). Die gesamte LilyPond-Installation
264 (typischerweise @file{/usr/share/lilypond}) sollte kopiert werden.
266 Falls Probleme auftreten, ist es am einfachsten, Lilypond mittels
267 @command{strace} zu starten, wodurch Sie relativ leicht feststellen können,
268 welche Dateien im Jail noch fehlen.
270 @item Ausführung von LilyPond
271 In einem mit @code{noexec} eingebundenen Jail ist es nicht möglich, externe
272 Programme auszuführen. Daher muss LilyPond auf eine Art gestartet werden,
273 die keine weitere Ausführung von Programmen benötigt. Wie bereits erwähnt
274 muss LilyPond mit Administrator-Rechten gestartet werden (die es allerdings
275 sofort wieder abgibt), beispielsweise mittels @command{sudo}. Außerdem
276 ist es eine gute Idee, die LilyPond zur Verfügung stehende CPU-Zeit zu
277 limitieren (z. B. mit @command{ulimit -t}) und -- falls das Betriebssystem
278 dies unterstützt -- auch den zur Verfügung stehenden Hauptspeicher. Siehe
279 auch @ref{LilyPond in chroot-Kerker}
284 @cindex Ausgabe, Ausführlichkeit
286 @item -l,--loglevel=@var{Logstufe}
287 Passt die Ausführlichkeit der Ausgabe auf der Kommandozeile entsprechend
288 @var{Logstufe} an. Mögliche Werte sind:
293 Keine Ausgabe, nicht einmal Fehlermeldungen.
296 Nur Fehlermeldungen, keine Warnungen oder Fortschrittsmeldungen.
299 Warnungen und Fehlermeldungen, keine Fortschrittsmeldungen.
302 Grundlegende Fortschrittsmeldungen (Erfolg), Warnungen und Fehler.
305 Alle Fortschrittsmeldungen, Warnungen und Fehler.
307 @item INFO (Standard)
308 Fortschrittmeldungen, Warnungen, Fehlermeldungen und weiter
309 Information über die Ausführung.
312 Alle möglichen Meldungen, die auch mit der Fehlersuche (Debug) zu tun
318 @cindex Verzeichnis, Ausgabe speichern in
319 @cindex Ausgabedateiname
320 @cindex Dateiname der Ausgabe bestimmen
322 @item -o,--output=@var{DATEI} oder @var{ORDNER}
323 Schreibt das Ergebnis der Verarbeitung mit LilyPond in die Ausgabedatei
324 @var{DATEI}. Wenn ein Verzeichnis mit dem Namen existiert, werden die Ausgabedateien
325 in dieses Verzeichnis gespeichert, wobei der Dateiname der Eingabedatei
326 benutzt wird. Die entsprechende Dateinamenserweiterung wird angehängt (z.B.
327 @code{.pdf} für pdf).
329 @cindex PostScript-Ausgabe
335 @cindex Portable Network Graphics (PNG)
338 Erzeugt eine Grafik-Datei im PNG-Format von jeder Seite. Diese Option
339 impliziert auch @code{--ps}. Die Auflösung in DPI der Grafik kann festgelegt
346 @cindex Portable Document Format (PDF)
349 Erzeugt PDF-Dateien. Dies impliziert @code{--ps}.
352 Gibt die Versionsnummer aus.
355 Gibt ausführliche informative Meldungen aus: Zeigt die vollen Dateipfade
356 aller gelesenen Dateien sowie Informationen über die Laufzeit.
359 Zeigt die Garantiebedingungen an, unter denen GNU LilyPond steht. (Es besteht
360 @strong{KEINERLEI GARANTIE}!)
366 @node Fortgeschrittene Optionen auf der Kommandozeile für LilyPond
367 @unnumberedsubsec Fortgeschrittene Optionen auf der Kommandozeile für LilyPond
368 @translationof Advanced command line options for LilyPond
372 @item -d@var{[Optionsbezeichnung]}=@var{[Wert]},--define-default=@var{[Optionsbezeichnung]}=@var{[Wert]}
373 Hiermit wird die entsprechende interne Scheme-Funktion auf den @var{Wert}
374 gesetzt. Wenn kein @var{value} angegeben wird, wird der Standardwert
375 eingesetzt. Die Vorsilbe @code{no-} kann zur @var{Optionsbezeichnung}
376 hinzugefügt werden, um eine Funktion @qq{auszuschalten}. Beispielsweise
378 @cindex Point and Click, Kommandozeile
391 @noindent Folgende Optionen sind mit ihren entsprechenden Standardwerten
394 @multitable @columnfractions .33 .16 .51
395 @item @strong{Symbol}
397 @tab @strong{Erklärung/Optionen}
399 @item @code{anti-alias-factor}
401 @tab Die Bilder in einer höheren Auflösung rendern (Faktor angegeben) und
402 das Resultat herunterrechnen, um @qq{Zacken} in @code{PNG}-Bildern zu
405 @item @code{aux-files}
407 @tab Erstelle @code{.tex}, @code{.texi}, @code{.count}-Dateien im
412 @tab Auswahl des Backend. Poststscript-Dateien (Standart) enthalten
413 @code{TTF}, @code{Type1} und @code{OTF}-Schriftarten. Ihr Zeichenvorrat
414 wird nicht reduziert (Subsetting). Die Benutzung von östlichen
415 Schriftarten kann zu sehr großen Dateien führen.
419 @tab Encapsulated PostScript. Hiermit wird jede Seite (System) als eine
420 eigene @file{EPS}-Datei gespeichert, ohne Schriftarten, sowie als eine
421 kombinierte @file{EPS}-Datei mit allen Seiten (Systemen) inclusive
422 Schriftarten. Wird als Standard von @command{lilypond-book} benützt.
426 @tab Keine graphische Partitur ausgeben; hat den gleichen Effekt wie
427 @code{-dno-print-pages}.
431 @tab Scalable Vector Graphics. Hiermit wird eine einzelne @code{SVG}-Datei
432 für jede Seite der Ausgabe erstellt, ohne Schriftarten. Es wird
433 empfohlen, die Century Schoolbook-Schriftarten zu installieren, welche
434 mit der LilyPond-Installation mitkommen, um optimales Rendern zu erreichen.
435 Unter UNIX kann man einfach die Schriftartdateien aus dem LilyPond-Verzeichnis
436 (üblicherweise @file{/usr/share/lilypond/VERSION/fonts/otf/}) nach
437 @file{~/.fonts/}. Die @code{SVG}-Ausgabe sollte mit allen SVG-Programmen
438 oder -Editoren kompatibel sein. Es gibt auch die Option @code{svg-woff}
439 (siehe unten) um woff-Schriftarten im SVG-Backend zu benützen.
443 @tab Ausgabe der rohen internen Scheme-basierten Zeichnungsbefehle.
445 @item @code{check-internal-types}
447 @tab Überprüfe jede Eigenschaftszuweisung für Typen.
449 @item @code{clip-systems}
451 @tab Erstelle ausgeschnittene Schnipsel einer Partitur.
455 @tab Präfix für Datendateien (read-only).
457 @item @code{debug-gc}
459 @tab Gebe Debugging-Statistik für Speicher aus.
461 @item @code{debug-gc-assert-parsed-dead}
463 @tab Für Speicher-Debugging: Gehe sicher, dass alle Referenzen zu geparsten
464 Objekten tot sind. Das ist eine interne Option und sie wird automatisch
465 für @code{`-ddebug-gc'} angestellt.
467 @item @code{debug-lexer}
469 @tab Debugging des Flex-lexer.
471 @item @code{debug-page-breaking-scoring}
473 @tab Gebe viele unterschiedliche Seitenumbruchsituationen für Partituren
476 @item @code{debug-parser}
478 @tab Debugging des Bison-Parsers.
480 @item @code{debug-property-callbacks}
482 @tab Debugging von zyklischen Callback-Ketten.
484 @item @code{debug-skylines}
486 @tab Debugging von Skylines.
488 @item @code{delete-intermediate-files}
490 @tab Entferne unbenutzbare, zwischenzeitliche @code{.ps}-Dateien, die während
491 der Kompilations erstellt werden.
493 @item @code{dump-cpu-profile}
495 @tab Gebe CPU-Zeitinformation aus (abhängig vom System).
497 @item @code{dump-profile}
499 @tab Gebe Speicher- und CPU-Zeitbenutzung für jede Datei aus.
501 @item @code{dump-signatures}
503 @tab Gebe Ausgabesignaturen für jedes System aus. Wird für das Prüfen
504 der Regressionsteste eingesetzt.
506 @item @code{eps-box-padding}
508 @tab Verschiebe die linke Ecke der ausgegebenen EPS-Boundingbox um die
509 angegebene Entfernung (in mm).
511 @item @code{gs-load-fonts}
513 @tab Lade die Schriftarten durch Ghostscript.
515 @item @code{gs-load-lily-fonts}
517 @tab Lade nur die LilyPond-Schriftarten durch Ghostscript.
521 @tab Gibt keine Ausgabe auf der Kommandozeile aus, sondern schreibt alles in
526 @strong{Anmerkung für Windows-Benutzer:} Standardmäßig gibt @code{lilypond.exe} alle Fortschrittsinformation auf der Kommandozeile aus;
527 @code{lilypond-windows.exe} gibt aber keine Fortschrittinformation aus und
528 zeigt sofort den Prompt an. Die Option @option{-dgui} kann hier benutzt
529 werden, um die Ausgabe in eine Log-Datei umzuleiten.
531 @multitable @columnfractions .33 .16 .51
534 @tab Zeige die Hilfe.
536 @item @code{include-book-title-preview}
538 @tab Füge Titel eines Buches (book) in die Vorschaubilder ein.
540 @item @code{include-eps-fonts}
542 @tab Füge Schriftarten in EPS-Dateien von einzelnen Systemen ein.
544 @item @code{include-settings}
546 @tab Füge eine Datei für globale Einstellungen ein, dieses wird gelesen, bevor die Partitur verarbeitet wird.
548 @item @code{job-count}
550 @tab Bearbeite Dateien parallel, mit der angegebenen Anzahl von Prozessen.
552 @item @code{log-file}
553 @tab @code{#f [file]}
554 @tab Wenn die Zeichenkette @code{FOO} als ein zweites Argument angegeben wird,
555 wird die Ausgabe in die Log-Datei @code{FOO.log} umgeleitet.
557 @item @code{max-markup-depth}
559 @tab Maximale Tiefe eines Beschriftungs-(markup)-Baumes. Wenn eine
560 Beschriftung mehr Ebenen hat, wird angenommen, dass die Beschriftung
561 nicht von sich aus schließt, eine Warnung ausgegeben und eine leere
562 Beschriftung gesetzt.
564 @item @code{midi-extension}
566 @tab Schreibe als Standarddateierweiterung für MIDI die angegebene Zeichenkette.
568 @item @code{music-strings-to-paths}
570 @tab Konvertiere Textzeichenketten in Pfade, wenn die Glyphen einer
571 Musik-Schriftart gehören.
573 @item @code{old-relative}
575 @tab Lässt den @code{\relative}-Modus für simultane Musik ähnlich wie die
576 Akkord-Syntax funktionieren.
578 @item @code{paper-size}
580 @tab Stelle die Standardpapiergröße ein. Beachten Sie, dass die Zeichenkette
581 von doppelten Anführungszeichen mit Backslash umgeben werden muss.
583 @item @code{pixmap-format}
585 @tab Stellt das Ausgabeformat von GhostScript für Pixel-Bilder ein.
587 @item @code{point-and-click}
589 @tab Füge @q{point & click}-Links in die @code{PDF}-Ausgabedatei ein. Siehe auch
590 @ref{Point and click}.
594 @tab Erstelle Vorschaubilder zusätzlich zur normalen Ausgabe.
598 Diese Option wird von allen Backends unterstützt: @code{pdf}, @code{png},
599 @code{ps}, @code{eps} und @code{svg}, allerdings nicht @code{scm}. Hiermit
600 wird eine Ausgabedatei in der Form @code{meineDatei.preview.Dateierweiterung}
601 erstellt, die die Titel und das erste Notensystem enthält. Wenn @code{\book}-
602 oder @code{\bookpart}-Umgebungen inegesetzt werden, werden die Titel von
603 @code{\book}, @code{\bookpart} oder @code{\score} in die Ausgabe aufgenommen,
604 sowie das erste System jeder @code{\score}-Umgebung, wenn die
605 Variable @code{print-all-headers} in der @code{paper}-Umgebung auf @code{#t}
608 Um die normale Ausgabe zu unterdrücken, können die Optionen @option{-dprint-pages}
609 oder @option{-dno-print-pages} eingesetzt werden.
611 @multitable @columnfractions .33 .16 .51
612 @item @code{print-pages}
614 @tab Erstelle vollständige Seiten, der Standard. @option{-dno-print-pages} ist
615 hilfreich im Zusammenhang mit @option{-dpreview}.
617 @item @code{profile-property-accesses}
619 @tab Speichere Statistiken von @code{get_property()}-Funktionsaufrufen.
621 @item @code{protected-scheme-parsing}
623 @tab Fahre fort, wenn Fehler in eingefügtem Scheme-Code im Parser bemerkt
624 werden. Wenn auf @code{#f} gesetzt, halte an Fehlern an und gebe einen
627 @item @code{read-file-list}
628 @tab @code{#f [file]}
629 @tab Gibt den Dateinamen einer Datei an, die eine Liste mit Eingabedateien
630 enthält, die kompiliert werden sollen.
632 @item @code{relative-includes}
634 @tab Wenn ein @code{\include}-Befehl bearbeitet wird, suche nach der
635 eingefügten Datei relativ zur aktuellen Datei (und nicht relativ zur untersten
638 @item @code{resolution}
640 @tab Setzt die Auflösung, mit der @code{PNG}-Bilder erstellt werde, auf einen
641 bestimmten Wert (in dpi).
645 @tab Der @code{.ly}-Eingabe nicht trauen.
649 Wenn LilyPond-Notensatz über einen Webserver zur Verfügung gestellt wird,
650 @b{müssen} entweder die Option @option{--safe} oder die Option @option{--jail}
651 mitgegeben werden. Die Option @option{--safe} verhindert eingefügten
652 Scheme-Code daran, Schaden auszuüben, etwa
658 c4^$(ly:gulp-file "/etc/passwd")
663 Die Option @option{-dsafe} interpretiert eingefügte Scheme-Ausdrücke
664 in einem besonderen sicheren Modul. Das ist aus dem GUILE
665 @file{safe-r5rs}-Modul abgeleitet, fügt aber einige Funktionen der
666 LilyPond API hinzu, welche sich in @file{scm/safe-lily.scm} aufgelistet finden.
668 Zusätzliche verbietet der sichere Modus @code{\include}-Befehle und
669 stellt die Benutzung von Backslash in @TeX{}-Zeichenketten aus. Im sicheren
671 nicht möglich, LilyPond-Variablen in Scheme zu importieren.
673 @option{-dsafe} kann jedoch @emph{nicht} Überbenutzung von Resourcen
674 entdecken, sodass man trotzdem das Programm abschießen kann, etwa
675 indem man eine sich wiederholende Datenstruktur in das Backend
676 leitet. Darum sollte LilyPond sowohl in der CPU- als auch Speicherbenutzung
677 eingeschränkt betrieben werden, wenn es über einen Webserver öffentlich zugänglich
680 Der sichere Modus verhindert die Kompilierung von vielen nützlichen
683 die Option @option{--jail} ist noch sicherer, erfordert aber mehr Arbeit
684 beim Setup. Siehe auch @ref{Grundlegende Optionen auf der Kommandozeile für LilyPond}.
686 @multitable @columnfractions .33 .16 .51
687 @item @code{separate-log-files}
689 @tab Für Eingabedateien @code{Datei1.ly}, @code{Datei2.ly} usw. die
690 Log-Daten in die Dateien @code{Datei1.log}, @code{Datei2.log} ... schreiben.
692 @item @code{show-available-fonts}
694 @tab Eine Liste der verfügbaren Schriftarten.
696 @item @code{strict-infinity-checking}
698 @tab Erzwinge einen Programmabsturz wenn @code{Inf} und @code{NaN}
699 Fließkommaausnahmen gefunden werden.
701 @item @code{strip-output-dir}
703 @tab Verzeichnisse von Eingabedateien nicht in die Konstruktion der
704 Ausgabedateinamen einbeziehen.
706 @item @code{svg-woff}
708 @tab Woff-Schriftarten im SVG-Backend benuützen..
710 @item @code{trace-memory-frequency}
712 @tab Zeichnet die Benutzung von Scheme so oft pro Sekunde auf. Das Resultat
713 wird in die Dateien @code{FILE.stacks} und @code{FILE.graph} ausgegeben.
715 @item @code{trace-scheme-coverage}
717 @tab Abdeckung der Scheme-Dateien in Datei @code{FILE.cov} schreiben.
721 @tab Ausfühliche Ausgabe, also Logstufe DEBUG (read-only).
723 @item @code{warning-as-error}
725 @tab Alle Warnungen und @q{Programmierfehler}-Nachrichten in Fehler ändern.
730 @node Umgebungsvariablen
731 @unnumberedsubsec Umgebungsvariablen
732 @translationof Environment variables
735 @cindex LILYPOND_LOGLEVEL
736 @cindex LILYPOND_DATADIR
737 @cindex Variablen, Umgebungs-
738 @cindex Umgebungsvariablen
740 @command{lilypond} erkennt und benützt die folgenden Umgebungsvariablen:
742 @item LILYPOND_DATADIR
743 Diese Variable gibt das Verzeichnis an, wo Lilypond seine eigenen Dateien,
744 Meldungen und Übersetzungen finden kann. Dieses Verzeichnis sollte
745 Unterverzeichnisse @file{ly/}, @file{ps/}, @file{tex/}, etc. beinhalten.
748 Gibt die Sprache an, in der Warnungen und Fehlermeldungen ausgegeben werden.
750 @item LILYPOND_LOGLEVEL
751 Die standardmäßige Logstufe. Wenn LilyPond ohne eine explizite
752 Logstufe aufterufen wird (d. h. die Kommandozeilenoption @option{--loglevel}
753 nicht eingesetzt wird), wird dieser Wert benutzt.
755 @item LILYPOND_GC_YIELD
756 Eine Variable (von 1 bis 100), die die Speicherverwaltung regelt. Bei
757 niedrigeren Werten wird mehr Prozessor-Zeit, dafür weniger Hauptspeicher
758 benötigt. Voreinstellung ist ein Wert von @code{70}.
764 @node LilyPond in chroot-Kerker
765 @unnumberedsubsec LilyPond in chroot-Kerker
766 @translationof LilyPond in chroot jail
768 Einen Server einzurichten, der LilyPond in einem chroot-Kerker bedient, ist
769 recht kompliziert. Die einzelnen Schritten finden sich unten aufgeliestet.
770 Beispiele sind für Ubuntu GNU/Linux und erfordern evtl. die Benutzung von
771 @code{sudo} an den entsprechenden Stellen.
775 @item Installieren Sie die nötigen Pakete: LilyPond, GhostScript und ImageMagick.
777 @item Erstellen Sie einen neuen Benutzer mit dem Namen @code{lily}:
784 Hierdurch wird auch eine Gruppe @code{lily} und ein Heimat-Ordner
785 @code{/home/lily} für den neuen Benutzer erstellt.
787 @item Im Heimat-Ordner des Benutzers @code{lily} erstellen Sie eine Datei, die als
788 eigenes Dateisystem eingesetzt wird:
791 dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000
795 In diesem Beispiel wird eine 200-MB-Datei als Kerker-Dateisystem erstellt.
797 @item Erstellen Sie ein loop device, erstellen Sie ein Dateisystem und
798 mounten Sie es, dann erstellen Sie dort einen Ordner, in dem der Benutzer
799 @code{lily} Schreibrechte hat:
803 losetup /dev/loop0 /home/lily/loopfile
804 mkfs -t ext3 /dev/loop0 200000
805 mount -t ext3 /dev/loop0 /mnt/lilyloop
806 mkdir /mnt/lilyloop/lilyhome
807 chown lily /mnt/lilyloop/lilyhome
810 @item In der Konfiguration des Servers ist der Kerker (JAIL) @code{/mnt/lilyloop}
811 und das Verzeichnis (DIR) @code{/lilyhome}.
813 @item Erstellen Sie einen großen Verzeichnisbaum in dem Kerker, indem Sie die
814 notwendigen Dateien dorthin kopiert, wie das Beispielskript unten zeigt.
816 Sie könne @code{sed} benutzen, um die notwendigen Kopierbefehle für ein
817 bestimmtes Programm zu erstellen:
820 for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/; \
821 do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& \
822 cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \
823 \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done
828 @subheading Beispiel-Skript für 32-bit Ubuntu 8.04
836 loopdevice=/dev/loop0
837 jaildir=/mnt/lilyloop
838 # the prefix (without the leading slash!)
840 # the directory where lilypond is installed on the system
841 lilydir=/$lilyprefix/lilypond/
843 userhome=$home/$username
844 loopfile=$userhome/loopfile
846 dd if=/dev/zero of=$loopfile bs=1k count=200000
848 losetup $loopdevice $loopfile
849 mkfs -t ext3 $loopdevice 200000
850 mount -t ext3 $loopdevice $jaildir
851 mkdir $jaildir/lilyhome
852 chown $username $jaildir/lilyhome
855 mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp
858 cp -r -L $lilydir $lilyprefix
859 cp -L /bin/sh /bin/rm bin
860 cp -L /usr/bin/convert /usr/bin/gs usr/bin
861 cp -L /usr/share/fonts/truetype usr/share/fonts
863 # Now the library copying magic
864 for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh" \
865 "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=> \
866 \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed \
867 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' \
868 | sed '/.*=>.*/d'; done | sh -s
870 # The shared files for ghostscript...
871 cp -L -r /usr/share/ghostscript usr/share
872 # The shared files for ImageMagick
873 cp -L -r /usr/lib/ImageMagick* usr/lib
875 ### Now, assuming that you have test.ly in /mnt/lilyloop/lilyhome,
876 ### you should be able to run:
877 ### Note that /$lilyprefix/bin/lilypond is a script, which sets the
878 ### LD_LIBRARY_PATH - this is crucial
879 /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly
883 @node Fehlermeldungen
884 @section Fehlermeldungen
885 @translationof Error messages
887 @cindex error messages
888 @cindex Fehlermeldungen
890 Während der Verarbeitung einer Dateien können diverse Meldungen an der
891 Kommandozeile auftreten:
895 @item Warnung (Warning)
897 Irgendetwas ist verdächtig. Wenn Sie etwas Ungewöhnliches in Ihrer
898 Datei durchführen, dann werden Sie die Meldung verstehen und können
899 sie gegebenenfalls ignorieren. Im Normalfall jedoch bedeutet eine
900 Warnung, dass mit Ihrer Datei etwas nicht stimmt, LilyPond jedoch
901 trotzdem versucht, die Datei soweit wie möglich korrekt zu übersetzen.
905 Irgendetwas stimmt definitiv nicht. Der aktuelle Bearbeitungsschritt
906 (Einlesen, Interpretieren oder Formatieren der Datei) wird noch fertig
907 ausgeführt, danach bricht die Bearbeitung aber ab.
909 @item Fataler Fehler (Fatal error)
910 @cindex Fataler Fehler
911 Irgendetwas stimmt definitiv nicht und LilyPond kann nicht weiter
912 ausgeführt werden. Dies ist nur sehr selten der Fall, meist sind
913 die Schriftarten nicht korrekt installiert.
915 @item Scheme Fehler (Scheme error)
916 @cindex Fehlerprotokoll, Scheme
917 @cindex Scheme Fehler
918 Fehler, die während der Ausführung von Scheme-Code auftreten, werden
919 vom Scheme-Interpreter aufgefangen und an der Kommandozeile ausgegeben.
920 Wenn Sie LilyPond mit der @option{--verbose} Option (auch @code{-V})
921 ausführen, wird der sogenannte @q{Call trace} ausgegeben, der die
922 aufgerufenen Funktionen zur Zeit des Fehlers angibt.
924 @item Programmierfehler (Programming error)
925 @cindex Programmierfehler
926 Eine interne Inkonsistenz ist aufgetreten. Diese Fehlermeldungen
927 sollen den Programmierern die Fehlersuche erleichtern und
928 können meistens einfach ignoriert werden. In manchen Fällen werden
929 so viele Meldungen ausgegeben, dass die Lesbarkeit der restliche
930 Ausgabe davon beeinträchtigt wird.
932 @item Abgebrochen (core dumped)
933 Dies bezeichnet einen ernsten Programmierfehler, der das Programm
934 zum Absturz gebracht hat. Solche Fehler werden als kritisch angesehen.
935 Falls daher einer auftritt, senden Sie bitte einen Bug-Report!
939 @cindex Fehlermeldung, Format
940 @cindex Form der Fehlermeldungen
941 Wenn Warnungen oder Fehlermeldungen mit einer konkreten Stelle in der
942 Eingabedatei verknüpft werden können, dann hat die Meldung die folgende
946 @var{Dateiname}:@var{Zeile}:@var{Spalte}: @var{Meldung}
947 @var{Fehlerhafte Eingabezeile}
950 Ein Zeilenumbruch wird in der fehlerhaften Zeile an jener Stelle eingefügt,
951 wo der Fehler aufgetreten ist. Zum Beispiel
954 test.ly:2:19: Fehler: keine gültige Dauer: 5
959 Diese Stellen sind LilyPonds Vermutung, wo die Warnung oder der Fehler
960 aufgetreten ist, allerdings treten Warnungen und Fehler ja gerade in
961 unerwarteten Fällen auf. Manchmal kann Lilypond auch eine fehlerhafte
962 Stelle zwar noch problemlos verarbeiten, ein paar Zeilen später wirkt
963 sich der Fehler aber dann doch noch aus. In solchen Fällen, wo Sie in
964 der angegebenen Zeile keinen Fehler erkennen, sollten Sie auch die Zeilen
965 oberhalb der angegebenen Stelle genauer unter die Lupe nehmen.
967 Mehr Information darüber findet sich in @ref{Häufige Fehlermeldungen}.
971 @node Häufige Fehlermeldungen
972 @section Häufige Fehlermeldungen
973 @translationof Common errors
975 Die Fehlermeldungen, die unten beschrieben werden, treten of auf,
976 es ist jedoch nicht immer einfach, die Urache zu finden. Wenn
977 der Fehler einmal verstanden ist, kann er einfach behoben werden.
981 * Noten laufen aus der Seite heraus::
982 * Ein zusätzliches System erscheint::
983 * Offensichtlicher Fehler in ../ly/init.ly::
984 * Fehlermeldung Ungebundene Variable %::
985 * Fehlermeldung FT_Get_Glyph_Name::
986 * Warnung über absteigende staff affinities::
989 @node Noten laufen aus der Seite heraus
990 @unnumberedsubsec Noten laufen aus der Seite heraus
991 @translationof Music runs off the page
993 Noten, die rechts aus der Seite herauslaufen oder sehr komprimiert
994 aussehen, liegen in fast allen Fällen an einer falschen Notendauer
995 einer Note, die dazu fürt, dass die letzte Note im Takt über die
996 Taktgrenze hinwegdauert. Es ist nicht falsch, wenn die letzte
997 Note eines Taktes über den Takt hinausdauert, weil einfach angenommen
998 wird, dass sie im nächsten Takt fortgesetzt wird. Aber wenn eine
999 längere Sequenz dieser überhängenden Noten auftritt, können die
1000 Noten sehr gedrängt aussehen oder über den Seitenrand fließen, weil
1001 die automatische Zeilenumbruchsfunktion einen Umbruch nur am Ende
1002 eines vollständigen Taktes einfügen kann, also wenn alle Noten
1003 zum Ende des Taktstriches auch wirklich aufhören.
1005 @warning{Eine falsche Dauer kann dazu führen, dass Zeilenumbrüche
1006 nicht möglich sein und die Zeile entweder sehr gedrängt dargestllt
1007 wird oder über den Seitenrand fließt.}
1009 Die falsche Dauer kann einfach gefunden werden, wenn Taktstrichüberprüfung
1010 eingesetzt wird, siehe @ruser{Takt- und Taktzahlüberprüfung}.
1012 If you actually intend to have a series of such carry-over measures
1013 you will need to insert an invisible bar line where you want the
1014 line to break. For details, see @ruser{Taktstriche}.
1017 @node Ein zusätzliches System erscheint
1018 @unnumberedsubsec Ein zusätzliches System erscheint
1019 @translationof An extra staff appears
1021 Wenn Kontext nicht explizit mit @code{\new} oder
1022 @code{\context} erstellt werden, werden sie vom Programm erstellt,
1023 sobald ein Befehl angetroffen wird, der im aktuellen Kontext nicht
1024 funktioniert. In einfachen Partituren ist diese automatische
1025 Erstellung sehr nützlich und die meisten Beispiele der LilyPond-Handbücher
1026 benutzen diese Schreiberleicherterung. Manchmal jedoch kann es
1027 vorkommen, dass durch die automatische Erstellung von Systemen aufeinmal
1028 unerwartete Notensysteme erstellt werden. Beispielsweise könnte man
1029 annehmen, dass folgendes Beispiel alle Notenköpfe in dem Notensystem
1030 rot macht, aber als Resultat hat man zwei Systeme, während die
1031 Notenköpfe immernoch schwarz im unteren System erscheinen.
1033 @lilypond[quote,verbatim,relative=2]
1034 \override Staff.NoteHead.color = #red
1038 Das liegt daran, dass kein @code{Staff}-Kontext existiert, wenn
1039 der @code{\override}-Befehl verarbeitet wird, sodass ein System
1040 für diesen Befehl erstellt wird. Dann aber erstellt @code{\new Staff}
1041 noch ein zusätzliches System, wo die Noten gesetzt werden. Die
1042 richtige Schreibweise wäre:
1044 @lilypond[quote,verbatim,relative=2]
1046 \override Staff.NoteHead.color = #red
1051 Ein zweites Beispiel zeigt, dass ein @code{\relative}-Befehl innerhalb
1052 von @code{\repeat} zwei Systeme erstellt, wobei der zweite etwas verschoben
1053 ist. Das liegt daran, dass @code{\repeat} zwei @code{\relative}-Umgebungen
1054 erstellt, die jede implizit einen @code{Staff}- und @code{Voice}-Kontext
1057 @lilypond[quote,verbatim]
1059 \relative c' { c4 d e f }
1063 Indem man die @code{Voice}-Kontexte explizit erstellt, kann das Problem
1066 @lilypond[quote,verbatim]
1069 \relative c' { c4 d e f }
1075 @node Offensichtlicher Fehler in ../ly/init.ly
1076 @unnumberedsubsec Offensichtlicher Fehler in ../ly/init.ly
1077 @translationof Apparent error in @code{../ly/init.ly}
1079 Verschiedene seltsame Fehlermeldungen können über Syntax-Fehler in
1080 @file{../ly/init.ly} auftauchen, wenn die Eingabedatei nicht richtig
1081 formuliert ist, wenn sie etwa nicht richtig passende Klammerpaare
1082 oder Anführungszeichen enthält.
1084 Der üblichste Fehler ist das Fehlen einer geschweiften Klammer
1085 (@code{@}}) am Ende der @code{score}-Umbgebung. Die Lösung ist hier
1086 klar: überprüfen Sie, ob die @code{score}-Umgebung richtig beendet
1087 wurde. Die richtige Struktur einer Eingabedatei wird beschrieben
1088 in @rlearning{Wie eine LilyPond-Eingabe-Datei funktioniert}.
1089 Ein Editor, der die Klammerpaare automatisch anzeigt, ist sehr
1090 hilfreich, um derartige Fehler zu vermeiden.
1092 Eine weitere übliche Fehlerquelle ist kein Leerzeichen zwischen der
1093 letzten Silbe einer @code{lyrics}-Umgebung und der schließenden
1094 Klammer (@code{@}}). Ohne diese Trennung wird die Klammer als
1095 Teil der Silbe gewertet. Es bietet sich immer an, Leerzeichen vor
1096 und hinter @emph{jede} Klammer zu setzen. Wie wichtig das ist, wenn
1097 Gesangstext eingesetzt wird, siehe @ruser{Eingabe von Text}.
1099 Diese Fehlermeldung kann auch mit einem fehlenden schließenden Anführungszeichen
1100 (@code{"}) auftreten. In diesem Fall sollte die begleitende Fehlermeldung
1101 eine Zeilenzahl angeben, die dicht am Fehler liegt. Die nicht paarigen
1102 Anführungszeichen sind meistens ein oder zwei Zeilen darüber.
1105 @node Fehlermeldung Ungebundene Variable %
1106 @unnumberedsubsec Fehlermeldung Ungebundene Variable %
1107 @translationof Error message Unbound variable %
1109 Diese Fehlermeldung erscheint am Ende der Kommandozeilenausgabe oder in der
1110 Log-Datei mit einer Meldung @qq{GUILE signalled an error ...}
1111 jedes Mal, wenn eine Scheme-Routine aufgerufen wird, die
1112 (falscherweise) ein @emph{LilyPond}-Kommentar und kein
1113 @emph{Scheme}-Kommentar enthält.
1115 LilyPond-Kommentare befginnen mit dem Prozent-Zeichen (@code{%}) und
1116 dürfen nicht in Scheme-Routinen benutzt werden. Scheme-Kommentare beginnen
1117 mit einem Semikolon (@code{;}).
1119 @node Fehlermeldung FT_Get_Glyph_Name
1120 @unnumberedsubsec Fehlermeldung FT_Get_Glyph_Name
1121 @translationof Error message FT_Get_Glyph_Name
1123 Diese Fehlermeldung erscheint in der Kommandozeilenausgabe, wenn die
1124 Datei ein Zeichen enthält, das nicht zu ASCII gehört und die Datei
1125 nicht in UTF-8-Kodierung gespeichert wurd. Sie auch @ruser{Zeichenkodierung}.
1128 @node Warnung über absteigende staff affinities
1129 @unnumberedsubsec Warnung über absteigende staff affinities
1130 @translationof Warning staff affinities should only decrease
1132 Diese Warnung erscheint, wenn keine Notensysteme in der Ausgabe vorhanden
1133 sind, wenn etwa nur @code{ChordName}-Kontext und @code{Lyrics}-Kontext
1134 in einem Liedblatt vorhanden sind. Die Warnungen können vermieden werden,
1135 indem man einen der Kontexte als System erscheinen lässt, indem man ihm
1136 zu Beginn hinzufügt:
1139 \override VerticalAxisGroup.staff-affinity = ##f
1142 Zu Einzelheiten siehe @qq{Abstand von Nicht-Notensystemzeilen} in
1143 @ruser{Flexible vertikale Abstände in Systemgruppen}.