Controle de recuo linha por linha com classe de memórias

Controle de recuo linha por linha com classe de memórias

Estou tendo problemas para controlar o recuo de linhas individuais enquanto mantenho o recuo suspenso em cada nível. É um pouco difícil para mim descrever, então acho que ficará mais claro com uma imagem:
Texto de exemplo com recuo deslocado nas linhas e recuo hierárquico entre linhas

Há duas coisas que dificultam:

  1. há muitas linhas longas, então o recuo suspenso é obrigatório
  2. há muitos lugares onde o recuo hierárquico atinge 3 ou 4 níveis, portanto, não é viável que todos os recuos deslocados caiam no mesmo lugar.

O mais próximo que cheguei foi usar patverseno verseambiente que vem com memoir, mas isso só me permite compensar a primeira linha de cada nova parte recuada; todo o texto quebrado se alinha de uma forma que torna impossível recuar duas ou mais vezes:
Exemplo de texto em que o texto passa para o segundo nível de recuo

Considerei usar descriptionambientes aninhados, mas quero que o espaçamento entre linhas seja igual ao do texto normal. Provavelmente isso poderia ser consertado, mas parece um pouco complicado de usar, então eu queria saber se havia algo melhor antes de tentar fazê-lo funcionar.

Uma última coisa: por enquanto, estou planejando usar o memoirpacote. Se isso torna esse esquema de recuo muito complicado de marcar, estou disposto a deixar para lá, mas o ideal é que eu gostaria de uma solução que funcionasse bem com memoir.

Responder1

Aqui está uma versão usando apenas um itemizeambiente com configurações mínimas criadas usando o enumitempacote. Não há necessidade de usar descriptionambiente porque você não tem rótulo nenhum, então itemizeé o mais adequado. Você pode brincar com as configurações como quiser para obter o espaçamento desejado. Usei a noseptecla para remover todo o espaçamento vertical da lista e defini a margem de nível superior para ficar alinhada com o restante do texto.

\documentclass{memoir}
\usepackage{enumitem}
\newlist{nolabel}{itemize}{4}
\setlist[nolabel]{label={},nosep,labelwidth=0pt,labelsep=0pt}
\setlist*[nolabel,1]{leftmargin=*}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{nolabel}
\item This is a line at the first level of the list. Here’s how it wraps when the line is very long:
\begin{nolabel}
    \item This is a line at the second level of the list.
    \item This is another line at the second level.
    \begin{nolabel}
        \item This is a third level item.
        \item This a another third level item.
    \end{nolabel}
    \item This is a third second level item.
    \end{nolabel}
\item This is a final first level item.
\end{nolabel}
\lipsum[1]
\end{document}

saída de código

informação relacionada