深くて複数ページの列挙を、きれいかつ素早くタイプセットするにはどうすればよいでしょうか?

深くて複数ページの列挙を、きれいかつ素早くタイプセットするにはどうすればよいでしょうか?

複数ページに渡る長いネストされたケースの区別を伴う数学的な証明を考えてみましょう。

\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すると

列挙されていないケース項目を含む出力

この非最小限の例は複数のページにまたがるため (また、数式内の行列やケース分割により、一部の行が通常よりも高くなっています)、内容全体が 1 ページにある場合ほど、インデントは読者にとって役に立ちません。

現在の解決策は、ケースを階層的に列挙することです。

\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の左マージンに近すぎました。深さからの左マージンの増加を確実にしたかったのです。

関連情報