使用 arara 对 LaTeX 进行预处理

使用 arara 对 LaTeX 进行预处理

我编写了一个 perl 脚本 (teximporter),以方便在 LaTeX 中使用内联外来文本符号。通常,它会计算一组文件(图像、附件等)和一个 latex 替换字符串。示​​例:

\inline_abc[midi,width=\textwidth]{
X:1
T:Dó-Ré-Mi
K:Emaj
M:2/4
EF G2 | GG G2 | GA B2 | BB B2 | AG F2 | FF F2 | GF E>E|EE E2||
}

teximport ex.tex > _ti_ex.tex
pdflatex _ti_ex.tex

我们得到了预期的结果(一个 pdf 图像和一个 midi 附件), 在此处输入图片描述 为了隐藏命令行活动(对于 IDE),我决定尝试 arara。这是我的 teximporter.yaml

!config
identifier: teximporter
name: teximporter
commands:
-  teximporter -o "_ti_@{file}" "@{file}" 
-  pdflatex "_ti_@{file}" 
arguments: []

但最终的 pdf 文件的名称是错误的(_pi_ex.pdf而不是ex.pdf)。

如果可能的话,定义arara预处理器的良好配置的最佳方法是什么,能够在 Linux、Windows 和 Mac 中运行。

答案1

这并不是我的真正答案:所有的智慧都来自@cmhughes 和其他人(请参阅评论中的参考资料)。

所提出的配置存在一些问题:

  • 文件的 pdf 输出对 IDE 用户来说有问题:需要重a.tex命名_pi_a.pdf
  • 它强制使用pdflatex:需要参数

以下是新版本的配置teximporter.yaml

!config
identifier: teximporter
name: teximporter
commands:
-  <arara> teximporter -o _ti_@{file} @{file} 
-  <arara> @{engine} -jobname=@{getBasename(file)} _ti_@{file}

arguments:
- identifier: engine
  flag: <arara> @{parameters.engine}
  default: pdflatex

评论:

  • jobname=@{getBasename(file)}:将输出和辅助文件重命名为初始基本名称(a.pdfa.aux等)
  • @{engine} :定义一个参数(默认值:pdflatex)以便可以选择不同的 latex 引擎(lualatex 等)(从@cmhughes 复制)

要使用 teximporter 预处理器,请将以下内容添加到“tex”文件中:

% arara : teximporter

或者

% arara : teximporter: { engine : lualatex }

并且可以直接在TexWorks等IDE中使用arara作为处理器。

相关内容