有人可以编写一个宏来修改xcolor
包,以便!x
当 x < 100 时使用会使颜色变暗,而当 x 介于 100 和 200 之间时使用会使颜色变浅吗?
例如,我希望能够执行
red!50
并red!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}