在 TeX 中,\uppercase{a\lowercase{bC}}
生成的Abc
不是ABC
,为什么?据我所知,TeX 会先运行内层组,然后再运行外层组,所以我认为应该是ABC
,甚至\uppercase{a\expandafter{\lowercase{bC}}}
不能改为bc
。BC
你能告诉我原因吗?
答案1
\uppercase
和原\lowercase
语被定义为将输入的标记转换为适当的大小写映射输出。它们执行不扩展并且它们本身不可扩展(因此例如\expandafter{\lowercase{ABC}}
与 相同{\lowercase{ABC}}
)。
可以在执行扩展的宏中实现大小写更改前改变大小写,或者完全避免使用和\uppercase
。\lowercase
这就是expl3
in 的作用\text_uppercase:n
——你得到了“类似函数”的结果,但这是设计选择宏等级。
答案2
你的假设是错误的。TeX 从 开始\uppercase
,因此它将内容物送下去,胃就会反流
A\lowercase{BC}
在输入流中,因为该\uppercase
操作仅作用于字符标记。因此,执行完 also 之后的最终结果\lowercase
与
Abc
已经输入了。