我使用 siunitx 包来打印表格。在下表中,我希望每行具有不同的舍入精度和打印的小数位数。
\usepackage{siunitx}
\sisetup{
round-mode = places,
round-precision = 3,
group-separator = {,},
}
\begin{tabular}{l*{2}{S}}
& A & B \\
Row 1 & 3.22222 & 5.66666 \\
Row 2 & 1.44444 & 9.99999 \\
\end{tabular}
例如,我希望在第 1 行打印 3 位小数,在第 2 行打印 1 位小数。
有没有办法调整从第 1 行到第 2 行的舍入精度以及要打印的小数位数?
答案1
这个答案描述了一种在表格环境中定义单行通用样式的方法。从此开始,我定义了一个命令来设置单行的精度:
- 需要将列类型
P
(表示:精度)作为第一个“列”。它在每行开始时将精度设置回默认值。 - 必须将列类型
^
放在应应用此精度的每个列之前。它会调用\sisetup
这些列的每个单元格。 - 然后,可以在表格行的开始处使用该宏
\rowprecision
将精度设置为作为单个参数给出的值。
你的例子:
\documentclass{article}
\usepackage{siunitx}
\usepackage{xifthen}
\sisetup{round-mode = places,
round-precision = 3,
group-separator = {,}}
\usepackage{array}
\newcolumntype{P}{>{\global\let\currentprecision\relax}}
\newcolumntype{^}{>{\ifthenelse{\isequivalentto{\currentprecision}{\relax}}{}{\currentprecision}}}
\newcommand{\rowprecision}[1]{\gdef\currentprecision{\sisetup{round-precision=#1}}}
\begin{document}
\begin{tabular}{Pl*{2}{^S}}
& A & B \\
\rowprecision{4} Row 1 & 3.22222 & 5.66666 \\
\rowprecision{2} Row 2 & 1.44444 & 9.99999 \\
\end{tabular}
\end{document}