siunitx:附加的货币符号位置错误,且负值对齐

siunitx:附加的货币符号位置错误,且负值对齐

我正在尝试为朋友做一些 LaTeX 表格魔法,但遇到了一个奇怪的问题,我一直无法找到解决方案。

我使用siunitx(以及booktabs) 来对齐表格中的一些值。这些值实际上是金额 — — 因此货币符号 (即\,€) 会附加到数字后面。

从所提供的示例中可以看出,添加负值会影响货币符号的定位。请注意,值的对齐方式符合预期(即在小数点分隔符处对齐);只是附加的符号放错了位置。

代码如下:

\documentclass[a4paper]{article}

\usepackage{fontspec}
\usepackage{booktabs}
\usepackage{siunitx}

\sisetup{output-decimal-marker={,},group-separator ={.},group-minimum-digits=4,detect-all}

\begin{document}

\begin{table}
\centering
\begin{tabular}{@{}l*{2}{S}@{}}
\toprule
\multicolumn{1}{c}{\textbf{Col 1}} & \multicolumn{1}{c}{\textbf{Col 2}} & \multicolumn{1}{c}{\textbf{Col 3}} \\
\midrule
Some description.                  &                                    & 0,11\,€                            \\
Other stuff.                       &  18,00\,€                          & -123,45\,€                         \\
More things.                       &  -0,29\,€                          & 11,00\,€                           \\
Items.                             &  0,29\,€                           &                                    \\
\midrule
\multicolumn{1}{r}{\textbf{Sum:}}  &  9,99\,€                           & 11,11\,€                           \\
\bottomrule
\end{tabular}
\end{table}
\end{document}

结果如下:

小数分隔符对齐表中的货币符号未对齐

(不幸的是,由于并非所有字段都包含数字,我无法指定S<{\,€}为表格列,令人惊讶的是,它确实修复了其中一个错误字段,但没有修复另一个......)

我知道,按照我的方法,小数分隔符和货币符号不一定同时对齐,但我可以接受。(我想我看到了一个解决方案,其中分隔符和符号都对齐;但即使是那个解决方案也没有让我走多远——尽管也许理解和实施该解决方案可以解决我的问题,甚至“更正确”?)

任何帮助将不胜感激!

谢谢,尼古拉

答案1

如果您不siunitx“告知”,则用于以小数点为中心放置小数点的策略是将其放在列的中心。这意味着在您的示例中,输出中有很多空白。更好的方法是siunitx准确说明您需要多少空间,理想情况下将包括任何“帖子文本”部分。这可能会导致tabular标题类似于

{
  @{}
  l
  S[table-format = -2.2, table-space-text-post = {\,€}]
  S[table-format = -3.2, table-space-text-post = {\,€}]
  @{}
}

(我还会将第一列和第 s 列标题分别修改为\multicolumn{1}{@{}l}{\textbf{Col 1}}\multicolumn{1}{c@{}}{\textbf{Col 3}}:与当前问题无关,但避免了一些杂散间距。)

不过,我通常会将单位从表格主体移动到标题,因此更像

\begin{tabular}
  {
    @{}
    l
    S[table-format = -2.2]
    S[table-format = -3.2]
    @{}
  }
\toprule
  {Col 1} & \multicolumn{2}{c@{}}{Cost/€} \\
          & {Col 2} & {Col 3}           \\
\midrule
Some description.                  &        &    0,11 \\
Other stuff.                       &  18,00 & -123,45 \\
More things.                       &  -0,29 &   11,00 \\
Items.                             &   0,29 &         \\
\cmidrule(l){2-3}
Sum                                &  9,99  & 11,11   \\
\bottomrule
\end{tabular}

相关内容