嵌套列表但只有一个标签

嵌套列表但只有一个标签

我可能自己选择了这种格式,也可能没选择,但我正试图将别人的作品很好地打字。

我想要的是带有标签格式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

后者很容易用enumitemlabel*命令生成。

我也不想降低到手动标记每个项目的水平,我想正确使用计数器。但是,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,否则这种方法似乎真的是死路一条。我不认为我可以依赖enumiolist但如果可能的话,我想知道怎么做。否则,如果有人能告诉我如何做到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}

相关内容