Uma lista e uma figura lado a lado

Uma lista e uma figura lado a lado

Em vários documentos tenho que colocar lado a lado uma lista e uma figura.

Utilizo dois ambientes de minipáginas para isso, mas como a lista é muito longa, preciso dividi-la e continuar fora do minipage ambiente (com numeração contínua, daí a utilização de séries chaves do enumitempacote). Mas, como podemos ver, a separação entre o primeiro item do enumerateambiente fora do minipage e o último item dentro do minipageé diferente da separação entre quaisquer outros itens.

Então, minha pergunta é: Existe alguma forma de garantir uma separação igualitária entre todos os itens?

Naturalmente, agradeço qualquer sugestão sobre uma maneira diferente e melhor de fazer isso.

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

insira a descrição da imagem aqui

Responder1

Você poderia simplesmente sobrepor a imagem e usar \rightskip. Infelizmente, \hangindentnão parece funcionar com o 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}

sobreposição

Responder2

Utilize o pacote 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}

Captura de tela

Owrapfigdocumentaçãocomeça com este cuidado:

Você não deve especificar a wrapfigureem nenhum tipo de ambiente de lista ou imediatamente antes ou imediatamente depois de um. Não há problema em seguir uma lista se houver uma linha em branco ( \par) entre elas.

É por isso que adicionei uma linha de texto antes da lista.

Eu acho que você pode brincar um pouco para que a figura realmente apareça além das suas listas, mas as listas não podem ser as primeiras ou as únicas coisas que envolvem a figura.

Responder3

A forma como o texto/caixas são dispostos é usar um espaçamento mínimo \baselineskipentre duas linhas de base consecutivas ou \lineskipentre os limites inferior e superior de duas caixas (o que for maior).

Uma maneira de obter um espaçamento relativamente constante é colocar a linha de base da primeira minipágina na parte inferior e a linha de base da segunda minipágina na parte superior.

Outra maneira é iniciar e terminar cada minipágina com um \strut.

No caso de enumitem, adicionar \strutou \nullproduz muito espaço entre as duas minipáginas. Em vez disso, você só precisa adicionar cerca de 12 pontos de espaço entre as minipáginas padrão (menos se você adicionar um \strutao último \item). Não tenho certeza de como o enumitem chega a esses 12 pontos, mas este é o meu melhor palpite.

Deve-se observar que o texto dentro de uma minipágina não é esticado ou comprimido para caber na parte inferior da página. Você também precisará usar \raggedbottomou colocar em \vfilalgum lugar ou colocar as duas minipáginas dentro de um arquivo \vbox.

Demonstração:

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

espaçamento entre minipáginas

informação relacionada