使用 siunitx 对齐表格数据的问题

使用 siunitx 对齐表格数据的问题

我正在尝试沿小数点对齐不同行中的数值数据。我一直在尝试使用 的列类型Ssiunitx我搜索并尝试了不同的方法,但尚未成功。这是我尝试过的 MWE:

    \documentclass{article}
    \usepackage{siunitx}
    \usepackage{makecell}
    % Commands to add space before and after a horizonal line
    \newcommand\Tstrut{\rule{0pt}{2.6ex}}       % = 'top' strut
    \newcommand\Bstrut{\rule[-0.9ex]{0pt}{0pt}} % = 'bottom' strut

    \begin{document}

    \begin{table}[!t]
    \caption{My Table Example.}
    \label{example}
    \centering

    % I use column type S for columns 2 and 3. Columns 1 and 4 use c.
    \begin{tabular}{cS[table-format=2.2]S[table-format=2.2]c}
    \Xhline{0.8pt}  

    This is & {This is} & {This is} & Here is \\
    Column 1 & {Column 2} & {Column 3} & Column 4\\
    \Xhline{0.8pt}

    {$A_1$} & {1.02} & {$10.54$} & {$0.45$} \Tstrut\Bstrut\\
    \hline
    {$A_2$} & {43.23} & {$-3.62$} & {$-0.32$} \Tstrut\Bstrut\\
    \hline
    {$A_3$} & {1.30}  & {$7.68$} & {$-5.85$} \Tstrut\Bstrut\\
    \Xhline{0.8pt}

    \end{tabular}
    \end{table}
    \end{document}

编译成功。但是,S使用类型的第 2 列和第 3 列中的数据仍然未在小数点附近对齐。输出如下:

编译后的输出

我将非常感谢任何提示和建议。

问候

A。

答案1

您需要摆脱不必要的、事实上具有破坏性的用S花括号括住列中数字的方式。同时,也请摆脱-type 列$中的符号S

在此处输入图片描述

\documentclass{article}
\usepackage{siunitx}  % for 'S' column type
\usepackage{booktabs} % for well-spaced horizontal rules

% Commands to add space before and after an \hline
\newcommand\Tstrut{\rule{0pt}{2.6ex}}       %'top' strut
\newcommand\Bstrut{\rule[-0.9ex]{0pt}{0pt}} %'bottom' strut
\newcommand\TBstrut{\Tstrut\Bstrut} % top and bottom strut

\begin{document}

\begin{table}[!t]
\caption{My Table Example.}
\label{example}
\centering

\begin{tabular}{@{} c S[table-format= 2.2]
                      S[table-format= 2.2]
                      S[table-format=-1.2] @{}}
\toprule 
This is  & {This is}  & {This is}  & {This is} \\
Column 1 & {Column 2} & {Column 3} & {Column 4}\\
\midrule
$A_1$ &  1.02 & 10.54 &  0.45 \Bstrut  \\
\hline
$A_2$ & 43.23 & -3.62 & -0.32 \TBstrut \\
\hline
$A_3$ &  1.30 &  7.68 & -5.85 \Tstrut  \\
\bottomrule
\end{tabular}
\end{table}
\end{document}

答案2

我会使用\thead列标题,而不是两行。您的S列未在小数点上对齐,因为您的数字被括号包围,这意味着它们是普通数据,必须居中。我添加了caption包以使标题和表格之间的间距更合理。

booktabs如果您使用 中的规则(包括一些上下填充),则不需要支撑命令。无论如何,bigstrut附带的包中已经有这样的支撑命令multirow,并且单个命令可以添加一些高度和一些深度。

\documentclass{article}
\usepackage{siunitx}
\usepackage{makecell, caption, booktabs}
\renewcommand{\theadfont}{\normalsize}
\begin{document}

\begin{table}[!t]
\caption{My Table Example.}
\label{example}
\centering

\begin{tabular}{cS[table-format=2.2]S[table-format=-1.2]c}
\toprule
\thead{This is \\ Column 1}& {\thead{This is \\Column 2}} & {\thead{This is \\ Column 3}} & \thead{Here is \\Column 4} \\
\midrule[0.8pt]
{$A_1$} & 1.02 & 10.54 & {$0.45$} \\
\midrule
{$A_2$} & 43.23 & -3.62 & {$-0.32$} \\
\midrule
{$A_3$} & 1.30 & 7.68 & {$-5.85$} \\
\bottomrule
\end{tabular}
\end{table}

\end{document} 

在此处输入图片描述

相关内容