![\midrule、\bottomrule 等不会延伸到我的表格的最后一列](https://linux22.com/image/469174/%5Cmidrule%E3%80%81%5Cbottomrule%20%E7%AD%89%E4%B8%8D%E4%BC%9A%E5%BB%B6%E4%BC%B8%E5%88%B0%E6%88%91%E7%9A%84%E8%A1%A8%E6%A0%BC%E7%9A%84%E6%9C%80%E5%90%8E%E4%B8%80%E5%88%97.png)
我观察到奇怪的行为,toprule, midrule, bottomrule
无法延伸到表格的最后一列。
在下面的 MWE 中,我使用toprule,
&重现了该问题bottomrule
%%% Using MDPI journal template %%%
\begin{table}[!htbp]
\caption{My Table title} \label{tab1}
\begin{adjustwidth}{-\extralength}{0cm}
\centering
\begin{tabularx}{\textwidth}{@{} ll *{10}{c}}
\toprule
& & \multicolumn{2}{c}{Experiment 1} & \multicolumn{2}{c}{Experiment 2} & \multicolumn{2}{c}{Experiment 3} & \multicolumn{2}{c}{Experiment 4} & \multicolumn{2}{c}{Experiment 5} \\
\cmidrule(r{1ex}){3-4} \cmidrule(r{1ex}){5-6} \cmidrule(r{1ex}){7-8} \cmidrule(r{1ex}){9-10} \cmidrule(r{1ex}){11-12}
&& {ABC} & {XYZ} & {ABC} & {XYZ} & {ABC} & {XYZ} & {ABC} & {XYZ} & {ABC} & {XYZ} \\
%\midrule
\cmidrule{1-12} %\cmidrule(lr{1em}){1-12}
\multirow{ 3}{*}{Group 1}
& \textit{First Round} & 0.87 & 0.67 & 0.50 & 0.61 & 0.47 & 0.58 & 0.49 & 0.50 & 0.41 & 0.52 \\
& \textit{Second Round} & 0.87 & 0.67 & 0.50 & 0.61 & 0.47 & 0.58 & 0.49 & 0.50 & 0.41 & 0.52 \\
& \textit{Last Round} & 0.87 & 0.67 & 0.50 & 0.61 & 0.47 & 0.58 & 0.49 & 0.50 & 0.41 & 0.52 \\
\bottomrule
\end{tabularx}
\end{adjustwidth}
\end{table}
输出:
答案1
您尝试使用tabularx
环境,但未将X
列类型分配给 12 列中的任何一列。您不可能成功实现表格的目标宽度,即\textwidth
。
由于单元格内的换行(由X
列类型启用)对于手头的表格来说似乎不是一项有意义的活动,因此我建议您改用环境tabular*
并重新组织标题以节省大量(水平)空间。例如,如下所示:
请注意,采用这种设置,就无需使用adjustwidth
大锤了。
\documentclass{article}
\usepackage{booktabs}
\newcommand\mcii[1]{\multicolumn{2}{c}{#1}} % handy shortcut macro
\begin{document}
\begin{table}[!htbp]
\setlength\tabcolsep{0pt}
\caption{My table title\strut} \label{tab1}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} ll *{10}{c} }
\toprule
Group & Round & \multicolumn{10}{c}{Experiments} \\
\cmidrule{3-12}
& & \mcii{1} & \mcii{2} & \mcii{3} & \mcii{4} & \mcii{5} \\
\cmidrule{3-4} \cmidrule{5-6} \cmidrule{7-8} \cmidrule{9-10} \cmidrule{11-12}
& & ABC & XYZ & ABC & XYZ & ABC & XYZ & ABC & XYZ & ABC & XYZ \\
\midrule
1 & First & 0.87 & 0.67 & 0.50 & 0.61 & 0.47 & 0.58 & 0.49 & 0.50 & 0.41 & 0.52 \\
& Second & 0.87 & 0.67 & 0.50 & 0.61 & 0.47 & 0.58 & 0.49 & 0.50 & 0.41 & 0.52 \\
& Last & 0.87 & 0.67 & 0.50 & 0.61 & 0.47 & 0.58 & 0.49 & 0.50 & 0.41 & 0.52 \\
\bottomrule
\end{tabular*}
\end{table}
\end{document}
答案2
使用tabularx
没有-columnX
没有多大意义。这也是线条没有沿着整个表格绘制的原因(您固有地将宽度限制tabular
为提供给 的第一个参数tabularx
)。
解决方案是放弃tabularx
此构造,并将其设置为常规tabular
:
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{table}
\caption{My Table title}
\begin{tabular}{@{} ll *{10}{c}}
\toprule
& &
\multicolumn{2}{c}{Experiment 1} &
\multicolumn{2}{c}{Experiment 2} &
\multicolumn{2}{c}{Experiment 3} &
\multicolumn{2}{c}{Experiment 4} &
\multicolumn{2}{c}{Experiment 5} \\
\cmidrule(r{1ex}){3-4}
\cmidrule(r{1ex}){5-6}
\cmidrule(r{1ex}){7-8}
\cmidrule(r{1ex}){9-10}
\cmidrule(r{1ex}){11-12}
& & ABC & XYZ & ABC & XYZ & ABC & XYZ & ABC & XYZ & ABC & XYZ \\
\midrule
& \textit{First Round} & 0.87 & 0.67 & 0.50 & 0.61 & 0.47 & 0.58 & 0.49 & 0.50 & 0.41 & 0.52 \\
Group 1 & \textit{Second Round} & 0.87 & 0.67 & 0.50 & 0.61 & 0.47 & 0.58 & 0.49 & 0.50 & 0.41 & 0.52 \\
& \textit{Last Round} & 0.87 & 0.67 & 0.50 & 0.61 & 0.47 & 0.58 & 0.49 & 0.50 & 0.41 & 0.52 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案3
为了完整性,使用tabularray
包的版本:
\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{booktabs}
\begin{document}
\begin{table}[ht]
\caption{My table title\strut}
\label{tab1}
\begin{tblr}{colsep=3pt,
colspec = {@{} lQ[l, font=\itshape] *{10}{X[c]} @{}},
cell{1}{3} = {c=10}{c},
cell{1}{1,2} = {r=3}{h},
cell{2}{odd[3]} = {c=2}{}
}
\toprule
& Round & Experiments
& & & & & & & & & \\
\cmidrule{3-12}
& & 1 & & 2 & & 3 & & 4 & & 5 & \\
\cmidrule[lr]{3-4} \cmidrule[lr]{5-6} \cmidrule[lr]{7-8} \cmidrule[lr]{9-10} \cmidrule[lr]{11-12}
& & ABC & XYZ & ABC & XYZ & ABC & XYZ & ABC & XYZ & ABC & XYZ \\
\midrule
& First & 0.87 & 0.67 & 0.50 & 0.61 & 0.47 & 0.58 & 0.49 & 0.50 & 0.41 & 0.52 \\
Group 1 & Second& 0.87 & 0.67 & 0.50 & 0.61 & 0.47 & 0.58 & 0.49 & 0.50 & 0.41 & 0.52 \\
& Last & 0.87 & 0.67 & 0.50 & 0.61 & 0.47 & 0.58 & 0.49 & 0.50 & 0.41 & 0.52 \\
\bottomrule
\end{tblr}
\end{table}
\end{document}
答案4
请注意,tabularx
至少需要一X
列,但没有实际用途。
表格中应尽可能避免重复,这里有(长)单词“实验”:进一步的标题使表格更紧凑。
为群组保留一列也会浪费宝贵的空间。
\documentclass{article}
\usepackage{booktabs,siunitx,caption}
\begin{document}
\begin{table}[!htbp]
\caption{My Table title} \label{tab1}
\setlength{\tabcolsep}{0pt}
\begin{tabular*}{\textwidth}{
@{\extracolsep{\fill}}
l
*{10}{S[table-format=1.2]}
}
\toprule
& \multicolumn{10}{c}{Experiment} \\
\cmidrule{2-11}
& \multicolumn{2}{c}{1}
& \multicolumn{2}{c}{2}
& \multicolumn{2}{c}{3}
& \multicolumn{2}{c}{4}
& \multicolumn{2}{c}{5} \\
\cmidrule{2-3} \cmidrule{4-5} \cmidrule{6-7} \cmidrule{8-9} \cmidrule{10-11}
& {ABC} & {XYZ} & {ABC} & {XYZ} & {ABC} & {XYZ} & {ABC} & {XYZ} & {ABC} & {XYZ} \\
\midrule
\multicolumn{11}{l}{\itshape Group 1} \\
First Round & 0.87 & 0.67 & 0.50 & 0.61 & 0.47 & 0.58 & 0.49 & 0.50 & 0.41 & 0.52 \\
Second Round & 0.87 & 0.67 & 0.50 & 0.61 & 0.47 & 0.58 & 0.49 & 0.50 & 0.41 & 0.52 \\
Last Round & 0.87 & 0.67 & 0.50 & 0.61 & 0.47 & 0.58 & 0.49 & 0.50 & 0.41 & 0.52 \\
\midrule
\multicolumn{11}{l}{\itshape Group 2} \\
First Round & 0.87 & 0.67 & 0.50 & 0.61 & 0.47 & 0.58 & 0.49 & 0.50 & 0.41 & 0.52 \\
Second Round & 0.87 & 0.67 & 0.50 & 0.61 & 0.47 & 0.58 & 0.49 & 0.50 & 0.41 & 0.52 \\
Last Round & 0.87 & 0.67 & 0.50 & 0.61 & 0.47 & 0.58 & 0.49 & 0.50 & 0.41 & 0.52 \\
\bottomrule
\end{tabular*}
\end{table}
\end{document}
如果每个表只有一个组,则将“组 1”放在标题的第一列,“实验”的左边。