2012-02-26 16 views
6
Ben latexmk aracılığıyla .tex belgeleri derlemek için Latex, Emacs: automatically open *TeX Help* buffer on error and close it after correction of the error? aşağıdaki işlevini kullanın

:AUCTeX'te bir işlev (lateksmk varyantı) TeX-komut listesine nasıl eklenir?

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

nasıl .tex dosyalarında böylece TeX-command-list o C-c C-c için bu işlevi "add" olabilir bu işlevi yürütür? Ben

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

çalıştı

[.tex dosyalar üzerinde çalıştırıldığında C-c C-c varsayılan olarak run-latexmk kullanmalıdır] ancak iletisiyle başarısız olur: TeX-command-expand: Wrong type argument: stringp, (function run-latexmk) Sen istemiyoruz

cevap

4

(* Mesajlar * alınmıştır) Bir kabuk komutunu çalıştırmak için TeX-run-command kullanmak için. Sen TeX-run-function çalıştırmak istiyorum, ancak (denenmemiş) demeli bu yüzden hala bir dize olarak "işlevini" alır:

(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

harika görünüyor, fantastik çalışır. Çok teşekkürler, Ivan! –

+0

'LaTeX-mode-hook' içinde' Tex-command-list '' içinde birden fazla seçenek ayarlıyorum, böylece herhangi birini Cc Cc'ye atabiliyorum ve bunlardan birini 'TeX-command-default' olarak ayarlıyorum. LaTeX-mode-hook ', ama tüm derleme işlemini çalıştırmak için başka bir işlev kullanıyorum, bu yüzden Cc Cc'den birini seçmek zorunda değilim, bu işlevdeki" Tex-command-default "değerini nasıl kullanabilirim? – CodyChan

+0

Diğer işlevinize TeX-komut varsayılanını izin vermeye çalışın örn. (defun xxx() (let ((TeX-komut-varsayılan "komutum")) ...)) –

İlgili konular