Frage

würde ich gerne verwenden latexmk Kompilierung meines LaTeX-Dokumente in Emacs. Vor allem muss ich die Emacs-Funktionalität next-error, die typischerweise mit C-x genannt `, und springt zum nächsten LaTeX-Fehler in dem Dokument.

möchte ich Anruf latexmk mag entweder C-x compile oder die AUCTeX C-c C-c verwenden.

Zuerst habe ich gesetzt latexmk zu verwenden

$pdflatex = 'pdflatex -interaction=nonstopmode';

Option 1: C-x Compile

I drücken C-x compile und Typ latexmk -pdf foo, die pdflatex läuft. Aber next-error wird den Fehler nicht springen, auch wenn die * Kompilation * Puffer enthalten Fehler:

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

Wie kann ich automatisch auf diesen Fehler springen in Zeile 48?

Beachten Sie, dass diese Frage der Parsen der Latex-Ausgang hat nichts mit latexmk direkt zu tun. Das gleiche Problem tritt auf, wenn ich C-x compile pdflatex -interaction=nonstopmode foo gerade tun.

Option 2: AUCTeX

Wie kann ich AUCTeX auf Anruf latexmk -pdf statt pdflatex auf meiner .tex-Datei? Natürlich möchte ich next-error an der Arbeit auch hier.

UPDATE: Ich begann ein Prämie , denn wenn dies funktioniert wäre es ein großes Werkzeug für viele Leute sein. Ich halte die Frage beantwortet, ob eine Lösung gegeben wird, das lässt mich einfach mein LaTeX Dokument kompilieren, um den Fehler mit latexmk in Emacs und springen next-error mit (natürlich könnte sein, die Fehler in enthalten .tex Dateien, nicht unbedingt in der Master-Datei oder den aktuellen Puffer).

UPDATE: Dank Ivan (und Chris) für latexmk Arbeit AUCTeX + machen. In der Zwischenzeit fand ich, dass mit Rubber LaTeX ist auch eine ausgezeichnete Wahl zu kompilieren. Es wird Fehlermeldungen in dem von gcc und anderen Compilern verwendete Format angezeigt werden, so dass es mit Emacs C-x compile natürlich arbeitet, z.B. C-x compile rubber --pdf foo und die Fehlermeldungen korrekt analysiert werden.

War es hilfreich?

Lösung

Leider habe ich nicht die Möglichkeit, Kommentar, oder ich würde gerade dies als Kommentar ein. Chris Conway Antwort funktioniert, außer dass es TeX-run-TeX statt TeX-run-command verwenden sollten, so dass AucTeX kennt die Fehlermeldungen zu verarbeiten.

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

Es könnte auch sinnvoll sein, etwas hinzuzufügen, wie

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

zu TeX-expand-list und Verwendung "latexmk %(-PDF) %s", so dass es im PDF- und dvi-Modus zu arbeiten. Persönlich finde ich es leichter anpassen zu verwenden, vor allem, wenn Sie experimentieren.

Andere Tipps

Es ist relativ einfach AucTeX zu bekommen mit C-c C-c läuft latexmk. Im Folgenden wird eine Latexmk Wahl in der Liste der TeX-Befehle hinzufügen:

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

Der Trick next-error zur Arbeit erhält. Wenn Sie in den AucTeX Quellen graben um, können Sie wahrscheinlich die Regex finden es auf TeX Ausgangspuffer verwendet; es wird nicht automatisch auf die von TeX-run-Befehl erstellt Puffer angelegt. (Sie können auch in der Lage sein compile Modus zu überzeugen, diese Regex zu verwenden.)

Ein weiterer Ansatz ist die Variable LaTeX-command neu zu definieren. Das ist ein bisschen iffy, weil ich eine Menge AucTeX Funktionen denken annehmen können sie Befehlszeilenoptionen auf diese Zeichenfolge und führen Sie das Ergebnis heften.

Hinzufügen% (Modus) gibt latexmk einige weitere Optionen wie noninteractive wenn es so in auctex eingestellt ist.

(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)))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top