我想写一本简单的乐谱,每页都有不同的曲调。我正在用 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 兼容。