![使用 siunitx 对齐表格中的无尾数数字](https://linux22.com/image/458121/%E4%BD%BF%E7%94%A8%20siunitx%20%E5%AF%B9%E9%BD%90%E8%A1%A8%E6%A0%BC%E4%B8%AD%E7%9A%84%E6%97%A0%E5%B0%BE%E6%95%B0%E6%95%B0%E5%AD%97.png)
表格内容可以很好地对齐,但我无法获得没有尾数(以科学计数法表示)与其余部分对齐的数字:
\documentclass{article}
\usepackage{booktabs,siunitx}
\sisetup{print-unity-mantissa=false}
\begin{document}
~\vfill
\begin{tabular}{SS[table-alignment=right,table-alignment-mode=none] r@{}c@{}l}
\multicolumn{1}{c}{centered in column but not aligned} &
\multicolumn{1}{c}{aligned\footnotemark[1], but not centered} &
\multicolumn{3}{c}{desired} \\
\toprule
10 & 10 & 10 & & \\
1e-4 & 1e-4 & & & $10^{-4}$ \\
5e-5 & 5e-5 & 5 & ${}\times{}$ & $10^{-5}$ \\
1e-5 & 1e-5 & & & $10^{-5}$ \\
\bottomrule
\end{tabular}
\footnotetext[1]{First row is not correct, though.}
\end{document}
有没有什么方法可以得到“期望的”结果,而不需要如此手动摸索?
答案1
您想要设置table-align-exponent
;这在 v2 中有效,但 v3 中有一个错误,这意味着您看不到效果。我刚刚发布了 v3.1.11 来解决这个问题,目前我还在此处包含补丁:
\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}%[=v2]
\ExplSyntaxOn
\cs_gset_protected:Npn \__siunitx_table_print_format_auxvii:w
#1 \q_nil #2 \q_mark #3 \q_nil #4 \q_stop
{
\tl_if_blank:nF {#2}
{
\__siunitx_table_print_format_box:Nn \l__siunitx_table_tmp_box { { } #1#2 }
\dim_set:Nn \l__siunitx_table_tmp_dim { \box_wd:N \l__siunitx_table_tmp_box }
\__siunitx_table_print_format_box:Nn \l__siunitx_table_tmp_box
{
\bool_lazy_and:nnT
{ \l__siunitx_table_align_exponent_bool }
{ \tl_if_blank_p:n {#3} }
{
\__siunitx_table_print_format_box:Nn \l__siunitx_table_tmp_box
{ { } #1 { } }
\__siunitx_table_skip:n { \box_wd:N \l__siunitx_table_tmp_box }
}
{ } #3#4
}
\__siunitx_table_print_format_after:N
\l__siunitx_table_align_exponent_bool
}
}
\ExplSyntaxOff
\sisetup{retain-unity-mantissa=false}
\begin{document}
\begin{tabular}{S[table-format = 2e+1,table-align-exponent=true]S[table-format = 2e+1,table-align-exponent=false]}
\multicolumn{1}{c}{centered in column but not aligned}\\
\toprule
10 & 10 \\
1e-4 & 1e-4 \\
5e-5 & 5e-5 \\
1e-5 & 1e-5 \\
\bottomrule
\end{tabular}
\end{document}