\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}