如何在两个枚举列表中使用相同的计数器?

如何在两个枚举列表中使用相同的计数器?

可能重复:
恢复列表

我想要一个枚举列表,中间被一些文本打断。我现在有的是这样的,

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

相关内容