summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/amscls/amsdtx.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/amscls/amsdtx.dtx')
-rw-r--r--Master/texmf-dist/source/latex/amscls/amsdtx.dtx1192
1 files changed, 1192 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/amscls/amsdtx.dtx b/Master/texmf-dist/source/latex/amscls/amsdtx.dtx
new file mode 100644
index 00000000000..cd9bb13b2c2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/amscls/amsdtx.dtx
@@ -0,0 +1,1192 @@
+%%% ====================================================================
+%%% @LaTeX-file{
+%%% filename = "amsdtx.dtx",
+%%% version = "2.06",
+%%% date = "2004/08/06",
+%%% time = "12:18:49 EDT",
+%%% checksum = "19929 1192 3506 39423",
+%%% author = "Michael J. Downes, updated by David M. Jones",
+%%% copyright = "Copyright 1996, 1999, 2004
+%%% American Mathematical Society,
+%%% all rights reserved. Copying of this file is
+%%% authorized only if either:
+%%% (1) you make absolutely no changes to your copy,
+%%% including name; OR
+%%% (2) if you do make changes, you first rename it
+%%% to some other name.",
+%%% address = "American Mathematical Society,
+%%% Technical Support,
+%%% Publications Technical Group,
+%%% 201 Charles Street,
+%%% Providence, RI 02904,
+%%% USA",
+%%% telephone = "401-455-4080 or (in the USA and Canada)
+%%% 800-321-4AMS (321-4267)",
+%%% FAX = "401-331-3842",
+%%% email = "tech-support@ams.org (Internet)",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "latex, amslatex, ams-latex, user documentation",
+%%% supported = "yes",
+%%% abstract = "This is the source for two document classes, amsdtx
+%%% and amsldoc, used to produce AMS user documentation
+%%% or technical documentation.",
+%%% docstring = "The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%% }
+%%% ====================================================================
+%
+% \iffalse
+% The following section of code makes this file self-printable.
+%<*driver>
+\NeedsTeXFormat{LaTeX2e}
+\documentclass{amsdtx}
+\newcommand{\rp}{\let\PBS\\\raggedright\let\\\PBS}
+
+\makeindex
+
+\CodelineIndex
+
+\begin{document}
+\title{The \cls{amsldoc} and \cls{amsdtx} document classes}
+\author{American Mathematical Society\\Michael Downes\\
+ updated by David M. Jones}
+\date{Version \fileversion, \filedate}
+\hDocInput{amsdtx.dtx}
+\PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+%^^A If this file is printed by itself the \fileversion and \filedate
+%^^A information will come from the file header rather than from the
+%^^A \ProvidesClass command. See \hDocInput.
+% \maketitle
+%
+% \tableofcontents
+%
+% \MakeShortVerb\|
+% \section{Introduction}
+% This file is the source for two documentclasses, \cls{amsldoc}
+% (used for the \amslatex/ user's guide) and \cls{amsdtx} (used for
+% printing AMS \fn{.dtx} files). The generic \cls{book} class is used
+% as a base, but the \cls{amsdtx} class is modified to serve as an
+% article-type class. This affects the form of documentation files
+% mainly in the use of \cn{maketitle} and \cn{chapter}.
+%
+% \begin{table}
+% \caption{Features of the \cls{amsldoc} and \cls{amsdtx} classes}
+% \newcommand{\rpth}{\rp{.75}}
+% \centering
+% \begin{tabular}{lp{.65\columnwidth}}
+% Command Name& Purpose\\
+% \hline
+% \cn{cn}& \rp To print a user command name: \verb"\cn{title}"; leading
+% backslash can be optionally included for control symbols:
+% \verb"\cn{\%}". The \cn{cn} command works properly even in macro
+% arguments (compare to, e.g., \cn{verb}\verb"'\newif'"). But beware
+% of a fragile control symbol (are there any?) in a moving argument.\\
+% \cn{cs}& \rp `Control sequence': to print an internal command name,
+% not intended for the end user\\
+% \cn{env}& \rp To print an environment name: \verb"\env{table}"\\
+% \cn{pkg}& \rp To print a package name: \verb"\pkg{eufrak}"\\
+% \cn{cls}& \rp To print a class name: \verb"\cls{book}"\\
+% \cn{opt}& \rp To print the name of a class or package option:
+% \verb"\opt{twocolumn}"\\
+% \cn{bst}& \rp To print the name of a \bibtex/ style
+% \verb"\bst{amsalpha}"\\
+% \cn{fn}& \rp To print a file name or font name: \verb"\fn{T1enc.def}",
+% \verb"\fn{cmsy10}"\\
+% \cn{fnt}& \rp To print a font name: \verb"\fn{cmsy10}" \\
+% \cn{cnt}& \rp To print a counter name: \verb"\fn{topnumber}" \\
+% \cn{qc}& \rp To quote a single character: \verb"\qc{\%}";
+% this works properly for special characters, even in macro
+% arguments, unlike e.g., \verb"\verb'%'"\\
+% \cn{latex/} etc.& \rp Convenient forms of \cn{LaTeX}, \cn{TeX},
+% \cn{BibTeX}, etc. that are easier to type and have a trailing slash
+% to eliminate the following-space problem (without needing different
+% markup in different contexts)
+% \end{tabular}
+% \end{table}
+%
+% \StopEventually{}
+%
+% Standard starting pieces. (Note: the reason each \cn{ProvidesClass}
+% command is placed on a line by itself, with separate begin and end
+% guards for docstripping, is to make automatic update of file date
+% and version slightly easier and more robust.)
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX)
+[1995/06/01]% LaTeX date must be June 1995 or later
+%<*amsldoc>
+\ProvidesClass{amsldoc}[2004/08/06 v2.06]
+%</amsldoc>
+%<*amsdtx>
+\ProvidesClass{amsdtx}[2004/08/06 v2.06]
+%</amsdtx>
+% \end{macrocode}
+%
+% \section{Implementation}
+% Start with the generic book class as a base.
+% \begin{macrocode}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}}
+\ProcessOptions
+\LoadClass{book}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\IfFileExists{url.sty}{%
+ \RequirePackage{url}\relax
+ \@gobble
+}{%
+ \@firstofone
+}
+{
+ \DeclareRobustCommand{\url}[1]{%
+ \def\@tempa{#1}%
+ \texttt{\urlsetup $\expandafter\strip@prefix\meaning\@tempa$}%
+ }%
+ \def\urlsetup{%
+ \check@mathfonts \textfont\@ne\the\font \textfont\z@\the\font
+ \urlfix +\urlfix\=\urlfix\:\urlfix\-\urlfix\.\urlfix\,\urlfix\;%
+ \urlbreak\&\urlbreak\/\urlbreak\?%
+ }%
+ \def\urlbreak#1{%
+ \mathcode`#1="8000
+ \begingroup \lccode`\~=`#1 \lowercase{\endgroup \edef~}%
+ {\mathchar\number`#1\penalty\hyphenpenalty}%
+ }%
+ \def\urlfix#1{%
+ \mathcode`#1=`#1\relax
+ }%
+}
+% \end{macrocode}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \begin{macrocode}
+\providecommand{\qq}[1]{\textquotedblleft#1\/\textquotedblright}
+\providecommand{\mdash}{\textemdash\penalty\exhyphenpenalty}
+\providecommand{\ndash}{\textendash\penalty\exhyphenpenalty}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\let\@xp\expandafter
+% \end{macrocode}
+% \section{Indexing primitives}
+%
+% Unlike \pkg{amsdtx}, \pkg{amsldoc} doesn't load the \pkg{doc}
+% package, so we need to provide the following logical names. The
+% values are consistent with \fn{makeindex}'s default conventions.
+% \begin{macrocode}
+%<*amsldoc>
+\def\actualchar{@}
+\def\quotechar{"}
+\def\levelchar{!}
+\def\encapchar{|}
+\def\verbatimchar{+}
+% \end{macrocode}
+% We also need the \cs{ifcodeline@index} switch.
+% \begin{macrocode}
+\newif\ifcodeline@index
+%</amsldoc>
+% \end{macrocode}
+%
+% \begin{macro}{\autoindex}
+% When generating a codeline index, this encapsulates the page
+% number in italics.
+% \begin{macrocode}
+\newcommand*{\autoindex}[1]{%
+ \index{#1\ifcodeline@index\encapchar usage\fi}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ntt}
+% To avoid font substitution warnings we make the tt font always
+% print in the normal weight and shape.
+% \begin{macrocode}
+\newcommand{\ntt}{\normalfont\ttfamily}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\indexcs}
+% Index a control sequence without printing it. Note
+% non-long. The \cs{@nobslash} strips off an optional leading
+% backslash before passing the control sequence name to
+% \cs{@indexcs}. This means that |\indexcs{\cs}| and
+% |\indexcs{cs}| produce the same index entry.
+% \begin{macrocode}
+\newcommand*{\indexcs}[1]{%
+ \@xp\@xp\@xp\@indexcs\@xp\@nobslash\string#1\@nil
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@indexcs}
+% Given |cs| as an argument, this writes something like
+% |cs@\verb"*+\cs+| to the \fn{.idx} file (or |cs=\verb!*+\cs+| if
+% using \fn{doc.sty}).
+% \begin{macrocode}
+\def\@indexcs#1\@nil{%
+ \autoindex{#1\actualchar
+ \string\verb\quotechar*\verbatimchar
+ \@xp\@bothoftwo\string\ #1\@empty
+ \verbatimchar
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@bothoftwo}
+% This has the effect of removing spaces before each of the
+% arguments. In particular, it removes the space generated by
+% \verb*+\string\ + above.
+% \begin{macrocode}
+\def\@bothoftwo#1#2{#1#2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\category@index}
+% \begin{macrocode}
+\def\category@index#1#2{%
+ {\ntt#2}%
+ \@category@index{#1}{#2}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@category@index}
+% \begin{macrocode}
+\def\@category@index#1#2{%
+ \autoindex{%
+ #2\actualchar\string\texttt{#2}%
+ \ifx\@nil#1\@nil\else\space#1\fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Some functions to support \cn{cn} etc. For most of these commands
+% we don't really want them to be \cs{long}! But in some early
+% releases of \LaTeXe\ the \verb'*' form of \cn{newcommand} was not
+% yet available.
+%
+% We use the name \cn{bslchar} instead of \cn{bslash} to avoid
+% potential conflict with the \pkg{doc} package \cn{bslash} command.
+% Unlike \cn{bslash}, \cn{bslchar} survives unlimited
+% writing/expansion because it is a chardef.
+% \begin{macrocode}
+\chardef\bslchar=`\\ % p. 424, TeXbook
+\newcommand{\addbslash}{\expandafter\@addbslash\string}
+\def\@addbslash#1{\bslchar\@nobslash#1}
+\newcommand{\nobslash}{\expandafter\@nobslash\string}
+\def\@nobslash#1{\ifnum`#1=\bslchar\else#1\fi}
+% \end{macrocode}
+%
+% \begin{macro}{\@boxorbreak}
+% Start up for a \cn{cs} or \cn{cn} command, adds an \cs{hbox} if in
+% math, or an allowbreak penalty if the preceding item is not a space.
+% (In case two such commands are used side-by-side.)
+% \begin{macrocode}
+\def\@boxorbreak{%
+ \leavevmode
+ \ifmmode\hbox\else\ifdim\lastskip=\z@\penalty9999 \fi\fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Control sequence. The function \cn{addbslash} makes this command
+% also usable for some special control sequences like \cn{\%} \cn{\}}
+% \cn{\{}: instead of writing |\cs{%}| which doesn't work, you can
+% write |\cs{\%}|.
+% \begin{macrocode}
+\DeclareRobustCommand{\cs}[1]{%
+ \@boxorbreak{%
+ \ntt
+ \addbslash#1\@empty
+ \@xp\@xp\@xp\@indexcs\@xp\@nobslash\string#1\@nil
+ }%
+}
+% \end{macrocode}
+%
+% Allow distinguishing non-private `command names' that will be
+% visible to the user from internal (mostly private) `control
+% sequences'.
+% \begin{macrocode}
+\let\cn\cs
+% \end{macrocode}
+%
+% The following items should not normally appear in math mode so they
+% don't need to call \cs{@boxorbreak}.
+%
+% \latex/ documentclass name.
+% \begin{macrocode}
+\DeclareRobustCommand{\cls}{\category@index{class}}
+% \end{macrocode}
+%
+% \latex/ package name.
+% \begin{macrocode}
+\DeclareRobustCommand{\pkg}{\category@index{package}}
+% \end{macrocode}
+%
+% \latex/ option name.
+% \begin{macrocode}
+\DeclareRobustCommand{\opt}{\category@index{option}}
+% \end{macrocode}
+%
+% Environment name.
+% \begin{macrocode}
+%<amsdtx>\DeclareRobustCommand{\env}[1]{{\ntt#1}\SpecialEnvIndex{#1}}
+%<amsldoc>\DeclareRobustCommand{\env}{\category@index{environment}}
+% \end{macrocode}
+%
+% File name.
+% \begin{macrocode}
+\DeclareRobustCommand{\fn}{\category@index{}}
+% \end{macrocode}
+%
+% \bibtex/ style.
+% \begin{macrocode}
+\DeclareRobustCommand{\bst}{\category@index{\string\BibTeX{} style}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\cnt}{\category@index{counter}}
+\DeclareRobustCommand{\fnt}{\category@index{font}}
+% \end{macrocode}
+%
+% With long command names or file names we sometimes prefer to allow
+% hyphenation in the tt font (in combination with suitable
+% \cn{hyphenation} statements for individual documents). To make this
+% work we must turn off the feature of \latex/ that disables the
+% hyphenchar of the tt fonts.
+%
+% The method shown here depends on the assumption that OT1 encoding
+% will be used for the tt fonts. An encoding-independent method would
+% be more awkward: You'd have to explicitly load the relevant
+% fonts, let's say by using \cn{AtBeginDocument}, and undo the
+% hyphenchar change individually for each font.
+%
+% Instead we force loading, or possibly reloading (depending on the
+% preload options used locally for creating the \latex/ format file),
+% of the \fn{OT1/cmtt} fd file, and then clear the macro
+% \cs{OT1+cmtt} which contains code to execute whenever a font of
+% this family is first loaded. The default value is to turn off the
+% hyphenchar, and that's what we don't want.
+%
+% This method is not especially palatable but other methods that
+% don't involve loading the fd file are significantly less reliable.
+% \begin{macrocode}
+\def\allowtthyphens{\begingroup
+ \fontencoding{OT1}\fontfamily{cmtt}%
+% \end{macrocode}
+% Undefine the csname that \cs{try@load@fontshape} tests to determine
+% whether the fd file needs loading. Then call
+% \cs{try@load@fontshape}. Then we can remove the `turn off
+% hyphenation' code, which as it happens resides in the same csname
+% that was tested.
+% \begin{macrocode}
+ \expandafter\let\csname OT1+cmtt\endcsname\relax
+ \try@load@fontshape
+ \endgroup
+ \expandafter\let\csname OT1+cmtt\endcsname\@empty
+}
+% \end{macrocode}
+%
+% We allow some slop at the right margin because we have some
+% long control sequence names and verbatim text to deal with. Also
+% ignore underfull hboxes and vboxes unless they are really bad.
+% \begin{macrocode}
+\hfuzz2pc
+\vbadness9999 \hbadness5000
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\AmS{{\protect\usefont{OMS}{cmsy}{m}{n}%
+ A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\latex/{{\protect\LaTeX}}
+\def\amslatex/{{\protect\AmS-\protect\LaTeX}}
+\def\tex/{{\protect\TeX}}
+\def\amstex/{{\protect\AmS-\protect\TeX}}
+\def\bibtex/{{Bib\protect\TeX}}
+% \end{macrocode}
+%
+% \cn{makeindex} command is already used for other purposes.
+% \begin{macrocode}
+\def\makeindx/{MakeIndex}
+% \end{macrocode}
+%
+% Don't allow a break after the hyphen:
+% \begin{macrocode}
+\def\xypic/{XY\mbox{-}pic}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand{\Textures}{\textit{Textures}}
+% \end{macrocode}
+%
+% `Meta' macro.
+% \begin{macrocode}
+\def\<#1>{\textit{$\langle$#1\/$\rangle$}}
+% \end{macrocode}
+%
+% Reduce itemsep in lists.
+% \begin{macrocode}
+\def\@listi{%
+ \leftmargin\leftmargini
+ \topsep 3\p@ \@plus2\p@ \@minus\p@
+ \parsep \p@ \@plus\p@ \itemsep\parsep
+}
+\let\@listI\@listi
+\@listi
+\def\@listii{%
+ \leftmargin\leftmarginii
+ \labelwidth\leftmarginii \advance\labelwidth-\labelsep
+ \topsep\p@\@plus\p@ \@minus\p@
+ \parsep\z@skip \itemsep\z@skip
+}
+\def\@listiii{%
+ \leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii \advance\labelwidth-\labelsep
+ \topsep\z@skip \parsep\z@skip \itemsep\z@skip
+}
+% \end{macrocode}
+%
+% An environment to encapsulate remarks relevant to old versions but
+% not essential for the current version.
+% \begin{macrocode}
+\newenvironment{histnote}{%
+ \trivlist\item[\hspace{\labelsep}\bfseries Historical Note:]%
+}{%
+ \endtrivlist
+}
+% \end{macrocode}
+%
+% Turn off \cs{autoindex} during \cn{tableofcontents} or similar.
+% \begin{macrocode}
+\def\@starttoc#1{\begingroup
+ \let\autoindex\@gobble
+ \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}
+% \end{macrocode}
+%
+% Make glossary commands a no-op for the moment. [mjd,1994/10/03]
+% Provide a \cn{secref} command for section references.
+% \begin{macrocode}
+%<*amsldoc>
+\newcommand{\gloss}[1]{}
+%</amsldoc>
+\newcommand*{\secref}[1]{\S\ref{#1}}
+% \end{macrocode}
+%
+% We can write |\qc{\%}| to quote a single
+% character in situations where |\verb"%"| would not work, mainly
+% when text is read as a macro argument (e.g., footnotes).
+% \begin{macrocode}
+\newcommand{\qc}[1]{}% check for prior definition
+\edef\qc#1{\noexpand\protect\expandafter\noexpand\csname qc \endcsname
+ \noexpand\protect#1}
+% \end{macrocode}
+% For this function the first argument is \cn{protect} and just needs
+% to be discarded. The method for removing a leading backslash is to
+% turn off \cs{escapechar}; this is more forgiving of variations like
+% |\qc{$}|. If the argument is `|\ |' we print a cmtt visible-space
+% character, \qc{\ }.
+% \begin{macrocode}
+\@namedef{qc }#1#2{\begingroup\ntt
+ \ifx\ #2\char`\ \else\escapechar\m@ne\string#2\fi\endgroup}
+% \end{macrocode}
+% Declare a few character names to avoid e.g., indexing difficulties.
+% \begin{macrocode}
+\DeclareRobustCommand{\qcat}{\qc\@}%
+\DeclareRobustCommand{\qcamp}{\qc\&}%
+\DeclareRobustCommand{\qcbang}{\qc\!}%
+% \end{macrocode}
+%
+% \begin{macro}{\arg}
+% Change \cn{arg} to print a macro argument number:
+% \begin{macrocode}
+\DeclareRobustCommand{\arg}[1]{{\ntt\##1}}
+% \end{macrocode}
+% \end{macro}
+%
+% We need to emulate the \pkg{amsthm} \cn{qedsymbol} for the
+% \amslatex/ user's guide.
+% \begin{macrocode}
+%<*amsldoc>
+\newcommand{\openbox}{\leavevmode
+ \hbox to.77778em{%
+ \hfil\vrule
+ \vbox to.675em{\hrule width.6em\vfil\hrule}%
+ \vrule\hfil}}
+\newcommand{\qedsymbol}{\openbox}
+%</amsldoc>
+% \end{macrocode}
+%
+% Logical markup for e-mail address:
+% \begin{macrocode}
+%<amsldoc>\def\mail{\texttt}
+% \end{macrocode}
+%
+% Shorthand for indexing:
+% \begin{macrocode}
+%<*amsldoc>
+\def\*#1{\def\@tempa{#1}\def\@tempb{*}%
+ \ifx\@tempa\@tempb \expandafter\index
+ \else #1\index{#1}\fi}
+%</amsldoc>
+% \end{macrocode}
+%
+% Non-indexed \cn{cn} (maybe call this |\cn*|?)
+% \begin{macrocode}
+\def\ncn#1{{\let\index\@gobble\cn{#1}}}
+% \end{macrocode}
+% Indexing difficulties with !, @.
+% \begin{macrocode}
+
+\DeclareRobustCommand{\cnbang}{%
+ \ncn{\!}\index{"!@{\ntt\bslchar\qcbang}}}
+\DeclareRobustCommand{\cnat}{%
+ \ncn{\!}\index{"@@{\ntt\bslchar\qcat}}}
+% \end{macrocode}
+%
+% Shorthand for a discouraged, but not forbidden, line break:
+% \begin{macrocode}
+\def\5{\penalty500 }
+% \end{macrocode}
+%
+% Environment for error message examples. Use \cs{meaning} to allow
+% reading the error message text as an ordinary brace-delimited arg
+% but still be able to print embedded braces; and first change the
+% backslash catcode to prevent extra spaces after control words.
+% \begin{macrocode}
+%<*amsldoc>
+\newenvironment{error}{%
+ \begingroup\catcode`\\=12 \expandafter\endgroup\errora
+}{%
+ \endtrivlist
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand{\errora}[1]{%
+ \trivlist
+ \item[\hskip\labelsep\errorbullet\enspace
+ \ntt\frenchspacing\def\@tempa{#1}%
+ \expandafter\strip@prefix\meaning\@tempa]\leavevmode\par
+}
+% \end{macrocode}
+% \cs{errorbullet} is just an attempt at a simple graphic device that
+% doesn't require any special fonts.
+% \begin{macrocode}
+\newcommand{\errorbullet}{\rule[-.5pt]{2.5pt}{7.5pt}%
+ \rule[-.5pt]{5pt}{2.5pt}\kern-2.5pt%
+ \rule[4.5pt]{2.5pt}{2.5pt}}
+%</amsldoc>
+% \end{macrocode}
+% A couple of subheading commands:
+% \begin{macrocode}
+\newcommand{\errexa}{\par\noindent\textit{Example}:\ }
+\newcommand{\errexpl}{\par\noindent\textit{Explanation}:\ }
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{\cls{amsldoc} style modifications for sectioning commands}
+% The following section deals with book commands (part, chapter,
+% frontmatter, \dots).
+% \begin{macrocode}
+%<*amsldoc>
+% \end{macrocode}
+%
+% Modifications of sectioning commands from \fn{book.cls}, mostly
+% reducing font sizes and vertical spacing.
+% \begin{macrocode}
+\renewcommand\frontmatter{\clearpage
+ \@mainmatterfalse\pagenumbering{roman}}
+\renewcommand\mainmatter{\clearpage
+ \@mainmattertrue\pagenumbering{arabic}}
+\renewcommand\backmatter{\clearpage \@mainmatterfalse}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\renewcommand\part{\clearpage
+ \thispagestyle{plain}%
+ \if@twocolumn
+ \onecolumn
+ \@tempswatrue
+ \else
+ \@tempswafalse
+ \fi
+ \hbox{}\vfil
+ \secdef\@part\@spart}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ \markboth{}{}%
+ {\centering
+ \interlinepenalty \@M
+ \reset@font
+ \ifnum \c@secnumdepth >-2\relax
+ \Large\bfseries \partname~\thepart
+ \par
+ \vskip 20\p@
+ \fi
+ \Large \bfseries #2\par}%
+ \@endpart}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\@spart#1{%
+ {\centering
+ \interlinepenalty \@M
+ \reset@font
+ \Large \bfseries #1\par}%
+ \@endpart}
+\def\@endpart{\vfil\newpage
+ \if@twoside
+ \hbox{}%
+ \thispagestyle{empty}%
+ \newpage
+ \fi
+ \if@tempswa
+ \twocolumn
+ \fi}
+%</amsldoc>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\renewcommand\chapter{\par \@afterindentfalse
+ \secdef\@chapter\@schapter}
+\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \refstepcounter{chapter}%
+ \typeout{\@chapapp\space\thechapter.}%
+ \addcontentsline{toc}{chapter}%
+ {\protect\numberline{\thechapter}#1}%
+ \else
+ \addcontentsline{toc}{chapter}{#1}\fi
+ \else
+ \addcontentsline{toc}{chapter}{#1}
+ \fi
+ \chaptermark{#1}%
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+ \if@twocolumn
+ \@topnewpage[\@makechapterhead{#2}]%
+ \else
+ \@makechapterhead{#2}%
+ \@afterheading
+ \fi}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\@makechapterhead#1{%
+ \vspace{1.5\baselineskip}%
+ {\parindent \z@ \raggedright \reset@font
+ \ifnum \c@secnumdepth >\m@ne
+ \large\bfseries \@chapapp\space\thechapter
+ \par\nobreak
+ \vskip.5\baselineskip\relax
+ \fi
+ #1\par\nobreak
+ \vskip\baselineskip
+ }}
+\def\@schapter#1{\if@twocolumn
+ \@topnewpage[\@makeschapterhead{#1}]%
+ \else
+ \@makeschapterhead{#1}%
+ \@afterheading
+ \fi}
+\def\@makeschapterhead#1{%
+ \vspace*{1.5\baselineskip}%
+ {\parindent \z@ \raggedright
+ \reset@font
+ \large \bfseries #1\par\nobreak
+ \vskip\baselineskip
+ }}
+% \end{macrocode}
+%
+% Add Donald Arseneau's \cs{@removefromreset}; used to decouple the
+% footnote counter from \cn{chapter}, since chapters here do not
+% automatically start on a new page. [bnb, 1999/09/27]
+% \begin{verbatim}
+% \@removefromreset{FOO}{BAR} : Removes counter FOO from the list of
+% counters \cl@BAR to be reset when counter BAR
+% is stepped. The opposite of \@addtoreset.
+% \end{verbatim}
+% \begin{macrocode}
+\def\@removefromreset#1#2{\let\@tempb\@elt
+ \expandafter\let\expandafter\@tempa\csname c@#1\endcsname
+ \def\@elt##1{\expandafter\ifx\csname c@##1\endcsname\@tempa\else
+ \noexpand\@elt{##1}\fi}%
+ \expandafter\edef\csname cl@#2\endcsname{\csname cl@#2\endcsname}%
+ \let\@elt\@tempb}
+\@removefromreset{footnote}{chapter}
+% \end{macrocode}
+%
+% Change running head font to \cn{footnotesize}, nonslanted.
+% \begin{macrocode}
+\def\ps@headings{%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@evenhead{\thepage\hfil{\footnotesize\leftmark{}{}}}%
+ \def\@oddhead{{\footnotesize\rightmark{}{}}\hfil\thepage}%
+ \let\@mkboth\markboth
+ \def\chaptermark##1{%
+ \markboth {\uppercase{\ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \@chapapp\ \thechapter. \ \fi
+ \fi
+ ##1}}{}}%
+ \def\sectionmark##1{%
+ \markright {\uppercase{\ifnum \c@secnumdepth >\z@
+ \thesection. \ \fi
+ ##1}}}}
+% \end{macrocode}
+%
+%
+% \section{\cls{amsdtx} style modifications for sectioning commands}
+% These definitions for \cn{maketitle} are from \fn{article.cls}.
+% \begin{macrocode}
+%<*amsdtx>
+\renewcommand\maketitle{\par
+ \begingroup
+ \renewcommand\thefootnote{\fnsymbol{footnote}}%
+ \def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}%
+ \long\def\@makefntext##1{\parindent 1em\noindent
+ \hbox to1.8em{\hss$\m@th^{\@thefnmark}$}##1}%
+ \if@twocolumn
+ \ifnum \col@number=\@ne
+ \@maketitle
+ \else
+ \twocolumn[\@maketitle]%
+ \fi
+ \else
+ \newpage
+ \global\@topnum\z@ % Prevents figures from going at top of page.
+ \@maketitle
+ \fi
+ \thispagestyle{plain}\@thanks
+ \endgroup
+ \setcounter{footnote}{0}%
+ \let\thanks\relax
+ \let\maketitle\relax\let\@maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}}
+%
+\def\@maketitle{%
+ \newpage
+ \null
+ \vskip 2em%
+ \begin{center}%
+ {\LARGE \@title \par}%
+ \vskip 1.5em%
+ {\large
+ \lineskip .5em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1em%
+ {\large \@date}%
+ \end{center}%
+ \par
+% \end{macrocode}
+% Put the title into both running heads.
+% \begin{macrocode}
+ \uppercase\expandafter{\expandafter\toks@\expandafter{\@title}}%
+ \edef\@tempa{\noexpand\markboth{\the\toks@}{\the\toks@}}%
+ \@tempa
+ \vskip 1.5em}
+%</amsdtx>
+% \end{macrocode}
+%
+% Edit the table of contents.
+% \begin{macrocode}
+%<*amsdtx>
+\renewcommand\tableofcontents{%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \subsection*{\contentsname}%
+ \@starttoc{toc}%
+ \if@restonecol\twocolumn\fi
+ }
+%</amsdtx>
+% \end{macrocode}
+%
+% Edit the sectioning commands.
+% \begin{macrocode}
+\renewcommand\section{\@startsection {section}{1}{\z@}%
+ {-.6\baselineskip \@plus -3\p@}%
+ {.4\baselineskip}
+%<amsdtx> {\reset@font\Large\bfseries}}
+%<amsldoc> {\reset@font\normalsize\bfseries}}
+\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
+ {-.3\baselineskip\@plus -2\p@}%
+ {.2\baselineskip}%
+%<amsdtx> {\reset@font\large\bfseries}}
+%<amsldoc> {\reset@font\normalsize\bfseries}}
+\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+ {-.2\baselineskip\@plus -2\p@}%
+ {.2\baselineskip}%
+ {\reset@font\normalsize\bfseries}}
+% \end{macrocode}
+% Change index environment to turn off \cn{autoindex}.
+% \begin{macrocode}
+\renewenvironment{theindex}{%
+ \if@twocolumn \@restonecolfalse \else \@restonecoltrue \fi
+ \columnseprule \z@ \columnsep 35\p@
+ \let\autoindex\@gobble
+%<amsdtx> \twocolumn[\section*{\indexname}]%
+%<amsldoc> \twocolumn[\@makeschapterhead{\indexname}]%
+ \addcontentsline{toc}{chapter}{\indexname}%
+ \@mkboth{\uppercase{\indexname}}{\uppercase{\indexname}}%
+ \thispagestyle{plain}\parindent\z@
+ \parskip\z@ \@plus .3\p@\relax
+ \let\item\@idxitem
+}{%
+ \if@restonecol\onecolumn\else\clearpage\fi
+}
+% \end{macrocode}
+%
+% Take out \cn{thechapter} from \cn{thesection}.
+% \begin{macrocode}
+%<amsdtx>\renewcommand{\thesection}{\arabic{section}}
+% \end{macrocode}
+%
+% Change the style of captions slightly. Also incorporate some
+% caption improvements from Donald Arseneau (\fn{comp.text.tex}, 11
+% Oct 1994).
+% \begin{macrocode}
+\long\def\@makecaption#1#2{%
+ \addvspace\abovecaptionskip
+ \begingroup
+ \countdef\@parcycles=8 % local count register
+ \@parcycles\z@
+ \@setpar{\advance\@parcycles\@ne \ifnum\@parcycles>999
+ \@@par\@parcycles\z@\fi
+ \ifhmode \unskip\hskip\parfillskip\penalty-\@M\fi}%
+ \@hangfrom{\textbf{#1.} }\vadjust{\penalty\m@ne}#2%
+ \endgroup
+ \ifhmode\unpenalty\fi\par
+ \ifnum\lastpenalty=\m@ne % only one line in the caption
+ \unpenalty \setbox\@tempboxa\lastbox
+ \nointerlineskip
+ \hbox to\hsize{\hfill\unhbox\@tempboxa\unskip\hfill}%
+ \fi
+ \nobreak\vskip\belowcaptionskip
+}
+% \end{macrocode}
+% For table captions, assume top captions and so put space below the
+% caption rather than above:
+% \begin{macrocode}
+\renewenvironment{table}{%
+ \belowcaptionskip\abovecaptionskip \abovecaptionskip\z@skip
+ \@float{table}%
+}{%
+ \end@float
+}
+\renewenvironment{table*}{%
+ \belowcaptionskip\abovecaptionskip \abovecaptionskip\z@skip
+ \@dblfloat{table}%
+}{%
+ \end@dblfloat
+}
+% \end{macrocode}
+%
+% \section{Float placement parameters}
+% These control the placing of floating objects like tables and
+% figures. The values here, which are much more tolerant than the
+% \latex/ defaults, are more or less copied from \fn{amsclass.dtx}.
+% \begin{macrocode}
+\setcounter{topnumber}{4}\setcounter{bottomnumber}{4}
+\setcounter{totalnumber}{4}\setcounter{dbltopnumber}{4}
+\renewcommand{\topfraction}{.97}\renewcommand{\bottomfraction}{.97}
+\renewcommand{\textfraction}{.03}\renewcommand{\floatpagefraction}{.9}
+\renewcommand{\dbltopfraction}{.97}
+\renewcommand{\dblfloatpagefraction}{.9}
+\setlength{\floatsep}{8pt plus6pt}
+\setlength{\textfloatsep}{10pt plus8pt}
+\setlength{\intextsep}{8pt plus6pt}
+\setlength{\dblfloatsep}{8pt plus6pt}
+\setlength{\dbltextfloatsep}{10pt plus8pt}
+\setlength{\@fptop}{0pt}\setlength{\@fpsep}{8pt}%
+\setlength{\@fpbot}{0pt plus 1fil}
+\setlength{\@dblfptop}{0pt}\setlength{\@dblfpsep}{8pt}%
+\setlength{\@dblfpbot}{0pt plus 1fil}
+% \end{macrocode}
+
+% \begin{macrocode}
+\pagestyle{headings}
+% \end{macrocode}
+%
+% Make \verb"|...|" shorthand for verbatim fragments. In the case of
+% the \cls{amsldoc} class, we avoid requiring an extra package
+% (\pkg{doc} or \pkg{shortvrb}), to reduce the possibility of package
+% files not being found at run time.
+% \begin{macrocode}
+%<*amsldoc>
+\AtBeginDocument{\catcode`\|=\active }
+\def\activevert{\verb|}
+\expandafter\gdef\expandafter\dospecials\expandafter
+ {\dospecials \do\|}%
+\expandafter\gdef\expandafter\@sanitize\expandafter
+ {\@sanitize \@makeother\|}
+\begingroup\catcode`\|=\active \gdef|{\protect\activevert{}}\endgroup
+%</amsldoc>
+% \end{macrocode}
+%
+% \begin{macro}{\arrayargpatch}
+% If the column-specs arg of array or tabular contains a vert bar
+% character, and we have made vert bars active, it will cause
+% trouble. The following command, used in the ctab environment,
+% prevents the trouble.
+% \begin{macrocode}
+\newcommand{\arrayargpatch}{%
+ \let\@oldarray\@array
+ \edef\@array[##1]##2{\catcode\number`\|=\number\catcode`\|
+ \catcode\number`\@=\number\catcode`\@ \relax
+ \let\noexpand\@array\noexpand\@oldarray
+ \noexpand\@array[##1]{##2}}%
+ \catcode`\|=12 \catcode`\@=12 \relax
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{ctab}
+% An environment for centered tables.
+% \begin{macrocode}
+\newenvironment{ctab}{%
+ \par\topsep\medskipamount
+ \trivlist\centering
+ \item[]%
+ \arrayargpatch
+ \begin{tabular}%
+}{%
+ \end{tabular}%
+ \endtrivlist
+}
+% \end{macrocode}
+% \end{environment}
+%
+% Load \pkg{doc} package, reset \cn{AltMacroFont} to be the same as
+% \cn{MacroFont} (when there are large sections of conditional
+% code I think it looks better not to have it all slanted).
+% \begin{macrocode}
+%<*amsdtx>
+\RequirePackage{doc}
+\def\AltMacroFont{\MacroFont}
+% \end{macrocode}
+%
+% \begin{macro}{\SpecialMainEnvIndex}
+% Override \fn{doc.sty}'s main environment indexing to get rid of
+% the parens around ``environment'', for compatibility with our
+% \cs{env} command.
+% \begin{macrocode}
+\def\SpecialMainEnvIndex#1{%
+ \@bsphack
+ \special@index{%
+ #1\actualchar\string\texttt{#1} environment\encapchar main%
+ }%
+ \special@index{%
+ environments:\levelchar#1%
+ \actualchar\string\texttt{#1}%
+ \encapchar main}%
+ \@esphack
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SpecialEnvIndex}
+% \begin{macrocode}
+\def\SpecialEnvIndex#1{%
+ \@bsphack
+ \index{#1\actualchar\string\texttt{#1} environment\encapchar usage}%
+ \index{%
+ environments:\levelchar#1%
+ \actualchar\string\texttt{#1}%
+ \encapchar usage}%
+ \@esphack
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DescribeOption}
+% \begin{macrocode}
+\def\DescribeOption{%
+ \leavevmode
+ \@bsphack
+ \begingroup
+ \MakePrivateLetters
+ \Describe@Option
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Describe@Option}
+% \begin{macrocode}
+\def\Describe@Option#1{%
+ \endgroup
+ \marginpar{\raggedleft\PrintDescribeOption{#1}}%
+ \SpecialOptionIndex{#1}%
+ \@esphack
+ \ignorespaces
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\PrintDescribeOption}
+% \begin{macrocode}
+\def\PrintDescribeOption#1{\strut \MacroFont #1\ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\option}
+% \begin{macrocode}
+\def\option{%
+ \let\SpecialMainEnvIndex\SpecialMainOptionIndex
+\begingroup
+ \catcode`\\12
+ \MakePrivateLetters \m@cro@ \iffalse}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SpecialMainOptionIndex}
+% \begin{macrocode}
+\def\SpecialMainOptionIndex#1{%
+ \@bsphack
+ \special@index{#1\actualchar\string\texttt{#1} option\encapchar main}%
+ \@esphack
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SpecialOptionIndex}
+% \begin{macrocode}
+\def\SpecialOptionIndex{\@category@index{option}}
+% \end{macrocode}
+% \end{macro}
+%
+% Ordinary \cn{DocInput} doesn't handle standardized file headers
+% unless you enclose them in \cs{iffalse} \dots\ \cs{fi} which I
+% don't care to do. So instead here's an alternate version of
+% \cn{DocInput}, called \cn{hDocInput}.
+% \begin{macrocode}
+\def\hDocInput#1{\MakePercentIgnore
+ \begingroup
+% \end{macrocode}
+% Define active \qc{\@} which should be the first non-percent,
+% non-equal-sign character when a file header is present. (If a file
+% header is not present, \cn{hDocInput} should not be used.)
+% \begin{macrocode}
+ \begingroup \lccode`\~=`\@
+ \lowercase{\endgroup\long\def ~}##1##{%
+ \catcode`\==12 \skipfileheader{##1}}%
+ \catcode`\@=\active \catcode`\==14 % comment
+ \def\filename{#1}%
+ \@@input#1 \MakePercentComment}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\skipfileheader#1#2 {\endgroup
+ \hGetFileInfo#2 version = "??" date = "??"\@nil
+ \begingroup\catcode`\==9 \catcode`\ =9 \futurelet\0\endgroup
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\long\def\hGetFileInfo#1 version = "#2"#3 date = "#4"#5\@nil{%
+ \def\fileversion{#2}\def\filedate{#4}}
+%</amsdtx>
+% \end{macrocode}
+%
+% A bunch of stuff we don't want in code indexes:
+% \begin{macrocode}
+%<*amsdtx>
+\DoNotIndex{\@xp,\@nx,\@empty,\newcommand,\renewcommand}
+\DoNotIndex{\newenvironment,\renewenvironment,\providecommand}
+\DoNotIndex{\if,\fi,\ifnum,\fi,\@let@token,\futurelet,\fsa@n}
+\DoNotIndex{\ignorespaces,\@tempcnta,\@tempcntb,\count@}
+\DoNotIndex{\toks@,\@ne,\advance}
+\DoNotIndex{\!,\/,\?,\@,\^,\_}
+\DoNotIndex{\@@par,\@M,\@auxout,\@bsphack,\@esphack,\@depth,\@ehc}
+\DoNotIndex{\@for,\@flushglue,\@gobble,\@gobbletwo,\@height,\@idxitem}
+\DoNotIndex{\@ifnextchar,\@ifstar,\@ifundefined,\@input,\@latexerr}
+\DoNotIndex{\@makeschapterhead,\@namedef,\@nameuse,\@nil}
+\DoNotIndex{\@nobreakfalse,\@restonecolfalse,\@restonecoltrue}
+\DoNotIndex{\@tempa,\@tempb,\@tempc,\@tempf,\@temptokena,\@themark,\@width}
+\DoNotIndex{\active,\aindex,\baselineskip,\begin,\begingroup,\box}
+\DoNotIndex{\c@page,\catcode,\chapter,\char,\chardef,\closeout}
+\DoNotIndex{\CodelineIndex,\sp,\sb,\label,\leavevmode,\mark}
+\DoNotIndex{\mark,\newinsert,\newwrite,\newtoks,\xdef}
+\DoNotIndex{\columnsep,\columnseprule,\columnwidth,\csname,\def}
+\DoNotIndex{\dimen,\do,\DocInput,\documentstyle,\edef,\em}
+\DoNotIndex{\EnableCrossrefs,\end,\endcsname,\endgroup,\endinput}
+\DoNotIndex{\everypar,\expandafter,\filedate,\fileversion}
+\DoNotIndex{\footnotesize,\gdef,\global,\glossary,\hangindent}
+\DoNotIndex{\if@filesw,\else,\fi}
+\DoNotIndex{\if@nobreak,\if@twocolumn,\if@twoside,\fi,\fi,\fi}
+\DoNotIndex{\hsize,\hskip}
+\DoNotIndex{\ifhmode,\ifmmode,\ifodd,\ifvmode,\ifx,\fi,\fi,\fi,\fi,\fi}
+\DoNotIndex{\ifcase,\ifdim,\ifeof,\iffalse,\iftrue,\fi,\fi,\fi,\fi,\fi}
+\DoNotIndex{\ifcat,\fi}
+\DoNotIndex{\immediate,\insert,\item,\jobname,\long}
+\DoNotIndex{\let,\lineskip,\marginparsep,\marginparwidth,\maxdimen}
+\DoNotIndex{\makeatletter,\noexpand,\openout,\protect,\rlap}
+\DoNotIndex{\min,\newpage,\nobreak,\normalbaselineskip}
+\DoNotIndex{\normallineskip,\p@,\par,\parfillskip,\parindent,\parskip}
+\DoNotIndex{\penalty,\relax,\section,\sin,\sloppy,\space,\string}
+\DoNotIndex{\tableofcontents,\the,\thepage,\thispagestyle,\toks,\tt}
+\DoNotIndex{\twocolumn,\uppercase,\vbox,\vrule,\vskip,\vss}
+\DoNotIndex{\write,\z@,\z@skip}
+%</amsdtx>
+% \end{macrocode}
+%
+% The usual \cs{endinput} to ensure that random garbage at the end of
+% the file doesn't get copied by \fn{docstrip}.
+% \begin{macrocode}
+\endinput
+% \end{macrocode}
+%
+% \changes{v1.2b}{1995/02/15}{Added {}{} after rightmark, leftmark to
+% handle no-maketitle case}
+% \changes{v1.2b}{1995/02/15}{Added frenchspacing in error env heading}
+%
+% \changes{v1.2c}{1996/10/28}{Update version number, date for new release}
+%
+% \changes{v1.2d}{1997/03/13}{Fixed up loading method for OT1cmtt fd file}
+%
+% \changes{v2.03}{2004/04/06}{Reworked indexing commands for
+% compatibility with doc.sty}
+%
+% \changes{v2.04}{2004/04/07}{Further work on indexing commands for
+% compatibility with macro and environment environments in \fn{doc.sty}.
+% Also added \env{option} environment, \cs{DescribeOption},
+% \cs{PrintDescribeOption}, \cs{SpecialOptionIndex}, and
+% \cs{SpecialMainOptionIndex}.}
+%
+% \changes{v2.05}{2004/04/27}{Fixed the amsdtx \cs{env} so that it
+% prints its argument in addition to putting it in the index. Added
+% |\penalty\exhyphenpenalty| to \cs{mdash} and \cs{ndash} as per
+% \pkg{textcmds}.}
+%
+% \CheckSum{1516}
+% \Finale