arara 根文件(编译主文件)

arara 根文件(编译主文件)

arara 手册第 21 页底部

指令上下文还具有另一个特殊参数,名为files ,该参数需要将文件名的非空列表作为纯字符串值。对于此列表的每个元素,arara 将复制当前指令并将正在迭代的元素指向当前值reference(解析为文件名的正确绝对规范路径)。

(5.x系列中的重要变化)第22页说:

arara 以前将文件名字符串引用作为file规则上下文中的变量。从版本 5.0 开始,已不再支持此变量。用户应该更喜欢该reference变量,因为它将文件名的绝对、规范表示保存为适当的 File对象。

第 14 页

我们的工具有两个保留供内部使用的名称: filesreference。请勿将它们用作参数标识符!

以及第 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 中被删除,注意是单数)和referencearara 传递到规则和指令上下文中的参数。您无法更改它们。files另一方面, 是您可以按照自己的方式设置的参数;在这里保留只是意味着您不能在自己的规则中调用参数files

因此,回答您的问题:您使用files来指定您的主文件是完全正确的。

挑剔:arara 不知道主文件的概念,它只执行您指示它执行的操作。因此,您实际上只是reference通过更明确地使用来覆盖 arara 的默认操作files

相关内容