\documentclass{amsdtx}

\title{Technical notes on \amslatex/ version 1.2}
\author{American Mathematical Society\\Michael Downes}
\date{December 1994}

\providecommand{\etc}[1]{etc.}

\MakeShortVerb{\|}

\begin{document}
\maketitle

\section{Introduction}

These notes are miscellaneous remarks on some technical questions that
arose during the work on version 1.2 of \amslatex/. There are several
sections that could be added here but for the time being other work on
this release is getting higher priority. [mjd,4-Nov-1994]

\section{Why can't I use abbreviations for the \env{equation}
environment?}

Many users have discovered to their dismay that when switching from
ordinary \latex/ to the \pkg{amsmath} package, they are no longer able
to use abbreviations such as |\beq| |\eeq| for |\begin{equation}|
|\end{equation}|. This has to do with unfortunately nontrivial technical
complications: the environments such as \env{align} must read their
contents as a delimited macro argument because they do multipass
processing of the contents using algorithms inherited from Spivak's
\fn{amstex.tex}. The obvious solution---substitution of different
algorithms that do box shuffling instead of token shuffling for the
multipass calculations---would require rewriting these display
environments from the ground up; while that is a worthy goal, it was
beyond the original scope of the \amslatex/ project. We expect that goal
to be achieved some time in the future as soon as adequate development
time can be allocated for it.

\section{The \pkg{romref} package}

The reason for splitting out the \pkg{romref} package instead of
automatically incorporating it in the \cls{amsart} and \cls{amsbook}
classes is this: It involves low-level surgery on an important \latex/
command. This means that if ever this command changes in the future (as
it did between versions 2.09 and 2e of \latex/) we have a maintenance
problem. And the benefit that \pkg{romref} provides is something that
most users don't care much about. It can be used for in-house AMS
production but it need not be inflicted on all users. Instead we leave
the choice to the individual user.

\section{The \pkg{amsintsm} package}

The \pkg{amsintsm} package is still in the experimental stage. The
variety of notation for integrals and sums is so great it's difficult to
pick one's way through all the complications.

\section{Hyphenation in the documentation}

Hyphenation was allowed for certain long command names in
\fn{amsldoc.tex}; this presented technical difficulties because \latex/
normally deactivates hyphenation for tt fonts. The method chosen to
reinstate hyphenation was to reset \verb'\hyphenchar=45' for a select
few of the tt fonts (small, footnotesize, normalsize); see the
definition of \cn{allowtthyphens} in \fn{amsdtx.dtx}. Then a list of
all tt words in the document was gathered (from the \fn{.idx} file,
produced by the \cn{cn}, \cn{fn}, \cn{pkg}, etc. commands) and
\cn{showhyphens} was applied to this list. The result was another list
in the resulting \tex/ log, containing those words in a form suitable
for the argument of \cn{hyphenation}. That list was then edited by hand
to overrule undesirable hyphenations; words with acceptable hyphenations
were dropped from the list, as they don't need to be repeated there.

\end{document}

\typeout{This section checks all commands that must be redefined by ams
packages}

\makeatletter
%amsdtx
\CheckCommand*{\@starttoc}[1]{\begingroup
  \makeatletter
  \@input{\jobname.#1}\if@filesw
  \expandafter\newwrite\csname tf@#1\endcsname
             \immediate\openout
                 \csname tf@#1\endcsname \jobname.#1\relax
  \fi \global\@nobreakfalse \endgroup}

%amsmath
\CheckCommand*{\pr@m@s}{%
  \ifx'\@let@token
    \expandafter\pr@@@s
  \else
    \ifx^\@let@token
      \expandafter\expandafter\expandafter\pr@@@t
    \else
      \egroup
    \fi
  \fi}

%amsmath
%    \mathchardef can't be handled by \CheckCommand
\mathchardef\@tempa=\string"0230 \@check@eq\prime\@tempa

%romref
\CheckCommand*{\@setref}[3]{%
  \ifx#1\relax
    \protect\G@refundefinedtrue
    \nfss@text{\reset@font\bfseries ??}%
    \@latex@warning{Reference `#3' on page \thepage\space undefined}%
  \else
    \expandafter#2#1\null
  \fi}

%amscls
%    Can't use \CheckCommand here because of delimited arg.
\def\@tempa#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
     \let\@svsec\@empty\else
     \refstepcounter{#1}%
     \let\@@protect\protect
     \def\protect{\noexpand\protect\noexpand}%
     \edef\@svsec{\@seccntformat{#1}}%
     \let\protect\@@protect\fi
     \@tempskipa #5\relax
      \ifdim \@tempskipa>\z@
        \begingroup #6\relax
          \@hangfrom{\hskip #3\relax\@svsec}%
                    {\interlinepenalty \@M #8\par}%
        \endgroup
       \csname #1mark\endcsname{#7}\addcontentsline
         {toc}{#1}{\ifnum #2>\c@secnumdepth \else
                      \protect\numberline{\csname the#1\endcsname}\fi
                    #7}\else
        \def\@svsechd{#6\hskip #3\relax  %% \relax added 2 May 90
                   \@svsec #8\csname #1mark\endcsname
                      {#7}\addcontentsline
                           {toc}{#1}{\ifnum #2>\c@secnumdepth \else
                           \protect\numberline{\csname the#1\endcsname}%
                                     \fi
                       #7}}\fi
     \@xsect{#5}}

\@check@eq\@sect\@tempa

%amscls
\CheckCommand*{\trivlist}{\parsep\parskip\@nmbrlistfalse
  \@trivlist \labelwidth\z@ \leftmargin\z@
  \itemindent\z@
  \let\@itemlabel\@empty
  \def\makelabel##1{##1}}

%amscls
\CheckCommand*{\enumerate}{\ifnum \@enumdepth >3 \@toodeep\else
      \advance\@enumdepth \@ne
      \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list
      {\csname label\@enumctr\endcsname}{\usecounter
        {\@enumctr}\def\makelabel##1{\hss\llap{##1}}}\fi}

%amscls
\CheckCommand*{\itemize}{%
  \ifnum \@itemdepth >3 \@toodeep\else \advance\@itemdepth \@ne
  \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
  \list{\csname\@itemitem\endcsname}%
       {\def\makelabel##1{\hss\llap{##1}}}\fi}

%amscls
%    grumble \check@c not \long so the \par prevents use of
%    \CheckCommand [mjd,9-Dec-1994]
\def\@tempa#1#2#3#4#5#6{\if@noskipsec \leavevmode \fi
   \par \@tempskipa #4\relax
   \@afterindenttrue
   \ifdim \@tempskipa <\z@
     \@tempskipa -\@tempskipa \@afterindentfalse
   \fi
   \if@nobreak \everypar{}\else
     \addpenalty{\@secpenalty}\addvspace{\@tempskipa}\fi \@ifstar
     {\@ssect{#3}{#4}{#5}{#6}}%
     {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
\@check@eq\@startsection\@tempa

%amstext
\CheckCommand*{\label}[1]{\@bsphack
  \protected@write\@auxout{}%
         {\string\newlabel{#1}{{\@currentlabel}{\thepage}}}%
  \@esphack}

%romref
\CheckCommand*{\@setref}[3]{%
  \ifx#1\relax
    \protect\G@refundefinedtrue
    \nfss@text{\reset@font\bfseries ??}%
    \@latex@warning{Reference `#3' on page \thepage\space undefined}%
  \else
    \expandafter#2#1\null
  \fi}

\end{document}
