具有多个维度的表

具有多个维度的表

我有几个维度要放在 LaTeX 的表格中,这些实际上是实验的结果。我不确定在 LaTeX 中最好的方法是什么。以下是其中一种可能性的快照:

在此处输入图片描述

获取这种表格的语法是什么,或者是否有更好的方法来呈现多维表格。

答案1

我认为语法可能很简单,但列的布局应该高度取决于您想要解释/展示/讲述的内容。只需直接将表格放入 LaTeX 中,使用booktabs样式floatrow将表格居中,然后使用代码将标题放在上方即可

\documentclass[a4paper,12pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{booktabs,floatrow}

%center tables
\floatsetup[table]{objectset=centering,capposition=top}

\begin{document}
    For a straight forward thingy see Table~\ref{Tab1}.
    \begin{table}
        \begin{tabular}{lllll}\toprule
            &&\textbf{Backward} & \textbf{Forward} & \textbf{Bidirectional}\\\midrule
            atis & Training & 345 & 235 & 345\\
                 & Test & 356 & 252 & 345\\
            brown & Training & 465 & 345 & 346\\
                  & Test & 456 & 342 & 253\\
            wsj & Training & 345 & 235 & 254\\
                & Test & 4336 & 634 & 3434
            \\\bottomrule
        \end{tabular}
        \caption{The Results}\label{Tab1}
    \end{table} 
\end{document}

表格结果如下 表格1

但在我看来,你想要比较某些方法的训练和测试,每个方法都应用于一个“感兴趣的对象”(artis、brown 和 wsj)——所以也许你想为每个对象花一列,并通过以下 MWE 中的“子列”之类的东西来获得更好的方法来比较这两个对象

\documentclass[a4paper,12pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{booktabs,floatrow}

%center tables
\floatsetup[table]{objectset=centering,capposition=top}
\begin{document}
    But maybe also the Table~\ref{Tab2} might be nice?
    \begin{table}
        \begin{tabular}{lrrrrrr}\toprule
            &\multicolumn{2}{c}{\textbf{Backward}}&\multicolumn{2}{c}{\textbf{Forward}}&\multicolumn{2}{c}{\textbf{Bidirectional}}
            \\\cmidrule(r){2-3}\cmidrule(r){4-5}\cmidrule(r){6-7}   
            &Training&Test&Training&Test&Training&Test\\\midrule
            atis    & 345 & 356
                    & 235 & 252
                    & 345 & 345\\
            brown   & 465& 456
                    & 345 & 342
                    & 346 & 253\\
            wsj     & 345 & 4336 
                    & 235 & 634
                    & 254 & 3434
            \\\bottomrule
        \end{tabular}
        \caption{The Results}\label{Tab2}
    \end{table} 
\end{document}

\cmidrow另外还对每个训练测试对进行了分组,并为\multicolumn这两列赋予了共同的标题。结果是

表格2

但这当然取决于您的数据,我在这里假设,训练和测试属于同一个对象(例如atis),因此将它们放在一行中似乎是个好主意。

编辑:对于第一个想法,我只是将其用作l左侧的列布局,第二个是我更喜欢的(r右侧),但当然 egreg 的答案使用siunitx也相当不错。

答案2

您应该加载booktabs包和siunitx;前者为表格提供了很好的规则,后者对于正确排版数量及其计量单位和数字表格数据至关重要。

\documentclass{article}
\usepackage{booktabs} % for better looking tables
\usepackage{siunitx}  % for units of measure and data in tables

\begin{document}
\begin{tabular}{
 l % left aligned column
 l % left aligned column
 *{3}{S[table-format=4.0]} % three columns with numeric data       
}
\toprule
&&\textbf{Backward} & \textbf{Forward} & \textbf{Bidirectional}\\
\midrule
atis  & Training &  345 & 235 &  345\\
      & Test     &  356 & 252 &  345\\
brown & Training &  465 & 345 &  346\\
      & Test     &  456 & 342 &  253\\
wsj   & Training &  345 & 235 &  254\\
      & Test     & 4336 & 634 & 3434\\
\bottomrule
\end{tabular}
\end{document}

我使用4.0这种格式是因为数字的整数部分有四位数字,没有小数部分。当然,您可以根据需要指定任意多的列,这种*{3}{...}快捷方式可以避免多次指定。

数字列的标题自动居中。

您可能会将tabular环境插入浮点数中table;网站上有很多示例。

在此处输入图片描述

相关内容