我想用 \hspace*{\fill} 格式化两个子图,但它们不知何故不从同一行开始。为什么?

我想用 \hspace*{\fill} 格式化两个子图,但它们不知何故不从同一行开始。为什么?

这是使用的代码(没有任何意义,但我只是想弄清楚它是如何工作的)

\begin{figure}[!htbp]
\hspace*{\fill}
\begin{subfigure}{0.4\textwidth}
\includegraphics[width=0.6\textwidth]{16244301_1232446016821513_2141044701_n.png}
\label{fig:subim1}
\caption{Hello a chameleon}
\end{subfigure}
\begin{subfigure}{0.4\textwidth}
\includegraphics[width=0.6\textwidth]{16244301_1232446016821513_2141044701_n.png}
\label{fig:subim2}
\caption{Hello a chameleon}
\hspace*{\fill}
\end{subfigure}
\end{figure}

在此处输入图片描述

答案1

第一个\hspace在 外面subfigure,第二个在 里面。因此,第二个 里面有一个空行subfigure,位于标题下方。如果\fbox{ .. }在每个 周围添加subfigure,就会变得很明显:

在此处输入图片描述

demo(因为我使用了选项,所以图像是黑色矩形graphicx。)

因此,如果将第二个移至\hspace之后\end{subfigure},输出可能会更符合预期。

另一方面,如果您的目标是使子图水平居中,为什么不使用\centering

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{subcaption}
\begin{document}

\begin{figure}[!htbp]
\hspace*{\fill}
\fbox{\begin{subfigure}{0.4\textwidth}
\includegraphics[width=0.6\textwidth]{16244301_1232446016821513_2141044701_n.png}
\label{fig:subim1}
\caption{Hello a chameleon}
\end{subfigure}}
\fbox{\begin{subfigure}{0.4\textwidth}
\includegraphics[width=0.6\textwidth]{16244301_1232446016821513_2141044701_n.png}
\label{fig:subim2}
\caption{Hello a chameleon}
\end{subfigure}}
\hspace*{\fill}
\end{figure}

\begin{figure}[!htbp]
\centering
\begin{subfigure}{0.4\textwidth}
\centering
\includegraphics[width=0.6\textwidth]{16244301_1232446016821513_2141044701_n.png}
\label{fig:subim1}
\caption{Hello a chameleon}
\end{subfigure}
\begin{subfigure}{0.4\textwidth}
\centering
\includegraphics[width=0.6\textwidth]{16244301_1232446016821513_2141044701_n.png}
\label{fig:subim2}
\caption{Hello a chameleon}
\end{subfigure}
\end{figure}
\end{document}

答案2

最好将其\centering用于图形内容,图像宽度用subfigure宽度确定并用于\hfil图像之间的距离:

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{subcaption}
%---------------------------------------------------------------%
\usepackage{showframe} % for show page layout
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\begin{document}
    \begin{figure}[!htbp]
    \centering
\begin{subfigure}{0.25\linewidth}
\includegraphics[width=\linewidth]{16244301_1232446016821513_2141044701_n.png}
\label{fig:subim1}
\caption{Hello a chameleon}
\end{subfigure}
    \hfil
\begin{subfigure}{0.25\linewidth}
\includegraphics[width=\linewidth]{16244301_1232446016821513_2141044701_n.png}
\label{fig:subim2}
\caption{Hello a chameleon}
\end{subfigure}
    \end{figure}
\end{document}

在此处输入图片描述

相关内容