試験を準備しているのですが、多肢選択問題の横にイラストを入れたいと思っています。通常、この目的のためには、質問や選択肢を環境内に配置します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@
重要なのは\@mplistdepth\z@
、リストの深さがゼロであることを意味します。内部環境は、このレベルに適切な値enumerate
を使用して、再び最初のレベルにあるかのように動作します。この場合、 です。( についても同様です)。他のスペースは、 が列挙/項目化環境の最初のレベルにある場合と同様に使用されます。これが、OP の画像からわかるように、 などのインデントの理由です。\itemsep
4.0pt plus 2.0pt minus 1.0pt
itemize
(a)
興味深いことに、列挙カウンターの形式はリセットされません。\@enumdepth
値がまだ 2 (2 番目のレベル) であるためです。
ただし、1 つの安価なトリックは、手動で \@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}