根据问题的 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