情况
假设我定义了一些颜色。我想制作一个测试页面,作为开发人员的颜色键。
例子
定义的颜色colora
、colorb
和colorc
应该进行迭代,而无需再次明确提及它们(自动发生)。这是一种高效的编程,因为我可以拥有任意数量的颜色(可能 50 种左右),并创建一个节省时间的颜色键。
\documentclass{article}
\usepackage{fontspec}
\usepackage{tikz}
\usepackage{pgffor}
\definecolor{colora}{cmyk}{0,.5,1,.3}
\definecolor{colorb}{cmyk}{.4,.6,.5,.1}
\definecolor{colorc}{cmyk}{.6,.2,.5,.2}
\begin{document}
%\foreach \definedcolor in {defined colors} % pseudo-code
% \tikz \node [fill=definedcolor, minimum width=2cm, minimum height=1cm,text=white] {name of defined color}; % pseudo-code
\color{colora} COLORA
\color{colorb} COLORB
\color{colorc} COLORC
\end{document}
答案1
一种可能的方法是使用您自己的宏来拦截颜色定义。
\documentclass{article}
\usepackage{tikz}
\def\appendcolor#1#2#3{%
\csname pgfutil@ifundefined\endcsname{definedcolorsofar}{\def\definedcolorsofar{#1}}{%
\expandafter\def\expandafter\definedcolorsofar\expandafter{\definedcolorsofar,#1}}%
\definecolor{#1}{#2}{#3}%
}
\appendcolor{colora}{cmyk}{0,.5,1,.3}
\appendcolor{colorb}{cmyk}{.4,.6,.5,.1}
\appendcolor{colorc}{rgb}{1,0,0}
\appendcolor{colord}{rgb}{0,0,1}
\begin{document}
\tikz{
\foreach \x[count=\xi] in \definedcolorsofar
\node at (0,\xi)[fill=\x, minimum width=2cm,
minimum height=1cm,text=white] {\x};
}
\end{document}