在子浮动环境中,\resizebox 将 tikzpicture 向上移动

在子浮动环境中,\resizebox 将 tikzpicture 向上移动

tikz为什么当我尝试使用基线重新缩放图形时\resizebox会向上移动(无论比例因子有多小),并且两个水平浮点数没有正确对齐。

未对齐

\documentclass[twocolumn]{article}

\usepackage{tikz}
\usepackage{graphicx}
\usepackage{subfig}

\pagestyle{empty}

\begin{document}
\begin{figure}
\centering
\begin{tabular}{cc}%
\subfloat[]{%
\fbox{
\resizebox{0.5\linewidth}{!}{%
\begin{tikzpicture}
\node {a};%
\end{tikzpicture}%
}%end resize
}%fbox
}&%end subfloat
\subfloat[]{%
\begin{tabular}{c|cccc}%
  & 0 & 1 & \dots & n\\\hline
a & & & &\\
b & & & &\\
c & & & &\\
\dots & & & &\\
d & & & &\\
\end{tabular}%
}%end subfloat
\end{tabular}%
\caption{Why resizebox shifts the baseline up?}
\end{figure}
\end{document}

答案1

问题不在于 的基线,\resizebox而在于默认情况下位于中心的表格基线。因此,使用 更改表格的基线[b]可解决此问题:

\documentclass[twocolumn]{article}

\usepackage{tikz}
\usepackage{graphicx}
\usepackage{subfig}

\pagestyle{empty}

\begin{document}
\begin{figure}
\centering
\begin{tabular}{cc}%
\subfloat[]{%
\fbox{
\resizebox{0.5\linewidth}{!}{%
\begin{tikzpicture}
\node {a};%
\end{tikzpicture}%
}%end resize
}%fbox
}&%end subfloat
\subfloat[]{%
\begin{tabular}[b]{c|cccc}% === [b] added here ===
  & 0 & 1 & \dots & n\\\hline
a & & & &\b & & & &\c & & & &\\dots & & & &\d & & & &\\end{tabular}%
}%end subfloat
\end{tabular}%
\caption{Why resizebox shifts the baseline up?}
\end{figure}
\end{document}

在此处输入图片描述

附录 2013-01-04: 正如用户 adn 所发现的,标题仍然没有完全对齐。(见下面的评论。)一个可能的解决方案是切换到subcaption包及其\subcaptionbox命令:

\documentclass[twocolumn]{article}

\usepackage{tikz}
\usepackage{graphicx}
\usepackage{subcaption}

\pagestyle{empty}

\begin{document}
\begin{figure}
\centering
\begin{tabular}{cc}%
\subcaptionbox{}{%
\fbox{
\resizebox{0.5\linewidth}{!}{%
\begin{tikzpicture}
\node {a};%
\end{tikzpicture}%
}%end resize
}%fbox
}&%end subcaptionbox
\subcaptionbox{}{%
\begin{tabular}{c|cccc}%
  & 0 & 1 & \dots & n\\\hline
a & & & &\b & & & &\c & & & &\\dots & & & &\d & & & &\\end{tabular}%
}%end \subcaptionbox
\end{tabular}%
\caption{Why resizebox shifts the baseline up?}
\end{figure}
\end{document}

[b]请注意,这里不需要更改内部表格(带有)的基线,因为\subcaptionbox的基线始终位于内容和标题之间,因此两个\subcaptionboxes 默认已经对齐。

相关内容