我有一个包含多个部分的推论,这些部分稍后需要单独引用,因此类似于:
\begin{cor}\label{cor}
\begin{enumerate}
\item Part one \label{partone}
\item Part two \label{parttwo}
\end{enumerate}
\end{cor}
理想情况下,我想要\ref{partone}
生成 2.1(为了论证的目的,假设它是推论 2),但是,当然,\ref{partone}
给出 1,因为它引用了enumi
计数器。
有没有办法将和计数器\ref
结合起来?enumi
cor
答案1
这也可以通过使用枚举项包裹:
\documentclass{article}
\usepackage{amsthm}
\usepackage{enumitem}
\newtheorem{cor}{Corolary}
\begin{document}
\begin{cor}\label{cor}
\begin{enumerate}[label={\thecor.\arabic*}]
\item Part one \label{partone}
\item Part two \label{parttwo}
\end{enumerate}
\end{cor}
As we see in part~\ref{partone}
\end{document}
答案2
我本来要问同样的问题。我发现这里给出的解决方案太复杂了,我尤其不想为这么简单的工作获取新的软件包。所以我继续阅读,现在我对这个解决方案完全满意:
\hyperref[partone]{\ref*{cor}.\ref*{partone}}
答案3
您可以使用chngcntr
包使enumi
计数器依赖于您的cor
计数器。如果您在 corollary 环境中执行此操作,则不会影响其他枚举环境。
\documentclass{article}
\usepackage{amsthm}
\newtheorem{cor}{Corollary}
\usepackage{chngcntr}
\begin{document}
\begin{cor}{My Cor}\label{mycor}
\counterwithin{enumi}{cor}
\begin{enumerate}
\item An item \label{part1}
\item Another one \label{part2}
\end{enumerate}
\end{cor}
In Part~\ref{part1} of the the corollary\ldots
\begin{enumerate}
\item An item \label{outside}
\end{enumerate}
This is a reference to Item~\ref{outside} that is outside the corollary.
\end{document}
甚至更简单,无需使用chngcntr
包,您只需在环境\theenumi
中重新定义cor
:
\begin{cor}{My Cor}\label{mycor}
\renewcommand{\theenumi}{\thecor.\arabic{enumi}}
\begin{enumerate}
\item An item \label{part1}
\item Another one \label{part2}
\end{enumerate}
\end{cor}
答案4
我将稍微修改一下上面的 enuitem 方法。我还将做出以下假设:
- 所有类似定理的环境都有相同的计数器
- 该计数器称为 \thethm
首先,我在 preabmle 中定义一个名为 thmenum 的新列表(调用 enuitem 包之后)
\newlist{thmenum}{enumerate}{1}
\setlist[thmenum, 1]{label=(\arabic*), ref=\thethm (\arabic*)}
因此,如果您有一个定理环境,您可以这样做:
\begin{thm}
\label{thm:some_theorem}
\begin{thmenum}
\item Statement 1\label{thm:some_theorem:somestatement}
\item Statement 2\label{thm:some_theorem:someotherstatement}
\end{thmenum}
\end{theorem}
....
\ref{thm:some_theorem:somestatement}
将产生形式为 1.1(1) 的引用,但标签将为 (1)、(2)、...