Cleveref 在 \newtcbtheorem 的多个环境中使用相同的计数器

Cleveref 在 \newtcbtheorem 的多个环境中使用相同的计数器

我正在使用 tcolorbox 包中的 \newtcbtheorem 来生成定理、引理和命题的环境。我希望这三个环境由相同的计数器编号,从而产生如下结果

定理 1.1

命题 1.2

引理 1.3

定理 1.4

所以我基本上是这么写的

\newtcbtheorem[number within=section]{theorem}{Theorem}{}{th}
\newtcbtheorem[use counter=tcb@cnt@theorem, number within=section]{proposition}{Proposition}{}{pr}
\newtcbtheorem[use counter=tcb@cnt@theorem, number within=section]{lemma}{Lemma}{}{le}

但是,当我想使用 cleveref 包中的 \cref 引用这些时,我发现如果我使用 \crefname 来定义 \cref 中的文本,那么代码应该是这样的

\crefname{counter name of theorem}{theorem}{theorems}
\crefname{counter name of proposition}{proposition}{propositions}
\crefname{counter name of lemma}{lemma}{lemmas}

因此,当这三个命令使用相同的计数器时,最后一个命令将取代它之前的两个命令,因此每当我引用定理或命题时

\cref{th:label}

数字之前的文本似乎为“词元”。

有没有什么办法可以解决这个问题,而又不放弃使用 \cref?

在此先感谢您的帮助。

答案1

感谢@muzimuzhiZ 的评论,我发现在选项中添加“标签类型=名称”可以解决这个问题。

代碼:

\newtcbtheorem[number within=section]{theorem}{Theorem}{label type=theorem}{th}
\newtcbtheorem[use counter=tcb@cnt@theorem, number within=section]{proposition{Proposition}{label type=proposition}{pr}
\newtcbtheorem[use counter=tcb@cnt@theorem, number within=section]{lemma} {Lemma}{label type=proposition=lemma}{le}
\crefname{theorem}{theorem}{theorems}
\crefname{proposition}{proposition}{propositions}
\crefname{lemma}{lemma}{lemmas}

相关内容