平衡点
2026/02/18
_ AUCTeX と latexmk の連携(2026年版)
昔の話は以下
最近は typeset のコマンド調整などは latexmk に処理を任せてしまい,
AUCTeXは編集補助にしか使っていなかったのだけれど,
Emacs から latexmk を走らせても良いよね, という気分になったので.
AUCTeX の本体の方では以下のコミットで LaTeXMk のサポートが入った模様
しかしながら, Debian パッケージ版はちょっと古いので, じたばたと.
最終的には, 以下の様な感じで.
(leaf auctex
:if (and (executable-find "uplatex")
(executable-find "latexmk"))
:preface
;; -------------------------------------------------------------------------
;; Debian パッケージを利用するための調整
(add-to-list 'my:package-menu-exclude-packages "auctex")
(if (and (not (featurep 'text-site))
(file-directory-p "/usr/share/auctex"))
(progn
(add-to-list 'load-path "/usr/share/auctex")
(add-to-list 'load-path "/usr/share/emacs/site-lisp/auctex")))
;; -------------------------------------------------------------------------
(unless (file-directory-p (expand-file-name "auctex/auto" my:d:tmp))
(make-directory (expand-file-name "auctex/auto" my:d:tmp) t)
(make-directory (expand-file-name "auctex/style" my:d:tmp) t))
;; -------------------------------------------------------------------------
:mode ("\\.tex\\'" . japanese-latex-mode)
;; -------------------------------------------------------------------------
:hook
((emacs-startup-hook . (lambda ()
(load "auctex.el" nil t)
;; (load "preview-latex.el" nil t)
))
(LaTeX-mode-hook . (lambda ()
(add-to-list 'TeX-expand-list
'("%(-PDF)"
(lambda ()
(if TeX-PDF-mode
(cond
((eq TeX-engine 'default) "-pdf")
((eq TeX-engine 'uptex) "-pdfdvi")
((eq TeX-engine 'ptex) "-pdfdvi")
((eq TeX-engine 'xetex) "-pdfxe")
((eq TeX-engine 'luatex) "-pdflua")) ""))))
(add-to-list 'TeX-command-list
'("LaTeXmk" "latexmk %(-PDF) -pvc %(output-dir) %t"
TeX-run-format nil (latex-mode doctex-mode) :help "Run Latexmk"))
(setq TeX-command-output-list
'(("LaTeXmk" ("pdf"))))
(setq TeX-command-default "LaTeXmk")
(eglot-ensure)
(turn-on-reftex)
(TeX-source-correlate-mode)
(TeX-PDF-mode)
(LaTeX-math-mode)
))
)
:init
;; -------------------------------------------------------------------------
;; 基本設定
(setq TeX-auto-local (expand-file-name "auctex/auto" my:d:tmp)
TeX-style-local (expand-file-name "auctex/style" my:d:tmp)
TeX-auto-untabify t
TeX-engine 'uptex
TeX-source-correlate-method 'synctex
TeX-source-correlate-start-server t
TeX-source-correlate-mode t
TeX-ispell-extend-skip-list t
TeX-electric-sub-and-superscript t
;; -------------------------------------------------------------------
LaTeX-math-mode t
LaTeX-figure-label "fig:"
LaTeX-table-label "tab:"
LaTeX-section-label "sec:"
;; -------------------------------------------------------------------
reftex-plug-into-AUCTeX t
reftex-cite-prompt-optional-args t
;; -------------------------------------------------------------------
font-latex-fontify-script nil
font-latex-script-display nil
font-latex-fontify-sectioning 1.0
;; -------------------------------------------------------------------
;; TeX-auto-save t
;; TeX-parse-self t
;; TeX-master nil
)
)
ちなみにこれだと Emacs の裏でずっと latexmk が走り続けるので, どこかのタイミングでプロセスを止めなきゃだめなんだが, どうすっかなぁ.
あと TeX-command-list や TeX-expand-list は
defcustom な変数のハズなのに,
tex ファイルを開くと, 設定が全て無視されて初期値に戻る.
これはいったいどういう処理なんだろうか…
[ツッコミを入れる]