设置 AUCTeX:LaTeX-mode-hook 不起作用

Posted

技术标签:

【中文标题】设置 AUCTeX:LaTeX-mode-hook 不起作用【英文标题】:Setting up AUCTeX: LaTeX-mode-hook does not work 【发布时间】:2014-03-21 03:53:31 【问题描述】:

我有一个奇怪的问题。当我像这样为 Latex 设置 AUCTeX 配置时

(require 'tex)
(TeX-global-PDF-mode t)

它对我有用。

但是当我通过放入 lambda 函数来更改代码时

(add-hook LaTeX-mode-hook (lambda ()
    (require 'tex)
    (TeX-global-PDF-mode t)
))

它不会起作用。

有人可以帮我吗?谢谢你。

【问题讨论】:

【参考方案1】:

尝试在LaTeX-mode-hook 的左侧添加一个'。另外,您需要(require 'tex)之前使用LaTeX-mode-hook

因为库 AUCTeX 定义了变量 LaTeX-mode-hook(即,使其存在),将 (require 'tex) 放在尚不存在的挂钩中将不起作用。 [见~/.emacs.d/elpa/auctex-11.87.3/latex.el的第5017行)

(require 'tex)

(add-hook 'LaTeX-mode-hook (lambda ()
  (TeX-global-PDF-mode t)
  ))

通常,我看到这个被使用:(setq TeX-PDF-mode t)。但是,关于存在名为TeX-global-PDF-mode 的函数,原始海报是正确的——参见~/.emacs.d/elpa/auctex-11.87.3/tex.el 的第1729 行。


(来源:lawlist.com)

【讨论】:

哦,我的 Emacs 仍然无法根据您的建议运行。 我刚刚验证它有效。如果您创建一个名为foo.tex 的文件并(从该新缓冲区,即foo.tex)使用M-x describe-variable RET TeX-PDF-mode RET,您将看到该值为t。您必须加载*.tex 文件才能触发LaTeX-mode-hook 确保(require 'package) (package-initialize) 在您的.emacs 文件的开头 -- 之前 任何与各种软件包安装相关的设置.我使用M-x list-packages进行安装,版本为auctex-11.87.3 在进行故障排除时,通常最有用的方法是消除所有潜在的冲突——例如,使用几乎空白/空的.emacs 文件,只进行最低限度的配置。在这种情况下,最低配置是(require 'package) (package-initialize),后跟我的答案中的代码。如果此时它不能正常工作,那么 Emacs 或 AUCTeX 的安装有问题。在这种情况下,请备份您的资料并重新开始。 谢谢,我修改了程序中的错误。您的信息让我更快地解决问题。【参考方案2】:

如果您的“init.el”中有以下行,请删除。

(load "preview-latex.el" nil t t)

虽然“auctex-reademe.txt”中建议了该行,但我认为 以下更合适。

(load "preview" nil t t)

【讨论】:

以上是关于设置 AUCTeX:LaTeX-mode-hook 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Emacs、AUCTeX 和自定义命令的缩进

Emacs Auctex 自定义语法高亮

如何搭建Emacs-LaTeX-make工具链

在emacs中使用不同的包存储库

如何调试 elisp?

vim-latex:达到线宽时如何自动回车?