Estoy preparando un examen y quiero una ilustración junto a un problema de opción múltiple. Habitualmente para ello pongo la pregunta y/o las elecciones en un multicols
entorno; sin embargo, para esta pregunta en particular, la división cincuenta por ciento del ancho de la página hace multicols
que el texto de cada opción se ajuste, mientras que la imagen es bastante estrecha.
Pensé que podría conseguir lo que quería poniendo las opciones en un minipage
, pero la minipágina cambia el espacio entre las opciones:
\documentclass{article} %% 'exam' class not needed for MWE
\begin{document}
\begin{enumerate}
\item
This is a standard nested enumeration.
\begin{enumerate}
\item Spacing within wrapped text and between lines of the enumeration
looks okay to me.
\item adsflkj adsflkj
\item qeworui qeworui
\item zcx,vmn zcx,vmn
\item lkjasdf lkjasdf
\item mbnnert mbnnert
\end{enumerate}
\item
The possible answers to this question are in a minipage,
to accomodate an image to the right
\begin{minipage}[t]{0.6\linewidth}
\begin{enumerate}
\item Spacing within wrapped text is the same, but the spacing
between items is different.
\item adsflkj adsflkj
\item qeworui qeworui
\item zcx,vmn zcx,vmn
\item lkjasdf lkjasdf
\item mbnnert mbnnert
\end{enumerate}
\end{minipage}
\hfill
\fbox{Tikz image here}
\end{enumerate}
\end{document}
La diferencia me molesta. ¿Cómo puedo repararlo?
(Puedo eliminarlo, más o menos, haciéndolo \addtolength{\itemsep}{-1ex}
en la minipágina. Pero mostrarlo \the\itemsep
en varios lugares muestra que \itemsep
en realidad no es la longitud la que se está cambiando en secreto. Prefiero entender lo que realmente está sucediendo).
Respuesta1
A minipage
restablece explícitamente la profundidad de la lista; consulte latex.ltx
para esto, en la línea 4886 se puede encontrar el siguiente código:
\let\@listdepth\@mplistdepth \@mplistdepth\z@
Lo importante es \@mplistdepth\z@
, es decir, profundidad de lista cero: el enumerate
entorno interno se comporta como si estuviera en el primer nivel nuevamente, usando el \itemsep
valor 'apropiado' para este nivel, 4.0pt plus 2.0pt minus 1.0pt
en este caso. (Lo mismo ocurre con itemize
). Los otros espacios se usan entonces, así como si estuvieran en el primer nivel de un entorno de enumeración/detallado, este es el motivo de la sangría de (a)
etc., como se puede ver en la imagen del OP.
Curiosamente, el formato del contador de enumeración no se restablece, porque \@enumdepth
todavía tiene el valor 2 (siendo el segundo nivel).
Un truco barato es configurar el \@mplistdepth
contador explícitamente en 1
, aunque manualmente.
\documentclass{article} %% 'exam' class not needed for MWE
\usepackage{enumitem}
\begin{document}
\begin{enumerate}
\item This is a standard nested enumeration.
\begin{enumerate}
\item Spacing within wrapped text and between lines of the enumeration
looks okay to me.
\item adsflkj adsflkj
\item qeworui qeworui
\item zcx,vmn zcx,vmn
\item lkjasdf lkjasdf
\item mbnnert mbnnert
\end{enumerate}
\item The possible answers to this question are in a minipage,
to accomodate an image to the right
\begin{minipage}[t]{0.6\linewidth}
% minipage does this thing here: \let\@listdepth\@mplistdepth \@mplistdepth\z@
\makeatletter
\@mplistdepth=1
\makeatother
\begin{enumerate}
\item Spacing within wrapped text is the same, but the spacing
between items is different.
\item adsflkj adsflkj
\item qeworui qeworui
\item zcx,vmn zcx,vmn
\item lkjasdf lkjasdf
\item mbnnert mbnnert
\end{enumerate}
\end{minipage}
\hfill
\fbox{Tikz image here}
\end{enumerate}
\end{document}
Una forma "mejor" es parchear @iiiminipage
(el nivel más interno del minipage
"entorno" y hacerle saber que debe preservar la profundidad de la lista, dependiendo de un condicional:
Indique \mpsavelistdepthtrue
si la conservación debe estar habilitada y \mpsavelistdepthfalse
deshabilitada.
Esto funciona enumerate
solo para entornos, ya que \@enumdepth
trata con enumerate
, no con itemize
(el contador de profundidad relevante es \@itemdepth
entonces)
\documentclass{article} %% 'exam' class not needed for MWE
\usepackage{enumitem}
\usepackage{xpatch}
\newif\ifmpsavelistdepth
\mpsavelistdepthtrue % Enabling the list depth save for enumerate environments
\makeatletter
\xpatchcmd{\@iiiminipage}{%
\let\@listdepth\@mplistdepth \@mplistdepth\z@
}{%
\let\@listdepth\@mplistdepth
\ifmpsavelistdepth
\@mplistdepth\@enumdepth % use the current depth (stored in \@enumdepth
\fi
}{\typeout{Patching minipage succeeded}}{\typeout{Patching failed}}% End of patching
\makeatother
\begin{document}
\begin{enumerate}
\item This is a standard nested enumeration.
\begin{enumerate}
\item Spacing within wrapped text and between lines of the enumeration
looks okay to me.
\item adsflkj adsflkj
\item qeworui qeworui
\item zcx,vmn zcx,vmn
\item lkjasdf lkjasdf
\item mbnnert mbnnert
\end{enumerate}
\item The possible answers to this question are in a minipage,
to accomodate an image to the right
\begin{minipage}[t]{0.6\linewidth}
\begin{enumerate}
\item Spacing within wrapped text is the same, but the spacing
between items is different.
\item adsflkj adsflkj
\item qeworui qeworui
\item zcx,vmn zcx,vmn
\item lkjasdf lkjasdf
\item mbnnert mbnnert
\end{enumerate}
\end{minipage}
\hfill
\fbox{Tikz image here}
\end{enumerate}
\end{document}