Arara 在遇到方法 `writeToFile` 时报告错误

Arara 在遇到方法 `writeToFile` 时报告错误

考虑以下 LaTeX 文档,该文档以 Arara 脚本开头,该脚本由分布在 5 行中的单个指令组成。

% arara: halt if
% arara: --> exists(toFile('arara.file.temp'))
% arara: --> && (writeToFile('arara.var.doesTempExist', 't', false) || true)
% arara: --> ||
% arara: --> writeToFile('arara.var.doesTempExist', 'f', false)
\documentclass{article}
\begin{document}
Hello, world!
\end{document}

该脚本的目的是检查名为的文件是否arara.file.temp存在。如果存在,则应将字符串t写入文件arara.var.doesTempExist。如果不存在,则应将字符串f写入同一文件。

该指令halt在 Arara 用户指南 (v. 4.0) 的第 113 页中进行了描述,该方法exists在第 61 页中进行了描述,该方法toFile在第 59 页中进行了描述,该方法writeToFile在第 66 页中进行了描述(请注意,它返回布尔值并且永远不会引发异常)。

当我通过从命令行执行来运行该脚本arara test2(该文档位于名为的文件中test2.tex)时,报告了以下错误消息。

For whatever reason, I could not compile the expression in the
provided conditional. This part is quite tricky, since it
involves aspects of the underlying expression language. I will do
my best to help you in any way I can. There are more details
available on this exception:

DETAILS ---------------------------------------------------------
[Error: null pointer or function not found: writeToFile]
[Near :
{... false) || true) || writeToFile('arara.var.doesTem ....}]

                            ^
[Line: 1, Column: 105]

为什么我会收到此错误?我该如何修复它?

答案1

请注意,用户指南中的签名旁边writeToFile有一个R指示符。将其与签名CR旁边的指示符进行比较。表示该方法可以在指令中使用,而表示该方法可以在规则中使用(请参阅第 6 章的介绍,第 58 页)。由于没有,因此该方法不能在指令中使用。existsCRCwriteToFile

相关内容