我有一个存储在变量中的字符串\word
,我想将其大写字母存储在另一个变量中\WORD
。如果我尝试
\def\WORD{\MakeUppercase{\word}}
\show\WORD
那么生成的消息\show
是\MakeUppercase {abc}
。大概我需要调整第一行的扩展顺序。我该怎么做?
答案1
事实上,\MakeUppercase
在将其大写之前先扩展其参数,因此我们可以执行以下操作。
\def\word{abcd}
\MakeUppercase{\gdef\noexpand\WORD{\word}}
\noexpand
阻止了 的扩展\WORD
,但\word
被扩展了。然后\MakeUppercase
将整个定义大写。该定义必须是全局的,因为\MakeUppercase
它在组内起作用。