\include-переменные в окружении lilypond-book не расширяются

\include-переменные в окружении lilypond-book не расширяются

Я набираю несколько музыкальных упражнений с помощью lilypond в TeX. Простой код, кажется, работает нормально, но у меня много кода, который используется повторно, поэтому я попытался настроить переменные. Переменные, кажется, подхватываются, но не расширяются.

МВЭ:

% !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(кавычки, как указано выше, и фигурные скобки), а до этого я пробовал стандартные \newcommands в коде TeX, но результат был тот же.

Поскольку у меня много-много комбинаций форшлагов, это довольно большая проблема. Я изначально жестко закодировал их все и подумал, что сделаю будущее кодирование менее болезненным и подверженным ошибкам.

Используется 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}

Выход:

введите описание изображения здесь

Так что на самом деле это была проблема Lilypond, как предположил @egreg (с благодарностью и коллеге из списка рассылки Lilypond, который указал на решение).

Связанный контент