使用 subfig 和 pstricks 进行垂直对齐

使用 subfig 和 pstricks 进行垂直对齐

我正在使用 pstricks 为论文添加插图,因为我发现与使用 dia/xfig/visio/etc. 编辑文件并包含 png 相比,它可以让我节省很多时间。

但我在子图中使用它们时遇到了一些问题。我最近的问题是图像垂直居中。

在搜索邮件列表、论坛和博客一段时间后,我了解到应该放弃子图,因为 subfig 要好得多。而且碰巧有一个巧妙的技巧来实现垂直居中。一个小时后,当 subfig 出于某种原因试图在页面外显示图像时,我的所有子图都重命名为 subfloat,并且垂直间距得到修复,我又回到了我最初的问题:垂直居中两个子图中的一个。

我的原始代码:

\begin{figure}[htp!]%
\centering
\subfloat[Caption 1] {%
\begin{pspicture}(5.5,2)
\psframe(0,0)(1.5,1.5)
    %% More pst code
\rput(5.125,0.75){\psscalebox{1}{B\sous{R}}}
\end{pspicture}
}%
\qquad
\vline
\subfloat[Caption 2] {%
\begin{pspicture}(-0.5,0)(5.5,3.5)
\psframe(0,0)(1.5,1.5)
    %% More pst code
    \rput(5.125,2.75){\psscalebox{1}{B\sous{R}}}
\end{pspicture}
}%
\caption{MainCaption}
\label{fig:label_tbd}
\end{figure}

这样我的两张图片就并排了,间距合适,中间有一条垂直线。但左侧较小的那张与较大的那张底部对齐。

现在进入 subfig 技巧:

\newsavebox{\tempbox}
\begin{figure}[htb!]%
\centering
\sbox{\tempbox}{%
\begin{pspicture}(-0.5,0)(5.5,3.5)
    %% pst code for larger pic
}
\subfloat[Caption 1] {%
\vbox to \ht\tempbox{%
\vfill
    %% Code for my smaller picture
    \vfill}
}%
\qquad
\vline
\subfloat[Caption 2] {%
    \usebox{\tempbox}
}%
\caption{MainCaption}
\label{fig:label_tbd}
\end{figure}

现在我的左图确实居中了,但图像位于两条不同的行上。如果我删除 \qquad 命令,它们会位于同一行上,但左图位于页面中间,而右图则超出页面 90%。

有人知道如何解决这个问题吗?

答案1

代码应该是

\vbox to\ht\tempbox{
  \vfill
  \hbox{code for the picture}
  \vfill}

注意\hbox,如果没有,LaTeX 将进入不受限制的水平模式并尝试构建具有当前行宽的段落。

答案2

一个更好的选择subfigsubcaption包(见subcaption 与 subfig);您可以使用subfigure环境并使用可选参数控制垂直对齐,该参数的值类似于小页面的值(即tbc)。一个小例子:

\documentclass{book}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{pstricks}

\newcommand\sous[1]{#1}% just to make the example code compilable

\begin{document}

\begin{figure}[htp!]%
\begin{subfigure}[c]{.5\textwidth}
  \begin{pspicture}(5.5,2)
    \psframe(0,0)(1.5,1.5)
    %% More pst code
    \rput(5.125,0.75){\psscalebox{1}{B\sous{R}}}
  \end{pspicture}
  \caption{Test subfigure one}
  \label{fig:sub1}
\end{subfigure}%
\vline
\begin{subfigure}[c]{.5\textwidth}
  \begin{pspicture}(-0.5,0)(5.5,3.5)
    \psframe(0,0)(1.5,1.5)
    %% More pst code
    \rput(5.125,2.75){\psscalebox{1}{B\sous{R}}}
  \end{pspicture}
  \caption{Test subfigure one}
  \label{fig:sub2}
\end{subfigure}%
\caption{MainCaption}
\label{fig:label_tbd}
\end{figure}


\end{document}

相关内容