我想创建一个多列表格,其中数字在小数点处垂直对齐,因此我使用了 dcolumn 包。我的一些数字带有负号。对于每隔一列,我的代码可以完美运行,但对于其他列则不行。有人能找出我做错了什么吗?我是否将命令放在了D{.}{.}{-1}
正确的位置?我的\textwidth
命令看起来有点复杂,但我在此处发布的表格只是一个非常大的多列表的一小部分,我需要指定每列的宽度才能使其适合一页。
\documentclass[11pt,a4paper,twoside]{article}
\usepackage{dcolumn}
\usepackage{booktabs}
\begin{document}
\begin{table}[!htp]
\begin{tabularx}{\textwidth}
{p{0.3\textwidth}
p{0.05\textwidth}D{.}{.}{-1}
p{0.05\textwidth}D{.}{.}{-1}
p{0.05\textwidth}D{.}{.}{-1}
p{0.05\textwidth}D{.}{.}{-1}
p{0.05\textwidth}D{.}{.}{-1}
p{0.05\textwidth}D{.}{.}{-1}
}
\addlinespace \toprule[0.5pt] \addlinespace
\multicolumn{1}{l}{\textbf{Position}} & \multicolumn{6}{c}{\textbf{Model1}}\\
& \multicolumn{2}{l}{82m Mast} & \multicolumn{2}{l}{SODAR 1}& \multicolumn{2}{l}{SODAR 2} \\
& m/s & \% & m/s & \% & m/s & \% \\
\addlinespace \midrule \addlinespace
Mast 1 & 0.0 & 0.0 & -0.3 & -7.4 & -0.3 & -8.4 \\
SODAR 1 & 0.4 & 7.8 & 0.0 & 0.0 & 0.1 & 1.3 \\
SODAR 2 & 0.3 & 7.8 & 0.0 & 0.0 & 0.0 & 0.0 \\
Mast 2 & -0.1 & -2.5 & -0.4 & -10.8 & -0.5 & -12.5 \\
\addlinespace \bottomrule[0.5pt] \addlinespace
\end{tabularx}
\end{table}
\end{document}
答案1
我认为你没有很好地理解列D
是……列说明符。照这样看,你的表有 13 列。我建议你删除这些\p{0.05\textwidth}
列,并使用X
第一列的类型。你还应该将\multicolumn
s 居中。以下是代码:
\documentclass[11pt,a4paper,twoside]{article}
\usepackage{amsmath}
\usepackage{dcolumn}
\usepackage{booktabs, tabularx}
\begin{document}
\begin{table}[!htp]
\label{tab:troistorrents_differences}
\begin{tabularx}{\textwidth}
{X
D{.}{.}{-1}
D{.}{.}{-1}
D{.}{.}{-1}
D{.}{.}{-1}
D{.}{.}{-1}
D{.}{.}{-1}
}
\toprule[0.5pt]
\multicolumn{1}{l}{\textbf{Position}} & \multicolumn{6}{c}{\textbf{Model 1}}\\
\addlinespace
& \multicolumn{2}{c}{82m Mast} & \multicolumn{2}{c}{SODAR 1}& \multicolumn{2}{c}{SODAR 2} \\
& \multicolumn{1}{c}{m/s} & \multicolumn{1}{c}{\%} & \multicolumn{1}{c}{m/s} & \multicolumn{1}{c}{\%} & \multicolumn{1}{c}{m/s }& \multicolumn{1}{c}{\%} \\
\midrule
\addlinespace[0.75ex]
Mast 1 & 0.0 & 0.0 & -0.3 & -7.4 & -0.3 & -8.4 \\
SODAR 1 & 0.4 & 7.8 & 0.0 & 0.0 & 0.1 & 1.3 \\
SODAR 2 & 0.3 & 7.8 & 0.0 & 0.0 & 0.0 & 0.0 \\
Mast 2 & -0.1 & -2.5 & -0.4 & -10.8 & -0.5 & -12.5 \\
\bottomrule[0.5pt]
\end{tabularx}
\end{table}
\end{document}
答案2
您可以使用siunitx
它来更轻松地进行微调
\documentclass[11pt,a4paper,twoside]{article}
\usepackage{siunitx}
\usepackage{booktabs}
\begin{document}
\begin{table}[!htp]
\begin{tabular}{
l
S[table-format=-1.1]
S[table-format=-1.1]
S[table-format=-1.1]
S[table-format=-2.1]
S[table-format=-1.1]
S[table-format=-2.1]
}
\toprule
\textbf{Position} & \multicolumn{6}{c}{\textbf{Model1}} \\
\cmidrule(lr){2-7}
& \multicolumn{2}{c}{\SI{82}{m} Mast}
& \multicolumn{2}{c}{SODAR 1}
& \multicolumn{2}{c}{SODAR 2} \\
& {\si{m/s}} & {\%} & {\si{m/s}} & {\%} & {\si{m/s}} & {\%} \\
\midrule
Mast 1 & 0.0 & 0.0 & -0.3 & -7.4 & -0.3 & -8.4 \\
SODAR 1 & 0.4 & 7.8 & 0.0 & 0.0 & 0.1 & 1.3 \\
SODAR 2 & 0.3 & 7.8 & 0.0 & 0.0 & 0.0 & 0.0 \\
Mast 2 & -0.1 & -2.5 & -0.4 & -10.8 & -0.5 & -12.5 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}