Re: [NTG-context] \define a command with square-bracket arguments

2012-09-28 Thread Sietse Brouwer
 Question for the others: What's the difference of \dodoubleargument
 and \dodoubleempty? I expected \dodoubleargument to throw an error
 since the arguments are supposed to be mandatory.

 In MkIV Hans didn’t add this check and in MkII he disabled is for command
 with three or less argument but even then you get only a message in the log
 when your command has no argument (i.e. a command with four argument
 complains only when it has zero argument but doesn’t complain when it
 has one to four arguments).

Wikified: http://wiki.contextgarden.net/Command/dodoubleempty
(I've been meaning to document that command for a while now. As a
complement to the existing explanation at
http://wiki.contextgarden.net/Commands_with_optional_arguments, I mean.)

--Sietse
___
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___

Re: [NTG-context] \define a command with square-bracket arguments

2012-09-28 Thread Hans Hagen

On 28-9-2012 14:41, Sietse Brouwer wrote:

Question for the others: What's the difference of \dodoubleargument
and \dodoubleempty? I expected \dodoubleargument to throw an error
since the arguments are supposed to be mandatory.


In MkIV Hans didn’t add this check and in MkII he disabled is for command
with three or less argument but even then you get only a message in the log
when your command has no argument (i.e. a command with four argument
complains only when it has zero argument but doesn’t complain when it
has one to four arguments).


Wikified: http://wiki.contextgarden.net/Command/dodoubleempty
(I've been meaning to document that command for a while now. As a
complement to the existing explanation at
http://wiki.contextgarden.net/Commands_with_optional_arguments, I mean.)


Originally the 'argument' variant reported a message but when the code 
was cleaned up that went away ... actually it means that we can say:


\let\dosingleargument\dosingleempty
\let\dodoubleargument\dodoubleempty
\let\dotripleargument\dotripleempty
\let\doquadrupleargument \doquadrupleempty
\let\doquintupleargument \doquintupleempty
\let\dosixtupleargument  \dosixtupleempty
\let\doseventupleargument\doseventupleempty

in syst-aux.mkiv, which is somewhat more efficient

There is still checking in the {} variants.

Hans


-
  Hans Hagen | PRAGMA ADE
  Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
 | www.pragma-pod.nl
-
___
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___

[NTG-context] \define a command with square-bracket arguments

2012-09-27 Thread Sietse Brouwer
Hi all,

As I understand it, \define[2] is preferred over \def#1#2 because it
refuses to overwrite existing commands.

\define[2]\mycommand{code code code}
defines a command to be invoked with
\mycommand{...}{...}

Can I use \define, or a related command, to define a command that
takes square-bracket arguments, like so:
\mycommand[...][...]
?

When I type
\define[1][2]\mycommand{code code code}
that doesn't work.

Cheers,
Sietse
___
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___


Re: [NTG-context] \define a command with square-bracket arguments

2012-09-27 Thread Thomas A. Schmitz

On 09/27/2012 05:45 PM, Sietse Brouwer wrote:

Hi all,

As I understand it, \define[2] is preferred over \def#1#2 because it
refuses to overwrite existing commands.

\define[2]\mycommand{code code code}
defines a command to be invoked with
\mycommand{...}{...}

Can I use \define, or a related command, to define a command that
takes square-bracket arguments, like so:
\mycommand[...][...]
?

When I type
\define[1][2]\mycommand{code code code}
that doesn't work.

Cheers,
Sietse
___


You know the wiki better than most, but I wonder: are you looking for 
this page?


http://wiki.contextgarden.net/Commands_with_optional_arguments

Thomas
___
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___


Re: [NTG-context] \define a command with square-bracket arguments

2012-09-27 Thread Marco Patzer
2012-09-27 Sietse Brouwer sbbrou...@gmail.com:

Hi Sietse,

 As I understand it, \define[2] is preferred over \def#1#2 because it
 refuses to overwrite existing commands.

\define overwrites existing commands with pleasure. In contrast to
\def it prints a message to the log file: “\mycommand is already
defined”.

 Can I use \define, or a related command, to define a command that
 takes square-bracket arguments, like so:
 \mycommand[...][...]

\def\mycommand
  {\dodoubleempty\domycommand}

\def\domycommand [#1][#2]
  {first: #1, second: #2}

\mycommand [foo] [bar]
\mycommand [foo][bar]
\mycommand [foo]

Question for the others: What's the difference of \dodoubleargument
and \dodoubleempty? I expected \dodoubleargument to throw an error
since the arguments are supposed to be mandatory.


Marco

___
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___