我正在尝试将以下代码添加到我的 .emacs
初始化文件中:
(TeX-add-symbols '("eqref" TeX-arg-ref))
但我无法让它工作。从命令行运行 emacs t.tex
时出现以下错误(t.tex
是示例文本文件):
Warning (initialization): An error occurred while loading `.emacs':
Symbol's function definition is void: TeX-add-symbols
我在 Ubuntu 12.04 上使用 GNU Emacs 23.3.1 版。我的 .emacs
初始化文件看起来像
(setq TeX-auto-parse t)
(setq TeX-electric-escape t)
(setq reftex-label-alist '((nil ?e nil "~\\eqref{%s}" nil nil)))
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(setq reftex-plug-into-AUCTeX t)
(TeX-add-symbols '("eqref" TeX-arg-ref))
如果我输入 ESC-:
(即运行命令 eval-expression
)并输入
(TeX-add-symbols '("eqref"TeX-arg-ref))
在提示符下它工作正常。 (也就是说,在运行它之后,我可以在缓冲区中输入 \eqref
并且它按预期工作。但这不是一个好的解决方案,每次我编辑文件时都必须手动输入此代码。 . 这就是我尝试在 .emacs
文件中设置它的原因..)
这个问题的背景信息:
我在使用 AucTeX 样式 amsmath.el
时遇到问题。它似乎没有正确加载到我的机器上。有关详细信息,请参阅 Using \eqref with RefTeX .
最佳答案
你必须在 LaTeX-mode
激活后评估代码,否则你会得到错误 Symbol's function definition is void: TeX-add-symbols
。您可以将该函数添加到 LaTeX-mode
的钩子(Hook)中。为了覆盖可能的其他 eqref
宏定义,您应该将虚拟 (ignore)
添加到宏的定义中。在您的 .emacs
中,这段代码起到了作用:
(add-hook 'LaTeX-mode-hook
'(lambda ()
(TeX-add-symbols '("eqref" TeX-arg-ref (ignore)))))
https://stackoverflow.com/questions/17244255/