Arara 规则用于自动编译目录树中的所有文件

Arara 规则用于自动编译目录树中的所有文件

我目前使用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.texheader.tex也将被编译。例如,您可以将其重命名为header.ltx以避免这种情况。

1事实上,该规则的初稿需要修改。感谢 Paulo Cereda 提供更新后的规则

相关内容