假设我们希望用当前语言来表达文档中使用的颜色:
\documentclass[USenglish,ngerman]{article}
\pagestyle{empty}
\usepackage{babel}
\usepackage[x11names]{xcolor}
\usepackage{etoolbox}
\newcommand{\actionColor}{blue}
\newcommand{\actionColorGerman}{blau}
\begin{document}
Die Aktionen werden \ifdefempty{\actionColorGerman}{in Textfarbe}{\actionColorGerman} gesetzt.
\end{document}
产量
该行动成为蓝色法律。
(这意味着动作(无论动作在我的文本中意味着什么)都是蓝色字体。)
当前代码很糟糕,因为\actionColor
和\actionColorGerman
没有通过命令绑定在一起。例如,如果您更改/删除一个(例如blue
),您可能会忘记更改/删除另一个(此处blau
)。此外,如果您有十几个不同的语义颜色宏,\doodahXYZColor
其值为 ,blue
而另外十几个宏\gimmickXYZColor
的值为red
,则您必须添加十几个翻译,\doodahXYZColorGerman
其值为 ,blau
而另外十几个翻译的\gimmickXYZColorGerman
值为rot
。这是无用的重复。
是否有某个软件包已经完成了自动翻译颜色名称的练习?我不想重新发明自行车。理想情况下,我希望有一个宏
\colorInCurrentLanguage{…}
它接受一个参数(在我们的 MWE 中,\actionColor
)并返回其在当前文档语言中的翻译(在我们的 MWE 中,blau
)。
就我目前的目的而言,翻译成德语就可以了。