好的,我想将表格的第一行以粗体显示:将表格第一行全部设为粗体,搞定!但我的表格中有很多数字,因此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}