包含多个表格的子表格未正确垂直对齐

包含多个表格的子表格未正确垂直对齐

下面的最小示例对我来说产生了奇怪的对齐行为(如附图所示)。我尝试了几种方法:使用 minipages 代替子表不起作用,使用 xtabs 代替 tabular 解决了对齐问题,但在每个 xtabular 中,第 13 行及后续行未正确对齐,使用多列也没有产生所需的结果。我还尝试在第一列中添加负空间,但这也没有改变任何东西。这是完全错误的做法吗?任何帮助表示感谢。

对准误差

\documentclass[twocolumn]{report}
\usepackage{booktabs}
\usepackage{subcaption}
\usepackage{lipsum}

\begin{document}
\lipsum[1-4]

\begin{table}
  \begin{subtable}[t]{0.45\linewidth}
    \begin{tabular}{lr}
      \toprule
      Test & Count \\
      \midrule
      Test & 4 \\
      Test & 4 \\
      Test & 3 \\  
      Test & 3 \\
      \bottomrule
    \end{tabular}
    \caption{Some caption}
    \label{tbl:one}

    \vspace{0.7cm}

    \begin{tabular}{lr}
      \toprule
      Test & Count \\
      \midrule
      Test & 38 \\    
      Test & 30 \\
      Test & 28 \\
      Test & 28 \\
      Test & 27 \\
      Test & 24 \\
    \end{tabular}
  \end{subtable}\hfill
  \begin{subtable}[t]{0.45\linewidth}
    \begin{tabular}{lr}
      \toprule
      Test & Count \\
      \midrule
      Test & 11 \\
      Test & 11 \\
      Test & 10 \\
      Test & 10 \\
      Test & 10 \\
      Test & 9 \\
      Test & 9 \\
      Test & 8 \\
      Test & 8 \\
      Test & 8 \\
      Test & 8 \\
      Test & 8 \\
      Test & 8 \\
      \bottomrule
    \end{tabular}
    \caption{Some caption}
    \label{tbl:two}
  \end{subtable}
  \caption{Main caption}
  \label{tbl:main}
\end{table}
\end{document}

答案1

TeX 会根据您的指示执行它认为应该执行的操作。您\begin{subtable}[t]告诉 TeX,构造的框的参考点将与内部顶部对象的参考点相同。两个subcaption环境内的顶部框均由将参考点置于顶部到底部中间的环境生成tabular

定义

\newcommand\rpl{\leavevmode\llap{\vrule width 6pt height 0.3pt depth 0.3pt}}
\newcommand\rpr{\leavevmode\rlap{\vrule width 6pt height 0.3pt depth 0.3pt}}

并放置\rpl在之前\begin{subtable}\rpr之后\end{subtable};这将绘制与框的参考点齐平的小规则,而不会影响排版,因为它们的宽度为零。

在此处输入图片描述

这是我\vspace{0pt}在之后添加\begin{subtable}[t]{0.45\linewidth}(仍然在\rpl并且\rpr就位)所得到的结果;请注意,参考点现在与顶部物体齐平,而顶部物体恰好是零高度垂直空间。

在此处输入图片描述

(实际上,由于小规则的高度很小,因此对排版有一点影响,但只要删除\rpl和,这种影响就会消失\rpr)。

最终的代码,注意这三个\centering命令。

\documentclass[twocolumn]{report}
\usepackage{booktabs}
\usepackage{subcaption}
\usepackage{lipsum}

\begin{document}
\lipsum[1-4]

\begin{table}
\centering
\begin{subtable}[t]{0.45\linewidth}
\centering
\vspace{0pt}
\begin{tabular}{lr}
  \toprule
  Test & Count \\
  \midrule
  Test & 4 \\
  Test & 4 \\
  Test & 3 \\  
  Test & 3 \\
  \bottomrule
\end{tabular}
\caption{Some caption}\label{tbl:one}

\vspace{0.7cm}

\begin{tabular}{lr}
  \toprule
  Test & Count \\
  \midrule
  Test & 38 \\
  Test & 30 \\
  Test & 28 \\
  Test & 28 \\
  Test & 27 \\
  Test & 24 \\
\end{tabular}
\end{subtable}\hfill
\begin{subtable}[t]{0.45\linewidth}
\centering
\vspace{0pt}
\begin{tabular}{lr}
  \toprule
  Test & Count \\
  \midrule
  Test & 11 \\
  Test & 11 \\
  Test & 10 \\
  Test & 10 \\
  Test & 10 \\
  Test & 9 \\
  Test & 9 \\
  Test & 8 \\
  Test & 8 \\
  Test & 8 \\
  Test & 8 \\
  Test & 8 \\
  Test & 8 \\
  \bottomrule
\end{tabular}
\caption{Some caption}
\label{tbl:two}
\end{subtable}
\caption{Main caption}\label{tbl:main}
\end{table}
\end{document}

为了显示输出,我在文本块中添加了一个框架

在此处输入图片描述

相关内容