2012-02-26 8 views
6

私はlatexmk経由.tex文書をコンパイルするLatex, Emacs: automatically open *TeX Help* buffer on error and close it after correction of the error?から次の関数を使用します。.texファイルでC-c C-cは、この機能を実行するようAUCTeXのTeXコマンドリストに関数(latexmk variant)を追加するには?

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

は、どのように私はTeX-command-listに、この機能を「追加」することができますか?

を[.texファイル上で実行されたときC-c C-cがデフォルトとしてrun-latexmkを使用する必要があります]私は

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

を試してみましたが、それはメッセージで失敗します。TeX-command-expand: Wrong type argument: stringp, (function run-latexmk)(* *メッセージから取られた)

答えて

4

あなたはしたくありませんこれはシェルコマンドを実行するためのものです。TeX-run-commandを使用してください。あなたはTeX-run-functionを実行したいと思うでしょうが、あなたは(未テスト)を言う必要がありますので、それはまだ文字列として「機能」を取ります。

(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

、幻想的に見える幻想的な作品。多くのおかげで、イワン! –

+0

私は 'LaTeX-mode-hook'の' Tex-command-list'に複数のオプションを設定していますので、 'Cc Cc'の中のいずれかをシャープにすることができ、' TeX-command-default'として ' LaTeX-mode-hook'を使用していますが、コンパイルプロセス全体を実行するために別の関数を使用していますので、 'Cc Cc'から選択する必要はありません。 – CodyChan

+0

他の機能でlet-binding TeX-command-defaultを試してみてください。 (defun xxx()(let((TeX-command-default "my command"))))) –

関連する問題