6

私はラテックス、Emacs から次の関数を使用します: エラー時に *TeX Help* バッファーを自動的に開き、エラーの修正後にそれを閉じますか? を介して.texドキュメントをコンパイルするにはlatexmk

(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 ファイルでこの関数を実行するTeX-command-listように、この関数を「追加」するにはどうすればよいですか? C-c C-c[ .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)(*Messages* から取得)

4

1 に答える 1

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")))
于 2012-02-26T23:01:39.673 に答える