检索 HTML 中的颜色定义

检索 HTML 中的颜色定义

我需要建立这种类型的表:

材料 | 颜色 | 图片 | 颜色定义

为了检索颜色定义,我尝试使用,\extractcolorspecs期望第三个参数{ color-cmd }允许我打印所需的内容。问题是我在 HTML 中定义了颜色,而命令在输出中给出了 RGB 格式。这是一个 MWE:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{tikz}
\usepackage{booktabs}
\usepackage{xcolor}

\definecolor{mapblue}{HTML}{0000FF}%
\definecolor{maproyalblue}{HTML}{0088FF}%
\definecolor{mapskyblue}{HTML}{00CCFF}%
\definecolor{mapgreen}{HTML}{00CC00}%
\definecolor{mapdandelion}{HTML}{FFCC00}%
\definecolor{maporange}{HTML}{FF8800}%
\definecolor{mapred}{HTML}{FF0000}%

\newcommand{\colpic}[1]{\tikz \draw[#1,fill=#1,draw](0,0)circle(0.1cm);}
\newcommand{\colrow}[1]{#1 & \colpic{#1} & \extractcolorspecs{#1}{\model}{\mycolor}\mycolor}

\begin{document}

\begin{tabular}{cccc}
\toprule
\multicolumn{1}{c|}{\textsc{Relevance Interval}} &
\multicolumn{1}{c|}{\textsc{Color}} & 
\multicolumn{1}{c|}{\textsc{Picture}} & 
\multicolumn{1}{c}{\textsc{ Color Definition}}\\
\midrule 
0 - 5 & \colrow{mapblue}\\
5 - 10 & \colrow{maproyalblue}\\
10 - 25 & \colrow{mapskyblue}\\
25 - 50 & \colrow{mapgreen}\\
50 - 100 & \colrow{mapdandelion}\\
100 - 200 & \colrow{maporange}\\
>200 & \colrow{mapred}\\
\bottomrule
\end{tabular}

\end{document}

输出结果如下: 在此处输入图片描述

如何在 HTML 中获取颜色定义?

答案1

我们可以将存储的颜色定义版本(以 rgb 表示)转换为 HTML,方法是:

\newcommand{\colrow}[1]{%
  #1 & \colpic{#1} & \extractcolorspecs{#1}{\model}{\mycolor}%
    \convertcolorspec{\model}{\mycolor}{HTML}\tmp\tmp
}

\somecolorhtml我们还可以通过一些额外的编码来压缩命令的定义。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tikz,booktabs,xcolor}
\newcommand{\definemycolor}[2]{%
        \definecolor{#1}{HTML}{#2}%
        \expandafter\def\csname#1html\endcsname{#2\relax} %Which defines \colornamehtml
        }
\newcommand{\colpic}[1]{\tikz \draw[#1,fill=#1,draw](0,0)circle(0.1cm);}
\newcommand{\colrow}[1]{#1 & \colpic{#1} &\csname#1html\endcsname}
\definemycolor{mapblue}{0000FF}%
\definemycolor{maproyalblue}{0088FF}%
\definemycolor{mapskyblue}{00CCFF}%
\definemycolor{mapgreen}{00CC00}%
\definemycolor{mapdandelion}{FFCC00}%
\definemycolor{maporange}{FF8800}%
\definemycolor{mapred}{FF0000}%
\begin{document}
\begin{tabular}{cccc}
\toprule
\multicolumn{1}{c|}{\textsc{Relevance Interval}} &
\multicolumn{1}{c|}{\textsc{Color}} & 
\multicolumn{1}{c|}{\textsc{Picture}} & 
\multicolumn{1}{c}{\textsc{ Color Definition}}\\    \midrule 
0 - 5 & \colrow{mapblue}\\
5 - 10 & \colrow{maproyalblue}\\
10 - 25 & \colrow{mapskyblue}\\
25 - 50 & \colrow{mapgreen}\\
50 - 100 & \colrow{mapdandelion}\\
100 - 200 & \colrow{maporange}\\
>200 & \colrow{mapred}\\
\bottomrule
\end{tabular}
Since we defined the \verb|\colornamehtml| command versions of the colors,
\verb|\mapbluehtml| gives \textcolor{mapblue}{\mapbluehtml}  and 
\verb|\mapdandelionhtml| gives \textcolor{mapdandelion}{\mapdandelionhtml}.
\end{document}

在此处输入图片描述

另外,我认为等宽字体在最后一列会更受欢迎,因此colrow用以下命令替换

\newcommand{\colrow}[1]{#1 & \colpic{#1} &\expandafter\texttt{\csname#1html\endcsname}}

会导致

在此处输入图片描述

答案2

这个问题始于 2012 年左右,最初的答案体现了社区专家的先见之明。

2016 年,Uwe Kern 博士介绍了 xcolor 软件包 (v2.12)(2016 年 5 月 11 日)。

在 xcolor.pdf 第 23 页上,https://ctan.org/pkg/xcolor?lang=en中,他谈到了该包的“颜色测试”功能。¶ 2.6.4。

在第 31 页,有一个代码片段,这里将其放入 MWE 中以提供工作上下文。通过输入各种颜色识别方式的宏,输出是带有 rgb、cmyk、hsb、HTML 和灰色的表格。他建议将此宏放在自己的环境中。

\documentclass[12pt]{article}

\usepackage[margin=0.5in]{geometry}

\usepackage[dvipsnames*, x11names, svgnames, hyperref]{xcolor}

\AtBeginDocument{\colorlet{defaultcolor}{.}}

\begin{document}

\sffamily

\begin{testcolors}[rgb,cmyk,hsb,HTML,gray]
\testcolor{olive}
\testcolor{red!50!green}
\testcolor{-cyan!50!magenta}
\testcolor[cmyk]{0,0,1,0.5}
\testcolor[cmyk]{0,0,.5,.5}
\testcolor[rgb:cmyk]{0,0,.5,.5}
\end{testcolors}

\end{document}

在此处输入图片描述

简而言之,原始答案中的分析现在基本上是xcolor包中的一个宏。

相关内容