扩展其他语言环境中的语言命令

扩展其他语言环境中的语言命令

我希望让语言保持命令状态

\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}

相关内容