我正在尝试排版大量练习,将所有这些练习(约五百个)导入一个主文件。编译时出现错误:! LaTeX Error: Too deeply nested.
该错误与一些包含 imbriq 问题的练习有关,例如(在第三级逐项列出):
\ben
\item
\ben
\item ...
\bit
\item ...
\eit
\item ...
\een
\item ...
\een
\bit\eit\ben\een
下面定义的位置(我的.cls
文件的一部分)。
\RequirePackage{enumitem}
\setlist{nolistsep,
leftmargin = *}
%
\setlistdepth{9}
%
\newlist{myEnumerate}{enumerate}{9}
\setlist[myEnumerate]{
font = {\bfseries} ,
topsep = 0pt }
\setlist[myEnumerate,1]{label=\arabic* ---,ref=\arabic*}
\setlist[myEnumerate,2]{label=\arabic{myEnumeratei}.\arabic*),ref=\themyEnumeratei.\arabic*}
\setlist[myEnumerate,3]{label=\roman*),ref=\themyEnumerateii.\roman*}
\setlist[myEnumerate,4]{label=\Roman*.,ref=\themyEnumerateiii.\Roman*}
\setlist[myEnumerate,5]{label=\themyEnumerateiiii.\roman*.,ref = \themyEnumerateiiii.\roman*}
\setlist[myEnumerate,6]{label=(\arabic*)}
\setlist[myEnumerate,7]{label=(\Roman*)}
\setlist[myEnumerate,8]{label=(\Alph*)}
\setlist[myEnumerate,9]{label=(\roman*)}
\newcommand{\ben}{\begin{myEnumerate}}
\newcommand{\een}{\end{myEnumerate}}
%
\newlist{myItemize}{itemize}{9}
\setlist[myItemize]{
topsep = 0pt }
\setlist[myItemize,1]{label=\faCaretRight}
\setlist[myItemize,2]{label=---}
\setlist[myItemize,3]{label=---}
\setlist[myItemize,4]{label=---}
\setlist[myItemize,5]{label=---}
\setlist[myItemize,6]{label=---}
\setlist[myItemize,7]{label=---}
\setlist[myItemize,8]{label=---}
\setlist[myItemize,9]{label=---}
\newcommand{\bit}{\begin{myItemize}}
\newcommand{\eit}{\end{myItemize}}
奇怪的是,如果我尝试排版其中一个可疑练习(其他输入都已注释),一切都会顺利进行!你觉得我的itemize
andenumerate
声明有问题吗?恐怕我无法生成 MWE,除非传输整个练习库。
答案1
我想象你的文件有这种形式
\documentclass{article}
\usepackage{enumitem}
\RequirePackage{enumitem}
\setlist{nolistsep,
leftmargin = *}
%
\setlistdepth{9}
%
\newlist{myEnumerate}{enumerate}{9}
\setlist[myEnumerate]{
font = {\bfseries} ,
topsep = 0pt }
\setlist[myEnumerate,1]{label=\arabic* ---,ref=\arabic*}
\setlist[myEnumerate,2]{label=\arabic{myEnumeratei}.\arabic*),ref=\themyEnumeratei.\arabic*}
\setlist[myEnumerate,3]{label=\roman*),ref=\themyEnumerateii.\roman*}
\setlist[myEnumerate,4]{label=\Roman*.,ref=\themyEnumerateiii.\Roman*}
\setlist[myEnumerate,5]{label=\themyEnumerateiiii.\roman*.,ref = \themyEnumerateiiii.\roman*}
\setlist[myEnumerate,6]{label=(\arabic*)}
\setlist[myEnumerate,7]{label=(\Roman*)}
\setlist[myEnumerate,8]{label=(\Alph*)}
\setlist[myEnumerate,9]{label=(\roman*)}
\newcommand{\ben}{\begin{myEnumerate}}
\newcommand{\een}{\end{myEnumerate}}
%
\newlist{myItemize}{itemize}{9}
\setlist[myItemize]{
topsep = 0pt }
\setlist[myItemize,1]{label=\textbullet}
\setlist[myItemize,2]{label=---}
\setlist[myItemize,3]{label=---}
\setlist[myItemize,4]{label=---}
\setlist[myItemize,5]{label=---}
\setlist[myItemize,6]{label=---}
\setlist[myItemize,7]{label=---}
\setlist[myItemize,8]{label=---}
\setlist[myItemize,9]{label=---}
\newcommand{\bit}{\begin{myItemize}}
\newcommand{\eit}{\end{myItemize}}
\begin{document}
\section{The bit you didn't show}
\bit\item\bit\item\bit\item\bit\item
\bit\item\bit\item\bit\item\bit\item
\section{The bit you showed}
\ben
\item
\ben
\item ...
\bit
\item ...
\eit
\item ...
\een
\item ...
\een
\end{document}
产生错误消息
! LaTeX Error: Too deeply nested.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.54 \item
...
?
这可以解释为什么它只出现在长文档中,你有一些构造启动一个环境但没有关闭它,所以如果你得到足够多的这些,它们会强制列表嵌套太深。
请注意,如果您没有掩盖环境语法,并且明确使用\begin
和\end
,大多数编辑器将能够检查匹配的开始结束形式。