\uppercase 无法在文本生成命令中起作用

\uppercase 无法在文本生成命令中起作用
    \newcommand{\testcommand}{A foo Bar.}
    \uppercase{abc}
    \uppercase{\testcommand}

生产

ABC A foo 酒吧。

代替

ABC A FOO 酒吧。

为什么?我该如何解决?

答案1

您必须扩展\testcommand第一个,因为\uppercase它在令牌级别执行字符的更改。

更好地利用\MakeUppercase{\testcommand}

\documentclass{article}

\begin{document}

\newcommand{\testcommand}{A foo Bar.}
\uppercase{abc}
\uppercase\expandafter{\testcommand}

\MakeUppercase{\testcommand}  

\end{document}

在此处输入图片描述

答案2

为什么?因为它的定义就是这样的,它是一个 token 级别的转换,并且 token\testcommand是不变的,它只影响字符 token。

您应该使用\MakeUppercase,这是一个在大写之前进行扩展并进行其他调整的乳胶命令。

相关内容