抱歉,问题标题有歧义。
我正在使用 2 列乳胶模板。这是我的 MWE:
\begin{table}
\centering
\caption{My table}
\resizebox{\columnwidth}{!}{%
\begin{tabular}{ccc|cc|cc}
\toprule
\multirow{2}{*}{\rotatebox{90}{Rank}} & \multirow{2}{*}{\rotatebox{90}{FLOPs ↓\%}} & \multirow{2}{*}{\rotatebox{90}{Params. ↓\%}} & \multicolumn{2}{c|}{NMSE} & \multicolumn{2}{c}{Accuracy (\%)} \\
\cmidrule{4-7}
& & & Before & After & Before & After \\
\midrule
1 & 88.03 & 87.06 & 0.xxxx & 0.1613 & 10 & 93.84 \\
2 & 76.44 & 75.98 & 0.xxxx & 0.1508 & 10 & 94.11 \\
3 & 64.85 & 64.91 & 0.xxxx & 0.1420 & 68.1 & 94.18 \\
4 & 53.27 & 53.84 & 0.xxxx & 0.1383 & 89.96 & 94.07 \\
5 & 41.69 & 42.76 & 0.xxxx & 0.1348 & 92.5 & 94.22 \\
6 & 30.10 & 31.69 & 0.xxxx & 0.1541 & 93.38 & 94.15 \\
7 & 18.51 & 20.61 & 0.xxxx & 0.1333 & 93.89 & 94.11 \\
8 & 6.93 & 9.54 & 0.xxxx & 0.0011 & 94.03 & 94.03 \\
\bottomrule
\end{tabular}
}
\end{table}
此代码生成表格:
我有两个问题:
- FLOPs 和 Params 列溢出了单元格。我该如何修复这个问题?我的主要想法是旋转单元格,以便调整大小后的表格可以更大。
- 我希望两列 Params 和 NMES 以及 NMES 和 Accuracy 之间的垂直分界线与第一条线相交。
非常感谢!
答案1
一些建议:
永远不要强行
\resizebox
将表格放入文本块的宽度(此处\columnwidth
:),除非您不介意公开表达对读者的蔑视——并且不太担心因此可能遭受的强烈反对。如果您不相信我或者不知道我在说什么,您仍然应该不要使用
\resizebox
。您没有为旋转的列标题留出足够的垂直空间。我建议您将所有实例更改为,
\multirow{2}
并\multirow{4}
在标题中插入两个额外的空白行。如果您想使用包的线条绘制宏,请不要使用垂直规则
booktabs
。没有例外。没有。为了使表格更具可读性,请将第 2 至第 7 列中的数字与小数点对齐。这可以借助包的机制来完成
siunitx
;请参阅下面的代码以了解此想法的实际实现。如果你认为桌子的宽度应该等于
\columnwidth
确切地,考虑使用tabular*
环境。请参阅下面第二个表的代码,了解此想法的实际实现。
\documentclass{IEEEtran} % or some other suitable document class
\usepackage{newtxtext,newtxmath} % optional (Times Roman font)
\usepackage{graphicx,booktabs,multirow}
\usepackage{siunitx}
\newcolumntype{T}[1]{S[table-format=#1]}
\usepackage{lipsum} % filler text
\begin{document}
\begin{table}[h]
\centering
\caption{with \texttt{tabular}}
\begin{tabular}{@{} l *{2}{T{2.2}} *{2}{T{1.4}} *{2}{T{2.2}} @{}}
\toprule
\multirow{4}{*}{\rotatebox{90}{Rank}} &
{\multirow{4}{*}{\rotatebox{90}{FLOPs ↓\%}}} &
{\multirow{4}{*}{\rotatebox{90}{Params. ↓\%}}} &
\multicolumn{2}{c}{NMSE} &
\multicolumn{2}{c@{}}{Accuracy (\%)} \\
\cmidrule(lr){4-5} \cmidrule(l){6-7}
& & & {Before} & {After} & {Before} & {After} \\
\\ \\
\midrule
1 & 88.03 & 87.06 & 0.1111 & 0.1613 & 10 & 93.84 \\
2 & 76.44 & 75.98 & 0.1111 & 0.1508 & 10 & 94.11 \\
3 & 64.85 & 64.91 & 0.1111 & 0.1420 & 68.1 & 94.18 \\
4 & 53.27 & 53.84 & 0.1111 & 0.1383 & 89.96 & 94.07 \\
5 & 41.69 & 42.76 & 0.1111 & 0.1348 & 92.5 & 94.22 \\
6 & 30.10 & 31.69 & 0.1111 & 0.1541 & 93.38 & 94.15 \\
7 & 18.51 & 20.61 & 0.1111 & 0.1333 & 93.89 & 94.11 \\
8 & 6.93 & 9.54 & 0.1111 & 0.0011 & 94.03 & 94.03 \\
\bottomrule
\end{tabular}
\bigskip\bigskip
\setlength\tabcolsep{0pt}
\caption{with \texttt{tabular*}}
\begin{tabular*}{\columnwidth}{@{\extracolsep{\fill}} l *{2}{T{2.2}} *{2}{T{1.4}} *{2}{T{2.2}} }
\toprule
\multirow{4}{*}{\rotatebox{90}{Rank}} &
{\multirow{4}{*}{\rotatebox{90}{FLOPs ↓\%}}} &
{\multirow{4}{*}{\rotatebox{90}{Params. ↓\%}}} &
\multicolumn{2}{c}{NMSE} &
\multicolumn{2}{c}{Accuracy (\%)} \\
\cmidrule{4-5} \cmidrule{6-7}
& & & {Before} & {After} & {Before} & {After} \\
\\ \\
\midrule
1 & 88.03 & 87.06 & 0.1111 & 0.1613 & 10 & 93.84 \\
2 & 76.44 & 75.98 & 0.1111 & 0.1508 & 10 & 94.11 \\
3 & 64.85 & 64.91 & 0.1111 & 0.1420 & 68.1 & 94.18 \\
4 & 53.27 & 53.84 & 0.1111 & 0.1383 & 89.96 & 94.07 \\
5 & 41.69 & 42.76 & 0.1111 & 0.1348 & 92.5 & 94.22 \\
6 & 30.10 & 31.69 & 0.1111 & 0.1541 & 93.38 & 94.15 \\
7 & 18.51 & 20.61 & 0.1111 & 0.1333 & 93.89 & 94.11 \\
8 & 6.93 & 9.54 & 0.1111 & 0.0011 & 94.03 & 94.03 \\
\bottomrule
\end{tabular*}
\end{table}
\lipsum[1][1-4]
\end{document}