[tex-eplain] Bug(?) in \newcommand
Daniel Henry Luecking
luecking at uark.edu
Wed Sep 12 20:49:29 CEST 2012
Hello:
The definition of \newcommand in eplain eventually invokes \@newcommand
(see below). This atempts to \edef the macro and leads to errors in simple cases:
\input eplain
\newcommand\y{\gobble}
\bye
Of course the error is
! Argument of \gobble has an extra }
But this is certainly a valid way to define \y, as long as one
does not try to expand its replacement text.
The definition of \newcommand comes from btxmac.tex, so perhaps
there is a reason for bibliographies to use \edef. I have never
used \newcommand in \eplain directly. I only encountered the error
when a supposedly plain.tex compatible file performed a test
\expandafter\ifx\csname newcommand\endcsname\relax
and then tried to \newcommand something instead of \def-ing it.
The questionable eplain.tex/btxmac.tex code follows. The \edef
occurs in the first line of \@newcommand, but is only invoked
in the last one:
\def\@newcommand#1{%
\def\@startdef{\expandafter\edef\@commandname}%
%
% The remainder of this long definition is irrelevant.
%
\expandafter\@startdef\@paramdef{#1}%
}%
Dan
Daniel H. Luecking
Department of Mathematical Sciences
University of Arkansas
Fayetteville, Arkansas
More information about the tex-eplain
mailing list