在表格标题之间留出空格

在表格标题之间留出空格

我想复制此图中的表格但不复制第二列:

在此处输入图片描述

但问题是我无法找出如何在每两列之间留出水平空间(N=2、N=3 ... 等)。我也无法找出如何在第一行和第二行之间留出垂直空间(N=2 和 Avg. Pos ... 等),因为文本太靠近上线了。

这是我的版本和代码:

\begin{table}[h]
    \begin{tabular}{@{}lrrrrrr@{}}
        \toprule
        & \multicolumn{2}{c}{N = 2}                                     & \multicolumn{2}{c}{N = 3}                                     & \multicolumn{2}{c}{N = 4}                                      \\  \cline{2-3} \cline{4-5} \cline{6-7} 
        Network Name       & \multicolumn{1}{c}{Avg. Pos.} & \multicolumn{1}{c}{Avg. Neg.} & \multicolumn{1}{c}{Avg. Pos.} & \multicolumn{1}{c}{Avg. Neg.} & \multicolumn{1}{c}{Avg. Pos.} & \multicolumn{1}{c}{Avg. Neg.} \\ \midrule
        X            & 4895                          & 135639                        & 77                            & 109622                        & 5                             & 16360                         \\ 
        Y               & 5426                          & 183685                        & 196                           & 204801                        & 9                             & 39977                         \\ 
        Z & 8959                          & 80669                         & 38                            & 109362                        & 4                             & 43329                         \\ \bottomrule
    \end{tabular}
\end{table}

在此处输入图片描述

答案1

对于第一项,使用\cmidrule(lr){2-3},注意(lr)。有关详细信息,请参阅booktabs手册。对于第二项,使用一些strut类似

\newcommand*{\mystrut}{\rule{0pt}{2.5ex}}

2.5ex按照你想要的方式改变。

\documentclass{article}
\usepackage{booktabs}
\newcommand*{\mystrut}{\rule{0pt}{2.5ex}}
\begin{document}
  \begin{table}[h]
    \begin{tabular}{@{}lrrrrrr@{}}
        \toprule
        & \multicolumn{2}{c}{N = 2}                                     & \multicolumn{2}{c}{N = 3}                                     & \multicolumn{2}{c}{N = 4}                                      \\  \cmidrule(lr){2-3} \cmidrule(lr){4-5} \cmidrule(lr){6-7}
     \mystrut   Network Name       & \multicolumn{1}{c}{Avg. Pos.} & \multicolumn{1}{c}{Avg. Neg.} & \multicolumn{1}{c}{Avg. Pos.} & \multicolumn{1}{c}{Avg. Neg.} & \multicolumn{1}{c}{Avg. Pos.} & \multicolumn{1}{c}{Avg. Neg.} \\ \midrule
        X            & 4895                          & 135639                        & 77                            & 109622                        & 5                             & 16360                         \\
        Y               & 5426                          & 183685                        & 196                           & 204801                        & 9                             & 39977                         \\
        Z & 8959                          & 80669                         & 38                            & 109362                        & 4                             & 43329                         \\ \bottomrule
    \end{tabular}
\end{table}
\end{document}

在此处输入图片描述

答案2

一种解决方案是使用booktabs, makecell(允许在单元格中换行)和 siunitx居中右对齐的数字,以及\extrarowheight更好的垂直间距:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}

\usepackage{array, booktabs, makecell}
\setlength\extrarowheight{2pt}
\usepackage{siunitx}
\sisetup{table-format=6.0}

\begin{document}

\begin{table}[h]
\begin{tabular}{@{}ccSS[table-format=3.0]ScS[table-format=5.0]@{}}
    \toprule
& \multicolumn{2}{c}{N = 2} & \multicolumn{2}{c}{N = 3} & \multicolumn{2}{c}{N = 4} \\
    \cmidrule(lr){2-3} \cmidrule(lr){4-5} \cmidrule(lr){6-7}
   \makecell{ Network\\ Name} &\multicolumn{1}{c}{Avg. Pos.} & \multicolumn{1}{c}{Avg. Neg.} & \multicolumn{1}{c}{Avg. Pos.} & \multicolumn{1}{c}{Avg. Neg.} & \multicolumn{1}{c}{Avg. Pos.} & \multicolumn{1}{c}{Avg. Neg.} \\
   \cmidrule[\lightrulewidth](lr){1-1}\cmidrule[\lightrulewidth](lr){2-3}\cmidrule[\lightrulewidth](lr){4-5}\cmidrule[\lightrulewidth](lr){6-7}
    X & 4895 & 135639 & 77 & 109622 & 5 & 16360 \\
    Y & 5426 & 183685 & 196 & 204801 & 9 & 39977 \\
    Z & 8959 & 80669 & 38 & 109362 & 4 & 43329 \\ \bottomrule
\end{tabular}
\end{table}

\end{document} 

在此处输入图片描述

答案3

tabular*这是一个使用而不是 环境的解决方案tabular。这确保表格将适合 的指定宽度\textblock。使用这种方法,对 创建的线条进行显式修剪\cmidrule就没有必要了。使用\cmidrule而不是\cline将自动提供您希望获得的额外垂直分隔。

为了使此表适合文本块,必须在“Avg. Pos.”和“Avg. Neg.”字符串中引入换行符。我还建议您使用一种可自动将数字对齐到其(隐含的)小数点的列类型;包d的类型就是这样一种列类型dcolumn。(包S的列类型siunitx也可以。)

在此处输入图片描述

\documentclass{article}
\usepackage{booktabs}

\newcommand\mc[1]{\multicolumn{1}{c}{#1}}    % two handy shortcut macros
\newcommand\MC[1]{\multicolumn{1}{c@{}}{#1}}

\usepackage{dcolumn}  % decimal marker alignment functions
\newcolumntype{d}[1]{D{.}{.}{#1}}

\begin{document}
\begin{table}
    \begin{tabular*}{\textwidth}{@{} l @{\extracolsep{\fill}} 
             d{4.0}d{6.0} d{3.0}d{6.0} d{1.0}d{5.0} @{}}
        \toprule
        Network Name 
        & \multicolumn{2}{c}{$N = 2$} 
        & \multicolumn{2}{c}{$N = 3$}
        & \multicolumn{2}{c@{}}{$N = 4$}\\  
        \cmidrule{2-3} \cmidrule{4-5} \cmidrule{6-7}
        & \mc{Avg.} & \mc{Avg.} & \mc{Avg.} & \mc{Avg.} & \mc{Avg.} & \MC{Avg.} \\
        & \mc{Pos.} & \mc{Neg.} & \mc{Pos.} & \mc{Neg.} & \mc{Pos.} & \MC{Neg.} \\
        \midrule
        X & 4895 & 135639 &  77 & 109622 & 5 & 16360 \\
        Y & 5426 & 183685 & 196 & 204801 & 9 & 39977 \\
        Z & 8959 &  80669 &  38 & 109362 & 4 & 43329 \\ 
        \bottomrule
    \end{tabular*}
\end{table}
\end{document}

相关内容