嵌套太深

嵌套太深

我正在尝试排版大量练习,将所有这些练习(约五百个)导入一个主文件。编译时出现错误:! 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}}

奇怪的是,如果我尝试排版其中一个可疑练习(其他输入都已注释),一切都会顺利进行!你觉得我的itemizeandenumerate声明有问题吗?恐怕我无法生成 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,大多数编辑器将能够检查匹配的开始结束形式。

相关内容