并列的列表和图形

并列的列表和图形

在几份文件中,我必须并列放置一个列表和一个图形。

为此,我使用了两个 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似乎不适用于 item。

\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两个连续基线之间的最小间距,或\lineskip两个框的下边界和上边界之间的最小间距(以较大者为准)。

实现相对恒定的间距的一种方法是将第一个小页面的基线放在底部,将第二个小页面的基线放在顶部。

另一种方式是使用 \strut 来开始和结束每个小页面。

对于 enumitem 来说,添加\strut\null会在两个小页面之间产生过多的空间。相反,您只需要在默认小页面之间添加大约 12pt 的空间(如果\strut在最后一个 中添加 a ,则空间会更少\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}

小页间距

相关内容