如何仅为多列表格中的一个单元格着色?

如何仅为多列表格中的一个单元格着色?

我在 LaTeX 中制作了以下表格。

\documentclass{beamer}
\usepackage{multirow}
\usepackage{xcolor,colortbl}

\begin{document}

\begin{frame}
\frametitle{Time}

\begin{table}[]
{\tiny
\centering
\begin{tabular}{||l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|}
\hline
\multicolumn{18}{|l|}{Progress} \\ \hline
\multicolumn{9}{|l|}{\multirow{2}{*}{Ta}} & \multicolumn{9}{l|}{Ses} \\ \cline{10-18} 
\multicolumn{9}{|l|}{}& H & B & A & H & B & A & H & B & A \\ \hline
\multirow{2}{*}{\begin{tabular}[c]{@{}l@{}} 14\end{tabular}} & \multicolumn{8}{l|}{884} &   &   & \cellcolor{black!15}  &   &   &   &   &   &   \\ \cline{2-18} 
& \multicolumn{8}{l|}{L} &   &   & \cellcolor{black!15} &   &   &   &   &   &   \\ \hline
\multirow{4}{*}{\begin{tabular}[c]{@{}l@{}} 15\end{tabular}}  & \multicolumn{8}{l|}{666} &   &   &   & \cellcolor{black!55}  &   &   &   &   &   \\ \cline{2-18} 
& \multicolumn{8}{l|}{650} &   &   &   & \cellcolor{black!55}  &   &   &   &   &   \\ \cline{2-18} 
& \multicolumn{8}{l|}{0X} &   &   &   & \cellcolor{black!55}  &   &   &   &   &   \\ \cline{2-18} 
& \multicolumn{8}{l|}{11} &   &   &   & \cellcolor{black!55}  &   &   &   &   &   \\ \hline
\end{tabular}}
\end{table}

\end{frame}

\end{document}

如下所示,它生成了一个表格,但不是我想要的。我想给单元格着色,同时仍然显示它们之间的水平线。当我给两个连续的单元格着色时,它们看起来就像一个单元格。

在此处输入图片描述

在此处输入图片描述

编辑:我根据评论添加了序言和缩放的 pdf。

答案1

您看到的问题与命令有关cline,该命令在第 10 节中有详细说明colortbl文档:

如果使用这个包,你最好在 \hhline 参数中使用 - 规则类型,而不是 \cline。

因此,按照此指导,我们可以加载hhline包装和替换

\cline{2-18}

\hhline{*{1}{||~}*{17}{|-}}

输出为:

截屏

作为参考,您可能还会看到\cellcolor 覆盖表格线Cellcolor 覆盖部分水平线(\cline)

以下是完整的 MWE:

% arara: pdflatex
% !arara: indent: {overwrite: yes}
\documentclass{beamer}
\usepackage{multirow}
\usepackage{xcolor,colortbl}
\usepackage{hhline}

\begin{document}

\begin{frame}
    \frametitle{Time}

    \begin{table}[]
        {\tiny
            \centering
            \begin{tabular}{||*{18}{l|}}
                \hline
                \multicolumn{18}{|l|}{Progress} \\ \hline
                \multicolumn{9}{|l|}{\multirow{2}{*}{Ta}} & \multicolumn{9}{l|}{Ses} \\ \cline{10-18}
                \multicolumn{9}{|l|}{}& H & B & A & H & B & A & H & B & A \\ \hline
                \multirow{2}{*}{\begin{tabular}[c]{@{}l@{}} 14\end{tabular}} & \multicolumn{8}{l|}{884} &   &   & \cellcolor{black!15} &                      &   &   &   &   &   \\ \hhline{*{1}{||~}*{17}{|-}}%\cline{2-18}
                                                                             & \multicolumn{8}{l|}{L}   &   &   & \cellcolor{black!15} &                      &   &   &   &   &   \\ \hline
                \multirow{4}{*}{\begin{tabular}[c]{@{}l@{}} 15\end{tabular}} & \multicolumn{8}{l|}{666} &   &   &                      & \cellcolor{black!55} &   &   &   &   &   \\ \hhline{*{1}{||~}*{17}{|-}}%\cline{2-18}
                                                                             & \multicolumn{8}{l|}{650} &   &   &                      & \cellcolor{black!55} &   &   &   &   &   \\ \hhline{*{1}{||~}*{17}{|-}}%\cline{2-18}
                                                                             & \multicolumn{8}{l|}{0X}  &   &   &                      & \cellcolor{black!55} &   &   &   &   &   \\ \hhline{*{1}{||~}*{17}{|-}}%\cline{2-18}
                                                                             & \multicolumn{8}{l|}{11}  &   &   &                      & \cellcolor{black!55} &   &   &   &   &   \\ \hline
            \end{tabular}}
    \end{table}

\end{frame}

\end{document}

答案2

{NiceTabular}您可以使用轻松绘制该表格nicematrix

\documentclass{beamer}
\usepackage{xcolor}
\usepackage{nicematrix,tikz}

\begin{document}

\begin{frame}
\frametitle{Time}

\begin{table}[]
\begin{NiceTabular}{ll*{9}{c}}[hvlines,color-inside]
\Block[l]{1-*}{Progress} \\
\Block[l]{2-2}{Ta} & & \Block[l]{1-*}{Ses} \\
                   & & H & B & A & H & B & A & H & B & A \\
\Block{2-1}{14} & 884 & & & \cellcolor{gray!15} \\
                & L   & & & \cellcolor{gray!15} \\
\Block{*-1}{15} & 666 & & & & \cellcolor{gray!50} \\
                & 650 & & & & \cellcolor{gray!50} \\
                & OX  & & & & \cellcolor{gray!50} \\
                & 11  & & & & \cellcolor{gray!50} \\
% now, for the double vertical rule
\CodeAfter \tikz \draw ([xshift=2pt]4-|1) -- ([xshift=2pt]10-|1) ;
\end{NiceTabular}
\end{table}

\end{frame}

\end{document}

上述代码的输出

相关内容