Я хотел бы использовать latexmk для компиляции моих документов LaTeX в Emacs. Особенно мне нужна функциональность Emacs next-error
, которая обычно вызывается с C-x `и переходит к следующей ошибке LaTeX в документе.
Я хотел бы позвонить на latexmk
, используя C-x compile
или AUCTeX C-c C-c
.
Сначала я установил latexmk
для использования
$pdflatex = 'pdflatex -interaction=nonstopmode';
Вариант 1: компиляция C-x
Я нажимаю C-x compile
и набираю latexmk -pdf foo
, который запускается pdflatex
. Но next-error
не будет переходить к ошибкам, даже если буфер * compilation * содержит ошибки:
! 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
Как я могу настроить AUCTeX для вызова latexmk -pdf
вместо pdflatex
в моем файле .tex? Конечно, я хочу, чтобы next-error
тоже работал здесь.
ОБНОВЛЕНИЕ: Я учредил вознаграждение , потому что, если бы это сработало, это было бы отличным инструментом для многих людей. Я считаю ответ на вопрос, если дано решение, которое позволяет мне легко скомпилировать мой документ LaTeX, используя latexmk
в Emacs, и перейти к ошибкам, используя next-error
(конечно, ошибки могут быть в , включая . текстовые файлы, не обязательно в основном файле или текущем буфере).
ОБНОВЛЕНИЕ: Спасибо Ивану (и Крису) за работу AUCTeX + Latexmk. Тем временем я обнаружил, что использование Rubber для компиляции LaTeX также является отличным выбором. Он будет отображать сообщения об ошибках в формате, используемом gcc
и другими компиляторами, поэтому он естественным образом работает с Emacs C-x compile
, например, C-x compile rubber --pdf foo
, и сообщения об ошибках анализируются правильно.