两个表格未垂直对齐

两个表格未垂直对齐
\documentclass{article}

\begin{document}

\begin{figure}
\centering
\begin{tabular}{*{3}{c}}
1 & 1 & 1 \\
1 & 1 & 1 \\
\end{tabular}
\vspace{3mm}

\begin{tabular}{*{3}{c}}
1 & 1 & 1 \\
1 & 1 & 1 \\
\end{tabular}
\end{figure}

\end{document}

我想创建两个相互叠放的表格。但是,底部表格略微向顶部表格的右侧对齐。差异很小,但很明显。为什么会这样?我该如何修复?

答案1

您必须在 之前留一个空行\vspace{3mm},而不是在 之后。另一方面,您也可以只使用一个空行tabular,并使用 添加垂直空格\\[3mm]

\documentclass{article}

\begin{document}

\begin{figure}[htb]
\centering
\begin{tabular}{*{3}{c}}
1 & 1 & 1 \\
1 & 1 & 1 \\
\end{tabular}

\vspace{3mm}
\begin{tabular}{*{3}{c}}
1 & 1 & 1 \\
1 & 1 & 1 \\
\end{tabular}
\end{figure}

Or

\begin{figure}[htb]
\centering
\begin{tabular}{*{3}{c}}
1 & 1 & 1 \\
1 & 1 & 1 \\[3mm]
1 & 1 & 1 \\
1 & 1 & 1 \\
\end{tabular}
\end{figure}

\end{document}

在此处输入图片描述

答案2

这是一个有趣的谜题,但也有一个解释。

  1. 行尾\end{tabular}算作一个空格
  2. 后面的空行\vspace{3mm}与 相同\par

因此,我们可以这样审视情况:

\mbox{X} \vspace{3mm}\par

因为表格和框之间没有概念上的区别。

由于\vspaceTeX 仍在创建段落时发现 ,因此\@bsphack\@esphack机制开始发挥作用。此机制用于避免在\linebreak[2]处理类似命令时插入比所需更多的空格。由于\vspace{3mm}前面有一个空格,因此 TeX 将根据\@bsphack–规则忽略后面的空格\@esphack;但相同的规则意味着在 之后插入一个零粘连块\vspace{3mm}

因此我们有这个:

X<normal space><vadjust item><zero space>\par

(其中<vadjust item>表示将要考虑的垂直空间段落被分割成行)。执行 now\par操作,删除最后一块粘连(零空格),但<vadjust item>保留 X 和 之间的正常空格。

这个空间是造成轻微但明显的错位的原因。

解决方案:使用\vspace 尽可能使用空白行;在某些情况下,将其放在段落内有其优势,但绝不能将其作为段落的最后一项。

相关内容