我想使用 为包定义一个新命令xparse
。我的命令如下:
\NewDocumentCommand{\fancyCommand}{s o m}{
\def\@optional{#2}
\def\@mandatory{#3}
}
这是因为我需要强制和可选参数以供以后使用。我还想拥有 的布尔值#1
。我该如何存储这个值?我尝试通过\newif
和\newtoggl
使用该etoolbox
包进行构造,但这两种方式都会引发错误Undefined control sequence.
答案1
注意这些命令默认在 latex 中,xparse
仅在较旧的格式中才需要。提供了合适的测试,您不需要额外的软件包。
\documentclass{article}
\makeatletter
\NewDocumentCommand{\fancyCommand}{s o m}{%
\let\@star#1%
\def\@optional{#2}%
\def\@mandatory{#3}%
}
\def\test{%
The last command
\IfBooleanTF\@star{had a star}{did not have a star},
\ExpandArgs{o}\IfNoValueTF\@optional{no option}{option: \@optional},
argument: \@mandatory.}
\makeatother
\begin{document}
\fancyCommand{aaa} \test
\fancyCommand*[jj]{bbb} \test
\fancyCommand*{ccc} \test
\end{document}