下面的最小示例对我来说产生了奇怪的对齐行为(如附图所示)。我尝试了几种方法:使用 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}
为了显示输出,我在文本块中添加了一个框架