使用 memoir 类进行逐行缩进控制

使用 memoir 类进行逐行缩进控制

我在控制每行缩进的同时保持每个级别的悬挂缩进时遇到了麻烦。这对我来说有点难以描述,所以我认为用图片会更清楚:
行内悬挂缩进和跨行分层缩进的示例文本

有两件事让它变得困难:

  1. 有很多长行,所以必须有悬挂缩进
  2. 有很多地方的层次缩进有 3 或 4 个级别,因此每个悬挂缩进都落在同一个位置是不可行的。

我最接近的方法是使用自带的环境patverse,但这只允许我偏移每个新缩进部分的第一行;所有换行的文本都以一种无法缩进两次或更多次的方式排列:versememoir
文本换行至第二级缩进的文本示例

我考虑过使用嵌套description环境,但我希望行间距与常规文本相同。这可能可以修复,但实际使用起来似乎有点麻烦,所以我想知道在尝试让它工作之前是否有更好的方法。

最后一件事:目前,我计划使用包memoir。如果这会使这个缩进方案过于复杂而难以标记,我愿意放弃它,但理想情况下,我希望有一个可以很好地与 配合使用的解决方案memoir

答案1

itemize这是一个仅使用使用该包创建的具有最少设置的环境的版本enumitem。无需使用description环境,因为您根本没有标签,所以这itemize是最合适的。您可以随意调整设置以获得所需的间距。我已使用键nosep从列表中删除所有垂直间距,并将顶级边距设置为与其余文本齐平。

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

代码输出

相关内容