在列表中枚举

在列表中枚举

假设我想在 中使用 enumerate \list。在我的示例中,第一个 enumerate ( 之前some text) 工作正常,但第二个 enumerate ( 之后some text) 不工作。我想知道为什么。

\documentclass[12pt]{article}
\usepackage{enumerate}

\newcounter{questioncounter}
\newenvironment{question}{% 
    \refstepcounter{questioncounter}
    \list{\thequestioncounter .}{%
        \item
}}{\endlist}

\begin{document}

\begin{question}

\begin{enumerate}[(i)]
\item enumerate 1, item 1 (OK)
\item enumerate 1, item 2 (OK)
\end{enumerate}

some text (OK)

\begin{enumerate}[(i)]
\item enumerate 2, item 1 (NOT OK)
\item enumerate 2, item 2 (NOT OK)
\end{enumerate}

\end{question}

\end{document}

在此处输入图片描述

答案1

enumerate,至少在其标准版本中,from也在内部latex.ltx使用\list。外部的\listfromquestion环境` 和内部的 from 环境` 会相互干扰,最好将它们分组,以保护列表深度/枚举深度计数器。

\list我完全不明白为什么要使用外部。

我提供了两种方法——enumitem及其shortlabels选项以及更复杂的label=...方法。

在我看来,使用enumitem这些indent/leftmargin功能将提供一种更少的方法。\list

\documentclass[12pt]{article}
\usepackage[shortlabels]{enumitem}


\newcounter{questioncounter}

\newenvironment{question}{% 
  \refstepcounter{questioncounter}
 \list{\thequestioncounter .}{%
 \item
   \begingroup
 }%
 \endgroup
}{\endlist}


\begin{document}

\begin{question}
  \begin{enumerate}[(i)]
  \item enumerate 1, item 1 (OK)
  \item enumerate 1, item 2 (OK)
  \end{enumerate}
  % Some text (OK)
  \begin{enumerate}[(i)]
  \item enumerate 2, item 1 (Now OK)
  \item enumerate 2, item 2 (Now OK)
  \end{enumerate}
\end{question}

With more sophisticated \verb!enumitem! - features

\begin{question}
  \begin{enumerate}[label={(\alph*)}]
  \item enumerate 1, item 1 (OK)
  \item enumerate 1, item 2 (OK)
  \end{enumerate}
  % Some text (OK)
  \begin{enumerate}[label={(\alph*)}]
  \item enumerate 2, item 1 (Now OK)
  \item enumerate 2, item 2 (Now OK)
  \end{enumerate}
\end{question}



\end{document}

在此处输入图片描述

相关内容