![lilypond-book 环境中的 \include-ed 变量不会扩展](https://linux22.com/image/358333/lilypond-book%20%E7%8E%AF%E5%A2%83%E4%B8%AD%E7%9A%84%20%5Cinclude-ed%20%E5%8F%98%E9%87%8F%E4%B8%8D%E4%BC%9A%E6%89%A9%E5%B1%95.png)
我正在使用 TeX 中的 lilypond 排版一些音乐练习。纯代码似乎工作正常,但我有很多重复使用的代码,所以我尝试设置变量。变量似乎被拾取但没有扩展。
梅威瑟:
% !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
(使用上述引号和括号),在此之前,我还尝试过\newcommand
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}
输出:
因此,这实际上是@egreg 所建议的 Lilypond 问题(感谢 Lilypond 列表中指出解决方案的同事)。