带有修饰的 NewDocumentCommand 不适用于不带括号的上标/下标

带有修饰的 NewDocumentCommand 不适用于不带括号的上标/下标

下面的例子

\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 中支持的语法。

相关内容