使用枚举和新列表设置计数器

使用枚举和新列表设置计数器

当为自己的环境定义一个列表时(我需要比标准 4 更深的级别):

\setlistdepth{12}
\newlist{MyEnumerate}{enumerate}{12}
\setlist[MyEnumerate,1]{label=\arabic*.}
...

这一切都很好,人们也可以推翻标签。

但是,当尝试设置起始计数器时,这在新列表中不起作用。即

\begin{enumerate}[label=\alph*]
\setcounter{enumi}{3}
\item an item
...

有效,但以下无效:

\begin{MyEnumerate}[label=\alph*]
\setcounter{enumi}{3}
\item an item

所以问题是:

  • 我如何设置计数器MyEnumerate以及更高级别的计数器?

完整的 MWE:

documentclass[twoside]{book}

\RequirePackage{enumitem}

\setlistdepth{12}
\newlist{MyEnumerate}{enumerate}{12}
\setlist[MyEnumerate,1]{label=\arabic*.}
\setlist[MyEnumerate,2]{label=(\alph*)}
\setlist[MyEnumerate,3]{label=\roman*.}
\setlist[MyEnumerate,4]{label=\Alph*.}
\setlist[MyEnumerate,5]{label=\arabic*.}
\setlist[MyEnumerate,6]{label=(\alph*)}
\setlist[MyEnumerate,7]{label=\roman*.}
\setlist[MyEnumerate,8]{label=\Alph*.}
\setlist[MyEnumerate,9]{label=\arabic*.}
\setlist[MyEnumerate,10]{label=(\alph*)}
\setlist[MyEnumerate,11]{label=\roman*.}
\begin{document}

A standard list:

================
\begin{enumerate}[label=\alph*]
\setcounter{enumi}{3}
\item an item
\begin{enumerate}[label=\alph*]
\setcounter{enumii}{13}
\item an item
\begin{enumerate}[label=\alph*]
\setcounter{enumiii}{23}
\item an item
\begin{enumerate}[label=\alph*]
\setcounter{enumiii}{23}
\item an item
\item an item
\item an item
\end{enumerate}
\item an item
\item an item
\end{enumerate}
\item an item
\item an item
\end{enumerate}
\item an item
\item an item
\end{enumerate}

================

A modified list:

================
\begin{MyEnumerate}[label=\alph*]
\setcounter{enumi}{3}
\item an item
\begin{MyEnumerate}[label=\alph*]
\setcounter{enumii}{13}
\item an item
\begin{MyEnumerate}[label=\alph*]
\setcounter{enumiii}{23}
\item an item
\item an item
\item an item
\end{MyEnumerate}
\item an item
\item an item
\end{MyEnumerate}
\item an item
\item an item
\end{MyEnumerate}

================

\end{document}

生成的图像如下:

在此处输入图片描述

答案1

新列表的计数器使用列表名称命名。摘自文档(第 17 页):

如果 ⟨type⟩ 是枚举,则定义一组名为 ⟨name⟩i、⟨name⟩ii、⟨name⟩iii、⟨name⟩iv 等(取决于 ⟨max-depth⟩)的计数器。

因此,就您而言,计数器是MyEnumerateiMyEnumerateii等。

但正如 Ulrike 在评论中提到的那样,通常不需要直接引用计数器,因此\setcounter{MyEnumeratei}{6)您可以简单地使用\begin{MyEnumerate}[start=6]。我使用此语法重做了两个示例列表。此语法意味着您无需知道您处于哪个级别即可正确设置计数器。

\documentclass[twoside]{book}

\RequirePackage{enumitem}

\setlistdepth{12}
\newlist{MyEnumerate}{enumerate}{12}
\setlist[MyEnumerate,1]{label=\arabic*.}
\setlist[MyEnumerate,2]{label=(\alph*)}
\setlist[MyEnumerate,3]{label=\roman*.}
\setlist[MyEnumerate,4]{label=\Alph*.}
\setlist[MyEnumerate,5]{label=\arabic*.}
\setlist[MyEnumerate,6]{label=(\alph*)}
\setlist[MyEnumerate,7]{label=\roman*.}
\setlist[MyEnumerate,8]{label=\Alph*.}
\setlist[MyEnumerate,9]{label=\arabic*.}
\setlist[MyEnumerate,10]{label=(\alph*)}
\setlist[MyEnumerate,11]{label=\roman*.}
\begin{document}



================

A modified list:

================
\begin{MyEnumerate}[label=\alph*]
\setcounter{MyEnumeratei}{3}
\item an item
\begin{MyEnumerate}[label=\alph*,start=13]
\item an item
\begin{MyEnumerate}[label=\alph*,start=23]
\item an item
\item an item
\item an item
\end{MyEnumerate}
\item an item
\item an item
\end{MyEnumerate}
\item an item
\item an item
\end{MyEnumerate}

================

\end{document}

相关内容