我在一个表中显示两种类型的值(例如,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}
然后您可以替换 r
为D{.}{.}{-1}
以 a 为中心的列.
(还有其他选项,请参阅包文档)。siunitx
包S
列具有类似的功能。
\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}