压缩不同类型标签的范围?

压缩不同类型标签的范围?

如何压缩一系列不同类型的参考文献?

我们假设以下代码:

\documentclass{article}
\usepackage{amsthm}
\usepackage{cleveref}
\newtheorem{thm}{Theorem}[section]
\newtheorem{lem}[thm]{Lemma}
\newtheorem{cor}[thm]{Corollary}
\newtheorem{prop}[thm]{Proposition}
\crefname{lem}{Lemma}{Lemmas}
\Crefname{lem}{Lemma}{Lemmas}
\crefname{thm}{Thm.}{Thms.}
\Crefname{thm}{Thm.}{Thms.}
\crefname{cor}{Cor.}{Cors.}
\Crefname{cor}{Cor.}{Cors.}
\crefname{prop}{Prop.}{Props.}
\Crefname{prop}{Prop.}{Props.}
\begin{document}
\begin{thm}\label{A}A\end{thm}
\begin{lem}\label{B}B\end{lem}
\begin{cor}\label{C}C\end{cor}
\begin{lem}\label{D}D\end{lem}
\begin{prop}\label{E}E\end{prop}
We expect ``Thm.\@ 0.1, Lemma 0.2, Cor.\@ 0.3, and Prop.\@ 0.5'' here: \cref{A,B,C,E}.

We expect ``0.1 to 0.3 and 0.5'' here: \myawesomeref{A,B,C,E}.
\end{document}

是否有命令(上面表示为\myawesomerefcleveref或其他包可以让我们实现这种自动化?我在撰写时可能会在整个文档中移动声明,因此我不想对数字或范围进行硬编码。

到目前为止我已经尝试过\labelcref别名(参见hooy 的原始答案),但这种组合会改变 的输出\cref,而我们实际上想保留 的输出。

是的,我看过如何引用范围而不是单独的数字?

答案1

您确实可以使用cleveref。您必须使用\crefalias{lem}{thm}与 结合的方式将引理和其他环境声明为定理的别名\labelcref{...}

\documentclass{article}
\usepackage{amsthm}
\usepackage{cleveref}

\newtheorem{thm}{Theorem}[section]
\newtheorem{lem}[thm]{Lemma}

\crefname{lem}{lemma}{lemmas}
\Crefname{lem}{Lemma}{Lemmas}
\crefname{thm}{theorem}{theorems}
\Crefname{thm}{Theorem}{Theorems}

\crefalias{lem}{thm}

\begin{document}

\begin{thm}\label{A}
A
\end{thm}

\begin{lem}\label{B}
B
\end{lem}

\begin{thm}\label{C}
C
\end{thm}

\begin{lem}\label{D}
D
\end{lem}

See claims \labelcref{A,B,D}.

\end{document}

输出

相关内容