表格中的数字对齐,部分值以粗体显示(小数点除外)

表格中的数字对齐,部分值以粗体显示(小数点除外)

我想将表格中的十进制值与粗体打印的值对齐。仅凭这一点,这没有问题。我们可以使用siunitx包并\robustify\bfseries按照描述执行操作,例如siunitx:粗体单个数字单元格

但是,我希望将粗体值的小数点保留为正常粗细。这样整体上会给人更美观的印象。到目前为止,我使用了一种粗略的解决方法(r@{.}l),其中整数和小数部分是它们自己的列。

是否有可能通过其他包达到我想要的格式siunitx,还是我必须继续使用我粗略的解决方法?

答案1

软件包siunitx提供了可用于设置非粗体小数分隔符的选项output-decimal-marker。示例基于这个答案约瑟夫·赖特引用的问题

\documentclass{standalone}
\usepackage{etoolbox,siunitx}

\newrobustcmd*{\bftabnum}{%
  \bfseries
  \sisetup{output-decimal-marker={\textmd{.}}}%
}

\begin{document}

\sisetup{detect-weight=true,detect-inline-weight=math}
\begin{tabular}{S[table-format=1.2]S[table-format=2.2]}
  {A} & {B} \\
  1.01 & \bftabnum 11.1\\
  \bftabnum 2.1 & 1.94 \\
\end{tabular}

\end{document}

结果

答案2

告诉siunitx你小数点必须用普通字体。上面是链接消息中的例子,下面我添加了句号用普通字体的设置。

\documentclass[varwidth]{standalone}
\usepackage{etoolbox,siunitx,booktabs}
\robustify\bfseries
\begin{document}

\sisetup{
  detect-weight=true,
  detect-inline-weight=math,
}
\begin{tabular}{S[table-format=1.2]S[table-format=2.2]}
\toprule
{A} & {B} \\
\midrule
1.01 & \bfseries 11.1\\
\bfseries 2.1 & 1.94 \\
\bottomrule
\end{tabular}

\sisetup{
  detect-weight=true,
  detect-inline-weight=math,
  output-decimal-marker=\textnormal{.},
}
\begin{tabular}{S[table-format=1.2]S[table-format=2.2]}
\toprule
{A} & {B} \\
\midrule
1.01 & \bfseries 11.1\\
\bfseries 2.1 & 1.94 \\
\bottomrule
\end{tabular}

\end{document}

在此处输入图片描述

相关内容