Domanda

Vorrei utilizzare latexmk per compilare il mio documenti LaTeX in Emacs. Soprattutto ho bisogno della funzionalità next-error Emacs, che in genere è chiamato con C-x `, e passa al successivo errore di LaTeX nel documento.

mi piacerebbe chiamata latexmk sia utilizzando C-x compile o C-c C-c AUCTeX.

In primo luogo, ho impostato latexmk ad uso

$pdflatex = 'pdflatex -interaction=nonstopmode';

Opzione 1: C-x compilazione

I stampa C-x compile e tipo latexmk -pdf foo, che corre pdflatex. Ma next-error non salterà agli errori, anche se la compilazione * * buffer contiene errori:

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

Come posso saltare automaticamente a questo errore in linea 48?

Si noti che questa domanda di analizzare l'output lattice non ha nulla a che fare con latexmk direttamente. Lo stesso problema si verifica quando Io faccio solo C-x compile pdflatex -interaction=nonstopmode foo.

Opzione 2: AUCTeX

Come posso impostare AUCTeX a latexmk -pdf chiamata invece di pdflatex sul mio file .tex? Naturalmente, voglio next-error al lavoro anche qui.

UPDATE: Ho iniziato un taglie , perché se questo ha funzionato sarebbe un ottimo strumento per molte persone. Ritengo che la domanda ha risposto se una soluzione è dato che mi permette di compilare facilmente il mio documento LaTeX usando latexmk in Emacs e saltate per gli errori usando next-error (naturalmente, gli errori potrebbero essere in file .tex inclusi, non necessariamente nel file master o buffer corrente).

UPDATE: Grazie a Ivan (e Chris) per rendere il lavoro AUCTeX + latexmk. Nel frattempo, ho trovato che l'uso di gomma per la compilazione LaTeX è anche una scelta eccellente. E 'per visualizzare i messaggi di errore nel formato utilizzato da gcc e altri compilatori, in modo che funziona naturalmente con Emacs C-x compile, per esempio C-x compile rubber --pdf foo, e l'errore messaggi vengono analizzati correttamente.

È stato utile?

Soluzione

Mi dispiace non hanno la possibilità di commentare, o vorrei solo aggiungere questo come un commento. opere risposta di Chris Conway, se non che dovrebbe usare TeX-run-TeX invece di TeX-run-command in modo che AucTeX conosce per elaborare i messaggi di errore.

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

Potrebbe anche essere saggio aggiungere qualcosa di simile

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

per TeX-expand-list e l'uso "latexmk %(-PDF) %s" in modo che possa lavorare sia in pdf e DVI modalità. Personalmente, trovo più facile da usare personalizzare soprattutto quando si sta sperimentando.

Altri suggerimenti

E 'relativamente facile da ottenere AucTeX a correre latexmk con C-c C-c. Di seguito aggiungerà una scelta Latexmk all'elenco dei TeX comandi:

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

Il trucco è sempre next-error al lavoro. Se si scava intorno nelle fonti AucTeX, si può probabilmente trovare l'espressione regolare che utilizza il buffer di uscita TeX; non è applicato automaticamente al buffer creato da TeX-run-comando. (Si potrebbe anche essere in grado di convincere la modalità compile utilizzare questo regex.)

Un altro approccio è quello di ridefinire la LaTeX-command variabile. Questo è un po 'incerto, perché credo che un sacco di funzioni AucTeX assumere possono virare opzioni della riga di comando su questa stringa ed eseguire il risultato.

L'aggiunta% (modalità) dà latexmk alcune altre opzioni come non interattivo se è impostato in modo in auctex.

(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)))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top