TLDR:使用latex-mode
or LaTeX-mode
(它们的意思相同),无需更改auto-mode-alist
,并LaTeX-mode-hook
用于挂钩到 AucTeX。
设置 AucTeX 可能会很混乱,因为它使用建议来覆盖 Emacs 对 TeX 和朋友的内置支持。
因此,在从 ELPA 安装 AucTeX 后,您应该会在 中看到以下内容C-h f latex-mode
:
This function has :override advice: ‘TeX-latex-mode’.
所有其他 tex 模式都相同,但 AucTeX 覆盖的模式列表取决于TeX-modes
变量的值。
该函数LaTeX-mode
没有在 AucTeX 中定义(还有吗?):它在核心 Emacs 中定义,并带有关于兼容性的神秘评论:
;; The following three autoloaded aliases appear to conflict with
;; AUCTeX. However, even though AUCTeX uses the mixed case variants
;; for all mode relevant variables and hooks, the invocation function
;; and setting of `major-mode' themselves need to be lowercase for
;; AUCTeX to provide a fully functional user-level replacement. So
;; these aliases should remain as they are, in particular since AUCTeX
;; users are likely to use them.
;; Note from Stef: I don't understand the above explanation, the only
;; justification I can find to keep those confusing aliases is for those
;; users who may have files annotated with -*- LaTeX -*- (e.g. because they
;; received them from someone using AUCTeX).
;;;###autoload
(defalias 'TeX-mode #'tex-mode)
;;;###autoload
(defalias 'plain-TeX-mode #'plain-tex-mode)
;;;###autoload
(defalias 'LaTeX-mode #'latex-mode)
这一切意味着,至少在 2021 年,您无需更改auto-mode-alist
即可使用 AucTeX;只需安装它就足以覆盖 Emacs 的内置功能。
不幸的是,还有最后一个混乱的来源。尽管LaTeX-mode
现在大多只是一个无用的别名latex-mode
,但事实证明,覆盖的 AucTeX 中的代码latex-mode
不会调用(它调用,这是不同的。所以变量,它们是 AucTeX 的变量(而不是内置的小写字母)与 Emacs 一起使用),仍然有用。latex-mode-hook
LaTeX-mode-hook
LaTeX-