我尝试将两个带有subcaption
包装的图像并排放置在enumerate
环境中。这可以正常工作,但是缩进不正确。这是我的代码:
\documentclass[10pt,a5paper]{book}
\usepackage[demo]{graphicx}
\usepackage{epstopdf}
\usepackage{subcaption}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}[label=\alph*)]
\item first item
\item second item
\item
\begin{figure}[htb!]
\centering
\begin{subfigure}[b]{0.40\linewidth}
\includegraphics[width=\linewidth]{figures/fig1.eps}
\caption{}
\label{fig1}
\end{subfigure}
\hspace{0.05\textwidth}
\begin{subfigure}[b]{0.40\linewidth}
\includegraphics[width=\linewidth]{figures/fig2.eps}
\caption{}
\label{fig2}
\end{subfigure}
\caption{(a) fig1 (b) fig2}
\label{fig1and2}
\end{figure}
\end{enumerate}
\end{document}
这里讨论了类似的问题:
逐项列表中带有标题的子图未正确缩进
(我不想使用该subfig
包,因为它与包冲突subcaption
)
逐项列表中带有标题的图形未正确缩进 (仅限一张图片)
感谢您的帮助!
答案1
正如您所链接的问题一样,解决方案是使用环境minipage
(而不是浮动figure
环境):
\documentclass[10pt,a5paper]{book}
\usepackage[demo]{graphicx}
\usepackage{epstopdf}
\usepackage{subcaption}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}[label=\alph*)]
\item first item
\item second item
\item~\\[-1em]\begin{minipage}{\linewidth}
\centering
\captionsetup{type=figure}
\begin{minipage}{0.4\linewidth}
\centering
\includegraphics[width=\linewidth]{figures/fig1.eps}
\subcaption{}
\label{fig1}
\end{minipage}
\hspace{0.05\linewidth}
\begin{minipage}{0.4\linewidth}
\centering
\includegraphics[width=\linewidth]{figures/fig2.eps}
\subcaption{}
\label{fig2}
\end{minipage}
\captionof{figure}{(a) fig1 (b) fig2}
\label{fig1and2}
\end{minipage}
\end{enumerate}
\end{document}
一些评论:
figure
enumerate
是一个浮动环境,即使你用 放置它,它也不会尊重环境设置的边距[h!]
。使用 来minipage
代替用户定义的定位。- 在 中
minipage
,该\caption
命令不起作用。因此,请使用\captionof
来创建用户定义的标题,而无需在浮动环境中。此处的第一个参数给出了要使用的标题的样式。 - 为了能够继续使用该
\subcaption
命令,您必须让它知道您想要哪种类型的子标题(即表格或图形)。 请使用命令\captionsetup
来实现这一点。 - 如果您只是将
minipage
作为一个项目,则标签将与图形的基线对齐。我假设您希望将标签放在图形的顶端,因此我插入了一个空行 (~
),然后插入了一个相同大小的负垂直空间 (\\[-1em]
)。因此, 的唯一效果~\\[1em]
是将项目标签放在顶部。