Como compor enumerações profundas e de várias páginas de maneira adequada e rápida?

Como compor enumerações profundas e de várias páginas de maneira adequada e rápida?

Considere uma prova matemática com uma longa distinção de maiúsculas e minúsculas aninhadas abrangendo várias páginas:

\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}

Correr pdflatexnele rende

saída com itens de caso não enumerados

Como nosso exemplo não mínimo abrange várias páginas (e algumas linhas são mais altas do que o normal devido a matrizes e divisões de maiúsculas e minúsculas dentro da matemática), o recuo não ajuda o leitor tanto quanto se todo o conteúdo estivesse em uma página.

Nossa solução atual é enumerar os casos hierarquicamente:

\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}

Correr pdflatexnele rende

saída com itens de caso enumerados

  1. Alguma maneira gráfica melhor de representar a distinção de casos?

  2. Nós precisamos \setlistdepth{6}? Embora eu veja isso em meu código não mínimo (provavelmente já foi útil), não consigo ver como isso ajuda aqui agora. Adicionar este comando produz o mesmo arquivo PDF até metadados.

  3. Em nossa solução, adicionar um salto após os pontos finais que encerram os nomes dos itens semânticos é complicado, exigindo macros separadas dependendo se o texto visível segue na mesma linha ou se o resto da linha está vazio. Além disso, \deepEnumItemAndSkip{\ldots}stuffe \deepEnumItemAndSkip{\ldots} stuffproduzem resultados diferentes (enquanto \item stuffe \item stuffproduzem o mesmo resultado). Existe alguma maneira melhor de automatizar a adição condicional desse espaço horizontal?

  4. Na nossa solução, a margem esquerda para a profundidade 5 estava muito próxima da margem esquerda para a profundidade 4, e a margem esquerda para a profundidade 6 estava muito próxima da margem esquerda para a profundidade 5. Queríamos garantir que o aumento da margem esquerda da profundidade

informação relacionada