[tex-eplain] Position of optional argument
Rodolfo Medina
rodolfo.medina at gmail.com
Fri Feb 11 18:41:21 CET 2011
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
Rodolfo:
>>If, in the above code, in place of `\@getoptionalarg\@test' I put:
>> \ifnum0=0
>> \@getoptionalarg\@test
>> \else
>> \fi
>>then, strangely, it doesn't seem to work any more. I can't explain why. Can
>>anybody?
>
Dan Luecking <luecking at uark.edu> writes:
> Not so strange, as \@getoptionalarg looks ahead, sees
> \else rather than [, and concludes there is no optional arg.
>
> You have to get rid of the \else and the \fi before
> \@getoptionalarg is expanded. Try this instead:
> \ifnum0=0
> \expandafter\@getoptionalarg\expandafter\@test
> \else
> \fi
>
> The first expandafter expands the second which expands the
> \else. The expansion of \else removes everything up to and
> including \fi and the way is clear to see a following [
> (if there is one).
>
> You can omit the \else if there is nothing between it and \fi.
Thanks! But, if I put:
\ifx\@optionalarg\empty
\@test
\else
\expandafter\@getoptionalarg\expandafter\@test
\fi
, it doesn't seem to work either, and neither
\ifx\@optionalarg\empty
\@test
\else
\@getoptionalarg\@test
\fi
. How can I then have such a condition working?
Thanks again
Rodolfo
More information about the tex-eplain
mailing list