我正在使用 IEEETrans 和推荐的 subfig 包。我在子图中有 tikz 图形,我真的希望它们通过其顶部边界框对齐(以便节点对齐)。
问题是,当我这样做时,字幕不再对齐(参见 MWE)。我怎么才能鱼与熊掌兼得呢?
梅威瑟:
\documentclass\[journal,compsoc,onecolumn,draftclsnofoot\]{IEEEtran}
\ifCLASSOPTIONcompsoc
\usepackage\[caption=false,font=normalsize,labelfon
t=sf,textfont=sf\]{subfig}
\else
\usepackage\[caption=false,font=footnotesize\]{subfig}
\fi
\usepackage{tikz}
\usetikzlibrary{positioning,shapes,arrows,calc,patterns,matrix,backgrounds,chains}
\begin{document}
\begin{figure*}
\subfloat\[A\]{
\begin{tikzpicture}\[baseline=(current bounding box.north)\]
\matrix (m)\[matrix of nodes\]
{
a\\
};
\end{tikzpicture}
}
\subfloat\[B\]{
\begin{tikzpicture}\[baseline=(current bounding box.north)\]
\matrix (m)\[matrix of nodes\]
{
a\\
b\\
c\\
d\\
e\\
};
\end{tikzpicture}
}
\end{figure*}
\end{document}]
答案1
以下是 Werner 最初在此处发布的解决方案的修改版本:在图形*环境中垂直对齐不同尺寸的图像
\documentclass[journal,compsoc,onecolumn,draftclsnofoot]{IEEEtran}
\ifCLASSOPTIONcompsoc
\usepackage[caption=false,font=normalsize,labelfont=sf,textfont=sf]{subfig}
\else
\usepackage[caption=false,font=footnotesize]{subfig}
\fi
\usepackage{tikz}
\usetikzlibrary{positioning,shapes,arrows,calc,patterns,matrix,backgrounds,chains}
\begin{document}
\newsavebox{\myimage}
\begin{figure*}
\centering
\savebox{\myimage}{%
\begin{tikzpicture}
\matrix (m)[matrix of nodes]
{
a\\
b\\
c\\
d\\
e\\
};
\end{tikzpicture}
} % Store largest image
\subfloat[A]{\raisebox{\dimexpr\ht\myimage-\height\relax}{%
\begin{tikzpicture}
\matrix (m)[matrix of nodes]
{
a\\
};
\end{tikzpicture}
}} \quad
\subfloat[B]{\usebox{\myimage}}
\caption{This is a figure.}
\end{figure*}
\end{document}