我今天问过类似问题,MWE 回答了 David C.,但这是一个更难的后续问题。另外,我刚刚注册了一个新帐户 :)
问题很简单:我希望数字与小数点对齐,并且如果某一列中没有小数点,则以另一种好的方式对齐它们。
在下面的 MWE 中,您将看到问题。值 0 直接位于 0% 上方;但问题是“0%”的“%”位于“0”正下方,因此“0%”实际上比它应该的位置靠左。您可能希望 0 位于另一个 0 正下方,而 % 位于右边一个位置。
因此,我想将所有值对齐到小数点,但如果某一列中没有小数点,例如以下 MWE 的第 3 列,则必须进行另一种对齐。我希望我已经充分描述了这个问题。如果没有,只需查看 MWE 的输出并检查 % 单位的位置。第一列没问题,但第二列错误。
另外请告诉我列的宽度是否可以调整。
这是 MWE。(请注意,我们有意混合使用 % 和十进制符号。在我的最终表格的某些行中,我将使用 %,而在其他行中则不会使用)
\documentclass[a4paper, 12pt]{scrreprt}
\usepackage{setspace}
\usepackage{booktabs}
\usepackage{floatrow}
\floatsetup[table]{capposition=top}
\usepackage{dcolumn}
\newcolumntype{Y}{D..{6.4}}
\begin{document}
\begin{table}[htpb]
\begin{tabular}{lYYYY}
\toprule
\multicolumn{1}{l}{Test 1} & \multicolumn{2}{c}{Test 2} & \multicolumn{2}{c}{Test 3} \\
Observations successful &
\multicolumn{1}{c}{no} &
\multicolumn{1}{c}{yes} &
\multicolumn{1}{c}{maybe} &
\multicolumn{1}{c}{no} \\
adsadad & 546546.546 & 4646 & 45.646 & 456.456 \\
AAA & 235.25\% & 22\% & 232.34\% & 234.25\% \\
CCC3 & 0.0033 & 0 & 0.0031 & 23 \\
CCC4 & 0.0033 & 0\% & 0.0031 & 0 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案1
可能最好使用siunitx
;\sisetup
由于命令出现在环境中,因此设置将是该表的本地设置table
。
\documentclass[a4paper,12pt]{scrreprt}
\usepackage{booktabs}
\usepackage{siunitx}
\begin{document}
\begin{table}[htpb]
\sisetup{
table-space-text-post=\%, % leave space for a ‘%’
table-align-text-post=false, % push ‘%’ next to the number
}
\centering
\begin{tabular}{
l
S[table-format=6.4] % six integer digits, four decimal ones
S[table-format=4.0]
S[table-format=3.4]
S[table-format=3.3]
}
\toprule
\multicolumn{1}{l}{Test 1} & \multicolumn{2}{c}{Test 2} & \multicolumn{2}{c}{Test 3} \\
\cmidrule{1-1}\cmidrule(lr){2-3}\cmidrule(l){4-5}
Observations successful &
\multicolumn{1}{c}{no} &
\multicolumn{1}{c}{yes} &
\multicolumn{1}{c}{maybe} &
\multicolumn{1}{c}{no} \\
\midrule
adsadad & 546546.546 & 4646 & 45.646 & 456.456 \\
\% AAA & 235.25\% & 22\% & 232.34\% & 234.25\% \\
\% CCC3 & 0.0033 & 0 & 0.0031 & 23 \\
\% CCC4 & 0.0033 & 0\% & 0.0031 & 0 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案2
\documentclass[a4paper, 12pt]{scrreprt}
\usepackage{setspace}
\usepackage{booktabs}
\usepackage{floatrow}
\floatsetup[table]{capposition=top}
\usepackage{dcolumn}
\newcolumntype{Y}{D..{6.4}}
\newcommand\pct{\rlap{$\%$}}
\begin{document}
\begin{table}[htpb]
\begin{tabular}{lYYYY}
\toprule
\multicolumn{1}{l}{Test 1} & \multicolumn{2}{c}{Test 2} & \multicolumn{2}{c}{Test 3} \\
Observations successful &
\multicolumn{1}{c}{no} &
\multicolumn{1}{c}{yes} &
\multicolumn{1}{c}{maybe} &
\multicolumn{1}{c}{no} \\
adsadad & 546546.546 & 4646 & 45.646 & 456.456 \\
AAA & 235.25\pct & 22\pct & 232.34\pct & 234.25\pct \\
CCC3 & 0.0033 & 0 & 0.0031 & 23 \\
CCC4 & 0.0033 & 0\pct & 0.0031 & 0 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}