如何垂直对齐表格中的“数字”?

如何垂直对齐表格中的“数字”?

我在一个表中显示两种类型的值(例如,A 和 B)。这些值是在 R 中生成的,我会自动创建类似“A (B)”的字符串,因此所有 B 类型的值都放在括号中并附加到 A 的值中。从结果表中可以看出,间距不太正确,这取决于 B 的位数:

\documentclass{article}

\usepackage{tabularx}
\usepackage{booktabs}

\begin{document}
\begin{tabular}{rr}
  \toprule
   27.8 ( 2.8) &  38.4 ( 3.1)\\
  126.8 (10.3) & 171.9 (11.2)\\
  \bottomrule
\end{tabular}
\end{document}

我想知道有什么好方法可以解决这个问题?

一种选择是检查 B 的数字位数并\phantom{0} 相应地添加,或者\ \,也这样做。但我感兴趣的是,是否有可能在不使用“黑客”的情况下对齐数字。理想情况下,我希望保持数字原样(例如,能够轻松地在非 LaTeX 文档中使用相同的表格)。

理论上,解决方案可能是根据两个点对齐数字(例如alignat与 相比的环境align)。但我不确定是否可以做到这一点(使用siunitx(?))

是我在这个主题上发现的,但添加~像上面那样(因此需要调整表格条目)和等宽字体...嗯......看起来不太优雅。

更新

David 发帖后的审判:

\documentclass{article}

\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{dcolumn}
\usepackage{siunitx}

\begin{document}

With \texttt{dcolumn}:
\par\medskip
\begin{tabular}{rD{.}{.}{-1}}
  \toprule
   27.8 &  38.4 (2.3)\\
  126.8 & 171.9 (29.1)\\
  \bottomrule
\end{tabular}
\par\bigskip
With \texttt{siunitx}:
\par\medskip
\begin{tabular}{S
                S}
  \toprule
   27.8 &  38.4(3)\\
  126.8 & 171.9(1)\\
  \bottomrule
\end{tabular}
\par\bigskip
How it should look like:
\par\medskip
\begin{tabular}{rr}
  \toprule
   27.8 &  38.4 (\ \,2.3)\\
  126.8 & 171.9 (29.1)\\
  \bottomrule
\end{tabular}

\end{document}

答案1

添加\usepackage{dcolumn} 然后您可以替换 rD{.}{.}{-1}以 a 为中心的列. (还有其他选项,请参阅包文档)。siunitxS列具有类似的功能。

在此处输入图片描述

\documentclass{article}

\usepackage{booktabs}
\usepackage{dcolumn}


\begin{document}


\begin{tabular}{
D{.}{.}{3.2} 
D{.}{.}{3.1} @{\,}
D{.}{.}{3.2} 
 }
  \toprule
   27.8 &  38.4 &(2.3)\\
  126.8 & 171.9 &(29.1)\\
  \bottomrule
\end{tabular}

\end{document}

或者这个版本不需要额外的&

在此处输入图片描述

\documentclass{article}

\usepackage{booktabs}
\usepackage{dcolumn}

\makeatletter
\newcolumntype{E}{>{\DDC}c}
\def\DDC#1(#2){\DC@..{3.2}#1\DC@end\,(\DC@..{2.1}#2\DC@end)}
\makeatother
\begin{document}


\begin{tabular}{
D{.}{.}{3.2} 
E
 }
  \toprule
   27.8 &  38.4 (2.3)\\
  126.8 & 171.9 (29.1)\\
  \bottomrule
\end{tabular}

\end{document}

含颜色:

在此处输入图片描述

\documentclass{article}

\usepackage{booktabs}
\usepackage{dcolumn,color}

\makeatletter

\newcolumntype{E}{>{\myDDC}c}
\def\myDDC\ignorespaces{\@ifnextchar!{\color{red}\@myDDC\@gobble}{\@myDDC}}
\def\@myDDC#1(#2){\DC@..{3.2}#1\DC@end\,(\DC@..{2.1}#2\DC@end)}

\newcolumntype{F}{>{\myDC}c<{\DC@end}}
\def\myDC\ignorespaces{\@ifnextchar!{\color{red}\@myDC\@gobble}{\@myDC}}
\def\@myDC{\DC@..{3.2}}

\makeatother
\begin{document}


\begin{tabular}{FE}
  \toprule
   27.8 & !38.4 (2.3)\\
  !126.8 & 171.9 (29.1)\\
  \bottomrule
\end{tabular}

\end{document}

答案2

您是否考虑过为您的表格采用等宽字体?

\documentclass{article}

\usepackage{tabularx}
\usepackage{booktabs}

\begin{document}

\texttt{
\begin{tabular}{rr}
  \toprule
   27.8 ( 2.8) &  38.4 ( 3.1)\\
  126.8 (10.3) & 171.9 (11.2)\\
  \bottomrule
\end{tabular}
}

\end{document}

相关内容