我目前使用arara
它来为我的文件提供编译规则.tex
。我制作了许多tikz/pgfplots
文件,它们共享托管在一个header
文件中的通用设置,因此我可以轻松修改设置,然后使用 for 循环重新编译所有内容,例如
@FOR /R "rootdir" %%G in (.) DO (
@ Pushd %%G
@ for %%x in (*.tex) do arara "%%x"
@ Popd )
@pause
因为我在 Windows 机器上。
但是,这会启动/停止arara
很多次,并向终端抛出非常难看的日志记录。那么是否有规则,或者是否可以编写一个规则,以便arara
只启动一次并编译指定目录树中的所有文件。
答案1
它就像使用以下方式编写自己的规则一样简单listFilesByExtensions
(将其保存为all.yaml
文件旁边):
!config
identifier: all
name: All TeX files
commands:
- name: All
command: >
@{
a = [];
foreach(ref : listFilesByExtensions(".", ["tex"], true)) {
a.add(getCommandWithWorkingDirectory(ref.parent, [command, ref.name]));
}
return a;
}
arguments:
- identifier: command
flag: >
@{
parameters.command
}
default: pdflatex
然后写一个arararc.yaml
赞
!config
paths:
- ./
然后,您的header.tex
将包含% arara: all
目录树中的所有 TeX 文件,并且将按顺序编译它们。请注意,如果您确实调用了您的,header.tex
它header.tex
也将被编译。例如,您可以将其重命名为header.ltx
以避免这种情况。
1事实上,该规则的初稿需要修改。感谢 Paulo Cereda 提供更新后的规则。