Changes

Jump to navigation Jump to search
m
added links to source
< [[Inside ConTeXt]]| [[Commands with KeyVal arguments]] >
In LaTeX you define a new command with an optional argument with "newcommand":
</texcode>
In ConTeXt there is perhaps a way to do the same. Otherwise, the key value method is preferred, see [[Commands with KeyVal arguments]].  <i>The following is my understanding of how to do this. It's currently untested; someone please test this and integrate it with the above. --[[User:Brooks|Brooks]]</i> In ConTeXt, the optional argument processing is handled as a two-step process. First, we write the command for the end-user as a wrapper command, which calls <cmd>dodoubleempty</cmd> (from <tt>[http://source.contextgarden.net/tex/context/base/syst-gen.tex syst-gen.tex</tt>]) to handle the arguments properly -- including the optional ones -- and then calls a "private" command that contains the internals of the macro. Note that this function call does not explicitly refer to the arguments at all.
<texcode>
Note that this makes both arguments optional -- something that is much more difficult to do in LaTeX ([http://www.tex.ac.uk/cgi-bin/texfaq2html?label=twooptarg but can be done]). This also means that we should reverse the order of arguments, since if the user specifies only one argument it will be treated as the first argument.
If you ''don't '' want any optional arguments, but still want your arguments enclosed in <tt>[]</tt> with appropriate handling for spaces (or line breaks) between the square brackets, use <cmd>dodoublearguments</cmd> instead of <cmd>dodoubleempty</cmd>. There are of course versions for other numbers of arguments, found by replacing <tt>double</tt> with <tt>single</tt> through <tt>seventuple</tt>; see <tt>[http://source.contextgarden.net/tex/context/base/syst-gen.tex syst-gen.tex</tt> ] for the exact names.
----
----
<i>Can someone test to see if <cmd>dosingleempty</cmd> and <cmd>dodoubleargument</cmd> can be chained, to get two square-bracketed arguments only one of which is optional?</i>--[[User:Brooks Brooks]]

Navigation menu