我可能自己选择了这种格式,也可能没选择,但我正试图将别人的作品很好地打字。
我想要的是带有标签格式1a. 1b. 1c. ... 2a. 2b. 2c. ...
等的嵌套列表。但是我不需要任何项目1. 2.
等。换句话说,我想要一个如下所示的列表:
1a. Lorem
1b. Ipsum
2a. Dolor
2b. Sit
3a. Amet
但不是:
1. Lorem ipsum
1a. Dolor sit amet
1b. Consectetur adipiscing elit
后者很容易用enumitem
的label*
命令生成。
我也不想降低到手动标记每个项目的水平,我想正确使用计数器。但是,etoolbox
如果可以的话,我宁愿不开始破解。此列表将在本文档中仅使用一次,其他列表都不会有此结构,而且我不太熟悉也不喜欢 LaTeX3 的东西。我宁愿坚持使用enumitem
(我在其他地方使用过该软件包)和 Leslie Lamport 的书中的简单命令,因为我可以理解它们。
我尝试过的一个方法是为这个列表设置一个一次性计数器,称为olist
(外部列表)。然后我可以重新定义\labelenumi
使用该计数器来制作标签。这样,如果我手动执行步骤,olist
我就会得到类似于正确列表的东西。这不是理想的,但写成\stepcounter{olist}
并不是\item
那么糟糕,我仍然可以移动列表中的项目,而不必手动更改每个项目编号:
\begin{enumerate}
\newcounter{olist}\stepcounter{olist}
\renewcommand{\labelenumi}{\theolist\alph{enumi}.}
\item Lorem
\item Ipsum
\stepcounter{olist}
\item Dolor
\end{enumerate}
明显的问题是,步进olist
不会重置enumi
,因此,除非我\setcounter{enumi}{0}
每次步进时也写入olist
,否则这种方法似乎真的是死路一条。我不认为我可以依赖enumi
,olist
但如果可能的话,我想知道怎么做。否则,如果有人能告诉我如何做到enumitem
这一点,我将不胜感激。
答案1
您可以根据需要定义自己的nestedlist
并步进外部列表计数器:
\documentclass{article}
\usepackage{enumitem}
\newlist{nestedlist}{enumerate}{1}% This defines the counter nestedlisti
\setlist[nestedlist]{
label=\theouterlist\alph*.,
before=\setcounter{outerlist}{1}}
\newcounter{outerlist}
\newcommand{\stepouterlist}{\stepcounter{outerlist}}
\makeatletter
\@addtoreset{nestedlisti}{outerlist}% Reset nestedlist counter with every change in outerlist counter
\makeatother
\begin{document}
\begin{nestedlist}
\item Lorem
\item Ipsum
\stepouterlist
\item Dolor
\item Lorem
\item Ipsum
\stepouterlist
\item Dolor
\item Lorem
\stepouterlist
\item Ipsum
\end{nestedlist}
\end{document}
答案2
您可以标记为嵌套列表,您可能希望使用标准 enumitem 键调整空格,但是:
\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}[label=]
\item
\begin{enumerate}[label=\arabic{enumi}\alph*]
\item Lorem
\item Ipsum
\end{enumerate}
\item
\begin{enumerate}[label=\arabic{enumi}\alph*]
\item Dolor
\item Sit
\end{enumerate}
\item
\begin{enumerate}[label=\arabic{enumi}\alph*]
\item Amet
\end{enumerate}
\end{enumerate}
\end{document}
答案3
\documentclass{article}
\usepackage{expl3}
\usepackage{xparse}
\usepackage{enumitem}
\ExplSyntaxOn
\int_new:N \g_nenum_level_int
\int_gset:Nn \g_nenum_level_int {0}
\DeclareDocumentEnvironment{nestedenum}{}{
% increment level counter
\int_gincr:N \g_nenum_level_int
\begin{enumerate}[
label={\int_use:N \g_nenum_level_int \alph* .},
leftmargin=0em,
itemsep=0pt,
parsep=0pt,
partopsep=0pt,
topsep=0pt
]
}{
\end{enumerate}
\int_gdecr:N \g_nenum_level_int
}
\ExplSyntaxOff
\begin{document}
\begin{nestedenum}
\item First level (1)
\item First level (2)
\begin{nestedenum}
\item Second level (1)
\item Second level (2)
\begin{nestedenum}
\item Third level (1)
\item Third level (2)
\end{nestedenum}
\item Second level (3)
\item Second level (4)
\end{nestedenum}
\item First level (3)
\item First level (4)
\end{nestedenum}
\vspace*{2em}
\begin{nestedenum}
\item First level (1)
\item First level (2)
\begin{nestedenum}
\item Second level (1)
\item Second level (2)
\begin{nestedenum}
\item Third level (1)
\item Third level (2)
\end{nestedenum}
\item Second level (3)
\item Second level (4)
\end{nestedenum}
\item First level (3)
\item First level (4)
\end{nestedenum}
\end{document}