恢复列表(针对嵌套列表)

恢复列表(针对嵌套列表)

我正在尝试通过存储和恢复计数器来恢复列表。这很有效(如所述这里),但我无法对嵌套列表执行此操作。这是我的代码:

\documentclass{article}

\usepackage{multicol}

\begin{document}

  \newcounter{stoppedhere}

%   \begin{enumerate}      % <- outer list commented out
%     \item Outer list

    \begin{multicols}{3}
      \begin{enumerate}
        \item $e$
        \item $\gamma$
        \item $\mu$
        \item $p$
        \item $n$
        \item $\pi^+$
        \item $\pi^0$
        \item $\nu_\mu$
        \setcounter{stoppedhere}{\theenumi}
      \end{enumerate}
    \end{multicols}
    \begin{enumerate}
      \setcounter{enumi}{\thestoppedhere}
      \item much longer item 1
      \item another much longer item
    \end{enumerate}

%   \end{enumerate}

\end{document}

上面的代码首先列出 1. - 9.,然后继续列出 10.,这样就可以了。

现在,如果我重新添加外部列表,恢复的列表将以错误的值开头(正如预期的那样)。我以为我可以通过使用此方法来解决这个问题enumii,但是尝试这样做

\setcounter{stoppedhere}{\theenumii}

给出错误 ( ! Missing number, treated as zero.)。我应该做什么呢?

multicol环境不是问题的一部分,除非我尝试使用包enumitem而不是自己修改计数器:那么它只有在没有multicol环境的情况下才能工作。)

答案1

有两种方法:

  1. 使用计数器方法enumitem并手动将 a 添加start=...到下一个枚举
  2. 使用enumitem包并将内部列表定义为一系列innerlist(名称相当随意) and useresume=innerlist in the continued (outside ofmulticols` 环境)列表。在我看来,这是更好的方法(请参阅本文底部的示例)

笔记:\theenumi不应用作 的参数\setcounter,因为\theenumi可以定义为任何东西,字母、带有字母的括号、数字等。用于\value{enumi}纯数字。


\documentclass{article}

\usepackage{multicol}

\usepackage{enumitem}
\newcounter{stoppedhere}

\begin{document}
   \begin{enumerate}      % <- outer list commented out
     \item Outer list
       \begin{multicols}{3}
         \begin{enumerate}
         \item $e$
         \item $\gamma$
         \item $\mu$
         \item $p$
         \item $n$
         \item $\pi^+$
         \item $\pi^0$
         \item $\nu_\mu$
           \setcounter{stoppedhere}{\value{enumii}}
         \end{enumerate}
    \end{multicols}
    \begin{enumerate}[start=\numexpr\number\value{stoppedhere}+1]
      \item much longer item 1
      \item another much longer item
    \end{enumerate}
   \end{enumerate}
\end{document}

其他方法:(更好!)

\documentclass{article}

\usepackage{multicol}

\usepackage{enumitem}

\begin{document}
   \begin{enumerate}      % <- outer list commented out
     \item Outer list
       \begin{multicols}{3}
         \begin{enumerate}[series=innerlist]
         \item $e$
         \item $\gamma$
         \item $\mu$
         \item $p$
         \item $n$
         \item $\pi^+$
         \item $\pi^0$
         \item $\nu_\mu$
         \end{enumerate}
    \end{multicols}
    \begin{enumerate}[resume=innerlist]
      \item much longer item 1
      \item another much longer item
    \end{enumerate}
   \end{enumerate}
\end{document}

在此处输入图片描述

答案2

这是一个没有 的解决方案enumitem\theenumii不会产生数字,因此您不能使用它来设置计数器。相反,您需要使用 ,\value{enumii}它始终以数字形式给出计数器的值。

\documentclass{article}

\usepackage{multicol}

\begin{document}

  \newcounter{stoppedhere}

  \begin{enumerate}      % <- outer list commented out
    \item Outer list

    \begin{multicols}{3}
      \begin{enumerate}
        \item $e$
        \item $\gamma$
        \item $\mu$
        \item $p$
        \item $n$
        \item $\pi^+$
        \item $\pi^0$
        \item $\nu_\mu$
        \setcounter{stoppedhere}{\value{enumii}}
      \end{enumerate}
    \end{multicols}
    \begin{enumerate}
      \setcounter{enumii}{\thestoppedhere}
      \item much longer item 1
      \item another much longer item
    \end{enumerate}

  \end{enumerate}

\end{document}

内和外

相关内容