如何使用多行和多列来格式化比较表?

如何使用多行和多列来格式化比较表?

对于我的新研究论文,我在使用 LaTeX 格式化比较表时遇到了困难。我使用了最近提供给我的帮助来准备使用多列的表格,但具体来说,我发现代码输出(封闭)之间有一些额外的空间。C2 和 C3 列之间有额外的空间,我不知道如何解决这个问题。另外,我想将系统 1 的三行合并为一行,其中包含三个案例 A、B 和 C,系统 2 的三行也类似。我知道多行是要使用的命令,但我请求您帮助我。将来,我将在希望获得的封闭代码帮助下格式化表格。

非常感谢您的帮助!!

祝好,桑达尔

\documentclass[11pt]{article}

\usepackage{float}
\usepackage{amssymb}


\usepackage{graphicx}
\usepackage{subfig}

\usepackage{array}
\usepackage{booktabs}
\usepackage{caption}%

\begin{document} 

 \begin{table}
\caption{Comparison Table}
\centering
\begin{tabular}{lcccccc}
  \toprule
  Name of the System & Case &  \multicolumn{3}{c}{Lyapunov Exponents} & Maximum Value & Pascal  Dimension \\
  \cmidrule{3-5}% added
                     &               &      $C1$ & $C2$ & $C3$ &  &  \\                                                  
  \midrule
  System (1) & A & a1 & a2 & a3 & a1 & P1 \\[1mm] \hline 
   System (1) & B & b1 & b2 & b3 & b1 & P2 \\[1mm] \hline 
    System (1) & C & c1 & c2 & c3 & c1 & P3 \\[1mm] \hline 
     System (2) & A & d1 & d2 & d3 & d1 & Q1 \\[1mm] \hline 
      System (2) & B & e1 & e2 & e3 & e1 & Q2 \\[1mm] \hline 
       System (2) & C & f1 & f2 & f3 & f1 & Q3 \\[1mm] \hline 
  \bottomrule
\end{tabular}
\end{table}
\end{document}

LaTeX 输出

答案1

以下解决方案使用w列类型(由包提供array)代替c“Lyapunov 指数”下方三列的基本列类型。它还在最后两列的标题单元格中引入了换行符,以帮助确保表格材料适合文本块的宽度。

在此处输入图片描述


附录: 如果你想知道我是怎么想出来的

\setlength{\mylen}{(\widthof{Lyapunov exponents}-4\tabcolsep)/3}

开始。

  • 长度宏\mylen存储标题“Lyapunov exponents”下方三列的可用宽度;目标是找到最小值,使得\mylen三列间距相等。为简单起见,我们将字符串的宽度称为“Lyapunov exponents” zz可以确定为\widthof{Lyapunov exponents},其中\widthof是提供的宏计算包裹。

  • 按照惯例,如果表格列的可用宽度为x,则该列的总宽度为x+2\tabcolsep,因为 LaTeX 会在列的两侧插入 的空白,数量为\tabcolsep。因此,三个合并的底层列的总宽度为3\mylen+6\tabcolsep,其中\mylen是我们需要确定的长度。

  • 第二条信息是,合并后的 3 个列的总宽度为z+2\tabcolsep2\tabcolsep附录来自 LaTeX 在合并标题两侧插入的空白填充。

  • 如果我们将实体3\mylen+6\tabcolsep和等同起来z+2\tabcolsep,我们将得到一个线性方程,其中包含一个已知变量(z),一个常数(\tabcolsep)和一个未知变量(\mylen)。剩下要做的就是求解\mylen


\documentclass[11pt]{article}

\usepackage{amssymb,amsmath}
\usepackage{graphicx,subfig,float}
\usepackage{array} % for 'w' column type
\usepackage{booktabs,caption}

% new:
\captionsetup{skip=0.333\baselineskip} % default: 1\baselinskip
\usepackage{calc} % simplify calculations 
\newlength\mylen  % scratch length parameter 
\newcommand\mytab[1]{%
   \smash[b]{\begin{tabular}[t]{@{}c@{}}#1\end{tabular}}}

\begin{document} 

\begin{table}

\setlength{\mylen}{% % calculate _usable_ width of middle-3 columns
  (\widthof{Lyapunov exponents}-4\tabcolsep)/3}
\caption{Comparison Table}
\centering
\begin{tabular}{@{} l c *{3}{w{c}{\mylen}} c c @{}}
  \toprule
  Name of system & Case & 
  \multicolumn{3}{c}{Lyapunov exponents} & 
  \mytab{Maximum\\ value} & 
  \mytab{Pascal\\ dimension} \\
  \cmidrule(lr){3-5}
  & & C1 & C2 & C3 \\                                                  
  \midrule
  System 1   & A & a1 & a2 & a3 & a1 & P1 \\ 
             & B & b1 & b2 & b3 & b1 & P2 \\ 
             & C & c1 & c2 & c3 & c1 & P3 \\ 
  \addlinespace % <-- new
  System 2   & A & d1 & d2 & d3 & d1 & Q1 \\ 
             & B & e1 & e2 & e3 & e1 & Q2 \\ 
             & C & f1 & f2 & f3 & f1 & Q3 \\ 
  \bottomrule
\end{tabular}
\end{table}

\end{document}

答案2

替代:

  • 对于表格,我将使用表格类型,我可以规定表格宽度,例如tabularxtabularray
  • 使用tblrtabularray可以确定列宽之间的比率,因此为了代码简单我会使用它:
\documentclass[11pt]{article}

\usepackage{tabularray}
\UseTblrLibrary{booktabs}
\usepackage{caption}%

\begin{document}

 \begin{table}[ht]
\caption{Comparison Table}
\centering
\begin{tblr}{colspec = {@{} X[l] *{4}{X[0.5,c]}  *{2}{X[c]} @{}},
             cell{1}{1,2,6,7} = {r=2}{},
             row{2}  = {mode=math}
             }
    \toprule
Name of the System 
    &   Case 
        &  \SetCell[c=3]{c}   Lyapunov Exponents  
            &   &   &   Maximum Value 
                        & Pascal  Dimension         \\
    \midrule
           &   & C1 & C2 & C3 &    &   \\
    \midrule
System (1) & A & a1 & a2 & a3 & a1 & P1 \\
System (1) & B & b1 & b2 & b3 & b1 & P2 \\
System (1) & C & c1 & c2 & c3 & c1 & P3 \\
    \addlinespace
System (2) & A & d1 & d2 & d3 & d1 & Q1 \\
System (2) & B & e1 & e2 & e3 & e1 & Q2 \\
System (2) & C & f1 & f2 & f3 & f1 & Q3 \\
  \bottomrule
\end{tblr}
    \end{table}
\end{document}

在此处输入图片描述

相关内容