
Ich setze gerade einige Musikübungen mit Lilypond in TeX. Normaler Code scheint gut zu funktionieren, aber ich habe viel Code, der wiederverwendet wird, also habe ich versucht, Variablen einzurichten. Die Variablen scheinen zwar aufgenommen, aber nicht erweitert zu werden.
MWE:
% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = LilyPond-Book
% !LILYPOND tex = xelatex
\documentclass{memoir}
\begin{document}
\begin{lilypond}
{
\include "lilypond-variables.ly"
\time 2/4
\grace { g''32 } g'4 \Ggrace a'4 \Ggrace b'4 \Ggrace c''4
\Ggrace d''4 \Ggrace e''4 \Ggrace f''4 g''4
a''2 g''4 f''4 \Ggrace e''4
\Ggrace d''4 \Ggrace c''4 \Ggrace b'4 \Ggrace a'4
\Ggrace g'4
\bar "||"
}
\end{lilypond}
\end{document}
Enthaltene Datei lilypond-variables.ly
:
Ggrace = { \grace { g''32 } }
Ausgabe:
Wie Sie sehen, ist die „fest codierte“ Vorschlagsnote „g“ in Ordnung, aber die Noten, die sie erzeugen sollte, \Ggrace
werden einfach nicht angezeigt.
Ich habe es mit \include
(mit Anführungszeichen, wie in der Lilypond-Dokumentation angegeben) und \input
(Anführungszeichen wie oben und Klammern) versucht und davor habe ich Standard \newcommand
-s im TeX-Code ausprobiert, aber das Ergebnis war dasselbe.
Da ich sehr viele Kombinationen von Vorschlagsnoten habe, ist das ein ziemlich großes Problem. Ich hatte sie ursprünglich alle fest codiert und dachte, ich könnte die zukünftige Codierung weniger schmerzhaft und fehleranfällig machen.
Verwende macOS Sierra 10.12.5 (16F73) und TL 2016.
Antwort1
Es stellt sich heraus, dass \include
der Code einwandfrei funktioniert, wenn er außerhalb der Klammern verschoben wird, und zwar wie folgt:
% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = LilyPond-Book
% !LILYPOND tex = xelatex
\documentclass{memoir}
\begin{document}
\begin{lilypond}
\include "lilypond-variables.ly"
{
\time 2/4
\grace { g''32 } g'4 \Ggrace a'4 \Ggrace b'4 \Ggrace c''4
\Ggrace d''4 \Ggrace e''4 \Ggrace f''4 g''4
a''2 g''4 f''4 \Ggrace e''4
\Ggrace d''4 \Ggrace c''4 \Ggrace b'4 \Ggrace a'4
\Ggrace g'4
\bar "||"
}
\end{lilypond}
\end{document}
Ausgabe:
Es handelte sich also tatsächlich um ein Lilypond-Problem, wie von @egreg vorgeschlagen (mit Dank an den Kollegen auf der Lilypond-Liste, der auf die Lösung hingewiesen hat).