\included-Variablen in Lilypond-Book-Umgebungen werden nicht erweitert

\included-Variablen in Lilypond-Book-Umgebungen werden nicht erweitert

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:

Bildbeschreibung hier eingeben

Wie Sie sehen, ist die „fest codierte“ Vorschlagsnote „g“ in Ordnung, aber die Noten, die sie erzeugen sollte, \Ggracewerden 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 \includeder 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:

Bildbeschreibung hier eingeben

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).

verwandte Informationen