我想将两个不同行中的两个数字的小数点对齐。
我确实在这里看到了相关链接: 按表格列中的小数点对齐数字
但是,我不知道如何将其合并到我的代码中。以下是我的代码的简化版本。
\documentclass[12pt,english]{article}
\usepackage{longtable}
\usepackage{fullpage}
\usepackage{times}
\usepackage[flushleft]{threeparttable}
\usepackage[font=large,labelfont=bf,tableposition=top,textfont=bf]{caption}
\usepackage{tabularx}
\usepackage{booktabs}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}
\clearpage \newpage
\begin{table}[!ht]
\caption{Table Title}
\def\arraystretch{1.05}
\vspace{-0.2cm}
\begin{threeparttable}
\small
\begin{tabularx}{\textwidth}{l*{10}{C}}
\hline \hline \addlinespace
& (1) \\
Variable Name & 0.1234566 \\
& (0.1234566) \\
\hline \hline \addlinespace
\end{tabularx}
\begin{tablenotes}
\vspace{0.1cm}
\footnotesize{
\item \noindent \hspace{-1.8mm} Notes:
\noindent Sources:
}
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}
答案1
除了尝试dcolumn
@DavidCarlisle 提到的包,你可能还想看看siunitx
包,具体来说,它的S
列类型。我简化了你的(不完全是最小)工作示例到下面的示例代码中,以便重点关注此列类型的操作:
\documentclass[12pt]{article}
\usepackage{booktabs,mathptmx,siunitx}
\sisetup{input-symbols = {()}, % do not treat "(" and ")" in any special way
group-digits = false} % no grouping of digits
\begin{document}
\begin{table}
\begin{tabular}{@{}l S[table-format=2.7] S[table-format=4.2] @{}}
\toprule
& \multicolumn{1}{c}{(1)} & \multicolumn{1}{c@{}}{(2)} \\
\midrule
Variable Name & 98.1234567 & 1234.56 \\
& (0.6789) & (54.3)\\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案2
看起来你tabularx
根本不想要,只需使用一个tabular
带有D
列的普通列作为你的数字列,也许定义为
\newcolumntype{.}{D{.}{.}{-1}}
使用该dcolumn
包。
为了完整性,完整的例子:
\documentclass[12pt]{article}
\usepackage{booktabs,dcolumn}
\begin{document}
\begin{table}
\begin{tabular}{@{}l*{2}{D{.}{.}{7}}@{}}
\toprule
& (1) & (2) \\
\midrule
Variable Name & 98.1234567 & 1234.56 \\
& (0.6789) & (54.3)\\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案3
我想添加我的答案,因为它不使用任何其他包(尽管我认为使用dcolumn
是最简单的解决方案)。您可以做的是将每个数字列分成两列,一列用于横坐标(小数点左侧),一列用于纵坐标(右侧)。然后,右对齐第一列,左对齐第二列,并用挤压它们之间的空间@{}
。
具体来说,这是您链接的问题中的选项 1。
我认为适当的最小解决方案是
\documentclass{article}
\begin{document}
\begin{table}
\begin{tabular}{lr@{}lr@{}l}
\hline
& \multicolumn{2}{c}{(1)} & \multicolumn{2}{c}{(2)} \\
\hline
Variable Name & 98 & .1234567 & 1234 & .56 \\
& (0 & .6789) & (54 & .3) \\
\hline
\end{tabular}
\end{table}
\end{document}
答案4
如果您没有太多条目(或者您不介意自动将一段文本替换到每一行),一个简单的解决方法是使用 padding \phantom{}
(其效果是占用其参数所占用的空间,但不会显示任何内容)。例如:
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{rrr}
& (1) & (2) \\
\midrule
Variable Name & 98.1234567 & 1234.56 \\
& (0.6789)\phantom{67} & (54.3) \\
\bottomrule
\end{tabular}
\end{document}