2012-02-26 14 views
6

utilizo la siguiente función de Latex, Emacs: automatically open *TeX Help* buffer on error and close it after correction of the error? para compilar documentos .tex través latexmk:¿Cómo agregar una función (variante de latexmk) a TeX-command-list en AUCTeX?

(defun run-latexmk() 
    (interactive) 
    (let ((TeX-save-query nil) 
     (TeX-process-asynchronous nil) 
     (master-file (TeX-master-file))) 
    (TeX-save-document "") 
    (TeX-run-TeX "latexmk" 
       (TeX-command-expand "latexmk -pdf %s" 'TeX-master-file); adjusted 
       master-file) 
    (if (plist-get TeX-error-report-switches (intern master-file)) 
     (TeX-next-error t) 
     (progn 
    (demolish-tex-help) 
    (minibuffer-message "latexmk: Done"))))) 

¿Cómo puedo "añadir" esta función para TeX-command-list modo que C-c C-c en archivos .tex ejecuta esta función? [C-c C-c debe utilizar run-latexmk como predeterminada cuando se ejecuta en archivos .tex]

Probé

(add-hook 'LaTeX-mode-hook 
     (lambda() 
     (add-to-list 'TeX-command-list 
      '("latexmk" #'run-latexmk 
       TeX-run-command nil t :help "Run latexmk") t) 
     (setq TeX-command-default "latexmk"))) 

pero falla con el mensaje: TeX-command-expand: Wrong type argument: stringp, (function run-latexmk) (tomado de * Mensajes *)

Respuesta

4

Usted no quiere para usar TeX-run-command ya que es para ejecutar un comando de shell. Usted tendrá que ejecutar TeX-run-function, pero todavía tiene la "función" como una cadena por lo que debe decir (no probado):

(add-hook 'LaTeX-mode-hook 
    (lambda() 
    (add-to-list 'TeX-command-list 
      '("latexmk" "(run-latexmk)" 
      TeX-run-function nil t :help "Run latexmk") t) 
    (setq TeX-command-default "latexmk"))) 
+0

tiene un aspecto fantástico, funciona fantástico. Muchas gracias, Ivan! –

+0

Establecí varias opciones en 'Tex-command-list' en' LaTeX-mode-hook', así que puedo seleccionar cualquiera en 'Cc Cc', y configuré una de ellas como' TeX-command-default' en ' LaTeX-mode-hook', pero utilizo otra función para ejecutar todo el proceso de compilación, así que no tengo que elegir uno de 'Cc Cc', ¿cómo puedo usar el valor' Tex-command-default' en esa función? – CodyChan

+0

Pruebe let-binding-teX-command-default en su otra función, p. (defun xxx() (let ((TeX-command-default "mi comando")) ...)) –

Cuestiones relacionadas