AUCTeX 无法识别 cleveref 标签

AUCTeX 无法识别 cleveref 标签

我使用 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-variablefor的输出中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)))

我错过了什么?

答案1

在 AUCTeX 中,latex.el提供对 vanilla LaTeX 的支持。软件包的添加通过 AUCTeX 样式文件提供。在这种情况下,这是一个缺点,因为cleveref.el它不支持\label宏中的可选参数。这个问题现已修复并将在下一个 AUCTeX 版本中推出。

如果要立即使用它,请将变量自定义TeX-style-private为您选择的目录并保存更新样式就在那里。重新启动 Emacs,AUCTeX 将使用新版本。请记住,一旦新 AUCTeX 版本发布,就将其删除。

相关内容