26

私はlatexmkを使用してEmacsでLaTeXドキュメントをコンパイルしたいと思います。特に、Emacs機能が必要ですnext-error。これは通常Cx `で呼び出され、ドキュメント内の次のLaTeXエラーにジャンプします。

またはAUCTeXlatexmkを使用して呼び出したいと思います。C-x compileC-c C-c

まず、latexmk使用するように設定しました

$pdflatex = 'pdflatex -interaction=nonstopmode';

オプション1:Cxコンパイル

を押しC-x compileて入力latexmk -pdf fooすると、実行されpdflatexます。ただしnext-error、*コンパイル*バッファにエラーが含まれている場合でも、エラーにジャンプすることはありません。

! Paragraph ended before \author was complete.
<to be read again> 
                   \par 
l.48 
[...]
Compilation exited abnormally with code 12 

48行目のこのエラーに自動的にジャンプするにはどうすればよいですか?

latexmkラテックス出力を解析するというこの質問は、直接関係がないことに注意してください。私がするだけでも同じ問題が発生しますC-x compile pdflatex -interaction=nonstopmode foo

オプション2:AUCTeX

.texファイルlatexmk -pdfではなく呼び出すようにAUCTeXを設定するにはどうすればよいですか?pdflatexもちろん、私next-errorもここで働きたいです。

更新:これがうまくいけば、多くの人にとって素晴らしいツールになるので、私は賞金を始めました。latexmkEmacsで使用してLaTeXドキュメントを簡単にコンパイルし、を使用してエラーにジャンプできるソリューションが提供された場合に回答された質問を検討しますnext-error(もちろん、エラーは含まれている.texファイルにある可能性があり、必ずしもマスターファイルや現在のファイルにあるとは限りません)バッファ)。

更新: AUCTeX + Latexmkを機能させてくれたIvan(およびChris)に感謝します。それまでの間、 Rubberを使用してLaTeXをコンパイルすることも優れた選択肢であることがわかりました。エラーメッセージは、他のコンパイラで使用されている形式で表示されるgccため、EmacsC-x compileなどで自然に機能しC-x compile rubber --pdf foo、エラーメッセージは正しく解析されます。

4

3 に答える 3

28

申し訳ありませんが、コメントする能力がありません。または、これをコメントとして追加します。AucTeXがエラーメッセージを処理することを認識できるよう に、TeX-run-TeX代わりに使用する必要があることを除いて、Chris Conwayの答えは機能します。TeX-run-command

(add-hook 'LaTeX-mode-hook (lambda ()
  (push 
    '("Latexmk" "latexmk -pdf %s" TeX-run-TeX nil t
      :help "Run Latexmk on file")
    TeX-command-list)))

次のようなものを追加することも賢明かもしれません

'("%(-PDF)"
  (lambda ()
    (if (and (not TeX-Omega-mode)
             (or TeX-PDF-mode TeX-DVI-via-PDFTeX))
        "-pdf" "")))

pdf と dvi モードの両方で動作するように使用TeX-expand-listします。"latexmk %(-PDF) %s"個人的には、特に試しているときは、customize を使用する方が簡単だと思います。

于 2010-02-11T22:01:08.030 に答える
3

%(mode) を追加すると、 auctex で非対話型に設定されている場合、latexmk にさらにいくつかのオプションが与えられます。

(add-hook 'LaTeX-mode-hook (lambda ()
  (push 
    '("Latexmk" "latexmk -pdf %(mode) %s" TeX-run-TeX nil t
      :help "Run Latexmk on file")
    TeX-command-list)))
于 2012-07-10T13:38:33.420 に答える