我使用 cleveref 包,它允许使用\label
可选参数注释命令。不幸的是,这会阻止各种函数
latex.el
检测这些标签。我猜这是因为它们与标签的内置正则表达式不匹配。
一些 LaTeX 代码示例来说明这种情况:
\usepackage{cleveref}
\crefname{diagram}{diagram}{diagrams}
% ...
\begin{equation}
\label[diagram]{eq:23}
1 = 1
\end{equation}
AUCTeX 不会注意到我已经使用了eq:23
,然后如果我尝试自动生成标签,它会再次提出eq:23
。
在 AUCTeX 源代码中挖掘后,我发现了以下内容latex.el
:
(defvar LaTeX-auto-label-regexp-list
'(("\\\\label{\\([^^M\n\r%\\{}]+\\)}" 1 LaTeX-auto-label))
"List of regular expression matching LaTeX labels only.")
这似乎是要扩展的适当变量。但是,我似乎无法正确使用正则表达式。我尝试在 AUCTeX 加载之前将以下内容添加到我的 emacs 配置中(并且它出现在describe-variable
for的输出中LaTeX-auto-label-regexp-list
),但 AUCTeX 仍然无法将上述内容识别为标签。
(setq LaTeX-auto-label-regexp-list
'(("\\\\label{\\([^^M%\\{}]+\\)}" 1 LaTeX-auto-label)
("\\\\label\\[[^^M[\\{}]+\\]{\\([^^M%\\{}]+\\)}" 1 LaTeX-auto-label)))
我错过了什么?