表格对齐

表格对齐

请考虑以下示例:

代码

\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

在此处输入图片描述

相关内容