En varios documentos tengo que poner lado a lado una lista y una figura.
Utilizo dos entornos de minipáginas para eso, pero como la lista es demasiado larga, necesito dividirla y continuar fuera del minipage
entorno (con numeración continua, de ahí la utilización de series de claves del enumitem
paquete). Pero, como podemos ver, la separación entre el primer elemento del enumerate
entorno fuera de minipage
y el último elemento dentro de minipage
es diferente de la separación entre cualquier otro elemento.
Entonces, mi pregunta es: ¿Hay alguna forma de asegurar una separación igual entre todos los elementos?
Naturalmente, agradezco cualquier sugerencia sobre una forma diferente y mejor de hacer esto.
\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}
Respuesta1
Simplemente podrías superponer la imagen y usarla \rightskip
. Por desgracia, \hangindent
no parece funcionar con el artículo.
\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}
Respuesta2
Utilice el paquete 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}
Elwrapfig
documentacióncomienza con esta precaución:
No debe especificar a
wrapfigure
en ningún tipo de entorno de lista ni inmediatamente antes o inmediatamente después de uno. Está bien seguir una lista si hay una línea en blanco (\par
) entre ellas.
Por eso agregué una línea de texto antes de la lista.
Supongo que puedes jugar un poco para que la figura aparezca al lado de tus listas, pero las listas no pueden ser las primeras ni las únicas cosas que rodean la figura.
Respuesta3
La forma en que se distribuyen el texto/cuadros es utilizar un espacio mínimo \baselineskip
entre dos líneas de base consecutivas, o \lineskip
entre los límites inferior y superior de dos cuadros (lo que sea mayor).
Una forma de lograr un espaciado relativamente constante es colocar la línea base de la primera minipágina en la parte inferior y la línea base de la segunda minipágina en la parte superior.
Otra forma es comenzar y finalizar cada minipágina con un \strut.
En el caso de enumitem, agregar \strut
o \null
produce demasiado espacio entre las dos minipáginas. En su lugar, solo necesita agregar aproximadamente 12 puntos de espacio entre las minipáginas predeterminadas (menos si agrega \strut
a la última \item
). No estoy seguro exactamente de cómo se le ocurre a enumitem este 12 puntos, pero esta es mi mejor suposición.
Cabe señalar que el texto dentro de una minipágina no se estira ni se comprime para caber en la parte inferior de la página. También necesitarás usar \raggedbottom
o incluir un archivo en \vfil
algún lugar, o colocar ambas minipáginas dentro de un archivo \vbox
.
Manifestación:
\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}