为何我的表格对齐不正确?

为何我的表格对齐不正确?

在此处输入图片描述

\documentclass[11pt, a4paper]{article}
\usepackage[left=3cm,right=3cm,top=1cm,bottom=2cm]{geometry}
\usepackage{booktabs}
\usepackage{siunitx}

\begin{document}
\begin{table}[h]
    \centering
\begin{tabular}{SS}
\toprule
{$i$}&{$e_i$} \\
\midrule
1&2\\
2&3\\
3&7\\
4&43\\
5&1807
\end{tabular}
\end{table}
\end{document}

有人能解释一下为什么这张表看起来这么不对齐吗?

答案1

您没有指定数字格式或指定默认值,因此siunitx默认值生效,如您在第一个表中看到的,如果您使用 2dp,则列位于标题下方的中心,在第二个表中我给出了siunitx提示

在此处输入图片描述

\documentclass[11pt, a4paper]{article}
\usepackage[left=3cm,right=3cm,top=1cm,bottom=2cm]{geometry}
\usepackage{booktabs}
\usepackage{siunitx}

\begin{document}
\begin{table}[h]
    \centering
\begin{tabular}{SS}
\toprule
{$i$}&{$e_i$} \\
\midrule
1.01&2.34\\
2.12&3.45\\
3.11&7.22\\
4.22&43.99\\
5.&1807
\end{tabular}

\bigskip

\begin{tabular}{S[table-format=1.0]S[table-format=4.0]}
\toprule
{$i$}&{$e_i$} \\
\midrule
1&2\\
2&3\\
3&7\\
4&43\\
5&1807
\end{tabular}
\end{table}
\end{document}

答案2

为了多样化,这里有一个使用 David Carlisle 的解决方案包而不是siunitx包本身。这并不意味着要以某种方式贬低siunitx包及其S列类型。只是siunitx包除了提供S列类型之外还做了很多事情。如果您只需要将数据列中的数字与其显式或隐式小数标记对齐,那么使用专门的dcolumn包可能同样能满足您的需求。

在此处输入图片描述

\documentclass[11pt,a4paper]{article}
\usepackage[left=3cm,right=3cm,top=1cm,bottom=2cm]{geometry}
\usepackage{booktabs}
% new code:
\usepackage{dcolumn}
\newcolumntype{d}[1]{D..{#1}}
\newcommand\mc[1]{\multicolumn{1}{@{}c@{}}{#1}} % handy shortcut macro

\begin{document}
\begin{table}[h]
\centering
$\begin{array}{@{}d{1.0}d{4.0}@{}}
\toprule
i & \mc{e_i} \\
\midrule
1&2\\
2&3\\
3&7\\
4&43\\
5&1807
\end{array}$
\end{table}
\end{document}

相关内容