El espaciado de la lista es diferente dentro y fuera de la minipágina

El espaciado de la lista es diferente dentro y fuera de la minipágina

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 multicolsentorno; sin embargo, para esta pregunta en particular, la división cincuenta por ciento del ancho de la página hace multicolsque 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}

producción

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\itemsepen varios lugares muestra que \itemsepen realidad no es la longitud la que se está cambiando en secreto. Prefiero entender lo que realmente está sucediendo).

Respuesta1

A minipagerestablece explícitamente la profundidad de la lista; consulte latex.ltxpara 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 enumerateentorno interno se comporta como si estuviera en el primer nivel nuevamente, usando el \itemsepvalor 'apropiado' para este nivel, 4.0pt plus 2.0pt minus 1.0pten 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 \@enumdepthtodavía tiene el valor 2 (siendo el segundo nivel).

Un truco barato es configurar el \@mplistdepthcontador 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 \mpsavelistdepthtruesi la conservación debe estar habilitada y \mpsavelistdepthfalsedeshabilitada.

Esto funciona enumeratesolo para entornos, ya que \@enumdepthtrata con enumerate, no con itemize(el contador de profundidad relevante es \@itemdepthentonces)

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

ingrese la descripción de la imagen aquí

información relacionada