拥有两个包有什么意义翻译和翻译具有大致相同的主要功能?
让我们考虑以下例子:
\documentclass[USenglish,french,ngerman]{article}
\pagestyle{empty}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{translations}
\usepackage{translator}
\usepackage[x11names]{xcolor}
\newcommand{\actionColor}{blue}
\DeclareTranslation{ngerman}{blue}{blau}
\DeclareTranslation{french}{blue}{bleu}
\newtranslation[to=German]{blue}{blau}
\newtranslation[to=French]{blue}{bleu}
\begin{document}
\expandafter\GetTranslation\expandafter{\actionColor}
\translate{\actionColor}
\selectlanguage{french}
\expandafter\GetTranslation\expandafter{\actionColor}
\translate{\actionColor}%
\end{document}
正如预期的那样,输出是
蓝色 蓝色 蓝色
我是否遗漏了什么?好吧,翻译说他想要一个可扩展的版本翻译的\translate
命令,但在哪种情况下这会是一个优势? 在我的上下文中,每次调用时必须考虑两个额外的\expandafter
s 似乎对我来说更是一个缺点。
答案1
可扩展命令也适用于书签。为了避免使用 \expandafter,您可以简单地定义自己的包装器命令(我使用的\ExpandArgs
是 LaTeX 中的新命令,但\expandafter
也可以正常工作)。
\documentclass[USenglish,french,ngerman]{article}
\pagestyle{empty}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{translations}
\usepackage{translator}
\usepackage[x11names]{xcolor}
\newcommand{\actionColor}{blue}
\DeclareTranslation{ngerman}{blue}{blau}
\DeclareTranslation{french}{blue}{bleu}
\newtranslation[to=German]{blue}{blau}
\newtranslation[to=French]{blue}{bleu}
\usepackage{hyperref}
\newcommand\GetCmdTranslation[1]{\ExpandArgs{o}\GetTranslation{#1}}
\begin{document}
\section{\GetCmdTranslation{\actionColor}--\translate{\actionColor}}
\end{document}
正如您所见,只有其中一个翻译被添加到了书签中: