带有 siunitx S 列和列对齐的粗体标题(文本)行

带有 siunitx S 列和列对齐的粗体标题(文本)行

好的,我想将表格的第一行以粗体显示:将表格第一行全部设为粗体,搞定!但我的表格中有很多数字,因此siunitx列说明符非常有用S,然后第一个解决方案使S列变得参差不齐(为什么?)。

似乎表格中与 dcolumn 对齐的粗体行:带有包的解决方案siunitx可能是我想要的,但不是。Heiko 的提议也发生了同样的事情。这显然是因为文本 Header,但为什么会发生这种情况,我该如何解决它?

以下 MWE 结合了这两种解决方案,编译结果如下所示。

\documentclass{standalone}
\usepackage{siunitx,array,booktabs,multirow}
\sisetup{output-decimal-marker={,}}
\newcolumntype{$}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcolumntype{L}{%
  >{\rowstyle{\relax}}l%
}
\newcolumntype{B}{%
  >{\currentrowstyle}S[detect-weight]%
}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
  #1\ignorespaces
}

\begin{document}
\begin{tabular}{L^cBB}
    \toprule
    \rowstyle{\bfseries}
    \multirow{2}{*}{Day} & {Running time} & {Water bag weight} & {Frost formation rate} \\
 & [days] & \multicolumn{1}{c}{[\si{\gram}]} & \multicolumn{1}{c}{[\si{\gram\per\hour}]} \\
\midrule
    26.09.2016  &   4   &   1098,2  &   11,4    \\
    27.09.2016  &   1   &   329,8   &   13,5    \\
    28.09.2016  &   1   &   288,4   &   11,8    \\
    29.09.2016  &   1   &   291,7   &   11,9    \\
    \midrule
    \rowstyle{\bfseries}
    Average         &       &       &   12,2    \\
    \bottomrule
\end{tabular}

\begin{tabular}{$l^c^S^S}
    \toprule
    \rowstyle{\bfseries}
    \multirow{2}{*}{Day} & {Running time} & {Water bag weight} & {Frost formation rate} \\
 & [days] & \multicolumn{1}{c}{[\si{\gram}]} & \multicolumn{1}{c}{[\si{\gram\per\hour}]} \\
\midrule
    26.09.2016  &   4   &   1098,2  &   11,4    \\
    27.09.2016  &   1   &   329,8   &   13,5    \\
    28.09.2016  &   1   &   288,4   &   11,8    \\
    29.09.2016  &   1   &   291,7   &   11,9    \\
    \midrule
    \rowstyle{\bfseries}
    Average         &       &       &   12,2    \\
    \bottomrule
\end{tabular}
\end{document}

在此处输入图片描述

答案1

这里的问题是\relax。这是 TeX 中的一个“不执行任何操作”的命令,但不可扩展。该siunitx包将其视为表格单元格中的“数字结尾”:没有理由期望数字中间有一个数字。因此,当它不“活跃”时,您需要将其安排为\currentrowstyle其他东西,例如一个空宏:

\documentclass{standalone}
\usepackage{siunitx,array,booktabs,multirow}
\sisetup{output-decimal-marker={,}}
\newcolumntype{$}{>{\global\let\currentrowstyle\empty}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcolumntype{L}{%
  >{\rowstyle{}}l%
}
\newcolumntype{B}{%
  >{\currentrowstyle}S[detect-weight]%
}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
  #1\ignorespaces
}

\begin{document}
\begin{tabular}{L^cBB}
    \toprule
    \rowstyle{\bfseries}
    \multirow{2}{*}{Day} & {Running time} & {Water bag weight} & {Frost formation rate} \\
 & [days] & \multicolumn{1}{c}{[\si{\gram}]} & \multicolumn{1}{c}{[\si{\gram\per\hour}]} \\
\midrule
    26.09.2016  &   4   &   1098,2  &   11,4    \\
    27.09.2016  &   1   &   329,8   &   13,5    \\
    28.09.2016  &   1   &   288,4   &   11,8    \\
    29.09.2016  &   1   &   291,7   &   11,9    \\
    \midrule
    \rowstyle{\bfseries}
    Average         &       &       &   12,2    \\
    \bottomrule
\end{tabular}
\end{document}

相关内容