How to make colored swatches inside text?

You could inspect the original source code for the xcolor manual.

It uses a \colorbox that has a tight (\fboxsep is set to \z@ = 0pt) \fbox around it.
The dimension of the colored box is taken from the string “XX”. The macro \phantom expands to a box with the dimension of its argument.

Code

\documentclass{article}
\usepackage{xcolor}
\makeatletter
\def\testclr#1#{\@testclr{#1}}
\def\@testclr#1#2{{\fboxsep\z@\fbox{\colorbox#1{#2}{\phantom{XX}}}}}
\newcommand*\Color[1]{\textsl{#1}}
\makeatother
\begin{document}
\begin{itemize}
\item How does a mixture of 40\% \Color{green} and 60\% \Color{yellow} look like?\\
(Answer: 40\% \testclr{green} $+$ 60\% \testclr{yellow} $=$ \testclr{green!40!yellow}, e.g., \verb|\color{green!40!yellow}|)
\item And how does its complementary color look like?\\
(Answer: \testclr{-green!40!yellow}, accessible via \verb|\color{-green!40!yellow}|)
\item Now I want to mix three parts of the last color with two parts of its complement and one part of \Color{red}.
How does that look?\\
(Answer: $3\times$ \testclr{-green!40!yellow} $+ 2\times$ \testclr{green!40!yellow} $+ 1\times$ \testclr{red} $=$ \testclr{rgb:-green!40!yellow,3;green!40!yellow,2;red,1}, the last color being accessible via \verb|\color{rgb:-green!40!yellow,3;green!40!yellow,2;red,1}|)
\end{itemize}
\end{document}

I think the other answer is the way to go, but just in case you'd like to do it with tikz, here's an option

screenshot

This gives you access to all of the fun things that tikz can do such as rounded corners and decorated paths etc.

\documentclass{article}

\usepackage{tikz}
\newcommand{\swatch}[1]{\tikz[baseline=-0.6ex] \node[fill=#1,shape=rectangle,draw=black,thick,minimum width=5mm,rounded corners=2pt](){};}

\begin{document}
Answer: 40\% \swatch{green}+60\% \swatch{yellow}=\swatch{green!40!yellow}
\end{document}

Tags:

Color