我正在使用 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
一个更好的选择subfig
是subcaption
包(见subcaption 与 subfig);您可以使用subfigure
环境并使用可选参数控制垂直对齐,该参数的值类似于小页面的值(即t
、b
和c
)。一个小例子:
\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}