1. 顺序调用对应的编译器

可以使用python脚本调用command命令实现。在LaTeX项目根目录中创建“compile.py”,并添加以下内容(以下为使用BibTeX和nomencl时的配置):

#!/usr/bin/python
import subprocess, os

filename = 'xxx' # Change this into your main file name.

commands = [
    ['xelatex', '-output-directory=out', filename + '.tex'],
    ['biber', '--output_directory', 'out', filename],
    ['xelatex', '-output-directory=out', filename + '.tex'],
    ['xelatex', '-output-directory=out', filename + '.tex'],
    ['makeindex', 'out/' + filename + '.nlo', '-s', 'nomencl.ist', '-o', 'out/' + filename + '.nls', '-t', 'out/' + filename + '.nlg'],
    ['xelatex', '-output-directory=out', filename + '.tex'],
]

for c in commands:
    subprocess.call(c)

# Preview PDF.
os.startfile('out\\' + filename + '.pdf')

2. 使用latexmk

我们还可以使用latexmk进行编译,速度比前一种方法要快一些。如果用到了复杂的功能(如交叉引用)需要使用多个编译器的,要对.latexmkrc文件进行更改。以下为使用BibTeX和nomencl.latexmkrc文件的配置:

$out_dir="out"; # Output directory
$pdf_mode=5;
$xelatex="xelatex -synctex=1";
$xdvipdfmx="xdvipdfmx -q -E -o %D %O %S";
$clean_ext = 'thm bbl hd loe xdv run.xml';
$makeindex = 'makeindex -s gind.ist %O -o %D %S';

# Custom dependency and function for nomencl package 
add_cus_dep( 'nlo', 'nls', 0, 'makenlo2nls' );
sub makenlo2nls {
 system("makeindex \"$_[0].nlo\" -s nomencl.ist -o \"$_[0].nls\" -t \"$_[0].nlg\"" );
}

@default_files=('xxx.tex') # Change this into your main file name.

在LaTeX项目根目录中创建“compile.py”,并添加以下内容:

#!/usr/bin/python
import subprocess, os

filename = 'xxx' # Change this into your main file name.

# Config the '.latexmkrc' file then run the following command.
subprocess.call(['latexmk'])

# Preview PDF.
os.startfile('out\\' + filename + '.pdf')

之后运行“compile.py”即可完成编译与PDF预览。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐