2

我编写了一个 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 中生成了一个错误,然后结束这个调用但仍然捕获错误文本?

4

2 回答 2

4
  1. 不要使用os.systemsubprocess而是使用模块。
  2. pdflatex有一个-interaction开关,可用于将其设置为非交互模式(您可能想要batchmodenonstopmodeIIRC,但您可以试验并查看每个选项的作用)。
于 2011-07-25T15:06:57.527 回答
1

将标志传递-interaction=nonstopmode给 LaTeX。

于 2011-07-25T15:07:12.503 回答