如何将 r@{}l 列的值居中?(r@{}l 将所有列号沿小数点对齐)

如何将 r@{}l 列的值居中?(r@{}l 将所有列号沿小数点对齐)

写作

\documentclass{article}
\begin{document}
    \begin{table}
        \begin{tabular}{lr@{}lr@{}l}
            \hline
            & \multicolumn{2}{c}{First column} & \multicolumn{2}{c}{Second column}  \\  
            \hline
            Variable Name & 98 & .1234567 & 1234 & .56  \\
                          & (0 & .6789)   &  (54 & .3)  \\
            \hline
        \end{tabular}
    \end{table}
\end{document}

结果是

在此处输入图片描述

这是来自的代码的变体这个答案

\multicolumn{2}{c}{First column}由于和 ,列标题“第一列”和“第二列”完全居中\multicolumn{2}{c}{Second column}。但是,由于 ,数字是左对齐的,r@{}l但我想将它们居中在列标题下方。我尝试进行编辑,r@{}l但这没有帮助,因为必须保持这种方式才能使所有数字沿小数点对齐。

我选择这个解决方案是因为它不需要任何包并且该siunitx包在我的计算机上不起作用(我不知道为什么)。

那么,有没有一种方法可以在不使用包(或至少不使用siunitx)的情况下解决这个问题?

答案1

它适用于siunitx

\documentclass{article}
\usepackage{siunitx,booktabs}

\begin{document}

\begin{table}
\centering

\begin{tabular}{
  @{}
  l 
  S[table-format=2.7,input-digits=0123456789()]
  S[table-format=4.2,input-digits=0123456789()]
  @{}
}
\toprule
& \multicolumn{1}{@{}c}{First column} & \multicolumn{1}{c@{}}{Second column}  \\  
\midrule
Variable Name & 98.1234567 & 1234.56  \\
              & (0.6789)   &  (54.3)  \\
\bottomrule
\end{tabular}

\end{table}

\end{document}

在此处输入图片描述

我会调查为什么它siunitx不起作用。

您可能还会使用dcolumn

\documentclass{article}
\usepackage{dcolumn,booktabs}

\begin{document}

\begin{table}
\centering

\begin{tabular}{l D{.}{.}{2.7} D{.}{.}{4.2} }
\toprule
& \multicolumn{1}{c}{First column} & \multicolumn{1}{c}{Second column}  \\  
\midrule
Variable Name & 98.1234567 & 1234.56  \\
              & (0.6789)   &  (54.3)  \\
\bottomrule
\end{tabular}

\end{table}

\end{document}

在此处输入图片描述

答案2

看一下siunitx包,但这可能超出主题...因此,手动修复可能是\hspace{}在测试后向您希望居中的第一个原始数据的每个元素添加一个具有所选距离的命令:

\documentclass{article}
\begin{document}
    \begin{table}
        \begin{tabular}{lr@{}lr@{}l}
            \hline
            & \multicolumn{2}{c}{First column} & \multicolumn{2}{c}{Second column}  \\  
            \hline
            Variable Name & \hspace{0.05cm} 98 & .1234567 & \hspace{0.6cm}1234 & .56  \\
                          & (0 & .6789)   &  (54 & .3)  \\
            \hline
        \end{tabular}
    \end{table}
\end{document}

在此处输入图片描述

答案3

正如其他回答和评论中提到的,为什么不使用siunitxdcolumn包,该语法可以简单地编写与小数点对齐的十进制数。例如,siunitx当列标题中不需要多列单元格时:

\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}

\begin{document}
    \begin{table}
    \sisetup{input-symbols = ()}
\centering
\begin{tabular}{l S[table-format=2.7]
                  S[table-format=4.2]}
\toprule
                & {First column} & {Second column} \\
\midrule
Variable Name   & 98.123 456 7   & 1234.56  \\
                & (0.6789)       &  (54.3)  \\
\bottomrule
\end{tabular}
    \end{table}
\end{document}

在此处输入图片描述

相关内容