PythonでOS.Systemコールを介して生成されたラテックス警告/エラーを検出して処理します

StackOverflow https://stackoverflow.com/questions/6818102

質問

回転するスイーブ/ラテックスドキュメントをPDFSに自動化する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)

これはエラーがない場合にうまく機能しますが、ラテックスエラーがある場合、ラテックスのためにCLIに持ち込まれます。

[10]
! You can't use `macro parameter character #' in vertical mode.
l.625 #

? 

それから私はこれを手動で破る必要があります。 OS.SystemコールがLaTexでエラーを生成し、この呼び出しを終了し、それでもエラーテキストをキャプチャしたことをPythonに「知らせる」方法はありますか?

役に立ちましたか?

解決

  1. 使用しないでください os.system, 、 使用する subprocess 代わりにモジュール。
  2. pdflatex 持っています -interaction 非対話モードを配置するために使用できる切り替え(おそらく必要な batchmode また nonstopmode IIRCですが、各オプションが何をするかを実験して確認できます)。

他のヒント

渡します -interaction=nonstopmode ラテックスへのフラグ。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top