[tex-eplain] [solved] Re: Position of optional argument

Rodolfo Medina rodolfo.medina at gmail.com
Mon Apr 27 21:07:16 CEST 2009


Rodolfo Medina <rodolfo.medina at gmail.com> writes:

> On Sun, Apr 26, 2009 at 07:16:55PM +0100, Rodolfo Medina wrote:
>
>>> I've been using the eplain \@getoptionalarg and \@optionalarg commands in a
>>> certain macro.  It turns out to me that the optional argument must be put
>>> *before* the non optional argument.
>>>
>>> How can I set things - if possible - so to put it after it?
>
>
>
> Oleg Katsitadze <olegkat at gmail.com> writes:
>
>> Try this:
>>
>>     \input eplain
>>
>>     \makeatletter
>>
>>     \def\test#1{%
>>       \def\test at arg{#1}%
>>       \@getoptionalarg\@test
>>     }
>>
>>     \def\@test{%
>>       \message{^^JArg: \test at arg}%
>>       \message{^^JOptional arg: \@optionalarg}%
>>     }
>>
>>     \makeatother
>>
>>     \test{text}
>>     \test{text}[optional text]
>>
>>     \bye
>
>
>
> Thanks, but when I process the file I get error message:
>
> $ tex test
> This is TeX, Version 3.141592 (Web2C 7.5.5)
> (./test.tex (/home/rodolfo/macros/eplain-3.2.tex)
> Arg: text
> Optional arg:
> ! Use of \test doesn't match its definition.
> l.18     \test{
>                text}[optional text]
> ? h
> If you say, e.g., `\def\a1{...}', then you must always
> put `1' after `\a', since control sequence names are
> made up of letters only. The macro here has not been
> followed by the required stuff, so I'm ignoring it.
>
> ?
>
>
> Besides, it's not clear to me how I can use that to add an optional argument
> to, say, such a macro:
>
> \def\mymacro#1{%
>   Hallo, #1!
> }


All right, now it seems to work:

\catcode`@=\letter
\def\myhallo#1{%
  \def\temp <at> arg{#1}%
  \@getoptionalarg\@myhallo}

    \def\@myhallo{%
      \message{^^JArg: \temp <at> arg}%
      \message{^^JOptional arg: \@optionalarg}%
  \ifx\@optionalarg\empty Hallo, \temp <at> arg!
  \else Hallo, \temp <at> arg and \@optionalarg!
  \fi
    }


\myhallo{John}[Mary]

bla bla

\myhallo{Paul}


\bye


Thanks, bye
Rodolfo



More information about the tex-eplain mailing list