@c -*- coding: utf-8; mode: texinfo; documentlanguage: cs -*- @ignore Translation of GIT committish: 0764a50d470cab82ca29da30298dacd333d3da12 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' Guide, node Updating translation committishes.. @end ignore @c \version "2.17.6" @c Translators: Pavel Fric @node Spouštíme lilypond @chapter Spouštíme @command{lilypond} @translationof Running lilypond Dieses Kapitel behandelt die technischen Details, wie Lilypond ausgeführt werden kann. @menu * Běžné používání programu:: * Použití v příkazovém řádku:: * Chybová hlášení:: * Častá chybová hlášení:: @end menu @node Běžné používání programu @section Běžné používání programu @translationof Normal usage Die meisten Benutzer führen LilyPond von einer graphischen Benutzeroberfläche aus. Siehe @rlearning{Übung}, falls Sie dies nicht bereits getan haben. Wenn Sie einen alternativen Editor für Ihre LilyPond-Dateien verwenden, lesen Sie bitte die Dokumentation dieses Editors. @node Použití v příkazovém řádku @section Použití v příkazovém řádku @translationof Command-line usage Dieser Abschnitt enthält zusätzliche Informationen, wie Sie LilyPond von der Kommandozeile ausführen können. Dies kann erforderlich sein, um etwa zusätzliche Optionen an das Programm zu übergeben. Außerdem sind einige Zusatzprogramme (wie etwa @code{midi2ly}) nur von der Kommandozeile verfügbar. Unter @q{Kommandozeile} verstehen wir die Kommandozeile des jeweiligen Betriebssystems. Windows Benutzern ist sie vielleicht eher unter den englischen Begriffen @q{DOS shell} oder @q{command shell} bekannt. MacOS@tie{}X Benutzer kennen sie eher unter @q{Terminal} oder @q{Konsole}. Einige zusätzliche Einrichtungsarbeiten werden unter MacOS@tie{}X, siehe @rweb{MacOS X}. Wie die Kommandozeile im jeweiligen Betriebssystem benutzt werden kann, soll in diesem Handbuch nicht näher beschrieben werden. Sehen Sie bitte im Handbuch Ihres Betriebssystems nach oder informieren Sie sich im Internet, wenn Sie mit der Kommandozeile nicht vertraut sind. @menu * Vyvolání lilypondu:: * Volby lilypondu v příkazovém řádku:: * Proměnné prostředí:: * LilyPond v žaláři chroot:: @end menu @node Vyvolání lilypond @unnumberedsubsec Vyvolání @command{lilypond} @translationof Invoking lilypond @cindex @command{lilypond} aufrufen @cindex Kommandozeilen-Optionen für @command{lilypond} @cindex Optionen an der Kommandozeile Das @command{lilypond} Programm kann folgendermaßen von der Kommandozeile aufgerufen werden. @example lilypond [@var{Option}]@dots{} @var{Dateiname}@dots{} @end example Wird ein @file{Dateiname} ohne Erweiterung angegeben, so wird @file{.ly} als Standarderweiterung für LilyPond-Dateien benutzt. Um Daten von @code{stdin} einzulesen, benutzen Sie einfach einen Bindestrich (@code{-}) als @var{Dateiname}. Wenn Lilypond die Datei @file{Dateiname.ly} verarbeitet, werden daraus die Dateien @file{Dateiname.ps} und @file{Dateiname.pdf} erzeugt. Es können an @code{lilypond} auch mehrere @file{.ly} Dateien übergeben werden, die dann einzeln und voneinander unabhängig abgearbeitet werden.@footnote{Der Zustand von GUILE wird allerdings nicht nach jeder Datei zurückgesetzt, sodass Achtung geboten ist, wenn in einer Datei globale Änderungen von Scheme aus durchgeführt werden.} Falls @file{Dateiname.ly} mehr als eine @code{\book}-Umgebung enthält, werden die weiteren Stücke in durchnummerierte Dateien der Form @file{Dateiname-1.pdf} ausgegeben. Zusätzlich wird der Wert der Variable @code{output-suffix} zwischen den ursprünglichen Dateinamen und der Zahl eingefügt. Eine Lilypond-Datei @file{Dateiname.ly} mit dem Inhalt @example #(define output-suffix "Geige") \score @{ @dots{} @} #(define output-suffix "Cello") \score @{ @dots{} @} @end example @noindent erzeugt daher die Dateien @var{Dateiname}@file{-Geige.pdf} und @var{Dateiname}@file{-Cello-1.pdf}. @unnumberedsubsubsec Häufige Kommandozeilenbefehle Wenn Ihre Kommandozeile normale Weiterleitungen unterstützt, können Sie es nützlich finden, mit folgenden Befehlen die Ausgabe der Kommandozeile in eine Datei zu leiten: @itemize @item @code{lilypond file.ly 1>stdout.log} um normale Ausgabe zu erhalten @item @code{lilypond file.ly 2>stderr.log} um chybová hlášení zu erhalten @item @code{lilypond file.ly &>all.log} um alle Meldungen zu erhalten @end itemize Wenden Sie sich an die Dokumentation für Ihre Kommandozeile, um zu sehen, ob derartige Optionen unterstützt werden oder die Syntax unterschiedlich ist. Beachten Sie, dass es sich hier um reine Verwaltungsprogramme handelt, die nichts mit LilyPond zu tun haben. @node Volby v příkazovém řádku pro lilypond @unnumberedsubsec Volby v příkazovém řádku pro @command{lilypond} @translationof Command line options for lilypond Die folgenden Kommandozeilenoptionen werden von @command{lilypond} unterstützt: @cindex @command{lilypond} auf der Kommandozeile @cindex Kommandozeile, @command{lilypond} aufrufen @cindex Optionen, Kommandozeile @cindex Terminal, @command{lilypond} aufrufen @table @code @item -e,--evaluate=@var{expr} Wertet den Scheme-Ausdruck @var{expr} aus, bevor die @file{.ly} Dateien gelesen und interpretiert werden. Die @code{-e} Option kann auch mehrfach angegeben werden, die Ausdrücke werden nacheinander ausgewertet. Da der Ausdruck im @code{guile-user} Modul ausgewertet wird, ist bei der Definitionen innerhalb von @var{expr} folgendes Vorgehen nötig. An der Kommandozeile wird z.B. @code{a} im @code{guile-user} Modul definiert: @example lilypond -e '(define-public a 42)' @end example @noindent 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: @example #(use-modules (guile-user)) @end example @item -f,--format=@var{Format} Bestimmt das Ausgabeformat. Mögliche Werte von @var{Format} sind @code{svg}, @code{ps}, @code{pdf} und @code{png}. Beispiel: @code{lilypond -fpng @var{Dateiname}.ly} @item -d,--define-default=@var{Variable}=@var{Wert} Damit wird die interne Programmoption @var{Variable} auf den Scheme-Wert @var{Wert} gesetzt. Wird kein @var{Wert} angegeben, so wird @var{#t} benutzt. Um eine Option auszuschalten, kann der Präfix @code{no-} dem Namen @var{Variable} der Variable vorangestellt werden. So ist etwa @cindex Point and Click, Kommandozeile @example -dno-point-and-click @end example @noindent dasselbe wie @example -dpoint-and-click='#f' @end example Hier sind ein paar interessante Optionen: @cindex Hilfe, Kommandozeile @table @samp @item help Die Ausführung von @code{lilypond -dhelp} zeigt alle verfügbaren @code{-d} Optionen. @cindex Papierformat, Kommandozeile @item paper-size Setzt das Standard-Papierformat, @example -dpaper-size=\"letter\" @end example @noindent Die Zeichenkette, die das Format angibt, muss in Anführungszeichen mit Backslash ( @code{\"} ) stehen. @cindex sicher, Kommandozeile @cindex safe, Kommandozeile @item safe Vertraut der @file{.ly} Datei nicht. Wenn LilyPond über einen Webserver verfügbar gemacht wird, @b{MUSS} unbedingt eine die Optionen @code{--safe} oder @code{--jail} angegeben werden. Die @code{--safe} Option verhindert, dass in der @file{.ly}-Datei angegebener Scheme-Code das System gefährden kann, wie etwa in folgendem Beispiel: @quotation @verbatim #(system "rm -rf /") { c4^$(ly:gulp-file "/etc/passwd") } @end verbatim @end quotation Mit der @code{-dsafe} Option werden alle Scheme-Ausdrücke einem speziellen sicheren Modus ausgewertet. Dieser Modus ist vom GUILE @file{safe-r5rs} Modul abgeleitet und fügt noch zahlreiche weitere erlaubte Funktionen der LilyPond Programm-Schnittstelle hinzu. Diese Funktionen sind in @file{scm/safe-lily.scm} angegeben. Zusätzliche verbietet der sichere Modus auch @code{\include} Befehle. Im sicheren Modus ist es nicht möglich, LilyPond-Variablen nach Scheme zu exportieren. @code{-dsafe} erkennt jedoch @emph{KEINE} Überbeanspruchung der verfügbaren Ressourcen. In diesem Modus ist es also trotzdem möglich, dass LilyPond in einer Endlosschleife hängt, z.B. wenn zyklische Datenstrukturen an das Backend übergeben werden. Wenn LilyPond also auf einem öffentlich zugänglichen Webserver verfügbar gemacht wird, sollte der Prozess sowohl in der CPU- als auch in der Speichernutzung limitiert werden. Der sichere Modus verhindert auch, dass zahlreiche nützliche Musikfragmente von LilyPond verarbeitet werden. Die @code{--jail} Option ist eine sicherere Alternative, benötigt allerdings auch mehr Aufwand zur Einrichtung. @cindex Ausgabeformat, Definition von @item backend Gibt an, welches Ausgabeformat das LilyPond Backend benutzt. Mögliche Werte für diese Option sind: @table @code @item ps PostScript-Ausgabeformat. @cindex PostScript Ausgabeformat Postscript-Dateien enthalten auch TTF-, Type1- und OTF-Schriften. Allerdings wird die gesamte Schriftart eingefügt und nicht nur die benötigten Zeichen. Vor allem wenn nicht-westliche Zeichensätze benutzt werden, kann dies zu sehr großen Dateien führen. @cindex PostScript Ausgabeformat @cindex EPS (encapsulated PostScript) @item eps Erzeugt @q{encapsulated PostScript} (EPS). Jede Seite (oder jedes System) wird als eigene @file{EPS}-Datei ausgegeben, inklusive Schriftarten. Außerdem wird eine Datei mit allen Seiten (bzw. Systemen) und Schriftarten erzeugt. Dies ist die Standardeinstellung von @command{lilypond-book}. @cindex SVG (scalable vector graphics) @cindex Vektorgraphik (SVG) @item svg SVG-Ausgabe (Scalable Vector Graphics). Hiermit wird eine einzelne SVG-Datei ohne eingebundene Schriften für jede Seite der Partitur erstellt. Es wird empfohlen, Century Schoolbook-Schriftarten zu installieren, die auch in der LilyPond-Installation enthalten sind, um optimales Rendern zu erhalten. Unter UNIX können diese Schriftarten einfach aus dem LilyPond-Verzeichnis (normalerweise @file{/usr/share/lilypond/@/VERSION/fonts/otf/}) nach @file{~/.fonts} kopiert werden. Die SVG-Ausgabe sollte mit allen SVG-Editoren oder Betrachtungsprogrammen kompatibel sein. @cindex Scheme-dump @item scm gibt die rohen Scheme-basierenden Zeichenbefehle aus, wie sie intern von LilyPond benutzt werden. @cindex Scheme dump @item null Keine Partitur wird ausgegeben, hat gleichen Effekt wie @code{-dno-print-pages}. @end table Beispiel: @code{lilypond -dbackend=svg @var{Dateiname}.ly} @cindex Vorschau @item preview Erzeugt eine Ausgabedatei, die nur die Titelzeilen und das erste System enthält. Wenn @code{\bookpart}-Umgebungen benutzt werden, erscheinen die Titel und ersten Systeme jedes @code{\bookpart}-Abschnitts in der Datei. Die Backends @code{ps}, @code{eps} und @code{svg} unterstützen diese Option. @item print-pages Erzeugt vollständige Seiten (Standardeinstellung). @code{-dno-print-pages} ist in Verbindung mit @code{-dpreview} nützlich. @end table @item -h,--help Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen. @item -H,--header=@var{FELD} Gibt den Inhalt eines Feldes aus dem @code{\header}-Block in die Datei @file{Dateiname.@var{FELD}} aus. @item --include, -I=@var{Verzeichnis} Fügt @var{Verzeichnis} zur Liste der Suchpfade hinzu. @cindex Dateisuche @cindex Suchpfad Mehrere -I-Optionen können angegeben werden. Die Suche beginnt mit dem ersten definierten Verzeichnis und setzt in den weiteren Verzeichnissen fort, wenn die gesuchte Datei nicht in dem Verzeichnis gefunden wird. @item -i,--init=@var{Initialisierungsdatei} Benutzt @var{Initialisierungsdatei} zur gesamten Programminitialisierung. Der Standardwert ist @file{init.ly}. @cindex Verzeichnis, Ausgabe speichern in @cindex Ausgabedateiname @item -o,--output=@var{DATEI} Schreibt das Ergebnis der Verarbeitung mit LilyPond in die Ausgabedatei @var{DATEI}. Wenn ein Verzeichnis mit dem Namen existiert, werden die Ausgabedateien in dieses Verzeichnis gespeichert, wobei der Dateiname der Eingabedatei benutzt wird. Die entsprechende Dateinamenserweiterung wird angehängt (z.B. @code{.pdf} für pdf). @cindex PostScript-Ausgabe @item --ps Erzeugt PostScript. @cindex PNG-Ausgabe @cindex Portable Network Graphics (PNG) @item --png Erzeugt eine Grafik-Datei im PNG-Format von jeder Seite. Diese Option impliziert auch @code{--ps}. Die Auflösung in DPI der Grafik kann festgelegt werden durch @example -dresolution=110 @end example @cindex PDF-Ausgabe @cindex Portable Document Format (PDF) @item --pdf Erzeugt PDF-Dateien. Dies impliziert @code{--ps}. @item -j,--jail=@var{Benutzer},@var{Gruppe},@var{Jail-Verzeichnis},@var{Arbeitsverzeichnis} Führt @command{lilypond} in einem chroot-Jail aus. Die @code{--jail} Option ist eine flexiblere Alternative zu @code{--safe}, wenn LilyPond über das Internet verfügbar gemacht wird oder LilyPond-Quelldateien von Dritten automatisch verarbeitet werden. Sie funktioniert dergestalt, dass das Wurzelverzeichnis von @command{lilypond} auf @var{Jail-Verzeichnis} gesetzt wird, bevor die tatsächliche Kompilierung der @file{.ly}-Datei beginnt. Der Benutzer und die Gruppe werden auf die angegebenen Werte gesetzt und das aktuelle Arbeitsverzeichnis wird ebenfalls auf den angegebenen Wert @var{Arbeitsverzeichnis} gesetzt. Diese Einstellungen garantieren (zumindest in der Theorie), dass es nicht möglich ist, aus dem Jail auszubrechen. Damit @code{--jail} funktioniert, muss @command{lilypond} allerdings als root ausgeführt werden, was normalerweise auf sichere Art mit dem Kommando @command{sudo} erreicht werden kann. Das Jail-Verzeichnis zu erstellen ist etwas heikel, da LilyPond alle zur Ausführung nötigen Bibliotheken und Dateien @emph{innerhalb des Jail-Verzeichnisses} finden muss. Ein typisches Setup besteht aus folgenden Punkten: @table @asis @item Erstellung eines getrennten Dateisystems Ein eigenes Dateisystem muss für LilyPond erstellt werden, sodass es mit sicheren Einstellungen wie @code{noexec}, @code{nodev} und @code{nosuid} eingebunden werden kann. Damit ist es unmöglich, Programme von diesem Dateisystem auszuführen oder direkt auf eine Hardware-Schnittstelle zuzugreifen. Wenn Sie keine eigene Partition erstellen möchten, können Sie auch eine Datei der entsprechenden Größe erstellen und sie als @q{loop}-Gerät einbinden. Ein getrenntes Dateisystem garantiert auch, dass LilyPond nicht mehr Festplattenspeicher benutzt als erlaubt. @item Erstellung eines eigenen Benutzerkontos Es sollte ein eigener Benutzer und eine eigene Gruppe (z. B. @code{lily}/@code{lily}) mit geringen Rechten für die Ausführung von LilyPond innerhalb des Jails benutzt werden. Nur ein einziges Verzeichnis des Jails sollte für den Benutzer schreibbar sein und als @var{Arbeitsverzeichnis} an @code{lilypond} übergeben werden. @item Einrichtung des Jails LilyPond muss zahlreiche Dateien für die Ausführung einlesen. All diese Dateien müssen in das Jail-Verzeichnis kopiert werden (mit denselben Pfaden wie im tatsächlichen Wurzel-Dateisystem). Die gesamte LilyPond-Installation (typischerweise @file{/usr/share/lilypond}) sollte kopiert werden. Falls Probleme auftreten, ist es am einfachsten, Lilypond mittels @command{strace} zu starten, wodurch Sie relativ leicht feststellen können, welche Dateien im Jail noch fehlen. @item Ausführung von LilyPond In einem mit @code{noexec} eingebundenen Jail ist es nicht möglich, externe Programme auszuführen. Daher muss LilyPond auf eine Art gestartet werden, die keine weitere Ausführung von Programmen benötigt. Wie bereits erwähnt muss LilyPond mit Administrator-Rechten gestartet werden (die es allerdings sofort wieder abgibt), beispielsweise mittels @command{sudo}. Außerdem ist es eine gute Idee, die LilyPond zur Verfügung stehende CPU-Zeit zu limitieren (z. B. mit @command{ulimit -t}) und -- falls das Betriebssystem dies unterstützt -- auch den zur Verfügung stehenden Hauptspeicher. @end table @item -v,--version Gibt die Versionsnummer aus. @item -V,--verbose Gibt ausführliche informative Meldungen aus: Zeigt die vollen Dateipfade aller gelesenen Dateien sowie Informationen über die Laufzeit. @item -w,--warranty Zeigt die Garantiebedingungen an, unter denen GNU LilyPond steht. (Es besteht @strong{KEINERLEI GARANTIE}!) @end table @node Proměnné prostředí @unnumberedsubsec Proměnné prostředí @translationof Environment variables @cindex LANG @cindex LILYPOND_DATADIR @cindex Proměnné, prostředí @cindex Proměnné prostředí @command{lilypond} erkennt und benützt die folgenden proměnné prostředí: @table @code @item LILYPOND_DATADIR Diese Variable gibt das Verzeichnis an, wo Lilypond seine eigenen Dateien, Meldungen und Übersetzungen finden kann. Dieses Verzeichnis sollte Unterverzeichnisse @file{ly/}, @file{ps/}, @file{tex/}, etc. beinhalten. @item LANG Gibt die Sprache an, in der Warnungen und chybová hlášení ausgegeben werden. @item LILYPOND_GC_YIELD Mit dieser Variable (mit Werten zwischen 0 und 100) kann die Feinabstimmung zwischen dem Bedarf an Hauptspeicher und Rechenleistung bei der Ausführung von LilyPond durchgeführt werden. Bei höheren Werten benutzt LilyPond mehr Hauptspeicher, benötigt aber weniger Prozessor-Leistung. Bei niedrigeren Werten wird mehr Prozessor-Zeit, dafür weniger Hauptspeicher benötigt. Voreinstellung ist ein Wert von @code{70}. @end table @node LilyPond v žaláři chroot @unnumberedsubsec LilyPond v žaláři chroot @translationof LilyPond in chroot jail Einen Server einzurichten, der LilyPond in einem chroot-Kerker bedient, ist recht kompliziert. Die einzelnen Schritten finden sich unten aufgeliestet. Beispiele sind für Ubuntu Linux und erfordern evtl. die Benutzung von @code{sudo} an den entsprechenden Stellen. @itemize @item Installieren Sie die nötigen Pakete: LilyPond, GhostScript und ImageMagick. @item Erstellen Sie einen neuen Benutzer mit dem Namen @code{lily}: @example adduser lily @end example @noindent Hierdurch wird auch eine Gruppe @code{lily} und ein Heimat-Ordner @code{/home/lily} für den neuen Benutzer erstellt. @item Im Heimat-Ordner des Benutzers @code{lily} erstellen Sie eine Datei, die als eigenes Dateisystem eingesetzt wird: @example dd if=/dev/zero of=/home/lily/loopfile bs=1k count= 200000 @end example @noindent In diesem Beispiel wird eine 200-MB-Datei als Kerker-Dateisystem erstellt. @item Erstellen Sie ein loop device, erstellen Sie ein Dateisystem und mounten Sie es, dann erstellen Sie dort einen Ordner, in dem der Benutzer @code{lily} Schreibrechte hat: @example mkdir /mnt/lilyloop losetup /dev/loop0 /home/lily/loopfile mkfs -t ext3 /dev/loop0 200000 mount -t ext3 /dev/loop0 /mnt/lilyloop mkdir /mnt/lilyloop/lilyhome chown lily /mnt/lilyloop/lilyhome @end example @item In der Konfiguration des Servers ist der Kerker (JAIL) @code{/mnt/lilyloop} und das Verzeichnis (DIR) @code{/lilyhome}. @item Erstellen Sie einen großen Verzeichnisbaum in dem Kerker, indem Sie die notwendigen Dateien dorthin kopiert, wie das Beispielskript unten zeigt. Sie könne @code{sed} benutzen, um die notwendigen Kopierbefehle für ein bestimmtes Programm zu erstellen: @example 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 @end example @end itemize @subheading Beispiel-Skript für 32-bit Ubuntu 8.04 @example #!/bin/sh ## defaults set here username=lily home=/home loopdevice=/dev/loop0 jaildir=/mnt/lilyloop # the prefix (without the leading slash!) lilyprefix=usr/local # the directory where lilypond is installed on the system lilydir=/$lilyprefix/lilypond/ userhome=$home/$username loopfile=$userhome/loopfile adduser $username dd if=/dev/zero of=$loopfile bs=1k count=200000 mkdir $jaildir losetup $loopdevice $loopfile mkfs -t ext3 $loopdevice 200000 mount -t ext3 $loopdevice $jaildir mkdir $jaildir/lilyhome chown $username $jaildir/lilyhome cd $jaildir mkdir -p bin usr/bin usr/share usr/lib usr/share/fonts $lilyprefix tmp chmod a+w tmp cp -r -L $lilydir $lilyprefix cp -L /bin/sh /bin/rm bin cp -L /usr/bin/convert /usr/bin/gs usr/bin cp -L /usr/share/fonts/truetype usr/share/fonts # Now the library copying magic 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 # The shared files for ghostscript... cp -L -r /usr/share/ghostscript usr/share # The shared files for ImageMagick cp -L -r /usr/lib/ImageMagick* usr/lib ### Now, assuming that you have test.ly in /mnt/lilyloop/lilyhome, ### you should be able to run: ### Note that /$lilyprefix/bin/lilypond is a script, which sets the ### LD_LIBRARY_PATH - this is crucial /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly @end example @node Chybová hlášení @section Chybová hlášení @translationof Error messages @cindex error messages @cindex Chybová hlášení Während der Verarbeitung einer Dateien können diverse Meldungen an der Kommandozeile auftreten: @table @emph @item Warnung (Warning) @cindex Warnung Irgendetwas ist verdächtig. Wenn Sie etwas Ungewöhnliches in Ihrer Datei durchführen, dann werden Sie die Meldung verstehen und können sie gegebenenfalls ignorieren. Im Normalfall jedoch bedeutet eine Warnung, dass mit Ihrer Datei etwas nicht stimmt, LilyPond jedoch trotzdem versucht, die Datei soweit wie möglich korrekt zu übersetzen. @item Fehler (Error) @cindex Fehler Irgendetwas stimmt definitiv nicht. Der aktuelle Bearbeitungsschritt (Einlesen, Interpretieren oder Formatieren der Datei) wird noch fertig ausgeführt, danach bricht die Bearbeitung aber ab. @item Fataler Fehler (Fatal error) @cindex Fataler Fehler Irgendetwas stimmt definitiv nicht und LilyPond kann nicht weiter ausgeführt werden. Dies ist nur sehr selten der Fall, meist sind die Schriftarten nicht korrekt installiert. @item Scheme Fehler (Scheme error) @cindex Fehlerprotokoll, Scheme @cindex Scheme Fehler Fehler, die während der Ausführung von Scheme-Code auftreten, werden vom Scheme-Interpreter aufgefangen und an der Kommandozeile ausgegeben. Wenn Sie LilyPond mit der @code{--verbose} Option (auch @code{-V}) ausführen, wird der sogenannte @q{Call trace} ausgegeben, der die aufgerufenen Funktionen zur Zeit des Fehlers angibt. @item Programmierfehler (Programming error) @cindex Programmierfehler Eine interne Inkonsistenz ist aufgetreten. Diese chybová hlášení sollen den Programmierern die Fehlersuche erleichtern und können meistens einfach ignoriert werden. In manchen Fällen werden so viele Meldungen ausgegeben, dass die Lesbarkeit der restliche Ausgabe davon beeinträchtigt wird. @item Abgebrochen (core dumped) Dies bezeichnet einen ernsten Programmierfehler, der das Programm zum Absturz gebracht hat. Solche Fehler werden als kritisch angesehen. Falls daher einer auftritt, senden Sie bitte einen Bug-Report! @end table @cindex Chybové hlášení, formát @cindex Formát chybového hlášení Wenn Warnungen oder chybová hlášení mit einer konkreten Stelle in der Eingabedatei verknüpft werden können, dann hat die Meldung die folgende Form: @example @var{Dateiname}:@var{Zeile}:@var{Spalte}: @var{Meldung} @var{Fehlerhafte Eingabezeile} @end example Ein Zeilenumbruch wird in der fehlerhaften Zeile an jener Stelle eingefügt, wo der Fehler aufgetreten ist. Zum Beispiel @example test.ly:2:19: Fehler: keine gültige Dauer: 5 @{ c'4 e' 5 g' @} @end example Diese Stellen sind LilyPonds Vermutung, wo die Warnung oder der Fehler aufgetreten ist, allerdings treten Warnungen und Fehler ja gerade in unerwarteten Fällen auf. Manchmal kann Lilypond auch eine fehlerhafte Stelle zwar noch problemlos verarbeiten, ein paar Zeilen später wirkt sich der Fehler aber dann doch noch aus. In solchen Fällen, wo Sie in der angegebenen Zeile keinen Fehler erkennen, sollten Sie auch die Zeilen oberhalb der angegebenen Stelle genauer unter die Lupe nehmen. Mehr Information darüber findet sich in @ref{Častá chybová hlášení,,častých chybových hlášeních}. @node Častá chybová hlášení @section Častá chybová hlášení @translationof Common errors Chybová hlášení, die unten beschrieben werden, treten of auf, es ist jedoch nicht immer einfach, die Urache zu finden. Wenn der Fehler einmal verstanden ist, kann er einfach behoben werden. @menu * Noty ubíhají pryč ze strany:: * Ein zusätzliches System erscheint:: * Zřejmá chyba v @code{../ly/init.ly}:: * Chybové hlášení Nespojená proměnná %:: * Chybové hlášení FT_Get_Glyph_Name:: * Varování: staff affinities by měly jen klesat:: @end menu @node Noty ubíhají pryč ze strany @unnumberedsubsec Noty ubíhají pryč ze strany @translationof Music runs off the page Noten, die rechts aus der Seite herauslaufen oder sehr komprimiert aussehen, liegen in fast allen Fällen an einer falschen Notendauer einer Note, die dazu fürt, dass die letzte Note im Takt über die Taktgrenze hinwegdauert. Es ist nicht falsch, wenn die letzte Note eines Taktes über den Takt hinausdauert, weil einfach angenommen wird, dass sie im nächsten Takt fortgesetzt wird. Aber wenn eine längere Sequenz dieser überhängenden Noten auftritt, können die Noten sehr gedrängt aussehen oder über den Seitenrand fließen, weil die automatische Zeilenumbruchsfunktion einen Umbruch nur am Ende eines vollständigen Taktes einfügen kann, also wenn alle Noten zum Ende des Taktstriches auch wirklich aufhören. @warning{Eine falsche Dauer kann dazu führen, dass Zeilenumbrüche nicht möglich sein und die Zeile entweder sehr gedrängt dargestllt wird oder über den Seitenrand fließt.} Die falsche Dauer kann einfach gefunden werden, wenn Taktstrichüberprüfung eingesetzt wird, siehe @ruser{Takt- und Taktzahlüberprüfung}. If you actually intend to have a series of such carry-over measures you will need to insert an invisible bar line where you want the line to break. For details, see @ruser{Taktstriche}. @node Ein zusätzliches System erscheint @unnumberedsubsec Ein zusätzliches System erscheint @translationof An extra staff appears Wenn Kontext nicht explizit mit @code{\new} oder @code{\context} erstellt werden, werden sie vom Programm erstellt, sobald ein Befehl angetroffen wird, der im aktuellen Kontext nicht funktioniert. In einfachen Partituren ist diese automatische Erstellung sehr nützlich und die meisten Beispiele der LilyPond-Handbücher benutzen diese Schreiberleicherterung. Manchmal jedoch kann es vorkommen, dass durch die automatische Erstellung von Systemen aufeinmal unerwartete Notensysteme erstellt werden. Beispielsweise könnte man annehmen, dass folgendes Beispiel alle Notenköpfe in dem Notensystem rot macht, aber als Resultat hat man zwei Systeme, während die Notenköpfe immernoch schwarz im unteren System erscheinen. @lilypond[quote,verbatim,relative=2] \override Staff.NoteHead.color = #red \new Staff { a } @end lilypond Das liegt daran, dass kein @code{Staff}-Kontext existiert, wenn der @code{\override}-Befehl verarbeitet wird, sodass ein System für diesen Befehl erstellt wird. Dann aber erstellt @code{\new Staff} noch ein zusätzliches System, wo die Noten gesetzt werden. Die richtige Schreibweise wäre: @lilypond[quote,verbatim,relative=2] \new Staff { \override Staff.NoteHead.color = #red a } @end lilypond Ein zweites Beispiel zeigt, dass ein @code{\relative}-Befehl innerhalb von @code{\repeat} zwei Systeme erstellt, wobei der zweite etwas verschoben ist. Das liegt daran, dass @code{\repeat} zwei @code{\relative}-Umgebungen erstellt, die jede implizit einen @code{Staff}- und @code{Voice}-Kontext erstellen. @lilypond[quote,verbatim] \repeat unfold 2 { \relative c' { c4 d e f } } @end lilypond Indem man die @code{Voice}-Kontexte explizit erstellt, kann das Problem umgangen werden. @lilypond[quote,verbatim] \new Voice { \repeat unfold 2 { \relative c' { c4 d e f } } } @end lilypond @node Zřejmá chyba v @code{../ly/init.ly} @unnumberedsubsec Zřejmá chyba v @code{../ly/init.ly} @translationof Apparent error in @code{../ly/init.ly} Verschiedene seltsame chybová hlášení können über Syntax-Fehler in @file{../ly/init.ly} auftauchen, wenn die Eingabedatei nicht richtig formuliert ist, wenn sie etwa nicht richtig passende Klammerpaare oder Anführungszeichen enthält. Der üblichste Fehler ist das Fehlen einer geschweiften Klammer (@code{@}}) am Ende der @code{score}-Umbgebung. Die Lösung ist hier klar: überprüfen Sie, ob die @code{score}-Umgebung richtig beendet wurde. Die richtige Struktur einer Eingabedatei wird beschrieben in @rlearning{Wie eine LilyPond-Eingabe-Datei funktioniert}. Ein Editor, der die Klammerpaare automatisch anzeigt, ist sehr hilfreich, um derartige Fehler zu vermeiden. Eine weitere übliche Fehlerquelle ist kein Leerzeichen zwischen der letzten Silbe einer @code{lyrics}-Umgebung und der schließenden Klammer (@code{@}}). Ohne diese Trennung wird die Klammer als Teil der Silbe gewertet. Es bietet sich immer an, Leerzeichen vor und hinter @emph{jede} Klammer zu setzen. Wie wichtig das ist, wenn Gesangstext eingesetzt wird, siehe @ruser{Was ist Gesangtext}. Diese Fehlermeldung kann auch mit einem fehlenden schließenden Anführungszeichen (@code{"}) auftreten. In diesem Fall sollte die begleitende Fehlermeldung eine Zeilenzahl angeben, die dicht am Fehler liegt. Die nicht paarigen Anführungszeichen sind meistens ein oder zwei Zeilen darüber. @node Chybové hlášení Nespojená proměnná % @unnumberedsubsec Chybové hlášení Nespojená proměnná % @translationof Error message Unbound variable % Diese Fehlermeldung erscheint am Ende der Kommandozeilenausgabe oder in der Log-Datei mit einer Meldung @qq{GUILE signalled an error ...} jedes Mal, wenn eine Scheme-Routine aufgerufen wird, die (falscherweise) ein @emph{LilyPond}-Kommentar und kein @emph{Scheme}-Kommentar enthält. LilyPond-Kommentare befginnen mit dem Prozent-Zeichen (@code{%}) und dürfen nicht in Scheme-Routinen benutzt werden. Scheme-Kommentare beginnen mit einem Semikolon (@code{;}). @node Chybové hlášení FT_Get_Glyph_Name @unnumberedsubsec Chybové hlášení FT_Get_Glyph_Name @translationof Error message FT_Get_Glyph_Name Diese Fehlermeldung erscheint in der Kommandozeilenausgabe, wenn die Datei ein Zeichen enthält, das nicht zu ASCII gehört und die Datei nicht in UTF-8-Kodierung gespeichert wurd. Sie auch @ruser{Zeichenkodierung}. @node Varování: staff affinities by měly jen klesat @unnumberedsubsec Varování: staff affinities by měly jen klesat @translationof Warning staff affinities should only decrease Diese Warnung erscheint, wenn keine Notensysteme in der Ausgabe vorhanden sind, wenn etwa nur @code{ChordName}-Kontext und @code{Lyrics}-Kontext in einem Liedblatt vorhanden sind. Die Warnungen können vermieden werden, indem man einen der Kontexte als System erscheinen lässt, indem man ihm zu Beginn hinzufügt: @example \override VerticalAxisGroup.staff-affinity = ##f @end example Zu Einzelheiten siehe @qq{Abstand von Nicht-Notensystemzeilen} in @ruser{Flexible vertikale Abstände in Systemgruppen}.