下面的例子
\documentclass{article}
\NewDocumentCommand{\K}{e{^}}{{\exp(\IfValueT{#1}{#1}n)}}
\begin{document}
These work \( \K, 2^{\K^{2}}, 2_{\K}, 2^{\K}, \log(\K)\).
These do not \( 2_\K , 2^\K \).
\end{document}
显示我的命令带有修饰的情况(我使用的是 TeXLive 2020)。这是预期的吗?如何修复命令定义以使所有示例都能正常工作?
答案1
下标和上标应该总是用括号括起来。TeX 处理_
和^
是否后面跟着非括号内容的规则取决于标记的扩展行为。这是有问题的,因为
- 扩张行为并不总是很明显
- 规则与争论不同
_
如果或^
是活动标记,而不是使用 TeX 的 catcode 方法,结果可能会有所不同
相比之下,_{...}
/^{...}
总是工作一样的方法:这是仅有的LaTeX 中支持的语法。