答案1
MWE 的错误之处发布OP 提到的原因是cleveref
包加载得太晚,即只有后指令\newtheorem
将被执行。如果\usepackage{cleveref}
位于\usepackage{amsthm}
和之后前 \newtheorem
,该\cref
命令产生预期的,即正确的输出。
值得一提的是,如果加载了(或) 包,则需要在执行命令cleveref
之前加载包,这一点在包的用户指南中多次提到。例如,在第 14.1 节“无错误”中,第二个要点指出 [突出显示已添加]:\newtheorem
amsthm
ntheorem
cleveref
最后,我认为没有必要承受这种aliascnt
方法的麻烦 —— 至少对于当前的用例来说不需要。
\documentclass{article}
\usepackage{amsthm,cleveref}
\newtheorem{definition}{Definition}
\newtheorem{theorem}[definition]{Theorem}
\begin{document}
\begin{definition}\label{d}
This is a definition.
\end{definition}
\begin{theorem}\label{t}
This is a theorem.
\end{theorem}
Here is a cross-reference to~\cref{t}.
\end{document}