不同宽度的子图居中

不同宽度的子图居中

搜索这个论坛,有很多类似的问题,但我没有找到任何解决我特定问题的方法。有没有一种优雅的方法可以将两个水平对齐的浮点数(图形)居中不同宽度,这样文档和图片的边框之间的距离就相同了?在下面的图片中,我用“x”、“y”和“z”标记了三个距离。对此,两个可接受的解决方案是:

  • x = y = z,
  • x = z 且 y 是任意定义的(例如\quad)。

在此处输入图片描述

上图是使用以下代码生成的:

\usepackage[inner=25mm,
            outer=25mm,
            top=30mm,
            bottom=25mm]{geometry}
\usepackage{caption}
\usepackage{subcaption}
----------------------------------------------------------
\begin{figure}[H]
    \label{fig:two_figs}
        \begin{subfigure}[b]{0.5\linewidth}
            \centering
            \includegraphics[width=4cm]{example-image-a}
            \caption{}
            \label{subfig:image_a}
        \end{subfigure}%
        \begin{subfigure}[b]{0.5\linewidth}
            \centering
            \includegraphics[width=8cm]{example-image-b}
            \caption{}
            \label{subfig:image_b}
        \end{subfigure}%
\caption{Complete caption}
\end{figure}

当然,这可以大致居中,例如,通过将第一个子图宽度更改为 ,0.41\linewidth将第二个子图宽度更改为0.3\linewidth。但是,这似乎不太精确,如果文档中有许多这样的“双图”,则可能会很繁琐。

另外请记住,\includegraphics宽度不应以任何方式改变,因为我总是导入我的图形以scale=1确保图形文本大小与文档的大小一致。在上面的例子中,我使用了任意宽度来表达我的观点。

答案1

以下是您对间距的两个要求:

在此处输入图片描述

\documentclass{article}

\usepackage[margin=1in,showframe]{geometry}
\usepackage{subcaption,graphicx}

\begin{document}

\begin{figure}
  % Equal distribution of space between two subfigures (x = y = z)
  \hfill
  \subcaptionbox{\label{subfig:image_a}}{%
    \includegraphics[width=4cm]{example-image-a}%
  }\hfill
  \subcaptionbox{\label{subfig:image_b}}{%
    \includegraphics[width=8cm]{example-image-b}%
  }%
  \hfill\mbox{}%
  \caption{Complete caption}
\end{figure}

\begin{figure}
  % Equal distribution of space outside of subfigures with fixed inner separation (x = y)
  \hfill
  \subcaptionbox{\label{subfig:image_a}}{%
    \includegraphics[width=4cm]{example-image-a}%
  }\qquad%
  \subcaptionbox{\label{subfig:image_b}}{%
    \includegraphics[width=8cm]{example-image-b}%
  }%
  \hfill\mbox{}%
  \caption{Complete caption}
\end{figure}

\end{document}

主要方法是使用\subcaptionbox不带(可选)宽度参数的 ,并使用\hfills 来展开内容。行尾确保有一个锚点可以展开。如果标题需要更多的水平空间,您可以在 周围\mbox{}添加等量的,或指定固定宽度。\hspace\includegraphics

答案2

\hfill这是一个在环境的所有侧面和之间放置指令的解决方案subfigure。它还直接设置 s 的所需(相对)宽度subfigure,同时通过 指定图形的(相对)宽度width=1\linedwidth

以下屏幕截图中的框架表示文本块的左边缘和右边缘。

在此处输入图片描述

\documentclass{article}
\usepackage[inner=25mm, outer=25mm,top=30mm, bottom=25mm]{geometry}
\usepackage{subcaption,graphicx,showframe}
\begin{document}
\begin{figure}
        \hfill
        \begin{subfigure}[b]{0.3\linewidth}
            \includegraphics[width=\linewidth]{example-image-a}
            \caption{}
            \label{subfig:image_a}
        \end{subfigure}%
        \hfill
        \begin{subfigure}[b]{0.5\linewidth}
            \includegraphics[width=\linewidth]{example-image-b}
            \caption{}
            \label{subfig:image_b}
        \end{subfigure}%
        \hfill\null
\caption{Complete caption} \label{fig:two_figs}
\end{figure}
\end {document}

相关内容