枚举中使用子标题的子图不会缩进

枚举中使用子标题的子图不会缩进

我尝试将两个带有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}

在此处输入图片描述

一些评论:

  • figureenumerate是一个浮动环境,即使你用 放置它,它也不会尊重环境设置的边距[h!]。使用 来minipage代替用户定义的定位。
  • 在 中minipage,该\caption命令不起作用。因此,请使用\captionof来创建用户定义的标题,而无需在浮动环境中。此处的第一个参数给出了要使用的标题的样式。
  • 为了能够继续使用该\subcaption命令,您必须让它知道您想要哪种类型的子标题(即表格或图形)。 请使用命令\captionsetup来实现这一点。
  • 如果您只是将minipage作为一个项目,则标签将与图形的基线对齐。我假设您希望将标签放在图形的顶端,因此我插入了一个空行 ( ~),然后插入了一个相同大小的负垂直空间 ( \\[-1em])。因此, 的唯一效果~\\[1em]是将项目标签放在顶部。

相关内容