放置不同宽度的子图

放置不同宽度的子图

梅威瑟:

\documentclass{scrbook}

\usepackage[showframe]{geometry}
\usepackage[draft]{graphicx}
\usepackage{blindtext}
\usepackage{subcaption}

\begin{document}

\begin{figure}
\begin{subfigure}{.5\textwidth}
    \centering
    \includegraphics[height=175px, width=200px]{dummy.png}
    \caption{left}
\end{subfigure}%
\begin{subfigure}{.5\textwidth}
    \centering
    \includegraphics[height=175px, width=150px]{dummy.png}
    \caption{right}
\end{subfigure}
\caption{\blindtext}
\end{figure}

\end{document}

和一张图片:

一只忙碌的猫

我该如何排列子图,以便右图与右边框之间的空间等于左图与左边框之间的空间?我用红线标记了空间。

任何帮助都将受到赞赏。

答案1

使用\subcaptionbox,这样您就不必猜测。

在示例中,我添加了宽度,但您的代码可能只会设置高度。不要使用px单位,因为 1px 的大小不是预先确定的。

您可以在\hfil图像之间使用它(如果它位于一行的最后,\hspace{<length>}请不要忘记)。%

\documentclass{scrbook}

\usepackage[showframe]{geometry}
\usepackage{graphicx}
\usepackage{blindtext}
\usepackage{subcaption}

\begin{document}

\begin{figure}
\centering

\subcaptionbox{left\label{sub-left}}{%
  \includegraphics[height=175bp,width=.6\textwidth]{example-image}%
}\hfil
\subcaptionbox{right\label{sub-right}}{%
  \includegraphics[height=175bp,width=.2\textwidth]{example-image}%
}

\caption{\blindtext}
\end{figure}

\end{document}

在此处输入图片描述

答案2

您可以直接将两个subfigure环境的宽度分别设置为200px150px。接下来,将两个图的宽度设置为\linewidth。最后,插入\hspace*{\fill}到左侧子图的左侧、子图之间以及右侧子图的右侧。

如果你想要固定值子图之间的空间,比如说,1厘米而不是\fill,只需将中间的\hspace*{\fill}指令替换为\hspace{1cm}

在此处输入图片描述

\documentclass{scrbook}

\usepackage[showframe]{geometry}
\usepackage[draft]{graphicx}
\usepackage{subcaption}

\begin{document}

\begin{figure}

\hspace*{\fill}
\begin{subfigure}{200bp}
    \includegraphics[height=175bp, width=\linewidth]{dummy.png}
    \caption{left}
\end{subfigure}%
\hspace*{\fill}
\begin{subfigure}{150bp}
    \includegraphics[height=175bp, width=\linewidth]{dummy.png}
    \caption{right}
\end{subfigure}
\hspace*{\fill}

\caption{Two subfigures placed side by side}
\end{figure}

\end{document}

相关内容