在多列环境中正确对齐列

在多列环境中正确对齐列

我有下表:

\documentclass[a4paper,11pt]{report}

\usepackage[english]{babel}
\usepackage{booktabs}

\begin{document}

   \begin{tabular}{|cc|ccc|}    
    \hline    
    \multicolumn{2}{|c|}{Parameters} & \multicolumn{3}{|c|}{This is some long text about precision and recall}\\    
    \hline    
    n & p &S& P & R\\    
    \hline    
    3000 & 0.5 & 3000 & 0.01 & 1.00\\
    3000 & 0.1 & 3000 & 0.01 & 1.00\\
    3000 & 0.008 & 30 & 1.00 & 1.00\\
    \hline
    \end{tabular}

\end{document}

在此处输入图片描述

如您所见,变量 S、P 和 R 未正确对齐。我希望它们各自占用相同的空间。我该怎么做?

答案1

这是一种可能的情况,其中每列都由样式定义P(因此array需要包),其中假设为 2cm;然后 3 列的宽度由dimexpr6cm 从 3 x 2cm 中得出的位置决定。

更新:OP 尝试了m{1cm},所以 6cm 应该改为 3cm。

在此处输入图片描述

代码

\documentclass[border=5pt]{standalone}%[a4paper,11pt]{report}

\usepackage[english]{babel}
\usepackage{booktabs,array,multirow}

\newcolumntype{M}{>{\centering\arraybackslash}m{1cm}}
\newcolumntype{P}{>{\raggedright\arraybackslash}p{2cm}}

\begin{document}

   \begin{tabular}{|cc|*{3}{M}|}    
    \hline    
    \multicolumn{2}{|c|}{\multirow{2}{*} {Parameters}} & \multicolumn{3}{p{\dimexpr 3cm+2\arrayrulewidth+4\tabcolsep\relax}|}{This is some long text about precision and recall}\\    
    \hline    
    n & p &S& P & R\\    
    \hline    
    3000 & 0.5 & 3000 & 0.01 & 1.00\\
    3000 & 0.1 & 3000 & 0.01 & 1.00\\
    3000 & 0.008 & 30 & 1.00 & 1.00\\
    \hline
    \end{tabular}

\end{document}

因此,如果假设 S、P、R 列为 3cm,则应将 6cm 更改为 9cm。

在此处输入图片描述

代码

\documentclass[border=5pt]{standalone}%[a4paper,11pt]{report}

\usepackage[english]{babel}
\usepackage{booktabs,array}


\newcolumntype{P}{>{\raggedright\arraybackslash}p{2cm}}

\begin{document}

   \begin{tabular}{|cc|*{3}{P}|}    
    \hline    
    \multicolumn{2}{|c|}{Parameters} & \multicolumn{3}{p{\dimexpr 6cm+2\arrayrulewidth+4\tabcolsep\relax}|}{This is some long text about precision and recall}\\    
    \hline    
    n & p &S& P & R\\    
    \hline    
    3000 & 0.5 & 3000 & 0.01 & 1.00\\
    3000 & 0.1 & 3000 & 0.01 & 1.00\\
    3000 & 0.008 & 30 & 1.00 & 1.00\\
    \hline
    \end{tabular}

\end{document}

答案2

我是这样实现它的:

\documentclass[a4paper,11pt]{report}

\usepackage[english]{babel}
\usepackage{array}
\usepackage{booktabs}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}

\begin{document}
   \begin{tabular}{C{1.5cm}C{1.5cm}C{2.5cm}C{2.5cm}C{2.5cm}}    
    \toprule    
    \multicolumn{2}{c}{Parameters} & \multicolumn{3}{c}{This is some long text about precision and recall}\\    
    \midrule    
    n & p & S& P & R\\    
    \midrule    
    3000 & 0.5 & 3000 & 0.01 & 1.00\\
    3000 & 0.1 & 3000 & 0.01 & 1.00\\
    3000 & 0.008 & 30 & 1.00 & 1.00\\
    \bottomrule
    \end{tabular}
\end{document}

在此处输入图片描述

相关内容