每次保存 .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
答案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。