使用 siunitx 将每个单元格有两位小数的列对齐

使用 siunitx 将每个单元格有两位小数的列对齐

我也想对齐第二列。问题是,一个单元格中不能有两个数字。有没有办法通过数字对齐第二列,即使小数位更多?我还使用了 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} 

在此处输入图片描述

相关内容