siunitx,单元格内容中的粗体数字以 \$ 开头

siunitx,单元格内容中的粗体数字以 \$ 开头

根据问题的 egreg 回答我怎样才能使 siunitxs-num 变粗我尝试制作下表:

\documentclass[12pt,
               border=2mm,
               preview]{standalone}
    \usepackage{booktabs}
\usepackage{siunitx}
    \usepackage{etoolbox}
\renewcommand{\bfseries}{\fontseries{b}\selectfont}
\newrobustcmd{\B}{\bfseries}

\begin{document}
%---------------------------------------------------------------%
    \begin{table}
\sisetup{detect-weight, mode=text, table-format=2.2}
    \centering
\begin{tabular}{ l >{\$}S[table-align-text-pre=false,
                          table-space-text-pre =\$ ]
                        S[table-space-text-post=\,]<{\%}
               }
\toprule
text a  &   \B  17.89   &   \B  10.29   \\
text b  &        0.29   &        7.89   \\
\bottomrule
\end{tabular}
    \end{table}
\end{document}

这使:

在此处输入图片描述

是否可以确保siunitx第一行的第二个单元格也以粗体显示?

答案1

发生这种情况是因为siunitx试图保持对齐。数字前面的材料排版在一个框中,这意味着任何颜色或字体更改命令都将丢失。您不会在仅切换字体时看到它,因为它是零宽度:它被检测到并直接插入(而不是装箱)。您可以通过使插入的材料具有零宽度来解决这个问题:

\documentclass[12pt,
               border=2mm,
               preview]{standalone}
    \usepackage{booktabs}
\usepackage{siunitx}
    \usepackage{etoolbox}
\renewcommand{\bfseries}{\fontseries{b}\selectfont}
\newrobustcmd{\B}{\bfseries}

\begin{document}
%---------------------------------------------------------------%
    \begin{table}
\sisetup{detect-weight, mode=text, table-format = 2.2}
    \centering
\begin{tabular}{ l >{{\makebox[0pt][l]{\$}}}S[table-align-text-pre=true,
                          table-space-text-pre =\$ ]
                        S[table-space-text-post={\,\%}]<{\,\%}
               }
\toprule
text a  &   \B 17.89   &   \B  10.29\cr
text b  &        0.29   &        7.89\cr
\bottomrule
\end{tabular}
    \end{table}
\end{document}

siunitx当你这样做时,会出现一个错误,因为$token 是重复的。今天晚些时候将在 CTAN 上进行修复。目前可以使用以下方法修复

\ExplSyntaxOn
\patchcmd \__siunitx_table_print_S_reserved_ends:
  { \l__siunitx_table_collect_pre_tl \bool_set_false:N }
  { \box_clear:N \l__siunitx_table_pre_box
    \l__siunitx_table_collect_pre_tl \bool_set_false:N
  }
  { }
  { }
\ExplSyntaxOff

相关内容