Open main menu

Changes

1,924 bytes added ,  12:27, 28 September 2012
Create entire page
{{Reference
|name=dodoubleempty
|attributes=
}}

== [[Help:Reference|Syntax]] ==
<table cellspacing="4" cellpadding="2" class="cmd">
<tr>
<td colspan="2" class="cmd">\dodoubleempty''\commmand''<!--
--></td>
</tr>
</table>

== Description ==

{{cmd|dodoubleempty}} is used to write commands that can take zero, one, or two square-bracketed arguments: if the user specifies less than two arguments, it adds empty arguments at the end to make up the missing numbers.

So, <tt>\dodoubleempty\command</tt> leads to:

\command[#1][#2] % or
\command[#1][] % or
\command[][] % ,

depending on the generosity of the user. Afterwards one can
use the {{cmd|iffirstargument|link=no}}, {{cmd|ifsecondargument|link=no}}, ... tests to determine how many arguments were actually passed.

There are variants of this command that will supply anywhere up to seven optional arguments:
* <tt>\dosingleempty</tt>
* <tt>\dodoubleempty</tt>
* <tt>\dotripleempty</tt>
* <tt>\doquadrupleempty</tt>
* <tt>\doquintupleempty</tt>
* <tt>\dosixtupleempty</tt>
* <tt>\doseventupleempty</tt>


== Example ==

This is the standard pattern for writing a command that takes an optional number of arguments:

<context mode=mkiv>
% This command accepts two optional arguments
\def\writename%
{\dodoubleempty
\dowritename}

% This command looks at how many non-empty arguments
% are supplied, and acts accordingly
\def\dowritename[#1][#2]%
{\ifsecondargument
Ms. #2 (first name #1)%
\else\iffirstargument
Ms. #1%
\else
No name supplied.%
\fi\fi}

\writename[Snow][White] \par
\writename[White] \par
\writename
</context>

== See also ==
* [[Commands with optional arguments]]
* {{src|syst-aux.mkiv}}
* {{cmd|dodoublegroupempty}} to supply optional arguments in braces

== Help from ConTeXt-Mailinglist/Forum ==
All issues with:
{{Forum|dodoubleempty}}

[[Category:Command/Internals|dodoubleempty]]