ラベルをインデントせず、項目をインデントしたリストを定義する

ラベルをインデントせず、項目をインデントしたリストを定義する

今夜、私は座って、次のような簡単なリストを定義しようとしました。

1:23
  Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean
  commodo ligula eget dolor. Aenean massa. Cum sociis natoque
  penatibus et magnis dis parturient montes, nascetur ridiculus
  mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis,
  sem.

  Nulla consequat massa quis enim. Donec pede justo, fringilla vel,
  aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut,
  imperdiet a, venenatis vitae, justo.

要件がかなりシンプルであることがわかります。項目ラベルはまったくインデントされず、左端から正確に開始する必要があります。その後に改行が必要です。改行の後には項目本体が続きます。これは段落全体と、それに続くすべての段落を同じ量だけインデントする必要があります。ただし、段落の先頭にインデントがあってはならず、すべての段落は空白行から開始する必要があります。例では、インデントは 2 スペースですが、4 文字でも十分だと思います。

起こりうる複雑さとして、私の文書は全体として上記の段落スタイルに従っており、段落間には空白行があり、最初のインデントはありません。次に、項目ラベルをタイプライター テキストでフォーマットしたいと思います。

だから、明らかに、私にはlist環境が必要だと思いました。

\documentclass[12pt]{article}
\pagestyle{plain}
\usepackage[margin=1.8cm]{geometry}
\geometry{a4paper}
\usepackage[parfill]{parskip}

\begin{document}

\begin{list}{}{}
  \item[1:23]
  Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean
  commodo ligula eget dolor. Aenean massa. Cum sociis natoque
  penatibus et magnis dis parturient montes, nascetur ridiculus
  mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis,
  sem.

  Nulla consequat massa quis enim. Donec pede justo, fringilla vel,
  aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut,
  imperdiet a, venenatis vitae, justo.
\end{list}

\end{document}

しかし、ラベルの実際のインデント自体は定義されていないようで、2 番目の引数として何を入れるべきか考えてみると、まったくわけがわからなくなってしまいました。代わりに が\leftmargin定義され、アイテム ラベルは他の関連パラメーターによってそれと相対的に移動されますが、その調整方法がわかりません。

追加の説明があれば、大変ありがたく思います。

答え1

あなたするリストが欲しい。

\documentclass[12pt]{article}
\pagestyle{plain}
\usepackage[margin=1.8cm]{geometry}
\geometry{a4paper,showframe} % showframe just for the example
\usepackage[parfill]{parskip}

\newenvironment{points}
 {\begin{list}{}{\leftmargin=1em\labelwidth=\leftmargin\labelsep=0pt}%
  \newcommand{\point}[1]{\item[##1]\mbox{}\\*\ignorespaces}}
 {\end{list}}

\begin{document}

\begin{points}

\point{1:23}
  Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean
  commodo ligula eget dolor. Aenean massa. Cum sociis natoque
  penatibus et magnis dis parturient montes, nascetur ridiculus
  mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis,
  sem.

  Nulla consequat massa quis enim. Donec pede justo, fringilla vel,
  aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut,
  imperdiet a, venenatis vitae, justo.

\point{22:333}
  Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean
  commodo ligula eget dolor. Aenean massa. Cum sociis natoque
  penatibus et magnis dis parturient montes, nascetur ridiculus
  mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis,
  sem.

\end{points}

\end{document}

ここに画像の説明を入力してください

答え2

これはあなたが望むものにかなり近いようです:

\documentclass[12pt]{article}
\pagestyle{plain}
\usepackage[a4paper,margin=1.8cm]{geometry}
\usepackage{enumitem}
\usepackage{lipsum}
\usepackage{showframe}

\newlist{simple}{description}{1}
\setlist[simple]{leftmargin=4mm,   % indentation of paragraphs
                 font=\texttt,     % typewritter text for labels
                 style=nextline,   % start new line for "wide" labels
                 labelindent=0pt,  % the remaining settings make the
                 itemindent=-1.5mm,% width of the labels, with a small hack
                                   % to drag the label back to the margin
                 listparindent=0pt,
                 labelwidth=0pt,
}

\begin{document}

   \begin{simple}
     \item[1:23]\lipsum[1-2]
     \item[1:24]\lipsum[1-2]
   \end{simple}

\end{document}

利用したショーフレームitemindent=-1.5mm余白がどこにあるかを表示します。何らかの理由でラベルを余白に戻すために、これを使用する小さなハックが必要であることに注意してください。

ここに画像の説明を入力してください

答え3

結局、list環境の使用をあきらめて、代わりにボックスを使用して新しいコマンドを定義しました。これは私にとってはうまく機能しますが、ハックっぽい感じがします。

\newlength{\currentparskip}
\setlength{\currentparskip}{\parskip}
\newcommand{\point}[2]{\texttt{#1} \\
  \makebox[1em]{}\begin{minipage}[t]{\dimexpr\textwidth-1em}%
    \setlength{\parskip}{\currentparskip}%
    #2%
  \end{minipage}%
}

前に 1em 幅のボックスを使用するminipage必要があることがわかりましたが、\hfill何も効果がないように思われました。

しかし、それはうまく機能しているようです:

\documentclass[12pt]{article}
\pagestyle{plain}
\usepackage[margin=1.8cm]{geometry}
\geometry{a4paper}
\usepackage[parfill]{parskip}
\usepackage{showframe}

\newlength{\currentparskip}
\setlength{\currentparskip}{\parskip}
\newcommand{\point}[2]{\texttt{#1} \\
  \makebox[1em]{}\begin{minipage}[t]{\dimexpr\textwidth-1em}%
    \setlength{\parskip}{\currentparskip}%
    #2%
  \end{minipage}%
}

\begin{document}

\point{1:23}{%
  Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean
  commodo ligula eget dolor. Aenean massa. Cum sociis natoque
  penatibus et magnis dis parturient montes, nascetur ridiculus
  mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis,
  sem.

  Nulla consequat massa quis enim. Donec pede justo, fringilla vel,
  aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut,
  imperdiet a, venenatis vitae, justo.
}

\point{1:24}{%
  Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean
  commodo ligula eget dolor. Aenean massa. Cum sociis natoque
  penatibus et magnis dis parturient montes, nascetur ridiculus
  mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis,
  sem.

  Nulla consequat massa quis enim. Donec pede justo, fringilla vel,
  aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut,
  imperdiet a, venenatis vitae, justo.
}

\end{document}

ここに画像の説明を入力してください

まあ、私は理解している

Overfull \hbox (30.0pt too wide) in paragraph at lines 29--30

警告。

関連情報