我想实施以下有关表格中四舍五入值的建议:
- 一般情况下,表格中应使用两位数不确定性四舍五入:不确定性始终四舍五入为两位有效数字
- 中心值应该具有与不确定度相匹配的精度
该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}
输出:
因此这可行,但有两个问题:
- 对齐不正确。(与 81000+-51 的列相比,该列对齐正确,但舍入不正确。)
- 它在列定义之外不起作用
S
。(见第二张表。我的代码很糟糕。)
目前它只适用于整数。(对浮点数执行相同操作肯定要复杂得多 - 而且我现在不需要它。)