我正在尝试编写一个小程序包,根据模板中使用的教师选择定义强调色。如果教师不存在,我想生成一条错误消息。我目前有以下内容:
thecolors.sty:
\NeedsTeXFormat{LaTeX2e}
\providesPackage{thecolors}{2021/07-05 v1.0 LaTeX2e document class}
\RequirePackage{kvoptions}
\RequirePackage{xcolor}
\SetupKeyvalOptions{
family = ugcol,
prefix = ugcol@
}
% ug is the default if no faculty is given
\DeclareStringOption[ug]{faculty}[ug]
\ProcessKeyvalOptions*
\definecolor{ug}{RGB}{255, 210, 0}
\definecolor{lw}{RGB}{241,164,43}
\definecolor{re}{RGB}{220,78,40}
% Now I need something like (THIS DOESN'T WORK)
\ifdefined \csname\string\color@\ugcol@faculty\endcsname
\xglobal\colorlet{ugaccent}{\ugcol@faculty}
\else
\PackageError{theclors}{The faculty \ugcol@faculty \space doesn't exist}
\fi
有人告诉我颜色被存储为xcolor
。color@xxx
所以我试图检查 是否color@xxx
被定义,其中xxx
是 中找到的字符串\ugcol@faculty
。但我显然以一种非常错误的方式这样做。
然后应在文档中使用此包:
\documentclass[a4paper,11pt]{article}
\usepackage[faculty = lw]{thecolors}
\begin{document}
blabla some text.
\color{ugaccent} WHAT IS THIS COLOR?
\end{document}
非常感谢您的帮助。
答案1
\ifcsname
根据 Ulrike Fischer 的评论:这个问题已经通过如下示例解决:
\ifcsname \string\color@\ugcol@faculty\endcsname
\xglobal\colorlet{ugaccent}{\ugcol@faculty}
\else
\PackageError{theclors}{The faculty \ugcol@faculty \space doesn't exist}
\fi