我正在尝试使用 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
条件的真分支,从而导致奇怪的输出。