这xparse 手册(2018/02/21)规定可选参数:
- 吨
- 可选<字符>,这将导致一个值,
\BooleanTrue
如果<字符>是存在,\BooleanFalse
否则为不存在。给定为。t<char>
如果我使用签名:{st! O{t}d()}
那么编译将中止:
Argument of \somemacro has an extra }
如果我将 改为!
或?
,+
一切都会按预期进行。
我可以想象,像%
、#
或 这样的特殊字符\
是被禁止的。但无辜的感叹号呢?这可能是一个错误吗?或者感叹号不是那么无辜?是否有(禁止)使用字符的列表?
答案1
如果你使用 babel 语言(或其他包)定义激活字符,它们在这里可能会或可能不会起作用,具体取决于为字符赋予的具体定义。在 babel 的情况下,你可以使用
\shorthandoff{!}
确保!
安全,然后\shorthandon
赋予它特定于语言的定义。