\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}