五级深度列表

五级深度列表

我想使用该enumitem包创建一个五级深度列表。我在堆栈溢出并按如下方式实施

\documentclass[twoside,a4paper,12pt]{report}
\usepackage{enumitem}
\setlistdepth{9}

\begin{document}
\begin{enumerate}
\item 1st level
    \begin{enumerate}
    \item 2nd level
        \begin{enumerate}
        \item 3rd level
            \begin{enumerate}
            \item 4th level
                \begin{enumerate}
                \item 5th level
                \end{enumerate}
            \end{enumerate}
        \end{enumerate}
    \end{enumerate}
\end{enumerate}
\end{document}

但仍然会出现错误too deeply nested。遗憾的是,使用 itemize 环境不是一种选择。

在提供的链接中提到只能\setlistdepth{}从某个版本开始工作,我如何找出我正在使用的是哪个版本?

答案1

LaTeX 对保存计数器的列表深度有限制。但是,你可以克隆现有enumerate环境并使用以下方法增加深度enumitem 包

\newlist{myEnumerate}{enumerate}{6}

然后您需要使用\setlist来设置每个深度的计数器,并使用\setlistdepth{}来增加默认深度限制 6。

在此处输入图片描述

笔记:

  • 如果不使用\setlistdepth{9}大于 6 的深度将导致:

    LaTeX 错误:嵌套太深。

  • 已经对 15 的深度进行了测试并且似乎运行良好,但是如果列表深度很高,您确实需要重新考虑您要传达的信息的格式。

代码:

\documentclass{article}
\usepackage{enumitem}
\setlistdepth{9}

\newlist{myEnumerate}{enumerate}{9}
\setlist[myEnumerate,1]{label=(\arabic*)}
\setlist[myEnumerate,2]{label=(\Roman*)}
\setlist[myEnumerate,3]{label=(\Alph*)}
\setlist[myEnumerate,4]{label=(\roman*)}
\setlist[myEnumerate,5]{label=(\alph*)}
\setlist[myEnumerate,6]{label=(\arabic*)}
\setlist[myEnumerate,7]{label=(\Roman*)}
\setlist[myEnumerate,8]{label=(\Alph*)}
\setlist[myEnumerate,9]{label=(\roman*)}

\begin{document}
\begin{myEnumerate}
\item 1st level
    \begin{myEnumerate}
    \item 2nd level
        \begin{myEnumerate}
        \item 3rd level
            \begin{myEnumerate}
            \item 4th level
                \begin{myEnumerate}
                \item 5th level
                    \begin{myEnumerate}
                    \item 6th level
                        \begin{myEnumerate}
                        \item 7th level
                            \begin{myEnumerate}
                            \item 8th level
                                \begin{myEnumerate}
                                \item 9th level
                                \end{myEnumerate}
                            \end{myEnumerate}
                        \end{myEnumerate}
                    \end{myEnumerate}
                \end{myEnumerate}
            \end{myEnumerate}
        \end{myEnumerate}
    \end{myEnumerate}
\end{myEnumerate}
\end{document}

答案2

我意识到这个答案不能满足不使用 itemize 的要求,但是为了完整性我还是添加了它。

由于 5 级深度约束也适用于 itemize 环境,这里有一个示例(使用 Peter 的答案中提出的相同方法),它增加了默认 itemize 环境的深度:

\usepackage{enumitem}
\setlistdepth{20}
\renewlist{itemize}{itemize}{20}

% initially, use dots for all levels
\setlist[itemize]{label=$\cdot$}

% customize the first 3 levels
\setlist[itemize,1]{label=\textbullet}
\setlist[itemize,2]{label=--}
\setlist[itemize,3]{label=*}

答案3

如果您“只是”需要额外的第五级,那么有一种简单但非常规的方法。当您需要六个或更多级别并且需要一些手动破解时,这种方法不起作用。

您可以使用

\物品 []

截断枚举符号并手动将其添加到文本中。

\begin{enumerate}
    \item first level.
    \begin{enumerate}
        \item second level.
        \item Lorem ipsum dolor sit amet.
        \begin{enumerate}
            \item third level.
            \item Lorem ipsum dolor sit amet.
            \begin{enumerate}
                \item fourth level.
                \item Lorem ipsum dolor sit amet.
                %fake \begin{enumerate}
                    \item [] 1. fake fifth level.
                    \item [] 2. Lorem ipsum dolor sit amet.
                    \item [] 3. Lorem ipsum dolor sit amet.
                %fake \end{enumerate}
                \item Lorem ipsum dolor sit amet.
            \end{enumerate}
            \item Lorem ipsum dolor sit amet.
        \end{enumerate}
        \item Lorem ipsum dolor sit amet.
    \end{enumerate}
\end{enumerate}

在此处输入图片描述

答案4

我一直使用的实现第五层嵌套的技巧是在 enumerate 中使用 itemize。如果您不需要在最内层进行编号,这是最简单、最实用的方法。

相关内容