在下面的代码中,我尝试\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}
输出是一样的。