2

Sweave/LaTeXドキュメントをPDFに変換することを自動化するPythonスクリプトを作成しました。最も重要な部分は次のとおりです。

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 #

? 

次に、これを手動で解除する必要があります。os.system呼び出しがLaTeXでエラーを生成したことをPythonに「認識」させ、この呼び出しを終了してもエラーテキストをキャプチャする方法はありますか?

4

2 に答える 2

4
  1. 使用せずos.systemsubprocess代わりにモジュールを使用してください。
  2. pdflatex-interaction非対話型モードにするために使用できるスイッチがあります(おそらくIIRCが必要ですが、各オプションの機能を実験して確認できます)batchmodenonstopmode
于 2011-07-25T15:06:57.527 に答える
1

-interaction=nonstopmodeフラグをLaTeXに渡します。

于 2011-07-25T15:07:12.503 に答える