我想使用该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。如果您不需要在最内层进行编号,这是最简单、最实用的方法。