重新定義 itemize 環境以進行更深層的巢狀會導致編譯凍結

重新定義 itemize 環境以進行更深層的巢狀會導致編譯凍結

我正在嘗試使用 向標準itemize環境添加一些嵌套層級enumitem。這個想法是將其添加到參數中-H以便允許pandoc處理更深層的逐項清單嵌套。到目前為止,這是我嘗試過的:

\documentclass{article}

\usepackage{enumitem}


\setlistdepth{9}
\setlist[itemize, 1]{label=\labelitemi, itemindent=0.25em}
\setlist[itemize, 2]{label=\labelitemii, itemindent=0.25em}
\setlist[itemize, 3]{label=\labelitemiii, itemindent=0.25em}
\setlist[itemize, 4]{label=\diamond, itemindent=0.25em}
\setlist[itemize, 5]{label=\smallblacksquare, itemindent=0.75em}
\setlist[itemize, 6]{label=\smalltriangleup, itemindent=1.25em}
\setlist[itemize, 7]{label=\smallcircle, itemindent=1.75em}
\setlist[itemize, 8]{label=\smallsquare, itemindent=2.25em}
\setlist[itemize, 9]{label=\labelitemiv, itemindent=3em}

\renewlist{itemize}{itemize}{9}

\begin{document}

    \begin{itemize}
        \item test
        \begin{itemize}
            \item test
        \end{itemize}
    \end{itemize}

\end{document}

不幸的是,編譯被卡住了(./test.aux),我不知道為什麼。關於我在這裡做錯了什麼有什麼想法嗎?

答案1

正如 daleif 已經指出的那樣,您會遇到循環,可以透過先儲存原始標籤項目定義來防止循環:

\documentclass{article}

\usepackage{enumitem}

\let\oldlabelitemi\labelitemi
\let\oldlabelitemii\labelitemii
\let\oldlabelitemiii\labelitemiii
\let\oldlabelitemiv\labelitemiv

\setlistdepth{9}
\setlist[itemize, 1]{label=\oldlabelitemi, itemindent=0.25em}
\setlist[itemize, 2]{label=\oldlabelitemii, itemindent=0.25em}
\setlist[itemize, 3]{label=\oldlabelitemiii, itemindent=0.25em}
\setlist[itemize, 4]{label=\diamond, itemindent=0.25em}
\setlist[itemize, 5]{label=\smallblacksquare, itemindent=0.75em}
\setlist[itemize, 6]{label=\smalltriangleup, itemindent=1.25em}
\setlist[itemize, 7]{label=\smallcircle, itemindent=1.75em}
\setlist[itemize, 8]{label=\smallsquare, itemindent=2.25em}
\setlist[itemize, 9]{label=\oldlabelitemiv, itemindent=3em}

\renewlist{itemize}{itemize}{9}

\begin{document}

\begin{itemize}
    \item test
          \begin{itemize}
              \item test
          \end{itemize}
\end{itemize}

\end{document}

相關內容