memoir クラスによる行単位のインデント制御

memoir クラスによる行単位のインデント制御

各レベルでぶら下げインデントを維持しながら、個々の行のインデントを制御するのに苦労しています。説明するのは少し難しいので、図で示すのが一番わかりやすいと思います。
行内のぶら下げインデントと行間の階層インデントを使用したテキストの例

困難を生じさせる要因は 2 つあります。

  1. 長い行がたくさんあるので、ぶら下げインデントは必須です
  2. 階層的なインデントが 3 レベルまたは 4 レベルに及ぶ場所が多数あるため、すべてのぶら下げインデントを同じ場所に配置することは現実的ではありません。

私がこれまでに得た最も近い方法は、に付属する環境patverseで を使用することですが、これでは、新しいインデント部分の最初の行のみをオフセットすることしかできません。折り返されたテキストはすべて整列するため、2 回以上のインデントは不可能になります。versememoir
テキストが 2 番目のインデント レベルに折り返されるテキストの例

ネストされた環境の使用を検討しましたdescriptionが、行間を通常のテキストと同じにしたいです。おそらく修正できると思いますが、実際に使用するには少し面倒なようですので、動作させる前にもっと良い方法があるかどうか知りたいと思いました。

最後にもう 1 つ: 今のところ、 パッケージを使用する予定ですmemoir。このインデント スキームによってマークアップが複雑になりすぎる場合は、そのままにしておきます。ただし、理想的には、 とうまく連携するソリューションが欲しいですmemoir

答え1

itemizeこれは、パッケージを使用して作成された最小限の設定の環境のみを使用するバージョンです。ラベルがまったくないため、環境enumitemを使用する必要はありません。これが最も適切です。設定を自由に変更して、必要な間隔を得ることができます。キーを使用して、リストからすべての垂直間隔を削除し、最上位の余白をテキストの残りの部分と同じ高さに設定しました。descriptionitemizenosep

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

コードの出力

関連情報