基于这个问题对于有用的答案,对于每个定理环境,我创建一个专用的枚举列表,我“克雷法利亚斯“定理。这样,当我引用列表项时,它会在前面加上“定理<数>“添加到物品标签上(见下方的代码和图片)。
一切都运行良好,除了当我有\Cref
多个项目时,它只是根据项目计数器对它们进行排序,而不考虑定理计数器。
这是 MWE
\documentclass{article}
\usepackage{amsthm}
\usepackage{enumitem}
\usepackage[colorlinks = true]{hyperref}
\usepackage{cleveref}
\newtheorem{thm}{Theorem}
\Crefname{thm}{Theorem}{Theorems}
% Crete a dedicated enumerate environment
\newlist{enumthm}{enumerate}{1}
\setlist[enumthm]{label=(\roman*),ref=\thethm(\roman*)}
\crefalias{enumthmi}{thm} % alias 'enumthm' counter to thm
\begin{document}
\begin{thm}
This theorem has a list:
\begin{enumthm}
\item First
\item Second\label{Thm:Second}
\end{enumthm}
\end{thm}
\begin{thm}
Also this theorem has a list:
\begin{enumthm}
\item Third\label{Thm:Third}
\item Fourth
\end{enumthm}
\end{thm}
Sorted cleve-referencing: \Cref{{Thm:Second},{Thm:Third}}.
\end{document}
输出如下:
如你所见,定理 2(i) 先于定理 1(ii),因为它只考虑了枚举计数器,同时我希望它也能考虑到定理计数器。 这可行吗?
谢谢
PS 可能有一个解决方法记录在这个答案但是如果我不知道如何使其适应我的情况,我更喜欢更清洁的 tex 解决方案而不是 hack。
答案1
\crefalias
我认为在当前情况下使用它不是一个好主意。相反,我会 (a) 使用 来定义应该作为 -level 项前缀的\Crefname
单数和复数“标签”以及 (b) 使用该选项加载包(禁用自动排序)。cleveref
enumthmi
cleveref
compress
\documentclass{article}
\usepackage{amsmath,amsthm}
\usepackage{enumitem}
\usepackage[colorlinks = true]{hyperref}
\usepackage[compress]{cleveref} % <-- "compress" is new
\newtheorem{thm}{Theorem}
\Crefname{thm}{Theorem}{Theorems}
% Create a dedicated enumerate environment
\newlist{enumthm}{enumerate}{1}
\setlist[enumthm]{label=\textup{(\roman*)},ref=\thethm(\roman*)}
\Crefname{enumthmi}{Theorem}{Theorems} % <-- use \Crefname
\begin{document}
\begin{thm}
This theorem has a list:
\begin{enumthm}
\item First
\item Second\label{Thm:Second}
\end{enumthm}
\end{thm}
\begin{thm}
This theorem has a list too:
\begin{enumthm}
\item Third\label{Thm:Third}
\item Fourth
\end{enumthm}
\end{thm}
Unsorted clever cross-references: \Cref{Thm:Second,Thm:Third}.
\end{document}