表格条目未居中

表格条目未居中

即使在表格中使用 c 命令,下表中的文本“左”和“右”也未居中。如何修复此问题?

\documentclass[twocolumn]{book}
\usepackage   {lipsum}
\usepackage   {showframe} % just for this example
\usepackage   {subfig}
\usepackage   {tikz}

\begin{document}
\begin{table}
\setlength{\tabcolsep}{3pt}
\scriptsize
\centering
\caption{XXX}

\begin{tabular}{l|cc|cc|cc}
\toprule
& \multicolumn{2}{c|}{AAAAAAAAAAAAAA} & \multicolumn{2}{c|}{AAAAAAAAAAAAAA} & \multicolumn{2}{c}{AAAAAAAAAAAAAA} \\
\textbf{Recognition} & Left & Right & Left & Right & Left & Right \\
\midrule
Without Context & 0.65 & 0.17 & - & 0.87 & 0.82 & 0.50 \\
With Context & 0.60 & 0.58 & - & 0.94 & 0.77 & 0.38 \\
\bottomrule
& & & & & & \\
\toprule
& \multicolumn{2}{c|}{AAAAAAAAAAAAAA} & \multicolumn{2}{c|}{AAAAAAAAAAAAAA} & \multicolumn{2}{c}{AAAAAAAAAAAAAA} \\
\textbf{Anticipation} & Left & Right & Left & Right & Left & Right \\
\midrule
Without Context & 0.25 & - & 0.84 & 0.60 & 0.85 & 0.34 \\
With Context & 0.24 & - & 0.98 & 0.65 & 0.72 & 0.13 \\
\bottomrule
\end{tabular}

\end{table}
\end{document}

在此处输入图片描述

答案1

文本“左”和“右”实际上是居中的,只是“左”和“右”列的大小不同。我们可以使用固定宽度的居中列类型来解决这个问题。

\documentclass[twocolumn]{book}
\usepackage   {lipsum}
\usepackage   {subfig}
\usepackage   {tikz}
\usepackage{booktabs, array}%<--
\newcolumntype{x}[1]{>{\centering\arraybackslash\hspace{0pt}}p{#1}}%<--

\begin{document}
\begin{table}
\setlength{\tabcolsep}{3pt}
\scriptsize
\centering
\caption{XXX}

\begin{tabular}{l|x{.5in}x{.5in}|x{.5in}x{.5in}|x{.5in}x{.5in}}%<--
\toprule
& \multicolumn{2}{c|}{AAAAAAAAAAAAAA} & \multicolumn{2}{c|}{AAAAAAAAAAAAAA} & \multicolumn{2}{c}{AAAAAAAAAAAAAA} \\
\textbf{Recognition} & Left & Right & Left & Right & Left & Right \\
\midrule
Without Context & 0.65 & 0.17 & - & 0.87 & 0.82 & 0.50 \\
With Context & 0.60 & 0.58 & - & 0.94 & 0.77 & 0.38 \\
\bottomrule
& & & & & & \\
\toprule
& \multicolumn{2}{c|}{AAAAAAAAAAAAAA} & \multicolumn{2}{c|}{AAAAAAAAAAAAAA} & \multicolumn{2}{c}{AAAAAAAAAAAAAA} \\
\textbf{Anticipation} & Left & Right & Left & Right & Left & Right \\
\midrule
Without Context & 0.25 & - & 0.84 & 0.60 & 0.85 & 0.34 \\
With Context & 0.24 & - & 0.98 & 0.65 & 0.72 & 0.13 \\
\bottomrule
\end{tabular}

\end{table}
\end{document}

在此处输入图片描述

编辑:请注意,我选择 .5 英寸是任意的,但幸运的是,它接近 @Mico 随后实际计算的 ~.53 英寸。输出差异很小,但使用卡尺时可以注意到。请参阅 @Mico 的出色回答以了解这些计算。

答案2

(由于您使用包的线条绘制宏booktabs,因此以下解决方案将假定表不包含任何垂直规则。)

由于您预先定义了两列的(固定)组合宽度,因此您需要通过显式计算来获取每个底层列的(可用)宽度。开始吧。可用的两列组合的宽度由字符串的宽度给出AAAAAAAAAAAAAA,例如Y。为了得出全部的列对的宽度,需要添加到2\tabcolsepY现在可用的每个底层列的宽度X全部的每个底层列的宽度为X+2\tabcolsep。然后快速计算显示X=(Y-2\tabcolsep)/2。最后,对 6 个数据列中的每一个使用包wc提供的列类型。array

在此处输入图片描述

\documentclass[twocolumn]{book}
\usepackage{subfig,booktabs,calc}
\usepackage{array} % for 'w' column type

\begin{document}
\begin{table*}
\setlength{\tabcolsep}{3pt} % default: 6pt
\scriptsize

\newlength\mylen % calculate width of 'wc' columns:
\setlength\mylen{(\widthof{AAAAAAAAAAAAAA}-2\tabcolsep)/2}

\centering
\caption{XXX}

\begin{tabular}{ l *{6}{wc{\mylen}} }
\toprule
& \multicolumn{2}{c}{AAAAAAAAAAAAAA} 
& \multicolumn{2}{c}{AAAAAAAAAAAAAA} 
& \multicolumn{2}{c}{AAAAAAAAAAAAAA} \\
\textbf{Recognition} & Left & Right & Left & Right & Left & Right \\
\midrule
Without Context & 0.65 & 0.17 & -- & 0.87 & 0.82 & 0.50 \\
With Context    & 0.60 & 0.58 & -- & 0.94 & 0.77 & 0.38 \\
\bottomrule
\\
\toprule
& \multicolumn{2}{c}{AAAAAAAAAAAAAA} 
& \multicolumn{2}{c}{AAAAAAAAAAAAAA}
& \multicolumn{2}{c}{AAAAAAAAAAAAAA} \\
\textbf{Anticipation} & Left & Right & Left & Right & Left & Right \\
\midrule
Without Context & 0.25 & -- & 0.84 & 0.60 & 0.85 & 0.34 \\
With Context    & 0.24 & -- & 0.98 & 0.65 & 0.72 & 0.13 \\
\bottomrule
\end{tabular}

\end{table*}
\end{document}

相关内容