创建一个多列表格,用于比较两个数据源

创建一个多列表格,用于比较两个数据源

我想创建一个三列的表格。第一列有几行,第二列和第三列各分为两列。我不知道哪里出了问题。

\document class{article}  
\newcommand{\splitcell}\[1\]{%
\begin{tabular}{@{}c@{}}\strut#1\strut\end{tabular}%
}

\begin{document}

\begin{table}\[htp\]
\centering

\caption{A caption}

\begin{tabular}{
    S\[table-format=2.0\] % Column 1
    S\[table-format=1.0\] % Column 2
    S\[table-format=1.6\] % Column 3
    S\[table-format=1.4\] % Column 4
    S\[table-format=1.3\] % Column 5
}

\toprule
{Metal type/ Metal thickness $t$(\si{\nano\meter})} & \multicolumn{2}{c}{Akbari} & \multicolumn{2}{c}{Naema} \\
\cmidrule{2-3} \cmidrule{4-5}
 & & {$Re(n_{eff})$}  {\splitcell{\\$\alpha$\\(\si{dB/\mu m})}} &   {$Re(n_{eff})$}  {\splitcell{\\$\alpha$\\(\si{dB/\mu m})}}\\
\midrule
Al/100nm & 3.619 & 1.041 & 3.607517& 1.04979 \\
\midrule
Au/100nm & 3.772 & 1.228 &3.762532 & 1.29734 \\
\midrule
Al/20nm & 3.72 & 2 & 3.65266 & 2.00962\\
\midrule
Au/20nm & 4.2 & 5 & 4.001033 & 3.25059\\
\midrule
Al/10nm & 5.12 & 23.5 & 3.865893 & 5.12678\\
\midrule
Au/10nm &   NA & 33.5 & 4.809568 & 9.15694 \\

\bottomrule

\end{tabular}
\end{table}
\end{document}

该表格是这里

答案1

另一种解决方案是使用xcolorcolortbl和:hhlinemakecell

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[TS1,T1]{fontenc}
\usepackage{lmodern}
\usepackage[table, x11names, svgnames]{xcolor}
\usepackage{colortbl}
\colorlet{myblue}{SteelBlue3}
\usepackage{amsmath}
\DeclareMathOperator\re{\textsf{Re}}
\usepackage{array, hhline, caption}
\newcommand\myhline{\hhline{>{\arrayrulecolor{myblue}}->{\arrayrulecolor{Cornsilk1}}|----}}
\usepackage{siunitx}

\usepackage{makecell}
\renewcommand\cellalign{lc}
\renewcommand\theadfont{\cellcolor{myblue}\color{Cornsilk1}\bfseries\boldmath}
\usepackage{cellspace}
\setlength\cellspacetoplimit{4pt}
\setlength\cellspacebottomlimit{4pt}
\def\nm{\si{\,\nm}}

\begin{document}
\rowcolors*{3}{SlateGray3!60}{Gainsboro!50}%[\cline{2-5}]
\begin{table}[!htp]
\centering
\sisetup{table-number-alignment=center,detect-all}
\caption{A caption}
\sffamily\arrayrulecolor{Cornsilk1}\setlength\arrayrulewidth{1.5pt}
\begin{tabular}%
   { >{\cellcolor{myblue}\color{Cornsilk1}\bfseries\boldmath}Cl |% Column 1
    S[table-format=1.2] |% Column 2
    S[table-format=2.3] |% Column 3
    S[table-format=1.6] |% Column 4
    S[table-format=1.5] % Column 5
}
\rowcolor{myblue}& \multicolumn{2}{>{\bfseries\color{Cornsilk1}}c}{Akbari} & \multicolumn{2}{>{\bfseries\color{Cornsilk1}}c}{Naema} \\
\myhline%
\rowcolor{myblue}\makecell{Metal type/Metal \\ thickness\enspace$t$(\si{\nano\meter})}& {\thead{$\re(n_{\mathbf{eff}})$}} & {\thead{$\alpha$\\(\si{dB/\micro\meter})}} & {\thead{$\re(n_{\mathrm{eff}})$}} & {\thead{$\alpha$\\(\si{dB/\micro\meter})}}\\
\myhline%
Al/100\nm & 3.619 & 1.041 & 3.607517& 1.04979 \\
Au/100\nm & 3.772 & 1.228 &3.762532 & 1.29734 \\
Al/20\nm & 3.72 & 2 & 3.65266 & 2.00962\\
Au/20\nm & 4.2 & 5 & 4.001033 & 3.25059\\
Al/10\nm & 5.12 & 23.5 & 3.865893 & 5.12678\\
Au/10\nm & {NA} & 33.5 & 4.809568 & 9.15694
\end{tabular}
\end{table}

\end{document} 

在此处输入图片描述

答案2

您的代码存在很多问题,其中任何一个问题都会导致 MWE 无法编译。据我所知,这些问题都与您在帖子标题中提到的事实无关,即表格使用 将两对列分组\multicolumn

  • 第一条指令应该是\documentclass,而不是\document class

  • siunitx需要booktabs加载的软件包

  • 当需要方括号时,请输入[and ]不是 \[\]。例如,不要写\begin{table}\[htp\]; 而要写\begin{table}[htp]。列的规范也是如此S

  • \si表达式中,使用\micro\meter,而不是\mu m

  • 不要忘记&在某些标题单元格之间插入对齐分隔线。(tabular环境有五列,而不是三列。)

虽然不是完全错误,但仍然很重要:

  • 第一列可以使用类型c;不需要更花哨的东西

  • 设置 的值时table-format,尽量使数字和小数位数与数据输入的实际属性相匹配

  • 我建议您将[t]位置说明符添加到宏tabular包含的环境中splitcell

  • \\两个调用中的第一个换行指令\splitcell似乎是不必要的。

  • NA当您在列类型中偶尔输入非数字(例如)时S,请务必将其括在花括号中使其居中。例如,写成{NA},而不仅仅是NA

在此处输入图片描述

\documentclass{article}  
\usepackage{siunitx,booktabs}
\newcommand{\splitcell}[1]{%
  \begin{tabular}[t]{@{}c@{}}\strut#1\strut\end{tabular}}

\begin{document}

\begin{table}[htp]
\centering

\caption{A table}

\medskip
\begin{tabular}{
    c                   % Column 1
    S[table-format=1.3] % Column 2
    S[table-format=2.3] % Column 3
    S[table-format=1.6] % Column 4
    S[table-format=1.5] % Column 5
}

\toprule
Metal type\slash Metal thickness $t$ (\si{\nano\meter})
& \multicolumn{2}{c}{Akbari} 
& \multicolumn{2}{c}{Naema} \\
\cmidrule(lr){2-3} \cmidrule(l){4-5}
 &  
{$Re(n_{\textit{eff}})$}  & 
{\splitcell{$\alpha$\\(\si{dB/\micro\meter})}} &   
{$Re(n_{\textit{eff}})$} & 
{\splitcell{$\alpha$\\(\si{dB/\micro\meter})}}\\
\midrule
Al/100nm & 3.619 & 1.041 & 3.607517& 1.04979 \\
\midrule
Au/100nm & 3.772 & 1.228 &3.762532 & 1.29734 \\
\midrule
Al/20nm & 3.72 & 2 & 3.65266 & 2.00962\\
\midrule
Au/20nm & 4.2 & 5 & 4.001033 & 3.25059\\
\midrule
Al/10nm & 5.12 & 23.5 & 3.865893 & 5.12678\\
\midrule
Au/10nm &   {NA} & 33.5 & 4.809568 & 9.15694 \\
\bottomrule

\end{tabular}
\end{table}
\end{document}

相关内容