如何为表格中某一行的单元格区域着色?

如何为表格中某一行的单元格区域着色?

在下面的代码中,我尝试\cellcolor通过创建名为 的命令来重新定义命令,以实现对一行中一系列连续单元格进行着色的效果\colorrow。但没成功。我还展示了我们可以使用该\rowcolor命令执行该任务;但是,它在编译时会引发错误。

\documentclass{article}
\usepackage{multirow}
\usepackage{colortbl}
\definecolor{yellow}{RGB}{255, 204, 50}
\definecolor{yellow2}{RGB}{255, 238, 150}

\newcommand{\colorrow}[2]{%
  % Define a temporary command \do
  \gdef\do##1{\cellcolor{#2}##1\ignorespaces}%
  % Expand \do with the content of the first argument
  \expandafter\do#1\unskip%
}

\begin{document}

\begin{tabular}{|c|c|c|c|}
  \hline
   \multirow{2}{*}{Model}  & \colorrow{18 & 0.748 & 0.143}{yellow} \\
     & \rowcolor{yellow2} 18 & 0.748 & 0.143 \\
  \hline
\end{tabular}

\end{document}

完成\rowcolor工作但引发以下错误

“您在错误的地方使用了 \hline 命令,可能在表格之外。如果 \hline 命令写在表格内,请尝试在其前面添加 \。\noalign

l.20 & \rowcolor {yellow2} 18 & 0.748 & 0.143 \ 我希望仅在对齐的 \cr 之后看到 \noalign。继续,我将忽略此情况。

[1

在此处输入图片描述

答案1

表格数组包就可以使用了。

选项通过键设置。例如,cell{1}{2}={bg=myyellow}设置背景颜色myyellow。同样,为第二行第二列到最后一列的单元格cell{2}{2-Z}={bg=myyellow2}设置背景颜色。myyellow2

在此处输入图片描述

\documentclass[border=6pt]{standalone}
\usepackage{xcolor}
\usepackage{tabularray}
\definecolor{myyellow}{RGB}{255, 204, 50}
\definecolor{myyellow2}{RGB}{255, 238, 150}
\begin{document}
\begin{tblr}{
  hlines,
  vlines,
  cell{1}{2}={bg=myyellow},
  cell{2}{2-Z}={bg=myyellow2}
}
\SetCell[r=2]{m} Model & 18 & 0.748 & 0.143\\
 & 18 & 0.748 & 0.143\\
\end{tblr}
\end{document}

答案2

使用{NiceTabular}nicematrix如果您放入\rowcolor{...}一个单元格,它将应用到当前行的末尾。

\documentclass[border=6pt]{standalone}
\usepackage{xcolor}
\definecolor{myyellow}{RGB}{255, 204, 50}
\definecolor{myyellow2}{RGB}{255, 238, 150}
\usepackage{nicematrix}

\begin{document}
\begin{NiceTabular}{cccc}[hvlines,color-inside]
\Block{2-1}{Model} & \cellcolor{myyellow} 18 & 0.748 & 0.143\\
 & \rowcolor{myyellow2} 18 & 0.748 & 0.143\\
\end{NiceTabular}
\end{document}

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

上述代码的输出

也可以将着色指令放在所谓的数据之前\CodeBefore

\documentclass[border=6pt]{standalone}
\usepackage{xcolor}
\definecolor{myyellow}{RGB}{255, 204, 50}
\definecolor{myyellow2}{RGB}{255, 238, 150}
\usepackage{nicematrix}

\begin{document}
\begin{NiceTabular}{cccc}[hvlines,color-inside]
\CodeBefore
  \cellcolor{myyellow}{1-2}
  \rectanglecolor{myyellow2}{2-2}{2-}
\Body
\Block{2-1}{Model} & 18 & 0.748 & 0.143\\
                    & 18 & 0.748 & 0.13\\
\end{NiceTabular}
\end{document}

输出是一样的。

相关内容