lilypond-book 環境の \include された変数は展開されない

lilypond-book 環境の \include された変数は展開されない

私は、TeX 内で Lilypond を使用していくつかの音楽練習をタイプセットしています。プレーン コードは問題なく動作するようですが、再利用されるコードがたくさんあるため、変数を設定しようとしました。変数は取得されるものの、展開されないようです。

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}

含まれるファイルlilypond-variables.ly:

Ggrace = { \grace { g''32 } }

出力:

ここに画像の説明を入力してください

ご覧のとおり、「ハードコードされた」g の装飾音は問題ありませんが、生成されるはずの装飾音は\Ggrace表示されません。

\include私は(Lilypond のドキュメントで指定されている引用符付き) と(上記のような引用符と中括弧付き)を試しました。\inputその前には TeX コード内で標準の s を試しました\newcommandが、結果は同じでした。

装飾音符の組み合わせが非常に多いため、これはかなり大きな問題です。 最初はすべてハードコードしていたので、今後のコーディングが面倒でエラーが発生しにくくなると考えました。

macOS Sierra 10.12.5 (16F73) および TL 2016 を使用しています。

答え1

\includeを中括弧の外側に移動すると、コードは次のように正常に動作することがわかります。

% !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}

出力:

ここに画像の説明を入力してください

つまり、@egreg が示唆したように、これは実際には Lilypond の問題でした (解決策を示してくれた Lilypond リストの同僚に感謝します)。

関連情報