我最近在 emacs 24.4(win7+mac)上尝试了 auctex 11.88。到目前为止一切顺利!
当我使用 auctex11.87 时,我的 .emacs emacs 文件中曾经有以下内容(我在 stackexchange 的某个地方碰到过它)
(setq reftex-label-alist
'(
("theorem" ?h "thm:" "~\\ref{%s}" t ("theorem" "th."))
("lemma" ?l "lem:" "~\\ref{%s}" t ("lemma" "lem." ))
("exercise" ?x "ex:" "~\\ref{%s}" t ("exercise" "ex." ))
("question" ?q "ques:" "~\\ref{%s}" t ("question" "q." ))
))
(add-hook 'LaTeX-mode-hook
(lambda ()
(LaTeX-add-environments
'("lemma" LaTeX-env-label)
'("exercise" LaTeX-env-label)
'("theorem" LaTeX-env-label)
'("question" LaTeX-env-label)
)))
(setq reftex-insert-label-flags '("s" "ft"))
当我插入新定义的环境时,它会自动生成一个标签,例如,当我运行时C-c C-e exercise RET
,我得到
\begin{exercise}
\label{ex:1}
(cursor here)
\end{exercise}
现在在 auctex11.88 我只能得到
\begin{exercise}
(cursor here)
\end{exercise}
我需要进一步运行C-c (
才能添加\label{ex:1}
到那里。
我不确定我使用的 lisp 代码是否过时了。我尝试执行短代码(LaTeX-env-label "exercise")
。在 auctex11.87 中我得到了想要的结果,但在 auctex11.88 中却没有。
请指教!非常感谢!
顺便问一下,这真的是早期提到的一个错误吗? 邮件 或者我们应该在 auctex11.88 中调整其他内容?一些新功能 + 向后兼容性问题在 邮件列表 我不是这方面的专家,有人可以详细说明一下吗?非常感谢!
答案1
AUCTeX 和 RefTeX 是两个独立的软件包,一个可以单独使用。AUCTeX 有一些关于标签和引用管理的功能,而 RefTeX 在这方面做得更好。
并非所有人都使用 RefTeX,AUCTeX 11.88 中有一个变化,允许用户选择要插入哪些标签。此选择与 RefTeX 无关,但副作用是人们需要自定义另一个 AUCTeX(不是 RefTeX)变量:LaTeX-label-alist
。以下是其在手动的
用户选项:LaTeX 标签列表
列出每个支持的环境的标签要使用的前缀。
这是一个 alist,其 car 是环境名称,cdr 是前缀或引用环境名称的符号。
如果未找到名称,或者 cdr 为零,则不会自动为该环境插入标签。
如果要自动插入环境标签但前缀为空,请使用空字符串
""
作为相应条目的 cdr。
LaTeX-label-alist
因此,您还应该为环境添加一个条目excercise
。在您的 中.emacs
,将 替换add-hook
为此
(add-hook
'LaTeX-mode-hook
(lambda ()
(LaTeX-add-environments
'("lemma" LaTeX-env-label)
'("exercise" LaTeX-env-label)
'("theorem" LaTeX-env-label)
'("question" LaTeX-env-label))
(add-to-list 'LaTeX-label-alist '("exercise" . "ex:"))))
为了避免混淆:AUCTeX 根据 来决定是否应插入标签LaTeX-label-alist
,但如果启用了 RefTeX,特别是如果LaTeX-label-function
,reftex-label
则标签的插入将转移到 RefTeX,并且实际插入的标签由 RefTeX 变量的值来选择reftex-label-alist
。
exercise
对于 RefTeX 用户来说,条目的 CDR 值LaTeX-label-alist
几乎没用,重要的是它是一个有效的字符串。
定制的目的LaTeX-label-alist
是让 RefTeX 和非 RefTeX 用户具有相同的行为。
.emacs
为了清楚起见,这是我用于测试的最小值:
;; Enable RefTeX automatically in AUCTeX buffers.
(autoload 'turn-on-reftex "reftex" "RefTeX Minor Mode" nil)
(add-hook 'TeX-mode-hook
(lambda ()
(turn-on-reftex)))
(setq reftex-plug-into-AUCTeX t)
;; RefTeX-related settings.
(setq
reftex-label-alist
'(("theorem" ?h "thm:" "~\\ref{%s}" t ("theorem" "th."))
("lemma" ?l "lem:" "~\\ref{%s}" t ("lemma" "lem." ))
("exercise" ?x "ex:" "~\\ref{%s}" t ("exercise" "ex." ))
("question" ?q "ques:" "~\\ref{%s}" t ("question" "q." )))
reftex-insert-label-flags '("s" "ft"))
;; AUCTeX-related settings.
(add-hook
'LaTeX-mode-hook
(lambda ()
(LaTeX-add-environments
'("lemma" LaTeX-env-label)
'("exercise" LaTeX-env-label)
'("theorem" LaTeX-env-label)
'("question" LaTeX-env-label))
(add-to-list 'LaTeX-label-alist '("exercise" . "ex:"))))