在 tabularx 中对齐小数点的位置

在 tabularx 中对齐小数点的位置

我制作了一个有 5 列的表格,其中最后 4 列的宽度相同。因此有人告诉我应该使用tabluarx。使用这个包,我的输出看起来不错,但最后 4 列中也有数字,与百分比值混合。我想先调整到小数点,然后使列宽相等。有没有现成的包可以做到这一点?如果不行,有人能告诉我只对齐小数点的解决方案吗?我无法使用来解决这个问题siunitx,因为我的表格中也有文本(主要是第一列)。

感谢您的帮助。以下是 MWE:

\documentclass[a4paper, 12pt]{scrreprt}
\usepackage{setspace}
\usepackage{booktabs}
\usepackage{floatrow}
\floatsetup[table]{capposition=top}
\usepackage{tabularx}
\newcolumntype{Y}{>{\centering\arraybackslash}X}

\begin{document}

\begin{table}[htpb]
\begin{tabularx}{0.85\textwidth}{lYcYcYcYcY}
    \toprule
    \multicolumn{1}{l}{Test 1} & \multicolumn{2}{c}{Test 2} & \multicolumn{2}{c}{Test 3} \\
    Observations successfull & no & yes  & maybe & no  \\
    adsadad & 546546.546 & 45.646 & 45.646 & 456.456 \\
    \% AAA & 235.25\% & 2525\% & 2342.34\% & 234.2525\% \\
    \% BBB & 0.0029 & N/A & 0.0031 & N/A \\
    \% CCC & 0.0033 & N/A & 0.0031 & N/A \\
    \bottomrule

\end{tabularx}
\end{table}

\end{document}

让我知道。

答案1

在此处输入图片描述

\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 & 45.646 & 45.646 & 456.456 \\
    \% AAA & 235.25\% & 2525\% & 2342.34\% & 234.2525\% \\
    \% BBB & 0.0029 & \multicolumn{1}{c}{N/A} & 0.0031 & \multicolumn{1}{c}{N/A} \\
    \% CCC & 0.0033 & \multicolumn{1}{c}{N/A} & 0.0031 & \multicolumn{1}{c}{N/A} \\
    \bottomrule

\end{tabular}
\end{table}

\end{document}

答案2

这种方法是一种完全替代方法,使用正在进行的tabstackengine根据最宽的列编写具有等间距列的表格。事实上,\kern我的解决方案是因为仍然存在某种间距问题,我需要找到并消除它。

但我还是很感谢你给我机会在实际问题上测试这个软件包。我已经确认取消注释下面被删除的软件包不会影响结果。

\documentclass[a4paper, 12pt]{scrreprt}
%\usepackage{setspace}
%\usepackage{booktabs}
%\usepackage{floatrow}
%\floatsetup[table]{capposition=top}
%\usepackage{tabularx}
\usepackage{tabstackengine}
\strutlongstacks{T}
\begin{document}
\setbox0=\hbox{\alignLongstack{
&Test1 &&\rlap{~~~Test2}&&&&\rlap{~~~Tests3}&&&\\
&Observations successful & no&   & ye&s    & may&be & no&\\
& adsadad& 546546.&546 & 45.&646 & 45.&646   & 456.&456\\
&\% AAA  & 235.&25\%   & 2525&\% & 2342.&34\% & 234.&2525\%\\
&\% BBB  & 0.&0029     &     N/&A  & 0.&0031 & N/&A\\
&\% CCC  & 0.&0033     &     N/&A  & 0.&0031 & N/&A   
}}
\begin{tabular}{c}
\hline
\box0\kern-1.5\tabcolsep\\
\hline
\end{tabular}
\end{document}

在此处输入图片描述

\alignLongstack如果制表符和行尾符发生变化(从&\\),并且长堆叠间隙是根据实际距离而不是 来定义的,则可以将 直接放置在表格本身内,\baselineskip因为tabular显然会改变值。

\documentclass[a4paper, 12pt]{scrreprt}
\usepackage{tabstackengine}
\strutlongstacks{T}
\begin{document}
\setstackTAB{\&}
\setstackEOL{*}
\setstackgap{L}{2.7ex}
\begin{tabular}{c}
\hline
\alignLongstack{
\&Test1 \&\&\rlap{~~~Test2}\&\&\&\&\rlap{~~~Tests3}\&\&\&*
\&Observations successful \& no\&   \& ye\&s    \& may\&be \& no\&*
\& adsadad\& 546546.\&546 \& 45.\&646 \& 45.\&646   \& 456.\&456*
\&\% AAA  \& 235.\&25\%   \& 2525\&\% \& 2342.\&34\% \& 234.\&2525\%*
\&\% BBB  \& 0.\&0029     \&     N/\&A  \& 0.\&0031 \& N/\&A*
\&\% CCC  \& 0.\&0033     \&     N/\&A  \& 0.\&0031 \& N/\&A  
}\\
\hline
\end{tabular}
\end{document}

相关内容