我对 的使用有些问题\multicolumn
。如下面的屏幕截图所示,单词“Classical”和“Squared”在列的中心正确对齐。然而单词“Exponential”没有正确居中。
代码如下:
\begin{table}[]
\setlength{\tabcolsep}{12pt}
\centering
\begin{tabular}{l c c c c c c}
\hline\hline
\\\\[-4.3\medskipamount]
& \multicolumn{2}{c}{Classic} & \multicolumn{2}{c}{Squared} & \multicolumn{2}{c}{Exponential} \\
\textit{a} & 70 & 30 & 70 & 30 & 70 & 30 \\ [0.5ex]
\hline
\\\\[-3.9\medskipamount]
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
[1ex] \hline
\end{tabular}
\end{table}
我更愿意继续在解决方案中使用 tabular 包。提前谢谢您!
答案1
原因是这个单词有点太长了。当然,你可以增加 的值\tabcolsep
。另一个解决方案是使用\makebox[0pt]
,它允许单词稍微重叠到列间空间中,对称。
除此之外,我建议使用 中的规则booktabs
,它们具有可变的厚度,并在规则周围添加一些垂直填充。这将节省您手动调整间距的时间:
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{table}[]
\setlength{\tabcolsep}{12pt}
\centering
\begin{tabular}{l c c c c c c}
\toprule\midrule
& \multicolumn{2}{c}{Classic} & \multicolumn{2}{c}{Squared} & \multicolumn{2}{c}{\makebox[0pt]{Exponential}} \\
\textit{a} & 70 & 30 & 70 & 30 & 70 & 30 \\ [0.5ex]
\midrule
\\\\[-3.9\medskipamount]
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案2
我将使用包S
中的列类型siunitx
,确定S
列宽并添加\cmidrule
下面的多列单元格:
\documentclass[12pt,a4paper]{article}
\usepackage{booktabs}
\usepackage{siunitx}
\begin{document}
\begin{table}
\centering
\begin{tabular}{l *{6}{S[table-format=2,
table-column-width=2em]}
}
\toprule
& \multicolumn{2}{c}{Classic}
& \multicolumn{2}{c}{Squared}
& \multicolumn{2}{c}{Exponential} \\
\cmidrule{2-3}\cmidrule(lr){4-5}\cmidrule{6-7}
\textit{a} & 70 & 30 & 70 & 30 & 70 & 30 \\
\midrule
S100 & 91 & 31 & 71 & 01 & 11 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案3
使用的问题\makebox[0pt]{}
在于,正如 Bernard 所说,长标题将与列间距重叠,这看起来可能相当丑陋。为了避免这种情况,两个数字列的宽度总和至少应等于长标题的宽度。这可以在新的列类型中精确计算和定义,C
如下所示。
\documentclass[12pt,a4paper]{article}
\usepackage{booktabs, array}
\begin{document}
\begin{table}
\setlength{\tabcolsep}{12pt}
\newlength\wexp
\settowidth{\wexp}{Exponential}
\newcolumntype{C}{>{\centering\arraybackslash}p{\dimexpr.5\wexp-\tabcolsep}}
\centering
\begin{tabular}{l c c c c C C}
\toprule
& \multicolumn{2}{c}{Classic} & \multicolumn{2}{c}{Squared} & \multicolumn{2}{c}{Exponential} \\
\textit{a} & 70 & 30 & 70 & 30 & 70 & 30 \\ \midrule
S100 & 91 & 31 & 71 & 01 & 11 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\ \bottomrule
\end{tabular}
\end{table}
\end{document}
答案4
我会用:
- 新
w{<align>}{<wd>}
增列固定所有列的宽度 \setlength{\tabcolsep}{0.5em}
(1em
在列之间留出空间)- 修剪
cmidrule
- 无侧轴承 (
@{}
) - 标题中的字体小一级
booktab
-规则和addlinespace[<wd>]
MWE 表示:
\documentclass{article}
\usepackage{booktabs, array, caption}
\begin{document}
\begin{table}[ht]
\caption{A table with figures\label{tab:atable}}
\setlength{\tabcolsep}{0.5em}
\centering
\begin{tabular}{@{}w{l}{4em}*{6}{w{c}{2em}}@{}}
\toprule
& \multicolumn{2}{c}{\small Classic} & \multicolumn{2}{c}{\small Squared} & \multicolumn{2}{c@{}}{\makebox[0pt]{\small Exponential}} \\\cmidrule(l{0.75em}r{0.75em}){2-3}\cmidrule(l{0.75em}r{0.75em}){4-5}\cmidrule(l{0.65em}){6-7}
\textit{a} & 70 & 30 & 70 & 30 & 70 & 30 \\
\midrule\addlinespace[1ex]
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}