减少两个子图之间的空间

减少两个子图之间的空间

我想减少两个子图之间的空间,并利用该空间使这些子图变大。怎么做?我的代码如下:

\begin{figure}[htp]
  \centering
  \subfigure[1a]{\label{fig1:a}\includegraphics[width=1.6in]{./fig1a.eps}}\hfill
  \subfigure[1b]{\label{fig1:b}\includegraphics[width=1.6in]{./fig1b.eps}}
  \label{fig1}
\end{figure}

答案1

考虑下面的最小例子,它展示了子图间距的三种不同方式:

  1. 最大长度
  2. 长度相等
  3. 固定长度

子图之间的长度不同

\documentclass{article}
\usepackage{showframe,subcaption,graphicx}
\begin{document}
\begin{figure}[htp]
  % Maximum length
  \subcaptionbox{1a\label{fig1:a}}{\includegraphics[width=1.6in]{example-image-a}}\hfill%
  \subcaptionbox{1b\label{fig1:b}}{\includegraphics[width=1.6in]{example-image-a}}%

  \bigskip

  % Equal length
  \hspace*{\fill}%
  \subcaptionbox{2a\label{fig2:a}}{\includegraphics[width=1.6in]{example-image-b}}\hfill%
  \subcaptionbox{2b\label{fig2:b}}{\includegraphics[width=1.6in]{example-image-b}}%
  \hspace*{\fill}%

  \bigskip

  % Fixed length
  \centering
  \subcaptionbox{3a\label{fig3:a}}{\includegraphics[width=1.6in]{example-image-c}}\hspace{1em}%
  \subcaptionbox{3b\label{fig3:b}}{\includegraphics[width=1.6in]{example-image-c}}
\end{figure}

\end{document}​

showframe包裹被加载以突出显示文本块边界。请注意使用%来精确间距。请参阅%行末百分号 ( ) 有什么用?了解更多信息。

  1. 最大长度:此处使用可拉伸长度\hfill将两个子图推到文本块的边缘。%如果您将内容放在下一行,请注意第二个子图末尾的。

  2. 长度相等\hspace*{\fill}:在子图的两侧放置可拉伸的长度,以平衡与文本块边界以及子图之间的长度。请注意在子图的两侧使用,而\hfill它们之间则足够。

  3. 固定长度:在子图之间使用固定距离\hspace{<len>},并将子图\centering居中并以固定距离分隔开<len>1em在我的例子中)。

一些评论:

  • %请注意在行尾使用。它们会在输出中添加虚假空格。虽然它可能不可见,但否则您可能无法获得准确的长度。请参阅%行末百分号 ( ) 有什么用?了解更多信息。

  • 只有方法 3(固定长度)需要\centering,除非您还提供figure标题(您在代码片段中没有提供)。此外,\label不使用\caption也没有帮助。它在\subcaptionbox(从subcaption\caption),因为它会写一个标题,但您仍然需要一个单独的figure环境才能\label{fig1}产生任何东西。

答案2

使用相对宽度:

\documentclass{article}
\usepackage{showframe}% only for demo
\usepackage{subfig}
\usepackage[demo]{graphicx}% [demo] only for demo
\begin{document}
\begin{figure}[!htp]
  % Maximum length
  \subfloat[1a]{\label{fig1:a}\includegraphics[width=0.49\linewidth]{fig1a}}\hfill
  \subfloat[1b]{\label{fig1:b}\includegraphics[width=0.49\linewidth]{fig1b}}%
\end{figure}

\end{document}​

在此处输入图片描述

答案3

在我的例子中,该subfig软件包引入了两个图形之间的默认间距,略小于1em。我仍然需要它们紧密相连,因为这两个图形在主要特征上是一致的,所以我发现用负水平空间调整间距也很有帮助。

\documentclass[draft]{article}
\usepackage{subfig}
\usepackage{graphicx}
\begin{document}
\begin{figure}[htbp]
    \centering
    \subfloat[Subfigure caption 1.]{
        \includegraphics[width=0.75\textwidth] {img1.png}
        \label{fig:img1} } \hspace*{-0.9em}
    \subfloat[Subfigure caption 2.]{
        \includegraphics[width=0.25\textwidth] {img2.png}
        \label{fig:img2} } \\
    \caption{Two corresponding images.}
    \label{fig:img}
\end{figure}
\end{document}

答案4

事实证明,这对我来说是最好的解决方案,因为它允许继续使用子图环境。

原始帖子:语法类似于 \centering 左右?

\documentclass{article}
\usepackage[export]{adjustbox}

\begin{document}
\begin{figure}
    \begin{subfigure}{.5\textwidth}
        \includegraphics[width=\linewidth, right]{img1}
    \end{subfigure}
    \begin{subfigure}{.5\textwidth}
            \includegraphics[width=\linewidth, left]{img2}
    \end{subfigure}
\end{figure}
\end{document}

相关内容