I have the following code working just fine:
\documentclass[letterpaper,10pt]{article}
\usepackage[english,german]{babel}
\usepackage{xcolor}
\usepackage{boolexpr,pdftexcmds,trace}
\definecolor{mediumtealblue}{rgb}{0.0, 0.33, 0.71}
\definecolor{red(munsell)}{rgb}{0.95, 0.0, 0.24}
\definecolor{forestgreen}{rgb}{0.13, 0.55, 0.13}
\definecolor{ginger}{rgb}{0.69, 0.4, 0.0}
\makeatletter
\long\def\isequal#1#2{\pdf@strcmp{#1}{#2}}
\makeatother
\providecommand{\denoun}[3][---]{%
\def\Artikel{#1}%
\def\colornoun{}%
\switch%
\case{\isequal{\Artikel}{der}}%
\renewcommand{\colornoun}[1]{\textcolor{mediumtealblue}{##1}}%
\case{\isequal{\Artikel}{die}}%
\renewcommand{\colornoun}[1]{\textcolor{red(munsell)}{##1}}%
\case{\isequal{\Artikel}{das}}%
\renewcommand{\colornoun}[1]{\textcolor{forestgreen}{##1}}%
\otherwise%
\renewcommand{\colornoun}[1]{\textcolor{black}{##1}}%
\endswitch%
\colornoun{#1 #2} & \textcolor{ginger}{die #3} \\%
}
\begin{document}
\begin{tabular}{|c|c|}
\hline
\multicolumn{2}{|c|}{Nouns in german} \\
\hline
\denoun[der]{Apfel}{Äpfel}
\denoun[die]{Katze}{Katzen}
\denoun[das]{Beispiel}{Beispiele}
\hline
\end{tabular}
\end{document}
Then I thought that maybe I could modify the code from the \denoun command to get something like this:
\documentclass[letterpaper,10pt]{article}
\usepackage[english,german]{babel}
\usepackage{xcolor}
\usepackage{boolexpr,pdftexcmds,trace}
\definecolor{mediumtealblue}{rgb}{0.0, 0.33, 0.71}
\definecolor{red(munsell)}{rgb}{0.95, 0.0, 0.24}
\definecolor{forestgreen}{rgb}{0.13, 0.55, 0.13}
\definecolor{ginger}{rgb}{0.69, 0.4, 0.0}
\begin{document}
\begin{tabular}{|c|c|}
\hline
\multicolumn{2}{|c|}{Nouns in german} \\
\hline
\textcolor{mediumtealblue}{der Apfel} & \colorbox{mediumtealblue}{\textcolor{white}{die Äpfel}} \\
\textcolor{red(munsell)}{die Katze} & \colorbox{red(munsell)}{\textcolor{white}{die Katzen}} \\
\textcolor{forestgreen}{das Beispiel} & \colorbox{forestgreen}{\textcolor{white}{die Beispiele}} \\
\hline
\end{tabular}
\end{document}
So I've tried modifying the \denoun command as following:
\documentclass[letterpaper,10pt]{article}
\usepackage[english,german]{babel}
\usepackage{xcolor}
\usepackage{boolexpr,pdftexcmds,trace}
\definecolor{mediumtealblue}{rgb}{0.0, 0.33, 0.71}
\definecolor{red(munsell)}{rgb}{0.95, 0.0, 0.24}
\definecolor{forestgreen}{rgb}{0.13, 0.55, 0.13}
\definecolor{ginger}{rgb}{0.69, 0.4, 0.0}
\makeatletter
\long\def\isequal#1#2{\pdf@strcmp{#1}{#2}}
\makeatother
\providecommand{\denoun}[3][---]{%
\def\Artikel{#1}%
\switch%
\case{\isequal{\Artikel}{der}}%
\colorlet{nouncolor}{mediumtealblue}%
\case{\isequal{\Artikel}{die}}%
\colorlet{nouncolor}{red(munsell)}%
\case{\isequal{\Artikel}{das}}%
\colorlet{nouncolor}{forestgreen}%
\otherwise%
\colorlet{nouncolor}{black}%
\endswitch%
\textcolor{nouncolor}{#1 #2} & \colorbox{nouncolor}{\textcolor{white}{die #3}} \\%
}
\begin{document}
\begin{tabular}{|c|c|}
\hline
\multicolumn{2}{|c|}{Nouns in german} \\
\hline
\denoun[der]{Apfel}{Äpfel}
\denoun[die]{Katze}{Katzen}
\denoun[das]{Beispiel}{Beispiele}
\hline
\end{tabular}
\end{document}
But then I get the following error message:
! Package xcolor Error: Undefined color `nouncolor'.
So I want to know what's the mistake that I'm making? or, is there another way for doing this?
I would really appreciate your answers, thanks!
\xglobal
in front of\colorlet
, i.e. replace the four instances of\colorlet
by\xcolor\colorlet
. – campa Jun 25 '20 at 11:29\globalcolorstrue
to make the color definitions global. – Ulrike Fischer Jun 25 '20 at 11:48