使用 dcolumn/siunitx 将不确定度较高的数字与粗体对齐

使用 dcolumn/siunitx 将不确定度较高的数字与粗体对齐

我在对齐列时遇到了一些问题,如以下示例所示:
1)我的不确定性可能有两位小数和分数部分
2)我想使一些单元格加粗
3)我想在列之间添加更多空间

\documentclass{article}
\usepackage{siunitx}    
\begin{document}        
    \begin{table}
          \centering
          \sisetup{ table-align-uncertainty=true,
                    separate-uncertainty=true  }
          \begin{tabular}{S[table-format=3.3(3)]S[table-format=3.3(3)]}
            {Header} & {Header}\\
            100.531 \pm 10.09 & \ensuremath{\mathbf{50.531 \pm 10.09}} \\
            \ensuremath{\mathbf{12.531 \pm 0.095}} & 12.531 \pm 0.09 \\
          \end{tabular}
    \end{table}
\end{document}

在此处输入图片描述

答案1

我曾经遇到过类似的情况,并决定保持理智,简单地将值及其不确定性放在单独的列中。

\documentclass{article}
\usepackage{siunitx}    

\usepackage{etoolbox}
\robustify\bfseries

\begin{document}   
    \setlength{\tabcolsep}{22pt}% increases space between columns     
    \begin{table}
        \centering
        \sisetup{%
            table-align-uncertainty=true,
            separate-uncertainty=true,
            detect-weight=true,
            detect-inline-weight=math
        }
        \begin{tabular}{%
            S[table-format=3.3]@{\,\( \pm \)\,}S[table-format=2.3]
            S[table-format=3.3]@{\,\( \pm \)\,}S[table-format=2.3]
        }
            \multicolumn{2}{c}{Header} & \multicolumn{2}{c}{Header}\\
            \bfseries 100.531 & \bfseries 10.09 & 50.531 & 10.09\\
            12.531 & 0.095 & \bfseries 12.531 & \bfseries 0.09\\
        \end{tabular}
    \end{table}
\end{document}

在此处输入图片描述

答案2

根据设计,siunitx使用\bfseries\boldmath何时detect-weight有效,但我们需要\fontseries{b}改为不加粗符号\pm。解决方案:本地重新定义这两个命令。

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

\begin{document}

\begin{table}

\sisetup{
  table-align-uncertainty=true,
  separate-uncertainty=true,
}
%% local redefinitions
\renewrobustcmd{\bfseries}{\fontseries{b}\selectfont}
\renewrobustcmd{\boldmath}{}

\begin{tabular}{
  S[table-format=3.3(3),detect-weight,mode=text]
  S[table-format=3.3(3),detect-weight,mode=text]
}
{Header} & {Header}\\
100.531 \pm 0.09 & \bfseries 50.531 \pm 0.09 \\
\bfseries 12.531 \pm 0.095 & 12.531 \pm 0.09 \\
\end{tabular}

\end{table}

\end{document}

在此处输入图片描述

请注意,siunitx假设不确定性只有个位数的整数部分。如果您确实需要更复杂的不确定性值,我认为唯一的方法是使用更多列。

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

\begin{document}

\begin{table}

\sisetup{
  table-align-uncertainty=true,
  separate-uncertainty=true,
}
%% local redefinitions
\renewrobustcmd{\bfseries}{\fontseries{b}\selectfont}
\renewrobustcmd{\boldmath}{}

\begin{tabular}{
  S[table-format=3.3,detect-weight,mode=text]
  @{${}\pm{}$}
  S[table-format=2.3,detect-weight,mode=text]
  S[table-format=3.3,detect-weight,mode=text]
  @{${}\pm{}$}
  S[table-format=2.3,detect-weight,mode=text]
}
\multicolumn{2}{c}{Header} & \multicolumn{2}{c}{Header}\\
100.531 & 10.09 & \bfseries 50.531 & \bfseries 10.09 \\
\bfseries 12.531 & \bfseries 0.095 & 12.531 & 0.09 \\
\end{tabular}

\end{table}

\end{document}

在此处输入图片描述

相关内容