请考虑以下示例:
代码
\documentclass{article}
\usepackage{siunitx}
\usepackage{booktabs,dcolumn,array}
\begin{document}
\begin{table}
\centering
\begin{tabular}{l !{\quad} c c D{.}{.}{2.2} !{\quad} c c D{.}{.}{2.2}}
\toprule
\multicolumn{1}{c!{\quad}}{Times} & \multicolumn{3}{c!{\quad}}{RAAN} & \multicolumn{3}{c}{Dec}\\
\midrule
& \si{\hour} & \si{\minute} & \si{\s} & \ensuremath{^\circ} & \ensuremath{\prime} & \ensuremath{\prime\prime} \\
\midrule
11{:}40{:}28 & 00 & 03 & 45.48 & 18 & 40 & 03.78 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
为什么s
没有居中于上方45.48
并且\prime\prime
没有居中于上方03.78
以及我该如何实现这一点?
答案1
dcolumn
列将不带小数点的条目排列成.
整数,因此标题与列中小数点的位置右对齐。您可以使用\multicolumn{1}
为单元格提供不同的格式:
\documentclass{article}
\usepackage{siunitx}
\usepackage{booktabs,dcolumn,array}
\newcolumntype{d}[1]{D{.}{.}{#1}}
\begin{document}
\begin{table}
\centering
\caption{Something.}
\label{tbl:1}
\begin{tabular}{l !{\quad} c c D{.}{.}{2.2} !{\quad} c c D{.}{.}{2.2}}
\toprule
\multicolumn{1}{c!{\quad}}{Times} & \multicolumn{3}{c!{\quad}}{RAAN} & \multicolumn{3}{c}{Dec}\\
\midrule
& \si{\hour} & \si{\minute} & \multicolumn{1}{c !{\quad}}{\si{\s}} & \ensuremath{^\circ} & \ensuremath{\prime} & \multicolumn{1}{c}{\ensuremath{\prime\prime} }\\
\midrule
11{:}40{:}28 & 00 & 03 & 45.48 & 18 & 40 & 03.78 \\
\bottomrule
\end{tabular}
\end{table}
This is Table~\ref{tbl:1}.
\end{document}
顺便说一句,由于您siunitx
无论如何都要加载,因此您可能希望使用它的S
列而不是我的dcolumn
代码。
答案2
以下是具有以下特征的实现siunitx
:
\documentclass{article}
\usepackage{siunitx}
\usepackage{booktabs,array}
\begin{document}
\begin{table}
\centering
\begin{tabular}{
c
S[table-format=2.0,minimum-integer-digits=2]
S[table-format=2.0,minimum-integer-digits=2]
S[table-format=2.2,minimum-integer-digits=2]
S[table-format=2.0,minimum-integer-digits=2]
S[table-format=2.0,minimum-integer-digits=2]
S[table-format=2.2,minimum-integer-digits=2]
}
\toprule
Times & \multicolumn{3}{c}{RAAN} & \multicolumn{3}{c}{Dec}\\
\midrule
& \si{\hour} & \si{\minute} & \si{\s} & \si{\degree} & \si{\arcminute} & \si{\arcsecond} \\
\midrule
11{:}40{:}28 & 00 & 03 & 45.48 & 18 & 40 & 03.78 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
不必minimum-integer-digits=2
向每个列添加说明符,\sisetup{minimum-integer-digits=2}
可以在环境内部创建一个table
说明符,这样说明符之后就会消失。我只是写了一个说明符,并将其复制了五次,因此在输入时这不会造成太大的麻烦。
不同之处在于一列不需要设置,则应指定选项。如果所有S
列共享一个设置,则使用 可能会很方便\sisetup
。