如何在 LaTeX 中获取三个嵌套枚举?

如何在 LaTeX 中获取三个嵌套枚举?

这是我当前的代码。我已成功获得下一个枚举,但我希望使用第三个嵌套来代替我必须编写 1.1.1、1.1.2 等。

 \begin{enumerate}
 \item Top Levek
   \begin{enumerate}
   \item Second Level
     \begin{enumerate}
     \item Third Level
     \end{enumerate}
   \end{enumerate}
 \end{enumerate}

这让我

1 Top Level
1.1 Second Level
i Third Level

我想要的输出是

1 Top Level
1.1 Second Level
1.1.1 Third Level

我如何实现这个目标?

另外,我该如何删除第三级的缩进以使其与第二级内联?

答案1

这是您所希望的吗?

\documentclass{article}
\usepackage{enumitem}
\usepackage[showframe]{geometry}

\newlength{\labelwd}
\settowidth{\labelwd}{9.9.9}
\setlist[enumerate]{label*=.\arabic*, wide = 0.5em, labelwidth=\labelwd}
\setlist[enumerate, 1]{label=\arabic*}
\setlist[enumerate, 2,3]{labelindent=-\dimexpr\labelwd+\labelsep}

\begin{document}

 \begin{enumerate}[leftmargin=\dimexpr\labelwd+\labelsep + 0.5em,]
    \item Top Level. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text.
    \begin{enumerate}
        \item Second Level. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text.
        \begin{enumerate}%[labelindent = -\dimexpr1cm + \labelsep]
        \item Third Level. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text. Some more text.
        \end{enumerate}
   \end{enumerate}
\end{enumerate}

\end{document} 

在此处输入图片描述

答案2

您可以使用枚举项要生产的包装:

在此处输入图片描述

代码如下:

\documentclass{article}
\usepackage{enumitem}
\setlist[enumerate,1]{label=\arabic*}
\setlist[enumerate,2]{label=\theenumi.\arabic*}
\setlist[enumerate,3]{label=\theenumii.\arabic*}
\begin{document}

\begin{enumerate}
 \item Top Levek
   \begin{enumerate}
   \item Second Level
     \begin{enumerate}
     \item Third Level
     \end{enumerate}
   \end{enumerate}
 \end{enumerate}

\end{document}

重要的是线条

\usepackage{enumitem}
\setlist[enumerate,1]{label=\arabic*}
\setlist[enumerate,2]{label=\theenumi.\arabic*}
\setlist[enumerate,3]{label=\theenumii.\arabic*}

这些指定了您希望标签看起来是什么样子。如果您需要进一步调整,我强烈建议您阅读包装手册。它非常容易阅读。

编辑要在 OP 中获得缩进,您可以使用:

\documentclass{article}
\usepackage{enumitem}
\setlist[enumerate]{
   leftmargin=0pt, labelindent*=0pt, labelwidth=0pt,align=left
}
\setlist[enumerate,1]{label=\arabic*}
\setlist[enumerate,2]{label=\theenumi.\arabic*}
\setlist[enumerate,3]{label=\theenumii.\arabic*}

\begin{document}

\begin{enumerate}
 \item Top Level
   \begin{enumerate}
   \item Second Level
     \begin{enumerate}
     \item Third Level
     \end{enumerate}
   \end{enumerate}
 \end{enumerate}

\end{document}

给予:

在此处输入图片描述

编辑二 正如 Mico 在评论中所说,对于所需的缩进,使用 更容易\setlist[enumerate]{ wide=0pt }

答案3

如果您不想使用新的包,您可以定义新的列表环境。

使用我的丑陋解决方案,如果您在某个项目后不写任何内容并在之后打开一个新列表,则数字只会出现一次,如下所示:

在此处输入图片描述

LaTeX 渲染效果很好,但我没有太注意。

以下是代码:

\documentclass{article}

\newcounter{123num}
\newenvironment{123item}
  {\begin{list}{\textbf{\arabic{123num}}}
               {\usecounter{123num}
                \setlength{\leftmargin}{1.4em}
               }}
  {\end{list}}

\newcounter{sous123num}
\newenvironment{sous123item}
  {\begin{list}{\textbf{\arabic{123num}.\arabic{sous123num}}}
               {\usecounter{sous123num}
                \setlength{\labelwidth}{1.8em}
                \setlength{\leftmargin}{0.9em}
               }}
  {\end{list}}

\newcounter{soussous123num}
\newenvironment{ss123item}
  {\begin{list}{\textbf{\arabic{123num}.\arabic{sous123num}.\arabic{soussous123num}}}
               {\usecounter{soussous123num}
                \setlength{\labelwidth}{2.7em}
                \setlength{\leftmargin}{0.9em}
               }}
  {\end{list}}

\begin{document}

\begin{123item}
 \item Top Level
   \begin{sous123item}
   \item 
     \begin{ss123item}
     \item Third Level
     \end{ss123item}
   \item Second Level
   \end{sous123item}
 \end{123item}

\end{document}

相关内容