有没有办法直接定义颜色而不使用命名颜色

有没有办法直接定义颜色而不使用命名颜色

longtblr我正在尝试在命令中的tabularray包上使用背景颜色\SetCell,但似乎只能使用命名的颜色。例如之前用 定义的颜色\definecolor。我正在构建一个生成器,想使用现场定义的颜色。

\definecolor{c5E90CB}{HTML}{5E90CB}
...    
\SetCell[r=1,c=3]{bg=c5E90CB,halign=l,valign=h}\makecell{Test instructions and report}

我想直接使用颜色定义,而不预先定义它 - 类似于

\SetCell[r=1,c=3]{bg=\color[HTML]{5E90CB},halign=l,valign=h}{Test instructions and report}

但这不起作用。

谢谢,Blaž

答案1

是否可以在“单元格部分”的某个地方定义颜色?在之后\hline&之前\SetCell

是的,您可以使用它\NewTableCommand来创建一个\DefineColor命令。然后您可以将其放在单元格的开头。

\documentclass{article}

\usepackage{xcolor}
\usepackage{tabularray}

\NewTableCommand{\DefineColor}[3]{\definecolor{#1}{#2}{#3}}

\begin{document}

\begin{tblr}{lcr}
\hline
 Alpha   & Beta  & Gamma \\
\hline
 \DefineColor{c5E90CB}{HTML}{5E90CB}
 \SetCell[r=1,c=3]{bg=c5E90CB,halign=l,valign=h} Epsilon & & \\
\hline
 Iota    & Kappa & Lambda \\
\hline
\end{tblr}

\end{document} 

在此处输入图片描述

答案2

这是一个稍微自动化的解决方案,可以避免选择颜色名称(以及答案这个问题更确切地说):

\documentclass{article}

\usepackage{xcolor}
\usepackage{tabularray}

\newcounter{CurrentCellBgColor}
\NewTableCommand{\SetCellBgColor}[2]{%
  \stepcounter{CurrentCellBgColor}%
  \definecolor{CurrentCellBgColor-\theCurrentCellBgColor}{#1}{#2}%
  \SetCell{bg=CurrentCellBgColor-\theCurrentCellBgColor}%
}

\begin{document}

\begin{tblr}{lcr}
  \hline
  Alpha   & Beta  & Gamma \\
  \hline
  \SetCellBgColor{HTML}{5E90CB}
  \SetCell[r=1,c=3]{halign=l,valign=h} Epsilon & & \\
  \hline
  \SetCellBgColor{HTML}{905eCB}
  \SetCell[r=1,c=3]{halign=c,valign=h} Epsilon & & \\
  \hline
  \SetCellBgColor{rgb}{200,100,0}
  \SetCell[r=1,c=3]{halign=r,valign=h} Epsilon & & \\
  \hline
  Iota    & Kappa & Lambda \\
  \hline
\end{tblr}

\end{document}

在此处输入图片描述

相关内容