emacs - 在 Emacs 初始化文件中添加一个 TeX 符号

我正在尝试将以下代码添加到我的 .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/

相关文章:

.net - 使用 "Enter"键作为分隔符拆分字符

MSMQ - 看不到公共(public)队列

c# - LINQ: "Types in Union or Concat are construct

text - 用负值归一化向量

node.js - 获取错误 : read ECONNRESET when trying to us

response - 如何在 mirth 中从另一个 channel 获得 Response

emacs - 读取文件时如何识别 VT-100 转义序列

three.js - 在 three.js 中使用 ShaderMaterials 重复纹理

amazon - master m3u8播放列表中的bandwidth属性是如何确定的?

r - 有没有办法在 R 中为每个顶点分配多个标签