使用latexmk自动编译LaTeX

说明,本文所述内容基于Mac OS X+TeXLive 2016。在Windows和Linux平台下可以实现同样的功能,但需要修改部分命令,请自行搜索。


latexmk 是LaTeX自动编译工具。 与make等通用工具相比,latexmk更灵活、更有针对性。使用latexmk,可以实现LaTeX文档自动编译,指定输出目录等功能。

latexmk的参数可以在命令行指定,也可以在配置文件中指定。个人推荐使用配置文件,这样可以避免命令过长,也方便与其他工具集成。配置文件可以放置在4个位置:

  1. 系统目录,如 /usr/local/lib/latexmk/LatexMk ,视系统设置而定。
  2. 个人根目录, $HOME/.latexmkrc
  3. 当前LaTeX主文件所在目录, .latexmkrclatexmkrc 均可。
  4. 任何其他位置,执行 latexmk 时由 -r 参数指定。

执行 latexmk 时,会依次在上述位置查询配置文件。建议使用第3种,即在当前LaTeX主文件所在目录放置一个 latexmkrc 文件。

latexmkrc 文件示例:

$pdf_mode = 1;
$pdflatex = "xelatex -file-line-error --shell-escape -src-specials -synctex=1 -interaction=nonstopmode %O %S;cp %D %R.pdf";
$recorder = 1;
#$pdf_previewer = "SumatraPDF -reuse-instance -inverse-search -a %O %S";
$pdf_previewer = "open -a %S";
#连续编译模式
$preview_continuous_mode = 1;
$pdf_update_method = 0;
$clean_ext = "synctex.gz acn acr alg aux bbl bcf blg brf fdb_latexmk glg glo gls idx ilg ind ist lof log lot out run.xml toc dvi";
$bibtex_use = 2;
$out_dir = "temp";
#指定生成PDF文件的文件名,可以与LaTeX主文件名不一致
#$jobname = "Book";

使用上述设置,编译:

latexmk main.tex

latexmk 会根据情况,自动执行多次编译。编译完成后不退出,处于等待状态,监视源文件。一旦有更新,会实时编译,并刷新PDF阅读器(要求阅读器支持,如skim)。编译生成的文件都会输出到$out_dir指定的目录。但是,将最终的PDF文件复制到当前目录(代码第2行最后的命令)。

使用

latexmk -c

可以清空临时文件。临时文件对应的扩展名由 $clean_ext 指定。

VIM用户可以配合 vimtex 一起使用。


参考链接:

Comments

Comments powered by Disqus