如何固定表格的宽度?

如何固定表格的宽度?

我想控制表格的宽度,但是宽度太长了。有什么办法可以解决这个问题吗?

在此处输入图片描述

\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*环境或包tabularxtabulary。在树形结构中,您必须将整个表的宽度固定为\linewidth

\begin{tabular?}{\linewidth}{<type pf columns}}

其中?,或*,并且列的类型取决于环境类型。由于xytabular* 和 tabularx 之间的区别在其他地方有介绍,tabulary可能是:

\begin{tabulary}{\linewidth}{@{}LCCCCCC@{}}
....
\end{tabulary}

当然,结果仍然会很糟糕,因为你无法在大约 8 厘米的空间内(假设为标准列)很好地容纳 7 列如此多的文本,因此你的选择是:

  1. 减小字体。在其他情况下也许可以接受,但对于你的情况,字体只能容纳(或多或少)字体\tiny,,即使这样,标题也需要 3 或 4 行(在我看来,这远非优雅)。

  2. 取表中的两列,使用 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 个小数吗?

相关内容