% macros definitions for e-TeX manual

\def\NTS{\leavevmode\hbox{$\cal N\kern-0.35em\lower0.5ex\hbox{$\cal T$}%
  \kern-0.2emS$}}
\def\eTeX{\leavevmode\hbox{$\varepsilon$}-\TeX}
\def\TeXbook{{\sl The \TeX\/book\/}}

\DeclareFontShape{OT1}{cmr}{bxrev}{n}{<-> xbmc10}{} % for right-to-left text
\DeclareTextFontCommand{\revrm}{\fontseries{bxrev}\fontshape{n}\selectfont}

\ifx\beginL\undefined % this is \TeX
  \def\XeT{X\kern-.125em\lower.5ex\hbox{E}\kern-.1667emT}
  \def\TeXeT{\TeX-\hbox{\revrm{\XeT}}}
  \def\TeXXeT{\TeX-\hbox{\revrm{-\XeT}}}
\else
  \ifx\eTeXversion\undefined % this is \TeXeT
    \def\TeXeT{\TeX-\revrm{\beginR\TeX\endR}}
    \def\TeXXeT{\TeX-\revrm{\beginR\TeX-\endR}}
  \else % this is \eTeX
    \def\TeXeT{\TeX-\revrm{\TeXXeTstate=1\beginR\TeX\endR}}
    \def\TeXXeT{\TeX-\revrm{\TeXXeTstate=1\beginR\TeX-\endR}}
  \fi
\fi

{\def~{|} \global\catcode`\|=\active \global\let|=~}
\def\|{\leavevmode\verb|}
\def\<{\leavevmode\hbox\bgroup\catcode`>=13$\langle$} % syntax quantity
\def\>{\/$\rangle$\egroup} % finish syntax quantity
\def\cstok#1{\leavevmode\thinspace\hbox{\vrule\vtop{\vbox{\hrule\kern1pt
        \hbox{\vphantom{\tt/}\thinspace{\tt#1}\thinspace}}
      \kern1pt\hrule}\vrule}\thinspace} % control sequence token
\def\[#1]{\thinspace{\tt#1}\thinspace} % keyword in syntax

\newenvironment{paramlist}%
 {\endgraf\parskip=0pt
  \advance\leftskip by5em \parindent=-2.5em}%
 {\endgraf}

\newenvironment{syntax}%
 {\endgraf\nobreak\medskip
  \begingroup \catcode`<=13 \catcode`[=13 \let|=\|%
  \let\par=\endsyntaxline \obeylines}%
 {\medbreak}

\def\endsyntaxline{\futurelet\next\syntaxswitch}
\def\syntaxswitch{\ifx\next\<\let\next=\syntaxrule
  \else\ifx\next\end\let\next=\endgroup
  \else\let\next=\continuerule\fi\fi \next}
\def\continuerule{\hfil\break\indent\qquad}
{\catcode`<=13 \catcode`>=13 \catcode`[=13
  \global\let<=\< \global\let>=\> \global\let[=\[
  \gdef\syntaxrule<{\endgraf\indent\<}}
\def\is{\ $\longrightarrow$ }
\def\alt{\ $\vert$ }
\def\more{whatever \TeXbook\ defines}
\def\ot#1{\|#1|$_{12}$} % an other token
\def\cs#1{{\tt\char`\\#1}}

\newenvironment{multilist}[2]%
 {$$\setbox\z@=\hbox\bgroup  % catch some funny things -> \mathord
  \let\a=\empty
  \let\b=\empty
  \count@=\z@
  \toks@={#2}%
  \def\item##1\cr
   {\ifnum \count@=\z@
      \count@=#1%
      \expandafter\def\expandafter\b\expandafter{\b\y{}}%
    \fi
    \advance\count@ by\m@ne
    \expandafter\def\expandafter\a\expandafter{\a\x{##1}}}%
  \ignorespaces}%
 {\loop
  \ifnum \count@>\z@
    \expandafter\def\expandafter\a\expandafter{\a\expandafter\z\b\relax}%
    \advance\count@ by\m@ne
  \repeat
  \def\x##1{\expandafter\y\b\relax{##1}}%
  \def\y\y##1##2\relax##3%
   {\ifx @##1@%
      \def\b{##2\y{##3}}%
    \else
      \def\b{##2\y{##1&##3}}%
    \fi}%
  \def\z\y##1##2\relax{\def\b{##2\y{##1}}}%
  \a
  \def\x
   {\expandafter\egroup\expandafter\halign\expandafter\bgroup
    \expandafter&\the\toks@\cr}%
  \def\y##1{\expandafter\def\expandafter\x\expandafter{\x##1\cr}}%
  \b
  \x\egroup $$}
