PythonでOS.Systemコールを介して生成されたラテックス警告/エラーを検出して処理します
-
26-10-2019 - |
質問
回転するスイーブ/ラテックスドキュメントを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に「知らせる」方法はありますか?
解決
- 使用しないでください
os.system
, 、 使用するsubprocess
代わりにモジュール。 pdflatex
持っています-interaction
非対話モードを配置するために使用できる切り替え(おそらく必要なbatchmode
またnonstopmode
IIRCですが、各オプションが何をするかを実験して確認できます)。
他のヒント
渡します -interaction=nonstopmode
ラテックスへのフラグ。
所属していません StackOverflow