我真的很喜欢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
arara
pdflatex
将在 上运行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}
正如您所见,您必须选择。
- 您可以声明根文件的文件名。
- 您可以将选项传递给 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