我有点困惑 LaTeX 如何解析方括号/可选宏参数。
我将尝试通过\section
具有一个可选参数和一个强制参数的宏来解释我的理解。如果您认为我有任何错误,请纠正我。
这
\documentclass{article}
\begin{document}
\section ab
\end{document}
找不到可选参数,而强制参数a
.b
则只是文本。使用{}
,可以对事物进行分组,因此
\section {ab}
作为强制参数ab
。空格无关紧要。
方括号[]
通常会被渲染为方括号。除非,看起来,如果它可以可能包含可选参数。这
\section[a]{b}
作为a
可选参数,b
作为强制参数。可选参数是否始终用方括号表示?
这
\section[a][b]{c}
作为a
可选参数,[
作为强制参数,并且b]{c}
仅仅是文本。
这似乎也表明,方括号当且仅当它们不具有可选参数的功能时才是方括号。这是正确的吗?
答案1
取决于命令。参数解析方式是命令特定的,而不是 TeX/LaTeX 强加的。
有些命令需要可选参数,然后将方括号解析为可选参数的开头。其他命令不需要可选参数,因此方括号只是一个参数。
请参阅以下示例:
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand{\mycmd}{o o m}{\IfValueTF{#1}{first #1}{nothing on one},
\IfValueTF{#2}{second #2}{nothing on two},
mandatory #3}
\newcommand\anothercmd[1]{My argument is /#1/}
\begin{document}
\mycmd{Hello}
\mycmd[1]{Hello}
\mycmd[1][2]{Hello}
\anothercmd{test}
\anothercmd[2]{Test}
\end{document}