python - 检测并处理通过 Python 中的 os.system 调用生成的 LaTeX 警告/错误

标签 python error-handling latex sweave os.system

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

最佳答案

  1. 不要使用os.system,而是使用subprocess模块。
  2. pdflatex 有一个 -interaction 开关,您可以使用它将其设置为非交互模式(您可能需要 batchmodenonstopmode IIRC,但您可以尝试并查看每个选项的作用)。

关于python - 检测并处理通过 Python 中的 os.system 调用生成的 LaTeX 警告/错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6818102/

相关文章:

ruby-on-rails - 处理由机器人引起的应用程序错误的最佳实践是什么?

latex - 在 LaTeX 中指定图形宽度的数学运算符

pdf - dvi 代 : no bounding box

python - 在Python 3中创建一个脚本来比较两个CSV并将两者之间的异同输出到另一组CSV中

Python Pandas - Lambda 应用保持初始格式

python - 从 Kotlin 中另一个字符串中出现的字符串中删除字符

latex - 在文件名中包含一个带有空格的 .tex 文件

python - 使用 Numpy 计算一系列元素

java - Java SDK for REST API服务上的错误处理

ruby-on-rails - CSV 解析返回 "Unquoted fields do not allow\r or\n"但在源文件中找不到错误?