2012-02-26 4 views
6

używam następującą funkcję z Latex, Emacs: automatically open *TeX Help* buffer on error and close it after correction of the error? do opracowania dokumentów .tex poprzez latexmk:Jak dodać funkcję (wariant latexmk) do listy poleceń TeX w 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"))))) 

Jak mogę „dodać” tę funkcję do TeX-command-list tak że C-c C-c w plikach .tex wykonuje tę funkcję? [C-c C-c powinien używać run-latexmk jako domyślny, gdy wykonywane na plikach .tex]

Próbowałem

(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"))) 

ale nie jest on z komunikatem: TeX-command-expand: Wrong type argument: stringp, (function run-latexmk) (wzięte od * Messages *)

Odpowiedz

4

nie chcesz używać TeX-run-command, ponieważ służy do uruchamiania polecenia powłoki. Będziesz chciał uruchomić TeX-run-function, ale nadal przyjmuje "funkcję" jako ciąg, więc powinieneś powiedzieć (untested):

(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

wygląda fantastycznie, działa fantastycznie. Wielkie dzięki, Ivan! –

+0

Ustawiam wiele opcji na 'liście poleceń Tex' w' LaTeX-mode-hook', więc mogę spakować dowolną z 'Cc Cc', i ustawię jedną z nich jako' Domyślna komenda 'TeX' w' LaTeX-mode-hook', ale używam innej funkcji do uruchomienia całego procesu kompilacji, więc nie muszę wybierać jednego z 'Cc Cc', jak mogę użyć wartości' Tex-command-default' w tej funkcji? – CodyChan

+0

Spróbuj opuścić domyślne polecenie TeX-a w innej funkcji, np. (defun xxx() (let ((domyślne polecenie TeX "moje polecenie")) ...)) –

Powiązane problemy