我通常成对创建定理环境 - 一个使用普通定理样式,另一个(其名称以大写字母开头)使用“break”样式,在定理文本前插入换行符。这对于具有长文本或长名称的定理非常有用。cleveref
似乎很好地支持了这一点,至少对于对单个定理的引用而言。但是,\crefrange
看不到这两个定理具有相同的类型(见下文)。
我知道有一种解决方法,使用aliascnt
;但是,为了保持简单并避免错误,我希望尽可能少地使用处理引用的包。此外,使用aliascnt
是一个略显“丑陋”的解决方案,如果您使用许多不同的定理类型,它会涉及大量代码。有人能给我提供一个不涉及aliascnt
,但(最好)只使用ntheorem
和 的解决方案cleveref
吗?
\documentclass{article}
\usepackage{ntheorem,cleveref}
\newtheorem{thm}{Theorem}
\theoremstyle{break}
\newtheorem{Thm}[thm]{Theorem}
\crefname{thm}{theorem}{theorems}
\begin{document}
\begin{thm}\label{thm:short}
Theorem with short text.
\end{thm}
\begin{Thm}[The well-ordering theorem]\label{thm:long}
Theorem with long text.
\end{Thm}
\cref{thm:short}
\cref{thm:long}
\crefrange{thm:short}{thm:long}
\end{document}
答案1
cleveref
提供\crefalias
\crefalias{Thm}{thm}
梅威瑟:
\documentclass{article}
\usepackage{ntheorem,cleveref}
\newtheorem{thm}{Theorem}
\theoremstyle{break}
\newtheorem{Thm}[thm]{Theorem}
\crefname{thm}{theorem}{theorems}
\crefalias{Thm}{thm}
\begin{document}
\begin{thm}\label{thm:short}
Theorem with short text.
\end{thm}
\begin{Thm}[The well-ordering theorem]\label{thm:long}
Theorem with long text.
\end{Thm}
\cref{thm:short}
\cref{thm:long}
\crefrange{thm:short}{thm:long}
\end{document}
输出
PS 如果您想要连词结尾,请添加以下行
\newcommand{\crefrangeconjunction}{--}
在序言中。