为什么下面的代码不产生两行各只有一个单词“baz”的文本?(而是只有一行用于直接调用GetTranslation
)。
\documentclass{article}
\RequirePackage{translations}
\DeclareTranslationFallback {foo-bar}{baz}
\DeclareTranslation{English}{foo-bar}{baz}
\newcommand{\asdf}[1]{
\edef\translationkey{foo-#1}%
\GetTranslation{\translationkey}
}
\begin{document}
\GetTranslation{foo-bar}
\asdf{bar}
\end{document}
我认为这与宏的评估时间有关。
答案1
事实上,该论点\translationkey
必须扩展才能被消化\GetTranslation
。
\documentclass{article}
\RequirePackage{translations}
\DeclareTranslationFallback {foo-bar}{baz}
\DeclareTranslation{English}{foo-bar}{baz}
\newcommand{\asdf}[1]{%
\edef\translationkey{foo-#1}%
\expandafter\GetTranslation\expandafter{\translationkey}%
}
\begin{document}
\GetTranslation{foo-bar}
\asdf{bar}
\end{document}