リストと図を並べて表示

リストと図を並べて表示

いくつかの文書では、リストと図を並べて配置する必要があります。

私はそのために 2 つの minipages 環境を使用していますが、リストが長すぎるため、それを分割してminipage 環境の外部に継続する必要があります (連続番号で、したがってパッケージのキー シリーズを使用します)。ただし、ご覧のとおり、環境の外部の最初の項目 と環境内の最後の項目enumitem間の分離は、他の項目間の分離とは異なります。enumerateminipageminipage

そこで質問なのですが、すべてのアイテムを均等に分離する方法はありますか?

もちろん、これを行う別のより良い方法についてのヒントがあれば、ありがたいです。

\documentclass{article}

\usepackage{enumitem} 
\setlist[enumerate,1]{leftmargin=*,label=\arabic*.}
\setlist[enumerate,2]{leftmargin=*,itemsep=.3cm,label=(\alph*)}

\begin{document}

\begin{enumerate}
\item Algum texto com referencia a uma figura.

\begin{minipage}[t]{0.55\linewidth}
 Uma lista.
\begin{enumerate}[series=exercicio]
 \item primeiro item
 \item segundo item
 \item terceiro item
\end{enumerate}
\end{minipage}\hfill
\begin{minipage}[t][2cm][c]{0.35\linewidth}
 \centering
 \rule{50pt}{50pt}
\end{minipage}
\begin{enumerate}[resume*=exercicio]
 \item quarto item com bastante texto. mais texto e mais texto e mais
  texto
 \item quinto item
\end{enumerate}

\end{enumerate}

\end{document}

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

答え1

単に画像を重ねて を使用することもできます\rightskip。残念ながら、\hangindentアイテムでは機能しないようです。

\documentclass{article}
\usepackage{mwe}
\usepackage{enumitem} 
\setlist[enumerate,1]{leftmargin=*,label=\arabic*.}
\setlist[enumerate,2]{leftmargin=*,itemsep=.3cm,label=(\alph*)}

\begin{document}

\begin{enumerate}
\item Algum texto com referencia a uma figura.

Uma lista.\hfill\llap{\raisebox{-\height}[0pt][0pt]{%
\begin{minipage}[t][2cm][c]{0.3\textwidth}% \linewidth is constantly changing here
 \centering
 \rule{50pt}{50pt}
\end{minipage}}}
\begin{enumerate}[series=exercicio]
 \par\rightskip=0.3\textwidth
 \item primeiro item.  Just to demonstrate the effect of \verb$\rightskip$ I am going to add more text here.
 \item segundo item.
 \par\rightskip=0pt
 \item terceiro item.
 \item quarto item com bastante texto. mais texto e mais texto e mais
  texto
 \item quinto item
\end{enumerate}

\end{enumerate}

\end{document}

かぶせる

答え2

パッケージを使用しますwrapfig:

\documentclass{article}

\usepackage{enumitem,wrapfig}
\usepackage{graphicx}

\begin{document}

\begin{wrapfigure}{r}{0.5\textwidth}
  \begin{center}
     \rule{50pt}{50pt}
  \end{center}
\end{wrapfigure}

Algúm texto que não é parte de uma lista.

\begin{enumerate}
\item Algum texto com referencia a uma figura.

 Uma lista.
  \begin{enumerate}
   \item primeiro item
   \item segundo item
   \item terceiro item
   \item quarto item com bastante texto. mais texto e mais texto e mais texto
   \item quinto item
  \end{enumerate}
\end{enumerate}

\end{document}

スクリーンショット

wrapfigドキュメンテーションこの警告から始まります:

いかなる種類のリスト環境でも、リスト環境の直前または直後にもを指定することはできません。間にwrapfigure空白行 ( ) がある場合は、リストの後に続けても問題ありません。\par

そのため、リストの前にテキストの行を追加しました。

リストの横に実際に図が表示されるように少し工夫することはできると思いますが、リストは図を囲む最初のもの、または唯一のものにすることはできません。

答え3

テキスト/ボックスのレイアウト方法は、\baselineskip連続する 2 つのベースライン間の最小間隔、または\lineskip2 つのボックスの下限と上限の境界間の最小間隔 (いずれか大きい方) を使用することです。

比較的一定の間隔を実現する 1 つの方法は、最初のミニページのベースラインを下部に配置し、2 番目のミニページのベースラインを上部に配置することです。

もう 1 つの方法は、すべてのミニページを \strut で開始および終了することです。

enumitem の場合、\strutまたは を追加すると\null、2 つのミニページの間にスペースが大きくなりすぎます。代わりに、デフォルトのミニページ間に約 12pt のスペースを追加するだけで済みます (\strut最後の にを追加すると、スペースは少なくなります\item)。enumitem がこの 12pt をどのように算出するかは正確にはわかりませんが、これが私の推測です。

ミニページ内のテキストは、ページの下部に収まるように伸縮されないことに注意してください。 また、どこかに を使用する\raggedbottomか、 を挿入する\vfilか、両方のミニページを共通の 内に配置する必要もあります\vbox

デモ:

\documentclass{article}
\usepackage{paracol}
\usepackage{enumitem}

\begin{document}
\begin{paracol}{2}

\noindent
\begin{minipage}{\columnwidth}
\begin{enumerate}[series=test1]
\item One
\item Two
\end{enumerate}
\end{minipage}
\begin{minipage}{\columnwidth}
\begin{enumerate}[resume*=test1]
\item Three
\item Four
\end{enumerate}
\end{minipage}
\switchcolumn

\noindent
\begin{minipage}{\columnwidth}
\begin{enumerate}[series=test2]
\item One
\item Two\strut
\end{enumerate}
\end{minipage}
\vskip\partopsep\vskip\itemsep\vskip\parsep\noindent
\begin{minipage}{\columnwidth}
\begin{enumerate}[resume*=test2]
\item Three
\item Four
\end{enumerate}
\end{minipage}
\bigskip
\switchcolumn*

\noindent
\begin{minipage}{\columnwidth}
We need at least two lines here in order for this to work, so I hope that this is enough.
\end{minipage}
\begin{minipage}{\columnwidth}
We need at least two lines here in order for this to work, so I hope that this is enough.
\end{minipage}
\switchcolumn

\noindent
\begin{minipage}[b]{\columnwidth}
We need at least two lines here in order for this to work, so I hope that this is enough.
\end{minipage}
\begin{minipage}[t]{\columnwidth}
We need at least two lines here in order for this to work, so I hope that this is enough.
\end{minipage}
\bigskip
\switchcolumn*

\noindent
\begin{minipage}{\columnwidth}
We need at least two lines here in order for this to work, so I hope that this is enough.
\end{minipage}
\begin{minipage}{\columnwidth}
We need at least two lines here in order for this to work, so I hope that this is enough.
\end{minipage}
\switchcolumn

\noindent
\begin{minipage}{\columnwidth}
\strut
We need at least two lines here in order for this to work, so I hope that this is enough.
\strut
\end{minipage}
\begin{minipage}{\columnwidth}
\strut
We need at least two lines here in order for this to work, so I hope that this is enough.
\strut
\end{minipage}
\bigskip
\switchcolumn*


\end{paracol}
\end{document}

ミニページの間隔

関連情報