如何又好又快地排版深度多頁的枚舉?

如何又好又快地排版深度多頁的枚舉?

考慮一個跨越多個頁面的長嵌套大小寫差異的數學證明:

\documentclass{article}
\pagestyle{empty}
\usepackage{enumitem}%\setlistdepth{6}%% do we need this?
\begin{document}
\setlist[description]{nosep,font=\normalfont,style=sameline}
\begin{description}
\item[Case \(i=0\).] 5 lines.
\item[Case \(i=1\).] 3 lines.
  \begin{description}
  \item[Case \(a0t0a1\).] 1 line
    \begin{description}
    \item[Case \ldots.] 6 lines
    \item[Case \ldots.]\strut
      \begin{description}
      \item[Case \ldots.] 9 lines
      \item[Case \ldots.] 11 lines
        \begin{description}
        \item [Case \ldots.] 6 lines
        \item [Case \ldots.] 7 lines
        \item [Case \ldots.] 5 lines
        \item [Case \ldots.] 6 lines
        \end{description}
      \end{description}
    \end{description}
  \item[Case \(a0n0a1\).] 2 lines
    \begin{description}
    \item[Case \ldots.] 4 lines
    \item[Case \ldots.] 3 lines
      \begin{description}
      \item[Case \ldots.] 3 lines
      \item[Case \ldots.] 5 lines
      \item[Case \ldots.] 3 lines
        \begin{description}
        \item[Case \ldots.] 4 lines
        \item[Case \ldots.] 5 lines
          \begin{description}
          \item[Case \ldots.] 5 lines
          \item[Case \ldots.] 6 lines
          \item[None of the two previous subcases.] 10 lines
          \end{description}
        \end{description}
      \end{description}
    \end{description}
  \end{description}
\item[Case \(2\le i \le n{-}1\).] 2 lines
  \begin{description}
  \item[Case \(c\neq 0\).] 1 line
    \begin{description}
    \item[Case \ldots.] 7 lines
    \item[Case \ldots.]\strut
      \begin{description}
      \item[Case \ldots.] 2 lines
        \begin{description}
        \item[Case \ldots.] 6 lines
        \item[Case \ldots.]\strut
          \begin{description}
          \item[Case \ldots.] 7 lines
          \item[Case \ldots.] 15 lines
          \end{description}
        \end{description}
      \item[Case \ldots.] 7 lines
      \end{description}
    \end{description}
  \item[Case \(c=0\).] 6 lines
  \end{description}
\item[Case \(i=n\).] 2 lines
\end{description}
\end{document}

運行pdflatex它會產生

帶有非枚舉案例項的輸出

由於我們的非最小範例跨越多個頁面(並且由於數學內部的矩陣和大小寫分割,某些行比平常更高),縮排對讀者的幫助不如整個內容都在一頁上。

我們目前的解決方案是分層枚舉案例:

\documentclass{article}
\pagestyle{empty}
\usepackage{enumitem}
% \setlistdepth{6}%% do we need this?
\newlength{\origlabelsep}
\setlength{\origlabelsep}{\labelsep}
\newlist{deepEnum}{enumerate}{6}
\setlist[deepEnum,1]{nosep,font=\normalfont,style=sameline,label*=Case \arabic*,labelsep=0pt}
\setlist[deepEnum,2,3,4,5,6]{nosep,font=\normalfont,style=sameline,label*=.\arabic*}
\newcommand{\deepEnumItem}[1]{\item: #1.}
\newcommand{\deepEnumItemAndSkip}[1]{\item: #1.\hskip\origlabelsep\relax}
\begin{document}
\setlength{\leftmarginv}{16pt}%% any non ad-hoc number?
\setlength{\leftmarginvi}{15pt}%% any non ad-hoc number?
\begin{deepEnum}
  \deepEnumItemAndSkip{\(i=0\)}5 lines.
  \deepEnumItemAndSkip{\(i=1\)}3 lines.
  \begin{deepEnum}
    \deepEnumItemAndSkip{\(a0t0a1\)}1 line
    \begin{deepEnum}
      \deepEnumItemAndSkip{\ldots}6 lines
      \deepEnumItem{\ldots}\strut
      \begin{deepEnum}
        \deepEnumItemAndSkip{\ldots}9 lines
        \deepEnumItemAndSkip{\ldots}11 lines
        \begin{deepEnum}
          \deepEnumItemAndSkip{\ldots}6 lines
          \deepEnumItemAndSkip{\ldots}7 lines
          \deepEnumItemAndSkip{\ldots}5 lines
          \deepEnumItemAndSkip{\ldots}6 lines
        \end{deepEnum}
      \end{deepEnum}
    \end{deepEnum}
    \deepEnumItemAndSkip{\(a0n0a1\)}2 lines
    \begin{deepEnum}
      \deepEnumItemAndSkip{\ldots}4 lines
      \deepEnumItemAndSkip{\ldots}3 lines
      \begin{deepEnum}
        \deepEnumItemAndSkip{\ldots}3 lines
        \deepEnumItemAndSkip{\ldots}5 lines
        \deepEnumItemAndSkip{\ldots}3 lines
        \begin{deepEnum}
          \deepEnumItemAndSkip{\ldots}4 lines
          \deepEnumItemAndSkip{\ldots}5 lines
          \begin{deepEnum}
            \deepEnumItemAndSkip{\ldots}5 lines
            \deepEnumItemAndSkip{\ldots}6 lines
            \deepEnumItemAndSkip{None of the two previous subcases}10 lines
          \end{deepEnum}
        \end{deepEnum}
      \end{deepEnum}
    \end{deepEnum}
  \end{deepEnum}
  \deepEnumItemAndSkip{\(2\le i \le n{-}1\)}2 lines
  \begin{deepEnum}
    \deepEnumItemAndSkip{\(c\neq 0\)}1 line
    \begin{deepEnum}
      \deepEnumItemAndSkip{\ldots}7 lines
    \item: \ldots.\strut
      \begin{deepEnum}
        \deepEnumItemAndSkip{\ldots}2 lines
        \begin{deepEnum}
          \deepEnumItemAndSkip{\ldots}6 lines
          \deepEnumItemAndSkip{\ldots}\strut
          \begin{deepEnum}
            \deepEnumItemAndSkip{\ldots}7 lines
            \deepEnumItemAndSkip{\ldots}15 lines
          \end{deepEnum}
        \end{deepEnum}
        \deepEnumItemAndSkip{\ldots}7 lines
      \end{deepEnum}
    \end{deepEnum}
    \deepEnumItemAndSkip{\(c=0\)}6 lines
  \end{deepEnum}
  \deepEnumItemAndSkip{\(i=n\)}2 lines
\end{deepEnum}
\end{document}

運行pdflatex它會產生

帶有枚舉案例項的輸出

  1. 有更好的圖形方式來表示大小寫差異嗎?

  2. 我們需要\setlistdepth{6}?雖然我在我的非最小程式碼中看到它(所以可能它曾經有用過),但我現在看不到它在這裡有什麼幫助。新增此命令會產生相同的 PDF 檔案直至元資料。

  3. 在我們的解決方案中,在句號終止語義項名稱之後添加跳過很麻煩,需要單獨的宏,這取決於可見文字是否在同一行上,或者該行的其餘部分是否為空。此外,\deepEnumItemAndSkip{\ldots}stuff\deepEnumItemAndSkip{\ldots} stuff產生不同的結果(而\item stuff\item stuff產生相同的結果)。有更好的方法來自動有條件地添加這個水平空間嗎?

  4. 在我們的解決方案中,深度 5 的左邊距太接近深度 4 的左邊距,深度 6 的左邊距太接近深度 5 的左邊距。

相關內容