我制作了一个有 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}