我编写了一个 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 的 CLI,例如,
[10]
! You can't use `macro parameter character #' in vertical mode.
l.625 #
?
然后我需要手动摆脱这个问题。有没有一种方法可以让 Python “知道” os.system 调用在 LaTeX 中生成了错误,然后结束此调用但仍然捕获错误文本?
最佳答案
- 不要使用
os.system
,而是使用subprocess
模块。 pdflatex
有一个-interaction
开关,您可以使用它将其设置为非交互模式(您可能需要batchmode
或nonstopmode
IIRC,但您可以尝试并查看每个选项的作用)。
关于python - 检测并处理通过 Python 中的 os.system 调用生成的 LaTeX 警告/错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6818102/