arara:制定规则,从章节文件编译主文件

arara:制定规则,从章节文件编译主文件

我真的很喜欢arara自动编译我的文档的工具-谢谢保罗和团队:)

我参与过几个项目,它们有一个主文件(比如说myfile.tex),其中\include包含其“章节”文件。一个典型的例子是

myfile.tex

% arara: pdflatex
\documentclass{article}

\begin{document}

\include{lions}

\end{document}

我可以arara正常运行此文件,并将选项传递给它(例如-v模式verbose)。

我希望能够运行arara我的“章节”文件

lions.tex

% arara: mainfile: {name: myfile}
hello world

我第一次尝试制定“规则”arara如下

mainfile.yaml

!config
# compile mainfile rule for arara
# author: Chris Hughes
# requires arara 3.0+
identifier: mainfile
name: The main file is ...
command: arara @{name}
arguments:
- identifier: name
  flag: <arara> @{parameters.name}

虽然这确实有效,但它并不是很完美,因为即使我运行

arara -v lions.tex

-v由于我没有将选项传递给命令,因此(以及任何其他选项)都被忽略了。

那么,我该如何制定arara规则来从章节文件中编译主文件?如果有更好的方法,arara我也想看看 :)

答案1

首先,非常感谢您的善意,克里斯。:)

我对 Marco 的回答印象深刻,他建议采用一种arara创新方法。:)就我个人而言,我更喜欢一种更简单的解决方案,如下所示。

正如 egreg 在评论中所建议的,如果编辑器提供了% !TEX root = ...arara将使用该指令中描述的文件执行。 这可能是最干净的解决方案。

我建议覆盖files指令参数以实现类似的目的,比如说

main.tex

% arara: pdflatex
\documentclass{article}

\begin{document}

\include{lions}

\end{document}

lions.tex

% arara: pdflatex: { files: [ main.tex ] }
hello world

我只是重复了主文件中的规则,覆盖了对当前文件的原始引用并指向我的主文件。files必须为每个指令覆盖参数指令arara

打电话时

$ arara lions.tex

ararapdflatex将在 上运行main.tex,而不是lions.tex

希望能帮助到你。:)

答案2

我想提供一个小的解决方案。

首先我想向你展示我的 yaml 规则:

!config
# Mainfile rule for arara
# author: Marco Daniel
# requires arara 3.0+
identifier: mainfile
name: Mainfile
command: <arara> arara @{options} "@{rootfile}"
arguments:
- identifier: rootfile
  flag: <arara> @{parameters.rootfile}
- identifier: options
  flag: <arara> @{parameters.options}

正如您所见,您必须选择。

  1. 您可以声明根文件的文件名。
  2. 您可以将选项传递给 arara。

要使用阿拉拉斯选项,如-v主执行必须允许该参数。

包含以下文件:

主文件

% arara: pdflatex
\documentclass{article}
\begin{document}
\include{lions}
\end{document}

狮子.tex

% arara: mainfile: { rootfile: mainfile , options: --verbose}
hello world as

你可以执行:

localhost:test marco$ arara -v lions

你将获得以下输出:

  __ _ _ __ __ _ _ __ __ _ 
 / _` | '__/ _` | '__/ _` |
| (_| | | | (_| | | | (_| |
 \__,_|_|  \__,_|_|  \__,_|

Running Mainfile... 

  __ _ _ __ __ _ _ __ __ _ 
 / _` | '__/ _` | '__/ _` |
| (_| | | | (_| | | | (_| |
 \__,_|_|  \__,_|_|  \__,_|

Running PDFLaTeX... 

This is pdfTeX, Version 3.1415926-2.4-1.40.13 (TeX Live 2012)
 restricted \write18 enabled.
entering extended mode
(./mainfile.tex
LaTeX2e <2011/06/27>
Babel <v3.8m> and hyphenation patterns for english, dumylang, nohyphenation, ge
rman-x-2012-05-30, ngerman-x-2012-05-30, afrikaans, ancientgreek, ibycus, arabi
c, armenian, basque, bulgarian, catalan, pinyin, coptic, croatian, czech, danis
h, dutch, ukenglish, usenglishmax, esperanto, estonian, ethiopic, farsi, finnis
h, french, friulan, galician, german, ngerman, swissgerman, monogreek, greek, h
ungarian, icelandic, assamese, bengali, gujarati, hindi, kannada, malayalam, ma
rathi, oriya, panjabi, tamil, telugu, indonesian, interlingua, irish, italian, 
kurmanji, latin, latvian, lithuanian, mongolian, mongolianlmc, bokmal, nynorsk,
 piedmontese, polish, portuguese, romanian, romansh, russian, sanskrit, serbian
, serbianc, slovak, slovenian, spanish, swedish, turkish, turkmen, ukrainian, u
ppersorbian, welsh, loaded.
(/usr/local/texlive/2012/texmf-dist/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/local/texlive/2012/texmf-dist/tex/latex/base/size10.clo)) (./mainfile.aux
 (./lions.aux)) (./lions.tex) [1{/usr/local/texlive/2012/texmf-var/fonts/map/pd
ftex/updmap/pdftex.map}] (./mainfile.aux (./lions.aux)) )</usr/local/texlive/20
12/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb>
Output written on mainfile.pdf (1 page, 11949 bytes).
Transcript written on mainfile.log.
Status: SUCCESS

Status: SUCCESS

相关内容