我想控制表格的宽度,但是宽度太长了。有什么办法可以解决这个问题吗?
\begin{table}
\centering
\caption{The examples of DTW distance for the Weizmann datasets.}
\arrayrulecolor{black}
\begin{tabular}{ccccccc}
\toprule
two sequences & \begin{tabular}[c]{@{}c@{}}boxing\\vs boxing\end{tabular} & \begin{tabular}[c]{@{}c@{}}walking\\vs boxing\end{tabular} & \begin{tabular}[c]{@{}c@{}}running\\vs boxing\end{tabular} & \begin{tabular}[c]{@{}c@{}}jogging\\vs boxing\end{tabular} & \begin{tabular}[c]{@{}c@{}}handwaving\\vs boxing\end{tabular} & \begin{tabular}[c]{@{}c@{}}handclapping\\vs boxing\end{tabular} \\
\cmidrule(lr){1-7}
DTW distance & 0.5796 & 1.7782 & 0.8616 & 1.1747 & 1.3516 & 0.969 \\
\bottomrule
\end{tabular}
\arrayrulecolor{black}
\end{table}
答案1
您可以通过删除本来就不应该出现在表格中的冗余信息(“vs boxing”),或者将表格布局从 2x7 更改为 7x2 网格来节省水平空间。以下代码显示了这两种解决方案。
第一个适合单列文档,但在双列文档中仍然太宽。
\documentclass[]{article}
\usepackage{siunitx}
\usepackage{booktabs}
\begin{document}
\begin{table}
\centering
\caption[The examples of DTW distance for the Weizmann datasets.]
{The examples of DTW distance for the Weizmann datasets. Activities shown vs
boxing.}
\begin{tabular}{ccccccc}
\toprule
activity & boxing & walking & running & jogging & waving & clapping \\
\cmidrule(lr){1-7}
DTW distance & 0.5796 & 1.7782 & 0.8616 & 1.1747 & 1.3516 & 0.969 \\
\bottomrule
\end{tabular}
\end{table}
\begin{table}
\centering
\caption{The examples of DTW distance for the Weizmann datasets.}
\begin{tabular}{l S[table-format=1.4]}
\toprule
activity vs boxing & {DTW distance} \\
\midrule
boxing & 0.5796 \\
walking & 1.7782 \\
running & 0.8616 \\
jogging & 1.1747 \\
waving & 1.3516 \\
clapping & 0.969 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
生成单列文档的结果:
生成一份双列文档:
答案2
我完全同意 Skillmon 的回答(+1),但没有具体回答“如何修复宽度”,也就是说,如何强制表格适应文本宽度。
在这方面,您有三种可能的方法:tabular*
环境或包tabularx
或tabulary
。在树形结构中,您必须将整个表的宽度固定为\linewidth
:
\begin{tabular?}{\linewidth}{<type pf columns}}
其中?
,或*
,并且列的类型取决于环境类型。由于x
y
tabular* 和 tabularx 之间的区别在其他地方有介绍,tabulary
可能是:
\begin{tabulary}{\linewidth}{@{}LCCCCCC@{}}
....
\end{tabulary}
当然,结果仍然会很糟糕,因为你无法在大约 8 厘米的空间内(假设为标准列)很好地容纳 7 列如此多的文本,因此你的选择是:
减小字体。在其他情况下也许可以接受,但对于你的情况,字体只能容纳(或多或少)字体
\tiny,
,即使这样,标题也需要 3 或 4 行(在我看来,这远非优雅)。取表中的两列,使用
table*
,或者当带星号的浮动行为有问题时,使用 包strip
中的midfloat
(看这里)。那么结果就还不错了:
\documentclass[twocolumn]{article}
\usepackage{lipsum,array,xcolor,booktabs,tabulary}
\begin{document}
\begin{table*}
\centering % \tiny for table
\caption{The examples of DTW distance for the Weizmann datasets.}
\begin{tabulary}{\linewidth}{@{}LCCCCCC@{}}
\toprule
Two sequences &
Boxing vs boxing &
Walking vs boxing &
Running vs boxing &
Jogging vs boxing &
Handwaving vs boxing &
Handclapping vs boxing\\\cmidrule{1-7}
DTW distance &
0.5796 &
1.7782 &
0.8616 &
1.1747 &
1.3516 &
0.969\\\bottomrule
\end{tabulary}
\end{table*}
\lipsum[1-40]
\end{document}
但是,要想让表格以某种方式适应,就绝不能回避问自己设计的问题。例如,除了多余的标题之外,你真的需要 4 个小数吗?