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 enumitem
pacote). Mas, como podemos ver, a separação entre o primeiro item do enumerate
ambiente 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}
Responder1
Você poderia simplesmente sobrepor a imagem e usar \rightskip
. Infelizmente, \hangindent
nã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}
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}
Owrapfig
documentaçãocomeça com este cuidado:
Você não deve especificar a
wrapfigure
em 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 \baselineskip
entre duas linhas de base consecutivas ou \lineskip
entre 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 \strut
ou \null
produz 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 \strut
ao ú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 \raggedbottom
ou colocar em \vfil
algum 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}