检查颜色之间的平等性

检查颜色之间的平等性

考虑以下:

\colorlet{mycolour1}{black}

\colorlet{mycolour2}{black}

如何使用类似命令

\ifthenelse{\equal{mycolour1}{mycolour2}}{TRUE}{FALSE}

换句话说,我如何检查两种颜色之间的相等性?

答案1

正如 Werner 指出的那样,etoolboxe-TeX 的强大功能比ifthen提供的更好。\ifdefequal在这里特别方便。

在此处输入图片描述

\documentclass{article}
\usepackage{etoolbox}
\usepackage{xcolor}

\makeatletter
\newcommand\ifcolorsequalthenelse[4]{%
    \extractcolorspec{#1}{\@spec@A}
    \extractcolorspec{#2}{\@spec@B}
    \ifdefequal{\@spec@A}{\@spec@B}%
    {%
        #3%
    }{%
        #4%
    }
}
\makeatother

\begin{document}

\colorlet{mycolor1}{red}
\definecolor{mycolor2}{rgb}{1 0 0.1}

\noindent
Test 1:\ifcolorsequalthenelse{mycolor1}{red}{equal}{not equal}\\
Test 2:\ifcolorsequalthenelse{mycolor1}{mycolor2}{equal}{not equal}

\end{document}

答案2

我解决了。

\makeatletter
   \extractcolorspec{mycolor1}{\@spec@A}
   \extractcolorspec{mycolor2}{\@spec@B}
   \ifthenelse{\equal{\@spec@A}{\@spec@B}}{
      %TRUE
   }{
      %FALSE
   }
\makeatother

相关内容