我想在同一(部分)计数器上编号所有定理和推论。但是,当我这样做时,cleveref将它们都命名为“定理”。这是一个最小的示例:
\documentclass{amsart}
\usepackage{amsthm, cleveref}
%\crefname{theorem}{theorem}{theorems}
%\crefname{corollary}{corollary}{corollaries}
\newtheorem{theorem}{Theorem}[section]
\newtheorem{corollary}[theorem]{Corollary}
\begin{document}
\section{Section title}
\begin{theorem}\label{thm:test}
Here is the theorem.
\end{theorem}
\begin{corollary}\label{cor:test}
Here is the corollary.
\end{corollary}
The theorem reference is given by \cref{thm:test} and the corollary reference is given by \cref{cor:test}.
\end{document}
在此,推论参考是“定理1.2”。即使显式声明crefname,此问题仍然存在。
有什么建议?
最佳答案
如果要让cleveref区分使用相同计数器的不同类定理环境,则需要加载ntheorem或amsthm程序包。这些软件包存储有关cleveref利用的类似定理环境的附加信息。请注意,它们必须在cleveref之前加载。
与使用\ label的可选参数一起使用ntheorem(通过hyperref选项已经很长时间与hyperref兼容)或amsthm(也与hyperref兼容)一起使用cleveref是一种更好的解决方案。而且也不必退回\ thref。如果仍然使用ntheorem,则\ cref将执行\ thref所做的所有工作,以及更多的工作(多引用,自定义格式等)。实际上,当使用thref选项加载ntheorem时,cleveref将\ thref重新定义为\ cref的别名。
(有一个技巧-在cleveref手册中也有介绍-使用aliascnt包来区分没有ntheorem或amsthm的类似定理的环境。但是这需要更多的工作,坦率地说,为什么在使用简单的\ usepackage {ntheorem}或\ usepackage时会费心{amsthm}会做得完美吗?)
关于latex - cleveref对于共享同一计数器的定理环境失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6499504/