我正在尝试通过存储和恢复计数器来恢复列表。这很有效(如所述这里),但我无法对嵌套列表执行此操作。这是我的代码:
\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
有两种方法:
- 使用计数器方法
enumitem
并手动将 a 添加start=...
到下一个枚举 - 使用
enumitem
包并将内部列表定义为一系列innerlist
(名称相当随意) and use
resume=innerlistin the continued (outside of
multicols` 环境)列表。在我看来,这是更好的方法(请参阅本文底部的示例)
笔记:\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}