`cleveref` 引用名称不正确

发布于 2025-07-21 16:29:17

操作系统:Windows 11

TeX 发行版:Tex Live 2025

描述问题:
使用 amsthm 定义和 thm 环境同计数器的 lem 环境,而后用 cleveref\cref 引用,发现在本地 TeX Live 2025 编译后,定理名称全显示 thm 名称。

最小工作示例(MWE)

\documentclass{article}
\usepackage{amsthm}
\usepackage{cleveref}
\newtheorem{thm}{Theorem}[section]
\newtheorem{lem}[thm]{Lemma}
\crefname{lem}{lemma}{lemmas}
\Crefname{lem}{Lemma}{Lemmas}

\begin{document}
  \begin{thm}\label{thm}
    foo
  \end{thm}
  \begin{lem}\label{lem}
    foo
  \end{lem}
  \cref{lem}, \Cref{lem}
\end{document}

在 texpage 和 overleaf 上测试上述代码,\cref{lem} 均可显示名称为 lemma,然而在本地 texlive 2025 上测试上述代码,结果如图所示
b6a28aa5c6b0c2cc0c6b3cfef857d38e.png

查看更多

关注者
0
被浏览
60
2 个回答
Sagittarius Rover
Sagittarius Rover 12小时前
我要成为Typst糕手/(ㄒoㄒ)/~~

上面的代码其实cleverref会报警告:

LaTeX Warning: Reference `lem' on page 1 undefined on input line 18.
LaTeX Warning: Reference `lem' on page 1 undefined on input line 18.

此事在下面的几个链接里都有记载:

目前来看的最佳实践似乎是:

\documentclass{article}
\usepackage{amsthm}
\usepackage{cleveref}
\newtheorem{thm}{Theorem}[section]
\newtheorem{lem}[thm]{Lemma}
\AddToHook{env/lem/begin}{\crefalias{thm}{lem}}

\crefname{lem}{lemma}{lemmas}
\Crefname{lem}{Lemma}{Lemmas}
\begin{document}
  \begin{thm}\label{thm}
    foo
  \end{thm}
  \begin{lem}\label{lem}
    foo
  \end{lem}
  \noindent
  \cref{lem}, \Cref{lem}
\end{document}

image.png

似乎在firstaid中已经修了...但我不太懂这个...

最后补充一下「我本地TL2025会出问题」的内核和宏包版本(\listfiles):

 *File List*
 article.cls    2025/01/22 v1.4n Standard LaTeX document class
  size10.clo    2025/01/22 v1.4n Standard LaTeX file (size option)
  amsthm.sty    2020/05/29 v2.20.6
cleveref.sty    2018/03/27 v0.21.4 Intelligent cross-referencing
l3backend-pdftex.def    2025-04-14 L3 backend support: PDF output (pdfTeX)
啸行
啸行 12小时前
这家伙很懒,什么也没写!

其实还有一个办法可以解决,但是麻烦一些。

\documentclass{article}
\usepackage{amsthm}
\usepackage{cleveref}
\newtheorem{thm}{Theorem}[section]
\newtheorem{lem}[thm]{Lemma}

\begin{document}
  \begin{thm}\label{thm}
    foo
  \end{thm}
  \begin{lem}\label[lem]{lem}
    foo
  \end{lem}
  \cref{lem}, \Cref{lem}
\end{document}

image.png

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览