可能重复:
恢复列表
我想要一个枚举列表,中间被一些文本打断。我现在有的是这样的,
\renewcommand{\labelenumi}{(\roman{enumi})}
\newtheorem{theorem}{Theorem}
\begin{theorem} We are in the theorem environment,
\begin{enumerate}
\item\label{condition1}the first condition,
\item\label{condition2}the second condition,
\end{enumerate}
\end{theorem}
We have exited the theorem environment. We also have one more condition,
\begin{enumerate}
\item[\emph{(iii)}]\label{condition3}\emph{the third condition}.
\end{enumerate}
但是,我不喜欢手动对最终条件进行编号,而且这也给我的引用带来了问题。因此,我想知道是否可以将两个列表中的计数器连接起来?
否则(这显然不太理想),有没有办法让 \ref{condition2} 成为 (iii)(即方括号中的内容)。一定有办法做到这一点,但我找不到!目前,它吐出...2(所以显然我的问题比这个问题更深刻!但是,解决其中一个问题几乎可以解决所有问题...)。
编辑
在给出的解决方案恢复列表问题似乎在我的例子中不起作用。提出了两个解决方案:
第二种解决方案是让 LaTeX 手动保存计数器,我无法在我的文档中使用它,尽管在我制作示例文档时它可以工作。这与下面给出的答案类似,做在我的文档中工作,所以我不会详细阐述这一点。
第一个解决方案有一个微妙的问题,这使得它不适合我使用。此解决方案使用 enumitem 包。如果文档仅包含一个定理,或者两个列表没有以任何方式跨越定理,则该解决方案有效。但是,以下方法不起作用(这最接近我正在做的事情),
\documentclass{article}
\usepackage{enumitem}
\renewcommand{\labelenumi}{(\roman{enumi})}
\newtheorem{theorem}{Theorem}
\begin{document}
\begin{theorem} We are in the theorem environment,
\begin{enumerate}
\item \label{condition1}the first condition,
\item \label{condition2}the second condition,
\end{enumerate}
\end{theorem}
We havve exited the theorem environment. We also have one more condition,
\begin{enumerate}[resume]
\item \label{condition3}\emph{the third condition}
\end{enumerate}
\begin{theorem}
We have another theorem.
\end{theorem}
\end{document}
在这里,当我们退出定理环境时,计数器会被重置,因此我们得到,
(i) the third condition.
虽然我们实际上想要
(iii) the third condition.
并且同样的事情发生在引用上(我上面得到的代码将给出\ref{condition3}
如下1
)
答案1
您可以像这样保存和恢复计数:
\documentclass{article}
\makeatletter
\def\saveenum{\xdef\@savedenum{\the\c@enumi\relax}}
\def\resetenum{\global\c@enumi\@savedenum}
\makeatother
\newenvironment{theorem}{}{}
\begin{document}
\begin{theorem} We are in the theorem environment,
\begin{enumerate}
\item\label{condition1}the first condition,
\item\label{condition2}the second condition,
\end{enumerate}
\end{theorem}
We have exited the theorem environment. We also have one more condition,
\saveenum
\begin{enumerate}\resetenum
\item\label{condition3}\emph{the third condition}.
\end{enumerate}
\end{document}