Hi Hongyi, >>>>> Hongyi Zhao <hongyi.z...@gmail.com> writes:
> Though the above method works, I meet a problem when the project LaTeX > files are large to some extent. To be more specific, when the project > is large to a certain extent, the compilation time of latexmk will be > relatively long, which may lead to the following race condition: When > the previous latexmk process has not ended, the subsequent latexmk > process is launched again. > Any hints for fixing this problem? Maybe the following stuff works, though I haven't test it. (defvar my-AUCTeX-process nil) (use-package smart-compile :init (declare-function smart-compile-string "smart-compile") (defun run-latexmk () (when (string-match ".tex$" (buffer-file-name)) (let ((buf (get-buffer "*Background TeX proccess*"))) (if (bufferp buf) (kill-buffer buf))) ;; flush previous log (unless (and (processp my-AUCTeX-process) (eq (process-status my-AUCTeX-process) 'run)) (setq my-AUCTeX-process (start-process-shell-command "Background TeX" "*Background TeX proccess*" ;; use an external application as the previewer ;;(smart-compile-string "latexmk -pv %f") ;; use pdf-tools (smart-compile-string "latexmk %f")))))) (define-minor-mode AutoTeX-mode "Mode for compiling latex sources and creating PDFs after saving." :global nil :lighter " Auto" (if AutoTeX-mode (add-hook 'after-save-hook 'run-latexmk t t) (remove-hook 'after-save-hook 'run-latexmk t))) :hook (LaTeX-mode . (lambda () (AutoTeX-mode 1)))) Regards, Ikumi Keita