我有一个figure*
以下环境
\begin{figure*}
\centerline {
\subfloat[1]{...}
\subfloat[2]{...}
}
\end{figure*}
图像的高度不同。我如何垂直对齐它们?也就是说,每幅图像的中心彼此相邻:
_____
| | _____
| | _ | |
| | |____|
|____|
Fig. 1
答案1
有两种不同的情况,与您是否使用figure
或figure*
环境(或任何其他浮动)无关。第一种情况允许您将整个标签与图像一起移动,而第二种情况使图像标签与另一个标签保持在同一水平:
\documentclass{article}
\usepackage{graphicx}% http://ctan.org/pkg/graphicx
\usepackage{subfig}% http://ctan.org/pkg/subfig
\begin{document}
\newsavebox{\myimage}
\begin{figure}
\centering
\savebox{\myimage}{\hbox{\rule{150pt}{150pt}}}% Store largest image
\subfloat[First]{\usebox{\myimage}} \quad
\raisebox{\dimexpr.5\ht\myimage-.5\height\relax}{\subfloat[Second]{\rule{100pt}{100pt}}}
\caption{This is a figure.}
\end{figure}
\begin{figure}
\centering
\savebox{\myimage}{\hbox{\rule{150pt}{150pt}}}% Store largest image
\subfloat[First]{\usebox{\myimage}} \quad
\subfloat[Second]{\raisebox{\dimexpr.5\ht\myimage-.5\height\relax}{\rule{100pt}{100pt}}}
\caption{This is a figure.}
\end{figure}
\end{document}
这个想法是将最大的图像存储在一个框中 ( \myimage
)。然后,将较小的图像 (最大框的 50%) 提升 - (较小框的 50%),或者,用 LaTeX 术语来说,
\dimexpr.5\ht\myimage-.5\height\relax
.5\ht\myimage
指高度的50% \myimage
,而.5\height
指高度的50%当前的框(包含在\raisebox
命令中)。首先必须使用“创建”一个框\newsavebox
,然后使用为其分配某些内容\savebox
。
在上面的例子中,graphicx
由于未包含任何图像,因此不需要(我使用了\rule{<width>}{<height>}
)。但是,如果您包含图像,则需要使用它。
其他选择也可以通过floatrow
。