lilypondfile 宏,以文件名作为参数

lilypondfile 宏,以文件名作为参数

我想写一本简单的乐谱,每页都有不同的曲调。我正在用 lilypond 写曲调。

为了使事情变得简单,我想编写一个宏来管理每个页面的布局(标题、短文、乐谱)。在这个宏中,我需要一个

\lily{path_to_score}

其中 path_to_score 是一个变量(需要针对每个新页面进行更改)。

我尝试定义一个宏

\newcommand{\lily}[1]{
\lilypondfile[quote,noindent]{#1}
}

但编译失败后

lilypond-book: error: file not found: #1

编译完成

lilypond-book --output=outputs --pdf MAIN.lytex
cd outputs
pdflatex -output-directory ../ MAIN.tex

按照文档的建议。

我已经研究过expandafter一些想法,但真的不确定它是如何运作的。

欢迎任何帮助,我昨天开始使用 Lilypond-book,所以对该领域完全陌生。

干杯!

答案1

该程序lilypond 书处理扩展名为“.lytex”的输入文件:
该程序lilypond 书创建一个扩展名为“.tex”的新文件。
扩展名为“.tex”的文件又由LaTeX 编译器并创建一个pdf文件。

该程序lilypond 书\begin{lilypond}..\end{lilypond}从 .lytex 输入文件中提取环境、\lilypond{..}命令、\lilypondfile{...}命令和命令的内容\musicxmlfile{...},然后依次调用百合池为每个提取的事物编写一个程序,从中生成一个图形文件,从中可以显示相应的音符集。
此外,lilypond 书程序使用 .lytex 输入文件的内容制作一个 .tex 文件,但.tex 文件包含的不是\begin{lilypond}..\end{lilypond}“-environments”和\lilypond“-/ \lilypondfile-/ -commands”,而是包含包含这些图形文件/.pdf 文件的指令。\musicxmlfile

事情是这样的:

\begin{lilypond}..\end{lilypond}环境和\lilypond-/ \lilypondfile-/ -\musicxmlfile命令是针对lilypond 书
程序。LaTeX 编译器不理解这些说明
LaTeX 编译器不需要,因为当LaTeX 编译器开始发挥作用,该程序lilypond 书已经用以下指令替换了 .tex 文件中的这些指令:LaTeX 编译器明白。

反之亦然,lilypond 书程序不理解 LaTeX 命令。它不需要理解这些命令,因为它们稍后将由LaTeX 编译器

但是,在您的场景中,您希望程序lilypond 书了解一个LaTeX宏,即LaTeX宏\lily

这不起作用。
lilypond 书固执地搜索\begin{lilypond}..\end{lilypond}环境和\lilypond-/ \lilypondfile-/ -\musicxmlfile命令,而不解释或执行周围的 LaTeX 代码。

如果 .lytex 输入文件显示

\newcommand{\lily}[1]{%
  \lilypondfile[quote,noindent]{#1}
}%

,然后程序lilypond 书只对短语作出反应\lilypondfile[quote,noindent]{#1},并“认为”\includegraphics{<graphics file>}应该将命令插入到它为LaTeX 编译器,并且百合池程序将被调用来处理名为#1以便生成相应的图形文件。

名为#1不存在。所以lilypond 书返回错误消息。


LaTeX 包lyLuaTeX提供调用方法百合池直接在 latex 编译期间进行。可能使用包lyLuaTeX代替lilypond 书是您的一个选择。

答案2

你应该看看我的 Lieder-Packagegithub。我认为,它提供了您需要的一切。您只需先排版每首歌曲,然后通过命令将其包含进去。它甚至应该与 lilypond-book 兼容。

答案3

正如 Ulrich Diez 所指出的,lyluatex允许这样的定义,但你应该注意一些注意事项,这些注意事项在文档。请参阅“示例”部分、“包装命令”小节(自版本 1.1.2 起为第 43 页)。

相关内容