我正在写一份文件,其中我回答了一组编号问题,有些答案包括由 组成的图形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}