我正在尝试创建一个命令,从部分完整的定义颜色集中创建调色板。
为了确保调色板完整,我使用类似这样的行来使用后备默认值(如果未包含)。
\@ifundefined{\string\color@Red}{\definecolor{Red}{HTML}{eb3b47}}{}
这显然依赖于在设置调色板之前颜色Red
未定义。
为了确保这一点,前调色板设置好后,我运行\let\color@Red\undefined
。不幸的是,这似乎根本不影响颜色定义,因此这不起作用。
这是相当重要的功能,因为没有它,切换调色板实际上就不起作用。Google 尚未提供帮助,所以我希望有人能为我指明正确的方向。
平均能量损失
\documentclass{article}
\usepackage{xcolor}
\begin{document}
\definecolor{Red}{HTML}{eb3b47}
\textcolor{Red}{This is Some Text}
\makeatletter
\let\color@Red\undefined
\makeatother
% Red should be undefined --- it isn't
\textcolor{Red}{This is Some Text}
\end{document}
答案1
你思考通过 定义的颜色\definecolor{foo}{.}{..}
会创建\color@foo
。但是,它实际上会创建\\color@foo
。因此,要取消定义颜色,请使用
\expandafter\let\csname\string\color@Red\endcsname\undefined
类似的讨论也包含在TeXbook。