我希望让语言保持命令状态
\newcommand{\testlang}{english}
\begin{otherlanguage}{\testlang}
...
\end{otherlangauge}
但是,\testlang
没有展开,并且我收到错误
! Package babel Error: You haven't defined the language testlang yet.
我见过许多与宏扩展相关的技巧,但我对它们的理解不够深入,不知道如何在这种情况下应用它们。
答案1
您可以使用以下技术手动扩展参数。最简单的方法是定义您自己的包装器环境。
% Expand the argument once:
\newenvironment{Otherlanguage}[1]{%
\expandafter\otherlanguage\expandafter{#1}%
}{\endotherlanguage}
% Alternative: argument is fully expanded
\newenvironment{Otherlanguage}[1]{%
\begingroup
\edef\temp{\endgroup\noexpand\otherlanguage{#1}}%
\temp
}{\endotherlanguage}
% usage
\begin{Otherlanguage}{\testlang}
...
\end{Otherlangauge}