方括号、可选参数的含义

方括号、可选参数的含义

我有点困惑 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}

相关内容