在 Emacs 中保存 .tex 文件后自动运行 Latex 命令

在 Emacs 中保存 .tex 文件后自动运行 Latex 命令

每次保存 .tex 文件后,如何让 Emacs 调用 Latex 命令?

谢谢

一个解决方案:在玩 ELisp 并四处查看时,我将其添加到 .emacs 中,它似乎运行得很好(只是不要按C-x C-s得太频繁,比如每 5 秒一次):

(defun run-latex ()
    (interactive)
    (let ((process (TeX-active-process))) (if process (delete-process process)))
    (let ((TeX-save-query nil)) (TeX-save-document ""))
    (TeX-command-menu "LaTeX"))
(add-hook 'LaTeX-mode-hook (lambda () (local-set-key (kbd "C-x C-s") #'run-latex)))

与 latexmk 相比,此解决方案的优势在于它可以更快地投入使用,因为我无需自定义任何内容(并冒着犯错的风险)。此外,如果我想删除它,我只需(add-hook ...在 .emacs 中注释掉最后一行即可。

无论如何,latexmk 似乎也是另一条有趣的道路,当我有更多时间时我会尝试。

感谢您的回答和帮助。

答案1

请在此论坛中搜索latexmk,它可以满足您的要求。


编辑:请参见此处:在 emacs 中使用 latexmk 进行编译

如果您搜索“latexmk”和“emacs”,本论坛中还会有更多主题。

答案2

由于我的 elisp 技能相当差,我只能提出一个一般性的想法。使用TeX-sace-query和/或TeX-sace-document您可以重新绑定C-x C-s以先保存文件,然后TeX-run-TeX使用适当的参数运行。

顺便说一句,我的 中有以下内容.emacs

(require 'tex-buf)
(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 %t" 'TeX-master-file)
         master-file)
    (if (plist-get TeX-error-report-switches (intern master-file))
        (TeX-next-error t)
      (minibuffer-message "latexmk done"))))

(add-hook 'LaTeX-mode-hook
          (lambda () (local-set-key (kbd "C-0") #'run-latexmk)))

绑定C-0到 SAVE 然后运行 ​​latexmk。

相关内容