译者与译文

译者与译文

拥有两个包有什么意义翻译翻译具有大致相同的主要功能?

让我们考虑以下例子:

\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命令,但在哪种情况下这会是一个优势? 在我的上下文中,每次调用时必须考虑两个额外的\expandafters 似乎对我来说更是一个缺点。

答案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}

正如您所见,只有其中一个翻译被添加到了书签中:

在此处输入图片描述

相关内容