从 xcolor 中找出 RGB 或 HEX 颜色

从 xcolor 中找出 RGB 或 HEX 颜色

我已经使用以下方法定义了颜色:

\definecolor{canvascolor}{rgb}{0.643,0.690,0.843}

canvascolor!75!white然后将其与类似from 的命令一起使用xcolor。这实际上是在beamer主题中完成的wkbeamer

我知道这两种颜色的混合,但我如何输出这种颜色的 RGB 颜色以匹配绘画程序。我认为这应该很容易。我浏览了手册,xcolor但找不到如何做到这一点。我也浏览了一下,只是想看看它是如何确定或使用算法从混合中得到新的 RGB 颜色的,但没有看到这一点。我没有读完整个手册,但从快速浏览中我找不到这个算法,或者尝试用几个命令输出颜色,但没有一个能正常工作。

答案1

\extractcolorspec宏将定义一个包含颜色规范的宏;我们可以使用它和配套宏\convertcolorspec来定义一个包含另一个模型规范的宏:

\definecolor{canvascolor}{rgb}{0.643,0.690,0.843}
\extractcolorspec{canvascolor!75!white}{\test}
\expandafter\convertcolorspec\test{HTML}\test

现在\test将扩大到BBC4E1

的第一个定义\test将是{rgb}{0.73225,0.7675,0.88225},因此适合把它放在后面\convertcolorspec,但我们必须先将其扩展。

如果您还需要保留第一个规范,请使用两个不同的宏。

我们可以用一个函数来实现它

\newcommand{\getColorSpec}[3][\getColorSpecTemp]{%
  \extractcolorspec{#3}\getColorSpecTemp
  \expandafter\convertcolorspec\getColorSpecTemp{#2}#1}

\getColorSpec{HTML}{canvascolor!75!white}规范将存储在\getColorSpecTemp;与

\getColorSpec[\HTMLcolor]{HTML}{canvascolor!75!white}

相同的规格将存储在中\HTMLcolor

答案2

\documentclass{article}
\usepackage{xcolor}
\definecolor{canvascolor}{rgb}{0.643,0.690,0.843}
\colorlet{canvas75}{canvascolor!75!white}
\begin{document}
\noindent\ttfamily
\color{canvas75}RGB colour canvascolor!75!white\\
html : \convertcolorspec{named}{canvas75}{HTML}\HTMLcolour
\HTMLcolour\\
cmyk : \convertcolorspec{named}{canvas75}{cmyk}\CMYKcolour
\CMYKcolour

\end{document}

在此处输入图片描述

相关内容