Integration von LilyPond in LaTeX
LilyPond ist für sehr guten Notensatz bekannt, LaTeX für ebenso guten Text- und Formelsatz. Wer mithilfe von OpenSource-Tools druckreife musikwissenschaftliche Aufsätze, Analysen oder Lehrmaterialien herstellen will, hat sich sicher schon einmal den Kopf darüber zerbrochen ob man nicht beides kombinieren könnte. Hier wird erklärt, wie das geht.
von Winfried Hyronimus
In diesem Beitrag möchte ich die Möglichkeit vorstellen, den Notensatz von Lilypond nativ in LaTeX-Dokumente zu integrieren. Wer beide Systeme bereits einsetzt, weiß um deren Vorzüge und Notwendigkeiten, sodass eine ausführliche Besprechung dieser hier nicht erfolgen soll.
Dieser Beitrag berücksichtigt sowohl Windows- als auch Linux-Nutzer.
Voraussetzungen
- eine funktionierende LilyPond- und LaTeX-Installation
- ein Editor, empfehlenswert sind TeXStudio für LaTeX und Frescobaldi für LilyPond Code
Ein wichtiger Hinweis: Die benötigte Funktion, lilypond-book
, ist nach Lilypond-Version 2.20 nicht als .exe mitgeliefert. Windows-Nutzer sollten vorerst entweder bei Version 2.20 – die durchaus stabil ist – bleiben, oder lilypond-book
mit dem zusätzlichen Befehl python
aktivieren.
Funktionsweise
Projektanlage
Ein minimales Beispiel lässt sich mit zwei Dateien realisieren:
- eine Lilypond-Datei, Endung
.ly
, in die der LilyPond Code geschrieben wird - eine LaTeX-Datei, Endung
.lytex
– nicht.tex
! – in die der LaTeX-Code geschrieben wird. Die in 1.) bezeichnete.ly
-Datei wird mittels Markup:\lilypondfile{}
in diese .lytex
-Datei eingebunden.
Es empfiehlt sich, für jedes Projekt (LaTeX-Dokument mit LilyPond-Integration) einen eigenen Ordner anzulegen.
Kompilation
Sind beide Dateien einsatzbereit, erfolgt die Kompilation in zwei Schritten.
Der erste Schritt erfolgt durch die Übergabe der .lytex
-Datei an die lilypond-book
-Option des LilyPond-Compilers. Dieser erzeugt nun folgende neue Dateien:
- aus den
.ly
-Dateien entstehen Notensatz-Grafiken, pro.ly
-Datei eine EPS- oder PDF-Datei - aus der
.lytex
-Datei entsteht eine gleichnamige.tex
-Datei, die den LaTeX-Code unverändert beibehält, jedoch anstatt des Übergabebefehls\lilypondfile{}
für die.ly
-Dateien nun die Integration der aus den.ly
-Dateien erzeugten Notensatz-Grafiken.
Der zweite Schritt ist die Kompilation der erzeugten .tex
-Datei in eine PDF-Datei, die unsere endgültige Ausgabedatei darstellt. Dies erfolgt, wie üblich durch Aufruf des pdflatex-Compilers.
Hinweise zur Verwendung von lilypond-book
finden sich in der Dokumentation.
Hinweise
Alle Bearbeitungen finden ausschließlich in der .ly
-Datei und der .lytex
-Datei statt. Die erzeugte .tex
-Datei ist ein Zwischenprodukt. Änderungen an dieser würden bei der Wiederholung des ersten Kompilationsschritts von .lytex
+ .ly
nach .tex
überschrieben.
Bei der Kompilation entstehen viele temporäre Dateien, die jedoch später nicht mehr benötigt werden. Grundsätzlich stören sie nicht, können jedoch nach vielen Kompilationsvorgängen Unordnung im Verzeichnis bewirken. Hilfreich ist daher, diese regelmäßig oder automatisiert zu löschen.
Konfiguration
Setzen der PATH-Variable
Damit lilypond-book
direkt aufgerufen werden kann, muss der Installationspfad zur .exe / Binary-Datei in der Systemvariable PATH hinterlegt werden. Unter Windows lässt sich diese durch Anzeige der „Erweiterten Systemeinstellungen“ → „Umgebungsvariablen“ setzen. Ein neuer Eintrag mit dem entsprechenden Pfad wird angelegt, aussehen sollte dies nach dem Abspeichern etwa so:
Ob der gesetzte Wert richtig übernommen ist, kann durch Eingabe des Befehls lilypond-book
in der Eingabeaufforderung überprüft werden. Unter Linux sollten die Lilypond-Binaries bei der Installation bereits im Verzeichnis /usr/bin
gespeichert werden; ist dem nicht so, kann man durch Bearbeiten der Datei .bashrc
(im Nutzerverzeichnis) den entsprechenden Installationspfad hinterlegen:
export PATH="$PATH:/Lilypond-Verzeichnis"
Einrichten eines Befehls in TeXStudio
Grundsätzlich ist eine Kompilation von .lytex
-Dateien nach dem Setzen der PATH-Variable mit Aufruf zweier Konsolenbefehle möglich, im einfachsten Fall:
~$ lilypond-book beispielprojekt.lytex
~$ pdflatex beispielprojekt.tex
Um jedoch beide Kompilationsschritte effizient und leicht zugänglich zu machen, empfiehlt es sich, diese in ein Markup bzw. einen sog. Nutzerbefehl eines Editors wie TeXStudio zu integrieren.
Um in TeXStudio das Kompilieren mit lilypond-book
zu ermöglichen, öffnen wir die Konfiguration und dann deren Unterpunkt „Erzeugen“. Hier kann ein Nutzerbefehl angelegt werden, den wir „Lilypond:Lilypond“ nennen.
Unter Windows muss dieser wie folgt definiert werden:
cmd /c lilypond-book --format=latex --pdf ?me
Die Anweisung cmd öffnet die bekannte Windows-Eingabeaufforderung, mit /c
wird der Befehl für lilypond-book
übergeben. Die Parameter können frei angepasst werden. Durch die TeXStudio-spezifische Variable ?me
wird der Dateiname, sowie die passende Endung übergeben. Eine Übersicht der Variablen, die TeXStudio verwendet, findet sich unter „Befehle“.
Unter Linux muss der Aufruf folgendermaßen lauten:
lilypond-book %.lytex --latex-program=pdflatex --pdf
(Wir übergeben in beiden Fällen noch die Parameter für LaTeX, und die Ausgabe als PDF.) Es empfiehlt sich, für den angelegten Benutzerbefehl eine Tastenkombination festzulegen. Für mich hat sich die Kombination ALT + SHIFT + F1 für die Lilypond-Kompilation und STRG + F1 für die LaTeX-Kompilation bewährt.
Beispielprojekt
Wir legen zu Testzwecken einen Ordner für das Beispielprojekt an. Dort speichern wir, wie erläutert, zwei (sehr einfach gehaltene) Dateien:
Lilypond-Datei
\version "2.20.0"
\language "deutsch"
\relative c' {
c d e f g a h c
}
Unsere Lilypond-Datei mit dem Namen notenbeispiel.ly
enthält neben dem Versionshinweis und der Angabe zur Eingabesprache – diese wird für die Schreibweise h
statt b
benötigt – eine einfache C-Dur-Tonleiter.
Zur Kontrolle kann man die Datei kompilieren, das Resultat ist wenig überraschend:
LaTeX-Datei
Unsere LaTeX-Datei – beispielprojekt.lytex
– sieht folgendermaßen aus:
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lipsum}
\title{Lorem Ipsum}
\author{Winfried Hyronimus}
\begin{document}
\maketitle
\lipsum[1]
\begin{figure}[h]
\lilypondfile{notenbeispiel.ly}
\end{figure}
\lipsum[2]
\end{document}
Der interessante Teil ist der Befehl \lilypondfile{}
, mit dem das Notenbeispiel übergeben wird. Das lipsum
-Paket ermöglicht die Ausgabe von Dummy-Text, in den wir unser Notenbeispiel darstellungshalber einbinden. Es empfiehlt sich, Notenbeispiele ebenso wie andere Darstellungen mittels figure
-Umgebung einzuarbeiten.
Kompilation
Wir kompilieren zunächst per CLI-Aufruf.
Schritt 1:
lilypond-book --format=latex --pdf beispielprojekt.lytex
Im Verzeichnis sollte sich – neben generierten temporären Dateien – nun die beispielprojekt.tex
befinden.
Schritt 2:
pdflatex beispielprojekt.tex
Das Projekt sollte ohne Fehlermeldungen kompilieren:
Die gleiche Prozedur sollte sich problemlos im Editor mit entsprechendem Nutzerbefehl – der lediglich den Konsolenbefehl im Hintergrund aufruft – durchführen lassen. Der Compiler benötigt in jedem Fall die Parameter --format=latex
und --pdf
, sonst taucht in der Ziel-PDF nur eine leere Fläche auf.
Für einen effizienten Workflow empfiehlt es sich, zuerst das Notenbeispiel ganz auszuarbeiten und dann die Integration in LaTeX vorzunehmen. lilypond-book
passt dabei das Notenbeispiel der Umgebung an. Ein bereits kompiliertes und seitdem nicht geändertes Notenbeispiel wird automatisch nicht neu kompiliert, der Zwischenschritt von .lytex
nach .tex
muss jedoch beibehalten werden.
Verbesserungen am Beispielprojekt
Unser Projekt sieht noch nicht sehr wissenschaftlich aus – was für den ersten Versuch auch gar nicht stört. Wir fügen einige neue Markups ein:
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lipsum}
\usepackage{crimson}
\usepackage[font=scriptsize]{caption}
\captionsetup{justification=raggedright,singlelinecheck=false}
\title{Lorem Ipsum}
\author{Winfried Hyronimus}
\begin{document}
\maketitle
\lipsum[1]
\begin{figure}[h]
\lilypondfile[staffsize=14]{notenbeispiel.ly}
\caption{C-Dur-Tonleiter}
\end{figure}
\noindent\lipsum[2]
\end{document}
Der Befehl \lilypondfile
erhält den Parameter staffsize=14
. Hiermit wird die Größe der Notenzeilen eingestellt. Die \caption
in der figure
-Umgebung fügt einen Beschreibungstext hinzu. Im Kopfbereich des .lytex
-Dokuments aktivieren wir weiterhin das Paket crimson
, ein dezenter und sachlicher Schriftsatz – Geschmackssache natürlich. Mit dem Paket caption
und dem darauffolgenden Markup \captionsetup
wird die Beschreibung einer figure
nach links versetzt.
In der .ly
-Datei nehmen wir folgende Änderungen vor:
\version "2.20.0"
\language "deutsch"
\paper {
myStaffSize = #14
#(define fonts
(make-pango-font-tree "Crimson"
"Nimbus Sans"
"Luxi Mono"
(/ myStaffSize 20)))
}
lyr = {
\lyricmode { do re mi fa so la si do }
}
mus = \relative c' { \cadenzaOn
c d e f g a h c
}
\score {
<<
\new Voice = "one" {
\mus
}
\new Lyrics \lyricsto "one" {
\lyr
}
>>
}
Im Notenbeispiel soll ein einfacher Text eingeblendet werden, der natürlich die gleiche Schriftart verwenden soll wie das restliche LaTeX-Dokument. Dies geht mit der Deklaration der \paper
-Umgebung, wobei die erste mystaffsize-Anweisung mit der im .lytex
-Dokument angegebenen staffsize
des \lilypondfile{}
-Markups übereinstimmen muss. Der Reset auf den Wert 20 am Ende der \paper
-Umgebung ist notwendig – warum ist mir offen gestanden nicht bekannt.
Der Notentext sowie der Gesangstext werden nun in die Variablen mus
und lyr
abgespeichert. Die beiden Variablen werden in der \score
-Umgebung wieder aufgerufen. Näheres zum Setzen von Texten zur Lilypond-Notation findet sich in der Dokumentation. Der Befehl \cadenzaOn
vor unserer Tonleiter setzt das Metrum aus. Der Notentext kann völlig frei gesetzt werden, was für manche Darstellungen, speziell für Analysezwecke sehr vorteilhaft ist.
Wichtig: Um OTF-Schriftarten in LilyPond zu integrieren, müssen diese – wenn sie nicht automatisch erkannt werden – in das Verzeichnis Lilypond-Installationsverzeichnis\usr\share\lilypond\current\fonts\otf
, unter Linux /usr/share/lilypond/current/fonts
kopiert werden.
Das Ergebnis kann sich durchaus sehen lassen:
So simpel der Inhalt sein mag: Die Eleganz der Präsentation besticht.
Schlussbemerkung
Wer einmal damit angefangen hat, wird schnell begreifen dass die hohe Qualität des Schriftbildes und Satzes den meisten anderen Lösungen überlegen ist, und daher auch den u. U. höheren Einarbeitungsaufwand lohnt. Die Integration des Lilypond-Notensatzes in LaTeX ermöglicht eine Darstellung, die professionellen Ansprüchen genügt. Wer jedoch zum ersten Mal eine Hausarbeit damit abfassen möchte, sollte ausreichenden Vorlauf einplanen – die Lernkurve verträgt sich nicht mit jeder Abgabefrist. Unter Linux scheint die Bedienung weniger kompliziert, wenngleich beide Satzsysteme plattformunabhängig funktionieren.
Weiterführendes
- Für die Darstellung von Harmoniefolgen empfiehlt sich der Formelsatz von LaTeX, sowie das Paket
cancel
. Hiermit lässt sich durchgestrichener Text für verkürzte Akkorde setzen. - Mit
lilypond-book
lässt sich Lilypond-Notensatz auch direkt im Fließtext einbinden. - Geeignete Schriftsätze spezifisch für musikwissenschaftliche Texte sind neben Crimson (
crimson
) TexGyrePagella (pxfonts
), Utopia (fourier
) sowie auch Cardo (fbb
).
Kommentare