<..html eqnarray..>
\catcode‘\#=13 \catcode‘\!=6
\def\reg:eq:narray!1\cr{<.halign eqnarray.>}
\catcode‘\#=6 \catcode‘\!=12
-_-_-
<..halign eqnarray..>
\SaveMkHalignConf:g{eq:narray\if@eqnsw\else *\fi}\HRestore\noalign
\MkHalign#{<.eqnarray pattern.>}%
-_-_-
<..eqnarray pattern..>
\hskip\@centering$\displaystyle\tabskip\z@skip{#}$\@eqnsel
&\global\@eqcnt\@ne\hskip \tw@\arraycolsep \hfil${#}$\hfil
&\global\@eqcnt\tw@ \hskip \tw@\arraycolsep
$\displaystyle{#}$\hfil\tabskip\@centering
&\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss#\egroup \tabskip\z@skip
-_-_-
<..html eqnarray..>+
\def\:tempc{
\@@eqncr
\EndMkHalign \RecallMkHalignConfig
\csname b:eq:narray\if@eqnsw\else *\fi\endcsname
\global\advance\c@equation\m@ne
$$\@ignoretrue }
\HLet\endeqnarray=\:tempc
\def\:tempc{%
<.def :currentlabel for eqnarray.>%
\let\sv:halign=\halign \def\halign{\let\halign=\sv:halign
\eq:narray\halign}\o:eqnarray:}
\HLet\eqnarray=\:tempc
\let\eq:narray=\empty
\def\:tempc{\pic:MkHalign{eq:narray\if@eqnsw\else *\fi}}
\HLet\eq:narray=\:tempc
\def\c:eqnarray:{\c:eq:narray:} \NewConfigure{eq:narray}{6}
\expandafter\let\csname reg:eq:narray*\endcsname=\reg:eq:narray
\expandafter\def\csname c:eqnarray*:\endcsname{\csname
c:eq:narray*:\endcsname} \NewConfigure{eq:narray*}{6}
-_-_-
<..html eqnarray..>+
\let\snd:halign=\empty
\def\:temp[#1]{\ifnum 0=‘{\fi }\@@eqncr}
\HLet\@xeqncr=\:temp
\def\:temp{\let\reserved@a\relax
\ifcase\@eqcnt \def\reserved@a{& & &}\or
\def\reserved@a{& &}%
\or \def\reserved@a{&}\else
\let\reserved@a\@empty
\@latex@error{Too many columns in eqnarray environment}\@ehc\fi
\reserved@a <.fix eqnarray for /label.>%
\global\@eqnswtrue\global\@eqcnt\z@\cr}
\HLet\@@eqncr=\:temp
-_-_-
‘\append:def\endeqnarray{}’ is no good because the tail of the table falls out of the traced math environment. ‘ \def\endeqnarray{% \@@eqncr \egroup \global\advance\c@equation\m@ne \r:eqnar\t:eqnar\rc:roco $$\global\@ignoretrue }’ is not good, because halign doesn’t allow insertion iside the ‘$$’. There are two ‘\snd:halign’ out the ‘’’: one inseted here, and one defined into the math env. The first one is activated by the tracing of the math environment, immediately after the ‘$$’.
The indirection through \:temp is required due to the \fi without a visible \if.
<..fix eqnarray for /label..>
\if@eqnsw \@eqnnum
{\let\html:addr=\empty <.def :currentlabel for eqncr.>}%
\stepcounter{equation}\fi
-_-_-