| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Integrating music and text
In diesem Abschnitt soll die Integration von LilyPond mit den verschiedenen Dateiformaten detailliert erläutert werden.
| 3.2.1 LaTeX | ||
| 3.2.2 Texinfo | ||
| 3.2.3 HTML | ||
| 3.2.4 DocBook |
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof LaTeX
LaTeX ist der de-facto Standard zur Publikation von wissenschaftlichen Texten in Naturwissenschaft und Technik. Es basiert auf dem Schriftsetzer TeX, der die bestmögliche Typographie erzeugt.
Siehe die LaTeX2e-Kurzbeschreibung für eine Einführung in die Benutzung von LaTeX.
lilypond-book stellt folgende Befehle und Umgebungen zu Verfügung,
um Noten in LaTeX-Dateien einzufügen:
\lilypond{...}-Befehl, womit man direkt kurze
LilyPond-Codeabschnitte schreiben kann
\begin{lilypond}...\end{lilypond}-Umgebung, mit der
man längere LilyPond-Codeabschnitt direkt schreiben kann
\lilypondfile{...}-Befehl um eine LilyPond-Datei
einzufügen
\musicxmlfile{...}-Befehl um eine MusicXML-Datei
einzufügen, die dann von musicxml2ly und lilypond
bearbeitet wird.
In der Eingabedatei werden Noten mit beliebigen der folgenden Befehle angegeben:
\begin{lilypond}[Optionen,kommen,hierhin]
IHR LILYPOND-QUELLCODE
\end{lilypond}
\lilypond[Optionen,kommen,hier]{ IHR LILYPOND-QUELLCODE }
\lilypondfile[Optionen,kommen,hier]{Dateiname}
\musicxmlfile[Optionen,kommen,hier]{Dateiname}
|
Zusätzlich kann mit \lilypondversion die benutzte Versionsnummer
von LilyPond angezeigt werden. Der Aufruf von lilypond-book
liefert eine Datei, die dann mit LaTeX weiter verarbeitet werden kann.
Dies soll hier an einigen Beispielen gezeigt werden. Die lilypond-Umgebung
\begin{lilypond}[quote,fragment,staffsize=26]
c' d' e' f' g'2 g'2
\end{lilypond}
|
erzeugt
Die Kurzversion
\lilypond[quote,fragment,staffsize=11]{<c' e' g'>}
|
erzeugt
Innerhalb des \lilypond{} Befehls dürfen keine geschwungenen
Klammern { oder } vorkommen, weshalb dieser Befehl
nur mit der fragment-Option Sinn macht.
Die Standardzeilenlänge wird bestimmt, indem die Angaben in der Dokumentpräambel,
also dem Teil der LaTeX Datei vor dem \begin{document},
analysiert werden. Der lilypond-book-Befehl sendet diese
Angaben an LaTeX, um herauszufinden, wie breit der Text tatsächlich
ist. Die Breite der Notenzeilen wird dann an diese Textbreite angepasst.
Ein derartig heuristischer Algorithmus kann natürlich auch versagen,
wobei man in diesem Fall die Breite auch explizit durch die
line-width Option des \lilypond{} oder \begin{lilypond}
Befehls angeben kann.
Jedes Musikbeispiele ruft die folgenden Makros auf, wenn sie vom Benutzer definiert wurden:
\preLilyPondExample – wird vor der Musik aufgerufen,
\postLilyPondExample – wird nach der Musik aufgerufen,
\betweenLilyPondSystem[1] – wird zwischen den einzelnen
Systemen aufgerufen, wenn lilypond-book das Beispiel in verschiedene
PostScript Dateien getrennt hat. Dieser LaTeX-Befehl muss so definiert
werden, dass er genau ein Argument erhält, nämlich die Zahl der bereits
in LaTeX eingefügten Dateien dieses Beispiels. Als Standard wird einfach
ein \linebreak eingefügt.
Manchmal ist es nötig, Musikelemente wie Halte- oder Bindebögen so darzustellen, als ob sie am Ende des Musikausschnittes noch weitergehen würden. Eine solche Ausgabe kann erreicht werden, indem ein Zeilenumbruch in die Notenzeile eingefügt wird und die Ausgabe der folgenden Notenzeile unterdrückt wird.
In LaTeX wird dazu der Befehl \betweenLilyPondSystem einfach derartig
programmiert, dass die Ausgabe der einzelnen Notensysteme abgebrochen wird,
sobald die gewünschte Anzahl an Systemen erreicht ist. Da
\betweenLilyPondSystem zum ersten Mal nach dem ersten System aufgerufen
wird, ist die Ausgabe nur eines Systems trivial.
\def\betweenLilyPondSystem#1{\endinput}
\begin{lilypond}[fragment]
c'1\( e'( c'~ \break c' d) e f\)
\end{lilypond}
|
Um eine größere Zahl an System nötig, dann muss dementsprechend eine
TeX-Bedingung vor dem \endinput benutzt werden:
\def\betweenLilyPondSystem#1{
\ifnum##1<2\else\endinput\fi
}
|
Dieses Beispiel bricht nach genau zwei ausgegebenen Notenzeilen ab. Für eine andere Anzahl braucht nur ‚2‘ durch die entsprechende Anzahl ersetzt werden.
Die Definition von \betweenLilyPondSystem bleibt gültig,
bis TeX die aktuelle Umgebung in LaTeX verlässt oder der
Befehl durch eine neue Definition überschrieben wird.
Dies kann etwa folgendermaßen in der LaTeX-Datei geschehen:
\let\betweenLilyPondSystem\undefined |
Obige Definition von \betweenLilyPondSystem kann durch die
Definition eines TeX-Makros auch verallgemeinert werden,
\def\onlyFirstNSystems#1{
\def\betweenLilyPondSystem##1{\ifnum##1<#1\else\endinput\fi}
}
|
wobei diesem Makro \onlyFirstNSystems einfach die Anzahl der
gewünschten Systeme übergeben wird:
\onlyFirstNSystems{3}
\begin{lilypond}...\end{lilypond}
\onlyFirstNSystems{1}
\begin{lilypond}...\end{lilypond}
|
lilypond-book stellt auch zahlreiche Kommandozeilen-Optionen zur
Verfügung. Für eine Liste dieser Optionen und andere hilfreiche Details zur
Verarbeitung von LaTeX-Dokumenten, siehe lilypond-book aufrufen.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Texinfo
Texinfo ist das Standard-Dokumentationsformat des GNU Projekts. Ein Beispiel für ein Dokument im Texinfo Format ist dieses Handbuch, wobei die HTML-, PDF- und Info-Versionen alle aus demselben Texinfo Dokument erzeugt werden.
lilypond-book stellt die folgenden Befehle und Umgebungen
zur Verfügung, im Noten in Texinfo-Dateien einzufügen:
\lilypond{...}-Befehl, womit man direkt kurze
LilyPond-Codeabschnitte schreiben kann
\begin{lilypond}...\end{lilypond}-Umgebung, mit der
man längere LilyPond-Codeabschnitt direkt schreiben kann
\lilypondfile{...}-Befehl um eine LilyPond-Datei
einzufügen
\musicxmlfile{...}-Befehl um eine MusicXML-Datei
einzufügen, die dann von musicxml2ly und lilypond
bearbeitet wird.
In der Eingabedatei werden Noten mit folgenden Befehlen eingegeben:
@lilypond[Optionen,kommen,hier]
IHR LILYPOND-QUELLCODE
@end lilypond
@lilypond[Optionen,kommen,hier]{ IHR LILYPOND-QUELLCODE }
@lilypondfile[Optionen,kommen,hier]{Dateiname}
@musicxmlfile[Optionen,kommen,hier]{Dateiname}
|
Zusätzlich kann mit @lilypondversion die aktuelle Versionsnummer
von LilyPond angezeigt werden.
Wenn lilypond-book eine derartige Datei verarbeitet,
wird eine Texinfo-Datei mit der Erweiterung ‘.texi’ erzeugt,
die @image Befehle für die Ausgabe nach HTML, Info und PDF
enthält. lilypond-book erzeugt die entsprechenden Grafiken
der Musikbeispiele im EPS- und PDF-Format für die Ausgabe nach PDF
und im PNG-Format für die Ausgabe nach HTML und Info.
Hier sollen zwei einfache Beispiele gezeigt werden. Eine lilypond Umgebung
@lilypond[fragment] c' d' e' f' g'2 g' @end lilypond |
erzeugt
Die Kurzversion
@lilypond[fragment,staffsize=11]{<c' e' g'>}
|
erzeugt
Im Gegensatz zu LaTeX erzeugt @lilypond{...} allerdings keine Grafik
im Fließtext, sondern setzt sie immer in einen eigenen Absatz.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof HTML
lilypond-book stellt folgende Befehle und Umgebungen zur Noteneingabe
in HTML-Dateien zur Verfügung:
<lilypond ... />-Befehl, womit man direkt kurze
LilyPond-Codeabschnitte schreiben kann
<lilyond>...</lilypond>-Umgebung, mit der
man längere LilyPond-Codeabschnitt direkt schreiben kann
<lilypondfile>...</lilypondfile>-Befehl um eine LilyPond-Datei
einzufügen
<musicxmlfile>...</musicxmlfile>-Befehl um eine MusicXML-Datei
einzufügen, die dann von musicxml2ly und lilypond
bearbeitet wird.
In der Eingabedatei werden Noten mit folgenden Befehlen eingegeben:
<lilypond Optionen hier> IHR LILYPOND-QUELLCODE </lilypond> <lilypond Optionen hier: IHR LILYPOND-QUELLCODE /> <lilypond-Datei Optionen hier>Dateiname</lilypondfile> <musicxml-Datei Optionen hier>Dateiname</musicxmlfile> |
Man kann beispielsweise schreiben
<lilypond fragment relative=2> \key c \minor c4 es g2 </lilypond> |
lilypond-book erzeugt dann daraus eine HTML-Datei mit den entsprechenden
<image> Tags für die Musikbeispiele in jeweils einem eigenen Absatz.
Für Grafiken im Fließtext kann <lilypond ... /> benutzt werden, wobei
die Optionen durch einen Doppelpunkt von der Musik getrennt angegeben werden.
Musik <lilypond relative=2: a b c/> in derselben Zeile. |
Um Dateien mit Musik einzubinden, kann folgendermaßen vorgegangen werden:
<lilypondfile Option1 Option2 ...>Dateiname</lilypondfile> |
<musicxmlfile> hat die gleiche Syntax wie <lilypondfile>,
aber fügt anstelle der LilyPond-Datei eine MusicXML-Datei ein.
Eine Liste der Optionen, die man mit lilypond oder lilypondfile
benutzen kann, siehe Die Musikfragment-Optionen
Zusätzlich gibt <lilypondversion/> die aktuelle Versionsnummer
von LilyPond aus.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof DocBook
Bei der Einbindung von Musik im LilyPond-Format in DocBook soll die Konformität unseres DocBook Dokuments erhalten bleiben und damit die Bearbeiten mit DocBook-Editoren sowie die Validierung weiter möglich bleiben. Aus diesem Grund werden in DocBook keine eigenen Tags wie in HTML benutzt, sondern die von den vorhandenen DocBook-Elementen vorgegebenen Konventionen entsprechend benützt.
Für die Einbindung von LilyPond Code werden in allen Fällen die
mediaobject und inlinemediaobject Elemente benutzt,
die unsere Beispiele in einem eigenen Absatz oder im Fließtext
einfügen. Die Optionen zur Formatierung mit LilyPond werden dabei
in der role Eigenschaft des innersten Elements angegeben,
wie im nächsten Abschnitt gezeigt wird. Die DocBook Datei, die
dann von lilypond-book verarbeitet wird, sollte der Klarheit
halber die Dateierweiterung ‘.lyxml’ (jedenfalls nicht
‘.xml’) besitzen.
Dies ist der einfachste Fall: Die LilyPond-Datei besitzt die Erweiterung
‘.ly’ und wird einfach als imageobject eingebettet:
<mediaobject>
<imageobject>
<imagedata fileref="music1.ly" role="printfilename" />
</imageobject>
</mediaobject>
|
Für das äußerste Element kann je nach Bedarf mediaobject oder
inlinemediaobject benutzt werden.
Die Einbindung von LilyPond-Code direkt in der DocBook-Datei ist
durch die Benutzung von programlisting möglich,
wobei die Sprache auf lilypond gesetzt wird:
<inlinemediaobject>
<textobject>
<programlisting language="lilypond" role="fragment verbatim staffsize=16 ragged-right relative=2">
\context Staff \with {
\remove "Time_signature_engraver"
\remove "Clef_engraver"}
{ c4( fis) }
</programlisting>
</textobject>
</inlinemediaobject>
|
Das äußerste Element ist also mediaobject oder
inlinemediaobject, welches ein textobject mit dem
programlisting enthält.
Der Aufruf von lilypond-book mit der ‘.lyxml’-Datei
erzeugt ein gültiges DocBook-Dokument mit der Erweiterung ‘.xml’,
welches normal weiterverarbeitet werden kann. Bei Benutzung von
dblatex wird daraus
automatisch eine PDF-Datei erzeugt. Für die Erzeugung von HTML (HTML
Hilfe, JavaHelp, etc.) können die offiziellen DocBook XSL-Stylesheets
benutzt werden. Eventuell müssen dafür allerdings kleinere Anpassungen
vorgenommen werden.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] |
Dieses Dokument wurde erzeugt von gub am 13. Juli 2020 durch texi2html 1.82.
Andere Sprachen: English, català, español, français, italiano, 日本語.
Über die automatische Sprachauswahl.