仅带有可选参数的 xparse 命令失败

仅带有可选参数的 xparse 命令失败

我正在尝试使用 xparse 定义一个命令,该命令接受可选参数,但不接受强制参数。可选参数是一个数字,单个数字时可以正常工作,但多个数字时则不行。命令如下:

\usepackage{xparse}
\usepackage{xspace}

\NewDocumentCommand \HL { o } {\IfNoValueTF #1 {\emph{HL}\xspace}{\emph{HL} {#1}\xspace}}

\HL
(\HL[1])
(\HL[10])

我想要以下结果:

HL

HL1)

HL10)

但我明白这一点:

HL

HL1)

霍利霍利10)

答案1

由于#1可能存在多个标记,因此您应该始终将其放在括号中。因此您需要

\IfNoValueTF {#1}

这可以防止第二个或后面的标记被#1误解为真/假分支之一。 在您的例子中,\HL[10]仅测试1并将视为0条件的真分支,从而导致奇怪的输出。

相关内容