From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Mon, 2 Sep 2019 13:46:59 +0900
Subject: Initial commit

---
 macros/latex/contrib/aomart/aomart.dtx | 2322 ++++++++++++++++++++++++++++++++
 1 file changed, 2322 insertions(+)
 create mode 100644 macros/latex/contrib/aomart/aomart.dtx

(limited to 'macros/latex/contrib/aomart/aomart.dtx')

diff --git a/macros/latex/contrib/aomart/aomart.dtx b/macros/latex/contrib/aomart/aomart.dtx
new file mode 100644
index 0000000000..29d2c8e44d
--- /dev/null
+++ b/macros/latex/contrib/aomart/aomart.dtx
@@ -0,0 +1,2322 @@
+% \iffalse
+% $Id: aomart.dtx,v 1.74 2017/12/14 04:17:05 boris Exp $
+%
+% Copyright 2010-2017, Princeton University (Mathematics Department)
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3 of this license or (at your option) any 
+% later version.
+% The latest version of the license is in
+%    http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of
+% LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Boris Veytsman,
+% <borisv@lk.net> 
+%
+% This work consists of the file aomart.dtx and the
+% derived file aomart.cls, and files aomplain.bst and aomalpha.bst
+%
+% The file fullref.pl, included with this package, is in
+% public domain.
+%
+% \fi 
+% \CheckSum{1474}
+%
+%
+%% \CharacterTable
+%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%%   Digits        \0\1\2\3\4\5\6\7\8\9
+%%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%%   Dollar        \$     Percent       \%     Ampersand     \&
+%%   Acute accent  \'     Left paren    \(     Right paren   \)
+%%   Asterisk      \*     Plus          \+     Comma         \,
+%%   Minus         \-     Point         \.     Solidus       \/
+%%   Colon         \:     Semicolon     \;     Less than     \<
+%%   Equals        \=     Greater than  \>     Question mark \?
+%%   Commercial at \@     Left bracket  \[     Backslash     \\
+%%   Right bracket \]     Circumflex    \^     Underscore    \_
+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%%   Right brace   \}     Tilde         \~} 
+%
+%\iffalse
+% Taken from xkeyval.dtx
+%\fi
+%\makeatletter
+%\def\DescribeOption#1{\leavevmode\@bsphack
+%              \marginpar{\raggedleft\PrintDescribeOption{#1}}%
+%              \SpecialOptionIndex{#1}\@esphack\ignorespaces}
+%\def\PrintDescribeOption#1{\strut\emph{option}\\\MacroFont #1\ }
+%\def\SpecialOptionIndex#1{\@bsphack
+%    \index{#1\actualchar{\protect\ttfamily#1}
+%           (option)\encapchar usage}%
+%    \index{options:\levelchar#1\actualchar{\protect\ttfamily#1}\encapchar
+%           usage}\@esphack}
+%\def\DescribeOptions#1{\leavevmode\@bsphack
+%  \marginpar{\raggedleft\strut\emph{options}%
+%  \@for\@tempa:=#1\do{%
+%    \\\strut\MacroFont\@tempa\SpecialOptionIndex\@tempa
+%  }}\@esphack\ignorespaces}
+%\makeatother
+%
+% \MakeShortVerb{|}
+% \GetFileInfo{aomart.dtx}
+% \newcommand{\progname}[1]{\textsf{#1}}
+% \title{\LaTeX{} Class for The \emph{Annals of
+% Mathematics}\thanks{\copyright 2010, Princeton University
+% (Mathematics Department)}} 
+% \author{Boris Veytsman\thanks{%
+% \href{mailto:borisv@lk.net}{\texttt{borisv@lk.net}},
+% \href{mailto:boris@varphi.com}{\texttt{boris@varphi.com}}}} 
+% \date{\filedate, \fileversion}
+% \maketitle
+% \begin{abstract}
+%   This package provides a class for typesetting articles for
+%   The \emph{Annals of Mathematics}
+% \end{abstract}
+% \tableofcontents
+%
+% \changes{v0.2}{2010/08/24}{First fully functional version} 
+% \changes{v0.3}{2010/09/27}{Documentation update} 
+% \changes{v0.4}{2010/09/29}{Documentation update} 
+% \changes{v0.6}{2010/10/03}{Changes to bst files} 
+% \changes{v0.6}{2010/10/03}{Fullref.pl is much less agressive now} 
+% \changes{v0.7}{2010/10/09}{Bibliography styles changed} 
+% \changes{v0.8}{2010/11/16}{Documentation update} 
+% \changes{v0.8}{2010/11/21}{Bibliography styles update} 
+% \changes{v0.9}{2010/12/04}{Bibliography styles update} 
+% \changes{v0.9}{2010/12/04}{Documentation update} 
+% \changes{v0.10}{2010/12/20}{Bibliography styles update} 
+% \changes{v0.10}{2010/12/20}{Documentation update} 
+% \changes{v1.0}{2010/12/21}{Top matter macros are now only in preamble} 
+% \changes{v1.2}{2011/01/05}{Bibliography styles update} 
+% \changes{v1.5}{2011/02/26}{Added noopsort to the styles, corrected
+% typo} 
+% \changes{v1.5}{2011/02/26}{Added sortyear to the styles} 
+% \changes{v1.6}{2011/03/06}{Bibliography change: aomalpha now
+% respects key field in the bib file} 
+% \changes{v1.11}{2012/07/23}{Added new commands for copyright
+% statement}  
+% \changes{v1.11}{2012/07/24}{Bibliography change: titlenote, deleted bysame}  
+% \changes{v1.11}{2012/08/16}{Added \textbackslash fulladdress}  
+% \changes{v1.11}{2012/08/16}{Deleted \textbackslash repeatedauthors{} from
+% the documentation}  
+% \changes{v1.17}{2017/01/26}{Added new field totalpages to the
+% bibliography}   
+% \changes{v1.17a}{2017/01/26}{Bug fixed in aomplain.bst}   
+% \changes{v1.18}{2017/02/11}{New option \texttt{oldkeywords} and
+% printing keywords and subjects by default}   
+% \changes{v1.19}{2017/04/12}{Bibliography changes}   
+%
+% \clearpage
+%
+%\section{Introduction}
+%\label{sec:intro}
+%
+% The \emph{Annals of Mathematics} is published bimonthly with the
+% cooperation of Princeton University and the Institute for Advanced
+% Study. Founded in 1884 by Ormond Stone of the University of
+% Virginia, the journal was transferred in 1899 to Harvard University,
+% and in 1911 to Princeton University. Since 1933, the Annals has been
+% edited jointly by Princeton University and the Institute for
+% Advanced Study (see
+% \url{http://annals.princeton.edu/annals/about/journal/about.html}). 
+% 
+% This class presents a complete redesign of the journal style---with
+% new fonts and new interface.  
+%
+%
+% An author well acquainted with AMS\LaTeX{} should find this package
+% easy to use and configurable.  The User Manual below illustrates the
+% basic use of the class and discusses the differences with \progname{amsart}.
+% For an in-depth tutorial of AMS\LaTeX{} I could recommend the
+% excellent book~\cite{Graetzer00:MathIntoLaTeX}.
+%
+%
+%\section{User's Guide}
+%\label{sec:manual}
+%
+%
+%\subsection{Installation}
+%\label{sec:installation}
+%
+% The installation of the class follows the usual
+% practice~\cite{TeXFAQ} for \LaTeX{} packages:
+% \begin{enumerate}
+% \item Run \progname{latex} on |aomart.ins|.  This will produce the file
+% |aomart.cls|.
+% \item Put the file |aomart.cls| to
+% the place where \LaTeX{} can find them (see
+% \cite{TeXFAQ} or the documentation for your \TeX{}
+% system).\label{item:install} 
+% \item Update the database of file names.  Again, see \cite{TeXFAQ}
+% or the documentation for your \TeX{} system for the system-specific
+% details.\label{item:update}
+% \item The file |aomart.pdf| provides the documentation for the
+% package (this is the file you are probably reading now).
+% \end{enumerate}
+% As an alternative to items~\ref{item:install} and~\ref{item:update}
+% you can just put the files in the working directory where your
+% |.tex| file is.
+% 
+%
+% The class uses some other \LaTeX{} classes or packages.  Most
+% probably, they are already installed on your system.  If not (or if
+% their versions are very old), you need to download and
+% install them.  Here is the list:
+% \begin{enumerate}
+% \item \progname{amsart} class and related
+% packages~\cite{Downes04:amsart}, 
+% \item Package \progname{hyperref}~\cite{Rahtz06:Hyperref},
+% \item \progname{ifpdf} package~\cite{Oberdiek06:Ifpdf},
+% \item \progname{fancyhdr} package~\cite{Oostrum04:Fancyhdr},
+% \item \progname{cmtiup} package~\cite{Znamenskii03:Cmtiup} for
+% ``special italics'' with uprgiht digits and punctuation.  Note that
+% since many distributions do not include this package, you may need
+% to install it yourself.  Just download the file
+% \url{http://mirrors.ctan.org/fonts/cm/cmtiup.zip}, unzip it in your
+% \path{TEXMF} directory and rebuild the file names database  with the
+% command like |mktexlsr|,
+% \item \progname{yhmath} package~\cite{Haralambous96:Yhmath}.
+% \end{enumerate}
+% 
+%
+%\subsection{Invocation}
+%\label{sec:invocation}
+%
+% To use the class, put in the preamble of your document
+% \begin{flushleft}
+% |\documentclass[|\meta{options}|]{aomart}|
+% \end{flushleft}
+% The class internally loads \progname{amsart}, so all facilities of
+% \progname{amsart}~\cite{Graetzer00:MathIntoLaTeX, amsldoc} can be used in the
+% source.
+%
+%  The class should work with the
+%  \progname{Babel}~\cite{Braams05:Babel} package.  At present,
+%  English, French and German languages are fully supported.  See also
+%  Section~\ref{sec:non-english}.  
+% 
+% \DescribeOptions{draft,final}
+% The options |draft| and |final| work in the same way as for
+% \progname{amsart} and standard \LaTeX.  If the option |draft| is
+% chosen, the overfull lines are marked by black boxes on the margins
+% \emph{and} the |\includegraphics| prints blank placeholders for the
+% images.  The option |final| (default) switches off the marking of
+% overfull lines and restores the behavior of |\includegraphics|.  To
+% switch on just the overfull marks, without changing the behavior of
+% |\includegraphics|, one can either explicitly pass the option final
+% to \progname{graphics} package:
+% \begin{verbatim}
+% \documentclass[draft]{aomart}
+% \usepackage[final]{graphics}
+% \end{verbatim}
+% or add in the beginning of the document
+% \begin{verbatim}
+% \overfullrule=5pt
+% \end{verbatim}
+% 
+% \DescribeOption{manuscript}
+% The option |manuscript| is intended to faciliate the communications
+% between the editor and the author.  It enables two things:
+% \begin{enumerate}
+% \item Numbering of lines in the manuscript is switched off in the
+% normal mode, but is on in the manuscript mode.
+% \item Command |\EditorialComment| is no-op in normal mode, but
+% produces mariginal commentaries in the manuscript
+% \item Hyperlinks are black in normal mode, but blue in manuscript
+% mode. 
+% \end{enumerate}
+% 
+% \DescribeOption{screen}
+% The option |screen| is intended for the onscreen version of the
+% acticle.  If this option is selected, the links are blue colored,
+% and the margins are reduced.
+%
+% \DescribeOption{olddoi}%
+% Starting from version~1.9 (2011) the formatting of DOI numbers
+% changed according to the new recommendations from CrossRef.  The
+% option |olddoi| switches on the ``old'' formatting.  It is used for
+% compatibility reasons.
+%
+% \DescribeOption{doi2016}%
+% Starting from version~1.5 (2016) the formatting of DOI numbers
+% changed again according to Crossref recommendations.  The option
+% |doi2016| switches to the version existed between 2011 and 2016.  
+%
+% \DescribeOption{oldkeywords}%
+% Since June 2017 keywords and AMS Mathematical Subjects
+% classification numbers are printed on the title page.  The option
+% \texttt{oldkeywords} suppresses this.  
+%
+% \DescribeOptions{8pt,9pt,10pt,11pt,12pt}
+% The size-changing options of \progname{amsart} class (|8pt|, |9pt|,
+% \dots, |12pt|) have no effect other than producing a warning in the
+% log since the journal is designed for 
+% only one type size (roughly corresponding to |11pt| of
+% \progname{amsart}).
+%
+%
+%
+%
+%\subsection{Top Matter}
+%\label{sec:top_matter}
+%
+%
+% There are two kinds of top matter commands:  the ones used primarily
+% for authors and the ones used primarily for editors.  We describe
+% them separately.
+%
+% The macros descibed below must be issued in the preamble of the
+% document, i.e. before |\begin{document}|.  They produce fatal error
+% otherwise.  This behavior is required by the way non-\TeX{} scripts
+% process the files to produce  metadata.
+%
+% The only exception is abstract, which should be placed 
+% after |\begin{document}|.
+% 
+%
+%\subsubsection{Commands for Authors}
+%\label{sec:authors_commands}
+%
+%
+% \DescribeMacro{\title}
+% The command |\title|, as in \progname{amsart} class, has two arguments:  one
+% optional, and one mandatory:
+% \begin{flushleft}
+%   |\title[|\meta{ShortTitle}|]{|\meta{FullTitle}|}|
+% \end{flushleft}
+% The mandatory argument is the full title of the article.  The
+% optional argument, if present, defines the shorter version of the
+% title for running heads.  If the optional argument is absent, the
+% full title is used instead.  
+%
+% The optional argument should be used in two cases: when the full
+% title is too long to fit in the running head, \emph{and} when the
+% author wants to add a footnote or linebreaks to the title.  
+%
+%
+% \DescribeMacro{\author}%
+% \DescribeMacro{\email}%
+% \DescribeMacro{\address} \DescribeMacro{\curraddr}%
+% \DescribeMacro{\urladdr}%
+% \DescribeMacro{\orccid}%
+% The interface for specifying the authors and their affiliations is
+% close the the one of \progname{amsart}~\cite{instr-l} (and different
+% from the standard \LaTeX).  For each author a separate command
+% |\author| should be used, followed by |\address| and (optionally)
+% |\curraddr|, |\email|, |\urladdr| and \cs{orcid}.  Note that the
+% house style of the \emph{Annals of Mathematics} requires writing
+% |\address| in the form \emph{Institution, City, State} (or
+% \emph{Institution, City, Country} for non-US locations).  Like the
+% newer versions of \progname{amsart}, \progname{aomart} does
+% \emph{not} require the doubling of the |@| symbols in the e-mail
+% addresses.  The macro |\author| has two arguments, similarly to
+% |\title|:
+% \begin{flushleft}
+%   |\author[|\meta{AbbrevName}|]{|\meta{FullName}|}|
+% \end{flushleft}
+% The optional argument defines the shorter form of the author's name
+% to be included in the running head.  
+%
+% \DescribeMacro{\givenname} \DescribeMacro{\surname} 
+% The papers published in the \emph{Annals of Mathematics} are
+% included in various databases.  For the indexing purposes it is
+% important to correctly separate the authors' names into ``First
+% Name/Surname'' parts.  This operation is not easy for the
+% computers.  Therefore we decided that the authors should know best
+% how to deal with their names.  The macros |\givenname| and
+% |\surname| are used to indicate how to split the name into the
+% parts. 
+%
+% \DescribeMacro{\fulladdress}
+% Another command which does not affect the typesetting is
+% \cmd{\fulladdress}.  It is used to store the full mailing address of
+% the author for the online version of the journal and various
+% databases.
+%
+% \DescribeMacro{\shortauthors}
+% In some cases the authors list may be too long for the running head,
+% even if the abbreviated forms are used for each author.  In this
+% case it is possible to change the running head by a
+% \emph{redefinition} of the command |\shortauthors|.  This
+% redefinition must be done after all |\author| commands, but before
+% |\maketitle|:
+% \begin{verbatim}
+% \renewcommand{\shortauthors}{A.~Smith et al}
+% \end{verbatim}
+% 
+%
+% \DescribeMacro{\thanks}
+% Like \progname{amsart} (and unlike standard \LaTeX{}),
+% \progname{aomart} allows |\thanks| only \emph{outside} of commands
+% |\title| and |\author|.
+%
+%
+% \DescribeMacro{\copyrightnote}
+% Normally each paper is copyrighted by Department of Mathematics,
+% Princeton University.  This is reflected in the footnote on the
+% first page of the article.  However, by arrangement with the
+% editors, certain papers may have different copyright.  The command
+% \cmd{\copyrightnote}\marg{copyright statement}, if issued, changes
+% the footnote to the corresponding text, for example: 
+% \begin{verbatim}
+% \copyrightnote{\textcopyright~2012 by the authors.  This paper may
+% be reproduced, in its entirety, for noncommercial purposes.}
+% \end{verbatim}
+% Note that if you issue this command, you should explicitly include
+% both the copyright sign and the year unless the paper does not have
+% a copyright, for example:
+% \begin{verbatim}
+% \copyrightnote{This paper is in the public domain}
+% \end{verbatim}
+% 
+%
+%
+% \DescribeEnv{abstract}
+% The abstract of the paper must be put between |\begin{abstract}| and
+% |\end{abstract}|.   Unlike the situation in \progname{amsart}
+% class, abstract may be put \emph{after} |\maketitle|.
+%
+% A paper may have several abstracts in different languages.  This
+% sitation is discussed in Section~\ref{sec:non-english}.  
+%
+% \DescribeMacro{\maketitle}
+% The macro |\maketitle| typesets the top matter.  All top matter
+% information should be specified before this command.
+%
+%
+%\subsubsection{Commands for Editors}
+%\label{sec:editors_commands}
+%
+% The commands described in this section should be used by the editors
+% to insert the information about the published paper.  They must be
+% put before the |\maketitle| command.
+%
+% \DescribeMacro{\keyword}
+% The command |\keyword| adds a keyword to the list of keywords.  This
+% command may be repeated, for example
+% \begin{verbatim}
+% \keyword{Embedding theorem}
+% \keyword{Relatively hyperbolic group}
+% \end{verbatim}
+% 
+% \DescribeMacro{\subject}
+% The command |\subject| has  three parameters: whether the subject is
+% primary or secondary, the classification scheme and the subject
+% itself, for example
+% \begin{verbatim}
+% \subject{primary}{msc2000}{20E45}
+% \subject{secondary}{msc2000}{20F65}
+% \end{verbatim}
+% 
+%
+% \DescribeMacro{\formatdate}
+% The macro |\formatdate| is used to format the dates in the
+% commands.  Its argument is the date in the format |YYYY-MM-DD|, for
+% example
+% \begin{verbatim}
+% \formatdate{2010-08-13}
+% \end{verbatim}
+% 
+% \DescribeMacro{\received}
+% \DescribeMacro{\revised}
+% \DescribeMacro{\accepted}
+% \DescribeMacro{\published}
+% \DescribeMacro{\publishedonline}
+% The commands |\received|, |\revised|, |\accepted|, |\published|,
+% |\publishedonline| accept as a parameter a date in the form
+% |\formatdate|\marg{YYYY-MM-DD}, for example
+% \begin{verbatim}
+% \received{\formatdate{2004-12-24}}
+% \revised{\formatdate{2006-04-12}}
+% \accepted{\formatdate{2007-10-02}}
+% \end{verbatim}
+%
+% \DescribeMacro{\proposed}
+% \DescribeMacro{\seconded}
+% \DescribeMacro{\corresponding}
+% \DescribeMacro{\editor}
+% \DescribeMacro{\version}
+% The macros |\proposed|, |\seconded|, |\corresponding|, |\editor|,
+% |\version| are used to set the corresponding metadata for the
+% editorial process, for example
+% \begin{verbatim}
+% \proposed{E. D. Itor}
+% \seconded{A. S. Sociate}
+% \corresponding{A. U. Thor}
+% \version{2.1}
+% \end{verbatim}
+% 
+% 
+% 
+% \DescribeMacro{\volumenumber}
+% \DescribeMacro{\issuenumber}
+% \DescribeMacro{\publicationyear}
+% \DescribeMacro{\papernumber}
+% \DescribeMacro{\startpage}
+% \DescribeMacro{\endpage}
+%  The macros |\volumenumber|, |\issuenumber|, |\publicationyear|,
+%  |\papernumber|, |\startpage|, |\endpage| set up the corresponding
+%  data for the paper, for example:
+% \begin{verbatim}
+% \volumenumber{172}
+% \issuenumber{1}
+% \publicationyear{2010}
+% \papernumber{1}
+% \startpage{1}
+% \endpage{39}
+% \end{verbatim}
+% Note that if the argument of |\endpage| is empty, \LaTeX{} tries to
+% calculate the last page number as best as it can.
+%
+% \DescribeMacro{\copyrightyear}
+% In the standard copyright statement the copyright year is assumed to
+% be the same as the |\publicationyear|.  However, for special cases
+% one can set the copyright year explicitly, for example,
+% \begin{verbatim}
+% \publicationyear{2012}
+% \copyrightyear{2011}
+% \end{verbatim}
+% Note that if you use your own copyright statement instead of the
+% canned one (with the command \cmd{\copyrightnote}), you need to put
+% there the copyright year explicitly instead of using this command.  
+%
+% \DescribeMacro{\doinumber}%
+% \DescribeMacro{\mrnumber}%
+% \DescribeMacro{\zblnumber}%
+% \DescribeMacro{\arxivnumber}%
+% The macros |\doinumber|, |\mrnumber| and |\zblnumber|  set the
+% information about paper in four major reference databases:  DOI
+% (\url{http://www.doi.org/}), MathSciNet
+% (\url{http://www.ams.org/mathscinet/}, Zentralblatt MATH
+% (\url{http://www.zentralblatt-math.org/zmath/}) and arXiv
+% (\url{https://www.arxiv.org}).  The use of these  
+% macros should be obvious: 
+% \begin{verbatim}
+% \doinumber{10.1215/S0012-7094-92-06520-3}
+% \mrnumber{1154181}
+% \zblnumber{0774.14039}
+% \arxivnumber{1234.567890}
+% \end{verbatim}
+% Note the difference between these commands and the bibliography
+% commands discussed in Section~\ref{sec:biblio}.  Commands in this
+% Section set up the data for the \emph{current article.}  Commands in
+% Section~\ref{sec:biblio} set up the data for the articles in the
+% bibliography list.
+%
+% Normally you should \emph{not} use |\doinumber| command, since the
+% class will construct the standard DOI for the paper from the volume,
+% issue and paper information.  Use it \emph{only} if the result is by
+% any reason wrong.
+%
+%
+% \DescribeMacro{\oldsubsections}
+% Starting with version~1.2 we decreased the vertical spacing before
+% |\subsection|.  The command |\oldsubsections| restores the ``old''
+% values.
+%
+%\subsection{Additional Macros}
+%\label{sec:add_guide}
+%
+% \DescribeEnv{eqnarray}
+% \DescribeEnv{eqnarray*}
+% Thee class \progname{aomart} loads the class \progname{amsart}.
+% Therefore all familiar \progname{amsmath} commands~\cite{amsldoc}
+% are available.  In particular, there are many commands for writing
+% multiline equations (|split|, |align|, |gather|, |multline|,
+% \dots).  The environments |eqnarray| and |eqnarray*|, while still
+% avilable, are \emph{not} recommended and should be avoided if
+% possible.  
+%
+% \DescribeMacro{\widetilde}
+% \DescribeMacro{\widehat}
+% \DescribeMacro{\widetriangle}
+% \DescribeMacro{\wideparen}
+% \DescribeMacro{\widering}
+% \DescribeMacro{\widebar}
+%  A number of ``wide'' mathematical accents is available due to the
+%  (internally loaded) package
+%  \progname{yhmath}~\cite{Haralambous96:Yhmath}: |\widetilde|, 
+% |\widehat|, |\widetriangle|, |\wideparen|, |\widering|, |\widebar|. See
+% Table~\ref{tab:accents} for the example of the usage.  
+%
+% \begin{table}
+%   \centering
+%   \begin{tabular}{ll}
+%     \toprule
+%     Code & Example \\
+%     \midrule
+%     |\widetilde{AB}| & $\widetilde{AB}$\\
+%     |\widehat{AB}| & $\widehat{AB}$\\
+%     |\widetriangle{AB}| & $\widetriangle{AB}$\\
+%     |\wideparen{AB}| & $\wideparen{AB}$\\
+%     |\widering{AB}| & $\widering{AB}$\\
+%     |\widebar{AB}| & $\widebar{AB}$\\
+%     \bottomrule
+%   \end{tabular}
+%   \caption{Wide Mathematical Accents}
+%   \label{tab:accents}
+% \end{table}
+%
+%
+% \DescribeMacro{\EditorialComment}
+% The macro |\EditorialComment|\oarg{comments} typesets the comments
+% on the margins in the |manuscript| mode, for example,
+% \begin{verbatim}
+% Erd\"os proved the following theorem.\EditorialComment{A citation is
+% needed}
+% \end{verbatim}
+%
+%
+% \DescribeMacro{\fullref}
+% \DescribeMacro{\pfullref}
+% \DescribeMacro{\bfullref}
+% \DescribeMacro{\eqfullref}
+% A set of macros is used to make more convenient clickable references
+% in the online versions of papers.  The
+% package~\progname{hyperref}~\cite{Rahtz06:Hyperref} 
+% makes clickable reference numbers in the phrases like
+% \begin{verbatim}
+% ...in theorem~\ref{thm:Noeter}...
+% ...see equation~\eqref{eq:alpha}...
+% \end{verbatim}
+% However, it is more convenient for the readers if both
+% the number \emph{and} the word ``theorem'' or ``equation'' were
+% clickable.  The macros |\*fullref| solve this problem.  Each macro
+% has two arguments:  the word and the reference, for example
+% \begin{verbatim}
+% ...in \fullref{theorem}{thm:Noeter}...
+% \end{verbatim}
+% The command |\pfullref| typesets
+% the reference in parentheses.  The command |\bfullref| typesets it
+% in brackets, and the command |\eqfullref| uses the |\eqref|
+% command, for example,
+% \begin{verbatim}
+% ...see \eqfullref{equation}{eq:alpha}...
+% \end{verbatim}
+%
+% The \progname{Perl} script \path{fullref.pl} can be used to convert
+% change all references to the |\fullref| commands.  It works in the
+% following way:
+% \begin{verbatim}
+% perl fullref.pl original.pl > result.pl
+% \end{verbatim}
+% The script converts all instances of combinations ``|word \ref{reference}|''
+% and ``|word~\ref{reference}|''
+% to ``|\fullref{word}{reference}|, and similarly for
+% parenthesized references or |\eqref| commands.  To prevent the
+% converting, just put |\ref{reference}| or |\eqref{reference}| inside
+% braces.  The ``word'' here must not start with a backslash
+% (i.e. must not be a macro itself).  This prevents disastrous results
+% for phrases like ``|see~\ref{a}, \ref{b}|''.
+%
+%
+% The distribution includes two sample files, \path{aomsample.tex} and
+% \path{aomsample1.tex}, the latter being obtained from the former by
+% the script \path{fullref.pl}.
+% 
+%
+% Note that |\autoref| command of \progname{hyperref} provides for
+% another mechanism that achieves the same goal.  Unlike |\fullref|
+% command, the command |\autoref| tries to figure out the name of the
+% reference from the context.  See the manual~\cite{Rahtz06:Hyperref}
+% for more information.
+%
+%\subsection{Theorems}
+%\label{sec:theorems}
+%
+% \DescribeMacro{\newtheorem}
+% You can use the commands of \progname{amsthm}
+% package~\cite{amsthdoc} like
+% |\newtheorem{lem}{Lemma}| for numbered theorems, or
+% |\newtheorem*{KL}{Klein's Lemma}| for unnumbered theorems, or
+% tune the numbering using the optional arguments of these commands.  
+%
+% To provide backward compatibility with some other classes used
+% internally by the \emph{Annals of Mathematics,} the class provides
+% yet another optional argument for the command |\newtheorem|,
+% allowing constructions like |\newtheorem[\it]{lem}{Lemma}|.  This
+% optional parameter is not used in our typesetting.
+%
+%
+% The class provides two theorem styles:
+% \begin{description}
+% \item[plain:] This is the default theorem style.  It is used for 
+% Theorem, Lemma, Proposition, Conjecture, Corollary and  Claim.
+% \item[definition:] This style is used for Definition, Remark,
+% Notation, Condition,  Example etc.
+% \end{description}
+% Note that AMS classes define the third theorem style,
+% \textbf{remark.}  In our class remarks are typeset in the
+% \textbf{definition} style.  To make the authors' lives easier we
+% define the theorem style \textbf{remark,} which is identical to the
+% theorem style \textbf{definition.}
+%
+%\subsection{Illustrations}
+%\label{sec:illustrations}
+%
+% The authors can use the \progname{graphics}, \progname{graphicx},
+% \progname{PSTricks}, \progname{pgf/tikz}, \progname{Metapost} or
+% other tools to include illustrations
+% (see~\cite{Goossens97:LateXGraphicsCompanion} for a comprehensive
+% discussion of \LaTeX{} graphics possibilities).
+%
+%
+%\subsection{Bibliography}
+%\label{sec:biblio}
+%
+% The authors are encouraged to use Bib\TeX{} for uniform style of
+% bibliography.  The distribution includes the BST files
+% \path{aomplain.bst} and \path{aomalpha.bst}.  These files have
+% several additional non-standard fields:
+% \begin{description}
+% \item[mrnumber:] MathSciNet number for the article.
+% \item[zblnumber:] Zentralblatt number for the article.
+% \item[doi:] DOI number for the article.
+% \item[jfmnumber:] JFM number for the article.
+% \item[arxiv:] ArXiv reference for the ArXiv manuscript.
+% \item[url:] If the reference is available online, the corresponding
+% url. 
+% \item[venue:] (for \texttt{conference} entries)  The place where the
+% conference took place.
+% \item[sortyear:] Some entries do not have a year set up (e.g. some
+%   \texttt{unpublished} entries.  If you have several entries from
+%   the same author, some with a year, and some without, you may want
+%   to put them in a certain order.  The field |sortyear| overrides
+%   |year| for the sorting purposes.
+% \item[titlenote:] this field is like \texttt{note}, but is typeset
+% immediately after a title.  It should be used for additional
+% information, for example,
+% \begin{verbatim}
+% @Book{Knuth94:TheTeXbook,
+%  author =	 {Knuth, Donald Ervin},
+%  title = 	 {The \TeX book},
+%  publisher = 	 {Addison-Wesley Publishing Company},
+%  year = 	 1994,
+%  series =	 {Computers \& Typesetting A},
+%  address =	 {Reading, MA},
+%  titlenote  =  {with illustrations by Duane Bibby}
+% }
+% \end{verbatim}
+% \item[totalpages:] some articles (especially published in an electronic
+% format) do not have start and end page numbers; instead you may put
+% the total number of pages.   If both \texttt{pages} and
+% \texttt{totalpages} are present, \texttt{pages} take precedence.  
+% 
+% \end{description}
+% 
+%
+% \DescribeMacro{\doi}
+% \DescribeMacro{\mr}
+% \DescribeMacro{\zbl}
+% \DescribeMacro{\jfm}
+% \DescribeMacro{\arxiv}
+% There are several databases routinely used in the science and
+% mathematics communities.  Among them are DOI, MathSciNet,
+% Zentralblatt, Jahrbuch Database, ArXiv.  Many bibliographies include
+% references to 
+% these databases.  The commands |\doi|, |\mr|, |\zbl|, |\jfm|, |\arxiv| are
+% used to typeset these  references.  If you use Bib\TeX{}, these
+% commands are automatically used for the corresponding fields in your
+% database entries.
+%
+%
+%\subsection{Papers in languages other than English}
+%\label{sec:non-english}
+%
+% The recommmended way to typeset papers in languages other than
+% English is \textsl{babel} package~\cite{Braams05:Babel}.  For
+% example, to typeset a paper in French (with an English abstract, see
+% below), one puts in the preamble
+% \begin{verbatim}
+% \usepackage[utf8]{inputenx}
+% \usepackage[english,frenchb]{babel}
+% \end{verbatim}
+%
+% Such papers often contain several abstracts: for example, in the
+% language the paper is written \emph{and} in English.  Accordingly,
+% \textsl{aomart} allows several abstracts.  Each abstract must be put
+% inside a group with the corresponding language selected using
+% \cs{selectanguage} command, for example
+% \begin{verbatim}
+% {\selectlanguage{french}%
+%   \begin{abstract}
+%     French abstract
+%   \end{abstract}}
+%
+% {\selectlanguage{english}%
+%   \begin{abstract}
+%     English abstract
+%   \end{abstract}}
+% \end{verbatim}
+% 
+%
+% \StopEventually{%
+% \clearpage
+%
+% \bibliography{aomart}
+% \bibliographystyle{unsrt}}
+% 
+% \clearpage
+%
+%
+%\section{Implementation}
+%\label{sec:impl}
+%
+%\subsection{Identification}
+%\label{sec:ident}
+%
+% We start with the declaration who we are.  Most |.dtx| files put
+% driver code in a separate driver file |.drv|.  We roll this code into the
+% main file, and use the pseudo-guard |<gobble>| for it.
+%    \begin{macrocode}
+%<class>\NeedsTeXFormat{LaTeX2e}
+%<*gobble>
+\ProvidesFile{aomart.dtx}
+%</gobble>
+%<class>\ProvidesClass{aomart}
+[2017/12/13 v1.21 Typesetting articles for the Annals of Mathematics]
+%    \end{macrocode}
+%
+%
+%
+% And the driver code:
+%    \begin{macrocode}
+%<*gobble>
+\documentclass{ltxdoc}
+\usepackage{array,booktabs,amsmath,graphics}
+\let\widebar\overline
+\usepackage{url}
+\usepackage{amsfonts,yhmath}
+\usepackage[breaklinks,colorlinks,linkcolor=black,citecolor=black,
+            pagecolor=black,urlcolor=black,hyperindex=false]{hyperref}
+\PageIndex
+\CodelineIndex
+\RecordChanges
+\EnableCrossrefs
+\begin{document}
+  \DocInput{aomart.dtx}
+\end{document}
+%</gobble> 
+%<*class>
+%    \end{macrocode}
+%
+%
+%\subsection{Options}
+%\label{sec:options}
+%
+%
+% The size-changing options produce a warning:
+%    \begin{macrocode}
+\long\def\aom@size@warning#1{%
+  \ClassWarning{aomart}{Size-changing option #1 will not be
+    honored}}%
+\DeclareOption{8pt}{\aom@size@warning{\CurrentOption}}%
+\DeclareOption{9pt}{\aom@size@warning{\CurrentOption}}%
+\DeclareOption{10pt}{\aom@size@warning{\CurrentOption}}%
+\DeclareOption{11pt}{\aom@size@warning{\CurrentOption}}%
+\DeclareOption{12pt}{\aom@size@warning{\CurrentOption}}%
+%    \end{macrocode}
+% 
+% \begin{macro}{\if@aom@manuscript@mode}
+% \changes{v0.3}{2010/09/28}{Added manuscript mode} 
+%   Check whether we are in the manuscript mode
+%    \begin{macrocode}
+\newif\if@aom@manuscript@mode
+\@aom@manuscript@modefalse
+\DeclareOption{manuscript}{\@aom@manuscript@modetrue}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\if@aom@screen@mode}
+% \changes{v0.10}{2010/12/20}{Added screen mode} 
+%   Check whether we are in the screen mode
+%    \begin{macrocode}
+\newif\if@aom@screen@mode
+\@aom@screen@modefalse
+\DeclareOption{screen}{\@aom@screen@modetrue}
+%    \end{macrocode}   
+% \end{macro}
+%
+% \begin{macro}{\if@aom@olddoi}
+% \changes{v1.10}{2011/06/21}{Added old DOI processing} 
+%   DOI processing is different in the ``old'' and new mode.
+%    \begin{macrocode}
+\newif\if@aom@olddoi
+\@aom@olddoifalse
+\DeclareOption{olddoi}{\@aom@olddoitrue}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+%
+% \begin{macro}{\if@aom@doiMMXVI}
+% \changes{v1.15}{2016/11/18}{Added another options} 
+%   DOI processing is different in the 2016 and new mode
+%    \begin{macrocode}
+\newif\if@aom@doiMMXVI
+\@aom@doiMMXVIfalse
+\DeclareOption{doi2016}{\@aom@doiMMXVItrue}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+%
+% \begin{macro}{\if@aom@oldkeywords}
+% \changes{v1.18}{2017/02/11}{Added keywords processing} 
+%   Keywords processing is different in the ``old'' and new mode.
+%    \begin{macrocode}
+\newif\if@aom@oldkeywords
+\@aom@oldkeywordsfalse
+\DeclareOption{oldkeywords}{\@aom@oldkeywordstrue}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+%
+%
+% All other options are passed to \progname{amsart}:
+%    \begin{macrocode}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{amsart}}
+%    \end{macrocode}
+% 
+% Now we read the configuration file
+%    \begin{macrocode}
+\InputIfFileExists{aomart.cfg}{%
+  \ClassInfo{aomart}{%
+    Loading configuration file aomart.cfg}}{%
+  \ClassInfo{aomart}{%
+    Configuration file aomart.cfg is not found}}
+%    \end{macrocode}
+% And process the options:
+%    \begin{macrocode}
+\ProcessOptions\relax
+%    \end{macrocode}
+%
+%
+%\subsection{Loading Class and Packages}
+%\label{sec:loading}
+%
+% We start with the base class
+% \changes{v1.4}{2011/01/21}{Deleted noamsfonts option} 
+%    \begin{macrocode}
+\LoadClass[11pt]{amsart}
+%    \end{macrocode}
+%
+% A bunch of packages:
+% \changes{v0.5}{2010/10/24}{Made Roman font the default URL font} 
+% \changes{v0.10}{2010/12/20}{Screen mode triggers special URL
+% settings} 
+% \changes{v1.1}{2010/12/31}{In manuscript mode the links are always blue} 
+%    \begin{macrocode}
+\RequirePackage{fancyhdr, lastpage, ifpdf}
+\RequirePackage[breaklinks,colorlinks]{hyperref}
+\if@aom@screen@mode
+\hypersetup{linkcolor=blue,citecolor=blue, 
+  urlcolor=blue, pdfpagescrop={110 705 500 80}}%
+\else\if@aom@manuscript@mode
+\hypersetup{linkcolor=blue,citecolor=blue, 
+  urlcolor=blue}%
+\else
+\hypersetup{linkcolor=black,citecolor=black, 
+  urlcolor=black}%
+\fi\fi
+\urlstyle{rm}
+%    \end{macrocode}
+%
+% \changes{v0.4}{2010/09/29}{Deleted lineno package dependence} 
+% \changes{v1.16}{2016/12/03}{We require environ package} 
+% Amsart has \cs{collect@body} macro.  However, we want the \cs{long}
+% version, so we use \textsl{environ}
+%    \begin{macrocode}
+\RequirePackage{environ}
+%    \end{macrocode}
+% 
+% 
+%
+%
+%\subsection{Internationalization}
+%\label{sec:babel}
+% 
+% There are some papers published in languages other than English.
+% The \progname{Babel} is expected to be used for them.  Here we add some
+% macros extending captions for these languages.
+%
+%
+% First, let us define English defaults:
+%
+%
+% \begin{macro}{\@aom@by}
+% \changes{v1.10}{2011/06/21}{Added macro}
+%   This is just ``By'' in English:
+%    \begin{macrocode}
+\def\@aom@by{By}
+%    \end{macrocode}   
+% \end{macro}
+%
+% \begin{macro}{\@aom@and}
+% \changes{v1.10}{2011/06/21}{Added macro}
+%   This is ``and'' in English:
+%    \begin{macrocode}
+\def\@aom@and{and}
+%    \end{macrocode}
+% \end{macro}
+%
+% Now we can define internationalization:
+%    \begin{macrocode}
+\AtBeginDocument{\@ifpackageloaded{babel}{%
+  \addto\captionsfrench{\def\@aom@by{Par}\def\@aom@and{et}}%
+  \addto\captionsgerman{\def\@aom@by{Von}\def\@aom@and{und}}%
+  \addto\captionsenglish{\def\@aom@by{By}\def\@aom@and{and}}}{}}
+%    \end{macrocode}
+% 
+%
+%\subsection{Fonts}
+%\label{sec:fonts}
+% 
+% \changes{v0.8}{2010/1/16}{Added yhmath}
+% We use \progname{yhmath} for wide symbols:
+%    \begin{macrocode}
+\RequirePackage{yhmath}
+%    \end{macrocode}
+% 
+%
+% \changes{v0.3}{2010/09/26}{Added package mdputu} 
+% \changes{v0.4}{2010/09/28}{Switched to upright digits in italics
+% everywhere} 
+% \changes{v0.8}{2010/1/16}{Switched to cmtiup} 
+% We need \progname{cmtiup} package, but we may find out it is not
+% installed.
+%    \begin{macrocode}
+\IfFileExists{cmtiup.sty}{%
+  \RequirePackage{cmtiup}}{%
+  \ClassWarning{aomart}{The package mdputu is not found.\MessageBreak
+    You need this package to get italics with upright digits!}}
+%    \end{macrocode}
+% 
+% \begin{macro}{\specialdigits}
+% \changes{v0.8}{2010/1/16}{Redefined to noop} 
+%   A legacy macro.  We do not need it anymore.
+%    \begin{macrocode}
+\def\specialdigits{}%
+\let\sishape=\itshape
+\let\textsi=\textit
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+% The \progname{amsart} class defines several options for different
+% font sizes (10pt, 11pt, etc).  We have just one design size for the
+% articles.
+%
+% \begin{macro}{\@typesizes}
+% \changes{v0.5}{2010/10/24}{Increased LARGE from 16 pt to 17 pt} 
+% \changes{v0.5}{2010/10/24}{Corrected typo in the definition of Small} 
+%   The font information in \progname{amsart} is stored in
+%   |\@typesizes| macro.  It has 11 typesizes:  5 below and 5 above
+%   |\normalsize| .
+%    \begin{macrocode}
+\def\@typesizes{%
+  \or{\@vipt}{9}\or{\@viipt}{9}\or{\@viiipt}{9}\or{\@ixpt}{12}%
+  \or{\@xpt}{13}%
+  \or{\@xipt}{14}% normalsize
+  \or{\@xiipt}{15}\or{13}{17}\or{\@xviipt}{20}%
+  \or{19}{23.2}\or{22}{27.8}}%
+\normalsize \linespacing=\baselineskip
+%    \end{macrocode}
+% \end{macro}
+% 
+%
+% \begin{macro}{\widebar}
+%   The functionality of |\widebar| coincides with that of
+%   \progname{amsmath} |\overline|:
+%    \begin{macrocode}
+\let\widebar\overline
+%    \end{macrocode}   
+% \end{macro}
+%
+%\subsection{Page Dimensions and Paragraphing}
+%\label{sec:page}
+%
+% \begin{macro}{\textwidth}
+% \begin{macro}{\textheight}
+% These are from the old \progname{aomamlt2e}:
+%    \begin{macrocode}
+\setlength{\textwidth}{31pc}
+\setlength{\textheight}{48pc} 
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% 
+% \begin{macro}{\evensidemargin}
+% \begin{macro}{\oddsidemargin}
+%   The margins:
+%    \begin{macrocode}
+\oddsidemargin=.65in
+\evensidemargin=.65in
+%    \end{macrocode}
+%   
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\footins}
+% \begin{macro}{\topskip}
+% \begin{macro}{\abovedisplayskip}
+% \begin{macro}{\belowdisplayskip}
+% \changes{v0.6}{2010/10/03}{Changed belowdisplayskip} 
+%   Some skips from \progname{aomamlt2e}:
+%    \begin{macrocode}
+\setlength{\topskip}{12pt}
+\setlength{\abovedisplayskip}{6.95pt plus3.5pt minus 3pt}
+\setlength{\belowdisplayskip}{6.95pt plus4.5pt minus 3pt}
+\setlength{\skip\footins}{20pt}
+\setlength{\dimen\footins}{3in}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\footskip}
+%   Some space for footnotes:
+%    \begin{macrocode}
+\setlength\footskip{30pt}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+% \begin{macro}{\parskip}
+% \begin{macro}{\parindent}
+%   Paragraph shape:
+%    \begin{macrocode}
+\setlength{\parindent}{22pt}
+\setlength{\parskip}{\z@}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\widowpenalty}
+% \begin{macro}{\clubpenalty}
+%   We suppress widows and clubs:
+%    \begin{macrocode}
+\widowpenalty=10000
+\clubpenalty=10000
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+%\subsection{Headers}
+%\label{sec:headers}
+%
+% \begin{macro}{\headsep}
+%   Separation between the header and the body
+%    \begin{macrocode}
+\setlength{\headsep}{14pt}
+%    \end{macrocode}
+%   
+% \end{macro}
+% \begin{macro}{\headrulewidth}
+% \begin{macro}{\footrulewidth}
+%   We do not want decorative rules in the journal:
+%    \begin{macrocode}
+\renewcommand{\headrulewidth}{0pt}
+\renewcommand{\footrulewidth}{0pt}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% 
+%
+% \begin{macro}{\@aom@linecount}
+% \changes{v0.4}{2010/09/29}{Added macro} 
+%   This is the box displayed in the manuscript mode
+%    \begin{macrocode}
+\if@aom@manuscript@mode
+  \newsavebox{\@aom@linecount}
+  \savebox{\@aom@linecount}[4em][t]{\parbox[t]{4em}{%
+      \@tempcnta\@ne\relax
+      \loop{\underline{\scriptsize\the\@tempcnta}}\\
+      \advance\@tempcnta by \@ne\ifnum\@tempcnta<43\repeat}}
+\fi
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+% \changes{v0.4}{2010/09/29}{Used line numbers for headings} 
+% \changes{v0.5}{2010/10/24}{Added extra footer in manuscript mode} 
+% \changes{v0.5}{2010/10/24}{Corrected the byg with math in headers} 
+% \changes{v0.8}{2010/11/16}{Changed authors in header} 
+% It is easy to set up headers with \progname{fancyhdr}:
+%    \begin{macrocode}
+\pagestyle{fancy}
+\fancyhead{}
+\fancyfoot{}
+\fancyhead[CO]{\scriptsize\shorttitle}
+\fancyhead[RO,LE]{\footnotesize\thepage}
+\if@aom@manuscript@mode
+  \fancyhead[LE]{\footnotesize\thepage\begin{picture}(0,0)%
+      \put(-26,-25){\usebox{\@aom@linecount}}%
+    \end{picture}}
+  \fancyhead[LO]{\begin{picture}(0,0)%
+      \put(-21,-25){\usebox{\@aom@linecount}}%
+    \end{picture}}
+  \fancyfoot[C]{\scriptsize Proof: page numbers may be temporary}
+\fi
+\fancyhead[CE]{\scriptsize\MakeUppercase\shortauthors}
+%    \end{macrocode}
+% 
+% \changes{v0.3}{2010/09/26}{Added DOI number in headers} 
+% \changes{v0.9}{2010/12/04}{Changed font for the folio on the first
+% page} 
+% \changes{v1.3}{2011/01/07}{Corrected bug with doinumber} 
+% The first page has the special headers.  The style |firstpage| is
+% invoked by \progname{amsart}; here we just redefine it.
+%    \begin{macrocode}
+\fancypagestyle{firstpage}{%
+  \fancyhf{}%
+  \if@aom@manuscript@mode
+    \lhead{\begin{picture}(0,0)%
+        \put(-21,-25){\usebox{\@aom@linecount}}%
+      \end{picture}}
+  \fi
+  \chead{\scriptsize%
+    \href{\@annalsurl}{Annals of Mathematics} \textbf{\currentvolume}
+    (\currentyear), 
+%    \end{macrocode}
+% \changes{v1.7}{2011/03/08}{Suppressed page number in the header for
+% one-page articles} 
+%  We always print the starting page.  However, we print the last page
+%  only if it does not coincide with the first page.  There are two
+%  cases here: first, the last page may still be
+%  |\pageref{LastPage}|.  In this case we need to extract the numerical
+%  value of the counter---note that hyperref is in action!
+%  Second, we could redefine the last page, and it is no
+%  longer |\pageref{LastPage}|.  In this case we need to compare the
+%  value with the first page.
+%    \begin{macrocode}
+    \start@page%
+    \def\tempa{\pageref{LastPage}}%
+    \edef\tempb{\start@page}%
+    \ifx\tempa\end@page
+      \edef\tempa{\HyPsd@@@pageref{LastPage}}%
+    \else
+       \edef\tempa{\end@page}%
+    \fi
+    \ifx\tempa\tempb\else--\end@page\fi\\
+  \ifx\@doinumber\@empty\else
+  \edef\@doinumber{\@doinumber}%
+  \expandafter\doi\expandafter{\@doinumber}\fi}%
+   \cfoot{\footnotesize\thepage}}%
+%    \end{macrocode}
+%
+% \begin{macro}{\annalsurl}
+% \changes{v1.14a}{2015/02/18}{New url}
+%   The command to set up the URL of the journal
+%    \begin{macrocode}
+\def\annalsurl#1{\gdef\@annalsurl{#1}}
+\annalsurl{http://annals.math.princeton.edu/about}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+%
+%\subsection{Top Matter Macros}
+%\label{sec:top_matter_code}
+% 
+% We make these macros allowed only in the preamble:
+%    \begin{macrocode}
+\@onlypreamble{\title}
+\@onlypreamble{\author}
+\@onlypreamble{\email}
+\@onlypreamble{\address}
+\@onlypreamble{\curraddr}
+\@onlypreamble{\urladdr}
+\@onlypreamble{\orcid}
+\@onlypreamble{\givenname}
+\@onlypreamble{\fulladdress}
+\@onlypreamble{\surname}
+\@onlypreamble{\thanks}
+\@onlypreamble{\keyword}
+\@onlypreamble{\subject}
+\@onlypreamble{\received}
+\@onlypreamble{\revised}
+\@onlypreamble{\accepted}
+\@onlypreamble{\published}
+\@onlypreamble{\publishedonline}
+\@onlypreamble{\proposed}
+\@onlypreamble{\seconded}
+\@onlypreamble{\corresponding}
+\@onlypreamble{\editor}
+\@onlypreamble{\version}
+\@onlypreamble{\volumenumber}
+\@onlypreamble{\issuenumber}
+\@onlypreamble{\publicationyear}
+\@onlypreamble{\copyrightnote}
+\@onlypreamble{\copyrighyear}
+\@onlypreamble{\papernumber}
+\@onlypreamble{\startpage}
+\@onlypreamble{\endpage}
+\@onlypreamble{\doinumber}
+\@onlypreamble{\mrnumber}
+\@onlypreamble{\zblnumber}
+\@onlypreamble{\arxivnumber}
+%    \end{macrocode}
+% 
+%
+% Most top matter macros are defined in \progname{amsart}.  Here we
+% just add some new macros and redefine some.
+%
+% \begin{macro}{\fulladdress}
+% \changes{v1.11}{2012/08/16}{Added macro} 
+% \changes{v1.16}{2016/12/03}{Redefined} 
+% \begin{macro}{\givenname}
+% \changes{v1.16}{2016/12/03}{Redefined} 
+% \begin{macro}{\surname}
+% \changes{v1.16}{2016/12/03}{Redefined} 
+%   We store the information to output it later in the rpi file
+%    \begin{macrocode}
+\def\@names{}
+\def\givenname#1{\g@addto@macro\@names{givenname=#1;}}
+\def\surname#1{\g@addto@macro\@names{surname=#1;}}
+\def\fulladdress#1{\g@addto@macro\@names{fulladdress=#1;}}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\author}
+% \changes{v1.16}{2016/12/03}{Redefined amsart definition} 
+%   We add mangling of \cs{@names} to the amsart macro
+%    \begin{macrocode}
+\renewcommand{\author}[2][]{%
+  \ifx\@empty\authors
+    \gdef\authors{#2}%
+    \g@addto@macro\@names{author=#2;}%
+  \else
+    \g@addto@macro\authors{\and#2}%
+    \g@addto@macro\@names{\and author=#2;}%
+    \g@addto@macro\addresses{\author{}}%
+  \fi
+  \@ifnotempty{#1}{%
+    \ifx\@empty\shortauthors
+      \gdef\shortauthors{#1}%
+    \else
+      \g@addto@macro\shortauthors{\and#1}%
+    \fi
+  }%
+}
+\edef\author{\@nx\@dblarg
+  \@xp\@nx\csname\string\author\endcsname}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+% \begin{macro}{\email}
+% \changes{v1.16}{2016/12/03}{Redefined amsart definition} 
+%   We change amsart macro to output metadata
+%    \begin{macrocode}
+\renewcommand{\email}[2][]{%
+  \g@addto@macro\addresses{\email{#1}{#2}}%
+  \g@addto@macro\@names{email=#2;}%
+}
+%    \end{macrocode}
+%   
+% \end{macro}
+% \begin{macro}{\urladdr}
+% \changes{v1.16}{2016/12/03}{Redefined amsart definition} 
+%   We change amsart macro to output metadata
+%    \begin{macrocode}
+\renewcommand{\urladdr}[2][]{%
+  \g@addto@macro\addresses{\urladdr{#1}{#2}}%
+  \g@addto@macro\@names{urladdr=#2;}%
+}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+% \begin{macro}{\orcid}
+% \changes{v1.18}{2017/02/15}{Added macro} 
+%   Orcid also outputs metadata
+%    \begin{macrocode}
+\newcommand{\orcid}[2][]{%
+  \g@addto@macro\addresses{\orcid{#1}{#2}}%
+  \g@addto@macro\@names{orcid=#2;}%
+}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+% \begin{macro}{\keyword}
+%   Actually \progname{amsart} has |\kewords| macro. It redefines
+%   |\@keywords|.  Our macro adds to the stack instead.
+%    \begin{macrocode}
+\def\keyword#1{\ifx\@keywords\@empty\gdef\@keywords{#1}\else
+  \g@addto@macro\@keywords{, #1}\fi}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\subject}
+% \changes{v1.18}{2017/02/15}{Drop scheme and primary/secondary} 
+% \changes{v1.20}{2017/05/09}{Make primary and secondary subjects separated} 
+%   Subjects:
+%    \begin{macrocode}
+\let\@primarysubjects\@empty
+\let\@secondarysubjects\@empty
+\def\subject#1#2#3{%
+  \expandafter\ifx\csname @#1subjects\endcsname\@empty\relax
+     \expandafter\gdef\csname @#1subjects\endcsname{#3}%
+  \else
+     \expandafter\g@addto@macro\csname @#1subjects\endcsname{, #3}%
+  \fi}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+%
+% \begin{macro}{\formatdate}
+%   This just sends the date to the special macro |\@formatdate|
+%    \begin{macrocode}
+\def\formatdate#1{\@formatdate#1\@endformatdate}
+%    \end{macrocode}   
+% \end{macro}
+%
+% \begin{macro}{\@formatdate}
+%   This macro takes date in the form YYYY-MM-DD and properly formats
+%   it.  Note how we delete the leading zero in dates like April 02.
+%    \begin{macrocode}
+\def\@formatdate#1-#2-#3\@endformatdate{%
+  \@tempcnta=#3\relax
+  \ifcase#2\or
+  January\or February\or March\or April\or May\or June\or
+  July\or August\or September\or October\or November\or December\fi
+  \space\the\@tempcnta,\space#1}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+% \begin{macro}{\received}
+% \begin{macro}{\revised}
+% \begin{macro}{\accepted}
+% \begin{macro}{\published}
+% \begin{macro}{\publishedonline}
+%   The following macros add stuff to the footnotes material:
+%    \begin{macrocode}
+\def\received#1{\def\@received{#1}}
+\let\@received\@empty
+\def\revised#1{\def\@revised{#1}}
+\let\@revised\@empty
+\def\accepted#1{\def\@accepted{#1}}
+\let\@accepted\@empty
+\def\published#1{\def\@published{#1}}
+\let\@published\@empty
+\def\publishedonline#1{\def\@publishedonline{#1}}
+\let\@publishedonline\@empty
+%    \end{macrocode}
+%   
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The next macros mimic the functionality of \progname{amsart}
+% |\issueinfo| command.  Note that |\issueinfo| still works.
+% \begin{macro}{\volumenumber}
+%   This sets the volume of the paper
+%    \begin{macrocode}
+\def\volumenumber#1{\def\currentvolume{#1}}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\issuenumber}
+%   This sets the issue of the paper:
+%    \begin{macrocode}
+\def\issuenumber#1{\def\currentissue{#1}}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\publicationyear}
+%   This sets the year of the paper
+%    \begin{macrocode}
+\def\publicationyear#1{\def\currentyear{#1}}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\papernumber}
+% \changes{v1.0}{2010/12/21}{Added macro} 
+%   This is absent from the |\issueinfo|.  
+%    \begin{macrocode}
+\def\papernumber#1{\def\currentpaper{#1}}
+\papernumber{0000}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\startpage}
+%   This defines the starting page of the paper.  We have some nice
+%   features to set up roman page numbers for editorial
+%   stuff---probably not needed for this journal at this time\dots
+%    \begin{macrocode}
+\def\startpage#1{\pagenumbering{arabic}\setcounter{page}{#1}%
+  \def\start@page{#1}%
+  \ifnum\c@page<\z@ \pagenumbering{roman}\setcounter{page}{-#1}%
+    \def\start@page{\romannumeral#1}%
+  \fi}
+%    \end{macrocode}   
+% \end{macro}
+%
+% \begin{macro}{\endpage}
+%   This macro again has a twist in it: if the argument is not set, it
+%   calculates the last page number itself.
+%    \begin{macrocode}
+\def\endpage#1{\def\@tempa{#1}%
+  \ifx\@tempa\@empty\def\end@page{\pageref{LastPage}}%
+  \else\def\end@page{#1}\fi}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\pagespan}
+%   This macro is different from the one provided by \progname{amsart}
+%   because we want to have the option of automatic calculation of the
+%   last page number.
+%    \begin{macrocode}
+\def\pagespan#1#2{\startpage{#1}\endpage{#2}}
+\pagespan{1}{}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\g@addto@abstract}
+% \changes{v1.21}{2017/12/13}{Added macro} 
+% Syntactic sugar around \cs{g@addto@macro}
+%    \begin{macrocode}
+\def\g@addto@abstract#1{\g@addto@macro{\@aom@abstract}{#1}}
+%    \end{macrocode}
+% 
+% \end{macro}
+%
+% \begin{macro}{\@getabstract}
+% \changes{v1.21}{2017/12/13}{Added multilanguage abstracts} 
+%   Amsart typesets the abstract in a box.  We preserve this
+%   peculuarity, but we need to put abstract in a macro to output in
+%   the rpi file.
+%    \begin{macrocode}
+\long\def\@aom@abstract{}
+\long\def\@getabstract#1{%
+  \bgroup
+    \ifx\languagename\undefined
+      \def\languagename{english}%
+    \fi
+    \g@addto@abstract{<begin abstract }%
+    \expandafter\g@addto@abstract\expandafter{\languagename>}%
+    \g@addto@macro\@aom@abstract{#1}%  
+    \g@addto@abstract{<end abstract }%
+    \expandafter\g@addto@abstract\expandafter{\languagename>}%
+  \egroup
+  \ifx\maketitle\relax
+    \ClassWarning{aomart}{Abstract should precede
+      \protect\maketitle\space in AMS derived classes}%
+  \fi
+  \global\setbox\abstractbox=\vtop\bgroup%
+    \box\abstractbox
+    \vglue1pc%
+    {\centering\normalfont\normalsize\bfseries\abstractname\par\vglue1pc}%
+    \list{}{\labelwidth\z@%
+      \leftmargin3pc \rightmargin\leftmargin%
+      \listparindent\normalparindent \itemindent\normalparindent%
+      \parsep\z@ \@plus\p@%
+      \let\fullwidthdisplay\relax%
+    }%
+    \item[]\normalfont\Small#1
+  \endlist\egroup}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+%
+% \begin{macro}{abstract}
+% \changes{v0.9}{2010/12/04}{Added parindent for the first par} 
+% \changes{v1.16}{2016/12/03}{Redefined using environ} 
+%   This puts abstract in a box \emph{and} in a macro.  Wasteful, but
+%   backword compatible
+%    \begin{macrocode}
+\renewenvironment{abstract}{\Collect@Body\@getabstract}{%
+  \ifx\@setabstract\relax\@setabstracta\fi}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\proposed}
+% \changes{v0.3}{2010/09/26}{Added macro} 
+% We do not typeset the name of the proposer
+%    \begin{macrocode}
+\let\proposed\@gobble
+%    \end{macrocode} 
+% \end{macro}
+% \begin{macro}{\seconded}
+% \changes{v0.3}{2010/09/26}{Added macro} 
+% Or the seconder
+%    \begin{macrocode}
+\let\seconded\@gobble
+%    \end{macrocode} 
+% \end{macro}
+% \begin{macro}{\corresponding}
+% \changes{v0.3}{2010/09/26}{Added macro} 
+% This is the corresponding author---again not typeset
+%    \begin{macrocode}
+\let\corresponding\@gobble
+%    \end{macrocode} 
+% \end{macro}
+% \begin{macro}{\version}
+% \changes{v0.3}{2010/09/26}{Added macro} 
+% We do not typeset the current version of the manuscript either\dots 
+%    \begin{macrocode}
+\let\version\@gobble
+%    \end{macrocode} 
+% \end{macro}
+%
+% \begin{macro}{\doinumber}
+% \changes{v0.3}{2010/09/26}{Added macro} 
+% \changes{v1.0}{2010/12/21}{Added default} 
+% \begin{macro}{\mrnumber}
+% \changes{v0.3}{2010/09/26}{Added macro} 
+% \begin{macro}{\zblnumber}
+% \changes{v0.3}{2010/09/26}{Added macro} 
+% \begin{macro}{\arxivnumber}
+% \changes{v1.16}{2016/12/04}{Added macro} 
+%   Now databases' numbers of the article:
+%    \begin{macrocode}
+\def\doinumber#1{\gdef\@doinumber{#1}}
+\doinumber{10.4007/annals.\currentyear.\currentvolume.\currentissue.\currentpaper}
+\def\mrnumber#1{\gdef\@mrnumber{#1}}
+\mrnumber{}
+\def\zblnumber#1{\gdef\@zblnumber{#1}}
+\zblnumber{}
+\def\arxivnumber#1{\gdef\@arxivnumber{#1}}
+\arxivnumber{}
+%    \end{macrocode}
+%   
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\copyrightyear}
+% \changes{v1.11}{2012/07/23}{Added macro} 
+%   This is the copyright year in case it does not coincide with the
+%   publication year:
+%    \begin{macrocode}
+\def\copyrightyear#1{\def\@copyrightyear{#1}}
+\copyrightyear{}
+%    \end{macrocode}
+%   
+% \end{macro}
+% 
+% \begin{macro}{\copyrightnote}
+% \changes{v1.11}{2012/07/23}{Added macro} 
+%   This is the copyrightnote.  The default has some trickery with the
+%   year:
+%    \begin{macrocode}
+\def\copyrightnote#1{\def\@copyrightnote{#1}}
+\copyrightnote{\textcopyright~%
+  \ifx\@empty\@copyrightyear\currentyear\else\@copyrightyear\fi~%
+  Department of Mathematics, Princeton University}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+%\subsection{Typesetting Top Matter}
+%\label{sec:maketitle}
+%
+%
+% \begin{macro}{\@mainrpi}
+% \changes{v1.14}{2014/03/03}{Added macro} 
+% We write the information about the paper into file.rpi (the 
+%   The stream for the rpi file:
+%    \begin{macrocode}
+\newwrite\@mainrpi
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+% \begin{macro}{\aom@write@paper@info}
+% \changes{v1.14}{2014/03/04}{Added macro} 
+% \changes{v1.16}{2016/12/03}{Added names, abstract, subjects,
+% keywords, zblnumber, arxivnumber} 
+% \changes{v1.16}{2016/12/03}{Corrected the endpage bug} 
+% \changes{v1.20}{2017/05/09}{Make primary and secondary subjects
+% separated}
+% \changes{v1.21}{2017/12/13}{Added main language}
+%   This writes the information about the paper into the file
+%   |jobname.rpi|.  Note that hyperref makes our life a little bit
+%   more complex
+%    \begin{macrocode}
+\def\aom@write@paper@info{%
+  \bgroup
+  \if@filesw
+    \openout\@mainrpi\jobname.rpi%
+    \def\and{\string\and\space}%
+    \ifx\r@LastPage\@undefined
+       \edef\@tempa{\start@page}%
+    \else
+       \def\@tempc##1##2##3##4##5{##2}%
+       \edef\@tempa{\expandafter\@tempc\r@LastPage}%
+   \fi
+   \ifx\languagename\undefined
+     \def\languagename{english}%
+   \fi
+   \protected@write\@mainrpi{}%
+    {\@percentchar authors=\authors}%
+   \protected@write\@mainrpi{}%
+    {\@percentchar authors.information={\@names}}%
+   \protected@write\@mainrpi{}%
+    {\@percentchar title=\@title}%
+   \protected@write\@mainrpi{}%
+    {\@percentchar year=\currentyear}%
+   \protected@write\@mainrpi{}%
+    {\@percentchar volume=\currentvolume}%
+   \protected@write\@mainrpi{}%
+    {\@percentchar issue=\currentissue}%
+   \protected@write\@mainrpi{}%
+    {\@percentchar paper=\currentpaper}%
+   \protected@write\@mainrpi{}%
+    {\@percentchar startpage=\start@page}%
+   \protected@write\@mainrpi{}%
+    {\@percentchar endpage=\@tempa}%
+   \protected@write\@mainrpi{}%
+    {\@percentchar doi=\@doinumber}%
+   \ifx\@zblnumber\@empty\else
+   \protected@write\@mainrpi{}%
+    {\@percentchar zbl=\@zblnumber}%
+   \fi
+   \ifx\@mrnumber\@empty\else
+   \protected@write\@mainrpi{}%
+    {\@percentchar mr=\@mrnumber}%
+   \fi
+   \ifx\@arxivnumber\@empty\else
+   \protected@write\@mainrpi{}%
+    {\@percentchar arxiv=\@arxivnumber}%
+   \fi
+   \protected@write\@mainrpi{}%
+    {\@percentchar subjects=Primary \@primarysubjects; Secondary:
+      \@secondarysubjects}% 
+   \protected@write\@mainrpi{}%
+    {\@percentchar keywords=\@keywords}%
+   \protected@write\@mainrpi{}%
+    {\@percentchar abstract=\@aom@abstract}%    
+   \protected@write\@mainrpi{}%
+    {\@percentchar articlelanguage=\languagename}%    
+    \closeout\@mainrpi
+    \fi
+\egroup}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+% \begin{macro}{\@maketitle@hook}
+% \changes{v1.14}{2014/03/04}{Added macro} 
+%   We add writing the information to the hook:
+%    \begin{macrocode}
+\def\@maketitle@hook{\aom@write@paper@info\global\let\@maketitle@hook\@empty}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+% \begin{macro}{\@settitle}
+%   We do not uppercase title.  Also, we use this occasion to set PDF
+%   information:
+%    \begin{macrocode}
+\def\@settitle{\begin{center}%
+  \baselineskip20\p@\relax
+    \bfseries\LARGE
+  \@title
+  \ifpdf
+    \hypersetup{pdftitle=\@title}%
+  \fi
+  \end{center}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@setauthors}
+% \changes{v0.6}{2010/11/04}{'By' and 'and' are in Roman font now} 
+% \changes{v1.10}{2011/06/21}{Internationalization}
+%   Now we typeset authors according to our specs.  Again, we use this
+%   occasion to set some PDF information:
+%    \begin{macrocode}
+\def\@setauthors{%
+  \ifx\authors\@empty\relax\else
+    \begingroup
+    \def\thanks{\protect\thanks@warning}%
+    \trivlist
+    \centering\footnotesize \@topsep30\p@\relax
+    \advance\@topsep by -\baselineskip
+    \item\relax
+    \def\@@and{{\upshape \@aom@and}}
+    \author@andify\authors
+    \ifpdf
+      \hypersetup{pdfauthor=\authors}%
+    \fi
+    \def\\{\protect\linebreak}%
+    \small \@aom@by{} \scshape\authors%
+    \ifx\@empty\contribs
+    \else
+      ,\penalty-3 \space \@setcontribs
+      \@closetoccontribs
+    \fi
+    \endtrivlist
+    \endgroup
+    \fi}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@setcontribs}
+%   Contributors are set up in the same way as authors:
+%    \begin{macrocode}
+\def\@setcontribs{%
+  \@xcontribs
+  {\scshape \xcontribs}%
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@adminfootnotes}
+% \changes{v1.11}{2012/07/23}{Added copyright statement} 
+% \changes{v1.20}{2017/05/09}{Make primary and secondary subjects separated} 
+%   We do not typeset keywords, so we change the definition:
+%    \begin{macrocode}
+\def\@adminfootnotes{%
+  \let\@makefnmark\relax  \let\@thefnmark\relax
+  \ifx\@empty\@date\else \@footnotetext{\@setdate}\fi
+  \ifx\@empty\@subjclass\else \@footnotetext{\@setsubjclass}\fi
+  \ifx\@empty\@keywords\else\@setkeywords\fi
+  \ifx\@empty\@primarysubjects
+     \ifx\@empty\@secondarysubjects
+     \else\@setsubjects\fi
+  \else\@setsubjects\fi
+  \ifx\@empty\thankses\else \@footnotetext{%
+    \def\par{\let\par\@par}\@setthanks}%
+  \fi
+  \ifx\@empty\@copyrightnote\else \@footnotetext{%
+    \def\par{\let\par\@par}\@copyrightnote\@addpunct.}%
+  \fi
+}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+%
+% \begin{macro}{\@setkeywords}
+% \changes{v1.18}{2017/02/11}{Now we print keywords} 
+%   Typesetting keywords
+%    \begin{macrocode}
+\def\@setkeywords{%
+    \ifpdf
+      \hypersetup{pdfkeywords=\@keywords}%
+    \fi
+    \if@aom@oldkeywords\else
+    \@footnotetext{Keywords: \@keywords}%
+    \fi
+}  
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@setsubjects}
+% \changes{v1.18}{2017/02/11}{Now we print subjects} 
+% \changes{v1.20}{2017/05/09}{Make primary and secondary subjects separated} 
+%   Setting subjects
+%    \begin{macrocode}
+\def\@setsubjects{%
+  \let\@subjects\@empty
+   \ifx\@primarysubjects\@empty\else
+     \edef\@subjects{Primary: \@primarysubjects}%
+    \fi
+   \ifx\@secondarysubjects\@empty\else
+     \ifx\@primarysubjects\@empty
+       \edef\@subjects{Secondary: \@secondarysubjects}%
+     \else
+       \edef\@subjects{\@subjects; Secondary: \@secondarysubjects}%
+     \fi
+    \fi
+    \ifpdf
+      \hypersetup{pdfsubject=\@subjects}%
+    \fi
+    \if@aom@oldkeywords\else
+    \@footnotetext{AMS Classification: \@subjects.}%
+    \fi
+}  
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@and}
+% \changes{v0.9}{2010/12/04}{Redefined macro} 
+% \changes{v1.10}{2011/06/21}{Added internationalization} 
+%   We want ``and'' in the footers to be lowercase.  Since there is
+%   some uppercase involved, we protect it:
+%    \begin{macrocode}
+\def\@@and{\MakeLowercase{\@aom@and}}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+%\subsection{Typesetting End Matter}
+%\label{sec:endmatter}
+%
+% End matter is typeset at the end of the paper.  
+%
+% \begin{macro}{\enddoc@text}
+% \changes{v0.4}{2010/09/28}{Deleted many dates.} 
+%   This is the main macro for typesetting endmatter.
+%    \begin{macrocode}
+\def\enddoc@text{%
+  \ifx\@empty\@translators \else\@settranslators\fi
+  \ifx\@empty\@received \else\@setreceived\fi
+  \ifx\@empty\@revised \else\@setrevised\fi
+  \ifx\@empty\addresses \else\@setaddresses\fi}
+%    \end{macrocode}
+% \end{macro}
+% 
+% \begin{macro}{\@setreceived}
+% \begin{macro}{\@setrevised}
+% \begin{macro}{\@setaccepted}
+% \begin{macro}{\@setpublished}
+% \begin{macro}{\@setpublishedonline}
+% \changes{v0.5}{2010/10/24}{Decreased font} 
+% \changes{v0.9}{2010/12/04}{Increased font} 
+%   A bunch of macros for setting centered dates
+%    \begin{macrocode}
+\def\@setreceived{{\centering(Received: \@received)\par}}
+\def\@setrevised{{\centering(Revised: \@revised)\par}}
+\def\@setaccepted{{\centering(Accepted: \@accepted)\par}}
+\def\@setpublished{{\centering(Published: \@published)\par}}
+\def\@setpublishedonline{{\centering(Published online: \@publishedonline)\par}}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\emailaddrname}
+% \changes{v0.5}{2010/10/24}{Changed macro} 
+% We do not want the word ``address'' here:
+%    \begin{macrocode}
+\def\emailaddrname{{\itshape E-mail}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@setaddresses}
+% \changes{v0.5}{2010/10/24}{Deleted the word URL} 
+% \changes{v0.5}{2010/10/24}{E-mail is now in Roman font} 
+% \changes{v0.9}{2010/12/04}{Deleted spurious space in urladdress} 
+% \changes{v1.2}{2011/01/05}{Changed font for current address} 
+% \changes{v1.11}{2012/07/23}{Changed email handling} 
+% \changes{v1.18}{2017/02/15}{Added orcid} 
+%   The difference between our definition and the one in
+%   \progname{amsart} is that we want the e-mail and URL to be clickable
+%    \begin{macrocode}
+\def\@setaddresses{\par
+  \nobreak \begingroup
+\footnotesize
+  \def\author##1{\nobreak\addvspace\bigskipamount}%
+  \def\\{\unskip, \ignorespaces}%
+  \interlinepenalty\@M
+  \def\address##1##2{\begingroup
+    \par\addvspace\bigskipamount\indent
+    \@ifnotempty{##1}{(\ignorespaces##1\unskip) }%
+    {\scshape\ignorespaces##2}\par\endgroup}%
+  \def\curraddr##1##2{\begingroup
+    \@ifnotempty{##2}{\nobreak\indent\curraddrname
+      \@ifnotempty{##1}{, \ignorespaces\scshape##1\unskip}\hskip0.2em:\space
+      \scshape##2\par}\endgroup}%
+  \def\email##1##2{\begingroup
+    \@ifnotempty{##2}{\nobreak\indent\emailaddrname
+      \@ifnotempty{##1}{, \ignorespaces##1\unskip}\hskip0.2em:\space
+      \href{mailto:##2}{\nolinkurl{##2}}\par}\endgroup}%
+  \def\urladdr##1##2{\begingroup
+    \@ifnotempty{##2}{\nobreak\indent
+      \@ifnotempty{##1}{, \ignorespaces##1\unskip}%
+      \url{##2}\par}\endgroup}%
+  \def\orcid##1##2{\begingroup
+    \@ifnotempty{##2}{\nobreak\indent
+      \@ifnotempty{##1}{, \ignorespaces##1\unskip}%
+      ORCID: ##2\par}\endgroup}%
+  \addresses
+  \endgroup
+}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+%
+%\subsection{Sectioning}
+%\label{sec:sectioning}
+%
+% \begin{macro}{\contentsnamefont}
+%   This is the font for the word ``Contents'':
+%    \begin{macrocode}
+\renewcommand\contentsnamefont{\bfseries}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\section}
+%   We want our sections to be centered and bold:
+%    \begin{macrocode}
+\def\section{\@startsection{section}{1}%
+  \z@{.7\linespacing\@plus\linespacing}{.5\linespacing}%
+  {\normalfont\bfseries\centering}}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\subsection}
+% \changes{v0.5}{2010/10/24}{Redefined macro} 
+% \changes{v1.2}{2011/01/05}{Decreased vertical spacing} 
+% \changes{v1.4}{2011/01/21}{Deleted stretch in vertical spacing} 
+%   We want our subsections to be indented and italic:
+%    \begin{macrocode}
+\def\subsection{\@startsection{subsection}{2}%
+  {\parindent}{.5\linespacing}{-.5em}%
+  {\normalfont\itshape}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\oldsubsections}
+% \changes{v1.2}{2011/01/05}{Introduced macro} 
+%   This macro restores the values for |\subsection| spacing prior to
+%   v1.1.
+%    \begin{macrocode}
+\def\oldsubsections{%
+\gdef\subsection{\@startsection{subsection}{2}%
+  {\parindent}{.5\linespacing\@plus.7\linespacing}{-.5em}%
+  {\normalfont\itshape}}}
+%    \end{macrocode}   
+% \end{macro}
+%
+% \begin{macro}{\subsubsection}
+% \changes{v1.4}{2011/01/21}{Introduced the macro} 
+%   Subsubsections are formatted exactly like subsections:
+%    \begin{macrocode}
+\def\subsubsection{\@startsection{subsubsection}{3}%
+  {\parindent}{.5\linespacing}{-.5em}%
+  {\normalfont\itshape}}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\Hy@AlphNoErr}
+% \changes{v1.13}{2012/10/26}{Added macro for older installations} 
+%   The newer (circa 2012) hyperref defines this command.  However,
+%   older versions do not.  Here we provide it:
+%    \begin{macrocode}
+\providecommand\Hy@AlphNoErr[1]{%
+  \ifnum\value{#1}>26 %
+    Alph\number\value{#1}%
+  \else
+    \ifnum\value{#1}<1 %
+      Alph\number\value{#1}%
+    \else
+      \Alph{#1}%
+    \fi
+  \fi
+}%
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+% \begin{macro}{\appendix}
+% \changes{v1.6}{2011/03/06}{Redefined the macro} 
+% \changes{v1.12}{2012/10/25}{Added hyperref definition} 
+%   We redefine appendix to ensure the letter in section number is
+%   always upright:
+%    \begin{macrocode}
+\def\appendix{\par\c@section\z@ \c@subsection\z@
+  \gdef\theHsection{\Hy@AlphNoErr{section}}%
+   \let\sectionname\appendixname
+   \def\thesection{{\upshape\@Alph\c@section}}}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+%\subsection{Figures and Tables}
+%\label{sec:figs}
+%
+% \begin{macro}{\@captionheadfont}
+%   This is the font for the words ``Figure'' or ``Table'' in
+%   captions.  Unlike \progname{amsmath} with is small caps, we want
+%   just plain Roman font:
+%    \begin{macrocode}
+\def\@captionheadfont{\normalfont}
+%    \end{macrocode}   
+% \end{macro}
+%
+%
+%
+%
+%\subsection{Theorems}
+%\label{sec:theorems}
+%
+% Here we redefine three main style of \progname{amsart}.  Here are
+% the arguments of |\newtheoremstyle| from~\cite{Downes04:amsart}:
+%\begin{verbatim}
+%                   #1
+% \newtheoremstyle{NAME}%
+%     #2          #3          #4
+%   {ABOVESPACE}{BELOWSPACE}{BODYFONT}%
+%     #5      #6        #7         #8
+%   {INDENT}{HEADFONT}{HEADPUNCT}{HEADSPACE}%
+%     #9
+%   {CUSTOM-HEAD-SPEC}
+%\end{verbatim}
+%
+%
+% \changes{v0.4}{2010/09/28}{Changed plain theorem style} 
+% In the |plain| style the name (``theorem'') is in small caps, the
+% number is in normal font, the optional note  is also
+% in normal font, and the text is italics.
+%    \begin{macrocode}
+\newtheoremstyle{plain}{0.5\linespacing}{0.5\linespacing}{\sishape}%
+   {\parindent}{\scshape}{.}{0.5em}%
+   {\thmname{#1}\thmnumber{ #2}\thmnote{\normalfont{} (#3)}}
+%    \end{macrocode}
+%
+% \changes{v0.4}{2010/09/28}{Changed definition theorem style} 
+% In the |definition| style the name is italics, and the body font is
+% upright: 
+%    \begin{macrocode}
+\newtheoremstyle{definition}{0.5\linespacing}{0.5\linespacing}%
+   {\upshape}{\parindent}%
+   {\sishape}{.}{0.5em}%
+   {\thmname{#1}\thmnumber{ #2}\thmnote{\normalfont{} (#3)}}
+%    \end{macrocode}
+%
+% \changes{v0.4}{2010/09/28}{Deleted remark theorem style} 
+% \changes{v0.5}{2010/10/24}{Made remark theorem style identical to
+% definition theorem style} 
+% In our class there is no difference between |remark| and
+% |definition| theorem styles: 
+%    \begin{macrocode}
+\newtheoremstyle{remark}{0.5\linespacing}{0.5\linespacing}%
+   {\upshape}{\parindent}%
+   {\sishape}{.}{0.5em}%
+   {\thmname{#1}\thmnumber{ #2}\thmnote{\normalfont{} (#3)}}
+%    \end{macrocode}
+%
+% \begin{macro}{\newtheorem}
+% \changes{v0.3}{2010/09/26}{Redefined macro} 
+% For compatibility reasons we need to accept |\newtheorem| with
+% optional first argument---and silently drop it.  The problem is,
+% there is |\newtheorem*|, so we need to check which one we deal
+% with\dots{}  The command |\@xnthm| here is from \progname{amsthm};
+% it does the real work with the real parameters.
+%    \begin{macrocode}
+\renewcommand{\newtheorem}{\@ifstar{\@aom@newthm@star}{\@aom@newthm}}
+\def\@aom@newthm@star{\@ifnextchar[{\@aom@newthm@star@}{\@aom@newthm@star@[]}}
+\def\@aom@newthm{\@ifnextchar[{\@aom@newthm@}{\@aom@newthm@[]}}
+\def\@aom@newthm@star@[#1]{\@xnthm *}
+\def\@aom@newthm@[#1]{\@xnthm \relax}
+%    \end{macrocode}
+%   
+% \end{macro}
+% 
+% \begin{macro}{proof}
+% \changes{v0.5}{2010/10/24}{Redefined macro} 
+%   We want our proofs to be indented:
+%    \begin{macrocode}
+\renewenvironment{proof}[1][\proofname]{\par
+  \pushQED{\qed}%
+  \normalfont \topsep6\p@\@plus6\p@\relax
+  \trivlist
+  \item[\hskip\labelsep\hskip\parindent
+        \itshape
+    #1\@addpunct{.}]\ignorespaces
+}{%
+  \popQED\endtrivlist\@endpefalse
+}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+%\subsection{Bibliography Macros}
+%\label{sec:bibl}
+%
+% \begin{macro}{\repeatedauthors}
+% \changes{v1.11}{2012/08/16}{Now this command is obsolete} 
+%   When the authors are repeated, we used change them to |\bysame|;
+%   we no more do this:
+%    \begin{macrocode}
+\def\repeatedauthors#1{\ClassWarning{aomart}{The command is obsolte}#1}
+%    \end{macrocode}   
+% \end{macro}
+%
+% \begin{macro}{\bysame}
+% \changes{v1.11}{2012/08/16}{Made the macro obsolete}
+%   We no longer use \cmd{\bysame}
+%    \begin{macrocode}
+\let\bysame@@orig=\bysame
+\def\bysame{\ClassWarning{aomart}{We no longer omit
+    repeated authors}\bysame@@orig}
+%    \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\doi}
+% \changes{v1.2}{2011/01/05}{Now we properly treat numbers with underscores} 
+% \changes{v1.9}{2011/06/13}{Changed doi look} 
+% \changes{v1.10}{2011/06/21}{Introduced the logic for old doi
+% formatting} 
+% \changes{v1.15}{2016/11/18}{Doi according to the new Crossref
+% recommendations}  
+%   Typesetting doi\dots
+%    \begin{macrocode}
+\def\doi#1{%
+  \if@aom@doiMMXVI
+     \url{http://dx.doi.org/#1}%
+  \else
+     \if@aom@olddoi
+         \href{http://dx.doi.org/#1}{doi: \path{#1}}%
+      \else
+          \url{https://doi.org/#1}%
+      \fi
+  \fi}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mr}
+% \changes{v0.3}{2010/09/27}{Added macro} 
+% \changes{v1.2}{2011/01/05}{Now we properly treat numbers with underscores} 
+% \begin{macro}{\zbl}
+% \changes{v0.3}{2010/09/27}{Added macro} 
+% \changes{v0.6}{2010/10/03}{Changed capitalization} 
+% \changes{v1.2}{2011/01/05}{Now we properly treat numbers with underscores} 
+% \begin{macro}{\arxiv}
+% \changes{v0.3}{2010/09/27}{Added macro} 
+% \changes{v1.2}{2011/01/05}{Now we properly treat numbers with
+% underscores} 
+% \changes{v1.5}{2011/02/26}{Typo corrected} 
+% \begin{macro}{\jfm}
+% \changes{v0.10}{2010/12/18}{Added macro} 
+% \changes{v1.2}{2011/01/05}{Now we properly treat numbers with underscores} 
+%   Typesetting urls
+%    \begin{macrocode}
+\def\mr#1{\href{http://www.ams.org/mathscinet-getitem?mr=#1}{MR~\path{#1}}}
+\def\zbl#1{\href{http://www.zentralblatt-math.org/zmath/en/search/?q=an:#1}{Zbl~\path{#1}}}
+\def\arxiv#1{\href{http://www.arxiv.org/abs/#1}{arXiv~\path{#1}}}
+\def\jfm#1{\href{http://www.emis.de/cgi-bin/JFM-item?#1}{JFM~\path{#1}}}
+%    \end{macrocode}
+%   
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\bibliofont}
+% \changes{v0.6}{2010/10/03}{Changed default} 
+%   We make this |\small| rather than |\Small| in \progname{amsart}
+%    \begin{macrocode}
+\renewcommand{\bibliofont}{\small}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+%\subsection{Additional Macros}
+%\label{sec:additional}
+%
+% \begin{macro}{\EditorialComment}
+% \changes{v0.3}{2010/09/28}{Added macro} 
+%   This macro is noop in normal mode, but is a tiny marginpar in the
+%   manusript mode
+%    \begin{macrocode}
+\def\EditorialComment#1{\if@aom@manuscript@mode\bgroup
+  \marginparwidth=75pt\marginpar{\scriptsize\raggedright#1}\egroup\fi}
+%    \end{macrocode}   
+% \end{macro}
+%
+%
+% \begin{macro}{\@fullref}
+% \changes{v0.5}{2010/10/24}{Added macro} 
+%   This macro creates a wide link for the reference.  It has four
+%   parameters: the word (theorem, equation,\dots), the ``pre''
+%   punctuation, the reference and the ``post'' punctuation.
+%    \begin{macrocode}
+\def\@fullref#1#2#3#4{\hyperref[#3]{#1~#2\ref*{#3}#4}}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\fullref}
+% \changes{v0.5}{2010/10/24}{Added macro} 
+%   A reference without parentheses:
+%    \begin{macrocode}
+\newcommand{\fullref}[2]{\@fullref{#1}{}{#2}{}}
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\pfullref}
+% \changes{v0.5}{2010/10/24}{Added macro} 
+%   A reference with parentheses:
+%    \begin{macrocode}
+\newcommand{\pfullref}[2]{\@fullref{#1}{(}{#2}{)}}
+%    \end{macrocode}   
+% \end{macro}
+% \begin{macro}{\bfullref}
+% \changes{v0.5}{2010/10/24}{Added macro} 
+%   A reference with brackets:
+%    \begin{macrocode}
+\newcommand{\bfullref}[2]{\@fullref{#1}{[}{#2}{]}}
+%    \end{macrocode}   
+% \end{macro}
+% \begin{macro}{\eqfullref}
+% \changes{v0.5}{2010/10/24}{Added macro} 
+%   Here we do not use the standard common |\@fullref| because we want
+%   |\eqref| to work\dots
+%    \begin{macrocode}
+\newcommand{\eqfullref}[2]{\hyperref[#2]{#1~\textup{\tagform@{\ref*{#2}}}}}
+%    \end{macrocode}   
+% \end{macro}
+%
+% \begin{macro}{\eqnarray}
+% \changes{v0.9}{2010/12/04}{Redefined standard macro} 
+%   While we do \emph{not} recommend the use of |eqnarray|, we still
+%   would like to correct the ugly spacing around it\dots
+%    \begin{macrocode}
+\def\eqnarray{%
+   \stepcounter{equation}%
+   \def\@currentlabel{\p@equation\theequation}%
+   \global\@eqnswtrue
+   \m@th
+   \global\@eqcnt\z@
+   \tabskip\@centering
+   \let\\\@eqncr
+   $$\arraycolsep1\p@
+   \everycr{}\halign to\displaywidth\bgroup
+       \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
+      \cr
+}
+%    \end{macrocode}
+%   
+% \end{macro}
+%
+%
+%\subsection{End of Class}
+%\label{end}
+%
+%
+%    \begin{macrocode}
+%</class>
+%    \end{macrocode}
+%
+%\Finale
+%\clearpage
+%
+%\PrintChanges
+%\clearpage
+%\PrintIndex
+%
+\endinput
-- 
cgit v1.2.3

