具有连续垂直线的多列表格

具有连续垂直线的多列表格

在此处输入图片描述

我想在 latex 中创建这种类型的表格。我所做的如下

\begin{tabular}{c|ccccc|ccccc|ccccc}
 \toprule
  &&& Edge count &&&&& Wedge count &&&&& Triangle count &&\\
 \hline
 $p$ &&  \Romannum{1} &  \Romannum{2} &  \Romannum{3} &&& \Romannum{1}  & \Romannum{2} & \Romannum{3} &&& \Romannum{1} & \Romannum{2} & \Romannum{3} &\\
 \hline
 $0.025$ &&     0 & 0 & 0 &&& 0 & 3 & 1 &&& 0 & 1 & 2 &\\
 $0.100$ && 2 & 0 & 1 &&& 0 &     0 & 0 &&& 1 & 0 & 1 &\\
 $0.250$ && 2 & 1 & 0 &&& 1 & 2 & 0 &&& 0 & 0 &     0 &\\
 \bottomrule
 \end{tabular}

无法获取乳胶代码中每个数字下的括号数量。

答案1

您的表根据需要定义了更多列。例如:

\documentclass[margin=3mm]{standalone}
\usepackage{array, booktabs}
\usepackage[Most]{romannum}

\begin{document}
\begin{tabular}{c| *3{wc{2em}} | *3{wc{2em}} | *3{wc{2em}} }   
    \toprule
                &   \multicolumn{3}{c|}{Edge count}
                    &   \multicolumn{3}{c|}{Wedge count} 
                        &   \multicolumn{3}{c}{Triangle count}   \\
    \cline{2-10}
 $p$            &   \Romannum{1} 
                    &  \Romannum{2} 
                        &  \Romannum{3} 
                &   \Romannum{1}
                    &  \Romannum{2}
                        &  \Romannum{3} 
                 &   \Romannum{1}
                    &  \Romannum{2}
                        &  \Romannum{3} \\
     \hline
  0.025     & 0 & 0 & 0 & 0 & 3 & 1 & 0 & 1 & 2 \\
  0.100    & 2 & 0 & 1 & 0 & 0 & 0 & 1 & 0 & 1 \\
  0.250    & 2 & 1 & 0 & 1 & 2 & 0 & 0 & 0 & 0 \\
    \bottomrule
 \end{tabular}
 \end{document}

重现了您的问题:

在此处输入图片描述

  • 您应该知道,booktabs包中定义的规则不适用于具有垂直规则的表格(周围是小的垂直空间)。
  • 可以通过重新定义\toprule\midrulecmidrule和来删除这些空格bottomrule
  • 另一种可能性是使用tablrtabularray,它删除这些垂直空格:
\documentclass[margin=3mm]{standalone}
\usepackage{tabularray}
\UseTblrLibrary{booktabs}
\usepackage[Most]{romannum}

\begin{document}
\begin{tblr}{colspec={c| *3{Q[c,wd={2em}]} |  *3{Q[c,wd={2em}]} |  *3{Q[c,wd={2em}]} },
             cell{1}{2,5,8} = {c=3}{}
            }  
    \toprule
                &   Edge count 
                    &   &   &   Wedge count  
                                &   &   Triangle count  \\
    \cmidrule{2-10}
 $p$            &   \Romannum{1} 
                    &  \Romannum{2} 
                        &  \Romannum{3} 
                &   \Romannum{1}
                    &  \Romannum{2}
                        &  \Romannum{3} 
                 &   \Romannum{1}
                    &  \Romannum{2}
                        &  \Romannum{3} \\
     \midrule
  0.025     & 0 & 0 & 0 & 0 & 3 & 1 & 0 & 1 & 2 \\
  0.100    & 2 & 0 & 1 & 0 & 0 & 0 & 1 & 0 & 1 \\
  0.250    & 2 & 1 & 0 & 1 & 2 & 0 & 0 & 0 & 0 \\
    \bottomrule
\end{tblr}
\end{document}

在此处输入图片描述

答案2

我认为完全去掉垂直线没什么问题。相反,我主张更多的使用booktabs包的宏。而且,由于 9 个数据列似乎包含十进制数,因此将它们与小数点对齐会很有用;这可以借助包dcolumn及其D列类型来完成。

在此处输入图片描述

\documentclass{article}
\usepackage{booktabs,array,romannum}
\usepackage{dcolumn} % align numbers in 'D'-type columns on their decimal markers
\newcolumntype{d}[1]{D{.}{.}{#1}}
\newcommand\mc[1]{\multicolumn{1}{c}{#1}} % handy shortcut macro

\begin{document}
\begin{center}
\setlength\tabcolsep{0pt}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} 
           >{$}l<{$} 
           *{3}{*{2}{d{1.3}}d{1.4}} }
\toprule
 p & \multicolumn{3}{c}{Edge count} 
   & \multicolumn{3}{c}{Wedge count} 
   & \multicolumn{3}{c}{Triangle count} \\
\cmidrule{2-4} \cmidrule{5-7} \cmidrule{8-10}
   & \mc{\Romannum{1}} & \mc{\Romannum{2}} & \mc{\Romannum{3}}
   & \mc{\Romannum{1}} & \mc{\Romannum{2}} & \mc{\Romannum{3}} 
   & \mc{\Romannum{1}} & \mc{\Romannum{2}} & \mc{\Romannum{3}} \\
\midrule
0.025 & 0.95   & 0.98   & 0.93   & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.98  \\
      &(0.137) &(0.273) &(0.278) & & & & & &                         (0.273)\\
0.100 & 0.00   & 0.00   & 0.00   & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00  \\
0.25  & 0.00   & 0.00   & 0.00   & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00  \\
\bottomrule
\end{tabular*}

\end{center}
\end{document}

相关内容