我似乎无法让基本的 xparse 工作。这看起来像是一个错误,但这个例子感觉太基础了,我觉得一定是有什么地方我不理解如何使用它。这是我的测试示例:
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand\Row{O{} O{}}{
Token1=#1 Token2=#2\par
}
\begin{document}
\Row{A}{B} \par
\Row{C} \par
\Row \par
\end{document}
输出结果为
Token1= Token2= AB Token1= Token2= C Token1= Token2=
仅当未提供令牌时,我才想要空的 {} 值(这就是我认为的“O{}”的意思),所以不确定为什么我只看到前两种情况的默认值。
为什么输出中会出现第 2 行和第 3 行?这好像我实际上声明了
\NewDocumentCommand\Row{O{} O{}}{ Token1=#1 Token2=#2\par **#1#2** }
但事实并非如此。
答案1
使用
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand\Row{O{} O{}}{
Token1=#1 Token2=#2\par
}
\begin{document}
\Row[A][B] \par
\Row[C] \par
\Row \par
\end{document}
可选参数应该放在方括号中。
您使用的方式是,它\Row{A}{B}
被视为\Row
没有可选参数的命令,后跟文本 {A}{B},它将被排版为 AB。