6

我使用Latex、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-command-list以便C-c C-c在 .tex 文件中执行这个函数?[在 .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,因为那是用于运行 shell 命令。你会想运行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 回答