미니페이지 내부와 외부의 목록 간격이 다릅니다.

미니페이지 내부와 외부의 목록 간격이 다릅니다.

시험을 준비하고 있는데 객관식 문제 옆에 그림을 넣고 싶습니다. 일반적으로 이러한 목적을 위해 나는 환경에 질문 및/또는 선택 사항을 둡니다 multicols. 그러나 이 특정 질문의 경우 페이지 너비를 50:50으로 분할하면 multicols모든 옵션의 텍스트가 줄바꿈되는 반면 이미지는 상당히 좁습니다.

선택 사항을 에 넣으면 원하는 것을 얻을 수 있다고 생각했지만 minipage미니 페이지는 선택 사항 사이의 간격을 변경합니다.

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

산출

그 차이가 나를 짜증나게 한다. 어떻게 수리할 수 있나요?

\addtolength{\itemsep}{-1ex}( 미니페이지에서 하면 어느 정도 해킹할 수 있습니다 . 하지만 \the\itemsep여러 곳에 표시해 보면 \itemsep실제로는 비밀리에 변경되는 길이가 아닙니다. 실제로 무슨 일이 일어나고 있는지 이해하고 싶습니다.)

답변1

A는 minipage명시적으로 목록 깊이를 재설정합니다. latex.ltx이에 대해서는 4886행에서 다음 코드를 찾을 수 있습니다.

\let\@listdepth\@mplistdepth \@mplistdepth\z@

중요한 것은 목록 깊이가 0임을 의미합니다. 이 경우 \@mplistdepth\z@내부 환경은 이 수준에 '적절한' 값을 enumerate사용하여 다시 첫 번째 수준에 있는 것처럼 동작합니다 . ( 의 경우에도 마찬가지입니다 .) 그런 다음 다른 간격이 사용되며 열거/항목화 환경의 첫 번째 수준에 있을 경우 OP의 이미지에서 볼 수 있듯이 들여쓰기 등의 이유가 됩니다.\itemsep4.0pt plus 2.0pt minus 1.0ptitemize(a)

흥미롭게도 열거형 카운터 형식은 재설정되지 않습니다. 왜냐하면 \@enumdepth여전히 값이 2(두 번째 수준임)이기 때문입니다.

한 가지 저렴한 방법은 카운터를 수동으로 명시적 \@mplistdepth으로 설정하는 것입니다 .1

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

@iiiminipage'더 나은' 방법은 '환경' 의 가장 안쪽 수준을 패치 minipage하고 조건에 따라 목록 깊이를 유지해야 함을 인식시키는 것입니다.

\mpsavelistdepthtrue보존을 활성화해야 하는지, \mpsavelistdepthfalse비활성화해야 하는지를 말하세요 .

이는 enumerate환경에서만 작동합니다. 왜냐하면 \@enumdepth을 다루기 때문입니다 (관련 깊이 카운터는 다음과 같습니다 enumerate) .itemize\@itemdepth

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

여기에 이미지 설명을 입력하세요

관련 정보