[tex-eplain] Position of optional argument

Dan Luecking luecking at uark.edu
Fri Feb 11 02:10:35 CET 2011

At 02:36 PM 2/10/2011, Rodolfo Medina wrote:
>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
>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

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:

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.


Daniel H. Luecking
Department of Mathematical Sciences
Fayetteville, Arkansas

More information about the tex-eplain mailing list