是否可以使用 xparser 来获得可选参数和带括号的强制参数?

是否可以使用 xparser 来获得可选参数和带括号的强制参数?

我试图强调xparse并找到我尝试过但未在任何地方记录的东西。此代码片段无法编译,我不明白为什么。

\documentclass{article}

\usepackage{xparse}

\DeclareDocumentCommand\mycom{gm}{%
  Optional: \IfNoValueTF{#1}{Empty}{#1}\par
  Mandatory: #2}

\begin{document}

\mycom{MAN}

\mycom{OPT}{MAN}

\end{document}

根据我在文档中读到的内容,这应该会产生类似

Optional: Empty
Mandatory: MAN

Optional: OPT
Mandatory: MAN

我是否错误地阅读了文档?

答案1

在第一种情况下,找到了可选参数,因为有一个括号;然后 TeX 寻找强制参数,下一个标记是\par(由空行生成),这会引发错误,因为强制参数不够“长”。

可选参数应该是第二个;这只是逆转测试的问题:

\documentclass{article}

\usepackage{xparse}

\DeclareDocumentCommand\mycom{mg}{%
  \IfNoValueTF{#2}
    {Mandatory: #1}
    {Optional: #1; Mandatory: #2}}

\begin{document}

\mycom{MAN}

\mycom{OPT}{MAN}

\end{document}

不要使用g,它更容易。

相关内容