有很多不同的方法可以自动编译 LaTeX 项目。
我想开始一个讨论,什么是最灵活、最优雅和最万能的方法来提供一个可以在所有操作系统、大多数程序和所有用户上快速编译的项目。
示例场景:我正在将一个“超级复杂项目”上传到 BitBucket 或类似平台。我想在 Linux 和 Windows 上处理它。如果其他人想贡献一些东西,他们只需阅读我的README.md
说法,例如“安装arara
并在 vim 中make
打开并在 Linux 或Windows 上main.tex
运行!准备好了!”:make
:! make
我没有使用过橡胶或乳胶,但我很想了解。如果您喜欢,请对此发表评论。
我现在的日常是:
在main.tex
% arara: lualatex: { shell: yes }
% arara: biber
% arara: makeglossaries
% !arara: indent: { overwrite : yes, trace : yes, files: [ header.tex, main.tex, chapter/Foo.tex, chapter/Bar.tex] }
在 vim 中编辑此文件并运行:make
以下内容Makefile
(摘录)
target = main
all: ararabuild
full:
ararabuild
ararabuild
ararabuild
ararabuild:
arara --log --verbose $(target)
view: ararabuild viewonly
viewonly:
evince $(target).pdf || AcroRd32.exe $(target).pdf
bib:
biber $(target)
%.pdf: %.tex
ararabuild $<
clean:
find . -name "*.log" | xargs rm -vf
find . -name "*.aux" | xargs rm -vf
find . -name "*.toc" | xargs rm -vf
find . -name "*.blg" | xargs rm -vf
find . -name "*.out" | xargs rm -vf
find . -name "build" | xargs rm -vf
这对我来说运行良好(除了跨平台的view
东西)。但我只是想看看有哪些技术,什么是最佳实践……或者简单:如何摆脱不同LaTeX
程序的所有配置、编译例程的解释等等。想象一下TeX
一家公司的模板。如果他们只需要使用一些熟悉的编辑器输入文本,然后(例如)双击某个批处理文件,那么提供起来就容易得多……
我希望可以在这里开始这样的讨论。TeX 自动化工具很酷,但直到现在它们的使用还不那么流行,而且在我看来,仍然缺少很酷的使用示例
答案1
为了方便使用latexmk
来制作/构建项目,请将文件放在latexmkrc
与其主要源文件相同的目录中main.tex
。对于问题中描述的项目, 的适当内容latexmkrc
是
$pdf_mode = 1;
$dvi_mode = $postscript_mode = 0;
$pdflatex = 'lualatex %O %S';
@default_files = ( 'main.tex' );
前两行只是告诉latexmk
要创建一个.pdf
文件,而不是其默认的.dvi
。第三行配置latexmk
使用lualatex
而不是其默认的pdflatex
,因为问题表明这是项目所必需的。第四行指定主要源文件的名称(取自问题)。
然后,要从命令行进行编译,用户只需将目录更改为项目的主目录,然后运行命令latexmk
。这将负责根据需要运行lualatex
、biber
和makeindex
。除了 之外,无需指定项目所依赖的任何文件main.tex
;这些依赖关系均由 决定latexmk
。
平台独立性
Latexmk
在主要发行版 TeXLive 和 MiKTeX 中都默认安装。它可在所有主要操作系统上运行。它的唯一要求是正确安装TeX
并可用Perl
。 Perl
在 Linux 和 OS-X 中默认安装,并包含在 MS-Windows 版本的 TeXLive 中。但在 MS-Windows 上运行 MiKTeX 的用户可能需要安装Perl
。
词汇表
问题还表明该项目使用词汇表。在latexmk
分发中请参阅http://www.ctan.org/tex-archive/support/latexmk/example_rcfiles查找一些如何latexmk
针对特殊情况进行配置的示例。其中一个示例涉及词汇表的情况。
与前端一起使用
对于不喜欢使用终端命令行的用户,可以配置 TeXShop、TeXWorks 等前端以使用latexmk
。用户应查阅其首选前端程序的文档和/或进行相应的 Google 搜索。这些程序的专家可以在此答案中添加指向这些说明所在位置的指针。