我如何引用定理 1.1 中的项目 (i) 以使其显示“定理 1.1-(i)”?

我如何引用定理 1.1 中的项目 (i) 以使其显示“定理 1.1-(i)”?

请考虑以下示例:

\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}

在此处输入图片描述

相关内容