修改 xcolor 包以获得浅色和深色

修改 xcolor 包以获得浅色和深色

有人可以编写一个宏来修改xcolor包,以便!x当 x < 100 时使用会使颜色变暗,而当 x 介于 100 和 200 之间时使用会使颜色变浅吗?

例如,我希望能够执行 red!50red!150分别获得深红色和浅红色,而不必执行red!50!black

答案1

这里有个建议。我定义了一个命令\mycolorcmd,它的行为类似\color,但如果数字大于 100,则进行测试。以下输出由以下命令创建:

\mycolorcmd{blue} Text Text

\mycolorcmd{red!140} Text Text

\mycolorcmd{blue!40} Text Text

在此处输入图片描述

\documentclass{article}
\usepackage{xcolor}
\makeatletter
\def\mycolorcmd#1{\@mycolorcmd#1!\@nil}
\def\@mycolorcmd#1!#2\@nil{%
 \ifx\relax#2\relax
%    \color{#1}%
 \else%
   \edef\@tempa##1!{ \@tempcnta=##1}%
    \@tempa #2\relax
    \ifnum \@tempcnta > 100\relax%
      \advance \@tempcnta by -100\relax%
         \color{#1!\the\@tempcnta!black}%
   \else%
      \color{#1!\the\@tempcnta}%
   \fi
\fi%
}
\makeatletter
\begin{document}
\mycolorcmd{blue} Text Text

\mycolorcmd{red!140} Text Text

\mycolorcmd{blue!40} Text Text
\end{document}

相关内容