\newlist 与 \newenvironment 定义单独的列表样式

\newlist 与 \newenvironment 定义单独的列表样式

据我所知,定义单个列表样式有两种方法:

1 )使用enumitem包和\newlist命令\setlist

2)定义单独的环境,如下例所示:

\newenvironment{exampleEnumeration}
{\begin{enumerate}[leftmargin=*, itemsep=2pt, parsep=0pt]}
{\end{enumerate}} 

现在我的问题是:我应该选择哪种方式?这仅仅是便利性上的差异,还是还有我不知道的更重要的方面?谢谢!

答案1

\newlist主要用于定义新的枚举/逐项列表集。例如

\newlist{exampleEnumeration}
\setlist[exampleEnumeration]{leftmargin=*, itemsep=2pt, parsep=0pt}

是违法的,因为你必须指定label(以及可选的ref)。如果您不指定级别,则所有级别都将使用相同的标签。因此,您应该输入,例如,

\newlist{exampleEnumeration}
\setlist[exampleEnumeration,1]{leftmargin=*, itemsep=2pt, parsep=0pt, label=\arabic*.}
\setlist[exampleEnumeration,2]{leftmargin=*, itemsep=2pt, parsep=0pt, label=(\alph*)}

等等。

将使用与\newenvironment当前嵌套级别对应的标签。

更好的定义是

\newenvironment{exampleEnumeration}[1][]
  {\enumerate[leftmargin=*, itemsep=2pt, parsep=0pt, #1]}
  {\endenumerate}

这样您就可以传递更多选项给exampleEnumeration;此外,使用\enumerate\endenumerate当嵌套错误时您会得到更有意义的错误消息。

相关内容