多行表格中的颜色和规则

多行表格中的颜色和规则

我对表格中的颜色和线条有问题。我有以下代码:

\usepackage{multirow}
\usepackage{colortbl}
        \begin{tabular}{ll|c|c|c|c|c|c|}  \cline{3-8} \cline{3-8}
         & & \multicolumn{3}{c|}{\cellcolor{gray!25} Cramér von Mises} & \multicolumn{3}{c|}{\cellcolor{gray!25} Anderson-Darling} \\  \cline{3-8} \cline{3-8}
         & & \cellcolor{gray!25}$\alpha=$0.1 & \cellcolor{gray!25}$\alpha=$0.05  & \cellcolor{gray!25}$\alpha=$0.01 & \cellcolor{gray!25}$\alpha=$0.1 & \cellcolor{gray!25}$\alpha=$0.05 & \cellcolor{gray!25}$\alpha=$0.01 \\ \hline
        \multicolumn{1}{|c}{} & \cellcolor{gray!25}n=25 & 0.106 & 0.063 & 0.015 & 0.107 & 0.052 & 0.012 \\ 
        \multicolumn{1}{|c}{} & \cellcolor{gray!25}n=50 & 0.107 & 0.043 & 0.010 & 0.103 & 0.054 & 0.010 \\ 
        \multicolumn{1}{|c}{\multirow{3}{0.3cm}[7mm]{\begin{sideways}$\qquad$ $Exp(1)$ \end{sideways}}}&\cellcolor{gray!25} n=100 & 0.104 & 0.065 & 0.017 & 0.110 & 0.055 & 0.015 \\ \hline
        \multicolumn{1}{|c}{} & \cellcolor{gray!25}n=25 & 0.113 & 0.055 & 0.014 & 0.097 & 0.058 & 0.016 \\ 
         \multicolumn{1}{|c}{} & \cellcolor{gray!25}n=50 & 0.109 & 0.058 & 0.014 & 0.098 & 0.056 & 0.018 \\ 
         \multicolumn{1}{|c}{ \multirow{3}{0.3cm}[7mm]{\begin{sideways}$\qquad$ $Exp(2)$ \end{sideways}}} & \cellcolor{gray!25}n=100 & 0.110 & 0.048 & 0.011 & 0.108 & 0.044 & 0.009  \\ \hline
          \end{tabular}

我需要为多行单元格着色,而我唯一能想到的就是为它的下半部分着色。

我的另一个问题是,当我给单元格着色时,我无法正确看到表格的规则。

我希望有一个人可以帮助我。

谢谢!!!!

答案1

始终提供完整但最少的文档。您的文档缺少\documentclass以及\begin文档\end。它还缺少xcolor(对于颜色名称,如gray!25)和rotating(对于sideways环境)的加载。要为整个多行着色,您需要为其所有三个单元格着色。此外,您对的使用\multirow是不正确的。如果要将文本放入其上方的单元格中,则数字应为负数。如果这样做,则不需要可选的调整[7mm]或 s \qquad。我还做了一些其他事情,我认为可以使结果更好:退出Exp数学模式,将后面的数字\alpha=放入数学模式,删除一些错误的空格,并删除大多数垂直线:

\documentclass{article}
\usepackage{multirow,xcolor,colortbl,rotating}
\begin{document}
\noindent\begin{tabular}{ll|cccccc|}  \cline{3-8} \cline{3-8}
   &&\multicolumn{3}{c} {\cellcolor{gray!25} Cram\'er von Mises}&
     \multicolumn{3}{c|}{\cellcolor{gray!25} Anderson-Darling}\\
  \cline{3-8} \cline{3-8}
   &&\cellcolor{gray!25}$\alpha=0.1 $ &\cellcolor{gray!25}$\alpha=0.05$&
     \cellcolor{gray!25}$\alpha=0.01$ &\cellcolor{gray!25}$\alpha=0.1 $&
     \cellcolor{gray!25}$\alpha=0.05$ &\cellcolor{gray!25}$\alpha=0.01$\\
  \hline
  \multicolumn{1}{|c}{\cellcolor{gray!25}} & \cellcolor{gray!25}n=25 & 0.106 & 
    0.063 & 0.015 & 0.107 & 0.052 & 0.012 \\
  \multicolumn{1}{|c}{\cellcolor{gray!25}} & \cellcolor{gray!25}n=50 & 0.107 & 
    0.043 & 0.010 & 0.103 & 0.054 & 0.010 \\
  \multicolumn{1}{|c}{\cellcolor{gray!25}%
    \multirow{-3}{*}{\begin{sideways}Exp$(1)$\end{sideways}}}&
    \cellcolor{gray!25}n=100 & 0.104 & 0.065 & 0.017 & 0.110 & 0.055 & 0.015 \\
  \hline
  \multicolumn{1}{|c}{\cellcolor{gray!25}} & \cellcolor{gray!25}n=25 & 0.113 &
    0.055 & 0.014 & 0.097 & 0.058 & 0.016 \\
  \multicolumn{1}{|c}{\cellcolor{gray!25}} & \cellcolor{gray!25}n=50 & 0.109 & 
    0.058 & 0.014 & 0.098 & 0.056 & 0.018 \\
  \multicolumn{1}{|c}{\cellcolor{gray!25}%
    \multirow{-3}{*}{\begin{sideways}Exp$(2)$\end{sideways}}}&
    \cellcolor{gray!25}n=100 & 0.110 & 0.048 & 0.011 & 0.108 & 0.044 & 0.009  \\
  \hline
\end{tabular}
\end{document}

(我还把代码行拆开了,这样读者就不必滚动三个屏幕才能看到整个代码。)

答案2

我认为用于处理多行多列的 ConTeXt 接口更好,因为它提供了内容和表示的清晰分离。例如,无需任何样式,上面的表格可以排版为(我只是复制粘贴了 Exp(2) 部分的数据)。

\starttext

\bTABLE
  \bTR
    \bTD[nc=2] \eTD
    \bTD[nc=3] Cramér von Mises \eTD
    \bTD[nc=3] Anderson-Darling \eTD
  \eTR
  \bTR
    \bTD[nc=2] \eTD
    \bTD $α = 0.1$  \eTD
    \bTD $α = 0.05$ \eTD
    \bTD $α = 0.01$ \eTD
    \bTD $α = 0.1$  \eTD
    \bTD $α = 0.05$ \eTD
    \bTD $α = 0.01$ \eTD
  \eTD
  \bTR
    \bTD[nr=3] \rotate{Exp(1)} \eTD
    \bTD $n = 25$ \eTD
    \bTD 0.106 \eTD
    \bTD 0.063 \eTD
    \bTD 0.015 \eTD
    \bTD 0.107 \eTD
    \bTD 0.052 \eTD
    \bTD 0.012 \eTD
  \eTR
  \bTR
    \bTD $n = 50$ \eTD
    \bTD 0.107 \eTD
    \bTD 0.043 \eTD
    \bTD 0.010 \eTD
    \bTD 0.103 \eTD
    \bTD 0.054 \eTD
    \bTD 0.010 \eTD
  \eTR
  \bTR
    \bTD $n = 100$ \eTD
    \bTD 0.10R \eTD
    \bTD 0.065 \eTD
    \bTD 0.017 \eTD
    \bTD 0.110 \eTD
    \bTD 0.055 \eTD
    \bTD 0.015 \eTD
  \eTR
  \bTR
    \bTD[nr=3] \rotate{Exp(2)} \eTD
    \bTD $n = 25$ \eTD
    \bTD 0.106 \eTD
    \bTD 0.063 \eTD
    \bTD 0.015 \eTD
    \bTD 0.107 \eTD
    \bTD 0.052 \eTD
    \bTD 0.012 \eTD
  \eTR
  \bTR
    \bTD $n = 50$ \eTD
    \bTD 0.107 \eTD
    \bTD 0.043 \eTD
    \bTD 0.010 \eTD
    \bTD 0.103 \eTD
    \bTD 0.054 \eTD
    \bTD 0.010 \eTD
  \eTR
  \bTR
    \bTD $n = 100$ \eTD
    \bTD 0.10R \eTD
    \bTD 0.065 \eTD
    \bTD 0.017 \eTD
    \bTD 0.110 \eTD
    \bTD 0.055 \eTD
    \bTD 0.015 \eTD
  \eTR

\eTABLE


\stoptext

这使

在此处输入图片描述

现在,让我们逐一添加样式。首先,创建一个设置来添加框架:

\startsetups table:frame
  \setupTABLE[frame=off]

  \setupTABLE[row][1,3,6][topframe=on]
  \setupTABLE[row][last][bottomframe=on]

  \setupTABLE[column][1,3][leftframe=on]
  \setupTABLE[column][last][rightframe=on]

  % Correct for spanning cells.
  \setupTABLE[6][2][rightframe=on]
  \setupTABLE[1][6][bottomframe=on]

  % Correct for missing top left cell
  \setupTABLE[1][1,2][topframe=off, leftframe=off]

\stopsetups

并且使用就是使用

\bTABLE[setups={table:frame}

这使:

在此处输入图片描述

接下来,通过创建另一个设置将背景添加到顶行和左列

\startsetups table:background
  \setupTABLE[background=color]
  \setupTABLE[row][1,2][backgroundcolor=gray]
  \setupTABLE[column][1,2][backgroundcolor=gray]

  % Correct for missing top left cell
  \setupTABLE[1,2][1,2][background=]
\stopsetups

并使用:

\bTABLE[setups={table:frame, table:background}]

这使:

在此处输入图片描述

最后,通过创建新的设置来纠正对齐和间距:

\startsetups table:style
  % Middle align all data columns
  \setupTABLE[align={middle,lohi}]

  % ... except the 2nd column
  \setupTABLE[column][5][align=flushleft]

  % Add spacing
  \setupTABLE[loffset=0.25em, roffset=0.25em]

\stopsetups

并使用:

\bTABLE[setups={table:frame, table:background, table:style}]

这使:

在此处输入图片描述

请注意,该代码比 LaTeX 更具可读性,并且将来更改样式也相对容易。

答案3

{NiceTabular}以下是使用构建该表的一种方法nicematrix。该环境类似于经典环境{tabular}(由 提供array),但增加了新功能。

具体来说,当使用 键时corners,空角将由 自动计算nicematrix。然后绘制规则的命令(例如和\Hline提供nicematrix的类似\hline)和颜色单元会考虑到这些角。

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\begin{center}
\begin{NiceTabular}{|ll|cccccc|}[corners]  
\CodeBefore
  \rowcolor{gray!25}{1,2}
  \columncolor{gray!25}{1,2}
\Body
\Hline
   && \Block{1-3}{Cramér von Mises}&&& \Block{1-3}{Anderson-Darling} \\
   &&$\alpha=0.1 $ &$\alpha=0.05$& $\alpha=0.01$ &$\alpha=0.1 $& $\alpha=0.05$ &$\alpha=0.01$ \\
\Hline
  \Block{3-1}{\rotate Exp$(1)$} 
   & n=25 & 0.106 & 0.063 & 0.015 & 0.107 & 0.052 & 0.012 \\
   & n=50 & 0.107 & 0.043 & 0.010 & 0.103 & 0.054 & 0.010 \\
   & n=100 & 0.104 & 0.065 & 0.017 & 0.110 & 0.055 & 0.015 \\
\Hline
  \Block{3-1}{\rotate Exp$(2)$} 
   & n=25 & 0.113 & 0.055 & 0.014 & 0.097 & 0.058 & 0.016 \\
   & n=50 & 0.109 & 0.058 & 0.014 & 0.098 & 0.056 & 0.018 \\
   & n=100 & 0.110 & 0.048 & 0.011 & 0.108 & 0.044 & 0.009  \\
\Hline
\end{NiceTabular}
\end{center}

\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

无论您使用哪种 PDF 查看器,规则似乎都不会消失在彩色面板下。

相关内容