\section
Optional arguments, in macros defined using \newcommand
, don’t
quite work like the optional argument to \section
. The default
value of \section
’s optional argument is the value of the
mandatory argument, but \newcommand
requires that you ‘know’ the
value of the default beforehand.
The requisite trick is to use a macro in the optional argument:
LaTeX itself has a trickier (but less readily understandable) method, using a macro\documentclass{article} \newcommand\thing[2][\DefaultOpt]{% \def\DefaultOpt{#2}% optional arg: #1, mandatory arg: #2% } \begin{document} \thing{manda}% #1=#2 \thing[opti]{manda}% #1="opti" \end{document}
\@dblarg
; inside LaTeX, the example
above would have been programmed:
In that code,\newcommand\thing{\@dblarg\@thing} \newcommand\@thing[2][\@error]{% optional arg: #1, mandatory arg: #2% }
\@thing
is only ever called with an optional and a
mandatory argument; if the default from the \newcommand
is
invoked, a bug in user code has bitten…
This question on the Web: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=oarglikesect