使用python脚本编译LaTeX

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预览。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值