我正在尝试将以下代码添加到我的.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。
(eval-after-load "latex" '(TeX-add-symbols '("eqref" TeX-arg-ref)))
- giordanoSymbol's function definition is void: TeX-add-symbols
) 应该已经被修复了,是吗?为了使eqref
起作用,您需要删除我在 TeX.SE 上建议的/var/lib
文件。 - giordanoC-h v TeX-symbol-list
时,eqref
没有被定义... - Håkon Hægland(add-hook 'LaTeX-mode-hook '(lambda () (TeX-add-symbols '("eqref" TeX-arg-ref))))
或(add-hook 'LaTeX-mode-hook '(lambda () (TeX-add-symbols '("eqref" TeX-arg-ref (ignore)))))
。 - giordanoLaTeX-mode-hook
会在 LaTeX 模式激活时立即运行,/var/lib/.../amsmath.elc
会在文件解析时加载,并且 AUCTeX 看到你的 LaTeX 源包含\usepackage{amsmath}
时也会加载。但是TeX-symbol-list
应该包含一个("eqref" 1)
和一个("eqref" TeX-arg-ref (ignore))
,AUCTeX 应该优先选择具有最长定义的那个,这种情况下是后者。这就是 AUCTeX 的工作原理,请参阅 AUCTeX 手册。 - giordano