Я готовлюсь к экзамену и хочу иллюстрацию рядом с задачей с множественным выбором. Обычно для этой цели я помещаю вопрос и/или варианты в окружение multicols
; однако для этого конкретного вопроса разделение ширины страницы пятьдесят на пятьдесят 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@
Важно то \@mplistdepth\z@
, что это означает нулевую глубину списка — внутренняя enumerate
среда ведет себя так, как будто она снова находится на первом уровне, используя \itemsep
значение «соответствующее» для этого уровня, находясь 4.0pt plus 2.0pt minus 1.0pt
в этом случае. (То же самое верно и для itemize
). Другие пробелы используются тогда, а также если бы они находились на первом уровне среды перечисления/элементизации, это причина отступа и (a)
т. д., как можно увидеть на изображении в OP.
Интересно, что формат счетчика перечисления не сбрасывается, поскольку \@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}