使用 siunitx 在值后面的括号中报告百分比

使用 siunitx 在值后面的括号中报告百分比

我第一次使用siunitx它来格式化我的表格,效果很好。现在我想在每个值后面添加一些(未报告的)总数的百分比。这些值是 5 位整数,百分比应四舍五入到小数点后一位。

到目前为止,我的尝试是劫持不确定性选项,四舍五入到小数点后一位,但用来zero-decimal-to-integer很好地格式化整数,并在错误中添加百分号。使用一些试错法和其他 SE 页面,我得到了

\documentclass{article}
\usepackage{siunitx}
\begin{document}

\begin{table}
\begin{tabular}{S[table-alignment=right, 
                  round-mode=places, 
                  round-precision=1, 
                  table-format=5.3,
                  zero-decimal-to-integer,
                  input-symbols={()}]}
{title}         \\
11111(1.11)     \\
55555(55.55)     \\
\end{tabular}
\end{table}
\end{document}

它可以工作但是缺少另外两个元素。

  1. 百分号:如果我使用(1.11{\percent})我会很惊讶地得到undefined control sequence
  2. 左括号前有一个空格:我本以为table-space-text-pre={(}可以实现这一点,但却做不到。

正如我所说,这是我第一次尝试siunitx,所以我希望我只是误解了。另外,我怀疑有一种更优雅的方法来实现相同的输出,但在丰富的包选项中找不到它。

答案1

您只需要在括号的内容周围添加一对括号,以使其不属于对齐数字的一部分:

\documentclass{article}
\usepackage{siunitx}
\newcommand{\mypc}[1]{\hfill(\SI{#1}{\percent})}

\begin{document}

\begin{table}
\begin{tabular}{S[table-alignment=right,
                  round-mode=places,
                  round-precision=1,
                  table-format=5.0,
                  zero-decimal-to-integer,
                  input-symbols={()\%},,
                  table-space-text-post={\enspace(11.1\,\%)},
                  table-align-text-post=true]}
{title} \\
11111 \mypc{1.11} \\
55555 \mypc{5.55} \\
55555 \mypc{55.55}
\end{tabular}
\end{table}

\end{document}

在此处输入图片描述

相关内容