每当我需要在表格环境中创建包含多行的单元格时,我通常会在单元格内的表格环境中创建封闭单元格内容。这对我来说是一个很好的解决方案,因为它很容易实现,而且还能处理跨行的垂直对齐。
不幸的是,这个修复似乎还为该列添加了额外的填充。我在下面提供了一个示例来说明这个问题。这里,底部表格中有一行包含“2 行”单元格。
我认为,顶部表格和底部表格的列宽应该相等(由“TITLE”的长度决定),但事实并非如此。我怀疑原因是表格环境在列宽上添加了填充。
\documentclass[letter]{article}
\usepackage{array}
\usepackage{booktabs}
\usepackage{tabularx}
\begin{document}
%normal table
\begin{table}[ht]
\begin{tabular}{cc}
\toprule
TITLE & TITLE \\
\midrule
10 & 10 \\
10 & 10 \\
\bottomrule
\end{tabular}
\end{table}
%when I use the tabular trick
\begin{table}[ht]
\begin{tabular}{cc}
\toprule
\begin{tabular}{c}TITLE\\A\end{tabular} & \begin{tabular}{c}TITLE\\B\end{tabular} \\
\midrule
10 & 10 \\
10 & 10 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案1
在 (或 l 或 r) 的标准列说明符用法中,左侧和右侧c
都有一个空格\tabcolsep
(默认为)。这意味着6.0pt
cc
事实上有以下间距
\tabcolsep 单元格内容 \tabcolsep\tabcolsep 单元格内容 \tabcolsep
使用 会@{}c@{}
降低前后间距。最好将\tabcolsep
其设置为 来操作0pt
。
如果列说明符有垂直线,则每行都会为表的宽度添加额外的\arrayrulewidth
(默认为)空间。0.4pt
在下面的代码中,我写了四个表,两个来自 OP,一个带有坏的的操作\tabcolsep
以及方法@{}c@{}
。我添加了外部和内部表格的垂直线只是为了演示,不建议将它们用于生产运行!
从输出结果可以看出,除了垂直间距外,第 1、3、4 种方法是相同的,但第 2 种方法有所偏差。
\documentclass[letter]{article}
\usepackage{array}
\usepackage{booktabs}
\usepackage{tabularx}
\begin{document}
\begin{tabular}{|l|}%
One table method \tabularnewline
\begin{tabular}{|c|c|}
\toprule
TITLE & TITLE \\
\midrule
10 & 10 \\
10 & 10 \\
\bottomrule
\end{tabular} \tabularnewline
%when I use the tabular trick
Two table method \tabularnewline
\begin{tabular}{|c|c|}
\toprule
\begin{tabular}{c}TITLE\\A\end{tabular} & \begin{tabular}{c}TITLE\\B\end{tabular} \\
\midrule
10 & 10 \\
10 & 10 \\
\bottomrule
\end{tabular} \tabularnewline
% Now with 'bad' manipulation of \tabcolsep length
Bad manip. of tabcolsep \tabularnewline
\begin{tabular}{|c|c|}
\toprule
\setlength{\tabcolsep}{0pt}%
\begin{tabular}{c}
TITLE\\
A
\end{tabular} &
\setlength{\tabcolsep}{0pt}%
\begin{tabular}{c}
TITLE \\
B
\end{tabular} \\
\midrule
10 & 10 \\
10 & 10 \\
\bottomrule
\end{tabular} \tabularnewline
\makeatletter
Usage of @{} - method \tabularnewline
\makeatother
\begin{tabular}{|c|c|}
\toprule
\begin{tabular}{@{}c@{}}TITLE\\A\end{tabular} & \begin{tabular}{@{}c@{}}TITLE\\B\end{tabular} \\
\midrule
10 & 10 \\
10 & 10 \\
\bottomrule
\end{tabular}
\end{tabular}
\end{document}