web-dev-qa-db-ja.com

エラーが発生したときに手動でLaTeXコンパイルを中止しないでください

お勧めのように here であるlatexmkは、ソースが変更されるたびにドキュメントを継続的にコンパイルするための便利な方法です。しかし、ドキュメントで作業していると、多くの場合エラーが発生し、latexはパニックに陥り、ユーザーの入力を待ってから続行します。特に最近私がlatexetherpad ドキュメントから直接コンパイルするために何かをハッキングしたとき、それは非常に迷惑になるかもしれません。

latexまたはlatexmkがコンパイルできない場合にエラーメッセージを表示して中止する設定はありますか?または、必要に応じて、LaTeXの苦情を自動的に却下するために、ある種のExpectスクリプトをどのように設定しますか?

pdflatexのオプション-halt-on-errorがうまくいくと思っていましたが、どうやらそうではありませんでした。)

おまけの質問:Mac OSXのスキムは、PDFが変更されたときに(プレビューとは異なり)自動更新される素敵なPDFビューアです例外ラテックスエラーが発生するたびに自動更新することを再確認します。 Texniscopeにはこの問題はありませんが、 その他の理由 のためにTexniscopeを破棄する必要がありました。 Skimを常に自動更新する方法はありますか、またはこれを正しく行う別のビューアがありますか?


追加:この質問への回答に基づくlatexmkのミニチュートリアル:

  1. ここでlatexmkを取得: http://www.phys.psu.edu/~collins/software/latexmk-jcc/

  2. 以下を~/.latexmkrcファイルに追加します。

    $pdflatex = 'pdflatex -interaction=nonstopmode';
    

    (Skimを備えたOS Xの場合)

    $pdf_previewer = "open -a /Applications/Skim.app";
    
  3. ソースファイルfoo.texの編集中に、ターミナルで次のコマンドを実行します。

    latexmk -pvc -pdf foo.tex
    
  4. Skim または別のリアルタイムpdfビューアを使用して、foo.pdfを表示します。 Skimの場合は、Skimの設定の[同期]タブを見て、エディター用に設定します。

出来上がり! foo.texで保存を押すと、foo.pdfが何かに触れずに更新されるようになりました。

65
dreeves

MikTeXでは、pdflatexに次のコマンドラインオプションがあります。

  -interaction=MODE               Set the interaction mode; MODE must be one
                                  of: batchmode, nonstopmode, scrollmode,
                                  errorstopmode.

@ 9999yearsによって提案された編集:

これらの値は、同じ機能を提供するLaTeX \commandsのセットと同等です。

TeXの使い方のヒント から:

これらのモードにより、TeXは次のように動作します。

  • errorstopmodeは、ソースコードのエラーか、存在しないファイルのエラーかを問わず、すべてのエラーで停止します。

  • scrollmodeはソースのエラーで停止しませんが、ファイルの欠落などのより深刻なエラーが発生したときに入力を要求します。

  • nonstopmodeのように誤解されている場合、TeXは重大なエラーの後で入力を要求しませんが、完全に停止します。

  • batchmodeは、それ以外のすべての出力を防止します(自動スクリプトでの使用を目的としています)。すべての場合において、すべてのエラーはログファイル(yourtexfile.log)に書き込まれます。

38

\nonstopmodeまたは\batchmode texファイルの最初に;そうすれば、pdflatexだけでなく、どのTeXバージョンでも動作します。これらおよび関連コマンドの詳細については、非常に優れた David Bausumによる(生の)TeXコマンドのリファレンス を参照してください。特に debugging family からのコマンドはここで興味深いかもしれません。

6
Elmar Zander

別の可能なハックは単に使用することです:

yes x | latexmk source.tex

常に「yes x |」のエイリアスを作成できます。このオプションをたくさん使用する場合は、latexmk '。私が他の提案より上に見ることができるこれの主な利点は、latexmkを時々このように動作させたいときに非常に速いということです。

メフメット

4
Mehmet

\batchmodeコマンドも機能します。

0
Grissiom