为跨平台项目提供自动编译程序的最优雅的方法是什么?

为跨平台项目提供自动编译程序的最优雅的方法是什么?

有很多不同的方法可以自动编译 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。这将负责根据需要运行lualatexbibermakeindex。除了 之外,无需指定项目所依赖的任何文件main.tex;这些依赖关系均由 决定latexmk

平台独立性

Latexmk在主要发行版 TeXLive 和 MiKTeX 中都默认安装。它可在所有主要操作系统上运行。它的唯一要求是正确安装TeX并可用PerlPerl在 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 搜索。这些程序的专家可以在此答案中添加指向这些说明所在位置的指针。

相关内容