将由子图组成的图形放置在枚举环境中

将由子图组成的图形放置在枚举环境中

我正在写一份文件,其中我回答了一组编号问题,有些答案包括由 组成的图形subfigures。我在环境中列出答案enumerate,并且我希望与特定问题相关的图形位于下一个 之前\item

我将举一个例子,说明情况并非如此

\documentclass{article}
\usepackage{graphicx}
\usepackage{blindtext}

\usepackage{subcaption}
\begin{document}
\begin{enumerate}
\item item1 \blindtext \blindtext \blindtext

\begin{figure}[h!]
\begin{subfigure}[b]{0.4\textwidth}
\includegraphics[width=3cm]{example-image-a}
\caption{subcap1}
\end{subfigure}
~
\begin{subfigure}[b]{0.4\textwidth}
\includegraphics[width=3cm]{example-image-a}
\caption{subcap2}
\end{subfigure}

\begin{subfigure}[b]{0.4\textwidth}
\includegraphics[width=3cm]{example-image-a}
\caption{subcap3}
\end{subfigure}
~
\begin{subfigure}[b]{0.4\textwidth}
\includegraphics[width=3cm]{example-image-a}
\caption{subcap4}
\end{subfigure}
\caption{main caption}
\end{figure}

\item item2 \blindtext
\item item3 \blindtext
\item item4\blindtext
\end{enumerate}

\end{document}

这会将图形放置在第三个中间的某个位置item。对于这种情况,我知道的解决方案是使用minipage。我知道 minipages 与环境不太相配figure,所以我放弃了它:

\documentclass{article}
\usepackage{graphicx}
\usepackage{blindtext}

\usepackage{subcaption}
\begin{document}
\begin{enumerate}
\item item1 \blindtext \blindtext \blindtext
\begin{minipage}{\linewidth}

\begin{subfigure}[b]{0.4\textwidth}
\includegraphics[width=3cm]{example-image-a}
\captionof{subfigure}{subcap1}
\end{subfigure}
~
\begin{subfigure}[b]{0.4\textwidth}
\includegraphics[width=3cm]{example-image-a}
\captionof{subfigure}
\end{subfigure}

\begin{subfigure}[b]{0.4\textwidth}
\includegraphics[width=3cm]{example-image-a}
\captionof{subfigure}
\end{subfigure}
~
\begin{subfigure}[b]{0.4\textwidth}
\includegraphics[width=3cm]{example-image-a}
\captionof{subfigure}
\end{subfigure}
\captionof{figure}{main caption}

\end{minipage}


\item item2 \blindtext
\item item3 \blindtext
\item item4\blindtext
\end{enumerate}

\end{document}

不幸的是,这不能成立:

! Package caption Error: \setcaptionsubtype outside float.

See the caption package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.11 \begin{subfigure}[b]{0.4\textwidth}

我猜测这是一个浮动与小页面的问题,但我不知道如何解决这个问题...有什么建议吗?

答案1

我建议你 (a) 将四个subfigure环境放在一个figure环境中,并且 (b) 将 或 写[ht!][H]定位说明符。如果这立即产生了分页符,您figure需要\clearpage在图形前插入一个语句,以便图形和相关内容\item位于同一页面上。

此外,由于您已指出图形应立即出现在相关枚举之前\item,我还建议设置\intextsep为 0pt,以缩小图形与下一个 \item 之间的距离。

\centering请注意,我在你的代码中添加了五条 [5!]指令。

在此处输入图片描述

\documentclass{article}
\usepackage{graphicx}
\usepackage{blindtext}
\usepackage{subcaption}
\usepackage{float} %for "[H]" positioning specifier

\begin{document}
\begin{enumerate}
\setlength\intextsep{0pt} 
\item item1 \blindtext 

\vspace{1cm} % create some vertical separation
\begin{figure}[ht!] % or: [H]
\captionsetup{skip=0.333\baselineskip}
\centering
\begin{subfigure}[b]{0.4\textwidth}
\centering
\includegraphics[width=3cm]{example-image-a}
\caption{subcap1}
\end{subfigure}
\begin{subfigure}[b]{0.4\textwidth}
\centering
\includegraphics[width=3cm]{example-image-a}
\caption{subcap2}
\end{subfigure}

\medskip
\begin{subfigure}[b]{0.4\textwidth}
\centering
\includegraphics[width=3cm]{example-image-a}
\caption{subcap3}
\end{subfigure}
\begin{subfigure}[b]{0.4\textwidth}
\centering
\includegraphics[width=3cm]{example-image-a}
\caption{subcap4}
\end{subfigure}
\caption{main caption}
\end{figure}

\item item2 \blindtext
\item item3 \blindtext
\item item4\blindtext
\end{enumerate}

\end{document}

相关内容