请考虑以下 MWE:
\documentclass{article}
\usepackage{array}
\usepackage{siunitx}
\newcommand\mcp[1]{\multicolumn{1}{>{\centering\arraybackslash}p{22mm}}{\bfseries#1}}
\begin{document}
\begin{tabular}{c
*{4}{S[table-format=2.2,
table-space-text-post=\,\%]<{\,\%}}
}
\hline
& \mcp{AA} & \mcp{BB} & \mcp{AA} & \mcp{BB} \\
\hline
A1 & 0.12 & 0.12 & 0.12 & 0.12 \\
A2 & 0.19 & 0.19 & 0.21 & 0.21 \\
\hline
\end{tabular}
\end{document}
结果如下:
S
为什么最后一列的格式与之前其他列的格式不同?我是否遗漏了S
列选项中的某些内容?
答案1
这是有记录的情况(siunitx
手册,第 7.13 节):在这里使用低级\cr
:
\documentclass{article}
\usepackage{array}
\usepackage{siunitx}
\newcommand\mcp[1]{\multicolumn{1}{>{\centering\arraybackslash}p{22mm}}{\bfseries #1}}
\begin{document}
\begin{tabular}%{\linewidth}{
{ c
*{4}{S[table-format=2.2,
table-space-text-post=\,\%]<{\,\%}}
}
\hline
& \mcp{AA} & \mcp{BB} & \mcp{AA} & \mcp{BB} \cr
\hline
A1 & 0.12 & 0.12 & 0.12 & 0.12 \cr
A2 & 0.19 & 0.19 & 0.21 & 0.21 \cr
\hline
\end{tabular}
\end{document}
答案2
您可以使用虚拟列。我提供了表格的两种实现,第二种是tabular*
。
\documentclass{article}
\usepackage{array}
\usepackage{siunitx}
% use this if the headers are just one line long
%\newcommand\mcp[1]{%
% \multicolumn{1}{c}{\makebox[22mm]{\bfseries #1}}%
%}
\newcommand\mcp[1]{%
\multicolumn{1}{>{\centering}p{22mm}}{\bfseries #1}%
}
% for the second table
\newcommand{\tbh}[1]{\multicolumn{1}{c}{\bfseries #1}}
\begin{document}
\centering
\begin{tabular}{
c
*{4}{S[table-format=2.2,table-space-text-post=\,\%]<{\,\%}}
c@{}
}
\hline
& \mcp{AA} & \mcp{BB} & \mcp{AA} & \mcp{BB} & \tabularnewline
\hline
A1 & 0.12 & 0.12 & 0.12 & 0.12 & \\[2ex]
A2 & 0.19 & 0.19 & 0.21 & 0.21 & \\
\hline
\end{tabular}
\bigskip
\begin{tabular*}{\textwidth}{
@{\hspace{\tabcolsep}\extracolsep{\fill}}
c
*{4}{S[table-format=2.2,table-space-text-post=\,\%]<{\,\%}}
@{\extracolsep{0pt}}c@{\hspace{\tabcolsep}}
}
\hline
& \tbh{AA} & \tbh{BB} & \tbh{AA} & \tbh{BB} & \\
\hline
A1 & 0.12 & 0.12 & 0.12 & 0.12 & \\[2ex]
A2 & 0.19 & 0.19 & 0.21 & 0.21 & \\
\hline
\end{tabular*}
\end{document}