请考虑以下示例:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath, amsthm, amssymb, mathtools, thmtools}
\usepackage{hyperref, cleveref}
\usepackage[shortlabels]{enumitem}
\declaretheorem[numberwithin = section]{theorem}
\numberwithin{equation}{section}
\begin{document}
\begin{theorem}\label{foo}
\begin{enumerate}[(i)]
\item\label{bar}
\end{enumerate}
\end{theorem}
\end{document}
我想获取对标有“foo”的定理中标有“bar”的项目的引用。引用应显示为“定理 1.1-i”。我该怎么做?如果我使用,\autoref{foo}
我只会获得“定理 1.1”,如果我使用,\autoref{bar}
我会获得“项目 (i)”。
答案1
喜欢这个吗?使用\autoref{foo}-\ref{bar}
。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath, amsthm, amssymb, mathtools, thmtools}
\usepackage{hyperref, cleveref}
\usepackage[shortlabels]{enumitem}
\newtheorem{theorem}{Theorem}
%\numberwithin{equation}{section}
\begin{document}
\begin{theorem}\label{foo}
Lorem ipsum...
\begin{enumerate}[(i)]
\item\label{bar1}
\item\label{bar2}
\item\label{bar3}
\end{enumerate}
\end{theorem}
In \autoref{foo}-\ref{bar1} and in \autoref{foo}-\ref{bar2} and in \autoref{foo}-\ref{bar3} \ldots
\end{document}
答案2
既然您正在使用该enumitem
包,您不妨使用它的\newlist
/\setlist
机制来创建一个定制的类似枚举的环境,thmenum}
在下面的代码中调用,并在定理环境中使用。
如果您想将前缀从“定理项”更改为“定理”,只需替换\crefname{thmenumi}{theorem item}{theorem items}
为\crefname{thmenumi}{theorem}{theorems}
。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsthm, amssymb, mathtools, thmtools}
\declaretheorem[numberwithin = section]{theorem}
\usepackage[shortlabels]{enumitem}
\newlist{thmenum}{enumerate}{1} % to be used only inside 'theorem' environments
\setlist[thmenum]{label=\textup{(\roman*)},
ref=\thetheorem-\textup{(\roman*)}}
\usepackage[colorlinks]{hyperref}
\usepackage{cleveref}
\crefname{thmenumi}{theorem item}{theorem items}
\begin{document}
\setcounter{section}{2} % just for this example
\begin{theorem}\label{foo}
\begin{thmenum} Consider \dots
\item\label{bar} Bla bla bla
\item\label{bor} Blo blo blo
\end{thmenum}
\end{theorem}
\cref{bar}
\cref{bor,bar}
\end{document}
答案3
您可以使用ref
由“znumitem”定义的键。
amsmath
无关:如果您加载则无需加载mathtools
:后者会为您完成。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsthm, amssymb, mathtools, thmtools}
\usepackage{hyperref, cleveref}
\usepackage[shortlabels]{enumitem}
\declaretheorem[numberwithin = section]{theorem}
\numberwithin{equation}{section}
\begin{document}
\setcounter{section}{1}
\begin{theorem}\label{foo}
\begin{enumerate}[(i),ref =\cref{foo}-\roman*]
\item\label{bar} Really?
\end{enumerate}
\end{theorem}
We see in \ref{bar}
\end{document}