我想根据 rgb 颜色向量上的一些线性运算(或者如果更方便的话,以任何其他格式表示)转换特定块的所有颜色。转换将类似于 C' = A * C,其中 C 是原始颜色(3 向量 (r,g,b)),C' 是新颜色 (r',g',b'),A 是描述转换的 3x3 矩阵。
该xcolor
软件包有一些命令可用于转换块中使用的所有颜色,这很接近我想要的。但是,对于我的情况来说,转换功能太有限了。有一个命令可以\selectcolormodel{gray}
将所有颜色转换为灰度,还有一个\maskcolors[<num model>]{<color>}
命令仅允许按某些常数缩放组件。
以下在 MWE 中显示了这些方法:
\documentclass{article}
\usepackage{xcolor}
\begin{document}
\colorbox{red}{red} \colorbox{blue}{blue} \colorbox{green}{green}
{\selectcolormodel{gray}
\colorbox{red}{red} \colorbox{blue}{blue} \colorbox{green}{green}
}
{\maskcolors[cmyk]{magenta}
\colorbox{red}{red} \colorbox{blue}{blue} \colorbox{green}{green}
}
\end{document}
我对如何实现期望的结果有一些想法:
- 定义一个颜色模型,如果我使用,它可以完成我所描述的操作
\selectcolormodel{mymodel}
。这可能是可行的,但可能非常复杂。 - 重新定义
\color
命令以按我想要的方式更改颜色。这可能不够通用,但可能更容易实现。
在深入研究如何实现这些选项之前,我想检查是否有我忽略的更简单的解决方案。