arara 手册第 21 页底部
指令上下文还具有另一个特殊参数,名为
files
,该参数需要将文件名的非空列表作为纯字符串值。对于此列表的每个元素,arara 将复制当前指令并将正在迭代的元素指向当前值reference
(解析为文件名的正确绝对规范路径)。
(5.x系列中的重要变化)第22页说:
arara 以前将文件名字符串引用作为
file
规则上下文中的变量。从版本 5.0 开始,已不再支持此变量。用户应该更喜欢该reference
变量,因为它将文件名的绝对、规范表示保存为适当的File
对象。
第 14 页
我们的工具有两个保留供内部使用的名称:
files
和reference
。请勿将它们用作参数标识符!
以及第 16 页
reference
此变量将文件名的规范绝对路径表示保存为 File 对象。如果需要了解项目的层次结构,这将非常有用。由于引用是 Java 对象,因此我们可以使用 File 类中可用的所有方法。
我有一个名为的文件,file1.tex
它是 的一部分main.tex
。在 file1.tex 中% arara: lualatex: { files: [ main.tex ] }
,如果我编译 file1.tex,实际上就是开始编译主文件。
我问你的是:
由于英语不是我的母语,我对这些信息有点困惑,我需要澄清一下我是否% arara: ...
真的在编译主文件并且认为 file1.tex 不是主文件,或者我只是很幸运,{file: [main.tex] }
因为将命令更改为:
% arara: lualatex: { reference: [ main.tex ] }
我收到错误:
我读了指令 (3),发现使用了键“reference”。此键是保留的,因此您无法使用它。但不用担心,这应该很容易修复。只需用另一个名称替换它即可。
答案1
您在这里混淆了两件事:(file
在 v5 中被删除,注意是单数)和reference
arara 传递到规则和指令上下文中的参数。您无法更改它们。files
另一方面, 是您可以按照自己的方式设置的参数;在这里保留只是意味着您不能在自己的规则中调用参数files
。
因此,回答您的问题:您使用files
来指定您的主文件是完全正确的。
挑剔:arara 不知道主文件的概念,它只执行您指示它执行的操作。因此,您实际上只是reference
通过更明确地使用来覆盖 arara 的默认操作files
。