![使用 siunitx 将每个单元格有两位小数的列对齐](https://linux22.com/image/394521/%E4%BD%BF%E7%94%A8%20siunitx%20%E5%B0%86%E6%AF%8F%E4%B8%AA%E5%8D%95%E5%85%83%E6%A0%BC%E6%9C%89%E4%B8%A4%E4%BD%8D%E5%B0%8F%E6%95%B0%E7%9A%84%E5%88%97%E5%AF%B9%E9%BD%90.png)
我也想对齐第二列。问题是,一个单元格中不能有两个数字。有没有办法通过数字对齐第二列,即使小数位更多?我还使用了 input-ignore 选项来忽略逗号
\usepackage{tabular}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{@{}
S[table-format=1.2]
l
@{}}
{Radius} & {Luminosity}\\
0.30 & [-195.728, 213.571] \\
0.000 & [-2465.825, -1234.722] \\
0.648 & [-35.587, 22.432] \\
\end{tabular}
\end{document}
答案1
您可以分成两列并注入括号:
\documentclass{article}
\usepackage{siunitx,booktabs}
\NewDocumentCommand{\lbr}{}{[\thinspace}
\NewDocumentCommand{\rbr}{}{]}
\begin{document}
\begin{tabular}{
S[table-format=1.3]
>{\lbr}S[table-format=-4.3,table-space-text-pre=\lbr]
@{, }
S[table-format=-4.3,table-space-text-post=\rbr]<{\rbr}
}
\toprule
{Radius} & \multicolumn{2}{c}{Luminosity}\\
\midrule
0.30 & -195.728 & 213.571 \\
0.000 & -2465.825 & -1234.722 \\
0.648 & -35.587 & 22.432 \\
\bottomrule
\end{tabular}
\end{document}
最后一点说明:\NewDocumentCommand
由 提供xparse
,由 加载siunitx
。使用它,\lbr
将成为“受保护”的命令,因此它可以用作列中的“text-pre” S
。
答案2
将其分成两列:
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{@{}
S[table-format=1.3]
@{\space[\thinspace}
S[table-format=-4.3]
@{,\space}
S[table-format=-4.3]
@{\thinspace]}
@{}}
\multicolumn{1}{c}{Radius} & \multicolumn{2}{c}{Luminosity}\\
0.30 & -195.728 & 213.571 \\
0.000 & -2465.825 & -1234.722 \\
0.648 & -35.587 & 22.432 \\
\end{tabular}
\end{document}
答案3
变体布局:
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\setlength{\extrarowheight}{2pt}
\begin{tabular}{@{}
S[table-format=1.3]
>{[\,}S[table-format=-4.3, table-space-text-pre = {[}, table-align-text-pre=false]<{{,}}
@{\enspace}
S[table-format=-4.3, table-space-text-post ={]}]
<{$\!$]}
@{}}
{Radius} & \multicolumn{2}{c}{Luminosity}\\
0.30 & -195.728 & 213.571 \\
0.000 & -2465.825 & -1234.722 \\
0.648 & -35.587 & 22.432 \\
\end{tabular}
\end{document}