使用 arara 指令来自动化 lilypond-book 和 pdflatex

使用 arara 指令来自动化 lilypond-book 和 pdflatex

该问题类似于这里有一个正是基于引用的帖子,我才知道了 arara。

我正在尝试做的也是自动执行从文件生成 pdf 的多步骤过程music.lytex

lilypond-book --output=out --pdf music.lytex 
cd out/
pdflatex music.tex
pdflatex music.tex

我已经lilypond根据引用的帖子(指向araraconfig.yml)创建了规则:

!config
# Mainfile rule for arara
# author: Marco Daniel
# requires arara 3.0+
identifier: lilypond
name: Lilypond
command: <arara> lilypond-book @{format} @{options} @{output} "@{file}"
arguments:
- identifier: format
  flag: <arara> --format=@{parameters.latex-programm}
  default: <arara> --format=latex
- identifier: options
  flag: <arara> @{parameters.options}
- identifier: output
  flag: <arara> --output=@{parameters.output}

我希望了解规则是否正确配置以满足任务要求,以及应如何arara在 lytex 文件中准确配置指令。目前,我尝试了以下变体:

% arara: lilypond {options: --output=out --pdf music.tex}
% arara: pdflatex: { files: [ out/music.tex ] }

但我的结论是:

  __ _ _ __ __ _ _ __ __ _ 
 / _` | '__/ _` | '__/ _` |
| (_| | | | (_| | | | (_| |
 \__,_|_|  \__,_|_|  \__,_|

Apparently, there's an invalid directive at line 1. Please take a
look and fix it.

似乎该词lilypond-book需要出现在 arara 指令中,除非它来自。我尝试从文件中rule删除一些参数,但到目前为止,我的无知赢得了争论。commandrule.yaml

答案1

好消息。一位 arara 开发人员帮助我解决了这个问题。

解决方案其实很简单。唯一的限制是我们没有按照原计划将 lilypond-book 内容输出到子目录中。

在文件顶部music.lytex(按照参考文章中的指示配置 arara 后),添加以下两个指令:

% arara: lilypond: {options: "--pdf"}
% arara: pdflatex: { files: [ 'hymnal.tex' ] }

现在创建一个名为的文件,render.sh其中包含以下内容:

arara music.lytex
pdflatex music.tex
find . -maxdepth 1 -type d -name '??' -exec rm -rf {} \;
rm *.aux *.bcf *.dep *.out *.run.xml *.tex *.toc tmpx*
open music.pdf

并渲染通过使用 bash 调用来查看生成的 pdf 文件:

bash render.sh

Bash 脚本中间的三行:

pdflatex music.tex

这是因为 pdflatex 需要运行第二时间来生成目录。

find . -maxdepth 1 -type d -name '??' -exec rm -rf {} \;

此行的作用是删除 lilypond-book 命令创建的所有临时目录,如果生成到子目录(使用--output=out)标志,则这些临时目录将整齐地包含在其中。

rm *.aux *.bcf *.dep *.out *.run.xml *.tex *.toc tmpx*

所有其他可能干扰后续渲染的临时文件。注意:我可能最终决定(意识到).tex 文件需要不受干扰。

谢谢,arara 团队。arara 鸟万岁,巴西人的热情好客万岁!

相关内容