在Python中检测并处理通过os.system调用生成的LaTeX警告/错误
我写了一个Python脚本,用来自动把Sweave/LaTeX文档转换成PDF文件。这里面最重要的部分是:
os.system("""echo "Sweave('%s.Rnw')" | R --vanilla --quiet"""%topic)
seq = ['p','b','p','b','p','p']
for op in seq:
if op is 'p':
os.system('pdflatex %s'%topic)
if op is 'b':
os.system('bibtex %s'%topic)
if op is 'l':
os.system('latex %s'%topic)
这个脚本运行得很好,如果没有错误的话。但是如果出现了LaTeX错误,我就会被带到LaTeX的命令行界面,比如:
[10]
! You can't use `macro parameter character #' in vertical mode.
l.625 #
?
这时候我需要手动退出这个界面。有没有办法让Python“知道”在执行os.system这个命令时出现了LaTeX错误,然后结束这个命令,同时还能捕获到错误信息呢?
2 个回答
1
给LaTeX加上一个参数 -interaction=nonstopmode
。
4
- 不要使用
os.system
,建议使用subprocess
模块。 pdflatex
有一个-interaction
选项,可以让它进入非交互模式(你可能想用batchmode
或nonstopmode
,如果我没记错的话,但你可以试试看每个选项的效果)。