使用 siunitx 在 LaTeX 中实现两位数舍入(具有不确定性)

使用 siunitx 在 LaTeX 中实现两位数舍入(具有不确定性)

我想实施以下有关表格中四舍五入值的建议:

  • 一般情况下,表格中应使用两位数不确定性四舍五入:不确定性始终四舍五入为两位有效数字
  • 中心值应该具有与不确定度相匹配的精度

siunitx软件包提供了四舍五入到固定有效数字的选项,但在这里我们需要根据不确定性来执行此操作。如何实现这一点?

答案1

例如,siunitx您可以使用版本 3round-mode = uncertainty

\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\begin{document}
  \sisetup{uncertainty-mode = separate, round-mode = uncertainty}
  \begin{tabular}{
    l
    S[table-format=3.2(2)]
    S[table-format=3.3(2)]
  }
  \toprule
    2 tight $\tau$s     & 72.293(269)     &    80.839(51) \\
    2 medium $\tau$s    & 212.383(461)    &   231.155(125) \\
  \bottomrule
  \end{tabular}
\end{document}

或者

\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\begin{document}
  \sisetup{uncertainty-mode = separate, round-mode = uncertainty}
  \begin{tabular}{
    l
    S[table-format=6(2)]
    S[table-format=6(2)]
  }
  \toprule
    2 tight $\tau$s     & 72293(269)     &    80839(51) \\
    2 medium $\tau$s    & 212383(461)    &   231155(125) \\
  \bottomrule
  \end{tabular}
\end{document}

答案2

基于我对 TeX 的有限了解(以及在互联网上的搜索),我想出了以下解决方案,我将在这里提供该解决方案,作为其他人改进此解决方案的开始:

\documentclass{minimal}

\usepackage{siunitx}
\usepackage{stringstrings}

\newcommand*{\numRF}[2]{\num[round-mode=figures,round-precision=#2]{#1}}

\begin{document}

  \newcommand{\matchroundtabular}[2]{% only works for integer values
    {%
    \aftergroup\round
    \stringlength[q]{#1}
    \newcount\numlen
    \numlen=\theresult
    \stringlength[q]{#2}
    \newcount\errorlen
    \errorlen=\theresult
    \newcount\round
    \round=\numlen
    \advance\round by -\errorlen
    \advance\round by 1
    \expandafter
    }
    \the\round
    {\numRF{#1}{\round}} & {\numRF{#2}{2}}%
  }

  % Problem 1: alignment off  
  \sisetup{round-mode = figures,round-precision = 2, table-number-alignment = right}%
  \begin{tabular}{
    l
    S[table-format=6.0]@{$\,\pm\,$}S[table-format=3.0]@{~}
    S[table-format=6.0]@{$\,\pm\,$}S[table-format=3.0]@{~}
  }
    2 tight $\tau$s     & \matchroundtabular{72293}{269}     &    80839 &   51 \\
    2 medium $\tau$s    & \matchroundtabular{212383}{461}    &   231155 &  125 \\
  \end{tabular}

  % Problem 2: not working here
  \begin{tabular}{c@{$\,\pm\,$}c}
    Aaaaa & Bbbbb \\
    \matchroundtabular{343454}{455}
  \end{tabular}

\end{document}

输出:

水电部输出

因此这可行,但有两个问题:

  1. 对齐不正确。(与 81000+-51 的列相比,该列对齐正确,但舍入不正确。)
  2. 它在列定义之外不起作用S。(见第二张表。我的代码很糟糕。)

目前它只适用于整数。(对浮点数执行相同操作肯定要复杂得多 - 而且我现在不需要它。)

相关内容