指定括号位置的规则是什么:
\foo[]{} %or
\foo{}[]
下面的语法很清楚,还有其他组合吗?
\foo{}{}
\foo{}
...
答案1
这xparse
包裹允许您轻松指定提供给参数的参数的类型和顺序。对于带方括号的可选参数[]
(最常见),使用o
或O{<default>}
,而强制参数则使用 指定m
。因此,例如,
\foo[]{}
:
\NewDocumentCommand{\foo}{o m}
\foo{}[]
:
\NewDocumentCommand{\foo}{m o}
\foo{}{}
:
\NewDocumentCommand{\foo}{m m}
xparse
允许上述内容的任意组合(最多 9 个参数)及其混合版本。这主要取决于应用或预期用途。例如,wrapfig
包裹提供wrapfig
采用以下形式的参数的环境(使用xparse
符号)o m o m
:。
使用多个连续的通常会避免使用可选参数,因为如果不指定前者就无法指定后者,这使得它们有点非可选,因此会造成混淆。
以“传统”方式生成可选参数是通过“辅助宏”实现的 - 根据提供的参数类型执行的附加宏。这允许将以下参数[]
视为可选:
\def\mycmd{\@ifnextchar[{\@with}{\@without}}
\def\@with[#1]#2{hello #1, have you met #2?}
\def\@without#1{goodbye #1}
上述简写来自带有和不带有可选参数的不同命令定义。