texlive[49394] Master/texmf-dist: memoir (12dec18)

commits+karl at tug.org commits+karl at tug.org
Wed Dec 12 22:24:10 CET 2018


Revision: 49394
          http://tug.org/svn/texlive?view=revision&revision=49394
Author:   karl
Date:     2018-12-12 22:24:10 +0100 (Wed, 12 Dec 2018)
Log Message:
-----------
memoir (12dec18)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/memoir/README
    trunk/Master/texmf-dist/doc/latex/memoir/memman.pdf
    trunk/Master/texmf-dist/doc/latex/memoir/memman.tex
    trunk/Master/texmf-dist/doc/latex/memoir/memsty.sty
    trunk/Master/texmf-dist/source/latex/memoir/memoir.dtx
    trunk/Master/texmf-dist/tex/latex/memoir/memoir.cls

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/memoir/setpage-example.pdf

Modified: trunk/Master/texmf-dist/doc/latex/memoir/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/memoir/README	2018-12-12 01:23:05 UTC (rev 49393)
+++ trunk/Master/texmf-dist/doc/latex/memoir/README	2018-12-12 21:24:10 UTC (rev 49394)
@@ -13,7 +13,7 @@
     PLEASE DON'T WRITE PETER DIRECTLY AS HE IS AWAY MORE OFTEN THAN
     NOT.
 
-Lars Madsen <daleif at math.au.dk> has taking over the support for memoir.
+Lars Madsen <daleif at math.au.dk> is maintaining memoir.
 
 
    NOTE: If you are using the hyperref package dated earlier than 2006/11/15, 
@@ -36,6 +36,48 @@
     Bibliography, indexes                               ~  50 pages
 
 
+Changed (2018/12/12)
+
+o memoir v3.7h
+
+-- The following packages are no longer embedded into the class
+   sources: array, delarray, dcolumn and tabularx.
+
+   These are all part of the _tools_ section of every LaTeX
+   installation, thus there is no reason to embed it anymore (let
+   alone keep track of when they are updated). Instead we require them
+   from the LaTeX installation.
+
+   Note that the class still makes its own defaults for some of the
+   default settings for these packages.
+
+   Historical note: When the class was first created updating LaTeX
+   was not an easy task, often done by hand. Also there was no manual
+   requirements, or if there were a manual it might not be easy to
+   find. So it made sense to have it all in one place and their
+   manuals added to the class manual. This usage information in the
+   manual will stay, but might no longer be 100% up to date, so users
+   are always referred to the package manuals.
+
+   We may remove more embedded packages in the future and replace them
+   with just require the distribution provided ones.
+
+-- remembered to note \pagerefname when dealing with page notes.
+
+-- fixed bug in inline toc entries in the manual when there are subitem
+   that are not typeset and hyperref is in use (\endlinechar=-1 around
+   the toc), also noted in the manual that this problem may occur and
+   how to deal with it.
+
+   One might argue that \endlinechar=-1 should be the default thenever
+   the ToC are being typeset.
+
+-- Added \SingleSpacing* which does *not* add a \vskip at the
+   end. Also adjusted \SingleSpacing such that it does not emit a
+   \vskip when used in the preamble. This fixes
+   <https://tex.stackexchange.com/q/298904/3929> 
+
+
 Changed (2018/04/04)
 
 o memoir v3.7g

Modified: trunk/Master/texmf-dist/doc/latex/memoir/memman.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/memoir/memman.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/memoir/memman.tex	2018-12-12 01:23:05 UTC (rev 49393)
+++ trunk/Master/texmf-dist/doc/latex/memoir/memman.tex	2018-12-12 21:24:10 UTC (rev 49394)
@@ -7,9 +7,8 @@
 %   This work has the LPPL maintenance status "maintained".
 %   Maintainer: Lars Madsen (daleif at math dot au dot dk)
 %
-%\listfiles
+\listfiles
 \documentclass[10pt,letterpaper,extrafontsizes]{memoir}
-\listfiles
 \usepackage{comment}
 
 
@@ -83,9 +82,9 @@
 
 % \svnidlong
 % {}
-% {$LastChangedDate: 2015-03-05 18:49:59 +0100 (Thu, 05 Mar 2015) $}
-% {$LastChangedRevision: 516 $}
-% {$LastChangedBy: daleif $}
+% {$LastChangedDate: 2018-12-12 12:53:37 +0100 (Wed, 12 Dec 2018) $}
+% {$LastChangedRevision: 622 $}
+% {$LastChangedBy: daleif at math.au.dk $}
 
 
 
@@ -122,15 +121,41 @@
 
 \usepackage[draft]{fixme}
 \fxsetup{
-  layout=marginnote
+  multiuser,
+  marginface=\normalfont\tiny,
+  innerlayout=noinline,
+  layout=marginnote,
 }
- 
+\usepackage{tikz,ragged2e}
+\makeatletter
+% extra feature, vadj=length kan flytte på fxnotes hvis de overlapper
+\@fxdefinekey{layout}{vadj}{\def\marginnotevadjust{#1}}
 
-\begin{document}
+% endnu mere ekstra feature, kræver tikz og calc tikz lib
 
+\renewcommand*\FXLayoutMarginNote[3]{%
+  \tikz[overlay,remember picture]\coordinate (A) at (0,0);%
+  \marginnote[%
+    \RaggedLeft%
+    \rlap{\tikz[overlay,remember picture]\coordinate(C) at (0,0);}%
+    \@fxuseface{margin}%
+    \@fxtextstd{#1}{#2}{#3}%
+    {\tikz[overlay,remember picture,ultra thin,cyan]\draw(A) -| ++(0,-2pt) -|(C);}%
+  ]{%
+    \RaggedRight%
+    \tikz[overlay,remember picture]\coordinate(B) at (0,0);%
+    \@fxuseface{margin}%
+    \@fxtextstd{#1}{#2}{#3}%
+    \tikz[overlay,remember picture,ultra thin,cyan]\draw(A) -| ++(0,-2pt) -|(B);%
+  }%
+}
+\makeatother
 
 
 
+\begin{document}
+
+
 %#% extstart input intro.tex
 
 
@@ -212,8 +237,15 @@
 \setlength{\parindent}{0pt}
 \setlength{\parskip}{\baselineskip}
 %%\ttfamily
-\textcopyright{} 2001 --- 2010 Peter R. Wilson \\
-\textcopyright{} 2011 --- \phantom{2014} Lars Madsen \\
+%\textcopyright{} 2001 --- 2010 Peter R. Wilson \\
+%\textcopyright{} 2011 --- \phantom{2099} Lars Madsen \\
+
+\begin{tabular}{@{} l l}
+  \textcopyright{} 2001\:---\:2010 &Peter R. Wilson \\
+ \textcopyright{} 2011\:---\:& Lars Madsen 
+\end{tabular}
+
+
 All rights reserved
 
 The Herries Press, Normandy Park, WA.
@@ -310,7 +342,29 @@
 \clearpage
 \setupparasubsecs
 \setupmaintoc
+
+\begingroup
+
+% important point here: We need \endlineshar=-1 here for the inline
+% list of subsections. Why? Beacause we have subsection subsubsection
+% subsection, and under hyperref running the l at subsubsection for
+% subsubsection, which typesets nothing, ruins our \ignorespaces in
+% our redefinition of \l at subsection (it cannot see and ignore the space after the
+% \contentsline line for subsubsection). Easiest solution: use
+% change \endlinechar
+%
+% Special thanks to David Carlisle in the tex.stackexchange.com chat
+% for suggesting it
+
+
+\endlinechar=-1
+
+
 \tableofcontents
+
+\endgroup
+
+
 \setlength{\unitlength}{1pt}
 \clearpage
 \listoffigures
@@ -4785,9 +4839,9 @@
 
 \svnidlong
 {$Ignore: $}
-{$LastChangedDate: 2014-03-31 11:34:44 +0200 (Mon, 31 Mar 2014) $}
-{$LastChangedRevision: 480 $}
-{$LastChangedBy: daleif $}
+{$LastChangedDate: 2018-09-19 15:47:14 +0200 (Wed, 19 Sep 2018) $}
+{$LastChangedRevision: 621 $}
+{$LastChangedBy: daleif at math.au.dk $}
 
 
 \chapter{Text and fonts}
@@ -5260,7 +5314,7 @@
 for a reasonable effect, as in example~\ref{eg16}.
 \begin{egsource}{eg16}
 \begin{center}
-\textsc{Des Dames du Temps Jardis}
+\textsc{Des Dames du Temps Jadis}
 \end{center}%
 \settowidth{\versewidth}{Or yet in a year where they are}
 \begin{verse}[\versewidth] \begin{itshape}
@@ -5282,7 +5336,7 @@
 
 \begin{egresult}[Sometimes mixed fonts work]{eg16}
 \begin{center}
-\textsc{Des Dames du Temps Jardis}
+\textsc{Des Dames du Temps Jadis}
 \end{center}%
 \settowidth{\versewidth}{Or yet in a year where they are}
 \begin{verse}[\versewidth] \begin{itshape}
@@ -5660,11 +5714,17 @@
 
 \PWnote{2009/06/24}{Corrected \cs{SetSingleSpace} to \cs{setSingleSpace}}
 \begin{syntax}
-\cmd{\SingleSpacing} \cmd{\setSingleSpace}\marg{factor} \\
+  \cmd{\SingleSpacing}\\
+  \cmd{\SingleSpacing*}\\
+  \cmd{\setSingleSpace}\marg{factor} \\
 \end{syntax}
 \glossary(SingleSpacing)%
   {\cs{SingleSpacing}}%
-  {Declaration restoring normal single spacing (or that set by \cs{setSingleSpace}).}
+  {Declaration restoring normal single spacing (or that set by
+    \cs{setSingleSpace}). Note, this added a skip at the end.}
+\glossary(SingleSpacing*)%
+  {\cs{SingleSpacing*}}%
+  {Same as \cs{SingleSpacing}, but does not add a skip at the end.}
 \glossary(setSingleSpace)%
   {\cs{setSingleSpace}\marg{factor}}%
   {Change the baselineskip by \meta{factor}.}
@@ -5679,6 +5739,20 @@
 least the setting from \cmd{\setSingleSpace} if it has been used. It
 will also reset float and page note spacings to the same value.
 
+\begin{note}
+  \sloppy
+  \cmd{\SingleSpacing} will also issue a
+  \cmd{\vskip}\cmd{\baselineskip} at the end (which is ignored if
+  \cmd{\SingleSpacing} is used in the preamble). This skip makes sure
+  that comming from \cmd{\DoubleSpacing} to \cmd{\SingleSpacing} still
+  looks ok.
+
+  But in certain cases, this skip is unwanted. Therefore as of 2018 we
+  added a \cmd{\SingleSpacing*} that is equal to \cmd{\SingleSpacing}
+  but \emph{does not} add this skip.
+\end{note}
+
+
 \begin{syntax}
 \senv{SingleSpace} ...\eenv{SingleSpace} \\
 \senv{Spacing}\marg{factor} ... \eenv{Spacing} \\
@@ -10114,9 +10188,9 @@
 
 \svnidlong
 {$Ignore: $}
-{$LastChangedDate: 2014-08-22 09:08:19 +0200 (Fri, 22 Aug 2014) $}
-{$LastChangedRevision: 498 $}
-{$LastChangedBy: daleif $}
+{$LastChangedDate: 2018-09-06 15:05:23 +0200 (Thu, 06 Sep 2018) $}
+{$LastChangedRevision: 612 $}
+{$LastChangedBy: daleif at math.au.dk $}
 
 \chapterstyle{demo3}
 
@@ -11073,8 +11147,9 @@
     As index\index{index} entries are usually very short, the 
 Index\index{index} is set in two columns\index{column!double}. 
 Unfortunately \ltx's marking mechanism can be very
-fragile on twocolumn\index{column!double} pages, but the standard 
-\Lpack{fixltx2e} package corrects this.
+fragile on twocolumn\index{column!double} pages.\footnote{This was
+  fixed in the \LaTeX{} kernel, but including the functionality from
+  the \Lpack{fixltx2e} package.}
 
     The index\index{index} itself is called by\index{indexing}
 \begin{lcode}
@@ -12629,9 +12704,9 @@
 
 \svnidlong
 {$Ignore: $}
-{$LastChangedDate: 2015-07-20 13:55:32 +0200 (Mon, 20 Jul 2015) $}
-{$LastChangedRevision: 542 $}
-{$LastChangedBy: daleif $}
+{$LastChangedDate: 2018-09-14 11:13:10 +0200 (Fri, 14 Sep 2018) $}
+{$LastChangedRevision: 620 $}
+{$LastChangedBy: daleif at math.au.dk $}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%
 %%\chapterstyle{section}
@@ -13526,7 +13601,7 @@
 and \texttt{PAGE} 
  is the page number. In the numbered entry the pseudo-code
 \begin{lcode}
-{\cftKpresnum SNUM\cftaftersnum\hfil}
+{\cftKpresnum SNUM\cftKaftersnum\hfil}
 \end{lcode}
  is typeset within a box of width \lnc{\cftKnumwidth}, see the
  \cs{...numberlinebox} macros later on.
@@ -14405,6 +14480,31 @@
 a paragraph to itself). By uncommenting or commenting the noted lines 
 in the code you can change the layout a little. 
 
+
+\begin{caveat}
+  We have an interesting caveat regarding \cmd{\setupparasubsecs} if
+  you are using \Lpack{hyperref} \emph{and} you have subsubsections,
+  that are not shown in the ToC. You may see some inline subsection
+  entries showing up as `\dots\ text~15 ,\dots', that is a strange
+  space appears before the comma.
+
+  This is an artifact  due to the way \Lpack{hyperref} wraps itself
+  around the ToC entries, even the ones that are not typeset, and thus
+  an end of line space survives. We fix it using \cmd{\endlinechar}:
+  \begin{lcode}
+    \begingroup
+    \endlinechar=-1
+    \tableofcontents
+    \endgroup
+  \end{lcode}
+  Note again that it only happen if you have subsubsections with an
+  inline subsection entry list, \emph{and} you are using
+  \Lpack{hyperref}.
+\end{caveat}
+
+
+
+
     Normally, section titles (and below) are set as individual 
 paragraphs. Effectively the first thing that is done is to end any 
 previous paragraph, and also the last thing is to end the current 
@@ -14917,9 +15017,9 @@
 
 \svnidlong
 {$Ignore: $}
-{$LastChangedDate: 2015-02-23 16:56:35 +0100 (Mon, 23 Feb 2015) $}
-{$LastChangedRevision: 507 $}
-{$LastChangedBy: daleif $}
+{$LastChangedDate: 2018-09-06 15:05:23 +0200 (Thu, 06 Sep 2018) $}
+{$LastChangedRevision: 612 $}
+{$LastChangedBy: daleif at math.au.dk $}
 
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -15590,9 +15690,8 @@
 definition order, except that a double column\index{float!double column} float 
 may be output before
 a later single column\index{float!single column} float of the same kind, or 
-\textit{vice-versa}\footnote{This little quirk
-is fixed by the \Lpack{fixltx2e} package, at least for tables and figures.
-The package is part of a normal \ltx\ distribution.}. 
+\textit{vice-versa}\footnote{As of 2015 this has been fixed in the
+  \LaTeX{} kernel.}. 
 A float is never put on an earlier page than its definition but may be 
 put on the same or later page of its definition. If a float cannot be 
 placed, all suceeding floats will be held up, and \ltx\ can store no 
@@ -17770,9 +17869,9 @@
 
 \svnidlong
 {$Ignore: $}
-{$LastChangedDate: 2013-04-24 17:14:15 +0200 (Wed, 24 Apr 2013) $}
-{$LastChangedRevision: 442 $}
-{$LastChangedBy: daleif $}
+{$LastChangedDate: 2018-09-06 15:05:23 +0200 (Thu, 06 Sep 2018) $}
+{$LastChangedRevision: 612 $}
+{$LastChangedBy: daleif at math.au.dk $}
 
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -17800,6 +17899,27 @@
     Much of the material in this chapter strongly reflects the
 documentation of these packages.
 
+\begin{note}
+  As of September 2018: The \Lpack{array}, \Lpack{delarray},
+  \Lpack{tabularx} and \Lpack{dcolumn} packages are no longer embedded
+  into the class, but rather being autoloaded from the \LaTeX\
+  installation.\footnote{As the embedded versions were more or less
+    carbon copies, it makes much more sense to let the \LaTeX-team
+    maintain them, than us having to replace the embedded copy each
+    time they are updated or bug fixed.} As the embededed versions
+  were just carbon copies,\footnote{With edited error messages.} we
+  get the same result but just loading the packages, with less
+  maintenance. Plus these packages are part of the \LaTeX{} core
+  packages and thus is available in all \LaTeX{} installations.
+
+  We have kept the documentation we had written for the manual (and
+  updated it slightly), but refer to \cite{ARRAY}, \cite{DELARRAY}, \cite{TABULARX} and
+  \cite{DCOLUMN} for the 100\% up to date documentation.
+\end{note}
+
+\fancybreak{}
+
+
  Additionally, new kinds of tabular environments are also provided.
 
 
@@ -17855,42 +17975,64 @@
 \centering
  \caption{The array and tabular preamble options.} \label{tab:tabpream}
     \setlength{\extrarowheight}{1pt}
-    \begin{tabular}{cp{9cm}} \toprule
- \texttt{l}             &  Left adjusted column. \\
- \texttt{c}             &  Centered adjusted column. \\
- \texttt{r}             &  Right adjusted column. \\
- \texttt{p}\marg{width} &  Equivalent to \verb?\parbox[t]?\marg{width}. \\
- \texttt{m}\marg{width} &  Defines a column of width \meta{width}.
-                           Every entry will be centered in proportion to
-                           the rest of the line. It is somewhat like
-                           \cmd{\parbox}\marg{width}. \\
- \texttt{b}\marg{width} &  Coincides with \verb?\parbox[b]?\marg{width}. \\
- \texttt{>}\marg{decl}  &  Can be used before an \texttt{l}, \texttt{r},
-                           \texttt{c}, \texttt{p}, \texttt{m} or a
-                           \texttt{b} option. It inserts \meta{decl}
-                           directly in front of the entry of the column.
-                           \\
- \texttt{<}\marg{decl}  &  Can be used after an \texttt{l}, \texttt{r},
-                           \texttt{c}, \verb?p{..}?, \verb?m{..}? or a 
-                           \verb?b{..}?
-                           option.  It inserts \meta{decl} right
-                           after the entry of the column.  \\
- \texttt{|}             &  Inserts a vertical line. The distance between
-                           two columns will be enlarged by the width of
-                           the line. \\
- \texttt{@}\marg{decl}  &  Suppresses inter-column space and inserts
-                           \meta{decl} instead. \\
- \texttt{!}\marg{decl}  &  Can be used anywhere and corresponds with the
-                           \texttt{|} option. The difference is that
-                           \meta{decl} is inserted instead of a
-                           vertical line, so this option doesn't
-                           suppress the normally inserted space between
-                           columns in contrast to \verb?@{...}?.\\
- \texttt{*}\marg{num}\marg{opts} & Equivalent to \meta{num} copies of
-                                   \meta{opts} \\
- \texttt{D}\marg{ssep}\marg{osep}\marg{places} & Column entries aligned
-                           on a `decimal point' \\
-       \bottomrule
+    \begin{tabular}{cp{9cm}} \toprule \texttt{l} & Left adjusted
+      column.
+      \\
+      \texttt{c} & Centered adjusted column.
+      \\
+      \texttt{r} & Right adjusted column.
+      \\
+      \texttt{p}\marg{width} & Equivalent to
+      \verb?\parbox[t]?\marg{width}.
+      \\
+      \texttt{m}\marg{width} & Defines a column of width \meta{width}.
+      Every entry will be centered in proportion to the rest of the
+      line. It is somewhat like \cmd{\parbox}\marg{width}.
+      \\
+      \texttt{b}\marg{width} & Coincides with
+      \verb?\parbox[b]?\marg{width}.
+      \\
+      \texttt{>}\marg{decl} & Can be used before an \texttt{l},
+      \texttt{r}, \texttt{c}, \texttt{p}, \texttt{m} or a \texttt{b}
+      option. It inserts \meta{decl} directly in front of the entry of
+      the column.
+      \\
+      \texttt{<}\marg{decl} & Can be used after an \texttt{l},
+      \texttt{r}, \texttt{c}, \verb?p{..}?, \verb?m{..}? or a
+      \verb?b{..}?  option.  It inserts \meta{decl} right after the
+      entry of the column.
+      \\
+      \texttt{|} & Inserts a vertical line. The distance between two
+      columns will be enlarged by the width of the line.
+      \\
+      \texttt{@}\marg{decl} & Suppresses inter-column space and
+      inserts \meta{decl} instead.
+      \\
+      \texttt{!}\marg{decl} & Can be used anywhere and corresponds
+      with the \texttt{|} option. The difference is that \meta{decl}
+      is inserted instead of a vertical line, so this option doesn't
+      suppress the normally inserted space between columns in contrast
+      to \verb?@{...}?.
+      \\
+      \texttt{*}\marg{num}\marg{opts} & Equivalent to \meta{num}
+      copies of \meta{opts}
+      \\
+      \texttt{w}\marg{align}\marg{width} & \raggedright\arraybackslash
+      \emph{New in \Lpack{array} v2.4h, 2018.} Here \meta{align} is
+      one of \texttt{l}, \texttt{c} or \texttt{r}. The construction
+      corresponds to every cell in the column being formated as
+      \verb|\makebox|\oarg{width}\oarg{align}\marg{cell}. It will
+      silently overprint if the contents are wider than \meta{width}.
+      \\
+
+      \texttt{W}\marg{align}\marg{width} & \emph{New in in \Lpack{array}
+        v2.4h, 2018.} Similar to \texttt{w}, but issues an overfull warning if
+      the contents is too wide.
+      \\
+      \texttt{D}\marg{ssep}\marg{osep}\marg{places} & Column entries aligned
+      on a `decimal point' 
+      \\
+      \bottomrule
     \end{tabular}
 % \end{center}
 \end{adjustwidth}
@@ -17989,8 +18131,19 @@
       to show different spacing effects.
  \end{itemize}
 
+\goodbreak
+ 
  \subsection{D column specifiers} \label{sec:dcolumns}
 
+ \begin{recommended}
+   As an alternative to the \texttt{D} column (through using the
+   \Lpack{dcolumn} package), you can use the \Lpack{siunitx} package
+   which have the added bonus of many more configuration and
+   formatting features. See \cite{SIUNITX} for details.
+ \end{recommended}
+
+
+ 
     In financial tables dealing with pounds
 and pence or dollars and cents, column entries
 should be aligned on the separator between the numbers. The \texttt{D}
@@ -19741,9 +19894,9 @@
 
 \svnidlong
 {$Ignore: $}
-{$LastChangedDate: 2015-05-11 16:20:03 +0200 (Mon, 11 May 2015) $}
-{$LastChangedRevision: 532 $}
-{$LastChangedBy: daleif $}
+{$LastChangedDate: 2018-09-19 15:47:14 +0200 (Wed, 19 Sep 2018) $}
+{$LastChangedRevision: 621 $}
+{$LastChangedBy: daleif at math.au.dk $}
 
 \chapter{Page notes} \label{chap:mnotes}
 
@@ -19875,22 +20028,26 @@
 put just after the bottom line of text. The standard positioning is
 used following the \cmd{\feetabovefloat} declaration, which is the default.
 
-\begin{syntax}
-\cmd{\feetatbottom} \\
-\end{syntax}
-\glossary(feetatbottom)%
-  {\cs{feetatbottom}}%
-  {Place footnotes at the very bottom of the text block whenever we
-    are in a non \cs{flushbottom} context.}
-Then\Added{2015/04/22} we use \cs{raggedbottom} or similar, \LaTeX{}
-will by default attach the footnotes just below the text. In many
-cases it may look better if the footnotes are being build from the
-bottom of the texst block up. Issuing \cs{feetatbottom} does
-this. Please note that \cs{feetatbottom} has no effect whenever
-\cs{flushbottom} is active.
 
 
+\LMnote{2018/09/19}{Removed \cs{feetatbottom} from the manual. It does not
+  actually do anything. The footnotes are always at the bottom}
+% \begin{syntax}
+% \cmd{\feetatbottom} \\
+% \end{syntax}
+% \glossary(feetatbottom)%
+%   {\cs{feetatbottom}}%
+%   {Place footnotes at the very bottom of the text block whenever we
+%     are in a non \cs{flushbottom} context.}
+% Then\Added{2015/04/22} we use \cs{raggedbottom} or similar, \LaTeX{}
+% will by default attach the footnotes just below the text. In many
+% cases it may look better if the footnotes are being build from the
+% bottom of the texst block up. Issuing \cs{feetatbottom} does
+% this. Please note that \cs{feetatbottom} has no effect whenever
+% \cs{flushbottom} is active.
 
+
+
 \subsection{A variety of footnotes}
 
  \begin{syntax}
@@ -21406,7 +21563,8 @@
 \begin{syntax}
 \cmd{\pageinnotes}\marg{auto generated note label key}\\
 \cmd{\printpageinnotes}\marg{auto generated note label key}\\  
-\cmd{\printpageinnoteshyperref}\marg{auto generated note label key}
+\cmd{\printpageinnoteshyperref}\marg{auto generated note label key}\\
+\cmd{\pagerefname}
 \end{syntax}
 \glossary(pageinnotes)%
 {\cs{pageinnotes}\marg{pagenum}}%
@@ -21419,6 +21577,9 @@
 {Prints an endnote's page reference number whenever the
   \protect\Lpack{hyperref} package is used, it will include a
   hyperlink back to the page in question.}%
+\glossary(pagerefname)%
+{\cs{pagerename}}%
+{Holds the name prefix when referring to a page number, defaults to \texttt{page}.}%
 Default definitions
 \begin{lcode}
 \newcommand*{\printpageinnotes}[1]{%
@@ -31717,9 +31878,9 @@
 
 \svnidlong
 {$Ignore: $}
-{$LastChangedDate: 2015-07-08 09:49:37 +0200 (Wed, 08 Jul 2015) $}
-{$LastChangedRevision: 536 $}
-{$LastChangedBy: daleif $}
+{$LastChangedDate: 2018-09-06 15:05:23 +0200 (Thu, 06 Sep 2018) $}
+{$LastChangedRevision: 612 $}
+{$LastChangedBy: daleif at math.au.dk $}
 
 \chapter{Packages and macros}
 
@@ -31750,6 +31911,11 @@
       of floats\index{float} on a twocolumn\index{column!double} page 
       and ensures the correct marking
       on a twocolumn\index{column!double} page.
+
+      Note that as of 2015, the functionality of this package has been
+      merged into the \LaTeX{} kernel. Loading this package does nothing.
+
+      
 \item \Lpack{alltt}~\cite{ALLTT} is a basic package which provides a 
       verbatim-like environment but \verb?\?, \verb?{?, and \verb?}? have their
       usual meanings (i.e., \ltx\ commands are not disabled).
@@ -31971,6 +32137,10 @@
 \emph{style} and it provide several of these styles. This chapter is
 used to showcase these styles.
 
+\begingroup
+% because of hyperref warnings
+
+
 \section{Chapter styles}
 \label{sec:chapter-styles}
 
@@ -32279,7 +32449,9 @@
 
 \index{chapterstyle|)}
 
+\endgroup
 
+
 %#% extend
 %#% extstart include sniplets.tex
 
@@ -38169,10 +38341,10 @@
 \end{comment}
 
 %%% keep
-\bibitem[Car94]{DELARRAY}
+\bibitem[Car14]{DELARRAY}
   David Carlisle.
   \newblock \emph{The delarray package}.
-  \newblock March, 1994.
+  \newblock October, 2014.
   \newblock (Available from CTAN via
              \CTANurl{/macros/latex/required/tools/})
 
@@ -38210,10 +38382,11 @@
 \end{comment}
 
 %%% keep
-\bibitem[Car99]{TABULARX}
+\LMnote{2018/09/06}{Updated year}
+\bibitem[Car16]{TABULARX}
   David Carlisle.
   \newblock \emph{The tabularx package}.
-  \newblock January, 1999.
+  \newblock February, 2016.
   \newblock (Available from CTAN via
              \CTANurl{/macros/latex/required/tools/})
 
@@ -38226,7 +38399,8 @@
              \CTANurl{/macros/latex/required/graphics/})
 
 %%% keep
-\bibitem[Car01]{DCOLUMN}
+\LMnote{2018/09/06}{updated year}             
+\bibitem[Car14]{DCOLUMN}
   David Carlisle.
   \newblock \emph{The dcolumn package}.
   \newblock May, 2001.
@@ -38423,10 +38597,11 @@
 
 
 %%% keep
-\bibitem[Fea03]{BOOKTABS}
+\LMnote{2018/09/06}{Updated year}
+\bibitem[Fea16]{BOOKTABS}
   Simon Fear.
   \newblock \emph{Publication quality tables in LaTeX}.
-  \newblock March, 2003.
+  \newblock April, 2016.
   \newblock (Available from CTAN via
             \CTANurl{/macros/latex/contrib/booktabs})
 
@@ -38720,17 +38895,18 @@
 \end{comment}
 
 %%% keep
-\bibitem[Mit98]{MULTICOL}
+\bibitem[Mit18]{MULTICOL}
   Frank Mittelbach.
   \newblock \emph{An environment for multicolumn output}.
-  \newblock January, 1998.
+  \newblock April, 2018.
   \newblock (Available from CTAN (the \texttt{multicol} package) via 
             \CTANurl{/macros/latex/required/tools/})
 
-%%% keep
-\bibitem[MC98]{ARRAY}
+%%keep
+\LMnote{2018/09/06}{Updated year}            
+\bibitem[MC18]{ARRAY}
   Frank Mittelbach and David Carlisle.
-  \newblock \emph{A new implementation of LaTeX's tabular and array environment}.  \newblock May, 1998.
+  \newblock \emph{A new implementation of LaTeX's tabular and array environment}.  \newblock May, 2018.
   \newblock (Available from CTAN (the \texttt{array} package) via
             \CTANurl{/macros/latex/required/tools/})
 
@@ -38738,7 +38914,9 @@
 \bibitem[MC00]{FIXLTX2E}
   Frank Mittelbach and David Carlisle.
   \newblock \emph{The fixltx2e package}.
-  \newblock September, 2000.
+  \newblock December, 2016.
+  \newblock As of 2015 the functionality of this package has been
+  merged with the \LaTeX{} kernel.
   \newblock (Available from CTAN via 
             \CTANurl{/macros/latex/base/})
 
@@ -39325,6 +39503,16 @@
 \newblock \emph{A Rumour of Humour: A scientist's commonplace book}.
 \newblock To be published.
 
+
+\bibitem[Wri18]{SIUNITX}
+  Joseph Wright.
+  \newblock \emph{Siunitx — A comprehensive (SI) units package}
+  \newblock May, 2018.
+  \newblock (Available from CTAN via \CTANurl{/macros/latex/contrib/siunitx})
+
+
+
+
 \begin{comment}
 \bibitem[Wis03]{WISHART03}
 David Wishart.

Modified: trunk/Master/texmf-dist/doc/latex/memoir/memsty.sty
===================================================================
--- trunk/Master/texmf-dist/doc/latex/memoir/memsty.sty	2018-12-12 01:23:05 UTC (rev 49393)
+++ trunk/Master/texmf-dist/doc/latex/memoir/memsty.sty	2018-12-12 21:24:10 UTC (rev 49394)
@@ -113,26 +113,29 @@
   \renewcommand*{\cftbookformatpnum}[1]{%
     \hbox to\unitlength{{\cftbookpagefont ##1}}}}
 
+
 \newcommand*{\setupparasubsecs}{%
-  \let\oldnumberline\numberline
-  \renewcommand*{\cftsubsectionfont}{\itshape}
-  \renewcommand*{\cftsubsectionpagefont}{\itshape}
-  \renewcommand{\l at subsection}[2]{
-    \ifnum\c at tocdepth > 1\relax
+  \let\oldnumberline\numberline%
+  \renewcommand*{\cftsubsectionfont}{\itshape}%
+  \renewcommand*{\cftsubsectionpagefont}{\itshape}%
+  \renewcommand{\l at subsection}[2]{%
+    \ifnum\c at tocdepth > 1\relax%
       \def\numberline####1{\textit{####1}~}%
-      \leftskip=\cftsubsectionindent
-      \rightskip=\@tocrmarg
+      \leftskip=\cftsubsectionindent%
+      \rightskip=\@tocrmarg%
 %%      \advance\rightskip 0pt plus \hsize % uncomment this for raggedright
 %%      \advance\rightskip 0pt plus 2em    % uncomment this for semi-ragged
-      \parfillskip=\fill
-      \ifhmode ,\ \else\noindent\fi
-      \ignorespaces 
+      \parfillskip=\fill%
+      \ifhmode ,\ \else\noindent\fi%
+      \ignorespaces% 
       {\cftsubsectionfont ##1}~{\cftsubsectionpagefont##2}%
-       \let\numberline\oldnumberline\ignorespaces
+       \let\numberline\oldnumberline\ignorespaces%
     \fi}}
 
+
 \AtEndDocument{\addtocontents{toc}{\par}}%%% OK
 
+
 \newcommand*{\setupmaintoc}{%
   \renewcommand{\contentsname}{Contents}
   \let\changetocdepth\oldchangetocdepth
@@ -524,6 +527,7 @@
 \LMnote{2011/05/25}{I've moved the demochaps to an appendix, so
   \cs{@chapapp} need a little redoing}
 \newenvironment{demochap}[2][\onelineskip]{%
+%  \typeout{Chapter value going in: \thechapter}
   \savechapcnt=\c at chapter
   \saveseccnt=\c at section
   \savesubseccnt=\c at subsection
@@ -539,7 +543,7 @@
       \begingroup
 %%        \hrule
         \let\@chapapp\chaptername% such that appendix does not disturb
-        \renewcommand{\theHchapter}{\thepage.\thechapter}
+%        \renewcommand{\theHchapter}{\thepage.\thechapter.showcase}
         \renewcommand\thechapter{\arabic{chapter}}
         \vspace*{#1}
         \chapterstyle{#2}
@@ -548,6 +552,7 @@
         \renewcommand*{\addcontentsline}[3]{}
         \renewcommand*{\thispagestyle}[1]{}
         \renewcommand*{\markboth}[2]{}
+        \let\refstepcounter\stepcounter
         \chapter{Demonstration of the #2 chapter style}
         \chaptext{#2}
         \vspace{\onelineskip}
@@ -559,9 +564,9 @@
       \global\demochapcnt=0\relax
     \fi
     \c at chapter=\savechapcnt
-    \advance\c at chapter\m at ne
-    \renewcommand{\theHchapter}{\thepage.\thechapter-\the\demochapcnt.\thesheetsequence}
-    \refstepcounter{chapter}%
+%    \advance\c at chapter\m at ne
+%    \renewcommand{\theHchapter}{\thepage.\thechapter-\the\demochapcnt.\thesheetsequence.showcase}
+%    \refstepcounter{chapter}%
 %    \stepcounter{chapter}
     \begin{center}
       \caption{The #2 chapterstyle}\label{dc#2}
@@ -572,6 +577,7 @@
     }{%\gdef\theHchapter{\thechapter}
   \end{figure}
   \counterwithin{figure}{chapter}
+  \global\c at chapter=\savechapcnt
   \global\c at section=\saveseccnt
   \global\c at subsection=\savesubseccnt
   \global\c at footnote=\saveftncnt}

Added: trunk/Master/texmf-dist/doc/latex/memoir/setpage-example.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/memoir/setpage-example.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/memoir/setpage-example.pdf	2018-12-12 01:23:05 UTC (rev 49393)
+++ trunk/Master/texmf-dist/doc/latex/memoir/setpage-example.pdf	2018-12-12 21:24:10 UTC (rev 49394)

Property changes on: trunk/Master/texmf-dist/doc/latex/memoir/setpage-example.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Modified: trunk/Master/texmf-dist/source/latex/memoir/memoir.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/memoir/memoir.dtx	2018-12-12 01:23:05 UTC (rev 49393)
+++ trunk/Master/texmf-dist/source/latex/memoir/memoir.dtx	2018-12-12 21:24:10 UTC (rev 49394)
@@ -20,7 +20,7 @@
 % This work consists of the files listed in the README file.
 % 
 % \fi
-% \CheckSum{31006}
+% \CheckSum{31004}
 %
 % \changes{v0.1}{2001/05/20}{First public alpha release}
 % \changes{v0.2}{2001/06/03}{First beta release}
@@ -115,7 +115,9 @@
 % \changes{v3.7e}{2015/07/08}{Per request from LaTeX Team, etex is not
 % autoloaded on newer kernels}
 % \changes{v3.7f}{2016/05/16}{Maintenance, luatex85 and booktabs update}
-%
+% 
+% \changes{v3.7h}{2018/12/12}{Maintenance, removing some emulated packages}
+% 
 % \def\dtxfile{memoir.dtx}
 %
 % \def\fileversion{v0.1}  \def\filedate{2001/05/20}
@@ -169,7 +171,8 @@
 % \def\fileversion{v3.7d}          \def\filedate{2015/04/23}
 % \def\fileversion{v3.7e}          \def\filedate{2015/07/08}
 % \def\fileversion{v3.7f}          \def\filedate{2016/05/16}
-% \def\fileversion{v3.7g}          \def\filedate{2018/04/04} ^^A remember to fix
+% \def\fileversion{v3.7g}          \def\filedate{2018/04/04}
+% \def\fileversion{v3.7h}          \def\filedate{2018/12/12} ^^A remember to fix
 % \title{The LaTeX \Lpack{memoir} class for configurable book 
 %        typesetting: Source code\thanks{This
 %        file (\texttt{\dtxfile}) has version number \fileversion, last revised
@@ -400,11 +403,11 @@
 %    Announce the name, option files and version for LaTeX2e files:
 %    \begin{macrocode}
 %<class>\ProvidesClass{memoir}%
-%<class>  [2018/04/04 v3.7g configurable book, report, article document class]
+%<class>  [2018/12/12 v3.7h configurable book, report, article document class]
 %    \end{macrocode}
 %  In the manual it is useful to know the current version.
 %    \begin{macrocode}
-%<class>\newcommand\memversion{v3.7g, 2018/04/04}
+%<class>\newcommand\memversion{v3.7h, 2018/12/12}
 %<9pt>\ProvidesFile{mem9.clo}%
 %<9pt>             [2008/01/30 v0.4 memoir class 9pt size option]
 %<10pt>\ProvidesFile{mem10.clo}%
@@ -5986,7 +5989,7 @@
   The material used in the footer is too large^^J%
   (\the\mem at maxfootheight) for the given foot skip
   (\the\footskip), it is recommended to^^J%
-  either increase the foot skip or redesign the fotoer^^J%
+  either increase the foot skip or redesign the footer^^J%
   (in both cases you will find help in the memoir manual).%
 }
 %    \end{macrocode}
@@ -7192,6 +7195,7 @@
 % \end{macro}
 %
 % \begin{macro}{\SingleSpacing}
+% \begin{macro}{\SingleSpacing*}
 % \cs{SingleSpacing} starts single spacing. (In package was \cs{singlespacing}).
 % \changes{v3.6g}{2010/09/19}{Added reset of the float and page note spacings}
 %    \begin{macrocode}
@@ -7199,12 +7203,21 @@
   \setSpacing{\m at m@singlespace}%
   \edef\m at m@footnote at spacing{\baselinestretch}%
   \edef\m at m@float at spacing{\baselinestretch}%
-  \vskip\baselineskip% correction for coming into single spacing
+%    \end{macrocode}
+% \changes{v3.7h}{2018/09/19}{Added the ifstar and \cs{@noocument}}
+% We can have a strange interaction with \Lpack{tikz} if this
+% \cs{vskip} is emitted in the preamble. We use a trick (via David
+% Carlisle) to check whether we are in the preamble, and only emit the
+% vskip if we are not. \cs{@ifstar} added to let the user disable the
+% vskip if needed.
+%    \begin{macrocode}
+  \@ifstar{}{\ifx\@nodocument\relax\vskip\baselineskip\fi}% correction for coming into single spacing
 }
 \SingleSpacing
 
 %    \end{macrocode}
 % \end{macro}
+% \end{macro}
 %
 %
 % \begin{macro}{\@OnehalfSpacing}
@@ -14815,2072 +14828,2087 @@
 % \end{macro}
 %
 %
-% \section{Array and tabular}
+% \section{Array and tabularx}
 %
 % \subsection{Array}%
 %
-% The description and code are essentially copied from the \Lpack{array}
-% package~\cite{ARRAY}.
-%
+% Here ealier versions of the class had an embedded copy of the
+% \Lpack{array} package. Now replaced by requiring the packge instead.
 %    \begin{macrocode}
-
-%%%%%%%%%% Array package code %%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%% With acknowledgements to %%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%% Frank Mittelbach & David Carlisle %%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%% Copy corresponds to array.sty 2016/10/06 v2.4d %%%%%%%%% 
+\RequirePackage{array}[2018/04/30]
 %    \end{macrocode}
-% \changes{v3.7g}{2018/03/05}{Updated the embedded copy of the
-% \Lpack{array} package to version 2.4d, 2016/10/06}
-% \begin{dlf}
-%  dlf: The \Lpack{array} package has redundant code (caused by a
-%  quick mashing of and earlier \Lpack{array} version and the
-%  \Lpack{newaray} package). In thus update (2018/03/05) this
-%  redundant code is \emph{not} removed as it makes it very hard to
-%  see where there are class changes to the \Lpack{array} code, and
-%  when stuff is simply removed. We'll leave it up to the LaTeXteam to
-%  clean up the \Lpack{array} code at some point.
+% The embeded copy is outcommented for now and will be removed in a
+% later version.
 %
-% The following is a carbon copy of the DTX code from
-% \verb|array.dtx|, package specific \cs{changes} lines have been
-% removed, and we have made any error/warning messages class specific,
-% instead of package specific.
-% \end{dlf}
+% \changes{v3.7h}{2018/09/06}{Outcommented the embedded copy of
+% \Lpack{array} and replaced it with requiring the \Lpack{array} package
+% instead.}
 %
-
-% \subsubsection{The construction of the preamble}
-%
-% It is obvious that those environments will consist mainly of an
-% \verb=\halign=, because \TeX\ typesets tables using this primitive.
-% That is why we will now take a look at the algorithm which determines
-% a preamble for a \verb=\halign= starting with a given user preamble
-% using the options mentioned above.
-%
-% The most interesting macros of this implementation are without doubt
-% those which are responsible for the construction of the preamble for
-% the \verb=\halign=. The underlying algorithm was developed by
-% \textsc{Lamport} (resp.\ \textsc{Knuth}, see texhax V87\#??), and it
-% has been extended and improved.
-%
-% The user preamble will be read \textsf{token} by \textsf{token}.  A
-% \textsf{token} is a single character like \texttt{c} or a block
-% enclosed in \verb={...}=. For example the preamble of
-% \verb=\begin{tabular}=\linebreak[0]\verb={lc||c@{\hspace{1cm}}}= consists of
-% the \textsf{token} \texttt{l}, \texttt{c}, \texttt{|}, \texttt{|},
-% \texttt{@} and \verb=\hspace{1cm}=.
-%
-% The currently used \textsf{token} and the one, used before, are needed
-% to decide on how the construction of the preamble has to be
-% continued.
-% In the example mentioned above the \texttt{l} causes the preamble
-% to begin with \verb=\hskip\tabcolsep=. Furthermore
-% \verb=# \hfil= would be appended to define a flush left column.
-% The next \textsf{token} is a \texttt{c}. Because it was preceded by an
-% \texttt{l} it generates a new column. This is done with
-% \verb=\hskip \tabcolsep & \hskip \tabcolsep=. The column which is to
-% be centered will be appended with \verb=\hfil # \hfil=.
-% The \textsf{token} \texttt{|} would then add a space of
-% \verb=\hskip \tabcolsep=
-% and a vertical line because the last
-% \textsf{tokens} was a \texttt{c}.
-% The following \textsf{token} \texttt{|} would only add a space
-% \verb=\hskip \doublerulesep= because it was preceded by the
-% \textsf{token} \texttt{|}. We will not discuss our example further but
-%  rather take a look at the general case of constructing preambles.
-%
-% The example shows that the desired preamble for the
-% \verb=\halign= can be constructed as soon as the action of all
-% combinations
-% of the preamble \textsf{tokens} are specified. There are 18 such
-% \textsf{tokens}
-% so we have $19 \cdot 18 = 342$ combinations if we count the
-% beginning of
-% the preamble as a special \textsf{token}. Fortunately, there are many
-% combinations which generate the same spaces, so we can define
-% \textsf{token} classes. We will identify a
-% \textsf{token} within a class with a number, so we can insert the
-% formatting (for example of a column).
-% Table~\ref{tab:Klassen} lists all \textsf{token} classes and
-% their corresponding numbers.
-% \begin{table}[ht]
-% \begin{center}
-%       \begin{tabular}[t]{>{\ttfamily}ccc}
-%       \textsf{token} & \verb=\@chclass= & \verb=\@chnum= \\[2mm]
-%       c   & 0  & 0 \\
-%       l   & 0  & 1 \\
-%       r   & 0  & 2 \\
-%       p-arg    & 0  & 3 \\
-%       t-arg    & 0  & 4 \\
-%       b-arg    & 0  & 5 \\
-%       |   & 1  & 0 \\
-%       !-arg    & 1  & 1 \\
-%       <-arg    & 2  & --- \\
-%       >-arg    & 3  & ---
-%    \end{tabular}
-%    \kern3mm \vrule \kern3mm%
-%    \begin{tabular}[t]{>{\ttfamily}ccc}
-%       \textsf{token} & \verb=\@chclass= & \verb=\@chnum= \\[2mm]
-%       Start    & 4  & --- \\
-%       @-arg    & 5  & --- \\
-%       !   & 6  & --- \\
-%       @   & 7  & --- \\
-%       <   & 8  & --- \\
-%       >   & 9  & --- \\
-%       p   & 10 & 3 \\
-%       t   & 10 & 4 \\
-%       b   & 10 & 5
-%    \end{tabular}
-% \end{center}
-% \caption{Classes of preamble \textsf{tokens}}
-% \label{tab:Klassen}
-% \end{table}
-%
-%
-% \begin{macro}{\@chclass}
-% \begin{macro}{\@chnum}
-% \begin{macro}{\@lastchclass}
-%    The class and the number of the current \textsf{token} are saved in
-%    the
-%    \textsf{count} registers \verb=\@chclass=
-%    and \verb=\@chnum=, while the class of the previous
-%    \textsf{token} is stored in the
-%    \textsf{count} register \verb=\@lastchclass=.
-%    All of the mentioned registers are already allocated in
-%    \texttt{latex.tex},
-%    which is the reason why the following three lines of code are
-%    commented out.
-%    Later throughout the text I will not mention it again explicitly
-%    whenever I use a \verb=%= sign. These parts are already defined in
-%    \texttt{latex.tex}.
+% ^^A % The description and code are essentially copied from the \Lpack{array}
+% ^^A package~\cite{ARRAY}.
+% ^^A
 %    \begin{macrocode}
-% \newcount \@chclass
-% \newcount \@chnum
-% \newcount \@lastchclass
+ % 
+ % %%%%%%%%%% Array package code %%%%%%%%%%%%%%%%%%%%%
+ % %%%%%%%%%% With acknowledgements to %%%%%%%%%%%%%%%%%%%%%
+ % %%%%%%%%%% Frank Mittelbach & David Carlisle %%%%%%%%%%%%%%%%%%%%%
+ % 
+ % %%%%%%%%%% Copy corresponds to array.sty 2016/10/06 v2.4d %%%%%%%%% 
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\@addtopreamble}
-%    We will save the already constructed preamble for
-%    the \verb=\halign=
-%    in the global macro \verb=\@preamble=. This will then be
-%     enlarged with
-%    the command \verb=\@addtopreamble=.
+% ^^A \changes{v3.7g}{2018/03/05}{Updated the embedded copy of the
+% ^^A \Lpack{array} package to version 2.4d, 2016/10/06}
+% ^^A \begin{dlf}
+% ^^A  dlf: The \Lpack{array} package has redundant code (caused by a
+% ^^A  quick mashing of and earlier \Lpack{array} version and the
+% ^^A  \Lpack{newaray} package). In thus update (2018/03/05) this
+% ^^A  redundant code is \emph{not} removed as it makes it very hard to
+% ^^A  see where there are class changes to the \Lpack{array} code, and
+% ^^A  when stuff is simply removed. We'll leave it up to the LaTeXteam to
+% ^^A  clean up the \Lpack{array} code at some point.
+% ^^A
+% ^^A The following is a carbon copy of the DTX code from
+% ^^A \verb|array.dtx|, package specific \cs{changes} lines have been
+% ^^A removed, and we have made any error/warning messages class specific,
+% ^^A instead of package specific.
+% ^^A \end{dlf}
+% ^^A
+% ^^A 
+% ^^A \subsubsection{The construction of the preamble}
+% ^^A
+% ^^A It is obvious that those environments will consist mainly of an
+% ^^A \verb=\halign=, because \TeX\ typesets tables using this primitive.
+% ^^A That is why we will now take a look at the algorithm which determines
+% ^^A a preamble for a \verb=\halign= starting with a given user preamble
+% ^^A using the options mentioned above.
+% ^^A
+% ^^A The most interesting macros of this implementation are without doubt
+% ^^A those which are responsible for the construction of the preamble for
+% ^^A the \verb=\halign=. The underlying algorithm was developed by
+% ^^A \textsc{Lamport} (resp.\ \textsc{Knuth}, see texhax V87\#??), and it
+% ^^A has been extended and improved.
+% ^^A
+% ^^A The user preamble will be read \textsf{token} by \textsf{token}.  A
+% ^^A \textsf{token} is a single character like \texttt{c} or a block
+% ^^A enclosed in \verb={...}=. For example the preamble of
+% ^^A \verb=\begin{tabular}=\linebreak[0]\verb={lc||c@{\hspace{1cm}}}= consists of
+% ^^A the \textsf{token} \texttt{l}, \texttt{c}, \texttt{|}, \texttt{|},
+% ^^A \texttt{@} and \verb=\hspace{1cm}=.
+% ^^A
+% ^^A The currently used \textsf{token} and the one, used before, are needed
+% ^^A to decide on how the construction of the preamble has to be
+% ^^A continued.
+% ^^A In the example mentioned above the \texttt{l} causes the preamble
+% ^^A to begin with \verb=\hskip\tabcolsep=. Furthermore
+% ^^A \verb=# \hfil= would be appended to define a flush left column.
+% ^^A The next \textsf{token} is a \texttt{c}. Because it was preceded by an
+% ^^A \texttt{l} it generates a new column. This is done with
+% ^^A \verb=\hskip \tabcolsep & \hskip \tabcolsep=. The column which is to
+% ^^A be centered will be appended with \verb=\hfil # \hfil=.
+% ^^A The \textsf{token} \texttt{|} would then add a space of
+% ^^A \verb=\hskip \tabcolsep=
+% ^^A and a vertical line because the last
+% ^^A \textsf{tokens} was a \texttt{c}.
+% ^^A The following \textsf{token} \texttt{|} would only add a space
+% ^^A \verb=\hskip \doublerulesep= because it was preceded by the
+% ^^A \textsf{token} \texttt{|}. We will not discuss our example further but
+% ^^A  rather take a look at the general case of constructing preambles.
+% ^^A
+% ^^A The example shows that the desired preamble for the
+% ^^A \verb=\halign= can be constructed as soon as the action of all
+% ^^A combinations
+% ^^A of the preamble \textsf{tokens} are specified. There are 18 such
+% ^^A \textsf{tokens}
+% ^^A so we have $19 \cdot 18 = 342$ combinations if we count the
+% ^^A beginning of
+% ^^A the preamble as a special \textsf{token}. Fortunately, there are many
+% ^^A combinations which generate the same spaces, so we can define
+% ^^A \textsf{token} classes. We will identify a
+% ^^A \textsf{token} within a class with a number, so we can insert the
+% ^^A formatting (for example of a column).
+% ^^A Table~\ref{tab:Klassen} lists all \textsf{token} classes and
+% ^^A their corresponding numbers.
+% ^^A \begin{table}[ht]
+% ^^A \begin{center}
+% ^^A       \begin{tabular}[t]{>{\ttfamily}ccc}
+% ^^A       \textsf{token} & \verb=\@chclass= & \verb=\@chnum= \\[2mm]
+% ^^A       c   & 0  & 0 \\
+% ^^A       l   & 0  & 1 \\
+% ^^A       r   & 0  & 2 \\
+% ^^A       p-arg    & 0  & 3 \\
+% ^^A       t-arg    & 0  & 4 \\
+% ^^A       b-arg    & 0  & 5 \\
+% ^^A       |   & 1  & 0 \\
+% ^^A       !-arg    & 1  & 1 \\
+% ^^A       <-arg    & 2  & --- \\
+% ^^A       >-arg    & 3  & ---
+% ^^A    \end{tabular}
+% ^^A    \kern3mm \vrule \kern3mm%
+% ^^A    \begin{tabular}[t]{>{\ttfamily}ccc}
+% ^^A       \textsf{token} & \verb=\@chclass= & \verb=\@chnum= \\[2mm]
+% ^^A       Start    & 4  & --- \\
+% ^^A       @-arg    & 5  & --- \\
+% ^^A       !   & 6  & --- \\
+% ^^A       @   & 7  & --- \\
+% ^^A       <   & 8  & --- \\
+% ^^A       >   & 9  & --- \\
+% ^^A       p   & 10 & 3 \\
+% ^^A       t   & 10 & 4 \\
+% ^^A       b   & 10 & 5
+% ^^A    \end{tabular}
+% ^^A \end{center}
+% ^^A \caption{Classes of preamble \textsf{tokens}}
+% ^^A \label{tab:Klassen}
+% ^^A \end{table}
+% ^^A
+% ^^A
+% ^^A \begin{macro}{\@chclass}
+% ^^A \begin{macro}{\@chnum}
+% ^^A \begin{macro}{\@lastchclass}
+% ^^A    The class and the number of the current \textsf{token} are saved in
+% ^^A    the
+% ^^A    \textsf{count} registers \verb=\@chclass=
+% ^^A    and \verb=\@chnum=, while the class of the previous
+% ^^A    \textsf{token} is stored in the
+% ^^A    \textsf{count} register \verb=\@lastchclass=.
+% ^^A    All of the mentioned registers are already allocated in
+% ^^A    \texttt{latex.tex},
+% ^^A    which is the reason why the following three lines of code are
+% ^^A    commented out.
+% ^^A    Later throughout the text I will not mention it again explicitly
+% ^^A    whenever I use a \verb=%= sign. These parts are already defined in
+% ^^A    \texttt{latex.tex}.
 %    \begin{macrocode}
-\def\@addtopreamble#1{\xdef\@preamble{\@preamble #1}}
+ % % \newcount \@chclass
+ % % \newcount \@chnum
+ % % \newcount \@lastchclass
 %    \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-% \subsubsection{The character class of a \textsf{token}}
-%
-% \begin{macro}{\@testpach}
-%    With the help of \verb=\@lastchclass= we can now define a macro
-%    which determines the class and the number of a given preamble
-%    \textsf{token}
-%    and assigns them to the registers
-%    \verb=\@chclass= and \verb=\@chnum=.
+% ^^A \end{macro}
+% ^^A \end{macro}
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A
+% ^^A \begin{macro}{\@addtopreamble}
+% ^^A    We will save the already constructed preamble for
+% ^^A    the \verb=\halign=
+% ^^A    in the global macro \verb=\@preamble=. This will then be
+% ^^A     enlarged with
+% ^^A    the command \verb=\@addtopreamble=.
 %    \begin{macrocode}
-\def\@testpach{\@chclass
+ % \def\@addtopreamble#1{\xdef\@preamble{\@preamble #1}}
 %    \end{macrocode}
-%    First we deal with the cases in which the \textsf{token}
-%    (\verb=#1=) is the argument of \texttt{!}, \texttt{@}, \texttt{<} or
-%    \texttt{>}. We can see this from the value of \verb=\@lastchclass=:
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A
+% ^^A
+% ^^A
+% ^^A \subsubsection{The character class of a \textsf{token}}
+% ^^A
+% ^^A \begin{macro}{\@testpach}
+% ^^A    With the help of \verb=\@lastchclass= we can now define a macro
+% ^^A    which determines the class and the number of a given preamble
+% ^^A    \textsf{token}
+% ^^A    and assigns them to the registers
+% ^^A    \verb=\@chclass= and \verb=\@chnum=.
 %    \begin{macrocode}
- \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
-  \ifnum \@lastchclass=7 5 \else
-   \ifnum \@lastchclass=8 \tw@ \else
-    \ifnum \@lastchclass=9 \thr@@
+ % \def\@testpach{\@chclass
 %    \end{macrocode}
-%    Otherwise we will assume that the \textsf{token} belongs to the
-%    class $0$
-%    and assign the corresponding number to \verb=\@chnum= if our
-%    assumption is correct.
+% ^^A    First we deal with the cases in which the \textsf{token}
+% ^^A    (\verb=#1=) is the argument of \texttt{!}, \texttt{@}, \texttt{<} or
+% ^^A    \texttt{>}. We can see this from the value of \verb=\@lastchclass=:
 %    \begin{macrocode}
-   \else \z@
+ %  \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
+ %   \ifnum \@lastchclass=7 5 \else
+ %    \ifnum \@lastchclass=8 \tw@ \else
+ %     \ifnum \@lastchclass=9 \thr@@
 %    \end{macrocode}
-%    If the last \textsf{token} was a \texttt{p}, \texttt{m} or a
-%    \texttt{b}, \verb=\@chnum= already has the right value. This is the
-%    reason for the somewhat curious choice of the \textsf{token}
-%    numbers in class $10$.
+% ^^A    Otherwise we will assume that the \textsf{token} belongs to the
+% ^^A    class $0$
+% ^^A    and assign the corresponding number to \verb=\@chnum= if our
+% ^^A    assumption is correct.
 %    \begin{macrocode}
-   \ifnum \@lastchclass = 10 \else
+ %    \else \z@
 %    \end{macrocode}
-%    Otherwise we will check if \verb=\@nextchar= is either a \texttt{c},
-%    \texttt{l} or an \texttt{r}.  Some applications change the
-%    catcodes of certain characters like ``\texttt{@}'' in
-%    \texttt{amstex.sty}. As a result the tests below would fail since
-%    they assume non-active character tokens. Therefore we evaluate
-%    \verb=\@nextchar= once thereby turning the first token of its
-%    replacement text into a char. At this point here this should have
-%    been the only char present in \verb=\@nextchar= which put into via a
-%    \verb=\def=.
+% ^^A    If the last \textsf{token} was a \texttt{p}, \texttt{m} or a
+% ^^A    \texttt{b}, \verb=\@chnum= already has the right value. This is the
+% ^^A    reason for the somewhat curious choice of the \textsf{token}
+% ^^A    numbers in class $10$.
 %    \begin{macrocode}
-   \edef\@nextchar{\expandafter\string\@nextchar}%
-   \@chnum
-   \if \@nextchar c\z@ \else
-    \if \@nextchar l\@ne \else
-     \if \@nextchar r\tw@ \else
+ %    \ifnum \@lastchclass = 10 \else
 %    \end{macrocode}
-%    If it is a different \textsf{token}, we know that the class was
-%    not $0$. We assign the value $0$ to \verb=\@chnum= because this value
-%    is needed for the \texttt{|}--\textsf{token}. Now we must check
-%    the remaining classes.  Note that the value of \verb=\@chnum= is
-%    insignificant here for most classes.
+% ^^A    Otherwise we will check if \verb=\@nextchar= is either a \texttt{c},
+% ^^A    \texttt{l} or an \texttt{r}.  Some applications change the
+% ^^A    catcodes of certain characters like ``\texttt{@}'' in
+% ^^A    \texttt{amstex.sty}. As a result the tests below would fail since
+% ^^A    they assume non-active character tokens. Therefore we evaluate
+% ^^A    \verb=\@nextchar= once thereby turning the first token of its
+% ^^A    replacement text into a char. At this point here this should have
+% ^^A    been the only char present in \verb=\@nextchar= which put into via a
+% ^^A    \verb=\def=.
 %    \begin{macrocode}
-   \z@ \@chclass
-   \if\@nextchar |\@ne \else
-    \if \@nextchar !6 \else
-     \if \@nextchar @7 \else
-      \if \@nextchar <8 \else
-       \if \@nextchar >9 \else
+ %    \edef\@nextchar{\expandafter\string\@nextchar}%
+ %    \@chnum
+ %    \if \@nextchar c\z@ \else
+ %     \if \@nextchar l\@ne \else
+ %      \if \@nextchar r\tw@ \else
 %    \end{macrocode}
-%    The remaining permitted \textsf{tokens} are \texttt{p},
-%    \texttt{m} and \texttt{b} (class $10$).
+% ^^A    If it is a different \textsf{token}, we know that the class was
+% ^^A    not $0$. We assign the value $0$ to \verb=\@chnum= because this value
+% ^^A    is needed for the \texttt{|}--\textsf{token}. Now we must check
+% ^^A    the remaining classes.  Note that the value of \verb=\@chnum= is
+% ^^A    insignificant here for most classes.
 %    \begin{macrocode}
-  10
-  \@chnum
-  \if \@nextchar m\thr@@\else
-   \if \@nextchar p4 \else
-    \if \@nextchar b5 \else
+ %    \z@ \@chclass
+ %    \if\@nextchar |\@ne \else
+ %     \if \@nextchar !6 \else
+ %      \if \@nextchar @7 \else
+ %       \if \@nextchar <8 \else
+ %        \if \@nextchar >9 \else
 %    \end{macrocode}
-%    Now the only remaining possibility is a forbidden \textsf{token},
-%    so we choose class $0$ and number $0$ and give an error message.
-%    Then we finish the macro by closing all \verb=\if='s.
+% ^^A    The remaining permitted \textsf{tokens} are \texttt{p},
+% ^^A    \texttt{m} and \texttt{b} (class $10$).
 %    \begin{macrocode}
-   \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi
-   \fi \fi  \fi  \fi  \fi  \fi  \fi \fi \fi \fi \fi \fi}
+ %   10
+ %   \@chnum
+ %   \if \@nextchar m\thr@@\else
+ %    \if \@nextchar p4 \else
+ %     \if \@nextchar b5 \else
 %    \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-%
-% \subsubsection{Multiple columns ($*$--form)}
-%
-% \begin{macro}{\@xexpast}
-% \begin{macro}{\the at toks}
-% \begin{macro}{\the at toksz}
-%    \label{@xexpast} Now we discuss the macro that deletes all forms
-%    of type \verb=*{=\textit{N\/}\verb=}{=\textit{String\/}\verb=}= from a user
-%    preamble and replaces them with \textit{N} copies of
-%    \textit{String}.  Nested $*$--expressions are dealt with
-%    correctly, that means $*$--expressions are not substituted if
-%    they are in explicit braces, as in \verb=@{*}=.
-%
-%    This macro is called via
-%    \verb=\@xexpast=\meta{preamble}\verb=*0x\@@=.
-%    The $*$--expression \verb=*0x= is being used to terminate the
-%    recursion,
-%    as we shall see later, and \verb=\@@= serves as an argument
-%    delimiter. \verb=\@xexpast= has four arguments. The first
-%    one is the part of the
-%    user preamble before the first $*$--expression while the second
-%    and third ones are the arguments of the first $*$--expression
-%    (that is \textit{N} and \textit{String} in the notation mentioned
-%    above).
-%    The fourth argument is the rest of the preamble.
+% ^^A    Now the only remaining possibility is a forbidden \textsf{token},
+% ^^A    so we choose class $0$ and number $0$ and give an error message.
+% ^^A    Then we finish the macro by closing all \verb=\if='s.
 %    \begin{macrocode}
-\def\@xexpast#1*#2#3#4\@@{%
+ %    \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi
+ %    \fi \fi  \fi  \fi  \fi  \fi  \fi \fi \fi \fi \fi \fi}
 %    \end{macrocode}
-%    The number of copies of \textit{String} (\verb=#2=) that are to be
-%    produced will be saved in a \textsf{count} register.
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A
+% ^^A
+% ^^A
+% ^^A \subsubsection{Multiple columns ($*$--form)}
+% ^^A
+% ^^A \begin{macro}{\@xexpast}
+% ^^A \begin{macro}{\the at toks}
+% ^^A \begin{macro}{\the at toksz}
+% ^^A    \label{@xexpast} Now we discuss the macro that deletes all forms
+% ^^A    of type \verb=*{=\textit{N\/}\verb=}{=\textit{String\/}\verb=}= from a user
+% ^^A    preamble and replaces them with \textit{N} copies of
+% ^^A    \textit{String}.  Nested $*$--expressions are dealt with
+% ^^A    correctly, that means $*$--expressions are not substituted if
+% ^^A    they are in explicit braces, as in \verb=@{*}=.
+% ^^A
+% ^^A    This macro is called via
+% ^^A    \verb=\@xexpast=\meta{preamble}\verb=*0x\@@=.
+% ^^A    The $*$--expression \verb=*0x= is being used to terminate the
+% ^^A    recursion,
+% ^^A    as we shall see later, and \verb=\@@= serves as an argument
+% ^^A    delimiter. \verb=\@xexpast= has four arguments. The first
+% ^^A    one is the part of the
+% ^^A    user preamble before the first $*$--expression while the second
+% ^^A    and third ones are the arguments of the first $*$--expression
+% ^^A    (that is \textit{N} and \textit{String} in the notation mentioned
+% ^^A    above).
+% ^^A    The fourth argument is the rest of the preamble.
 %    \begin{macrocode}
-   \@tempcnta #2
+ % \def\@xexpast#1*#2#3#4\@@{%
 %    \end{macrocode}
-%    We save the part of the preamble which does not
-%    contain a $*$--form (\verb=#1=)
-%    in a \PlainTeX\ \textsf{token} register.
-%    We also save \textit{String} (\verb=#3=) using a \LaTeX\
-%    \textsf{token} register.
+% ^^A    The number of copies of \textit{String} (\verb=#2=) that are to be
+% ^^A    produced will be saved in a \textsf{count} register.
 %    \begin{macrocode}
-   \toks@={#1}\@temptokena={#3}%
+ %    \@tempcnta #2
 %    \end{macrocode}
-%    Now we have to use a little trick to produce \textit{N} copies of
-%    \textit{String}.
-%    We could try \verb=\def\@tempa{#1}= and then
-%    \textit{N} times \verb=\edef\@tempa{\@tempa#3}=. This would have the
-%    undesired effect that all macros within \verb=#1= and \verb=#3=
-%    would be expanded, although, for example, constructions like
-%    \verb=@{..}= are not supposed to be changed.
-%    That is why we \verb=\let= two control sequences to
-%    be equivalent to \verb=\relax=.
+% ^^A    We save the part of the preamble which does not
+% ^^A    contain a $*$--form (\verb=#1=)
+% ^^A    in a \PlainTeX\ \textsf{token} register.
+% ^^A    We also save \textit{String} (\verb=#3=) using a \LaTeX\
+% ^^A    \textsf{token} register.
 %    \begin{macrocode}
-   \let\the at toksz\relax \let\the at toks\relax
+ %    \toks@={#1}\@temptokena={#3}%
 %    \end{macrocode}
-%    Then we ensure that \verb=\@tempa= contains
-%    \verb={\the at toksz\the at toks...\the at toks}= (the macro
-%    \verb=\the at toks= exactly \textit{N\/} times) as substitution text.
+% ^^A    Now we have to use a little trick to produce \textit{N} copies of
+% ^^A    \textit{String}.
+% ^^A    We could try \verb=\def\@tempa{#1}= and then
+% ^^A    \textit{N} times \verb=\edef\@tempa{\@tempa#3}=. This would have the
+% ^^A    undesired effect that all macros within \verb=#1= and \verb=#3=
+% ^^A    would be expanded, although, for example, constructions like
+% ^^A    \verb=@{..}= are not supposed to be changed.
+% ^^A    That is why we \verb=\let= two control sequences to
+% ^^A    be equivalent to \verb=\relax=.
 %    \begin{macrocode}
-   \def\@tempa{\the at toksz}%
-   \ifnum\@tempcnta >0 \@whilenum\@tempcnta >0\do
-     {\edef\@tempa{\@tempa\the at toks}\advance \@tempcnta \m at ne}%
+ %    \let\the at toksz\relax \let\the at toks\relax
 %    \end{macrocode}
-%    If \textit{N\/} was greater than zero we prepare for another call
-%    of \verb=\@xexpast=. Otherwise we assume we have reached the end of
-%    the user preamble, because we had appended \verb=*0x\@@= when we first
-%    called \verb=\@xexpast=.  In other words: if the user inserts
-%    \verb=*{0}{..}= in his preamble, \LaTeX\ ignores the rest of it.
+% ^^A    Then we ensure that \verb=\@tempa= contains
+% ^^A    \verb={\the at toksz\the at toks...\the at toks}= (the macro
+% ^^A    \verb=\the at toks= exactly \textit{N\/} times) as substitution text.
 %    \begin{macrocode}
-       \let \@tempb \@xexpast \else
-       \let \@tempb \@xexnoop \fi
+ %    \def\@tempa{\the at toksz}%
+ %    \ifnum\@tempcnta >0 \@whilenum\@tempcnta >0\do
+ %      {\edef\@tempa{\@tempa\the at toks}\advance \@tempcnta \m at ne}%
 %    \end{macrocode}
-%    Now we will make sure that the part of the user preamble, which
-%    was already dealt with, will be saved again in \verb=\@tempa=.
+% ^^A    If \textit{N\/} was greater than zero we prepare for another call
+% ^^A    of \verb=\@xexpast=. Otherwise we assume we have reached the end of
+% ^^A    the user preamble, because we had appended \verb=*0x\@@= when we first
+% ^^A    called \verb=\@xexpast=.  In other words: if the user inserts
+% ^^A    \verb=*{0}{..}= in his preamble, \LaTeX\ ignores the rest of it.
 %    \begin{macrocode}
-   \def\the at toksz{\the\toks@}\def\the at toks{\the\@temptokena}%
-   \edef\@tempa{\@tempa}%
+ %        \let \@tempb \@xexpast \else
+ %        \let \@tempb \@xexnoop \fi
 %    \end{macrocode}
-%    We have now evaluated the first $*$--expression, and the user
-%    preamble up to this point
-%    is saved in \verb=\@tempa=. We will put the contents of
-%    \verb=\@tempa= and the rest of the user preamble together and work
-%    on the result with \verb=\@tempb=. This macro either corresponds
-%    to \verb=\@xexpast=, so that the next
-%    $*$--expression is handled, or to the macro \verb=\@xexnoop=,
-%    which only ends the recursion by deleting its argument.
+% ^^A    Now we will make sure that the part of the user preamble, which
+% ^^A    was already dealt with, will be saved again in \verb=\@tempa=.
 %    \begin{macrocode}
-   \expandafter \@tempb \@tempa #4\@@}
+ %    \def\the at toksz{\the\toks@}\def\the at toks{\the\@temptokena}%
+ %    \edef\@tempa{\@tempa}%
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@xexnoop}
-%    So the first big problem is solved. Now it is easy to
-%    specify \verb=\@xexnoop=.
-%    Its argument is delimited by \verb=\@@= and it simply expands to
-%    nothing.
+% ^^A    We have now evaluated the first $*$--expression, and the user
+% ^^A    preamble up to this point
+% ^^A    is saved in \verb=\@tempa=. We will put the contents of
+% ^^A    \verb=\@tempa= and the rest of the user preamble together and work
+% ^^A    on the result with \verb=\@tempb=. This macro either corresponds
+% ^^A    to \verb=\@xexpast=, so that the next
+% ^^A    $*$--expression is handled, or to the macro \verb=\@xexnoop=,
+% ^^A    which only ends the recursion by deleting its argument.
 %    \begin{macrocode}
-%  \def\@xexnoop#1\@@{}
+ %    \expandafter \@tempb \@tempa #4\@@}
 %    \end{macrocode}
-% \end{macro}
-%
-%
-%
-%
-% \subsubsection{The insertion of declarations
-%           (\texttt{>}, \texttt{<}, \texttt{!}, \texttt{@})}
-%
-%
-% The preamble will be enlarged with the help of \verb=\xdef=, but the
-% arguments of \texttt{>}, \texttt{<},~\texttt{!}\ and \texttt{@} are
-% not supposed to be expanded during the construction (we want an
-% implementation that doesn't need a \verb=\protect=). So we have to find a
-% way to inhibit the expansion of those arguments.
-%
-% We will solve this problem with \textsf{token} registers. We need
-% one register for every \texttt{!}\ and \texttt{@}, while we need two
-% for every \texttt{c}, \texttt{l}, \texttt{r}, \texttt{m}, \texttt{p}
-% or \texttt{b}. This limits the number of columns of a table because
-% there are only 256 \textsf{token} registers. But then, who needs
-% tables with more than 100 columns?
-%
-% One could also find a solution which only needs two or three
-% \textsf{token} registers by proceeding similarly as in the macro
-% \verb=\@xexpast= (see page \pageref{@xexpast}). The advantage of our
-% approach is the fact that we avoid some of the problems that arise
-% with the other method\footnote{Maybe there are also historical
-%  reasons.}.
-%
-% So how do we proceed? Let us assume that we had \verb=!{foo}= in the
-% user preamble and say we saved \texttt{foo} in
-% \textsf{token} register $5$. Then we call
-% \verb=\@addtopreamble{\the at toks5}= where
-% \verb=\the at toks= is defined in a way that it does not expand
-% (for example it could be equivalent to \verb=\relax=). Every
-% following call
-% of \verb=\@addtopreamble= leaves \verb=\the at toks5= unchanged in
-% \verb=\@preamble=. If the construction of the preamble is completed
-% we change the definition of \verb=\the at toks= to
-% \verb=\the\toks= and expand \verb=\@preamble= for the last time.
-% During this process all parts of the form
-%    \verb=\the at toks=\meta{Number}
-% will be substituted by the contents of the respective \textsf{token}
-% registers.
-%
-% As we can see from this informal discussion the construction of the
-% preamble has to take place within a group, so that the
-% \textsf{token} registers we use will be freed later on. For that
-% reason we keep all assignments to \verb=\@preamble= global; therefore the
-% replacement text of this macro will remain the same after we leave
-% the group.
-%
-% \begin{macro}{\count@}
-%    We further need a \textsf{count} register to remember which
-%    \textsf{token} register is to be used next. This will be
-%    initialized with $-1$ if we want to begin with the \textsf{token}
-%    register $0$. We use the \PlainTeX\ scratch register \verb=\count@=
-%    because everything takes place locally. All we have to do is
-%    insert \verb=\the at toks= \verb=\the= \verb=\count@= into the preamble.
-%    \verb=\the at toks= will remain unchanged and \verb=\the\count@= expands into
-%    the saved number.
-% \end{macro}
-%
-% \begin{macro}{\prepnext at tok}
-%    The macro \verb=\prepnext at tok= is in charge of preparing the next
-%    \textsf{token} register. For that purpose we increase
-%    \verb=\count@= by $1$:
+% ^^A \end{macro}
+% ^^A \end{macro}
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\@xexnoop}
+% ^^A    So the first big problem is solved. Now it is easy to
+% ^^A    specify \verb=\@xexnoop=.
+% ^^A    Its argument is delimited by \verb=\@@= and it simply expands to
+% ^^A    nothing.
 %    \begin{macrocode}
-\def\prepnext at tok{\advance \count@ \@ne
+ % %  \def\@xexnoop#1\@@{}
 %    \end{macrocode}
-%    Then we locally delete any contents the
-%    \textsf{token} register might have.
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A
+% ^^A
+% ^^A \subsubsection{The insertion of declarations
+% ^^A           (\texttt{>}, \texttt{<}, \texttt{!}, \texttt{@})}
+% ^^A
+% ^^A
+% ^^A The preamble will be enlarged with the help of \verb=\xdef=, but the
+% ^^A arguments of \texttt{>}, \texttt{<},~\texttt{!}\ and \texttt{@} are
+% ^^A not supposed to be expanded during the construction (we want an
+% ^^A implementation that doesn't need a \verb=\protect=). So we have to find a
+% ^^A way to inhibit the expansion of those arguments.
+% ^^A
+% ^^A We will solve this problem with \textsf{token} registers. We need
+% ^^A one register for every \texttt{!}\ and \texttt{@}, while we need two
+% ^^A for every \texttt{c}, \texttt{l}, \texttt{r}, \texttt{m}, \texttt{p}
+% ^^A or \texttt{b}. This limits the number of columns of a table because
+% ^^A there are only 256 \textsf{token} registers. But then, who needs
+% ^^A tables with more than 100 columns?
+% ^^A
+% ^^A One could also find a solution which only needs two or three
+% ^^A \textsf{token} registers by proceeding similarly as in the macro
+% ^^A \verb=\@xexpast= (see page \pageref{@xexpast}). The advantage of our
+% ^^A approach is the fact that we avoid some of the problems that arise
+% ^^A with the other method\footnote{Maybe there are also historical
+% ^^A  reasons.}.
+% ^^A
+% ^^A So how do we proceed? Let us assume that we had \verb=!{foo}= in the
+% ^^A user preamble and say we saved \texttt{foo} in
+% ^^A \textsf{token} register $5$. Then we call
+% ^^A \verb=\@addtopreamble{\the at toks5}= where
+% ^^A \verb=\the at toks= is defined in a way that it does not expand
+% ^^A (for example it could be equivalent to \verb=\relax=). Every
+% ^^A following call
+% ^^A of \verb=\@addtopreamble= leaves \verb=\the at toks5= unchanged in
+% ^^A \verb=\@preamble=. If the construction of the preamble is completed
+% ^^A we change the definition of \verb=\the at toks= to
+% ^^A \verb=\the\toks= and expand \verb=\@preamble= for the last time.
+% ^^A During this process all parts of the form
+% ^^A    \verb=\the at toks=\meta{Number}
+% ^^A will be substituted by the contents of the respective \textsf{token}
+% ^^A registers.
+% ^^A
+% ^^A As we can see from this informal discussion the construction of the
+% ^^A preamble has to take place within a group, so that the
+% ^^A \textsf{token} registers we use will be freed later on. For that
+% ^^A reason we keep all assignments to \verb=\@preamble= global; therefore the
+% ^^A replacement text of this macro will remain the same after we leave
+% ^^A the group.
+% ^^A
+% ^^A \begin{macro}{\count@}
+% ^^A    We further need a \textsf{count} register to remember which
+% ^^A    \textsf{token} register is to be used next. This will be
+% ^^A    initialized with $-1$ if we want to begin with the \textsf{token}
+% ^^A    register $0$. We use the \PlainTeX\ scratch register \verb=\count@=
+% ^^A    because everything takes place locally. All we have to do is
+% ^^A    insert \verb=\the at toks= \verb=\the= \verb=\count@= into the preamble.
+% ^^A    \verb=\the at toks= will remain unchanged and \verb=\the\count@= expands into
+% ^^A    the saved number.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\prepnext at tok}
+% ^^A    The macro \verb=\prepnext at tok= is in charge of preparing the next
+% ^^A    \textsf{token} register. For that purpose we increase
+% ^^A    \verb=\count@= by $1$:
 %    \begin{macrocode}
-   \toks\count@{}}
+ % \def\prepnext at tok{\advance \count@ \@ne
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\save at decl}
-%    During the construction of the preamble the current
-%    \textsf{token} is always saved in the macro \verb=\@nextchar= (see the
-%    definition of \verb=\@mkpream= on page \pageref{@mkpream}). The macro
-%    \verb=\save at decl= saves it into the next free \textsf{token} register,
-%    i.e.\ in \verb=\toks\count@=.
+% ^^A    Then we locally delete any contents the
+% ^^A    \textsf{token} register might have.
 %    \begin{macrocode}
-\def\save at decl{\toks\count@ \expandafter{\@nextchar}}
+ %    \toks\count@{}}
 %    \end{macrocode}
-%    The reason for the  use of \verb=\relax= is the following
-%    hypothetical situation in the preamble:
-%    \quad \verb=..\the\toks1\the\toks2..= \quad \TeX\ expands
-%    \verb=\the\toks2= first in order to find out if the digit \verb=1=
-%    is followed by other digits. E.g.\ a \verb=5= saved in the
-%    \textsf{token} register $2$ would lead \TeX\ to insert the contents
-%    of \textsf{token} register $15$ instead of $1$ later on.
-%
-% The example above referred to an older version of \verb=\save at decl= which
-% inserted a \verb=\relex= inside the token register. This is now moved to
-% the places where the actual token registers are inserted (look for
-% \verb=\the at toks=) because the old version would still make= @=
-% expressions to moving arguments since after expanding the second
-% register while looking for the end of the number the contents of the
-% token register is added so that later on the whole register will be
-% expanded.  This serious bug was found after nearly two years
-% international use of this package  by Johannes Braams.
-% \end{macro}
-%
-%
-%
-% How does the situation look like, if we want to add another column
-% to the preamble, i.e.\ if we have found a \texttt{c}, \texttt{l},
-% \texttt{r}, \texttt{p}, \texttt{m} or \texttt{b} in the user
-% preamble?  In this case we have the problem of the \textsf{token}
-% register from \verb=>{..}= and \verb=<{..}= having to be inserted at this
-% moment because formatting instructions like \verb=\hfil= have to be set
-% around them. On the other hand it is not known yet, if any \verb=<{..}=
-% instruction will appear in the user preamble at all.
-%
-% We solve this problem by adding two \textsf{token} registers at a
-% time.  This explains, why we have freed the \textsf{token} registers
-% in \verb=\prepnext at tok=.
-%
-% \begin{macro}{\insert at column}
-% \begin{macro}{\@sharp}
-%    We now define the macro \verb=\insert at column= which will do
-%    this work for us.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\save at decl}
+% ^^A    During the construction of the preamble the current
+% ^^A    \textsf{token} is always saved in the macro \verb=\@nextchar= (see the
+% ^^A    definition of \verb=\@mkpream= on page \pageref{@mkpream}). The macro
+% ^^A    \verb=\save at decl= saves it into the next free \textsf{token} register,
+% ^^A    i.e.\ in \verb=\toks\count@=.
 %    \begin{macrocode}
-\def\insert at column{%
+ % \def\save at decl{\toks\count@ \expandafter{\@nextchar}}
 %    \end{macrocode}
-%    Here, we assume that the \textsf{count} register
-%    \verb=\@tempcnta= has saved the value $\verb=\count@= - 1$.
+% ^^A    The reason for the  use of \verb=\relax= is the following
+% ^^A    hypothetical situation in the preamble:
+% ^^A    \quad \verb=..\the\toks1\the\toks2..= \quad \TeX\ expands
+% ^^A    \verb=\the\toks2= first in order to find out if the digit \verb=1=
+% ^^A    is followed by other digits. E.g.\ a \verb=5= saved in the
+% ^^A    \textsf{token} register $2$ would lead \TeX\ to insert the contents
+% ^^A    of \textsf{token} register $15$ instead of $1$ later on.
+% ^^A
+% ^^A The example above referred to an older version of \verb=\save at decl= which
+% ^^A inserted a \verb=\relex= inside the token register. This is now moved to
+% ^^A the places where the actual token registers are inserted (look for
+% ^^A \verb=\the at toks=) because the old version would still make= @=
+% ^^A expressions to moving arguments since after expanding the second
+% ^^A register while looking for the end of the number the contents of the
+% ^^A token register is added so that later on the whole register will be
+% ^^A expanded.  This serious bug was found after nearly two years
+% ^^A international use of this package  by Johannes Braams.
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A
+% ^^A How does the situation look like, if we want to add another column
+% ^^A to the preamble, i.e.\ if we have found a \texttt{c}, \texttt{l},
+% ^^A \texttt{r}, \texttt{p}, \texttt{m} or \texttt{b} in the user
+% ^^A preamble?  In this case we have the problem of the \textsf{token}
+% ^^A register from \verb=>{..}= and \verb=<{..}= having to be inserted at this
+% ^^A moment because formatting instructions like \verb=\hfil= have to be set
+% ^^A around them. On the other hand it is not known yet, if any \verb=<{..}=
+% ^^A instruction will appear in the user preamble at all.
+% ^^A
+% ^^A We solve this problem by adding two \textsf{token} registers at a
+% ^^A time.  This explains, why we have freed the \textsf{token} registers
+% ^^A in \verb=\prepnext at tok=.
+% ^^A
+% ^^A \begin{macro}{\insert at column}
+% ^^A \begin{macro}{\@sharp}
+% ^^A    We now define the macro \verb=\insert at column= which will do
+% ^^A    this work for us.
 %    \begin{macrocode}
-   \the at toks \the \@tempcnta
+ % \def\insert at column{%
 %    \end{macrocode}
-%    Next follows the \verb=#= sign which specifies the place
-%    where the text of the column shall be inserted. To avoid
-%    errors during the expansions in
-%    \verb=\@addtopreamble= we hide this sign in the command
-%    \verb=\@sharp= which is temporarily occupied with
-%    \verb=\relax= during the build-up of the preamble.
-%    To remove unwanted spaces before and after the column text, we set
-%    an \verb=\ignorespaces=  in front and a \verb=\unskip= afterwards.
+% ^^A    Here, we assume that the \textsf{count} register
+% ^^A    \verb=\@tempcnta= has saved the value $\verb=\count@= - 1$.
 %    \begin{macrocode}
-   \ignorespaces \@sharp \unskip
+ %    \the at toks \the \@tempcnta
 %    \end{macrocode}
-%    Then the second \textsf{token} register follows whose number should
-%    be saved in \verb=\count@=.
-%    We make sure that there will be no further expansion after reading
-%    the number, by finishing with \verb=\relax=. The case above is not
-%    critical since it is ended by \verb=\ignorespaces=.
+% ^^A    Next follows the \verb=#= sign which specifies the place
+% ^^A    where the text of the column shall be inserted. To avoid
+% ^^A    errors during the expansions in
+% ^^A    \verb=\@addtopreamble= we hide this sign in the command
+% ^^A    \verb=\@sharp= which is temporarily occupied with
+% ^^A    \verb=\relax= during the build-up of the preamble.
+% ^^A    To remove unwanted spaces before and after the column text, we set
+% ^^A    an \verb=\ignorespaces=  in front and a \verb=\unskip= afterwards.
 %    \begin{macrocode}
-   \the at toks \the \count@ \relax}
+ %    \ignorespaces \@sharp \unskip
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-%
-% \subsubsection{The separation of columns}
-%
-% \begin{macro}{\@addamp}
-%    In the preamble a \verb=&= has to be inserted between any two columns;
-%    before the first column there should not be a \verb=&=. As the user
-%    preamble may start with a \texttt{|} we have to remember somehow
-%    if we have already inserted a \verb=#= (i.e.\ a column). This is done
-%    with the boolean variable \verb=\if at firstamp= that we test in
-%    \verb=\@addamp=, the macro that inserts the \verb=&=.
+% ^^A    Then the second \textsf{token} register follows whose number should
+% ^^A    be saved in \verb=\count@=.
+% ^^A    We make sure that there will be no further expansion after reading
+% ^^A    the number, by finishing with \verb=\relax=. The case above is not
+% ^^A    critical since it is ended by \verb=\ignorespaces=.
 %    \begin{macrocode}
-%    \newif \@iffirstamp
-%    \def\@addamp{\if at firstamp \@firstampfalse
-%                 \else \@addtopreamble &\fi}
+ %    \the at toks \the \count@ \relax}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@acol}
-% \begin{macro}{\@acolampacol}
-% \begin{macro}{\col at sep}
-%    We will now define some abbreviations for the extensions,
-%    appearing most often in the preamble build-up.
-%    Here \verb=\col at sep= is a \textsf{dimen} register which is set
-%    equivalent to \verb=\arraycolsep= in an \textsf{array}--environment,
-%    otherwise it is set equivalent to \verb=\tabcolsep=.
+% ^^A \end{macro}
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A
+% ^^A
+% ^^A \subsubsection{The separation of columns}
+% ^^A
+% ^^A \begin{macro}{\@addamp}
+% ^^A    In the preamble a \verb=&= has to be inserted between any two columns;
+% ^^A    before the first column there should not be a \verb=&=. As the user
+% ^^A    preamble may start with a \texttt{|} we have to remember somehow
+% ^^A    if we have already inserted a \verb=#= (i.e.\ a column). This is done
+% ^^A    with the boolean variable \verb=\if at firstamp= that we test in
+% ^^A    \verb=\@addamp=, the macro that inserts the \verb=&=.
 %    \begin{macrocode}
-\newdimen\col at sep
-\def\@acol{\@addtopreamble{\hskip\col at sep}}
-%    \def\@acolampacol{\@acol\@addamp\@acol}
+ % %    \newif \@iffirstamp
+ % %    \def\@addamp{\if at firstamp \@firstampfalse
+ % %                 \else \@addtopreamble &\fi}
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsubsection{The macro \texttt{\textbackslash @mkpream}}
-%
-% \begin{macro}{\@mkpream}
-% \begin{macro}{\the at toks}
-%    \label{@mkpream}
-%    Now we can define the macro which builds up the preamble for the
-%    \verb=\halign=.
-%    First we initialize \verb=\@preamble=, \verb=\@lastchclass=
-%    and the boolean variable \verb=\if at firstamp=.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\@acol}
+% ^^A \begin{macro}{\@acolampacol}
+% ^^A \begin{macro}{\col at sep}
+% ^^A    We will now define some abbreviations for the extensions,
+% ^^A    appearing most often in the preamble build-up.
+% ^^A    Here \verb=\col at sep= is a \textsf{dimen} register which is set
+% ^^A    equivalent to \verb=\arraycolsep= in an \textsf{array}--environment,
+% ^^A    otherwise it is set equivalent to \verb=\tabcolsep=.
 %    \begin{macrocode}
-\def\@mkpream#1{\gdef\@preamble{}\@lastchclass 4 \@firstamptrue
+ % \newdimen\col at sep
+ % \def\@acol{\@addtopreamble{\hskip\col at sep}}
+ % %    \def\@acolampacol{\@acol\@addamp\@acol}
 %    \end{macrocode}
-%    During the build-up of the preamble we cannot directly use the
-%    \verb=#= sign; this would lead to an error message in the next
-%    \verb=\@addtopreamble= call.
-%    Instead, we use the command \verb=\@sharp= at places where later
-%    a \verb=#= will be.
-%    This command is at first given the meaning \verb=\relax=;
-%    therefore it will not be expanded when the preamble
-%    is extended.
-%    In the macro \verb=\@array=, shortly before the \verb=\halign=
-%    is carried out, \verb=\@sharp= is given its final meaning.
-%
-%    In a similar way,
-%    we deal with the commands \verb=\@startpbox= and
-%    \verb=\@endpbox=, although the reason is different here: these
-%    macros expand in many \textsf{tokens} which would delay the
-%    build-up of the preamble.
+% ^^A \end{macro}
+% ^^A \end{macro}
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A \subsubsection{The macro \texttt{\textbackslash @mkpream}}
+% ^^A
+% ^^A \begin{macro}{\@mkpream}
+% ^^A \begin{macro}{\the at toks}
+% ^^A    \label{@mkpream}
+% ^^A    Now we can define the macro which builds up the preamble for the
+% ^^A    \verb=\halign=.
+% ^^A    First we initialize \verb=\@preamble=, \verb=\@lastchclass=
+% ^^A    and the boolean variable \verb=\if at firstamp=.
 %    \begin{macrocode}
-   \let\@sharp\relax \let\@startpbox\relax \let\@endpbox\relax
+ % \def\@mkpream#1{\gdef\@preamble{}\@lastchclass 4 \@firstamptrue
 %    \end{macrocode}
-%    Now we remove possible  $*$-forms in the user preamble with the
-%    command \verb=\@xexpast=.  As we already know, this command saves
-%    its result in the macro \verb=\@tempa=.
+% ^^A    During the build-up of the preamble we cannot directly use the
+% ^^A    \verb=#= sign; this would lead to an error message in the next
+% ^^A    \verb=\@addtopreamble= call.
+% ^^A    Instead, we use the command \verb=\@sharp= at places where later
+% ^^A    a \verb=#= will be.
+% ^^A    This command is at first given the meaning \verb=\relax=;
+% ^^A    therefore it will not be expanded when the preamble
+% ^^A    is extended.
+% ^^A    In the macro \verb=\@array=, shortly before the \verb=\halign=
+% ^^A    is carried out, \verb=\@sharp= is given its final meaning.
+% ^^A
+% ^^A    In a similar way,
+% ^^A    we deal with the commands \verb=\@startpbox= and
+% ^^A    \verb=\@endpbox=, although the reason is different here: these
+% ^^A    macros expand in many \textsf{tokens} which would delay the
+% ^^A    build-up of the preamble.
 %    \begin{macrocode}
-   \@xexpast #1*0x\@@
+ %    \let\@sharp\relax \let\@startpbox\relax \let\@endpbox\relax
 %    \end{macrocode}
-%    Afterwards we initialize all registers and macros, that we need
-%    for the build-up of the preamble.
-%    Since we want to start with the \textsf{token} register $0$,
-%    \verb=\count@= has to contain the value $-1$.
+% ^^A    Now we remove possible  $*$-forms in the user preamble with the
+% ^^A    command \verb=\@xexpast=.  As we already know, this command saves
+% ^^A    its result in the macro \verb=\@tempa=.
 %    \begin{macrocode}
-   \count@\m at ne
-   \let\the at toks\relax
+ %    \@xexpast #1*0x\@@
 %    \end{macrocode}
-%    Then we call up \verb=\prepnext at tok= in order to prepare the
-%    \textsf{token} register $0$ for use.
+% ^^A    Afterwards we initialize all registers and macros, that we need
+% ^^A    for the build-up of the preamble.
+% ^^A    Since we want to start with the \textsf{token} register $0$,
+% ^^A    \verb=\count@= has to contain the value $-1$.
 %    \begin{macrocode}
-   \prepnext at tok
+ %    \count@\m at ne
+ %    \let\the at toks\relax
 %    \end{macrocode}
-%    To evaluate the user preamble (without stars) saved in
-%    \verb=\@tempa= we use the \LaTeX--macro \verb=\@tfor=.
-%    The strange appearing construction with \verb=\expandafter= is
-%    based on the fact that we have to put the replacement text of
-%    \verb=\@tempa= and not the macro \verb=\@tempa= to this
-%    \LaTeX--macro.
+% ^^A    Then we call up \verb=\prepnext at tok= in order to prepare the
+% ^^A    \textsf{token} register $0$ for use.
 %    \begin{macrocode}
-   \expandafter \@tfor \expandafter \@nextchar
-    \expandafter :\expandafter =\@tempa \do
+ %    \prepnext at tok
 %    \end{macrocode}
-%    The body of this loop (the group after the \verb=\do=)
-%    is executed for one \textsf{token} at a time, whereas
-%    the current \textsf{token} is saved in \verb=\@nextchar=.
-%    At first we evaluate the current \textsf{token} with the already
-%    defined macro \verb=\@testpach=, i.e.\ we assign to
-%    \verb=\@chclass= the character class and to \verb=\@chnum=
-%    the character number of this \textsf{token}.
+% ^^A    To evaluate the user preamble (without stars) saved in
+% ^^A    \verb=\@tempa= we use the \LaTeX--macro \verb=\@tfor=.
+% ^^A    The strange appearing construction with \verb=\expandafter= is
+% ^^A    based on the fact that we have to put the replacement text of
+% ^^A    \verb=\@tempa= and not the macro \verb=\@tempa= to this
+% ^^A    \LaTeX--macro.
 %    \begin{macrocode}
-   {\@testpach
+ %    \expandafter \@tfor \expandafter \@nextchar
+ %     \expandafter :\expandafter =\@tempa \do
 %    \end{macrocode}
-%    Then we branch out depending on the value of \verb=\@chclass= into
-%    different macros that extend the preamble respectively.
+% ^^A    The body of this loop (the group after the \verb=\do=)
+% ^^A    is executed for one \textsf{token} at a time, whereas
+% ^^A    the current \textsf{token} is saved in \verb=\@nextchar=.
+% ^^A    At first we evaluate the current \textsf{token} with the already
+% ^^A    defined macro \verb=\@testpach=, i.e.\ we assign to
+% ^^A    \verb=\@chclass= the character class and to \verb=\@chnum=
+% ^^A    the character number of this \textsf{token}.
 %    \begin{macrocode}
-   \ifcase \@chclass \@classz \or \@classi \or \@classii
-     \or \save at decl \or \or \@classv \or \@classvi
-     \or \@classvii \or \@classviii  \or \@classix
-     \or \@classx \fi
+ %    {\@testpach
 %    \end{macrocode}
-%    Two cases deserve our special attention: Since the current
-%    \textsf{token} cannot have the character class $4$ (start) we
-%    have skipped this possibility. If the character class is $3$,
-%    only the content of \verb=\@nextchar= has to be saved into the current
-%    \textsf{token} register; therefore we call up \verb=\save at decl=
-%    directly and save a macro name.  After the preamble has been
-%    extended we assign the value of \verb=\@chclass= to the counter
-%    \verb=\@lastchclass= to assure that this information will be available
-%    during the next run of the loop.
+% ^^A    Then we branch out depending on the value of \verb=\@chclass= into
+% ^^A    different macros that extend the preamble respectively.
 %    \begin{macrocode}
-   \@lastchclass\@chclass}%
+ %    \ifcase \@chclass \@classz \or \@classi \or \@classii
+ %      \or \save at decl \or \or \@classv \or \@classvi
+ %      \or \@classvii \or \@classviii  \or \@classix
+ %      \or \@classx \fi
 %    \end{macrocode}
-%    After the loop has been finished space must still be added to
-%    the created preamble, depending on the last \textsf{token}.
-%    Depending on the value of \verb=\@lastchclass= we perform
-%    the necessary operations.
+% ^^A    Two cases deserve our special attention: Since the current
+% ^^A    \textsf{token} cannot have the character class $4$ (start) we
+% ^^A    have skipped this possibility. If the character class is $3$,
+% ^^A    only the content of \verb=\@nextchar= has to be saved into the current
+% ^^A    \textsf{token} register; therefore we call up \verb=\save at decl=
+% ^^A    directly and save a macro name.  After the preamble has been
+% ^^A    extended we assign the value of \verb=\@chclass= to the counter
+% ^^A    \verb=\@lastchclass= to assure that this information will be available
+% ^^A    during the next run of the loop.
 %    \begin{macrocode}
-   \ifcase\@lastchclass
+ %    \@lastchclass\@chclass}%
 %    \end{macrocode}
-%    If the last class equals $0$ we add a
-%    \verb=\hskip \col at sep=.
+% ^^A    After the loop has been finished space must still be added to
+% ^^A    the created preamble, depending on the last \textsf{token}.
+% ^^A    Depending on the value of \verb=\@lastchclass= we perform
+% ^^A    the necessary operations.
 %    \begin{macrocode}
-   \@acol \or
+ %    \ifcase\@lastchclass
 %    \end{macrocode}
-%    If it equals $1$ we do not add any additional space so that the
-%    horizontal lines do not exceed the vertical ones.
+% ^^A    If the last class equals $0$ we add a
+% ^^A    \verb=\hskip \col at sep=.
 %    \begin{macrocode}
-   \or
+ %    \@acol \or
 %    \end{macrocode}
-%    Class $2$ is treated like class $0$ because a \verb=<{...}=  can
-%    only directly follow after class $0$.
+% ^^A    If it equals $1$ we do not add any additional space so that the
+% ^^A    horizontal lines do not exceed the vertical ones.
 %    \begin{macrocode}
-   \@acol \or
+ %    \or
 %    \end{macrocode}
-%    Most of the other possibilities can only appear if the user
-%    preamble was defective. Class $3$ is not allowed since after a
-%    \verb=>{..}= there must always follow a \texttt{c}, \texttt{l},
-%    \texttt{r}, \texttt{p},\texttt{m} or \texttt{b}. We report an
-%    error and ignore the declaration given by \verb={..}=.
+% ^^A    Class $2$ is treated like class $0$ because a \verb=<{...}=  can
+% ^^A    only directly follow after class $0$.
 %    \begin{macrocode}
-   \@preamerr \thr@@ \or
+ %    \@acol \or
 %    \end{macrocode}
-%    If \verb=\@lastchclass= is $4$ the user preamble has been empty.
-%    To continue, we insert a \verb=#= in the preamble.
+% ^^A    Most of the other possibilities can only appear if the user
+% ^^A    preamble was defective. Class $3$ is not allowed since after a
+% ^^A    \verb=>{..}= there must always follow a \texttt{c}, \texttt{l},
+% ^^A    \texttt{r}, \texttt{p},\texttt{m} or \texttt{b}. We report an
+% ^^A    error and ignore the declaration given by \verb={..}=.
 %    \begin{macrocode}
-   \@preamerr \tw@ \@addtopreamble\@sharp \or
+ %    \@preamerr \thr@@ \or
 %    \end{macrocode}
-%    Class $5$ is allowed again. In this case
-%    (the user preamble ends with \verb=@{..}=) we need not
-%    do anything.
+% ^^A    If \verb=\@lastchclass= is $4$ the user preamble has been empty.
+% ^^A    To continue, we insert a \verb=#= in the preamble.
 %    \begin{macrocode}
-   \or
+ %    \@preamerr \tw@ \@addtopreamble\@sharp \or
 %    \end{macrocode}
-%    Any other case means that the arguments to \verb=@=, \texttt{!},
-%    \texttt{<}, \texttt{>}, \texttt{p}, \texttt{m} or \texttt{b} have
-%    been forgotten. So we report an error and ignore the last
-%    \textsf{token}.
+% ^^A    Class $5$ is allowed again. In this case
+% ^^A    (the user preamble ends with \verb=@{..}=) we need not
+% ^^A    do anything.
 %    \begin{macrocode}
-   \else  \@preamerr \@ne \fi
+ %    \or
 %    \end{macrocode}
-%    Now that the build-up of the preamble is almost finished we can
-%    insert the \textsf{token} registers and therefore redefine
-%    \verb=\the at toks=. The actual insertion, though, is performed
-%    later.
+% ^^A    Any other case means that the arguments to \verb=@=, \texttt{!},
+% ^^A    \texttt{<}, \texttt{>}, \texttt{p}, \texttt{m} or \texttt{b} have
+% ^^A    been forgotten. So we report an error and ignore the last
+% ^^A    \textsf{token}.
 %    \begin{macrocode}
-   \def\the at toks{\the\toks}}
+ %    \else  \@preamerr \@ne \fi
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-%  \subsubsection{The macros \texttt{\textbackslash @classz}
-%           to \texttt{\textbackslash @classx}}
-%
-% The preamble is extended by the macros \verb=\@classz= to
-% \verb=\@classx= which are called by \verb=\@mkpream=
-%  depending on \verb=\@lastchclass=
-% (i.e. the character class of the last \textsf{token}).
-% \begin{macro}{\@classx}
-%    First we define =\@classx= because of its important r\^ole.
-%    When it is called we find that the current
-%    \textsf{token} is \texttt{p}, \texttt{m} or \texttt{b}.
-%    That means that a new column has to start.
+% ^^A    Now that the build-up of the preamble is almost finished we can
+% ^^A    insert the \textsf{token} registers and therefore redefine
+% ^^A    \verb=\the at toks=. The actual insertion, though, is performed
+% ^^A    later.
 %    \begin{macrocode}
-\def\@classx{%
+ %    \def\the at toks{\the\toks}}
 %    \end{macrocode}
-%    Depending on the value of \verb=\@lastchclass= different actions
-%    must take place:
+% ^^A \end{macro}
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A
+% ^^A  \subsubsection{The macros \texttt{\textbackslash @classz}
+% ^^A           to \texttt{\textbackslash @classx}}
+% ^^A
+% ^^A The preamble is extended by the macros \verb=\@classz= to
+% ^^A \verb=\@classx= which are called by \verb=\@mkpream=
+% ^^A  depending on \verb=\@lastchclass=
+% ^^A (i.e. the character class of the last \textsf{token}).
+% ^^A \begin{macro}{\@classx}
+% ^^A    First we define =\@classx= because of its important r\^ole.
+% ^^A    When it is called we find that the current
+% ^^A    \textsf{token} is \texttt{p}, \texttt{m} or \texttt{b}.
+% ^^A    That means that a new column has to start.
 %    \begin{macrocode}
-  \ifcase \@lastchclass
+ % \def\@classx{%
 %    \end{macrocode}
-%    If the last character class was $0$ we separate the columns by
-%    \verb=\hskip\col at sep= followed by \verb=&= and another
-%    \verb=\hskip\col at sep=.
+% ^^A    Depending on the value of \verb=\@lastchclass= different actions
+% ^^A    must take place:
 %    \begin{macrocode}
-  \@acolampacol \or
+ %   \ifcase \@lastchclass
 %    \end{macrocode}
-%    If the last class was class $1$ --- that means that a vertical
-%    line was
-%    drawn, --- before this line a \verb=\hskip\col at sep= was inserted.
-%    Therefore there has to be only a \verb=&= followed by
-%    \verb=\hskip\col at sep=. But this \verb=&= may be inserted only
-%    if this is not the first column. This process is controlled
-%    by \verb=\if at firstamp= in the macro \verb=\addamp=.
+% ^^A    If the last character class was $0$ we separate the columns by
+% ^^A    \verb=\hskip\col at sep= followed by \verb=&= and another
+% ^^A    \verb=\hskip\col at sep=.
 %    \begin{macrocode}
-  \@addamp \@acol \or
+ %   \@acolampacol \or
 %    \end{macrocode}
-%    Class $2$ is treated like class $0$ because \verb=<{...}= can only
-%    follow after class $0$.
+% ^^A    If the last class was class $1$ --- that means that a vertical
+% ^^A    line was
+% ^^A    drawn, --- before this line a \verb=\hskip\col at sep= was inserted.
+% ^^A    Therefore there has to be only a \verb=&= followed by
+% ^^A    \verb=\hskip\col at sep=. But this \verb=&= may be inserted only
+% ^^A    if this is not the first column. This process is controlled
+% ^^A    by \verb=\if at firstamp= in the macro \verb=\addamp=.
 %    \begin{macrocode}
-  \@acolampacol \or
+ %   \@addamp \@acol \or
 %    \end{macrocode}
-%    Class $3$ requires no actions because all things necessary have
-%    been done by the preamble \textsf{token} \texttt{>}.
+% ^^A    Class $2$ is treated like class $0$ because \verb=<{...}= can only
+% ^^A    follow after class $0$.
 %    \begin{macrocode}
-  \or
+ %   \@acolampacol \or
 %    \end{macrocode}
-%    Class $4$ means that we are at the beginning of the preamble.
-%    Therefore we start the preamble with \verb=\hskip\col at sep= and
-%    then call \verb=\@firstampfalse=. This makes sure that a later
-%    \verb=\@addamp= inserts the character
-%    \verb=&= into the preamble.
+% ^^A    Class $3$ requires no actions because all things necessary have
+% ^^A    been done by the preamble \textsf{token} \texttt{>}.
 %    \begin{macrocode}
-  \@acol \@firstampfalse \or
+ %   \or
 %    \end{macrocode}
-%    For class $5$ \textsf{tokens} only the character \verb=&= is inserted
-%    as a column separator. Therefore we call \verb=\@addamp=.
+% ^^A    Class $4$ means that we are at the beginning of the preamble.
+% ^^A    Therefore we start the preamble with \verb=\hskip\col at sep= and
+% ^^A    then call \verb=\@firstampfalse=. This makes sure that a later
+% ^^A    \verb=\@addamp= inserts the character
+% ^^A    \verb=&= into the preamble.
 %    \begin{macrocode}
-  \@addamp
+ %   \@acol \@firstampfalse \or
 %    \end{macrocode}
-%    Other cases are impossible. For an example
-%    $\verb=\@lastchclass= = 6$---as it might appear in a
-%    preamble of the form \verb=...!p...=---\texttt{p} would have
-%    been taken as an  argument of \texttt{!}\ by \verb=\@testpach=.
+% ^^A    For class $5$ \textsf{tokens} only the character \verb=&= is inserted
+% ^^A    as a column separator. Therefore we call \verb=\@addamp=.
 %    \begin{macrocode}
-  \fi}
+ %   \@addamp
 %    \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\@classz}
-%    If the character class of the last \textsf{token} is $0$ we have
-%    \texttt{c}, \texttt{l}, \texttt{r} or an argument of \texttt{m},
-%    \texttt{b} or\ \texttt{p}. In the first three cases the preamble
-%    must be extended the same way as if we had class $10$. The
-%    remaining two cases do not require any action because the space
-%    needed was generated by the last \textsf{token} (i.e.\
-%    \texttt{m}, \texttt{b} or \texttt{p}). Since \verb=\@lastchclass= has
-%    the value $10$ at this point nothing happens when \verb=\@classx= is
-%    called. So the macro \verb=\@chlassz= may start like this:
+% ^^A    Other cases are impossible. For an example
+% ^^A    $\verb=\@lastchclass= = 6$---as it might appear in a
+% ^^A    preamble of the form \verb=...!p...=---\texttt{p} would have
+% ^^A    been taken as an  argument of \texttt{!}\ by \verb=\@testpach=.
 %    \begin{macrocode}
-\def\@classz{\@classx
+ %   \fi}
 %    \end{macrocode}
-%    According to the definition of \verb=\insert at column= we must store
-%    the number of the \textsf{token} register in which a preceding
-%    \verb=>{..}= might have stored its argument into
-%    \verb=\@tempcnta=.
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A \begin{macro}{\@classz}
+% ^^A    If the character class of the last \textsf{token} is $0$ we have
+% ^^A    \texttt{c}, \texttt{l}, \texttt{r} or an argument of \texttt{m},
+% ^^A    \texttt{b} or\ \texttt{p}. In the first three cases the preamble
+% ^^A    must be extended the same way as if we had class $10$. The
+% ^^A    remaining two cases do not require any action because the space
+% ^^A    needed was generated by the last \textsf{token} (i.e.\
+% ^^A    \texttt{m}, \texttt{b} or \texttt{p}). Since \verb=\@lastchclass= has
+% ^^A    the value $10$ at this point nothing happens when \verb=\@classx= is
+% ^^A    called. So the macro \verb=\@chlassz= may start like this:
 %    \begin{macrocode}
-   \@tempcnta \count@
+ % \def\@classz{\@classx
 %    \end{macrocode}
-%    To have $\verb=\count@= = \verb=\@tmpcnta= + 1$ we prepare
-%    the next \textsf{token} register.
+% ^^A    According to the definition of \verb=\insert at column= we must store
+% ^^A    the number of the \textsf{token} register in which a preceding
+% ^^A    \verb=>{..}= might have stored its argument into
+% ^^A    \verb=\@tempcnta=.
 %    \begin{macrocode}
-   \prepnext at tok
+ %    \@tempcnta \count@
 %    \end{macrocode}
-%    Now the preamble must be extended with the column whose format
-%    can be determined by \verb=\@chnum=.
+% ^^A    To have $\verb=\count@= = \verb=\@tmpcnta= + 1$ we prepare
+% ^^A    the next \textsf{token} register.
 %    \begin{macrocode}
-   \@addtopreamble{\ifcase \@chnum
+ %    \prepnext at tok
 %    \end{macrocode}
-%    If \verb=\@chnum= has the value $0$ a centered column has to be
-%    generated.
-%    So we begin with stretchable space.
+% ^^A    Now the preamble must be extended with the column whose format
+% ^^A    can be determined by \verb=\@chnum=.
 %    \begin{macrocode}
-      \hfil
+ %    \@addtopreamble{\ifcase \@chnum
 %    \end{macrocode}
-%    The command \verb=\d at llarbegin= follows expanding into \verb=\begingroup=
-%    (in the \textsf{tabular}--environment) or into \verb=$=.  Doing this
-%    (provided an appropriate setting of \verb=\d at llarbegin=) we achieve
-%    that the contents of the columns of an \textsf{array}--environment
-%    are set in math mode while those of a \textsf{tabular}--environment
-%    are set in LR mode.
+% ^^A    If \verb=\@chnum= has the value $0$ a centered column has to be
+% ^^A    generated.
+% ^^A    So we begin with stretchable space.
 %    \begin{macrocode}
-      \d at llarbegin
+ %       \hfil
 %    \end{macrocode}
-%    Now we insert the contents of the two \textsf{token} registers
-%    and the symbol
-%    for the column entry (i.e.\ \verb=#= or
-%    more precise \verb=\@sharp=) using \verb=\insert at column=.
+% ^^A    The command \verb=\d at llarbegin= follows expanding into \verb=\begingroup=
+% ^^A    (in the \textsf{tabular}--environment) or into \verb=$=.  Doing this
+% ^^A    (provided an appropriate setting of \verb=\d at llarbegin=) we achieve
+% ^^A    that the contents of the columns of an \textsf{array}--environment
+% ^^A    are set in math mode while those of a \textsf{tabular}--environment
+% ^^A    are set in LR mode.
 %    \begin{macrocode}
-      \insert at column
+ %       \d at llarbegin
 %    \end{macrocode}
-%    We end this case with \verb=\d at llarend= and \verb=\hfil= where \verb=\d at llarend=
-%    again is either \verb=$= or \verb=\endgroup=.
+% ^^A    Now we insert the contents of the two \textsf{token} registers
+% ^^A    and the symbol
+% ^^A    for the column entry (i.e.\ \verb=#= or
+% ^^A    more precise \verb=\@sharp=) using \verb=\insert at column=.
 %    \begin{macrocode}
-      \d at llarend \hfil \or
+ %       \insert at column
 %    \end{macrocode}
-%    The templates for \texttt{l} and \texttt{r} (i.e.\ \verb=\@chnum= $1$
-%    or $2$) are generated the same way. Since one  \verb=\hfil= is
-%    missing the text is moved to the relevant side.
-%    The \verb=\kern\z@= is needed in case of an empty column
-%    entry. Otherwise
-%    the \verb=\unskip= in \verb=\insert at column= removes the
-%    \verb=\hfil=. Changed to \verb=\hskip1sp= so that it interacts better with
-%    \verb=\@bsphack=.
+% ^^A    We end this case with \verb=\d at llarend= and \verb=\hfil= where \verb=\d at llarend=
+% ^^A    again is either \verb=$= or \verb=\endgroup=.
 %    \begin{macrocode}
-      \hskip1sp\d at llarbegin \insert at column \d at llarend \hfil \or
-      \hfil\hskip1sp\d at llarbegin \insert at column \d at llarend \or
+ %       \d at llarend \hfil \or
 %    \end{macrocode}
-%    The templates for \texttt{p}, \texttt{m} and \texttt{b} mainly
-%    consist of a \textsf{box}. In case of \texttt{m} it is generated
-%    by \verb=\vcenter=.  This command is allowed only in math
-%    mode. Therefore we start with a~\verb=$=.
+% ^^A    The templates for \texttt{l} and \texttt{r} (i.e.\ \verb=\@chnum= $1$
+% ^^A    or $2$) are generated the same way. Since one  \verb=\hfil= is
+% ^^A    missing the text is moved to the relevant side.
+% ^^A    The \verb=\kern\z@= is needed in case of an empty column
+% ^^A    entry. Otherwise
+% ^^A    the \verb=\unskip= in \verb=\insert at column= removes the
+% ^^A    \verb=\hfil=. Changed to \verb=\hskip1sp= so that it interacts better with
+% ^^A    \verb=\@bsphack=.
 %    \begin{macrocode}
-   $\vcenter%$ emacs
+ %       \hskip1sp\d at llarbegin \insert at column \d at llarend \hfil \or
+ %       \hfil\hskip1sp\d at llarbegin \insert at column \d at llarend \or
 %    \end{macrocode}
-%    The part of the templates which is the same in all three cases
-%    (\texttt{p}, \texttt{m} and \texttt{b})
-%    is built by the macros \verb=\@startpbox= and
-%    \verb=\@endpbox=. \verb=\@startpbox= has an argument:
-%    the width of the column which is stored in the current
-%    \textsf{token} (i.e.\ \verb=\@nextchar=).
-%    Between these two macros we find the well known
-%    \verb=\insert at column=.
+% ^^A    The templates for \texttt{p}, \texttt{m} and \texttt{b} mainly
+% ^^A    consist of a \textsf{box}. In case of \texttt{m} it is generated
+% ^^A    by \verb=\vcenter=.  This command is allowed only in math
+% ^^A    mode. Therefore we start with a~\verb=$=.
 %    \begin{macrocode}
-   \@startpbox{\@nextchar}\insert at column \@endpbox $\or%$ emacs
+ %    $\vcenter%$ emacs
 %    \end{macrocode}
-%    The templates for \texttt{p} and \texttt{b} are generated in the
-%    same way though we do not need the \verb=$= characters because we use
-%    \verb=\vtop= or \verb=\vbox=.
+% ^^A    The part of the templates which is the same in all three cases
+% ^^A    (\texttt{p}, \texttt{m} and \texttt{b})
+% ^^A    is built by the macros \verb=\@startpbox= and
+% ^^A    \verb=\@endpbox=. \verb=\@startpbox= has an argument:
+% ^^A    the width of the column which is stored in the current
+% ^^A    \textsf{token} (i.e.\ \verb=\@nextchar=).
+% ^^A    Between these two macros we find the well known
+% ^^A    \verb=\insert at column=.
 %    \begin{macrocode}
-   \vtop \@startpbox{\@nextchar}\insert at column \@endpbox \or
-   \vbox \@startpbox{\@nextchar}\insert at column \@endpbox
+ %    \@startpbox{\@nextchar}\insert at column \@endpbox $\or%$ emacs
 %    \end{macrocode}
-%    Other values for \verb=\@chnum= are impossible. Therefore we
-%    end the arguments to \verb=\@addtopreamble= and \verb=\ifcase=.
-%    Before we come to the end of \verb=\@classz= we have to
-%    prepare the next \textsf{token} register.
+% ^^A    The templates for \texttt{p} and \texttt{b} are generated in the
+% ^^A    same way though we do not need the \verb=$= characters because we use
+% ^^A    \verb=\vtop= or \verb=\vbox=.
 %    \begin{macrocode}
-  \fi}\prepnext at tok}
+ %    \vtop \@startpbox{\@nextchar}\insert at column \@endpbox \or
+ %    \vbox \@startpbox{\@nextchar}\insert at column \@endpbox
 %    \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\@classix}
-%    In case of class $9$ (\texttt{>}--\textsf{token}) we first check
-%    if the character class of the last
-%    \textsf{token} was $3$. In this case we have a
-%    user preamble of the form \verb=..>{...}>{...}..= which
-%    is not allowed. We only give an error message and continue.
-%    So the declarations defined by the first  \verb=>{...}=
-%    are ignored.
+% ^^A    Other values for \verb=\@chnum= are impossible. Therefore we
+% ^^A    end the arguments to \verb=\@addtopreamble= and \verb=\ifcase=.
+% ^^A    Before we come to the end of \verb=\@classz= we have to
+% ^^A    prepare the next \textsf{token} register.
 %    \begin{macrocode}
-\def\@classix{\ifnum \@lastchclass = \thr@@
-       \@preamerr \thr@@ \fi
+ %   \fi}\prepnext at tok}
 %    \end{macrocode}
-%    Furthermore, we call up \verb=\@class10= because afterwards always a
-%    new column is started by \texttt{c}, \texttt{l}, \texttt{r},
-%    \texttt{p}, \texttt{m} or \texttt{b}.
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A \begin{macro}{\@classix}
+% ^^A    In case of class $9$ (\texttt{>}--\textsf{token}) we first check
+% ^^A    if the character class of the last
+% ^^A    \textsf{token} was $3$. In this case we have a
+% ^^A    user preamble of the form \verb=..>{...}>{...}..= which
+% ^^A    is not allowed. We only give an error message and continue.
+% ^^A    So the declarations defined by the first  \verb=>{...}=
+% ^^A    are ignored.
 %    \begin{macrocode}
-       \@classx}
+ % \def\@classix{\ifnum \@lastchclass = \thr@@
+ %        \@preamerr \thr@@ \fi
 %    \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\@classviii}
-%    If the current \textsf{token} is a \texttt{<} the last character
-%    class must be $0$. In this case it is not necessary to extend the
-%    preamble. Otherwise we output an error message, set \verb=\@chclass=
-%    to $6$ and call \verb=\@classvi=.  By doing this we achieve that
-%    \texttt{<} is treated like \texttt{!}.
+% ^^A    Furthermore, we call up \verb=\@class10= because afterwards always a
+% ^^A    new column is started by \texttt{c}, \texttt{l}, \texttt{r},
+% ^^A    \texttt{p}, \texttt{m} or \texttt{b}.
 %    \begin{macrocode}
-\def\@classviii{\ifnum \@lastchclass >\z@
-      \@preamerr 4\@chclass 6 \@classvi \fi}
+ %        \@classx}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@arrayrule}
-%    There is only one incompatibility with the original definition:
-%    the definition of \verb=\@arrayrule=. In the original a line without
-%    width\footnote{So the space between \texttt{cc} and \texttt{c|c}
-%    is equal.}  is created by multiple insertions of
-% \verb=\hskip .5\arrayrulewidth=.
-%    We only insert a vertical line into the
-%    preamble.  This is done to prevent problems with \TeX's main
-%    memory when generating tables with many vertical lines in them
-%    (especially in the case of \textsf{floats}).
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A
+% ^^A \begin{macro}{\@classviii}
+% ^^A    If the current \textsf{token} is a \texttt{<} the last character
+% ^^A    class must be $0$. In this case it is not necessary to extend the
+% ^^A    preamble. Otherwise we output an error message, set \verb=\@chclass=
+% ^^A    to $6$ and call \verb=\@classvi=.  By doing this we achieve that
+% ^^A    \texttt{<} is treated like \texttt{!}.
 %    \begin{macrocode}
-\def\@arrayrule{\@addtopreamble \vline}
+ % \def\@classviii{\ifnum \@lastchclass >\z@
+ %       \@preamerr 4\@chclass 6 \@classvi \fi}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@classvii}
-%    As a consequence it follows that in case of class $7$
-%    (\verb=@= \textsf{token})  the preamble need not to be extended.
-%    In the original definition $\verb=\@lastchclass= = 1$
-%    is treated by inserting \verb=\hskip .5\arrayrulewidth=.
-%    We only check if the last \textsf{token} was of class $3$ which is
-%    forbidden.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\@arrayrule}
+% ^^A    There is only one incompatibility with the original definition:
+% ^^A    the definition of \verb=\@arrayrule=. In the original a line without
+% ^^A    width\footnote{So the space between \texttt{cc} and \texttt{c|c}
+% ^^A    is equal.}  is created by multiple insertions of
+% ^^A \verb=\hskip .5\arrayrulewidth=.
+% ^^A    We only insert a vertical line into the
+% ^^A    preamble.  This is done to prevent problems with \TeX's main
+% ^^A    memory when generating tables with many vertical lines in them
+% ^^A    (especially in the case of \textsf{floats}).
 %    \begin{macrocode}
-\def\@classvii{\ifnum \@lastchclass = \thr@@
+ % \def\@arrayrule{\@addtopreamble \vline}
 %    \end{macrocode}
-%    If this is true we output an error message and
-%    ignore the declarations stored
-%    by the last  \verb=>{...}=, because these are overwritten
-%    by the argument of \texttt{@}.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\@classvii}
+% ^^A    As a consequence it follows that in case of class $7$
+% ^^A    (\verb=@= \textsf{token})  the preamble need not to be extended.
+% ^^A    In the original definition $\verb=\@lastchclass= = 1$
+% ^^A    is treated by inserting \verb=\hskip .5\arrayrulewidth=.
+% ^^A    We only check if the last \textsf{token} was of class $3$ which is
+% ^^A    forbidden.
 %    \begin{macrocode}
-   \@preamerr \thr@@ \fi}
+ % \def\@classvii{\ifnum \@lastchclass = \thr@@
 %    \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\@classvi}
-%    If the current \textsf{token} is a regular \texttt{!}\ and the
-%    last class was $0$ or $2$ we extend the preamble with
-%    \verb=\hskip\col at sep=.  If the last \textsf{token} was of class $1$
-%    (for instance \texttt{|}) we extend with \verb=\hskip \doublerulesep=
-%    because the construction \verb=!{...}= has to be treated like
-%    \texttt{|}.
+% ^^A    If this is true we output an error message and
+% ^^A    ignore the declarations stored
+% ^^A    by the last  \verb=>{...}=, because these are overwritten
+% ^^A    by the argument of \texttt{@}.
 %    \begin{macrocode}
-\def\@classvi{\ifcase \@lastchclass
-      \@acol \or
-      \@addtopreamble{\hskip \doublerulesep}\or
-      \@acol \or
+ %    \@preamerr \thr@@ \fi}
 %    \end{macrocode}
-%    Now \verb=\@preamerr...= should follow because a
-%    user preamble of the form \verb=..>{..}!.= is not allowed.
-%    To save memory we call \verb=\@classvii= instead which also
-%    does what we want.
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A \begin{macro}{\@classvi}
+% ^^A    If the current \textsf{token} is a regular \texttt{!}\ and the
+% ^^A    last class was $0$ or $2$ we extend the preamble with
+% ^^A    \verb=\hskip\col at sep=.  If the last \textsf{token} was of class $1$
+% ^^A    (for instance \texttt{|}) we extend with \verb=\hskip \doublerulesep=
+% ^^A    because the construction \verb=!{...}= has to be treated like
+% ^^A    \texttt{|}.
 %    \begin{macrocode}
-      \@classvii
+ % \def\@classvi{\ifcase \@lastchclass
+ %       \@acol \or
+ %       \@addtopreamble{\hskip \doublerulesep}\or
+ %       \@acol \or
 %    \end{macrocode}
-%    If \verb=\@lastchclass= is $4$ or $5$ nothing has to be done.
-%    Class $6$ to $10$ are not possible.
-%    So we finish the macro.
+% ^^A    Now \verb=\@preamerr...= should follow because a
+% ^^A    user preamble of the form \verb=..>{..}!.= is not allowed.
+% ^^A    To save memory we call \verb=\@classvii= instead which also
+% ^^A    does what we want.
 %    \begin{macrocode}
-      \fi}
+ %       \@classvii
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@classii}
-% \begin{macro}{\@classiii}
-%    In the case of character classes $2$ and $3$ (i.e.\ the argument
-%    of \texttt{<} or \texttt{>}) we only have to store the current
-%    \textsf{token} (\verb=\@nextchar=) into the corresponding
-%    \textsf{token} register since the preparation and
-%    insertion of these registers
-%    are done by the macro \verb=\@classz=.
-%    This is equivalent to calling \verb=\save at decl= in the case of
-%    class $3$. To save command identifiers we do this call up
-%     in the macro \verb=\@mkpream=.
-%
-%    Class $2$ exhibits a more complicated situation: the
-%    \textsf{token} registers have already been inserted by
-%    \verb=\@classz=. So the value of \verb=\count@= is too high
-%    by one. Therefore we decrease \verb=\count@= by $1$.
+% ^^A    If \verb=\@lastchclass= is $4$ or $5$ nothing has to be done.
+% ^^A    Class $6$ to $10$ are not possible.
+% ^^A    So we finish the macro.
 %    \begin{macrocode}
-\def\@classii{\advance \count@ \m at ne
+ %       \fi}
 %    \end{macrocode}
-%    Next we store the current \textsf{token} into the correct
-%    \textsf{token} register by calling \verb=\save at decl= and then
-%    increase the value of \verb=\count@= again. At this point we
-%    can save memory once more (at the cost of time) if we use the
-%     macro \verb=\prepnext at tok=.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\@classii}
+% ^^A \begin{macro}{\@classiii}
+% ^^A    In the case of character classes $2$ and $3$ (i.e.\ the argument
+% ^^A    of \texttt{<} or \texttt{>}) we only have to store the current
+% ^^A    \textsf{token} (\verb=\@nextchar=) into the corresponding
+% ^^A    \textsf{token} register since the preparation and
+% ^^A    insertion of these registers
+% ^^A    are done by the macro \verb=\@classz=.
+% ^^A    This is equivalent to calling \verb=\save at decl= in the case of
+% ^^A    class $3$. To save command identifiers we do this call up
+% ^^A     in the macro \verb=\@mkpream=.
+% ^^A
+% ^^A    Class $2$ exhibits a more complicated situation: the
+% ^^A    \textsf{token} registers have already been inserted by
+% ^^A    \verb=\@classz=. So the value of \verb=\count@= is too high
+% ^^A    by one. Therefore we decrease \verb=\count@= by $1$.
 %    \begin{macrocode}
-   \save at decl\prepnext at tok}
+ % \def\@classii{\advance \count@ \m at ne
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macro}{\@classv}
-%    If the current \textsf{token} is of class $5$ then it is an
-%    argument of a \texttt{@} \textsf{token}. It must be stored into a
-%    \textsf{token} register.
+% ^^A    Next we store the current \textsf{token} into the correct
+% ^^A    \textsf{token} register by calling \verb=\save at decl= and then
+% ^^A    increase the value of \verb=\count@= again. At this point we
+% ^^A    can save memory once more (at the cost of time) if we use the
+% ^^A     macro \verb=\prepnext at tok=.
 %    \begin{macrocode}
-\def\@classv{\save at decl
+ %    \save at decl\prepnext at tok}
 %    \end{macrocode}
-%    We extend the preamble with a command which inserts this
-%    \textsf{token} register into the preamble when its construction
-%    is finished. The user expects that this argument is worked out in
-%    math mode if it was used in an
-%    \textsf{array}--environment. Therefore we surround it with
-%    \verb=\d at llar...='s.
+% ^^A \end{macro}
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A \begin{macro}{\@classv}
+% ^^A    If the current \textsf{token} is of class $5$ then it is an
+% ^^A    argument of a \texttt{@} \textsf{token}. It must be stored into a
+% ^^A    \textsf{token} register.
 %    \begin{macrocode}
-   \@addtopreamble{\d at llarbegin\the at toks\the\count@\relax\d at llarend}%
+ % \def\@classv{\save at decl
 %    \end{macrocode}
-%    Finally we must prepare the next \textsf{token} register.
+% ^^A    We extend the preamble with a command which inserts this
+% ^^A    \textsf{token} register into the preamble when its construction
+% ^^A    is finished. The user expects that this argument is worked out in
+% ^^A    math mode if it was used in an
+% ^^A    \textsf{array}--environment. Therefore we surround it with
+% ^^A    \verb=\d at llar...='s.
 %    \begin{macrocode}
-   \prepnext at tok}
+ %    \@addtopreamble{\d at llarbegin\the at toks\the\count@\relax\d at llarend}%
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@classi}
-%    In the case of class $0$ we were able to generate the necessary
-%    space between columns by using the macro \verb=\@classx=.
-%    Analogously the macro \verb=\@classvi= can be used for class $1$.
+% ^^A    Finally we must prepare the next \textsf{token} register.
 %    \begin{macrocode}
-\def\@classi{\@classvi
+ %    \prepnext at tok}
 %    \end{macrocode}
-%    Depending on \verb=\@chnum= a vertical line
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\@classi}
+% ^^A    In the case of class $0$ we were able to generate the necessary
+% ^^A    space between columns by using the macro \verb=\@classx=.
+% ^^A    Analogously the macro \verb=\@classvi= can be used for class $1$.
 %    \begin{macrocode}
-   \ifcase \@chnum \@arrayrule \or
+ % \def\@classi{\@classvi
 %    \end{macrocode}
-%    or (in case of \verb=!{...}=) the current \textsf{token} --- stored
-%    in \verb=\@nextchar= --- has to be inserted into the preamble.
-%    This corresponds to calling \verb=\@classv=.
+% ^^A    Depending on \verb=\@chnum= a vertical line
 %    \begin{macrocode}
-      \@classv \fi}
+ %    \ifcase \@chnum \@arrayrule \or
 %    \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\@startpbox}
-%    In \verb=\@classz=  the macro \verb=\@startpbox= is used.
-%    The width of the \textsf{parbox} is passed as an argument.
-%    \verb=\vcenter=, \verb=\vtop= or \verb=\vbox= are already in the
-%    preamble. So we start with the braces for the wanted box.
+% ^^A    or (in case of \verb=!{...}=) the current \textsf{token} --- stored
+% ^^A    in \verb=\@nextchar= --- has to be inserted into the preamble.
+% ^^A    This corresponds to calling \verb=\@classv=.
 %    \begin{macrocode}
-\def\@startpbox#1{\bgroup
+ %       \@classv \fi}
 %    \end{macrocode}
-%    The argument is the width of the box. This information has to be
-%    assigned to \verb=\hsize=.
-%    Then we assign default values to several parameters used in a
-%    \textsf{parbox}.
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A
+% ^^A \begin{macro}{\@startpbox}
+% ^^A    In \verb=\@classz=  the macro \verb=\@startpbox= is used.
+% ^^A    The width of the \textsf{parbox} is passed as an argument.
+% ^^A    \verb=\vcenter=, \verb=\vtop= or \verb=\vbox= are already in the
+% ^^A    preamble. So we start with the braces for the wanted box.
 %    \begin{macrocode}
-  \setlength\hsize{#1}\@arrayparboxrestore
+ % \def\@startpbox#1{\bgroup
 %    \end{macrocode}
-%    Our main problem is to obtain the same distance between succeeding
-%    lines of the \textsf{parbox}.
-%    We have to remember that the distance between two \textsf{parboxes}
-%    should be defined by \verb=\@arstrut=. That means that it can be
-%    greater than the distance in a \textsf{parbox}.
-%    Therefore it is not enough to set a \verb=\@arstrut= at the
-%    beginning and at the end of the \textsf{parbox}. This would
-%    dimension the distance
-%    between first and second line and the distance between the two
-%    last lines of the \textsf{parbox} wrongly.
-%    To prevent this we set an invisible rule of height
-%    \verb=\@arstrutbox=
-%    at the beginning of the \textsf{parbox}. This has no effect on the
-%    depth of the first line. At the end of the \textsf{parbox} we set
-%    analogously another invisible rule which only affects the depth
-%    of the last line. It is necessary to wait inserting this strut
-%    until the paragraph actually starts to allow for things like
-%    \verb=\parindent= changes via \verb=>{...}=.
+% ^^A    The argument is the width of the box. This information has to be
+% ^^A    assigned to \verb=\hsize=.
+% ^^A    Then we assign default values to several parameters used in a
+% ^^A    \textsf{parbox}.
 %    \begin{macrocode}
-   \everypar{%
-      \vrule \@height \ht\@arstrutbox \@width \z@
-      \everypar{}}%
-   }
+ %   \setlength\hsize{#1}\@arrayparboxrestore
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@endpbox}
-%    If there are any declarations defined by \verb=>{...}=
-%    and \verb=<{...}=
-%    they now follow in the macro \verb=\@classz= --- the contents
-%    of the column in between.
-%    So the macro \verb=\@endpbox= must insert the \textsf{specialstrut}
-%    mentioned earlier and then close the group opened by
-%    \verb=\@startpbox=.
+% ^^A    Our main problem is to obtain the same distance between succeeding
+% ^^A    lines of the \textsf{parbox}.
+% ^^A    We have to remember that the distance between two \textsf{parboxes}
+% ^^A    should be defined by \verb=\@arstrut=. That means that it can be
+% ^^A    greater than the distance in a \textsf{parbox}.
+% ^^A    Therefore it is not enough to set a \verb=\@arstrut= at the
+% ^^A    beginning and at the end of the \textsf{parbox}. This would
+% ^^A    dimension the distance
+% ^^A    between first and second line and the distance between the two
+% ^^A    last lines of the \textsf{parbox} wrongly.
+% ^^A    To prevent this we set an invisible rule of height
+% ^^A    \verb=\@arstrutbox=
+% ^^A    at the beginning of the \textsf{parbox}. This has no effect on the
+% ^^A    depth of the first line. At the end of the \textsf{parbox} we set
+% ^^A    analogously another invisible rule which only affects the depth
+% ^^A    of the last line. It is necessary to wait inserting this strut
+% ^^A    until the paragraph actually starts to allow for things like
+% ^^A    \verb=\parindent= changes via \verb=>{...}=.
 %    \begin{macrocode}
-\def\@endpbox{\@finalstrut\@arstrutbox \egroup\hfil}
+ %    \everypar{%
+ %       \vrule \@height \ht\@arstrutbox \@width \z@
+ %       \everypar{}}%
+ %    }
 %    \end{macrocode}
-% \end{macro}
-%
-%
-% \subsubsection{Building and calling \texttt{\textbackslash halign}}
-%
-% \begin{macro}{\@array}
-%    After we have discussed the macros needed for the evaluation
-%    of the user preamble we can define the macro \verb=\@array=
-%    which uses these macros to create a \verb=\halign=.
-%    It has two arguments. The first one is a position argument
-%    which can be \texttt{t}, \texttt{b} or \texttt{c}; the
-%    second one describes the wanted preamble,
-%    e.g.\ it has the form \verb=|c|c|c|=.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\@endpbox}
+% ^^A    If there are any declarations defined by \verb=>{...}=
+% ^^A    and \verb=<{...}=
+% ^^A    they now follow in the macro \verb=\@classz= --- the contents
+% ^^A    of the column in between.
+% ^^A    So the macro \verb=\@endpbox= must insert the \textsf{specialstrut}
+% ^^A    mentioned earlier and then close the group opened by
+% ^^A    \verb=\@startpbox=.
 %    \begin{macrocode}
-\def\@array[#1]#2{%
+ % \def\@endpbox{\@finalstrut\@arstrutbox \egroup\hfil}
 %    \end{macrocode}
-%    First we define a \textsf{strut} whose size basically corresponds
-%     to a normal \textsf{strut} multiplied by the factor
-%    \verb=\arraystretch=.
-%    This \textsf{strut} is then  inserted into every row and enforces
-%     a minimal distance between two rows.
-%    Nevertheless, when using horizontal lines, large letters
-%    (like accented capital letters) still collide with such lines.
-%    Therefore at first we add to the height of a normal \textsf{strut}
-%    the value of the parameter \verb=\extrarowheight=.
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A \subsubsection{Building and calling \texttt{\textbackslash halign}}
+% ^^A
+% ^^A \begin{macro}{\@array}
+% ^^A    After we have discussed the macros needed for the evaluation
+% ^^A    of the user preamble we can define the macro \verb=\@array=
+% ^^A    which uses these macros to create a \verb=\halign=.
+% ^^A    It has two arguments. The first one is a position argument
+% ^^A    which can be \texttt{t}, \texttt{b} or \texttt{c}; the
+% ^^A    second one describes the wanted preamble,
+% ^^A    e.g.\ it has the form \verb=|c|c|c|=.
 %    \begin{macrocode}
-  \@tempdima \ht \strutbox
-  \advance \@tempdima by\extrarowheight
-  \setbox \@arstrutbox \hbox{\vrule
-             \@height \arraystretch \@tempdima
-             \@depth \arraystretch \dp \strutbox
-             \@width \z@}%
+ % \def\@array[#1]#2{%
 %    \end{macrocode}
-%    Then we open a group, in which the user preamble is evaluated by
-%    the macro \verb=\@mkpream=. As we know this must happen locally.
-%    This macro creates a preamble for a \verb=\halign= and saves
-%    its result globally in the control sequence \verb=\@preamble=.
+% ^^A    First we define a \textsf{strut} whose size basically corresponds
+% ^^A     to a normal \textsf{strut} multiplied by the factor
+% ^^A    \verb=\arraystretch=.
+% ^^A    This \textsf{strut} is then  inserted into every row and enforces
+% ^^A     a minimal distance between two rows.
+% ^^A    Nevertheless, when using horizontal lines, large letters
+% ^^A    (like accented capital letters) still collide with such lines.
+% ^^A    Therefore at first we add to the height of a normal \textsf{strut}
+% ^^A    the value of the parameter \verb=\extrarowheight=.
 %    \begin{macrocode}
-  \begingroup
-  \@mkpream{#2}%
+ %   \@tempdima \ht \strutbox
+ %   \advance \@tempdima by\extrarowheight
+ %   \setbox \@arstrutbox \hbox{\vrule
+ %              \@height \arraystretch \@tempdima
+ %              \@depth \arraystretch \dp \strutbox
+ %              \@width \z@}%
 %    \end{macrocode}
-%    We again redefine \verb=\@preamble= so that a call up of \verb=\@preamble=
-%    now starts the \verb=\halign=. Thus also the arguments of \texttt{>},
-%    \texttt{<}, \texttt{@} and \texttt{!}, saved in the
-%    \textsf{token} registers are inserted into the preamble.  The
-%    \verb=\tabskip= at the beginning and end of the preamble is set to
-%    \textsf{0pt} (in the beginning by the use of \verb=\ialign=). Also the
-%    command \verb=\@arstrut= is build in, which inserts the
-%    \verb=\@arstrutbox=, defined above. Of course, the opening brace after
-%    \verb=\ialign= has to be implicit as it will be closed in \verb=\endarray=
-%    or another macro.
-%
-%    The \verb=\noexpand= in front of \verb=\ialign= does no harm in standard \LaTeX{}
-%    and was added since some experimental support for using text glyphs in math
-%    redefines \verb=\halign= with the result that is becomes expandable with
-%    disastrous results in cases like this.
-%    In the kernel definition for this macro the problem does
-%    not surface because there \verb=\protect= is set (which is not necessary in this
-%    implementation as there is no arbitrary user input that can get expanded) and
-%    the experimental code made the redefinition robust. Whether this is the right
-%    approach is open to question; consider the \verb=\noexpand= a courtesy to allow an
-%    unsupported redefinition of a \TeX{} primitive for the moment (as people rely
-%    on that experimental code).
+% ^^A    Then we open a group, in which the user preamble is evaluated by
+% ^^A    the macro \verb=\@mkpream=. As we know this must happen locally.
+% ^^A    This macro creates a preamble for a \verb=\halign= and saves
+% ^^A    its result globally in the control sequence \verb=\@preamble=.
 %    \begin{macrocode}
-  \xdef\@preamble{\noexpand \ialign \@halignto
-                  \bgroup \@arstrut \@preamble
-                          \tabskip \z@ \cr}%
+ %   \begingroup
+ %   \@mkpream{#2}%
 %    \end{macrocode}
-%    What we have not explained yet is the macro \verb=\@halignto=
-%    that was just used. Depending on its replacement text the
-%    \verb=\halign= becomes a \verb=\halign= \texttt{to} \meta{dimen}.
-%    Now we close the group again. Thus
-%    \verb=\@startpbox= and \verb=\@endpbox= as well as all
-%    \textsf{token} registers get their former meaning back.
+% ^^A    We again redefine \verb=\@preamble= so that a call up of \verb=\@preamble=
+% ^^A    now starts the \verb=\halign=. Thus also the arguments of \texttt{>},
+% ^^A    \texttt{<}, \texttt{@} and \texttt{!}, saved in the
+% ^^A    \textsf{token} registers are inserted into the preamble.  The
+% ^^A    \verb=\tabskip= at the beginning and end of the preamble is set to
+% ^^A    \textsf{0pt} (in the beginning by the use of \verb=\ialign=). Also the
+% ^^A    command \verb=\@arstrut= is build in, which inserts the
+% ^^A    \verb=\@arstrutbox=, defined above. Of course, the opening brace after
+% ^^A    \verb=\ialign= has to be implicit as it will be closed in \verb=\endarray=
+% ^^A    or another macro.
+% ^^A
+% ^^A    The \verb=\noexpand= in front of \verb=\ialign= does no harm in standard \LaTeX{}
+% ^^A    and was added since some experimental support for using text glyphs in math
+% ^^A    redefines \verb=\halign= with the result that is becomes expandable with
+% ^^A    disastrous results in cases like this.
+% ^^A    In the kernel definition for this macro the problem does
+% ^^A    not surface because there \verb=\protect= is set (which is not necessary in this
+% ^^A    implementation as there is no arbitrary user input that can get expanded) and
+% ^^A    the experimental code made the redefinition robust. Whether this is the right
+% ^^A    approach is open to question; consider the \verb=\noexpand= a courtesy to allow an
+% ^^A    unsupported redefinition of a \TeX{} primitive for the moment (as people rely
+% ^^A    on that experimental code).
 %    \begin{macrocode}
-  \endgroup
+ %   \xdef\@preamble{\noexpand \ialign \@halignto
+ %                   \bgroup \@arstrut \@preamble
+ %                           \tabskip \z@ \cr}%
 %    \end{macrocode}
-%     To support the \texttt{delarray.sty} package  we include a hook
-%     into this part of the code which is a no-op in the main package.
+% ^^A    What we have not explained yet is the macro \verb=\@halignto=
+% ^^A    that was just used. Depending on its replacement text the
+% ^^A    \verb=\halign= becomes a \verb=\halign= \texttt{to} \meta{dimen}.
+% ^^A    Now we close the group again. Thus
+% ^^A    \verb=\@startpbox= and \verb=\@endpbox= as well as all
+% ^^A    \textsf{token} registers get their former meaning back.
 %    \begin{macrocode}
-  \@arrayleft
+ %   \endgroup
 %    \end{macrocode}
-%    Now we decide depending on the position argument in which
-%    \textsf{box} the \verb=\halign= is to be put. (\verb=\vcenter= may be used
-%    because we are in math mode.)
+% ^^A     To support the \texttt{delarray.sty} package  we include a hook
+% ^^A     into this part of the code which is a no-op in the main package.
 %    \begin{macrocode}
-  \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi
+ %   \@arrayleft
 %    \end{macrocode}
-%    Now another implicit opening brace appears; then definitions
-%    which shall stay local follow. While constructing the
-%    \verb=\@preamble= in \verb=\@mkpream= the \verb=#= sign must be
-%    hidden in the macro \verb=\@sharp= which is \verb=\let= to
-%    \verb=\relax= at that moment (see definition of \verb=\@mkpream=
-%    on page~\pageref{@mkpream}).
-%    All these now get their actual meaning.
+% ^^A    Now we decide depending on the position argument in which
+% ^^A    \textsf{box} the \verb=\halign= is to be put. (\verb=\vcenter= may be used
+% ^^A    because we are in math mode.)
 %    \begin{macrocode}
-  \bgroup
-  \let \@sharp ##\let \protect \relax
+ %   \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi
 %    \end{macrocode}
-%    With the above defined \textsf{struts} we fix down the distance
-%    between rows by setting \verb=\lineskip= and \verb=\baselineskip=
-%    to \textsf{0pt}. Since there have to be set \verb=$='s
-%    around every column in the \textsf{array}--environment
-%     the parameter \verb=\mathsurround= should
-%    also be set to \textsf{0pt}. This prevents additional space between
-%    the rows. The
-%    \PlainTeX--macro \verb=\m at th= does this.
+% ^^A    Now another implicit opening brace appears; then definitions
+% ^^A    which shall stay local follow. While constructing the
+% ^^A    \verb=\@preamble= in \verb=\@mkpream= the \verb=#= sign must be
+% ^^A    hidden in the macro \verb=\@sharp= which is \verb=\let= to
+% ^^A    \verb=\relax= at that moment (see definition of \verb=\@mkpream=
+% ^^A    on page~\pageref{@mkpream}).
+% ^^A    All these now get their actual meaning.
 %    \begin{macrocode}
-  \lineskip \z@
-  \baselineskip \z@
-  \m at th
+ %   \bgroup
+ %   \let \@sharp ##\let \protect \relax
 %    \end{macrocode}
-%    Beside, we have to assign a special meaning (which we still have
-%    to specify) to the line separator \verb=\\=. We also have to
-%    redefine the command \verb=\par= in such a way that empty lines in
-%    \verb=\halign= cannot do any damage. We succeed in doing  so
-%    by choosing something that will disappear when expanding.
-%    After that we only have to call up \verb=\@preamble= to
-%    start the wanted \verb=\halign=.
+% ^^A    With the above defined \textsf{struts} we fix down the distance
+% ^^A    between rows by setting \verb=\lineskip= and \verb=\baselineskip=
+% ^^A    to \textsf{0pt}. Since there have to be set \verb=$='s
+% ^^A    around every column in the \textsf{array}--environment
+% ^^A     the parameter \verb=\mathsurround= should
+% ^^A    also be set to \textsf{0pt}. This prevents additional space between
+% ^^A    the rows. The
+% ^^A    \PlainTeX--macro \verb=\m at th= does this.
 %    \begin{macrocode}
-  \let\\\@arraycr \let\tabularnewline\\\let\par\@empty \@preamble}
+ %   \lineskip \z@
+ %   \baselineskip \z@
+ %   \m at th
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\arraybackslash}
-% Restore \verb=\\= for use in array and tabular environment (after
-% \verb=\raggedright= etc.).
+% ^^A    Beside, we have to assign a special meaning (which we still have
+% ^^A    to specify) to the line separator \verb=\\=. We also have to
+% ^^A    redefine the command \verb=\par= in such a way that empty lines in
+% ^^A    \verb=\halign= cannot do any damage. We succeed in doing  so
+% ^^A    by choosing something that will disappear when expanding.
+% ^^A    After that we only have to call up \verb=\@preamble= to
+% ^^A    start the wanted \verb=\halign=.
 %    \begin{macrocode}
-\def\arraybackslash{\let\\\tabularnewline}
+ %   \let\\\@arraycr \let\tabularnewline\\\let\par\@empty \@preamble}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\extrarowheight}
-%    The \textsf{dimen} parameter used above also needs to be
-%    allocated.  As a default value we use \textsf{0pt}, to ensure
-%    compatibility with standard \LaTeX.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\arraybackslash}
+% ^^A Restore \verb=\\= for use in array and tabular environment (after
+% ^^A \verb=\raggedright= etc.).
 %    \begin{macrocode}
-\newdimen \extrarowheight
-\extrarowheight=0pt
+ % \def\arraybackslash{\let\\\tabularnewline}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@arstrut}
-%    Now the insertion of \verb=\@arstrutbox= through \verb=\@arstut=
-%    is easy since we know exactly in which mode \TeX\ is while working
-%    on the \verb=\halign= preamble.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\extrarowheight}
+% ^^A    The \textsf{dimen} parameter used above also needs to be
+% ^^A    allocated.  As a default value we use \textsf{0pt}, to ensure
+% ^^A    compatibility with standard \LaTeX.
 %    \begin{macrocode}
-\def\@arstrut{\unhcopy\@arstrutbox}
+ % \newdimen \extrarowheight
+ % \extrarowheight=0pt
 %    \end{macrocode}
-% \end{macro}
-%
-%
-% \subsubsection{The line separator \texttt{\textbackslash\textbackslash}}
-%
-% \begin{macro}{\@arraycr}
-%    In the macro \verb=\@array= the line separator \verb=\\= is
-%    \verb=\let= to the command \verb=\@arraycr=.
-%    Its definition starts with a special brace which I have directly
-%    copied from the original definition. It is
-%    necessary, because the \verb=\futurlet= in \verb=\@ifnextchar=
-%    might
-%    expand a  following \verb=&= \textsf{token} in a construction like
-%    \verb=\\ &=. This would otherwise end the alignment template at a
-%    wrong time. On the other hand we have to be careful to avoid
-%    producing a real group, i.e.\ \verb={}=, because the command will also
-%    be used for the array environment, i.e.\ in math mode. In that
-%    case an extra \verb={}= would produce an ord atom which could mess up
-%    the spacing. For this reason we use a combination that does not
-%    really produce a group at all but modifies the master counter so
-%    that a \verb=&= will not be considered belonging to the current
-%    \verb=\halign= while we are looking for a \verb=*= or \verb=[=.
-%    For further information see
-%    \cite[Appendix D]{bk:knuth}.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\@arstrut}
+% ^^A    Now the insertion of \verb=\@arstrutbox= through \verb=\@arstut=
+% ^^A    is easy since we know exactly in which mode \TeX\ is while working
+% ^^A    on the \verb=\halign= preamble.
 %    \begin{macrocode}
-\def\@arraycr{\relax\iffalse{\fi\ifnum 0=`}\fi
+ % \def\@arstrut{\unhcopy\@arstrutbox}
 %    \end{macrocode}
-%    Then we test whether the user is using the star form and ignore
-%    a possible star (I also disagree with this procedure, because a
-%    star does not make any sense here).
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A \subsubsection{The line separator \texttt{\textbackslash\textbackslash}}
+% ^^A
+% ^^A \begin{macro}{\@arraycr}
+% ^^A    In the macro \verb=\@array= the line separator \verb=\\= is
+% ^^A    \verb=\let= to the command \verb=\@arraycr=.
+% ^^A    Its definition starts with a special brace which I have directly
+% ^^A    copied from the original definition. It is
+% ^^A    necessary, because the \verb=\futurlet= in \verb=\@ifnextchar=
+% ^^A    might
+% ^^A    expand a  following \verb=&= \textsf{token} in a construction like
+% ^^A    \verb=\\ &=. This would otherwise end the alignment template at a
+% ^^A    wrong time. On the other hand we have to be careful to avoid
+% ^^A    producing a real group, i.e.\ \verb={}=, because the command will also
+% ^^A    be used for the array environment, i.e.\ in math mode. In that
+% ^^A    case an extra \verb={}= would produce an ord atom which could mess up
+% ^^A    the spacing. For this reason we use a combination that does not
+% ^^A    really produce a group at all but modifies the master counter so
+% ^^A    that a \verb=&= will not be considered belonging to the current
+% ^^A    \verb=\halign= while we are looking for a \verb=*= or \verb=[=.
+% ^^A    For further information see
+% ^^A    \cite[Appendix D]{bk:knuth}.
 %    \begin{macrocode}
-  \@ifstar \@xarraycr \@xarraycr}
+ % \def\@arraycr{\relax\iffalse{\fi\ifnum 0=`}\fi
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@xarraycr}
-%    In the command \verb=\@xarraycr= we test if an optional argument
-%    exists.
+% ^^A    Then we test whether the user is using the star form and ignore
+% ^^A    a possible star (I also disagree with this procedure, because a
+% ^^A    star does not make any sense here).
 %    \begin{macrocode}
-\def\@xarraycr{\@ifnextchar [%
+ %   \@ifstar \@xarraycr \@xarraycr}
 %    \end{macrocode}
-%    If it does, we branch out into the macro \verb=\@argarraycr= if
-%    not we close the special brace (mentioned above) and end the row
-%    of the \verb=\halign= with a \verb=\cr=.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\@xarraycr}
+% ^^A    In the command \verb=\@xarraycr= we test if an optional argument
+% ^^A    exists.
 %    \begin{macrocode}
-  \@argarraycr {\ifnum 0=`{}\fi\cr}}
+ % \def\@xarraycr{\@ifnextchar [%
 %    \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\@argarraycr}
-%    If additional space is requested by the user this case is treated
-%    in the macro \verb=\@argarraycr=. First we close the special brace
-%    and then we test if the additional space is positive.
+% ^^A    If it does, we branch out into the macro \verb=\@argarraycr= if
+% ^^A    not we close the special brace (mentioned above) and end the row
+% ^^A    of the \verb=\halign= with a \verb=\cr=.
 %    \begin{macrocode}
-\def\@argarraycr[#1]{\ifnum0=`{}\fi\ifdim #1>\z@
+ %   \@argarraycr {\ifnum 0=`{}\fi\cr}}
 %    \end{macrocode}
-%    If this is the case we create an invisible vertical rule with
-%    depth \verb=\dp\@arstutbox=${}+{}$\meta{wanted\ space}.
-%    Thus we achieve that all vertical lines specified
-%    in the user preamble by a \texttt{|} are now
-%    generally drawn.
-%    Then the row ends with a \verb=\cr=.
-%
-%    If the space is negative we end the row at once with a \verb=\cr=
-%    and move back up with a \verb=\vskip=.
-%
-%    While testing these macros I found out that the
-%    \verb=\endtemplate=
-%    created by \verb=\cr= and \verb=&= is something like an
-%    \verb=\outer= primitive and therefore it should not appear in
-%    incomplete \verb=\if= statements. Thus the following solution was
-%    chosen which hides the \verb=\cr= in other macros when \TeX\
-%    is skipping conditional text.
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A \begin{macro}{\@argarraycr}
+% ^^A    If additional space is requested by the user this case is treated
+% ^^A    in the macro \verb=\@argarraycr=. First we close the special brace
+% ^^A    and then we test if the additional space is positive.
 %    \begin{macrocode}
-  \expandafter\@xargarraycr\else
-  \expandafter\@yargarraycr\fi{#1}}
+ % \def\@argarraycr[#1]{\ifnum0=`{}\fi\ifdim #1>\z@
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@xargarraycr}
-% \begin{macro}{\@yargarraycr}
-%    The following macros were already explained above.
+% ^^A    If this is the case we create an invisible vertical rule with
+% ^^A    depth \verb=\dp\@arstutbox=${}+{}$\meta{wanted\ space}.
+% ^^A    Thus we achieve that all vertical lines specified
+% ^^A    in the user preamble by a \texttt{|} are now
+% ^^A    generally drawn.
+% ^^A    Then the row ends with a \verb=\cr=.
+% ^^A
+% ^^A    If the space is negative we end the row at once with a \verb=\cr=
+% ^^A    and move back up with a \verb=\vskip=.
+% ^^A
+% ^^A    While testing these macros I found out that the
+% ^^A    \verb=\endtemplate=
+% ^^A    created by \verb=\cr= and \verb=&= is something like an
+% ^^A    \verb=\outer= primitive and therefore it should not appear in
+% ^^A    incomplete \verb=\if= statements. Thus the following solution was
+% ^^A    chosen which hides the \verb=\cr= in other macros when \TeX\
+% ^^A    is skipping conditional text.
 %    \begin{macrocode}
-\def\@xargarraycr#1{\unskip
-  \@tempdima #1\advance\@tempdima \dp\@arstrutbox
-  \vrule \@depth\@tempdima \@width\z@ \cr}
-\def\@yargarraycr#1{\cr\noalign{\vskip #1}}
+ %   \expandafter\@xargarraycr\else
+ %   \expandafter\@yargarraycr\fi{#1}}
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-%
-% \subsubsection{Spanning several columns}
-%
-% \begin{macro}{\multicolumn}
-%    If several columns should be held together with a special format
-%    the command \verb=\multicolumn= must be used. It has three
-%    arguments: the number of columns to be covered; the format for
-%    the result column and the actual column entry.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\@xargarraycr}
+% ^^A \begin{macro}{\@yargarraycr}
+% ^^A    The following macros were already explained above.
 %    \begin{macrocode}
-\long\def\multicolumn#1#2#3{%
+ % \def\@xargarraycr#1{\unskip
+ %   \@tempdima #1\advance\@tempdima \dp\@arstrutbox
+ %   \vrule \@depth\@tempdima \@width\z@ \cr}
+ % \def\@yargarraycr#1{\cr\noalign{\vskip #1}}
 %    \end{macrocode}
-%    First we combine the given number of columns into a single one;
-%    then we start a new block so that the following definition is kept
-%    local.
+% ^^A \end{macro}
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A
+% ^^A
+% ^^A \subsubsection{Spanning several columns}
+% ^^A
+% ^^A \begin{macro}{\multicolumn}
+% ^^A    If several columns should be held together with a special format
+% ^^A    the command \verb=\multicolumn= must be used. It has three
+% ^^A    arguments: the number of columns to be covered; the format for
+% ^^A    the result column and the actual column entry.
 %    \begin{macrocode}
-   \multispan{#1}\begingroup
+ % \long\def\multicolumn#1#2#3{%
 %    \end{macrocode}
-%    Since a \verb=\multicolumn= should only describe the format of a
-%    result column, we redefine \verb=\@addamp= in such a way that one gets
-%    an error message if one uses more than one \texttt{c},
-%    \texttt{l}, \texttt{r}, \texttt{p}, \texttt{m} or \texttt{b} in
-%    the second argument. One should consider that this definition is
-%    local to the build-up of the preamble; an \textsf{array}-- or
-%    \textsf{tabular}--environment in the third argument of the
-%    \verb=\multicolumn= is therefore worked through correctly as well.
+% ^^A    First we combine the given number of columns into a single one;
+% ^^A    then we start a new block so that the following definition is kept
+% ^^A    local.
 %    \begin{macrocode}
-   \def\@addamp{\if at firstamp \@firstampfalse \else
-                \@preamerr 5\fi}%
+ %    \multispan{#1}\begingroup
 %    \end{macrocode}
-%    Then we evaluate the second argument with the help of
-%    \verb=\@mkpream=.
-%    Now we still have to insert the contents of the \textsf{token}
-%    register into the \verb=\@preamble=, i.e.\ we have to say
-%    \verb=\xdef\@preamble{\@preamble}=. This is achieved shorter by
-%    writing:
+% ^^A    Since a \verb=\multicolumn= should only describe the format of a
+% ^^A    result column, we redefine \verb=\@addamp= in such a way that one gets
+% ^^A    an error message if one uses more than one \texttt{c},
+% ^^A    \texttt{l}, \texttt{r}, \texttt{p}, \texttt{m} or \texttt{b} in
+% ^^A    the second argument. One should consider that this definition is
+% ^^A    local to the build-up of the preamble; an \textsf{array}-- or
+% ^^A    \textsf{tabular}--environment in the third argument of the
+% ^^A    \verb=\multicolumn= is therefore worked through correctly as well.
 %    \begin{macrocode}
-   \@mkpream{#2}\@addtopreamble\@empty
+ %    \def\@addamp{\if at firstamp \@firstampfalse \else
+ %                 \@preamerr 5\fi}%
 %    \end{macrocode}
-%    After the \verb=\@preamble= is created we forget all local
-%    definitions and occupations of the \textsf{token} registers.
+% ^^A    Then we evaluate the second argument with the help of
+% ^^A    \verb=\@mkpream=.
+% ^^A    Now we still have to insert the contents of the \textsf{token}
+% ^^A    register into the \verb=\@preamble=, i.e.\ we have to say
+% ^^A    \verb=\xdef\@preamble{\@preamble}=. This is achieved shorter by
+% ^^A    writing:
+%    \begin{macrocode}
+ %    \@mkpream{#2}\@addtopreamble\@empty
+%    \end{macrocode}
+% ^^A    After the \verb=\@preamble= is created we forget all local
+% ^^A    definitions and occupations of the \textsf{token} registers.
 %    \begin{macrocode} 
-   \endgroup
+ %    \endgroup
 %    \end{macrocode}
-%    In the special situation of  \verb=\multicolumn= \verb=\@preamble=
-%    is not needed as preamble for a \verb=\halign= but it is directly
-%    inserted into our table. Thus instead of \verb=\sharp=
-%    there has to be the column entry (\verb=#3=) wanted by the user.
+% ^^A    In the special situation of  \verb=\multicolumn= \verb=\@preamble=
+% ^^A    is not needed as preamble for a \verb=\halign= but it is directly
+% ^^A    inserted into our table. Thus instead of \verb=\sharp=
+% ^^A    there has to be the column entry (\verb=#3=) wanted by the user.
 %    \begin{macrocode}
-   \def\@sharp{#3}%
+ %    \def\@sharp{#3}%
 %    \end{macrocode}
-%    Now we can pass the \verb=\@preamble= to \TeX\ . For safety
-%    we start with an \verb=\@arstrut=. This should usually be in the
-%    template for the first column however we do not know if this
-%    template was overwritten by our \verb=\multicolumn=.
-%    We also add a \verb=\null= at the right end to prevent any following
-%    \verb=\unskip= (for example from \verb=\\[..]=) to remove the \verb=\tabcolsep=.
+% ^^A    Now we can pass the \verb=\@preamble= to \TeX\ . For safety
+% ^^A    we start with an \verb=\@arstrut=. This should usually be in the
+% ^^A    template for the first column however we do not know if this
+% ^^A    template was overwritten by our \verb=\multicolumn=.
+% ^^A    We also add a \verb=\null= at the right end to prevent any following
+% ^^A    \verb=\unskip= (for example from \verb=\\[..]=) to remove the \verb=\tabcolsep=.
 %    \begin{macrocode}
-   \@arstrut \@preamble
-   \null
-   \ignorespaces}
+ %    \@arstrut \@preamble
+ %    \null
+ %    \ignorespaces}
 %    \end{macrocode}
-% \end{macro}
-%
-%
-%
-%   \subsubsection{The Environment Definitions}
-%
-% After these preparations we are able to define the environments. They
-% only differ in the initialisations of \verb=\d at llar...=, \verb=\col at sep=
-%  and \verb=\@halignto=.
-%
-% \begin{macro}{\@halignto}
-% \begin{macro}{\d at llarbegin}
-% \begin{macro}{\d at llarend}
-%    \verb=\d at llar= has to be
-%    locally asigned since otherwise nested \textsf{tabular} and \textsf{array}
-%    environments (via \verb=\multicolumn=) are impossible.
-%    For 25 years or so \verb=\@halignto= was set globally (to save space on the
-%    save stack, but that was a mistake: if there is a tabular in the
-%    output routine (e.g., in the running header) then that tabular is 
-%    able overwrite the \verb=\@halignto=
-%    setting of a tabular in the main text resulting in a very weird error.
-%    When the new font selection scheme is in force we have to
-%    we surround all \verb=\halign= entries
-%    with braces. See remarks in TUGboat 10\#2. Actually we are going
-%    to use \verb=\begingroup= and \verb=\endgroup=. However, this is only
-%    necessary when we are in text mode. In math the surrounding
-%    dollar signs will already serve as the necessary extra grouping
-%    level. Therefore we switch the settings of \verb=\d at llarbegin= and
-%    \verb=\d at llarend= between groups and dollar signs.
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A
+% ^^A   \subsubsection{The Environment Definitions}
+% ^^A
+% ^^A After these preparations we are able to define the environments. They
+% ^^A only differ in the initialisations of \verb=\d at llar...=, \verb=\col at sep=
+% ^^A  and \verb=\@halignto=.
+% ^^A
+% ^^A \begin{macro}{\@halignto}
+% ^^A \begin{macro}{\d at llarbegin}
+% ^^A \begin{macro}{\d at llarend}
+% ^^A    \verb=\d at llar= has to be
+% ^^A    locally asigned since otherwise nested \textsf{tabular} and \textsf{array}
+% ^^A    environments (via \verb=\multicolumn=) are impossible.
+% ^^A    For 25 years or so \verb=\@halignto= was set globally (to save space on the
+% ^^A    save stack, but that was a mistake: if there is a tabular in the
+% ^^A    output routine (e.g., in the running header) then that tabular is 
+% ^^A    able overwrite the \verb=\@halignto=
+% ^^A    setting of a tabular in the main text resulting in a very weird error.
+% ^^A    When the new font selection scheme is in force we have to
+% ^^A    we surround all \verb=\halign= entries
+% ^^A    with braces. See remarks in TUGboat 10\#2. Actually we are going
+% ^^A    to use \verb=\begingroup= and \verb=\endgroup=. However, this is only
+% ^^A    necessary when we are in text mode. In math the surrounding
+% ^^A    dollar signs will already serve as the necessary extra grouping
+% ^^A    level. Therefore we switch the settings of \verb=\d at llarbegin= and
+% ^^A    \verb=\d at llarend= between groups and dollar signs.
 %    \begin{macrocode}
-\let\d at llarbegin\begingroup
-\let\d at llarend\endgroup
+ % \let\d at llarbegin\begingroup
+ % \let\d at llarend\endgroup
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \begin{macro}{\array}
-%    Our new definition of \verb=\array= then reads:
+% ^^A \end{macro}
+% ^^A \end{macro}
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A \begin{macro}{\array}
+% ^^A    Our new definition of \verb=\array= then reads:
 %    \begin{macrocode}
-\def\array{\col at sep\arraycolsep
-  \def\d at llarbegin{$}\let\d at llarend\d at llarbegin\def\@halignto{}%$ emacs
+ % \def\array{\col at sep\arraycolsep
+ %   \def\d at llarbegin{$}\let\d at llarend\d at llarbegin\def\@halignto{}%$ emacs
 %    \end{macrocode}
-%    Since there might be an optional argument we call another
-%    macro which is also used by the other environments.
+% ^^A    Since there might be an optional argument we call another
+% ^^A    macro which is also used by the other environments.
 %    \begin{macrocode}
-  \@tabarray}
+ %   \@tabarray}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@tabarray}
-%    This macro tests for a optional bracket and then calls up
-%    \verb=\@array= or \verb=\@array[c]= (as default).
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\@tabarray}
+% ^^A    This macro tests for a optional bracket and then calls up
+% ^^A    \verb=\@array= or \verb=\@array[c]= (as default).
 %    \begin{macrocode}
-\def\@tabarray{\@ifnextchar[{\@array}{\@array[c]}}
+ % \def\@tabarray{\@ifnextchar[{\@array}{\@array[c]}}
 %    \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\tabular}
-% \begin{macro}{\tabular*}
-%    The environments \textsf{tabular} and \textsf{tabular$*$} differ
-%    only in the initialisation of the command \verb=\@halignto=. Therefore
-%    we define
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A \begin{macro}{\tabular}
+% ^^A \begin{macro}{\tabular*}
+% ^^A    The environments \textsf{tabular} and \textsf{tabular$*$} differ
+% ^^A    only in the initialisation of the command \verb=\@halignto=. Therefore
+% ^^A    we define
 %    \begin{macrocode}
-\def\tabular{\def\@halignto{}\@tabular}
+ % \def\tabular{\def\@halignto{}\@tabular}
 %    \end{macrocode}
-%     and analogously for the star form. We evaluate the argument first
-%     using =\setlength= so that users of the \texttt{calc} package can
-%     write code like\\ \verb=\begin{tabular*}{(\columnwidth-1cm)/2}...=
-%     \begin{macrocode}
-\expandafter\def\csname tabular*\endcsname#1{%
-       \setlength\dimen@{#1}%
-       \edef\@halignto{to\the\dimen@}\@tabular}
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@tabular}
-%    The rest of the job is carried out by the \verb=\@tabular= macro:
+% ^^A     and analogously for the star form. We evaluate the argument first
+% ^^A     using =\setlength= so that users of the \texttt{calc} package can
+% ^^A     write code like\\ \verb=\begin{tabular*}{(\columnwidth-1cm)/2}...=
+% ^^A     \begin{macrocode}
+ % \expandafter\def\csname tabular*\endcsname#1{%
+ %        \setlength\dimen@{#1}%
+ %        \edef\@halignto{to\the\dimen@}\@tabular}
+% ^^A    \end{macrocode}
+% ^^A \end{macro}
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\@tabular}
+% ^^A    The rest of the job is carried out by the \verb=\@tabular= macro:
 %    \begin{macrocode}
-\def\@tabular{%
+ % \def\@tabular{%
 %    \end{macrocode}
-%    First of all we have to make sure that we start out in
-%    \textsf{hmode}.  Otherwise we might find our table dangling by
-%    itself on a line.
+% ^^A    First of all we have to make sure that we start out in
+% ^^A    \textsf{hmode}.  Otherwise we might find our table dangling by
+% ^^A    itself on a line.
 %    \begin{macrocode}
-  \leavevmode
+ %   \leavevmode
 %    \end{macrocode}
-%    It should be taken into consideration that the macro \verb=\@array=
-%    must be called in math mode. Therefore we open a \textsf{box},
-%    insert a \verb=$= and then assign the correct values to \verb=\col at sep= and
-%    \verb=\d at llar...=.
+% ^^A    It should be taken into consideration that the macro \verb=\@array=
+% ^^A    must be called in math mode. Therefore we open a \textsf{box},
+% ^^A    insert a \verb=$= and then assign the correct values to \verb=\col at sep= and
+% ^^A    \verb=\d at llar...=.
 %    \begin{macrocode}
-  \hbox \bgroup $\col at sep\tabcolsep \let\d at llarbegin\begingroup% $ emacs
-                                    \let\d at llarend\endgroup
+ %   \hbox \bgroup $\col at sep\tabcolsep \let\d at llarbegin\begingroup% $ emacs
+ %                                     \let\d at llarend\endgroup
 %    \end{macrocode}
-%    Now everything \textsf{tabular} specific is done and we are able to
-%    call the \verb=\@tabarray= macro.
+% ^^A    Now everything \textsf{tabular} specific is done and we are able to
+% ^^A    call the \verb=\@tabarray= macro.
 %    \begin{macrocode}
-  \@tabarray}
+ %   \@tabarray}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\endarray}
-%    When the processing of \textsf{array} is finished we have to
-%    close the \verb=\halign=
-%    and afterwards the surrounding \textsf{box} selected by
-%    \verb=\@array=. To save \textsf{token} space we then redefine
-%    \verb=\@preamble=
-%    because its replacement text isn't longer needed.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\endarray}
+% ^^A    When the processing of \textsf{array} is finished we have to
+% ^^A    close the \verb=\halign=
+% ^^A    and afterwards the surrounding \textsf{box} selected by
+% ^^A    \verb=\@array=. To save \textsf{token} space we then redefine
+% ^^A    \verb=\@preamble=
+% ^^A    because its replacement text isn't longer needed.
 %    \begin{macrocode}
-\def\endarray{\crcr \egroup \egroup \gdef\@preamble{}}
+ % \def\endarray{\crcr \egroup \egroup \gdef\@preamble{}}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\endtabular}
-% \begin{macro}{\endtabular*}
-%    To end a \textsf{tabular} or \textsf{tabular$*$} environment we
-%    call up \verb=\endarray=, close the math mode and then the surrounding
-%    \verb=\hbox=.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\endtabular}
+% ^^A \begin{macro}{\endtabular*}
+% ^^A    To end a \textsf{tabular} or \textsf{tabular$*$} environment we
+% ^^A    call up \verb=\endarray=, close the math mode and then the surrounding
+% ^^A    \verb=\hbox=.
 %    \begin{macrocode}
-\def\endtabular{\endarray $\egroup}%$ emacs
-\expandafter\let\csname endtabular*\endcsname=\endtabular
+ % \def\endtabular{\endarray $\egroup}%$ emacs
+ % \expandafter\let\csname endtabular*\endcsname=\endtabular
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-%   \subsubsection{Last minute definitions}
-%
-%
-% If this file is used as a package file we should \verb=\let= all macros
-% to \verb=\relax= that were used in the original but are no longer
-%  necessary.
+% ^^A \end{macro}
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A
+% ^^A   \subsubsection{Last minute definitions}
+% ^^A
+% ^^A
+% ^^A If this file is used as a package file we should \verb=\let= all macros
+% ^^A to \verb=\relax= that were used in the original but are no longer
+% ^^A  necessary.
 %    \begin{macrocode}
-\let\@ampacol=\relax        \let\@expast=\relax
-\let\@arrayclassiv=\relax   \let\@arrayclassz=\relax
-\let\@tabclassiv=\relax     \let\@tabclassz=\relax
-\let\@arrayacol=\relax      \let\@tabacol=\relax
-\let\@tabularcr=\relax      \let\@@endpbox=\relax
-\let\@argtabularcr=\relax   \let\@xtabularcr=\relax
+ % \let\@ampacol=\relax        \let\@expast=\relax
+ % \let\@arrayclassiv=\relax   \let\@arrayclassz=\relax
+ % \let\@tabclassiv=\relax     \let\@tabclassz=\relax
+ % \let\@arrayacol=\relax      \let\@tabacol=\relax
+ % \let\@tabularcr=\relax      \let\@@endpbox=\relax
+ % \let\@argtabularcr=\relax   \let\@xtabularcr=\relax
 %    \end{macrocode}
-%
-% \begin{macro}{\@preamerr}
-%    We also have to redefine the error routine \verb=\@preamerr= since
-%    new kind of errors are possible.
-%    The code for this macro is not perfect yet;
-%    it still needs too much memory.
+% ^^A
+% ^^A \begin{macro}{\@preamerr}
+% ^^A    We also have to redefine the error routine \verb=\@preamerr= since
+% ^^A    new kind of errors are possible.
+% ^^A    The code for this macro is not perfect yet;
+% ^^A    it still needs too much memory.
 %    \begin{macrocode}
-\def\@preamerr#1{\def\@tempd{{..} at wrong position: }%
-   %\PackageError{array}{%
-   \ClassError{memoir}{% changed in menoir
-   \ifcase #1 Illegal pream-token (\@nextchar): `c' used\or %0
-    Missing arg: token ignored\or                           %1
-    Empty preamble: `l' used\or                             %2
-    >\@tempd token ignored\or                               %3
-    <\@tempd changed to !{..}\or                            %4
-    Only one column-spec. allowed.\fi}\@ehc}                %5
+ % \def\@preamerr#1{\def\@tempd{{..} at wrong position: }%
+ %    %\PackageError{array}{%
+ %    \ClassError{memoir}{% changed in menoir
+ %    \ifcase #1 Illegal pream-token (\@nextchar): `c' used\or %0
+ %     Missing arg: token ignored\or                           %1
+ %     Empty preamble: `l' used\or                             %2
+ %     >\@tempd token ignored\or                               %3
+ %     <\@tempd changed to !{..}\or                            %4
+ %     Only one column-spec. allowed.\fi}\@ehc}                %5
 %    \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \subsubsection
-%   [Defining your own column specifiers]
-%   {Defining your own column specifiers\footnotemark}
-%
-% \footnotetext{The code and the documentation in this section was
-%   written by David. So far only the code from newarray was plugged
-%   into array so that some parts of the documentation still claim
-%   that this is newarray and even worse, some parts of the code are
-%   unnecessarily doubled. This will go away in a future release. For
-%   the moment we thought it would be more important to bring both
-%   packages together.}
-%
-%  \begin{macro}{\newcolumn}
-%    In \texttt{newarray.sty} the macro for specifying new columns was
-%    named \verb"\newcolumn". When the functionality was added to
-%    \texttt{array.sty} the command was renamed \verb"\newcolumntype".
-%    Initially both names were supported, but now (In versions of this
-%    package distributed for \LaTeXe) the old name is not defined.
-%  \end{macro}
-%
-% \begin{macro}{\newcolumntype}
-%  As
-% described above, the \verb"\newcolumntype" macro gives users the chance
-% to define letters, to be used in the same way as the primitive
-% column specifiers, `c' `p' etc.
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A
+% ^^A \subsubsection
+% ^^A   [Defining your own column specifiers]
+% ^^A   {Defining your own column specifiers\footnotemark}
+% ^^A
+% ^^A \footnotetext{The code and the documentation in this section was
+% ^^A   written by David. So far only the code from newarray was plugged
+% ^^A   into array so that some parts of the documentation still claim
+% ^^A   that this is newarray and even worse, some parts of the code are
+% ^^A   unnecessarily doubled. This will go away in a future release. For
+% ^^A   the moment we thought it would be more important to bring both
+% ^^A   packages together.}
+% ^^A
+% ^^A  \begin{macro}{\newcolumn}
+% ^^A    In \texttt{newarray.sty} the macro for specifying new columns was
+% ^^A    named \verb"\newcolumn". When the functionality was added to
+% ^^A    \texttt{array.sty} the command was renamed \verb"\newcolumntype".
+% ^^A    Initially both names were supported, but now (In versions of this
+% ^^A    package distributed for \LaTeXe) the old name is not defined.
+% ^^A  \end{macro}
+% ^^A
+% ^^A \begin{macro}{\newcolumntype}
+% ^^A  As
+% ^^A described above, the \verb"\newcolumntype" macro gives users the chance
+% ^^A to define letters, to be used in the same way as the primitive
+% ^^A column specifiers, `c' `p' etc.
 %    \begin{macrocode}
-\def\newcolumntype#1{%
+ % \def\newcolumntype#1{%
 %    \end{macrocode}
-% \verb"\NC at char" was added in V2.01 so that active characters, like "@" in
-% AMS\LaTeX\ may be used. This trick was stolen from \texttt{array.sty}
-% 2.0h. Note that we need to use the possibly active token,
-% \verb"#1", in several places, as that is the token that actually
-% appears in the preamble argument.
+% ^^A \verb"\NC at char" was added in V2.01 so that active characters, like "@" in
+% ^^A AMS\LaTeX\ may be used. This trick was stolen from \texttt{array.sty}
+% ^^A 2.0h. Note that we need to use the possibly active token,
+% ^^A \verb"#1", in several places, as that is the token that actually
+% ^^A appears in the preamble argument.
 %    \begin{macrocode}
-  \edef\NC at char{\string#1}%
+ %   \edef\NC at char{\string#1}%
 %    \end{macrocode}
-% First we check whether there is already a definition for this column.
-% Unlike \verb"\newcommand" we give a warning rather than an error if it is
-% defined. If it is a new column, add \verb"\NC at do" \meta{column} to
-% the list \verb"\NC at list".
+% ^^A First we check whether there is already a definition for this column.
+% ^^A Unlike \verb"\newcommand" we give a warning rather than an error if it is
+% ^^A defined. If it is a new column, add \verb"\NC at do" \meta{column} to
+% ^^A the list \verb"\NC at list".
 %    \begin{macrocode}
-  \@ifundefined{NC at find@\NC at char}%
-    {\@tfor\next:=<>clrmbp@!|\do{\if\noexpand\next\NC at char
-        %\PackageWarning{array}%
-          \@memwarn{Redefining primitive column \NC at char}\fi}% memoir change
-     \NC at list\expandafter{\the\NC at list\NC at do#1}}%
-   {%\PackageWarning{array}
-      \@memwarn{Column \NC at char\space is already defined}}% memoir change
+ %   \@ifundefined{NC at find@\NC at char}%
+ %     {\@tfor\next:=<>clrmbp@!|\do{\if\noexpand\next\NC at char
+ %         %\PackageWarning{array}%
+ %           \@memwarn{Redefining primitive column \NC at char}\fi}% memoir change
+ %      \NC at list\expandafter{\the\NC at list\NC at do#1}}%
+ %    {%\PackageWarning{array}
+ %       \@memwarn{Column \NC at char\space is already defined}}% memoir change
 %    \end{macrocode}
-% Now we define a macro with an argument delimited by the new column
-% specifier, this is used to find occurrences of this specifier in the
-% user preamble.
+% ^^A Now we define a macro with an argument delimited by the new column
+% ^^A specifier, this is used to find occurrences of this specifier in the
+% ^^A user preamble.
 %    \begin{macrocode}
-  \@namedef{NC at find@\NC at char}##1#1{\NC@{##1}}%
+ %   \@namedef{NC at find@\NC at char}##1#1{\NC@{##1}}%
 %    \end{macrocode}
-% If an optional argument was not given, give a default argument of 0.
+% ^^A If an optional argument was not given, give a default argument of 0.
 %    \begin{macrocode}
-  \@ifnextchar[{\newcol@{\NC at char}}{\newcol@{\NC at char}[0]}}
+ %   \@ifnextchar[{\newcol@{\NC at char}}{\newcol@{\NC at char}[0]}}
 %    \end{macrocode}
-% \end{macro}
-% \begin{macro}{\newcol@}
-% We can now define the macro which does the rewriting,
-% \verb"\@reargdef" takes the same arguments as \verb"\newcommand", but
-% does not check that the command is new. For a column, say `D' with
-% one argument, define a command \verb"\NC at rewrite@D" with one
-% argument, which recursively calls \verb"\NC at find" on the user preamble
-% after replacing the first token or group with the replacement text
-% specified in the \verb"\newcolumntype" command. \verb"\NC at find" will find the
-% next occurrence of `D' as it will be \verb"\let" equal to
-% \verb"\NC at find@D" by \verb"\NC at do".
+% ^^A \end{macro}
+% ^^A \begin{macro}{\newcol@}
+% ^^A We can now define the macro which does the rewriting,
+% ^^A \verb"\@reargdef" takes the same arguments as \verb"\newcommand", but
+% ^^A does not check that the command is new. For a column, say `D' with
+% ^^A one argument, define a command \verb"\NC at rewrite@D" with one
+% ^^A argument, which recursively calls \verb"\NC at find" on the user preamble
+% ^^A after replacing the first token or group with the replacement text
+% ^^A specified in the \verb"\newcolumntype" command. \verb"\NC at find" will find the
+% ^^A next occurrence of `D' as it will be \verb"\let" equal to
+% ^^A \verb"\NC at find@D" by \verb"\NC at do".
 %    \begin{macrocode}
-\def\newcol@#1[#2]#3{\expandafter\@reargdef
-     \csname NC at rewrite@#1\endcsname[#2]{\NC at find#3}}
+ % \def\newcol@#1[#2]#3{\expandafter\@reargdef
+ %      \csname NC at rewrite@#1\endcsname[#2]{\NC at find#3}}
 %    \end{macrocode}
-% \end{macro}
-% \begin{macro}{\NC@}
-% Having found an occurrence of the new column, save the preamble
-% before the column in \verb"\@temptokena", then check to see if we
-% are at the end of the preamble. (A dummy occurrence of the column
-% specifier will be placed at the end of the preamble by \verb"\NC at do".
+% ^^A \end{macro}
+% ^^A \begin{macro}{\NC@}
+% ^^A Having found an occurrence of the new column, save the preamble
+% ^^A before the column in \verb"\@temptokena", then check to see if we
+% ^^A are at the end of the preamble. (A dummy occurrence of the column
+% ^^A specifier will be placed at the end of the preamble by \verb"\NC at do".
 %    \begin{macrocode}
-\def\NC@#1{%
-  \@temptokena\expandafter{\the\@temptokena#1}\futurelet\next\NC at ifend}
+ % \def\NC@#1{%
+ %   \@temptokena\expandafter{\the\@temptokena#1}\futurelet\next\NC at ifend}
 %    \end{macrocode}
-% \end{macro}
-% \begin{macro}{\NC at ifend}
-% We can tell that we are at the end as \verb"\NC at do" will place a \verb"\relax"
-% after the dummy column.
+% ^^A \end{macro}
+% ^^A \begin{macro}{\NC at ifend}
+% ^^A We can tell that we are at the end as \verb"\NC at do" will place a \verb"\relax"
+% ^^A after the dummy column.
 %    \begin{macrocode}
-\def\NC at ifend{%
+ % \def\NC at ifend{%
 %    \end{macrocode}
-% If we are at the end, do nothing. (The whole preamble will now be in
-% \verb"\@temptokena".)
+% ^^A If we are at the end, do nothing. (The whole preamble will now be in
+% ^^A \verb"\@temptokena".)
 %    \begin{macrocode}
-  \ifx\next\relax
+ %   \ifx\next\relax
 %    \end{macrocode}
-% Otherwise set the flag \verb"\if at tempswa", and rewrite the column.
-% \verb"\expandafter" introduced 1n V2.01
+% ^^A Otherwise set the flag \verb"\if at tempswa", and rewrite the column.
+% ^^A \verb"\expandafter" introduced 1n V2.01
 %    \begin{macrocode}
-    \else\@tempswatrue\expandafter\NC at rewrite\fi}
+ %     \else\@tempswatrue\expandafter\NC at rewrite\fi}
 %    \end{macrocode}
-% \end{macro}
-% \begin{macro}{\NC at do}
-% If the user has specified `C' and `L' as new columns, the list of
-% rewrites (in the token register \verb"\NC at list") will look like
-% \verb"\NC at do *" \verb"\NC at do C" \verb"\NC at do L".
-% So we need to define \verb"\NC at do" as a one argument macro which
-% initialises the rewriting of the specified column. Let us assume that
-% `C' is the argument.
+% ^^A \end{macro}
+% ^^A \begin{macro}{\NC at do}
+% ^^A If the user has specified `C' and `L' as new columns, the list of
+% ^^A rewrites (in the token register \verb"\NC at list") will look like
+% ^^A \verb"\NC at do *" \verb"\NC at do C" \verb"\NC at do L".
+% ^^A So we need to define \verb"\NC at do" as a one argument macro which
+% ^^A initialises the rewriting of the specified column. Let us assume that
+% ^^A `C' is the argument.
 %    \begin{macrocode}
-\def\NC at do#1{%
+ % \def\NC at do#1{%
 %    \end{macrocode}
-% First we let \verb"\NC at rewrite" and \verb"\NC at find" be
-% \verb"\NC at rewrite@C" and \verb"\NC at find@C" respectively.
+% ^^A First we let \verb"\NC at rewrite" and \verb"\NC at find" be
+% ^^A \verb"\NC at rewrite@C" and \verb"\NC at find@C" respectively.
 %    \begin{macrocode}
-  \expandafter\let\expandafter\NC at rewrite
-    \csname NC at rewrite@\string#1\endcsname
-  \expandafter\let\expandafter\NC at find
-    \csname NC at find@\string#1\endcsname
+ %   \expandafter\let\expandafter\NC at rewrite
+ %     \csname NC at rewrite@\string#1\endcsname
+ %   \expandafter\let\expandafter\NC at find
+ %     \csname NC at find@\string#1\endcsname
 %    \end{macrocode}
-% Clear the token register \verb"\@temptokena" after putting the present
-% contents of the register in front of the token \verb"\NC at find". At the
-% end we place the tokens `\verb"C\relax"' which \verb"\NC at ifend" will use
-% to detect the end of the user preamble.
+% ^^A Clear the token register \verb"\@temptokena" after putting the present
+% ^^A contents of the register in front of the token \verb"\NC at find". At the
+% ^^A end we place the tokens `\verb"C\relax"' which \verb"\NC at ifend" will use
+% ^^A to detect the end of the user preamble.
 %    \begin{macrocode}
-  \expandafter\@temptokena\expandafter{\expandafter}%
-        \expandafter\NC at find\the\@temptokena#1\relax}
+ %   \expandafter\@temptokena\expandafter{\expandafter}%
+ %         \expandafter\NC at find\the\@temptokena#1\relax}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\showcols}
-% This macro is useful for debugging \verb"\newcolumntype" specifications,
-% it is the equivalent of the primitive \verb"\show" command for macro
-% definitions.  All we need to do is locally redefine \verb"\NC at do" to take
-% its argument (say `C') and then \verb"\show" the (slightly modified)
-% definition of \verb"\NC at rewrite@C". Actually as the the list always
-% starts off with \verb"\NC at do *" and we do not want to print the
-% definition of the $*$-form, define \verb"\NC at do" to throw away the first
-% item in the list, and then redefine itself to print the rest of the
-% definitions.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\showcols}
+% ^^A This macro is useful for debugging \verb"\newcolumntype" specifications,
+% ^^A it is the equivalent of the primitive \verb"\show" command for macro
+% ^^A definitions.  All we need to do is locally redefine \verb"\NC at do" to take
+% ^^A its argument (say `C') and then \verb"\show" the (slightly modified)
+% ^^A definition of \verb"\NC at rewrite@C". Actually as the the list always
+% ^^A starts off with \verb"\NC at do *" and we do not want to print the
+% ^^A definition of the $*$-form, define \verb"\NC at do" to throw away the first
+% ^^A item in the list, and then redefine itself to print the rest of the
+% ^^A definitions.
 %    \begin{macrocode}
-\def\showcols{{\def\NC at do##1{\let\NC at do\NC at show}\the\NC at list}}
+ % \def\showcols{{\def\NC at do##1{\let\NC at do\NC at show}\the\NC at list}}
 %    \end{macrocode}
-% \end{macro}
-% \begin{macro}{\NC at show}
-% If the column `C' is defined as above, then
-% \verb"\show\NC at rewrite@C" would output\\
-% \verb"\long macro: ->\NC at find >{$}c<{$}".
-% We want to strip the \verb"long macro: ->" and the \verb"\NC at find". So first we
-% use \verb"\meaning" and then apply the macro \verb"\NC at strip" to the tokens so
-% produced and then \verb"\typeout" the required string.
+% ^^A \end{macro}
+% ^^A \begin{macro}{\NC at show}
+% ^^A If the column `C' is defined as above, then
+% ^^A \verb"\show\NC at rewrite@C" would output\\
+% ^^A \verb"\long macro: ->\NC at find >{$}c<{$}".
+% ^^A We want to strip the \verb"long macro: ->" and the \verb"\NC at find". So first we
+% ^^A use \verb"\meaning" and then apply the macro \verb"\NC at strip" to the tokens so
+% ^^A produced and then \verb"\typeout" the required string.
 %    \begin{macrocode}
-\def\NC at show#1{%
-  \typeout{Column #1\expandafter\expandafter\expandafter\NC at strip
-  \expandafter\meaning\csname NC at rewrite@#1\endcsname\@@}}
+ % \def\NC at show#1{%
+ %   \typeout{Column #1\expandafter\expandafter\expandafter\NC at strip
+ %   \expandafter\meaning\csname NC at rewrite@#1\endcsname\@@}}
 %    \end{macrocode}
-% \end{macro}
-% \begin{macro}{\NC at strip}
-% Delimit the arguments to \verb"\NC at strip" with `\texttt{:}', `\texttt{->}',
-% a space, and \verb"\@@" to pull out the required parts of the output from
-% \verb"\meaning".
+% ^^A \end{macro}
+% ^^A \begin{macro}{\NC at strip}
+% ^^A Delimit the arguments to \verb"\NC at strip" with `\texttt{:}', `\texttt{->}',
+% ^^A a space, and \verb"\@@" to pull out the required parts of the output from
+% ^^A \verb"\meaning".
 %    \begin{macrocode}
-\def\NC at strip#1:#2->#3 #4\@@{#2 -> #4}
+ % \def\NC at strip#1:#2->#3 #4\@@{#2 -> #4}
 %    \end{macrocode}
-% \end{macro}
-% \begin{macro}{\NC at list}
-% Allocate the token register used for the rewrite list.
+% ^^A \end{macro}
+% ^^A \begin{macro}{\NC at list}
+% ^^A Allocate the token register used for the rewrite list.
 %    \begin{macrocode}
-\newtoks\NC at list
+ % \newtoks\NC at list
 %    \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{The $*$--form}
-% We view the $*$-form as a slight generalisation of the system
-% described in the previous subsection. The idea is to define a $*$
-% column by a command of the form:
-% \begin{verbatim}
-% \newcolumntype{*}[2]{%
-%    \count@=#1\ifnum\count@>0
-%       \advance\count@ by -1 #2*{\count@}{#2}\fi}
-% \end{verbatim}
-% \begin{macro}{\NC at rewrite@*}\label{NC at rewrite@*}
-% This does not work however as \verb"\newcolumntype" takes great care not
-% to expand anything in the preamble, and so the \verb"\if" is never
-% expanded. \verb"\newcolumntype" sets up various other parts of the
-% rewrite correctly though so we can define:
+% ^^A \end{macro}
+% ^^A
+% ^^A \subsubsection{The $*$--form}
+% ^^A We view the $*$-form as a slight generalisation of the system
+% ^^A described in the previous subsection. The idea is to define a $*$
+% ^^A column by a command of the form:
+% ^^A \begin{verbatim}
+% ^^A \newcolumntype{*}[2]{%
+% ^^A    \count@=#1\ifnum\count@>0
+% ^^A       \advance\count@ by -1 #2*{\count@}{#2}\fi}
+% ^^A \end{verbatim}
+% ^^A \begin{macro}{\NC at rewrite@*}\label{NC at rewrite@*}
+% ^^A This does not work however as \verb"\newcolumntype" takes great care not
+% ^^A to expand anything in the preamble, and so the \verb"\if" is never
+% ^^A expanded. \verb"\newcolumntype" sets up various other parts of the
+% ^^A rewrite correctly though so we can define:
 %    \begin{macrocode}
-\newcolumntype{*}[2]{}
+ % \newcolumntype{*}[2]{}
 %    \end{macrocode}
-% Now we must correct the definition of \verb"\NC at rewrite@*". The
-% following is probably more efficient than a direct translation of
-% the idea sketched above, we do not need to put a $*$ in the preamble
-% and call the rewrite recursively, we can just put \verb"#1" copies of
-% \verb"#2" into \verb"\@temptokena". (Nested $*$ forms will be expanded
-% when the whole rewrite list is expanded again, see \verb"\@mkpream")
+% ^^A Now we must correct the definition of \verb"\NC at rewrite@*". The
+% ^^A following is probably more efficient than a direct translation of
+% ^^A the idea sketched above, we do not need to put a $*$ in the preamble
+% ^^A and call the rewrite recursively, we can just put \verb"#1" copies of
+% ^^A \verb"#2" into \verb"\@temptokena". (Nested $*$ forms will be expanded
+% ^^A when the whole rewrite list is expanded again, see \verb"\@mkpream")
 %    \begin{macrocode}
-\long\@namedef{NC at rewrite@*}#1#2{%
+ % \long\@namedef{NC at rewrite@*}#1#2{%
 %    \end{macrocode}
-% Store the number.
+% ^^A Store the number.
 %    \begin{macrocode}
-  \count@#1\relax
+ %   \count@#1\relax
 %    \end{macrocode}
-% Put \verb"#1" copies of \verb"#2" in the token register.
+% ^^A Put \verb"#1" copies of \verb"#2" in the token register.
 %    \begin{macrocode}
-  \loop
-  \ifnum\count@>\z@
-  \advance\count@\m at ne
-  \@temptokena\expandafter{\the\@temptokena#2}%
-  \repeat
+ %   \loop
+ %   \ifnum\count@>\z@
+ %   \advance\count@\m at ne
+ %   \@temptokena\expandafter{\the\@temptokena#2}%
+ %   \repeat
 %    \end{macrocode}
-% \verb"\NC at do" will ensure that \verb"\NC at find" is \verb"\let" equal
-% to \verb"\NC at find@*".
+% ^^A \verb"\NC at do" will ensure that \verb"\NC at find" is \verb"\let" equal
+% ^^A to \verb"\NC at find@*".
 %    \begin{macrocode}
-  \NC at find}
+ %   \NC at find}
 %    \end{macrocode}
-% \end{macro}
-%
-% \subsubsection{Modifications to internal macros of \texttt{array.sty}}
-%
-% \begin{macro}{\@xexpast}
-% \begin{macro}{\@xexnoop}
-%    These macros are used to expand $*$-forms in
-%    \texttt{array.sty}. \verb"\let" them to \verb"\relax" to save space.
+% ^^A \end{macro}
+% ^^A
+% ^^A \subsubsection{Modifications to internal macros of \texttt{array.sty}}
+% ^^A
+% ^^A \begin{macro}{\@xexpast}
+% ^^A \begin{macro}{\@xexnoop}
+% ^^A    These macros are used to expand $*$-forms in
+% ^^A    \texttt{array.sty}. \verb"\let" them to \verb"\relax" to save space.
 %    \begin{macrocode}
-\let\@xexpast\relax
-\let\@xexnoop\relax
+ % \let\@xexpast\relax
+ % \let\@xexnoop\relax
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\save at decl}
-% We do not assume that the token register is free, we add the new
-% declarations to the front of the register. This is to allow user
-% preambles of the form, \verb">{foo}>{bar}..". Users are not encouraged to
-% enter such expressions directly, but they may result from the
-% rewriting of \verb"\newcolumntype"'s.
+% ^^A \end{macro}
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\save at decl}
+% ^^A We do not assume that the token register is free, we add the new
+% ^^A declarations to the front of the register. This is to allow user
+% ^^A preambles of the form, \verb">{foo}>{bar}..". Users are not encouraged to
+% ^^A enter such expressions directly, but they may result from the
+% ^^A rewriting of \verb"\newcolumntype"'s.
 %    \begin{macrocode}
-\def\save at decl{\toks \count@ = \expandafter\expandafter\expandafter
-                  {\expandafter\@nextchar\the\toks\count@}}
+ % \def\save at decl{\toks \count@ = \expandafter\expandafter\expandafter
+ %                   {\expandafter\@nextchar\the\toks\count@}}
 %    \end{macrocode}
-% \end{macro}
-% \begin{macro}{\@mkpream}
-%    The main modification to \verb"\@mkpream" is to replace the call to
-%    \verb"\@xexpast" (which expanded $*$-forms) by a loop which expands
-%    all \verb"\newcolumntype" specifiers.
+% ^^A \end{macro}
+% ^^A \begin{macro}{\@mkpream}
+% ^^A    The main modification to \verb"\@mkpream" is to replace the call to
+% ^^A    \verb"\@xexpast" (which expanded $*$-forms) by a loop which expands
+% ^^A    all \verb"\newcolumntype" specifiers.
 %    \begin{macrocode}
-\def\@mkpream#1{\gdef\@preamble{}\@lastchclass 4 \@firstamptrue
-   \let\@sharp\relax \let\@startpbox\relax \let\@endpbox\relax
+ % \def\@mkpream#1{\gdef\@preamble{}\@lastchclass 4 \@firstamptrue
+ %    \let\@sharp\relax \let\@startpbox\relax \let\@endpbox\relax
 %    \end{macrocode}
-%    Now we remove possible  $*$-forms and user-defined column
-%    specifiers in the user preamble by repeatedly executing the list
-%    \verb"\NC at list" until the re-writes have no more effect. The
-%    expanded preamble will then be in the token register
-%    \verb"\@temptokena". Actually we need to know at this point that
-%    this is not \verb"\toks0".
+% ^^A    Now we remove possible  $*$-forms and user-defined column
+% ^^A    specifiers in the user preamble by repeatedly executing the list
+% ^^A    \verb"\NC at list" until the re-writes have no more effect. The
+% ^^A    expanded preamble will then be in the token register
+% ^^A    \verb"\@temptokena". Actually we need to know at this point that
+% ^^A    this is not \verb"\toks0".
 %    \begin{macrocode}
-   \@temptokena{#1}\@tempswatrue
-   \@whilesw\if at tempswa\fi{\@tempswafalse\the\NC at list}%
+ %    \@temptokena{#1}\@tempswatrue
+ %    \@whilesw\if at tempswa\fi{\@tempswafalse\the\NC at list}%
 %    \end{macrocode}
-%    Afterwards we initialize all registers and macros, that we need
-%    for the build-up of the preamble.
+% ^^A    Afterwards we initialize all registers and macros, that we need
+% ^^A    for the build-up of the preamble.
 %    \begin{macrocode}
-   \count@\m at ne
-   \let\the at toks\relax
-   \prepnext at tok
+ %    \count@\m at ne
+ %    \let\the at toks\relax
+ %    \prepnext at tok
 %    \end{macrocode}
-% Having expanded all tokens defined using \verb"\newcolumntype" (including
-% \verb"*"), we evaluate the remaining tokens, which are saved in
-% \verb"\@temptokena".  We use the \LaTeX--macro \verb"\@tfor" to inspect each
-% token in turn.
+% ^^A Having expanded all tokens defined using \verb"\newcolumntype" (including
+% ^^A \verb"*"), we evaluate the remaining tokens, which are saved in
+% ^^A \verb"\@temptokena".  We use the \LaTeX--macro \verb"\@tfor" to inspect each
+% ^^A token in turn.
 %    \begin{macrocode}
-   \expandafter \@tfor \expandafter \@nextchar
-    \expandafter :\expandafter =\the\@temptokena \do
+ %    \expandafter \@tfor \expandafter \@nextchar
+ %     \expandafter :\expandafter =\the\@temptokena \do
 %    \end{macrocode}
-% \verb"\@testpatch" does not take an argument since \texttt{array.sty} 2.0h.
+% ^^A \verb"\@testpatch" does not take an argument since \texttt{array.sty} 2.0h.
 %    \begin{macrocode}
-   {\@testpach
-   \ifcase \@chclass \@classz \or \@classi \or \@classii
-     \or \save at decl \or \or \@classv \or \@classvi
-     \or \@classvii \or \@classviii
+ %    {\@testpach
+ %    \ifcase \@chclass \@classz \or \@classi \or \@classii
+ %      \or \save at decl \or \or \@classv \or \@classvi
+ %      \or \@classvii \or \@classviii
 %    \end{macrocode}
-%    In \texttt{newarray.sty} class 9 is equivalent to class 10.
+% ^^A    In \texttt{newarray.sty} class 9 is equivalent to class 10.
 %    \begin{macrocode}
-     \or \@classx
-     \or \@classx \fi
-   \@lastchclass\@chclass}%
-   \ifcase\@lastchclass
-   \@acol \or
-   \or
-   \@acol \or
-   \@preamerr \thr@@ \or
-   \@preamerr \tw@ \@addtopreamble\@sharp \or
-   \or
-   \else  \@preamerr \@ne \fi
-   \def\the at toks{\the\toks}}
+ %      \or \@classx
+ %      \or \@classx \fi
+ %    \@lastchclass\@chclass}%
+ %    \ifcase\@lastchclass
+ %    \@acol \or
+ %    \or
+ %    \@acol \or
+ %    \@preamerr \thr@@ \or
+ %    \@preamerr \tw@ \@addtopreamble\@sharp \or
+ %    \or
+ %    \else  \@preamerr \@ne \fi
+ %    \def\the at toks{\the\toks}}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@classix}
-%    \texttt{array.sty} does not allow repeated \texttt{>}
-%    declarations for the same column. This is allowed in
-%    \texttt{newarray.sty} as documented in the introduction. Removing
-%    the test for this case makes class 9 equivalent to class 10, and
-%    so this macro is redundant. It is \verb"\let" to \verb"\relax" to save
-%    space.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\@classix}
+% ^^A    \texttt{array.sty} does not allow repeated \texttt{>}
+% ^^A    declarations for the same column. This is allowed in
+% ^^A    \texttt{newarray.sty} as documented in the introduction. Removing
+% ^^A    the test for this case makes class 9 equivalent to class 10, and
+% ^^A    so this macro is redundant. It is \verb"\let" to \verb"\relax" to save
+% ^^A    space.
 %    \begin{macrocode}
-\let\@classix\relax
+ % \let\@classix\relax
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@classviii}
-%    In \texttt{newarray.sty} explicitly allow class 2, as repeated
-%    \texttt{<} expressions are accepted by this package.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\@classviii}
+% ^^A    In \texttt{newarray.sty} explicitly allow class 2, as repeated
+% ^^A    \texttt{<} expressions are accepted by this package.
 %    \begin{macrocode}
-\def\@classviii{\ifnum \@lastchclass >\z@\ifnum\@lastchclass=\tw@\else
-      \@preamerr 4\@chclass 6 \@classvi \fi\fi}
+ % \def\@classviii{\ifnum \@lastchclass >\z@\ifnum\@lastchclass=\tw@\else
+ %       \@preamerr 4\@chclass 6 \@classvi \fi\fi}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@classv}
-% Class 5 is \texttt{@}-expressions (and is also called by class 1)
-% This macro was incorrect in Version~1. Now we do not expand the
-% \verb"@"-expression, but instead explicitly replace an
-% \verb"\extracolsep" command by an assignment to \verb"\tabskip" by a
-% method similar to the \verb"\newcolumntype" system described above.
-% \verb"\d at llarbegin" \verb"\d at llarend" were introduced in V2.01 to match
-% \texttt{array.sty} 2.0h.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\@classv}
+% ^^A Class 5 is \texttt{@}-expressions (and is also called by class 1)
+% ^^A This macro was incorrect in Version~1. Now we do not expand the
+% ^^A \verb"@"-expression, but instead explicitly replace an
+% ^^A \verb"\extracolsep" command by an assignment to \verb"\tabskip" by a
+% ^^A method similar to the \verb"\newcolumntype" system described above.
+% ^^A \verb"\d at llarbegin" \verb"\d at llarend" were introduced in V2.01 to match
+% ^^A \texttt{array.sty} 2.0h.
 %    \begin{macrocode}
-\def\@classv{\save at decl
-   \expandafter\NC at ecs\@nextchar\extracolsep{}\extracolsep\@@@
-   \@addtopreamble{\d at llarbegin\the at toks\the\count@\relax\d at llarend}%
-   \prepnext at tok}
+ % \def\@classv{\save at decl
+ %    \expandafter\NC at ecs\@nextchar\extracolsep{}\extracolsep\@@@
+ %    \@addtopreamble{\d at llarbegin\the at toks\the\count@\relax\d at llarend}%
+ %    \prepnext at tok}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\NC at ecs}
-% Rewrite the first occurrence of \verb"\extracolsep{1in}" to
-% \verb"\tabskip1in\relax". As a side effect discard any tokens after a
-% second \verb"\extracolsep", there is no point in the user entering two of
-% these commands anyway, so this is not really a restriction.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\NC at ecs}
+% ^^A Rewrite the first occurrence of \verb"\extracolsep{1in}" to
+% ^^A \verb"\tabskip1in\relax". As a side effect discard any tokens after a
+% ^^A second \verb"\extracolsep", there is no point in the user entering two of
+% ^^A these commands anyway, so this is not really a restriction.
 %    \begin{macrocode}
-\def\NC at ecs#1\extracolsep#2#3\extracolsep#4\@@@{\def\@tempa{#2}%
-  \ifx\@tempa\@empty\else\toks\count@={#1\tabskip#2\relax#3}\fi}
+ % \def\NC at ecs#1\extracolsep#2#3\extracolsep#4\@@@{\def\@tempa{#2}%
+ %   \ifx\@tempa\@empty\else\toks\count@={#1\tabskip#2\relax#3}\fi}
 %    \end{macrocode}
-% \end{macro}
-%
-%
-% \subsubsection{Support for the \texttt{delarray.sty}}
-%
-% The \texttt{delarray.sty} package  extends the array syntax by
-% supporting the notation of delimiters. To this end we extend the
-% array parsing mechanism to include a hook which can be used by this
-% (or another) package to do some additional parsing.
-%
-% \begin{macro}{\@tabarray}
-%    This macro tests for an optional bracket and then calls up
-%    \verb"\@@array" or \verb"\@@array[c]" (as default).
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A \subsubsection{Support for the \texttt{delarray.sty}}
+% ^^A
+% ^^A The \texttt{delarray.sty} package  extends the array syntax by
+% ^^A supporting the notation of delimiters. To this end we extend the
+% ^^A array parsing mechanism to include a hook which can be used by this
+% ^^A (or another) package to do some additional parsing.
+% ^^A
+% ^^A \begin{macro}{\@tabarray}
+% ^^A    This macro tests for an optional bracket and then calls up
+% ^^A    \verb"\@@array" or \verb"\@@array[c]" (as default).
 %    \begin{macrocode}
-\def\@tabarray{\@ifnextchar[{\@@array}{\@@array[c]}}
+ % \def\@tabarray{\@ifnextchar[{\@@array}{\@@array[c]}}
 %    \end{macrocode}
-% \end{macro}
-% \begin{macro}{\@@array}
-%    This macro tests could then test an optional delimiter before the
-%    left brace of the main preamble argument. Here in the main package
-%    it simply is let to be \verb"\@array".
+% ^^A \end{macro}
+% ^^A \begin{macro}{\@@array}
+% ^^A    This macro tests could then test an optional delimiter before the
+% ^^A    left brace of the main preamble argument. Here in the main package
+% ^^A    it simply is let to be \verb"\@array".
 %    \begin{macrocode}
-\let\@@array\@array
+ % \let\@@array\@array
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\endarray}
-% \begin{macro}{\@arrayright}
-%    We have to declare the hook we put into \verb"\@array" above.
-%    A similar hook `\verb"\@arrayright"' will be inserted into the
-%    \verb"\endarray" to gain control. Both defaults to empty.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\endarray}
+% ^^A \begin{macro}{\@arrayright}
+% ^^A    We have to declare the hook we put into \verb"\@array" above.
+% ^^A    A similar hook `\verb"\@arrayright"' will be inserted into the
+% ^^A    \verb"\endarray" to gain control. Both defaults to empty.
 %    \begin{macrocode}
-\def\endarray{\crcr \egroup \egroup \@arrayright \gdef\@preamble{}}
-\let\@arrayleft\@empty
-\let\@arrayright\@empty
+ % \def\endarray{\crcr \egroup \egroup \@arrayright \gdef\@preamble{}}
+ % \let\@arrayleft\@empty
+ % \let\@arrayright\@empty
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \subsubsection{Support for \texttt{\textbackslash firsthline} and
-%             \texttt{\textbackslash lasthline}}
-%
-% The Companion~\cite[p.137]{GOOSSENS94} suggests two additional
-% commands to control the alignments in case of tabulars with
-% horizontal lines. They are now added to this package.
-%
-%  \begin{macro}{\extratabsurround}
-%    The extra space around a table when \verb"\firsthline" or \verb"\lasthline"
-%    are used.
+% ^^A \end{macro}
+% ^^A \end{macro}
+% ^^A
+% ^^A \subsubsection{Support for \texttt{\textbackslash firsthline} and
+% ^^A             \texttt{\textbackslash lasthline}}
+% ^^A
+% ^^A The Companion~\cite[p.137]{GOOSSENS94} suggests two additional
+% ^^A commands to control the alignments in case of tabulars with
+% ^^A horizontal lines. They are now added to this package.
+% ^^A
+% ^^A  \begin{macro}{\extratabsurround}
+% ^^A    The extra space around a table when \verb"\firsthline" or \verb"\lasthline"
+% ^^A    are used.
 %    \begin{macrocode}
-\newlength{\extratabsurround}
-\setlength{\extratabsurround}{2pt}
+ % \newlength{\extratabsurround}
+ % \setlength{\extratabsurround}{2pt}
 %    \end{macrocode}
-%  \end{macro}
-%
-% \begin{macro}{\backup at length}
-%    This register will be used internally by \verb"\firsthline" and
-%    \verb"\lasthline".
+% ^^A  \end{macro}
+% ^^A
+% ^^A \begin{macro}{\backup at length}
+% ^^A    This register will be used internally by \verb"\firsthline" and
+% ^^A    \verb"\lasthline".
 %    \begin{macrocode}
-\newlength{\backup at length}
+ % \newlength{\backup at length}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\firsthline}
-%    This code can probably be improved but for the moment it should
-%    serve.
-%
-%    We start by producing a single tabular row without any visible
-%    content that will produce the external reference point in case
-%    \verb"[t]" is used.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\firsthline}
+% ^^A    This code can probably be improved but for the moment it should
+% ^^A    serve.
+% ^^A
+% ^^A    We start by producing a single tabular row without any visible
+% ^^A    content that will produce the external reference point in case
+% ^^A    \verb"[t]" is used.
 %    \begin{macrocode}
-\newcommand{\firsthline}{%}} emacs
-  \multicolumn1c{% 
+ % \newcommand{\firsthline}{%}} emacs
+ %   \multicolumn1c{% 
 %    \end{macrocode}
-%    Within this row we calculate \verb"\backup at length" to be the height
-%    plus depth of a standard line. In addition we have to add the
-%    width of the \verb"\hline", something that was forgotten in the
-%    original definition.
+% ^^A    Within this row we calculate \verb"\backup at length" to be the height
+% ^^A    plus depth of a standard line. In addition we have to add the
+% ^^A    width of the \verb"\hline", something that was forgotten in the
+% ^^A    original definition.
 %    \begin{macrocode}
-    \global\backup at length\ht\@arstrutbox
-    \global\advance\backup at length\dp\@arstrutbox
-    \global\advance\backup at length\arrayrulewidth
+ %     \global\backup at length\ht\@arstrutbox
+ %     \global\advance\backup at length\dp\@arstrutbox
+ %     \global\advance\backup at length\arrayrulewidth
 %    \end{macrocode}
-%    Finally we do want to make the height of this first line be a bit
-%    larger than usual, for this we place the standard array strut
-%    into it but raised by \verb"\extratabsurround"
+% ^^A    Finally we do want to make the height of this first line be a bit
+% ^^A    larger than usual, for this we place the standard array strut
+% ^^A    into it but raised by \verb"\extratabsurround"
 %    \begin{macrocode}
-     \raise\extratabsurround\copy\@arstrutbox
+ %      \raise\extratabsurround\copy\@arstrutbox
 %    \end{macrocode}
-%    Having done all this we end the line and back up by the value of
-%    \verb"\backup at length" and then finally place our \verb"\hline". This should
-%    place the line exactly at the right place but keep the reference
-%    point of the whole tabular at the baseline of the first row.
+% ^^A    Having done all this we end the line and back up by the value of
+% ^^A    \verb"\backup at length" and then finally place our \verb"\hline". This should
+% ^^A    place the line exactly at the right place but keep the reference
+% ^^A    point of the whole tabular at the baseline of the first row.
 %    \begin{macrocode}
-    }\\[-\backup at length]\hline
-}
+ %     }\\[-\backup at length]\hline
+ % }
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\lasthline}
-%    For \verb"\lasthline" the situation is even worse and I got it
-%    completely wrong initially.
-%
-%    The problem in this case is that if the optional argument \verb"[b]"
-%    is used we do want the reference point of the tabular be at the
-%    baseline of the last row but at the same time do want the the
-%    depth of this last line increased by \verb"\extratabsurround" without
-%    changing the placement \verb"\hline".
-%
-%    We start by placing the rule followed by an invisible row.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\lasthline}
+% ^^A    For \verb"\lasthline" the situation is even worse and I got it
+% ^^A    completely wrong initially.
+% ^^A
+% ^^A    The problem in this case is that if the optional argument \verb"[b]"
+% ^^A    is used we do want the reference point of the tabular be at the
+% ^^A    baseline of the last row but at the same time do want the the
+% ^^A    depth of this last line increased by \verb"\extratabsurround" without
+% ^^A    changing the placement \verb"\hline".
+% ^^A
+% ^^A    We start by placing the rule followed by an invisible row.
 %    \begin{macrocode}
-\newcommand{\lasthline}{\hline\multicolumn1c{%}} emacs
+ % \newcommand{\lasthline}{\hline\multicolumn1c{%}} emacs
 %    \end{macrocode}
-%    We now calculate \verb"\backup at length" to be the height and depth of
-%    two lines plus the width of the rule.
+% ^^A    We now calculate \verb"\backup at length" to be the height and depth of
+% ^^A    two lines plus the width of the rule.
 %    \begin{macrocode}
-    \global\backup at length2\ht\@arstrutbox
-    \global\advance\backup at length2\dp\@arstrutbox
-    \global\advance\backup at length\arrayrulewidth
+ %     \global\backup at length2\ht\@arstrutbox
+ %     \global\advance\backup at length2\dp\@arstrutbox
+ %     \global\advance\backup at length\arrayrulewidth
 %    \end{macrocode}
-%    This will bring us back to the baseline of the second last row:
+% ^^A    This will bring us back to the baseline of the second last row:
 %    \begin{macrocode}
-    }\\[-\backup at length]%
+ %     }\\[-\backup at length]%
 %    \end{macrocode}
-%    Thus if we now add another invisible row the reference point of
-%    that row will be at the baseline of the last row (and will be the
-%    reference for the whole tabular). Since this row is invisible we
-%    can enlarge its depth by the desired amount.
+% ^^A    Thus if we now add another invisible row the reference point of
+% ^^A    that row will be at the baseline of the last row (and will be the
+% ^^A    reference for the whole tabular). Since this row is invisible we
+% ^^A    can enlarge its depth by the desired amount.
 %    \begin{macrocode}
-    \multicolumn1c{%
-       \lower\extratabsurround\copy\@arstrutbox
-       }%
-}
+ %     \multicolumn1c{%
+ %        \lower\extratabsurround\copy\@arstrutbox
+ %        }%
+ % }
 %    \end{macrocode}
-% \end{macro}
-%
-%
-% \subsubsection{Getting the spacing around rules right}
-%
-%    Beside a larger functionality \texttt{array.sty} has one
-%    important difference to the standard \texttt{tabular} and
-%    \texttt{array} environments: horizontal and vertical rules make a
-%    table larger or wider, e.g., \verb=\doublerulesep= really denotes
-%    the space between two rules and isn't measured from the middle of
-%    the rules.
-%
-%  \begin{macro}{\@xhline}
-%    For vertical rules this is implemented by the definitions above,
-%    for horizontal rules we have to take out the backspace.
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A \subsubsection{Getting the spacing around rules right}
+% ^^A
+% ^^A    Beside a larger functionality \texttt{array.sty} has one
+% ^^A    important difference to the standard \texttt{tabular} and
+% ^^A    \texttt{array} environments: horizontal and vertical rules make a
+% ^^A    table larger or wider, e.g., \verb=\doublerulesep= really denotes
+% ^^A    the space between two rules and isn't measured from the middle of
+% ^^A    the rules.
+% ^^A
+% ^^A  \begin{macro}{\@xhline}
+% ^^A    For vertical rules this is implemented by the definitions above,
+% ^^A    for horizontal rules we have to take out the backspace.
 %    \begin{macrocode}
-\CheckCommand*\@xhline{\ifx\reserved at a\hline
-               \vskip\doublerulesep
-               \vskip-\arrayrulewidth
-             \fi
-      \ifnum0=`{\fi}}
-\renewcommand*\@xhline{\ifx\reserved at a\hline
-               \vskip\doublerulesep
-             \fi
-      \ifnum0=`{\fi}}
+ % \CheckCommand*\@xhline{\ifx\reserved at a\hline
+ %                \vskip\doublerulesep
+ %                \vskip-\arrayrulewidth
+ %              \fi
+ %       \ifnum0=`{\fi}}
+ % \renewcommand*\@xhline{\ifx\reserved at a\hline
+ %                \vskip\doublerulesep
+ %              \fi
+ %       \ifnum0=`{\fi}}
 %    \end{macrocode}
-%  \end{macro}
-%
-%
+% ^^A  \end{macro}
+% ^^A
+% ^^A
 %    \begin{macrocode}
-%%%%%%%%%% end array.sty 2016/10/06 v2.4d %%%%%%%%% 
-
+ % %%%%%%%%%% end array.sty 2016/10/06 v2.4d %%%%%%%%% 
+ % 
 %    \end{macrocode}
+% ^^A
+% ^^A
 %
-%
+% \subsubsection{Class additions to Array}
+% 
 % \begin{macro}{\m at mold@addamp}
 % \begin{macro}{\m at m@addamp}
 % \begin{macro}{\@addamp}
@@ -16925,958 +16953,1000 @@
 
 % \subsection{D column specifiers} \label{sec:dcolumns}
 %
-% The description and code are essentially copied from the 
-% \Lpack{dcolumn} package~\cite{DCOLUMN}.
 %
+% Here ealier versions of the class had an embedded copy of the
+% \Lpack{cdolumn} package. Now replaced by requiring the packge instead.
 %    \begin{macrocode}
-%%%%%%%%%% Dcolumn package code %%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%% With acknowledgements to David Carlisle %%%%%%%%%%%%%%%%%%%%%
-
+\RequirePackage{dcolumn}[2014/10/28]
 %    \end{macrocode}
+% The embeded copy is outcommented for now and will be removed in a
+% later version.
 %
+% \changes{v3.7h}{2018/09/06}{Outcommented the embedded copy of
+% \Lpack{dcolumn} and replaced it with requiring the \Lpack{dcolumn} package
+% instead.}
 %
-% The \Lpack{dcolumn} package~\cite{DCOLUMN} defines \texttt{D} 
-% to be a column specifier
-% with three arguments.\\
-% \verb?D?\marg{sep.tex}\marg{sep.dvi}\marg{decimal places}
-% for columns which are to be aligned on a `decimal point'.
-% 
-%
-% The basic ideas behind these macros have been explained earlier.
-% However they use three
-% tricks which may be useful in other contexts.
-% \begin{itemize}
-% \item The separator is surrounded in extra \verb?{ }?, so that it is set
-% with \cs{mathord} spacing, otherwise, for instance a `,' would have
-% extra space after it.
-% \item The separator is not given its special definition by making it
-% active, as this would not work for an entry such as \verb?& .5 &?, as the
-% first token of an alignment entry is read \emph{before} the preamble
-% part, incase it is an \cs{omit}, in which case the preamble is to be
-% omitted. Instead we switch the mathcode to (hex) 8000, which makes the
-% token act as if it were active.
-% \item Although \verb?\mathcode`.="8000?  makes \texttt{.} act as if it
-% were active, it is still not allowed in constructions such as
-% \verb?\def.{}?, even in math-mode, so we have to construct an active
-% version of the separator, this is done by making it the uppercase of
-% \verb?~?, and then using the construct\\
-% \verb?\uppercase{\def~}?\marg{definition}.\\
-% Note that the \meta{definition} is not uppercased, so the definition
-% can refer to the standard, non-active use of the separator.
-% \end{itemize}
-%
-% \begin{macro}{\DC@}
-% Set up uppercase tables as required, and then grab the first part of
-% the numerical argument into \cs{count@}.
+% ^^A The description and code are essentially copied from the 
+% ^^A \Lpack{dcolumn} package~\cite{DCOLUMN}.
+% ^^A
 %    \begin{macrocode}
-\def\DC@#1#2#3{%
-  \uccode`\~=`#1\relax
-  \m at th
-  \afterassignment\DC at x\count@#3\relax{#1}{#2}}
+ % %%%%%%%%%% Dcolumn package code %%%%%%%%%%%%%%%%%%%%%
+ % %%%%%%%%%% With acknowledgements to David Carlisle %%%%%%%%%%%%%%%%%%%%%
+ % 
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\DC at x}
-% If \cs{count@} is negative, centre on the decimal point. If it is
-% positive either \verb?#1? will be empty in which case bad out decimal
-% part to the number of digits specified by \cs{count@} or 
-% it is none empty in which case \cs{count@} contains the
-% number of digits to the left of the point, and \verb?#1? contains a junk
-% token (probably \verb?.?) followed by the number of digits to the right
-% of the point. In either of these latter cases, \cs{DC at right} is used.
+% ^^A
+% ^^A
+% ^^A The \Lpack{dcolumn} package~\cite{DCOLUMN} defines \texttt{D} 
+% ^^A to be a column specifier
+% ^^A with three arguments.\\
+% ^^A \verb?D?\marg{sep.tex}\marg{sep.dvi}\marg{decimal places}
+% ^^A for columns which are to be aligned on a `decimal point'.
+% ^^A 
+% ^^A
+% ^^A The basic ideas behind these macros have been explained earlier.
+% ^^A However they use three
+% ^^A tricks which may be useful in other contexts.
+% ^^A \begin{itemize}
+% ^^A \item The separator is surrounded in extra \verb?{ }?, so that it is set
+% ^^A with \cs{mathord} spacing, otherwise, for instance a `,' would have
+% ^^A extra space after it.
+% ^^A \item The separator is not given its special definition by making it
+% ^^A active, as this would not work for an entry such as \verb?& .5 &?, as the
+% ^^A first token of an alignment entry is read \emph{before} the preamble
+% ^^A part, incase it is an \cs{omit}, in which case the preamble is to be
+% ^^A omitted. Instead we switch the mathcode to (hex) 8000, which makes the
+% ^^A token act as if it were active.
+% ^^A \item Although \verb?\mathcode`.="8000?  makes \texttt{.} act as if it
+% ^^A were active, it is still not allowed in constructions such as
+% ^^A \verb?\def.{}?, even in math-mode, so we have to construct an active
+% ^^A version of the separator, this is done by making it the uppercase of
+% ^^A \verb?~?, and then using the construct\\
+% ^^A \verb?\uppercase{\def~}?\marg{definition}.\\
+% ^^A Note that the \meta{definition} is not uppercased, so the definition
+% ^^A can refer to the standard, non-active use of the separator.
+% ^^A \end{itemize}
+% ^^A
+% ^^A \begin{macro}{\DC@}
+% ^^A Set up uppercase tables as required, and then grab the first part of
+% ^^A the numerical argument into \cs{count@}.
 %    \begin{macrocode}
-\def\DC at x#1\relax#2#3{%
-  \ifnum\z@>\count@
-    \expandafter\DC at centre
-  \else
-    \expandafter\DC at right
-  \fi
-  {#2}{#3}{#1}}
+ % \def\DC@#1#2#3{%
+ %   \uccode`\~=`#1\relax
+ %   \m at th
+ %   \afterassignment\DC at x\count@#3\relax{#1}{#2}}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\DC at centre}
-% If centering on the decimal point, just need to box up the two halves.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\DC at x}
+% ^^A If \cs{count@} is negative, centre on the decimal point. If it is
+% ^^A positive either \verb?#1? will be empty in which case bad out decimal
+% ^^A part to the number of digits specified by \cs{count@} or 
+% ^^A it is none empty in which case \cs{count@} contains the
+% ^^A number of digits to the left of the point, and \verb?#1? contains a junk
+% ^^A token (probably \verb?.?) followed by the number of digits to the right
+% ^^A of the point. In either of these latter cases, \cs{DC at right} is used.
 %    \begin{macrocode}
-\def\DC at centre#1#2#3{%
-  \let\DC at end\DC at endcentre
-  \uppercase{\def~}{$\egroup\setbox\tw@=\hbox\bgroup${#2}}%$
-  \setbox\tw@=\hbox{${\phantom{{#2}}}$}%
-  \setbox\z@=\hbox\bgroup$\mathcode`#1="8000 }%$
+ % \def\DC at x#1\relax#2#3{%
+ %   \ifnum\z@>\count@
+ %     \expandafter\DC at centre
+ %   \else
+ %     \expandafter\DC at right
+ %   \fi
+ %   {#2}{#3}{#1}}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\DC at endcentre}
-% and then pad out the smaller of the two boxes so there is the same
-% amount of stuff either side of the point.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\DC at centre}
+% ^^A If centering on the decimal point, just need to box up the two halves.
 %    \begin{macrocode}
-\def\DC at endcentre{$\egroup%$
-    \ifdim \wd\z@>\wd\tw@
-      \setbox\tw@=\hbox to\wd\z@{\unhbox\tw@\hfill}%
-    \else
-      \setbox\z@=\hbox to\wd\tw@{\hfill\unhbox\z@}\fi
-    \box\z@\box\tw@}
+ % \def\DC at centre#1#2#3{%
+ %   \let\DC at end\DC at endcentre
+ %   \uppercase{\def~}{$\egroup\setbox\tw@=\hbox\bgroup${#2}}%$
+ %   \setbox\tw@=\hbox{${\phantom{{#2}}}$}%
+ %   \setbox\z@=\hbox\bgroup$\mathcode`#1="8000 }%$
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\DC at right}
-% This deals with both the cases where a specified number of decimal
-% places is given.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\DC at endcentre}
+% ^^A and then pad out the smaller of the two boxes so there is the same
+% ^^A amount of stuff either side of the point.
 %    \begin{macrocode}
-\def\DC at right#1#2#3{%
-  \ifx\relax#3\relax
+ % \def\DC at endcentre{$\egroup%$
+ %     \ifdim \wd\z@>\wd\tw@
+ %       \setbox\tw@=\hbox to\wd\z@{\unhbox\tw@\hfill}%
+ %     \else
+ %       \setbox\z@=\hbox to\wd\tw@{\hfill\unhbox\z@}\fi
+ %     \box\z@\box\tw@}
 %    \end{macrocode}
-% If \verb?#3? is empty, add \cs{hfill} to right align the column, and 
-% Just set \cs{DC at rl} to begin a group, so nothing fancy is done with
-% the whole number part.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\DC at right}
+% ^^A This deals with both the cases where a specified number of decimal
+% ^^A places is given.
 %    \begin{macrocode}
-    \hfill
-    \let\DC at rl\bgroup
-  \else
+ % \def\DC at right#1#2#3{%
+ %   \ifx\relax#3\relax
 %    \end{macrocode}
-% Otherwise  set \cs{DC at rl} so that the whole number part is put in a
-% box \cs{count@} times as wide as a digit.
-% In order to share code with the other branch, then move \verb?#3? (the
-% number of decimal places) into \cs{count@} throwing away the `.' from
-% the user syntax.
+% ^^A If \verb?#3? is empty, add \cs{hfill} to right align the column, and 
+% ^^A Just set \cs{DC at rl} to begin a group, so nothing fancy is done with
+% ^^A the whole number part.
 %    \begin{macrocode}
-    \edef\DC at rl{to\the\count@\dimen at ii\bgroup\hss\hfill}%
-    \count@\@gobble#3\relax
-  \fi
+ %     \hfill
+ %     \let\DC at rl\bgroup
+ %   \else
 %    \end{macrocode}
-%
+% ^^A Otherwise  set \cs{DC at rl} so that the whole number part is put in a
+% ^^A box \cs{count@} times as wide as a digit.
+% ^^A In order to share code with the other branch, then move \verb?#3? (the
+% ^^A number of decimal places) into \cs{count@} throwing away the `.' from
+% ^^A the user syntax.
 %    \begin{macrocode}
-  \let\DC at end\DC at endright
+ %     \edef\DC at rl{to\the\count@\dimen at ii\bgroup\hss\hfill}%
+ %     \count@\@gobble#3\relax
+ %   \fi
 %    \end{macrocode}
-% Box 2 contains the decimal part, set to \cs{dimen@} which is
-% calculated below to be \cs{count@} times the width of a digit, plus
-% the width of the `decimal point'.
+% ^^A
 %    \begin{macrocode}
-  \uppercase{\def~}{$\egroup\setbox\tw@\hbox to\dimen@\bgroup${#2}}%
-   \setbox\z@\hbox{$1$}\dimen at ii\wd\z@
-   \dimen@\count@\dimen at ii
-   \setbox\z@\hbox{${#2}$}\advance\dimen@\wd\z@
-   \setbox\tw@\hbox to\dimen@{}%
+ %   \let\DC at end\DC at endright
 %    \end{macrocode}
-% Box 0 contains the whole number part, either just at its natural
-% size for right aligned columns, or set to (the old value of)
-% \cs{count@} times the width of a digit. \cs{DC at rl} defined above
-% determines the two cases.
+% ^^A Box 2 contains the decimal part, set to \cs{dimen@} which is
+% ^^A calculated below to be \cs{count@} times the width of a digit, plus
+% ^^A the width of the `decimal point'.
 %    \begin{macrocode}
-   \setbox\z@\hbox\DC at rl$\mathcode`#1="8000 }%$
+ %   \uppercase{\def~}{$\egroup\setbox\tw@\hbox to\dimen@\bgroup${#2}}%
+ %    \setbox\z@\hbox{$1$}\dimen at ii\wd\z@
+ %    \dimen@\count@\dimen at ii
+ %    \setbox\z@\hbox{${#2}$}\advance\dimen@\wd\z@
+ %    \setbox\tw@\hbox to\dimen@{}%
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\DC at endright}
-% Just finish off the second box, and then put out both boxes.
+% ^^A Box 0 contains the whole number part, either just at its natural
+% ^^A size for right aligned columns, or set to (the old value of)
+% ^^A \cs{count@} times the width of a digit. \cs{DC at rl} defined above
+% ^^A determines the two cases.
 %    \begin{macrocode}
-\def\DC at endright{$\hfil\egroup\box\z@\box\tw@}%$
+ %    \setbox\z@\hbox\DC at rl$\mathcode`#1="8000 }%$
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{D}
-% The user interface, define the {\tt D} column to take three arguments.
-% For special purposes, you may need to directly access \cs{DC@} rather
-% than the \verb?D? column, eg to get a bold version you could use
-%\begin{verbatim}
-% \newcolumntype{E}[3]{>{\boldmath\DC@{#1}{#2}{#3}}c<{\DC at end}}
-%\end{verbatim}
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\DC at endright}
+% ^^A Just finish off the second box, and then put out both boxes.
 %    \begin{macrocode}
-\newcolumntype{D}[3]{>{\DC@{#1}{#2}{#3}}c<{\DC at end}}
-
+ % \def\DC at endright{$\hfil\egroup\box\z@\box\tw@}%$
 %    \end{macrocode}
-% \end{macro}
-%
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{D}
+% ^^A The user interface, define the {\tt D} column to take three arguments.
+% ^^A For special purposes, you may need to directly access \cs{DC@} rather
+% ^^A than the \verb?D? column, eg to get a bold version you could use
+% ^^A\begin{verbatim}
+% ^^A \newcolumntype{E}[3]{>{\boldmath\DC@{#1}{#2}{#3}}c<{\DC at end}}
+% ^^A\end{verbatim}
 %    \begin{macrocode}
-%%%%%%%%%% end Dcolumn package code %%%%%%%%%%%%%%%%%%%%%
-
+ % \newcolumntype{D}[3]{>{\DC@{#1}{#2}{#3}}c<{\DC at end}}
+ % 
 %    \end{macrocode}
+% ^^A \end{macro}
+% ^^A
+%    \begin{macrocode}
+ % %%%%%%%%%% end Dcolumn package code %%%%%%%%%%%%%%%%%%%%%
+ % 
+%    \end{macrocode}
+% ^^A
 %
+%
 % \subsection{Support for delimeters}
 %
-% The description and code are essentially from the 
-% \Lpack{delarray} package~\cite{DELARRAY}, v1.01 1994/03/14.
-%
+% Here ealier versions of the class had an embedded copy of the
+% \Lpack{dearray} package. Now replaced by requiring the packge instead.
 %    \begin{macrocode}
-%%%%%%%%%% Delarray package code %%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%% With acknowledgements to David Carlisle %%%%%%%%%%%%%%%%%%%%%
-
+\RequirePackage{delarray}[2014/10/28]
 %    \end{macrocode}
+% The embeded copy is outcommented for now and will be removed in a
+% later version.
 %
-%
-% The array syntax is extended by
-% supporting the notation of delimiters. To this end we extend the
-% array parsing mechanism to include a hook which can be used by this
-% (or another) package to do some additional parsing.
-%
-%
-% \begin{macro}{\@@array}
-%    This macro tests for an optional delimiter before the left brace
-%    of the main preamble argument. If there is no delimiter,
-%    \cs{@arrayleft} and \cs{@arrayright} are made a no-ops, and
-%    \cs{@array} is called with the positional argument. Otherwise
-%    call \cs{@del at array}.
+% \changes{v3.7h}{2018/09/06}{Outcommented the embedded copy of
+% \Lpack{delarray} and replaced it with requiring the \Lpack{delarray} package
+% instead.}
+% ^^A
+% ^^A The description and code are essentially from the 
+% ^^A \Lpack{delarray} package~\cite{DELARRAY}, v1.01 1994/03/14.
+% ^^A
 %    \begin{macrocode}
-\def\@@array[#1]{\@ifnextchar\bgroup
-  {\let\@arrayleft\relax\let\@arrayright\relax\@array[#1]}%
-  {\@del at array[#1]}}
+ % %%%%%%%%%% Delarray package code %%%%%%%%%%%%%%%%%%%%%
+ % %%%%%%%%%% With acknowledgements to David Carlisle %%%%%%%%%%%%%%%%%%%%%
+ % 
 %    \end{macrocode}
-% \end{macro}
-% \begin{macro}{\@del at array}
-%    We now know that we have an {\tt array} (or {\tt tabular}) with
-%    delimiters.
+% ^^A
+% ^^A
+% ^^A The array syntax is extended by
+% ^^A supporting the notation of delimiters. To this end we extend the
+% ^^A array parsing mechanism to include a hook which can be used by this
+% ^^A (or another) package to do some additional parsing.
+% ^^A
+% ^^A
+% ^^A \begin{macro}{\@@array}
+% ^^A    This macro tests for an optional delimiter before the left brace
+% ^^A    of the main preamble argument. If there is no delimiter,
+% ^^A    \cs{@arrayleft} and \cs{@arrayright} are made a no-ops, and
+% ^^A    \cs{@array} is called with the positional argument. Otherwise
+% ^^A    call \cs{@del at array}.
 %    \begin{macrocode}
-\def\@del at array[#1]#2#3#4{%
+ % \def\@@array[#1]{\@ifnextchar\bgroup
+ %   {\let\@arrayleft\relax\let\@arrayright\relax\@array[#1]}%
+ %   {\@del at array[#1]}}
 %    \end{macrocode}
-% The following line is completely redundant but it does catch errors
-% involving delimiters  before the processing of the alignment begins.
-% A common error is likely to be omiting the `.' in a
-% \cs{cases}-type construction. This causes the first token of the
-% alignment to be gobbled, possibly causing lots of spurious errors
-% before the cause of the error, the missing delimiter, is discovered as
-% \cs{@arrayright} puts the alignment and the delimiters together.
+% ^^A \end{macro}
+% ^^A \begin{macro}{\@del at array}
+% ^^A    We now know that we have an {\tt array} (or {\tt tabular}) with
+% ^^A    delimiters.
 %    \begin{macrocode}
-  \setbox\z@\hbox{$\left#2\right#4$}%
+ % \def\@del at array[#1]#2#3#4{%
 %    \end{macrocode}
-% In the case of a `c' argument we do not need to rebox the alignment,
-% so we can define \cs{@arrayleft} and \cs{@arrayright} just to
-% insert the delimiters.
+% ^^A The following line is completely redundant but it does catch errors
+% ^^A involving delimiters  before the processing of the alignment begins.
+% ^^A A common error is likely to be omiting the `.' in a
+% ^^A \cs{cases}-type construction. This causes the first token of the
+% ^^A alignment to be gobbled, possibly causing lots of spurious errors
+% ^^A before the cause of the error, the missing delimiter, is discovered as
+% ^^A \cs{@arrayright} puts the alignment and the delimiters together.
 %    \begin{macrocode}
-  \if#1c\def\@arrayleft{\left#2}\def\@arrayright{\right#4}%
+ %   \setbox\z@\hbox{$\left#2\right#4$}%
 %    \end{macrocode}
-% Otherwise we (should) have a {\tt[t]} or {\tt[b]} argument, so first we
-% store the alignment, without delimiters in box0.
+% ^^A In the case of a `c' argument we do not need to rebox the alignment,
+% ^^A so we can define \cs{@arrayleft} and \cs{@arrayright} just to
+% ^^A insert the delimiters.
 %    \begin{macrocode}
-  \else\def\@arrayleft{\setbox\z@}%
+ %   \if#1c\def\@arrayleft{\left#2}\def\@arrayright{\right#4}%
 %    \end{macrocode}
-% Then after the alignment is finished:
+% ^^A Otherwise we (should) have a {\tt[t]} or {\tt[b]} argument, so first we
+% ^^A store the alignment, without delimiters in box0.
 %    \begin{macrocode}
-  \def\@arrayright{%
+ %   \else\def\@arrayleft{\setbox\z@}%
 %    \end{macrocode}
-% Calculate the amount the box needs to be lowered (this will be
-% negative in the case of \verb?[b]?). A little bit of arithmetic cf.\
-% \theTeXbook, Appendix G, rule 8. We calculate the amount this
-% way, rather than just taking the difference between the depth of box0
-% and the depth of the box defined below, as the depth of that box may
-% be affected by the delimiters if \cs{delimitershortfall} or
-% \cs{delimiterfactor} have non-standard values.
+% ^^A Then after the alignment is finished:
 %    \begin{macrocode}
-     \dimen@=\dp\z@
-     \advance\dimen at -\ht\z@
-     \divide \dimen@ by \tw@
-     \advance\dimen@ by\fontdimen22 \textfont\tw@
+ %   \def\@arrayright{%
 %    \end{macrocode}
-% Now lower the alignment and the delimiters into place.
+% ^^A Calculate the amount the box needs to be lowered (this will be
+% ^^A negative in the case of \verb?[b]?). A little bit of arithmetic cf.\
+% ^^A \theTeXbook, Appendix G, rule 8. We calculate the amount this
+% ^^A way, rather than just taking the difference between the depth of box0
+% ^^A and the depth of the box defined below, as the depth of that box may
+% ^^A be affected by the delimiters if \cs{delimitershortfall} or
+% ^^A \cs{delimiterfactor} have non-standard values.
 %    \begin{macrocode}
-     \lower\dimen@\hbox{$\left#2\vcenter{\unvbox\z@}\right#4$}}%
+ %      \dimen@=\dp\z@
+ %      \advance\dimen at -\ht\z@
+ %      \divide \dimen@ by \tw@
+ %      \advance\dimen@ by\fontdimen22 \textfont\tw@
 %    \end{macrocode}
-% End the \verb?\if#1c?
+% ^^A Now lower the alignment and the delimiters into place.
 %    \begin{macrocode}
-  \fi
+ %      \lower\dimen@\hbox{$\left#2\vcenter{\unvbox\z@}\right#4$}}%
 %    \end{macrocode}
-% Now that we have defined \cs{@arrayleft} and \cs{@arrayright}, call
-% \cs{@array}.
+% ^^A End the \verb?\if#1c?
 %    \begin{macrocode}
-  \@array[#1]{#3}}
+ %   \fi
 %    \end{macrocode}
-% \end{macro}
-%
-%
+% ^^A Now that we have defined \cs{@arrayleft} and \cs{@arrayright}, call
+% ^^A \cs{@array}.
 %    \begin{macrocode}
-%%%%%%%%%% end Delarray package code %%%%%%%%%%%%%%%%%%%%%
-
+ %   \@array[#1]{#3}}
 %    \end{macrocode}
-%
-% \subsection{The tabularx environment}
-%
-% The code and description are essentially from David Carlisle's  
-% \Lpack{tabularx} package~\cite{TABULARX}, v2.07 1999/01/07.
-%
+% ^^A \end{macro}
+% ^^A
+% ^^A
 %    \begin{macrocode}
-%%%%%%%%%% Tabularx package code %%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%% With acknowledgements to David Carlisle %%%%%%%%%%%%%%%%%%%%%
-
-%%% This is a carbon copy of the tabularx dtx sources for v2.11,
-%%% 2016/02/03 with two changes: error messages mention the class
-%%% instead of tabularx. 
-
-%%%%%%%%%% Tabularx package code v2.11 2016/02/03 %%%%%%%%%%%%%%%%%%%%%
-
+ % %%%%%%%%%% end Delarray package code %%%%%%%%%%%%%%%%%%%%%
+ % 
 %    \end{macrocode}
+% ^^A
 %
 %
+% \subsection{The tabularx environment}
 %
-% The \Lpack{tabularx} package~\cite{TABULARX} implements a version of the \texttt{tabular}
-% environment in which the widths of certain columns are calculated so
-% that the table is is a specified width. The columns that may stretch are
-% marked by an \texttt{X} in the preamble argument.
-%
-% What follows is a carbon copy of the contents of \texttt{tabularx.dtx} with small changes: (1) We make errors/warnings
-% mention the class instead of \texttt{tabularx}, (2) we strip \texttt{tabularx} related \cs{changes} macros, (3) we
-% remove loading the \Lpack{array} package, as we already come with a copy.
-%
-% First some registers etc.\ that we need.
+% Here ealier versions of the class had an embedded copy of the
+% \Lpack{tabularx} package. Now replaced by requiring the packge instead.
 %    \begin{macrocode}
-\newdimen\TX at col@width
-\newdimen\TX at old@table
-\newdimen\TX at old@col
-\newdimen\TX at target
-\newdimen\TX at delta
-\newcount\TX at cols
-\newif\ifTX@
+\RequirePackage{tabularx}[2016/02/03]
 %    \end{macrocode}
+% The embeded copy is outcommented for now and will be removed in a
+% later version.
 %
-% Now a trick to get the body of an environment into a token register, without doing any expansion. This does not do any
-% real checking of nested environments, so if you should need to nest one {\ttfamily tabularx} inside another, the inner
-% one must be surrounded by \verb+{ }+.
+% \changes{v3.7h}{2018/09/06}{Outcommented the embedded copy of
+% \Lpack{tabularx} and replaced it with requiring the \Lpack{tabularx} package
+% instead.}
+
 %
-% \begin{macro}{\tabularx}
-% Prior to (\texttt{tabularx}) v1.06, this macro took two arguments, which were saved in
-% separate registers before the table body was saved by \verb+\TX at get@body+.
-% Unfortunately this disables the \verb|[t]| optional argument. Now just save
-% the width specification separately, then clear the token register
-% \verb|\toks@|.
-% Finally call \verb|\TX at get@body| to begin saving the body of the table.
-% The \verb|{\ifnum0=`}\fi| was added at (tabularx) v1.03, to allow \Lenv{tabularx} to appear
-% inside a \verb|\halign|.^^A
-% \setbox0=\hbox{\footnotesize"\iffalse{\fi\ifnum0=`}\fi"}^^A
-% \setbox2=\hbox{\footnotesize"\ifnum0=`{}\fi"}^^A
-% \footnote{This adds an extra level of grouping,
-% which is not really needed. Instead, I could use \box0\ here, and
-% \box2\ below, however the code here would then have to be moved after
-% the first line, because of the footnote to page 386 of the \TeX{}Book,
-% and I do not think I should be writing code that is so obscure as to
-% be documented in a footnote in an appendix called ``Dirty Tricks''!}
-%
-% This mechanism of grabbing an environment body does have the
-% disadvantage (shared with the AMS alignment environments) that you
-% can not make extension environments by code such as
-%\begin{verbatim}
-%\newenvironment{foo}{\begin{tabularx}{XX}}{\end{tabularx}}
-%\end{verbatim}
-% as the code is looking for a literal string \verb"\end{tabularx}" to stop
-% scanning. Since version (tabularx) 2.02, one may avoid this problem by using
-% \verb|\tabularx| and \verb|\endtabularx| directly in the definition:
-%\begin{verbatim}
-%\newenvironment{foo}{\tabularx{XX}}{\endtabularx}
-%\end{verbatim}
-% The scanner now looks for the end of the current environment (\verb|foo| in
-% this example.) There are some restrictions on this usage, the
-% principal one being that \verb|\endtabularx| must not be inside any \verb"{ }" pairs
-% ao that the code before \verb"\endtabularx"  may be extracted and added to the table body
-% (prior to version (tabularx) 2.09  \verb"\endtabularx" had to be
-% the \emph{first} token of the `end code' of the environment).
+% ^^A The code and description are essentially from David Carlisle's  
+% ^^A \Lpack{tabularx} package~\cite{TABULARX}, v2.07 1999/01/07.
+% ^^A
 %    \begin{macrocode}
-\def\tabularx#1{%
+ % %%%%%%%%%% Tabularx package code %%%%%%%%%%%%%%%%%%%%%
+ % %%%%%%%%%% With acknowledgements to David Carlisle %%%%%%%%%%%%%%%%%%%%%
+ % 
+ % %%% This is a carbon copy of the tabularx dtx sources for v2.11,
+ % %%% 2016/02/03 with two changes: error messages mention the class
+ % %%% instead of tabularx. 
+ % 
+ % %%%%%%%%%% Tabularx package code v2.11 2016/02/03 %%%%%%%%%%%%%%%%%%%%%
+ % 
 %    \end{macrocode}
-% Allow \verb"\tabularx" \verb"\endtabularx" (but not \verb"\begin{tabularx}"
-% \verb"\end{tabularx}") to be used in \verb"\newenvironment" definitions.
+% ^^A
+% ^^A
+% ^^A
+% ^^A The \Lpack{tabularx} package~\cite{TABULARX} implements a version of the \texttt{tabular}
+% ^^A environment in which the widths of certain columns are calculated so
+% ^^A that the table is is a specified width. The columns that may stretch are
+% ^^A marked by an \texttt{X} in the preamble argument.
+% ^^A
+% ^^A What follows is a carbon copy of the contents of \texttt{tabularx.dtx} with small changes: (1) We make errors/warnings
+% ^^A mention the class instead of \texttt{tabularx}, (2) we strip \texttt{tabularx} related \cs{changes} macros, (3) we
+% ^^A remove loading the \Lpack{array} package, as we already come with a copy.
+% ^^A
+% ^^A First some registers etc.\ that we need.
 %    \begin{macrocode}
-\edef\TX@{\@currenvir}%
-  {\ifnum0=`}\fi
+ % \newdimen\TX at col@width
+ % \newdimen\TX at old@table
+ % \newdimen\TX at old@col
+ % \newdimen\TX at target
+ % \newdimen\TX at delta
+ % \newcount\TX at cols
+ % \newif\ifTX@
 %    \end{macrocode}
-% \verb"\relax" added at v1.05 so that non-expandable length tokens, like
-% \verb"\textwidth" do not generate an extra space, and an overfull box.
-% \verb"\relax" removed again at v4.09 in favour of \verb"\setlength" so if you
-% use the calc package you can use a width of \verb"(\textwidth-12pt)/2".
+% ^^A
+% ^^A Now a trick to get the body of an environment into a token register, without doing any expansion. This does not do any
+% ^^A real checking of nested environments, so if you should need to nest one {\ttfamily tabularx} inside another, the inner
+% ^^A one must be surrounded by \verb+{ }+.
+% ^^A
+% ^^A \begin{macro}{\tabularx}
+% ^^A Prior to (\texttt{tabularx}) v1.06, this macro took two arguments, which were saved in
+% ^^A separate registers before the table body was saved by \verb+\TX at get@body+.
+% ^^A Unfortunately this disables the \verb|[t]| optional argument. Now just save
+% ^^A the width specification separately, then clear the token register
+% ^^A \verb|\toks@|.
+% ^^A Finally call \verb|\TX at get@body| to begin saving the body of the table.
+% ^^A The \verb|{\ifnum0=`}\fi| was added at (tabularx) v1.03, to allow \Lenv{tabularx} to appear
+% ^^A inside a \verb|\halign|.^^A
+% ^^A \setbox0=\hbox{\footnotesize"\iffalse{\fi\ifnum0=`}\fi"}^^A
+% ^^A \setbox2=\hbox{\footnotesize"\ifnum0=`{}\fi"}^^A
+% ^^A \footnote{This adds an extra level of grouping,
+% ^^A which is not really needed. Instead, I could use \box0\ here, and
+% ^^A \box2\ below, however the code here would then have to be moved after
+% ^^A the first line, because of the footnote to page 386 of the \TeX{}Book,
+% ^^A and I do not think I should be writing code that is so obscure as to
+% ^^A be documented in a footnote in an appendix called ``Dirty Tricks''!}
+% ^^A
+% ^^A This mechanism of grabbing an environment body does have the
+% ^^A disadvantage (shared with the AMS alignment environments) that you
+% ^^A can not make extension environments by code such as
+% ^^A\begin{verbatim}
+% ^^A\newenvironment{foo}{\begin{tabularx}{XX}}{\end{tabularx}}
+% ^^A\end{verbatim}
+% ^^A as the code is looking for a literal string \verb"\end{tabularx}" to stop
+% ^^A scanning. Since version (tabularx) 2.02, one may avoid this problem by using
+% ^^A \verb|\tabularx| and \verb|\endtabularx| directly in the definition:
+% ^^A\begin{verbatim}
+% ^^A\newenvironment{foo}{\tabularx{XX}}{\endtabularx}
+% ^^A\end{verbatim}
+% ^^A The scanner now looks for the end of the current environment (\verb|foo| in
+% ^^A this example.) There are some restrictions on this usage, the
+% ^^A principal one being that \verb|\endtabularx| must not be inside any \verb"{ }" pairs
+% ^^A ao that the code before \verb"\endtabularx"  may be extracted and added to the table body
+% ^^A (prior to version (tabularx) 2.09  \verb"\endtabularx" had to be
+% ^^A the \emph{first} token of the `end code' of the environment).
 %    \begin{macrocode}
-  \setlength\TX at target{#1}%
-  \TX at typeout{Target width: #1 = \the\TX at target.}%
-  \toks@{}\TX at get@body}
+ % \def\tabularx#1{%
 %    \end{macrocode}
-% \end{macro}
-%
-
-%  \begin{macro}{\endtabularx}
-% This does not do very much\ldots
+% ^^A Allow \verb"\tabularx" \verb"\endtabularx" (but not \verb"\begin{tabularx}"
+% ^^A \verb"\end{tabularx}") to be used in \verb"\newenvironment" definitions.
 %    \begin{macrocode}
-\let\endtabularx\relax
+ % \edef\TX@{\@currenvir}%
+ %   {\ifnum0=`}\fi
 %    \end{macrocode}
-%  \end{macro}
-%
-% \begin{macro}{\TX at get@body}
-% Place all tokens as far as the first \verb"\end" into a token register.
-% Then call \verb"\TX at find@end" to see if we are at \verb"\end{tabularx}".
+% ^^A \verb"\relax" added at v1.05 so that non-expandable length tokens, like
+% ^^A \verb"\textwidth" do not generate an extra space, and an overfull box.
+% ^^A \verb"\relax" removed again at v4.09 in favour of \verb"\setlength" so if you
+% ^^A use the calc package you can use a width of \verb"(\textwidth-12pt)/2".
 %    \begin{macrocode}
-\long\def\TX at get@body#1\end
-  {\toks@\expandafter{\the\toks@#1}\TX at find@end}
+ %   \setlength\TX at target{#1}%
+ %   \TX at typeout{Target width: #1 = \the\TX at target.}%
+ %   \toks@{}\TX at get@body}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\TX at find@end}
-% If we are at \verb"\end{tabularx}", call \verb"\TX at endtabularx", otherwise
-% add \verb"\end{...}" to the register, and call \verb"\TX at get@body" again.
+% ^^A \end{macro}
+% ^^A
+% ^^A 
+% ^^A  \begin{macro}{\endtabularx}
+% ^^A This does not do very much\ldots
 %    \begin{macrocode}
-\def\TX at find@end#1{%
-  \def\@tempa{#1}%
-  \ifx\@tempa\TX@\expandafter\TX at endtabularx
-  \else\toks@\expandafter
-    {\the\toks@\end{#1}}\expandafter\TX at get@body\fi}
+ % \let\endtabularx\relax
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\TX at find@endtabularxa}
-% split up the end code, and extract the part that lives in the table body.
+% ^^A  \end{macro}
+% ^^A
+% ^^A \begin{macro}{\TX at get@body}
+% ^^A Place all tokens as far as the first \verb"\end" into a token register.
+% ^^A Then call \verb"\TX at find@end" to see if we are at \verb"\end{tabularx}".
 %    \begin{macrocode}
-\long\def\TX at find@endtabularxa
-       #1\endtabularx#2\endtabularx#3\TX at find@endtabularxa{%
-  \ifx\TX@#2\relax\else
-  \toks@\expandafter{\the\toks@#1}%
-  \fi}
+ % \long\def\TX at get@body#1\end
+ %   {\toks@\expandafter{\the\toks@#1}\TX at find@end}
 %    \end{macrocode}
-% \end{macro}
-% \begin{macro}{\TX at find@endtabularxb}
-% split up the end code, and extract the part that lives outside the table body.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\TX at find@end}
+% ^^A If we are at \verb"\end{tabularx}", call \verb"\TX at endtabularx", otherwise
+% ^^A add \verb"\end{...}" to the register, and call \verb"\TX at get@body" again.
 %    \begin{macrocode}
-\long\def\TX at find@endtabularxb
-       #1\endtabularx#2\endtabularx#3\TX at find@endtabularxb{%
-  \ifx\TX@#2%
-    \expandafter\@firstoftwo
-  \else
-     \expandafter\@secondoftwo
-  \fi
-  {#1}{#2}}
+ % \def\TX at find@end#1{%
+ %   \def\@tempa{#1}%
+ %   \ifx\@tempa\TX@\expandafter\TX at endtabularx
+ %   \else\toks@\expandafter
+ %     {\the\toks@\end{#1}}\expandafter\TX at get@body\fi}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\TX at find@endtabularxbb}
-% Helper to avoid needing 15 consecutive \verb"\expandafter"
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\TX at find@endtabularxa}
+% ^^A split up the end code, and extract the part that lives in the table body.
 %    \begin{macrocode}
-\def\TX at find@endtabularxbb{%
-  \expandafter\expandafter\expandafter
-  \TX at find@endtabularxb
-}
+ % \long\def\TX at find@endtabularxa
+ %        #1\endtabularx#2\endtabularx#3\TX at find@endtabularxa{%
+ %   \ifx\TX@#2\relax\else
+ %   \toks@\expandafter{\the\toks@#1}%
+ %   \fi}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\TX@}
-% The string {\ttfamily tabularx} as a macro for testing with \verb"\ifx".
+% ^^A \end{macro}
+% ^^A \begin{macro}{\TX at find@endtabularxb}
+% ^^A split up the end code, and extract the part that lives outside the table body.
 %    \begin{macrocode}
-\def\TX@{tabularx}
+ % \long\def\TX at find@endtabularxb
+ %        #1\endtabularx#2\endtabularx#3\TX at find@endtabularxb{%
+ %   \ifx\TX@#2%
+ %     \expandafter\@firstoftwo
+ %   \else
+ %      \expandafter\@secondoftwo
+ %   \fi
+ %   {#1}{#2}}
 %    \end{macrocode}
-% \end{macro}
-%
-% Now that all the parts of the table specification are stored in
-% registers, we can begin the work of setting the table.
-%
-% The algorithm for finding the correct column widths is as follows.
-% Firstly set the table with each {\ttfamily X} column the width of the
-% final table. Assuming that there is at least one {\ttfamily X} column,
-% this will produce a table that is too wide. Divide the excess width by
-% the number of {\ttfamily X} columns, and reduce the column width by
-% this amount. Reset the table. If the table is not now the correct
-% width, a \verb"\multicolumn" entry must be `hiding' one of the {\ttfamily
-% X} columns, and so there is one less {\ttfamily X} column affecting
-% the width of the table. So we reduce by 1 the number of X columns and
-% repeat the process.
-%
-% \begin{macro}{\TX at endtabularx}
-% Although I have tried to make {\ttfamily tabularx} look like an
-% environment, it is in fact a command, all the work is done by this
-% macro.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\TX at find@endtabularxbb}
+% ^^A Helper to avoid needing 15 consecutive \verb"\expandafter"
 %    \begin{macrocode}
-\def\TX at endtabularx{%
-   \expandafter\expandafter\expandafter
-     \TX at find@endtabularxa\csname end\TX@\endcsname
-     \endtabularx\TX@\endtabularx\TX at find@endtabularxa
+ % \def\TX at find@endtabularxbb{%
+ %   \expandafter\expandafter\expandafter
+ %   \TX at find@endtabularxb
+ % }
 %    \end{macrocode}
-% Define the {\ttfamily X} column, with an internal version of the
-% \verb"\newcolumntype" command. The \verb"\expandafter" commands enable
-% \verb"\NC at newcol"  to get the {\em expansion} of\\
-% \verb"\tabularxcolumn{\TX at col@width}" as its
-% argument. This will be the definition of an {\ttfamily X} column, as
-% discussed in section 4.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\TX@}
+% ^^A The string {\ttfamily tabularx} as a macro for testing with \verb"\ifx".
 %    \begin{macrocode}
-  \expandafter\TX at newcol\expandafter{\tabularxcolumn{\TX at col@width}}%
+ % \def\TX@{tabularx}
 %    \end{macrocode}
-% Initialise the column width, and the number of {\ttfamily X} columns.
-% The number of {\ttfamily X} columns is set to one, which means that
-% the initial count will be one too high, but this value is decremented
-% before it is used in the main loop.
-%
-% Since v1.02, switch the definition of \verb"\verb".
+% ^^A \end{macro}
+% ^^A
+% ^^A Now that all the parts of the table specification are stored in
+% ^^A registers, we can begin the work of setting the table.
+% ^^A
+% ^^A The algorithm for finding the correct column widths is as follows.
+% ^^A Firstly set the table with each {\ttfamily X} column the width of the
+% ^^A final table. Assuming that there is at least one {\ttfamily X} column,
+% ^^A this will produce a table that is too wide. Divide the excess width by
+% ^^A the number of {\ttfamily X} columns, and reduce the column width by
+% ^^A this amount. Reset the table. If the table is not now the correct
+% ^^A width, a \verb"\multicolumn" entry must be `hiding' one of the {\ttfamily
+% ^^A X} columns, and so there is one less {\ttfamily X} column affecting
+% ^^A the width of the table. So we reduce by 1 the number of X columns and
+% ^^A repeat the process.
+% ^^A
+% ^^A \begin{macro}{\TX at endtabularx}
+% ^^A Although I have tried to make {\ttfamily tabularx} look like an
+% ^^A environment, it is in fact a command, all the work is done by this
+% ^^A macro.
 %    \begin{macrocode}
-  \let\verb\TX at verb
+ % \def\TX at endtabularx{%
+ %    \expandafter\expandafter\expandafter
+ %      \TX at find@endtabularxa\csname end\TX@\endcsname
+ %      \endtabularx\TX@\endtabularx\TX at find@endtabularxa
 %    \end{macrocode}
-% Since v1.05, save the values of all \LaTeX\ counters, the list
-% \verb"\cl@@ckpt" contains the names of all the \LaTeX\ counters that have
-% been defined so far. We expand \verb"\setcounter" at this point, as it
-% results in fewer tokens being stored in \verb"\TX at ckpt", but the actual
-% resetting of the counters occurs when \verb"\TX at ckpt" is expanded after
-% each trial run.
-% Actually since v1.07, use something equivalent to the expansion of the
-% original definition of \verb"\setcounter", so that \verb"tabularx" works in
-% conjunction with \verb"calc.sty".
+% ^^A Define the {\ttfamily X} column, with an internal version of the
+% ^^A \verb"\newcolumntype" command. The \verb"\expandafter" commands enable
+% ^^A \verb"\NC at newcol"  to get the {\em expansion} of\\
+% ^^A \verb"\tabularxcolumn{\TX at col@width}" as its
+% ^^A argument. This will be the definition of an {\ttfamily X} column, as
+% ^^A discussed in section 4.
 %    \begin{macrocode}
-  \def\@elt##1{\global\value{##1}\the\value{##1}\relax}%
-  \edef\TX at ckpt{\cl@@ckpt}%
-  \let\@elt\relax
-  \TX at old@table\maxdimen
-  \TX at col@width\TX at target
-  \global\TX at cols\@ne
+ %   \expandafter\TX at newcol\expandafter{\tabularxcolumn{\TX at col@width}}%
 %    \end{macrocode}
-% Typeout some headings (unless this is disabled).
+% ^^A Initialise the column width, and the number of {\ttfamily X} columns.
+% ^^A The number of {\ttfamily X} columns is set to one, which means that
+% ^^A the initial count will be one too high, but this value is decremented
+% ^^A before it is used in the main loop.
+% ^^A
+% ^^A Since v1.02, switch the definition of \verb"\verb".
 %    \begin{macrocode}
-  \TX at typeout@
-    {\@spaces Table Width\@spaces Column Width\@spaces X Columns}%
+ %   \let\verb\TX at verb
+%    \end{macrocode}
+% ^^A Since v1.05, save the values of all \LaTeX\ counters, the list
+% ^^A \verb"\cl@@ckpt" contains the names of all the \LaTeX\ counters that have
+% ^^A been defined so far. We expand \verb"\setcounter" at this point, as it
+% ^^A results in fewer tokens being stored in \verb"\TX at ckpt", but the actual
+% ^^A resetting of the counters occurs when \verb"\TX at ckpt" is expanded after
+% ^^A each trial run.
+% ^^A Actually since v1.07, use something equivalent to the expansion of the
+% ^^A original definition of \verb"\setcounter", so that \verb"tabularx" works in
+% ^^A conjunction with \verb"calc.sty".
+%    \begin{macrocode}
+ %   \def\@elt##1{\global\value{##1}\the\value{##1}\relax}%
+ %   \edef\TX at ckpt{\cl@@ckpt}%
+ %   \let\@elt\relax
+ %   \TX at old@table\maxdimen
+ %   \TX at col@width\TX at target
+ %   \global\TX at cols\@ne
+%    \end{macrocode}
+% ^^A Typeout some headings (unless this is disabled).
+%    \begin{macrocode}
+ %   \TX at typeout@
+ %     {\@spaces Table Width\@spaces Column Width\@spaces X Columns}%
 %    \end{macrocode}%
-% First attempt. Modify the {\ttfamily X} definition to count {\ttfamily
-% X} columns.
+% ^^A First attempt. Modify the {\ttfamily X} definition to count {\ttfamily
+% ^^A X} columns.
 %    \begin{macrocode}
-  \TX at trial{\def\NC at rewrite@X{%
-          \global\advance\TX at cols\@ne\NC at find p{\TX at col@width}}}%
+ %   \TX at trial{\def\NC at rewrite@X{%
+ %           \global\advance\TX at cols\@ne\NC at find p{\TX at col@width}}}%
 %    \end{macrocode}
-% Repeatedly decrease column width until table is the correct width,
-% or stops shrinking, or the columns become two narrow.
-% If there are no multicolumn entries, this will only take one attempt.
+% ^^A Repeatedly decrease column width until table is the correct width,
+% ^^A or stops shrinking, or the columns become two narrow.
+% ^^A If there are no multicolumn entries, this will only take one attempt.
 %    \begin{macrocode}
-  \loop
-    \TX at arith
-    \ifTX@
-    \TX at trial{}%
-  \repeat
+ %   \loop
+ %     \TX at arith
+ %     \ifTX@
+ %     \TX at trial{}%
+ %   \repeat
 %    \end{macrocode}
-% One last time, with warnings back on (see appendix D)
-% use {\ttfamily tabular*} to put it in a box of the right size, in case
-% the algorithm failed to find the correct size.
-%
-% Since v1.04, locally make \verb"\footnotetext" save its argument in a token
-% register.
-% Since v1.06, \verb"\toks@" contains the preamble specification,
-% and possible optional argument, as well as the table body.
+% ^^A One last time, with warnings back on (see appendix D)
+% ^^A use {\ttfamily tabular*} to put it in a box of the right size, in case
+% ^^A the algorithm failed to find the correct size.
+% ^^A
+% ^^A Since v1.04, locally make \verb"\footnotetext" save its argument in a token
+% ^^A register.
+% ^^A Since v1.06, \verb"\toks@" contains the preamble specification,
+% ^^A and possible optional argument, as well as the table body.
 %    \begin{macrocode}
-  {\let\@footnotetext\TX at ftntext\let\@xfootnotenext\TX at xftntext
-    \csname tabular*\expandafter\endcsname\expandafter\TX at target
-      \the\toks@
-    \csname endtabular*\endcsname}%
+ %   {\let\@footnotetext\TX at ftntext\let\@xfootnotenext\TX at xftntext
+ %     \csname tabular*\expandafter\endcsname\expandafter\TX at target
+ %       \the\toks@
+ %     \csname endtabular*\endcsname}%
 %    \end{macrocode}
-% Now the alignment is finished, and the \verb"}" has restored the original
-% meaning of \verb"\@footnotetext" expand the register \verb"\TX at ftn" which will
-% execute a series of\\
-% \verb"\footnotetext["\meta{num}\verb"]{"\meta{note}\verb"}"\\
-% commands. We need to be careful about clearing the register as we may
-% be inside a nested {\ttfamily tabularx}.
+% ^^A Now the alignment is finished, and the \verb"}" has restored the original
+% ^^A meaning of \verb"\@footnotetext" expand the register \verb"\TX at ftn" which will
+% ^^A execute a series of\\
+% ^^A \verb"\footnotetext["\meta{num}\verb"]{"\meta{note}\verb"}"\\
+% ^^A commands. We need to be careful about clearing the register as we may
+% ^^A be inside a nested {\ttfamily tabularx}.
 %    \begin{macrocode}
-  \global\TX at ftn\expandafter{\expandafter}\the\TX at ftn
+ %   \global\TX at ftn\expandafter{\expandafter}\the\TX at ftn
 %    \end{macrocode}
-% Now finish off the {\ttfamily tabularx} environment. Note that we need
-% \verb"\end{tabularx}" here as the \verb"\end{tabularx}" in the user's
-% file is never expanded. Now use \verb"\TX@" rather than \verb"tabularx".
-%
-% We also need to finish off the group started by \verb"{\ifnum0=`}\fi" in
-% the macro \verb"\tabularx".
+% ^^A Now finish off the {\ttfamily tabularx} environment. Note that we need
+% ^^A \verb"\end{tabularx}" here as the \verb"\end{tabularx}" in the user's
+% ^^A file is never expanded. Now use \verb"\TX@" rather than \verb"tabularx".
+% ^^A
+% ^^A We also need to finish off the group started by \verb"{\ifnum0=`}\fi" in
+% ^^A the macro \verb"\tabularx".
 %    \begin{macrocode}
-  \ifnum0=`{\fi}%
-   \expandafter\expandafter\expandafter
-   \TX at find@endtabularxbb
-    \expandafter\end\expandafter{\TX@}%
-    \endtabularx\TX@\endtabularx\TX at find@endtabularxb
-}
+ %   \ifnum0=`{\fi}%
+ %    \expandafter\expandafter\expandafter
+ %    \TX at find@endtabularxbb
+ %     \expandafter\end\expandafter{\TX@}%
+ %     \endtabularx\TX@\endtabularx\TX at find@endtabularxb
+ % }
 %    \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\TX at arith}
-% Calculate the column width for the next try, setting the flag
-% \verb"\ifTX@" to false if the loop should be aborted.
+% ^^A \end{macro}
+% ^^A
+% ^^A
+% ^^A \begin{macro}{\TX at arith}
+% ^^A Calculate the column width for the next try, setting the flag
+% ^^A \verb"\ifTX@" to false if the loop should be aborted.
 %    \begin{macrocode}
-\def\TX at arith{%
-  \TX at false
-  \@tempdimb\maxdimen
-  \divide\@tempdimb\TX at cols
-  \ifdim\TX at col@width>\@tempdimb
-    \TX at typeout@{Don't exceed \maxdimen}%
-    \wd\@tempboxa\maxdimen
-  \fi
-  \ifdim\TX at old@table=\wd\@tempboxa
+ % \def\TX at arith{%
+ %   \TX at false
+ %   \@tempdimb\maxdimen
+ %   \divide\@tempdimb\TX at cols
+ %   \ifdim\TX at col@width>\@tempdimb
+ %     \TX at typeout@{Don't exceed \maxdimen}%
+ %     \wd\@tempboxa\maxdimen
+ %   \fi
+ %   \ifdim\TX at old@table=\wd\@tempboxa
 %    \end{macrocode}
-% If we have reduced the column width, but the table width has not
-% changed, we stop the loop, and output the table (which will cause an
-% over-full alignment) with the previous value of \verb"\TX at col@width".
+% ^^A If we have reduced the column width, but the table width has not
+% ^^A changed, we stop the loop, and output the table (which will cause an
+% ^^A over-full alignment) with the previous value of \verb"\TX at col@width".
 %    \begin{macrocode}
-    \TX at col@width\TX at old@col
-    \TX at typeout@{Reached minimum width, backing up.}%
-  \else
+ %     \TX at col@width\TX at old@col
+ %     \TX at typeout@{Reached minimum width, backing up.}%
+ %   \else
 %    \end{macrocode}
-% Otherwise calculate the amount by which the current table is too wide.
+% ^^A Otherwise calculate the amount by which the current table is too wide.
 %    \begin{macrocode}
-    \dimen@\wd\@tempboxa
-    \advance\dimen@ -\TX at target
-    \ifdim\dimen@<\TX at delta
+ %     \dimen@\wd\@tempboxa
+ %     \advance\dimen@ -\TX at target
+ %     \ifdim\dimen@<\TX at delta
 %    \end{macrocode}
-% If this amount is less than \verb"\TX at delta", stop. (\verb"\TX at delta"
-% should be non-zero otherwise we may miss the target due to rounding
-% error.)
+% ^^A If this amount is less than \verb"\TX at delta", stop. (\verb"\TX at delta"
+% ^^A should be non-zero otherwise we may miss the target due to rounding
+% ^^A error.)
 %    \begin{macrocode}
-      \TX at typeout@{Reached target.}%
-    \else
+ %       \TX at typeout@{Reached target.}%
+ %     \else
 %    \end{macrocode}
-% Reduce the number of effective {\ttfamily X} columns by one. (Checking
-% that we do not get 0, as this would produce an error later.) Then
-% divide excess width by the number of effective columns, and calculate
-% the new column width. Temporarily store this value (times $-1$) in
-% \verb"\dimen@".
+% ^^A Reduce the number of effective {\ttfamily X} columns by one. (Checking
+% ^^A that we do not get 0, as this would produce an error later.) Then
+% ^^A divide excess width by the number of effective columns, and calculate
+% ^^A the new column width. Temporarily store this value (times $-1$) in
+% ^^A \verb"\dimen@".
 %    \begin{macrocode}
-      \ifnum\TX at cols>\@ne
-        \advance\TX at cols\m at ne
-      \fi
-      \divide\dimen@\TX at cols
-      \advance\dimen@ -\TX at col@width
-      \ifdim \dimen@ >\z@
+ %       \ifnum\TX at cols>\@ne
+ %         \advance\TX at cols\m at ne
+ %       \fi
+ %       \divide\dimen@\TX at cols
+ %       \advance\dimen@ -\TX at col@width
+ %       \ifdim \dimen@ >\z@
 %    \end{macrocode}
-% If the new width would be too narrow, abort the loop. At the moment
-% too narrow, means less than 0\,pt!
-%
-% Prior to v2.03, if the loop was aborted here, the X columns were left
-% with the width of the previous run, but this may make the table far
-% too wide as initial guesses are always too big. Now force to
-% \verb"\TX at error@width" which defaults to be 1em. If you want to
-% get the old behaviour stick\\
-%  \verb"\renewcommand\TX at error@width{\TX at col@width}"\\
-%  in a package file loaded after \textsf{tabularx}.
+% ^^A If the new width would be too narrow, abort the loop. At the moment
+% ^^A too narrow, means less than 0\,pt!
+% ^^A
+% ^^A Prior to v2.03, if the loop was aborted here, the X columns were left
+% ^^A with the width of the previous run, but this may make the table far
+% ^^A too wide as initial guesses are always too big. Now force to
+% ^^A \verb"\TX at error@width" which defaults to be 1em. If you want to
+% ^^A get the old behaviour stick\\
+% ^^A  \verb"\renewcommand\TX at error@width{\TX at col@width}"\\
+% ^^A  in a package file loaded after \textsf{tabularx}.
 %    \begin{macrocode}
-        %\PackageWarning{tabularx}%
-         \@memwarn{X Columns too narrow (table too wide)\MessageBreak}% <-- change here
-        \TX at col@width\TX at error@width\relax
-      \else
+ %         %\PackageWarning{tabularx}%
+ %          \@memwarn{X Columns too narrow (table too wide)\MessageBreak}% <-- change here
+ %         \TX at col@width\TX at error@width\relax
+ %       \else
 %    \end{macrocode}
-% Otherwise save the old settings, and set the new column width. Set the
-% flag to true so that the table will be set, and the loop will be
-% executed again.
+% ^^A Otherwise save the old settings, and set the new column width. Set the
+% ^^A flag to true so that the table will be set, and the loop will be
+% ^^A executed again.
 %    \begin{macrocode}
-        \TX at old@col\TX at col@width
-        \TX at old@table\wd\@tempboxa
-        \TX at col@width-\dimen@
-        \TX at true
-      \fi
-    \fi
-  \fi}
+ %         \TX at old@col\TX at col@width
+ %         \TX at old@table\wd\@tempboxa
+ %         \TX at col@width-\dimen@
+ %         \TX at true
+ %       \fi
+ %     \fi
+ %   \fi}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\TX at error@width}
-% If the calculated width is negative, use this instead.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\TX at error@width}
+% ^^A If the calculated width is negative, use this instead.
 %    \begin{macrocode}
-\def\TX at error@width{1em}
+ % \def\TX at error@width{1em}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\TX at delta}
-% Accept a table that is within \verb"\hfuzz" of the correct width.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\TX at delta}
+% ^^A Accept a table that is within \verb"\hfuzz" of the correct width.
 %    \begin{macrocode}
-\TX at delta\hfuzz
+ % \TX at delta\hfuzz
 %    \end{macrocode}
-% \end{macro}
-%
-% Initialise the {\ttfamily X} column. The definition can be empty here,
-% as it is set for each {\ttfamily tabularx} environment.
+% ^^A \end{macro}
+% ^^A
+% ^^A Initialise the {\ttfamily X} column. The definition can be empty here,
+% ^^A as it is set for each {\ttfamily tabularx} environment.
 %    \begin{macrocode}
-\newcolumntype{X}{}
+ % \newcolumntype{X}{}
 %    \end{macrocode}
-%
-% \begin{macro}{\tabularxcolumn}
-% The default definition of {\ttfamily X} is \verb"p{#1}".
+% ^^A
+% ^^A \begin{macro}{\tabularxcolumn}
+% ^^A The default definition of {\ttfamily X} is \verb"p{#1}".
 %    \begin{macrocode}
-\def\tabularxcolumn#1{p{#1}}
+ % \def\tabularxcolumn#1{p{#1}}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\TX at newcol}
-% A little macro just used to cut down the number of \verb"\expandafter"
-% commands needed.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\TX at newcol}
+% ^^A A little macro just used to cut down the number of \verb"\expandafter"
+% ^^A commands needed.
 %    \begin{macrocode}
-\def\TX at newcol{\newcol@{X}[0]}
+ % \def\TX at newcol{\newcol@{X}[0]}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\TX at trial}
-% Make a test run.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\TX at trial}
+% ^^A Make a test run.
 %    \begin{macrocode}
-\def\TX at trial#1{%
-  \setbox\@tempboxa\hbox{%
+ % \def\TX at trial#1{%
+ %   \setbox\@tempboxa\hbox{%
 %    \end{macrocode}
-% Any extra commands. This is used on the first run to count the number
-% of {\ttfamily X} columns.
+% ^^A Any extra commands. This is used on the first run to count the number
+% ^^A of {\ttfamily X} columns.
 %    \begin{macrocode}
-    #1\relax
+ %     #1\relax
 %    \end{macrocode}
-% Since v1.04, make \verb"\footnotetext" gobble its arguments. Also locally
-% clear \verb"\TX at vwarn" so that the warning is generated by the {\ttfamily
-% final} run, and does not appear in the middle of the table if
-% \verb"\tracingtabularx".
+% ^^A Since v1.04, make \verb"\footnotetext" gobble its arguments. Also locally
+% ^^A clear \verb"\TX at vwarn" so that the warning is generated by the {\ttfamily
+% ^^A final} run, and does not appear in the middle of the table if
+% ^^A \verb"\tracingtabularx".
 %    \begin{macrocode}
-  \let\@footnotetext\TX at trial@ftn
-  \let\TX at vwarn\@empty
+ %   \let\@footnotetext\TX at trial@ftn
+ %   \let\TX at vwarn\@empty
 %    \end{macrocode}
-% Do not nest {\ttfamily tabularx} environments during trial runs. This
-% would waste time, and the global setting of \verb"\TX at cols" would break the
-% algorithm.
+% ^^A Do not nest {\ttfamily tabularx} environments during trial runs. This
+% ^^A would waste time, and the global setting of \verb"\TX at cols" would break the
+% ^^A algorithm.
 %    \begin{macrocode}
-   \expandafter\let\expandafter\tabularx\csname tabular*\endcsname
-   \expandafter\let\expandafter\endtabularx\csname endtabular*\endcsname
+ %    \expandafter\let\expandafter\tabularx\csname tabular*\endcsname
+ %    \expandafter\let\expandafter\endtabularx\csname endtabular*\endcsname
 %    \end{macrocode}
-% Added at v1.05: disable \verb"\write"s during a trial run. This trick is
-% from the \TeX{}Book.\footnote{Actually the \TeX{}Book trick does
-% not work correctly, so changed for v2.05.}
+% ^^A Added at v1.05: disable \verb"\write"s during a trial run. This trick is
+% ^^A from the \TeX{}Book.\footnote{Actually the \TeX{}Book trick does
+% ^^A not work correctly, so changed for v2.05.}
 %    \begin{macrocode}
-   \def\write{\begingroup
-     \def\let{\afterassignment\endgroup\toks@}%
-        \afterassignment\let\count@}%
+ %    \def\write{\begingroup
+ %      \def\let{\afterassignment\endgroup\toks@}%
+ %         \afterassignment\let\count@}%
 %    \end{macrocode}
-% Turn off warnings (see appendix D). Also prevent them being turned
-% back on by setting the parameter names to be registers.
+% ^^A Turn off warnings (see appendix D). Also prevent them being turned
+% ^^A back on by setting the parameter names to be registers.
 %    \begin{macrocode}
-    \hbadness\@M
-    \hfuzz\maxdimen
-    \let\hbadness\@tempcnta
-    \let\hfuzz\@tempdima
+ %     \hbadness\@M
+ %     \hfuzz\maxdimen
+ %     \let\hbadness\@tempcnta
+ %     \let\hfuzz\@tempdima
 %    \end{macrocode}
-% Make the table, and finish the hbox.
-% Since v1.06, \verb"\toks@" contains the preamble specification,
-% and possible optional argument, as well as the table body.
+% ^^A Make the table, and finish the hbox.
+% ^^A Since v1.06, \verb"\toks@" contains the preamble specification,
+% ^^A and possible optional argument, as well as the table body.
 %    \begin{macrocode}
-    \expandafter\tabular\the\toks@
-    \endtabular}%
+ %     \expandafter\tabular\the\toks@
+ %     \endtabular}%
 %    \end{macrocode}
-% Since v1.05 reset all \LaTeX\ counters, by executing \verb"\TX at ckpt".
+% ^^A Since v1.05 reset all \LaTeX\ counters, by executing \verb"\TX at ckpt".
 %    \begin{macrocode}
-  \TX at ckpt
+ %   \TX at ckpt
 %    \end{macrocode}
-% Print some statistics.
-% Added \verb"\TX at align" in v1.05, to line up the columns.
+% ^^A Print some statistics.
+% ^^A Added \verb"\TX at align" in v1.05, to line up the columns.
 %    \begin{macrocode}
-  \TX at typeout@{\@spaces
-     \expandafter\TX at align
-        \the\wd\@tempboxa\space\space\space\space\space\@@
-     \expandafter\TX at align
-        \the\TX at col@width\space\space\space\space\space\@@
-     \@spaces\the\TX at cols}}
+ %   \TX at typeout@{\@spaces
+ %      \expandafter\TX at align
+ %         \the\wd\@tempboxa\space\space\space\space\space\@@
+ %      \expandafter\TX at align
+ %         \the\TX at col@width\space\space\space\space\space\@@
+ %      \@spaces\the\TX at cols}}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\TX at align}
-% Macro added at v1.05, to improve the printing of the tracing info.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\TX at align}
+% ^^A Macro added at v1.05, to improve the printing of the tracing info.
 %    \begin{macrocode}
-\def\TX at align#1.#2#3#4#5#6#7#8#9\@@{%
-  \ifnum#1<10 \space\fi
-  \ifnum#1<100 \space\fi
-  \ifnum#1<\@m\space\fi
-  \ifnum#1<\@M\space\fi
-  #1.#2#3#4#5#6#7#8\space\space}
+ % \def\TX at align#1.#2#3#4#5#6#7#8#9\@@{%
+ %   \ifnum#1<10 \space\fi
+ %   \ifnum#1<100 \space\fi
+ %   \ifnum#1<\@m\space\fi
+ %   \ifnum#1<\@M\space\fi
+ %   #1.#2#3#4#5#6#7#8\space\space}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\arraybackslash}
-% \verb"\\" hack.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\arraybackslash}
+% ^^A \verb"\\" hack.
 %    \begin{macrocode}
-\ifx\arraybackslash\@undefined
-\def\arraybackslash{\let\\\tabularnewline}
-\fi
+ % \ifx\arraybackslash\@undefined
+ % \def\arraybackslash{\let\\\tabularnewline}
+ % \fi
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tracingtabularx}
-% Print statistics on column and table widths.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\tracingtabularx}
+% ^^A Print statistics on column and table widths.
 %    \begin{macrocode}
-\def\tracingtabularx{%
-  %\def\TX at typeout{\PackageWarningNoLine{tabularx}}%
-  \def\TX at typeout{\ClassWarningNoLine{memoir}}% <--- changed
-  \def\TX at typeout@##1{\typeout{(tabularx) ##1}}}
+ % \def\tracingtabularx{%
+ %   %\def\TX at typeout{\PackageWarningNoLine{tabularx}}%
+ %   \def\TX at typeout{\ClassWarningNoLine{memoir}}% <--- changed
+ %   \def\TX at typeout@##1{\typeout{(tabularx) ##1}}}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\TX at typeout}
-% The default is to be to be quiet
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\TX at typeout}
+% ^^A The default is to be to be quiet
 %    \begin{macrocode}
-\let\TX at typeout\@gobble
-\let\TX at typeout@\@gobble
+ % \let\TX at typeout\@gobble
+ % \let\TX at typeout@\@gobble
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\TX at ftn}
-% A token register for saving footnote texts.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\TX at ftn}
+% ^^A A token register for saving footnote texts.
 %    \begin{macrocode}
-\newtoks\TX at ftn
+ % \newtoks\TX at ftn
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\TX at ftntext}
-% \begin{macro}{\TX at xftntext}
-% Inside the alignment just save up the footnote text in a token
-% register.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\TX at ftntext}
+% ^^A \begin{macro}{\TX at xftntext}
+% ^^A Inside the alignment just save up the footnote text in a token
+% ^^A register.
 %    \begin{macrocode}
-\long\def\TX at ftntext#1{%
-  \edef\@tempa{\the\TX at ftn\noexpand\footnotetext
-                    [\the\csname c@\@mpfn\endcsname]}%
-  \global\TX at ftn\expandafter{\@tempa{#1}}}%
-\long\def\TX at xftntext[#1]#2{%
-  \global\TX at ftn\expandafter{\the\TX at ftn\footnotetext[#1]{#2}}}
+ % \long\def\TX at ftntext#1{%
+ %   \edef\@tempa{\the\TX at ftn\noexpand\footnotetext
+ %                     [\the\csname c@\@mpfn\endcsname]}%
+ %   \global\TX at ftn\expandafter{\@tempa{#1}}}%
+ % \long\def\TX at xftntext[#1]#2{%
+ %   \global\TX at ftn\expandafter{\the\TX at ftn\footnotetext[#1]{#2}}}
 %    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\TX at trial@ftn}
-% On trial runs, gobble footnote texts.
+% ^^A \end{macro}
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\TX at trial@ftn}
+% ^^A On trial runs, gobble footnote texts.
 %    \begin{macrocode}
-\long\def\TX at trial@ftn#1{}
+ % \long\def\TX at trial@ftn#1{}
 %    \end{macrocode}
-% \end{macro}
-%
-% This last section was added at Version 1.02. Previous versions
-% documented the fact that \verb"\verb" did not work inside {\ttfamily
-% tabularx}, but that did not stop people using it! This usually put
-% \LaTeX\ into an irrecoverable error position, with error messages that
-% did not mention the cause of the error. The `poor man's \verb"\verb"' (and
-% \verb"\verb*") defined here is based on page 382 of the \TeX{}Book. As
-% explained there, doing verbatim this way means that spaces are not
-% treated correctly, and so \verb"\verb*" may well be useless, however I
-% consider this section of code to be error-recovery, rather than a real
-% implementation of verbatim.
-%
-% The mechanism is quite general, and any macro which wants to allow a
-% form of \verb"\verb" to be used within its argument may
-% \verb"\let\verb=\TX at verb". (Making sure to restore the real definition
-% later!)
-%
-% \verb"\verb" and \verb"\verb*" are subject to the following restrictions:
-% \begin{enumerate}
-% \item Spaces in the argument are not read verbatim, but may be skipped
-%       according to \TeX's usual rules.
-% \item Spaces will be added to the output after control words, even if
-%       they were not present in the input.
-% \item Unless the argument is a single space, any trailing space,
-%       whether in the original argument, or added as in (2),
-%       will be omitted.
-% \item The argument must not end with \verb"\", so \verb"\verb|\|" is not
-%      allowed, however, because of (3), \verb"\verb|\ |" produces
-%      \verb"\".
-% \item The argument must be balanced with respect to \verb"{" and \verb"}". So
-%      \verb"\verb|{|" is not allowed.
-% \item A comment character like \verb"%" will not appear verbatim. It will
-%       act as usual, commenting out the rest of the input line!
-% \item The combinations \verb"?`" and \verb"!`" will appear as
-%       {\ttfamily?`} and {\ttfamily!`} if the {\ttfamily cmtt} font is
-%       being used.
-% \end{enumerate}
-%
-% \begin{macro}{\TX at verb}
-% The internal definition of \verb"\verb". Spaces will be replaced by \verb"~", so
-% for the star-form, \verb"\let" \verb"~" be \verb*| |, which we obtain as
-% \verb"\uppercase{*}". Use \verb"{\ifnum0=`}\fi" rather than \verb"\bgroup" to allow
-% \verb"&" to appear in the argument.
+% ^^A \end{macro}
+% ^^A
+% ^^A This last section was added at Version 1.02. Previous versions
+% ^^A documented the fact that \verb"\verb" did not work inside {\ttfamily
+% ^^A tabularx}, but that did not stop people using it! This usually put
+% ^^A \LaTeX\ into an irrecoverable error position, with error messages that
+% ^^A did not mention the cause of the error. The `poor man's \verb"\verb"' (and
+% ^^A \verb"\verb*") defined here is based on page 382 of the \TeX{}Book. As
+% ^^A explained there, doing verbatim this way means that spaces are not
+% ^^A treated correctly, and so \verb"\verb*" may well be useless, however I
+% ^^A consider this section of code to be error-recovery, rather than a real
+% ^^A implementation of verbatim.
+% ^^A
+% ^^A The mechanism is quite general, and any macro which wants to allow a
+% ^^A form of \verb"\verb" to be used within its argument may
+% ^^A \verb"\let\verb=\TX at verb". (Making sure to restore the real definition
+% ^^A later!)
+% ^^A
+% ^^A \verb"\verb" and \verb"\verb*" are subject to the following restrictions:
+% ^^A \begin{enumerate}
+% ^^A \item Spaces in the argument are not read verbatim, but may be skipped
+% ^^A       according to \TeX's usual rules.
+% ^^A \item Spaces will be added to the output after control words, even if
+% ^^A       they were not present in the input.
+% ^^A \item Unless the argument is a single space, any trailing space,
+% ^^A       whether in the original argument, or added as in (2),
+% ^^A       will be omitted.
+% ^^A \item The argument must not end with \verb"\", so \verb"\verb|\|" is not
+% ^^A      allowed, however, because of (3), \verb"\verb|\ |" produces
+% ^^A      \verb"\".
+% ^^A \item The argument must be balanced with respect to \verb"{" and \verb"}". So
+% ^^A      \verb"\verb|{|" is not allowed.
+% ^^A \item A comment character like \verb"%" will not appear verbatim. It will
+% ^^A       act as usual, commenting out the rest of the input line!
+% ^^A \item The combinations \verb"?`" and \verb"!`" will appear as
+% ^^A       {\ttfamily?`} and {\ttfamily!`} if the {\ttfamily cmtt} font is
+% ^^A       being used.
+% ^^A \end{enumerate}
+% ^^A
+% ^^A \begin{macro}{\TX at verb}
+% ^^A The internal definition of \verb"\verb". Spaces will be replaced by \verb"~", so
+% ^^A for the star-form, \verb"\let" \verb"~" be \verb*| |, which we obtain as
+% ^^A \verb"\uppercase{*}". Use \verb"{\ifnum0=`}\fi" rather than \verb"\bgroup" to allow
+% ^^A \verb"&" to appear in the argument.
 %    \begin{macrocode}
-{\uccode`\*=`\ %
-\uppercase{\gdef\TX at verb{%
-  \leavevmode\null\TX at vwarn
-  {\ifnum0=`}\fi\ttfamily\let\\\ignorespaces
-  \@ifstar{\let~*\TX at vb}{\TX at vb}}}}
+ % {\uccode`\*=`\ %
+ % \uppercase{\gdef\TX at verb{%
+ %   \leavevmode\null\TX at vwarn
+ %   {\ifnum0=`}\fi\ttfamily\let\\\ignorespaces
+ %   \@ifstar{\let~*\TX at vb}{\TX at vb}}}}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\TX at vb}
-% Get the `almost verbatim' text using \verb"\meaning". The `\verb"!"' is added to
-% the front of the user supplied text, to ensure that the whole argument
-% does not consist of a single \verb"{ }" group. \TeX\ would strip the outer
-% braces from such a group. The `\verb"!"' will be removed later.
-%
-% Originally I followed Knuth, and had \verb"\def\@tempa{##1}", however this
-% did not allow \verb"#" to appear in the argument. So in v1.04, I changed
-% this to to use a token register, and \verb"\edef". This allows \verb"#" appear,
-% but makes each one appear twice!, so later we loop through, replacing
-% \verb"##" by \verb"#".
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\TX at vb}
+% ^^A Get the `almost verbatim' text using \verb"\meaning". The `\verb"!"' is added to
+% ^^A the front of the user supplied text, to ensure that the whole argument
+% ^^A does not consist of a single \verb"{ }" group. \TeX\ would strip the outer
+% ^^A braces from such a group. The `\verb"!"' will be removed later.
+% ^^A
+% ^^A Originally I followed Knuth, and had \verb"\def\@tempa{##1}", however this
+% ^^A did not allow \verb"#" to appear in the argument. So in v1.04, I changed
+% ^^A this to to use a token register, and \verb"\edef". This allows \verb"#" appear,
+% ^^A but makes each one appear twice!, so later we loop through, replacing
+% ^^A \verb"##" by \verb"#".
 %    \begin{macrocode}
-\def\TX at vb#1{\def\@tempa##1#1{\toks@{##1}\edef\@tempa{\the\toks@}%
-    \expandafter\TX at v\meaning\@tempa\\ \\\ifnum0=`{\fi}}\@tempa!}
+ % \def\TX at vb#1{\def\@tempa##1#1{\toks@{##1}\edef\@tempa{\the\toks@}%
+ %     \expandafter\TX at v\meaning\@tempa\\ \\\ifnum0=`{\fi}}\@tempa!}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\TX at v}
-% Strip the initial segment of the \verb"\meaning", including the `\verb"!"'
-% added earlier.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\TX at v}
+% ^^A Strip the initial segment of the \verb"\meaning", including the `\verb"!"'
+% ^^A added earlier.
 %    \begin{macrocode}
-\def\TX at v#1!{\afterassignment\TX at vfirst\let\@tempa= }
+ % \def\TX at v#1!{\afterassignment\TX at vfirst\let\@tempa= }
 %    \end{macrocode}
-% \end{macro}
-%
-% As explained above we are going to replace \verb"##" pairs by \verb"#". To do
-% this we need non-special \verb"#" tokens.  Make \verb"*" into a parameter
-% token so that we can define macros with arguments. The normal meanings
-% will be restored by the \verb"\endgroup" later.
+% ^^A \end{macro}
+% ^^A
+% ^^A As explained above we are going to replace \verb"##" pairs by \verb"#". To do
+% ^^A this we need non-special \verb"#" tokens.  Make \verb"*" into a parameter
+% ^^A token so that we can define macros with arguments. The normal meanings
+% ^^A will be restored by the \verb"\endgroup" later.
 %    \begin{macrocode}
-\begingroup
-\catcode`\*=\catcode`\#
-\catcode`\#=12
+ % \begingroup
+ % \catcode`\*=\catcode`\#
+ % \catcode`\#=12
 %    \end{macrocode}
-%
-% \begin{macro}{\TX at vfirst}
-% As a special case, prevent the first character from being dropped.
-% This makes \verb"\verb*| |" produce \verb*| |. Then call \verb"\TX at v@".
-% This is slightly tricky since v1.04, as I have to ensure that an
-% actual \verb"#" rather than a command \verb"\let" to \verb"#" is passed on if the
-% first character is \verb"#".
+% ^^A
+% ^^A \begin{macro}{\TX at vfirst}
+% ^^A As a special case, prevent the first character from being dropped.
+% ^^A This makes \verb"\verb*| |" produce \verb*| |. Then call \verb"\TX at v@".
+% ^^A This is slightly tricky since v1.04, as I have to ensure that an
+% ^^A actual \verb"#" rather than a command \verb"\let" to \verb"#" is passed on if the
+% ^^A first character is \verb"#".
 %    \begin{macrocode}
-\gdef\TX at vfirst{%
-  \if\@tempa#%
-    \def\@tempb{\TX at v@#}%
-  \else
-    \let\@tempb\TX at v@
-    \if\@tempa\space~\else\@tempa\fi
-  \fi
-  \@tempb}
+ % \gdef\TX at vfirst{%
+ %   \if\@tempa#%
+ %     \def\@tempb{\TX at v@#}%
+ %   \else
+ %     \let\@tempb\TX at v@
+ %     \if\@tempa\space~\else\@tempa\fi
+ %   \fi
+ %   \@tempb}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\TX at v@}
-% Loop through the \verb"\meaning", replacing all spaces by \verb"~". If the last
-% character is a space it is dropped, so that \verb"\verb*|\LaTeX|" produces
-% \verb"\LaTeX" not \verb*|\LaTeX |. The rewritten tokens are then further
-% processed to replace \verb"##" pairs.
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\TX at v@}
+% ^^A Loop through the \verb"\meaning", replacing all spaces by \verb"~". If the last
+% ^^A character is a space it is dropped, so that \verb"\verb*|\LaTeX|" produces
+% ^^A \verb"\LaTeX" not \verb*|\LaTeX |. The rewritten tokens are then further
+% ^^A processed to replace \verb"##" pairs.
 %    \begin{macrocode}
-\gdef\TX at v@*1 *2{%
-  \TX at v@hash*1##\relax\if*2\\\else~\expandafter\TX at v@\fi*2}
+ % \gdef\TX at v@*1 *2{%
+ %   \TX at v@hash*1##\relax\if*2\\\else~\expandafter\TX at v@\fi*2}
 %    \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\TX at v@hash}
-% The inner loop, replacing \verb"##" by \verb"#".
+% ^^A \end{macro}
+% ^^A
+% ^^A \begin{macro}{\TX at v@hash}
+% ^^A The inner loop, replacing \verb"##" by \verb"#".
 %    \begin{macrocode}
-\gdef\TX at v@hash*1##*2{*1\ifx*2\relax\else#\expandafter\TX at v@hash\fi*2}
+ % \gdef\TX at v@hash*1##*2{*1\ifx*2\relax\else#\expandafter\TX at v@hash\fi*2}
 %    \end{macrocode}
-% \end{macro}
-%
-% As promised, we now restore the normal meanings of \verb"#" and \verb"*".
+% ^^A \end{macro}
+% ^^A
+% ^^A As promised, we now restore the normal meanings of \verb"#" and \verb"*".
 %    \begin{macrocode}
-\endgroup
+ % \endgroup
 %    \end{macrocode}
-%
-% \begin{macro}{\TX at vwarn}
-% Warn the user the first time this \verb"\verb" is used.
+% ^^A
+% ^^A \begin{macro}{\TX at vwarn}
+% ^^A Warn the user the first time this \verb"\verb" is used.
 %    \begin{macrocode}
-\def\TX at vwarn{%
-  \@warning{\noexpand\verb may be unreliable inside tabularx}%
-  \global\let\TX at vwarn\@empty}
+ % \def\TX at vwarn{%
+ %   \@warning{\noexpand\verb may be unreliable inside tabularx}%
+ %   \global\let\TX at vwarn\@empty}
 %    \end{macrocode}
-% \end{macro}
+% ^^A \end{macro}
 %    \begin{macrocode}
-
-%%%%%%%%%% end Tabularx package code v2.11 %%%%%%%%%%%%%%%%%%%%%
-
-
-
-
+ % 
+ % %%%%%%%%%% end Tabularx package code v2.11 %%%%%%%%%%%%%%%%%%%%%
+ % 
+ % 
+ % 
+ % 
 %    \end{macrocode}
-%
-%    At this point we had better stop anyone trying to load the several
-% tabular-related packages (as effectively they are already loaded).
+% ^^A
+% ^^A    At this point we had better stop anyone trying to load the several
+% ^^A tabular-related packages (as effectively they are already loaded).
 %    \begin{macrocode}
-%%\@memfakeusepackage{array}
-%%\@memfakeusepackage{dcolumn}
-%%\@memfakeusepackage{delarray}
-%%\@memfakeusepackage{tabularx}
-
+ % %%\@memfakeusepackage{array}
+ % %%\@memfakeusepackage{dcolumn}
+ % %%\@memfakeusepackage{delarray}
+ % %%\@memfakeusepackage{tabularx}
+ % 
 %    \end{macrocode}
-%
-%
+% ^^A
+% ^^A
 %  
 % \subsection{Fear's rules}
 %
@@ -36060,8 +36130,10 @@
 % v2.4b (2005) and c (2008) are some copyright years.}
 % \changes{v3.7g}{2018/03/05}{Embedded the latest version of the
 % \Lpack{array} package}
+% \changes{v3.7h}{2018/09/06}{\Lpack{array} no longer embedded,
+% required instead}
 %    \begin{macrocode}
-\EmulatedPackage{array}[2016/10/06]
+ % \EmulatedPackage{array}[2016/10/06]
 \EmulatedPackage{booktabs}[2016/05/16]
 \EmulatedPackage{ccaption}[2008/07/23]
 \EmulatedPackage{changepage}[2008/07/23]
@@ -36068,12 +36140,18 @@
 \EmulatedPackage{chngcntr}[2008/07/23]
 \EmulatedPackage{chngpage}[2008/07/23]
 \EmulatedPackage{crop}
-\EmulatedPackage{dcolumn}[2008/07/23]
 %    \end{macrocode}
+% \changes{v3.7h}{2018/09/06}{\Lpack{dcolumn} is no longer embedded,
+% emulation removed. We require it instead}
+%    \begin{macrocode}
+ % \EmulatedPackage{dcolumn}[2008/07/23]
+%    \end{macrocode}
 % \changes{v3.7g}{2018/03/06}{Adjusted the date for \Lpack{delarray},
 % the code is the same}
+% \changes{v3.7h}{2018/09/06}{\Lpack{delarray} is no longer embedded,
+% emulation removed. We require it instead}
 %    \begin{macrocode}
-\EmulatedPackage{delarray}[2014/10/28]
+ % \EmulatedPackage{delarray}[2014/10/28]
 \EmulatedPackage{enumerate}[2008/07/23]
 \EmulatedPackage{epigraph}[2008/07/23]
 %%%%%\EmulatedPackage{framed}[2008/07/23]
@@ -36100,8 +36178,10 @@
 \EmulatedPackage{showidx}[2008/07/23]
 %    \end{macrocode}
 % \changes{v3.7g}{2018/03/02}{Updated the embedded version of \Lpack{tabularx} to v2.11 2016/02/03}
+% \changes{v3.7h}{2018/09/08}{\Lpack{tabularx} is no longer emulated,
+% but a required package}
 %    \begin{macrocode}
-\EmulatedPackage{tabularx}[2016/02/03]
+ % \EmulatedPackage{tabularx}[2016/02/03]
 \EmulatedPackage{titleref}[2008/07/23]
 \EmulatedPackage{titling}[2008/07/23]
 \EmulatedPackage{tocbibind}[2008/07/23]

Modified: trunk/Master/texmf-dist/tex/latex/memoir/memoir.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/memoir/memoir.cls	2018-12-12 01:23:05 UTC (rev 49393)
+++ trunk/Master/texmf-dist/tex/latex/memoir/memoir.cls	2018-12-12 21:24:10 UTC (rev 49394)
@@ -28,8 +28,8 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{memoir}%
-  [2018/04/04 v3.7g configurable book, report, article document class]
-\newcommand\memversion{v3.7g, 2018/04/04}
+  [2018/12/12 v3.7h configurable book, report, article document class]
+\newcommand\memversion{v3.7h, 2018/12/12}
 \newcommand*{\@ptsize}{}
 \newcommand*{\@memptsize}{}
 \newlength{\onelineskip}
@@ -1649,7 +1649,7 @@
   The material used in the footer is too large^^J%
   (\the\mem at maxfootheight) for the given foot skip
   (\the\footskip), it is recommended to^^J%
-  either increase the foot skip or redesign the fotoer^^J%
+  either increase the foot skip or redesign the footer^^J%
   (in both cases you will find help in the memoir manual).%
 }
 \newcommand\mem at hvboxm[1]{%
@@ -1850,7 +1850,7 @@
         \@memerror{%
           Unknown mark setting type `#2' for #1mark}{%
           I expected `left', `both' or `right'. \MessageBreak
-          I will assume you meant `both'}%
+          I will assume you meant `both'}% 
       \fi
       \@namedef{#1mark}{\markboth{\memUChead{#3}}{\memUChead{#3}}}%
     \fi
@@ -1907,7 +1907,7 @@
         \@memerror{%
         Unknown mark setting type `#2' for #1mark}{%
         I expected `left', `both' or `right'. \MessageBreak
-        I will assume you meant `both'}%
+        I will assume you meant `both'}% 
       \fi
     \@namedef{#1mark}##1{%
       \@setclcnt{#1}{@memmarkcntra}%
@@ -2179,7 +2179,7 @@
   \setSpacing{\m at m@singlespace}%
   \edef\m at m@footnote at spacing{\baselinestretch}%
   \edef\m at m@float at spacing{\baselinestretch}%
-  \vskip\baselineskip% correction for coming into single spacing
+  \@ifstar{}{\ifx\@nodocument\relax\vskip\baselineskip\fi}% correction for coming into single spacing
 }
 \SingleSpacing
 
@@ -5258,329 +5258,337 @@
 \renewcommand{\theequation}{%
   \ifnum \c at chapter>\z@ \thechapter.\fi \@arabic\c at equation}
 
-
-%%%%%%%%%% Array package code %%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%% With acknowledgements to %%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%% Frank Mittelbach & David Carlisle %%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%% Copy corresponds to array.sty 2016/10/06 v2.4d %%%%%%%%%
-
-\def\@addtopreamble#1{\xdef\@preamble{\@preamble #1}}
-\def\@testpach{\@chclass
- \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
-  \ifnum \@lastchclass=7 5 \else
-   \ifnum \@lastchclass=8 \tw@ \else
-    \ifnum \@lastchclass=9 \thr@@
-   \else \z@
-   \ifnum \@lastchclass = 10 \else
-   \edef\@nextchar{\expandafter\string\@nextchar}%
-   \@chnum
-   \if \@nextchar c\z@ \else
-    \if \@nextchar l\@ne \else
-     \if \@nextchar r\tw@ \else
-   \z@ \@chclass
-   \if\@nextchar |\@ne \else
-    \if \@nextchar !6 \else
-     \if \@nextchar @7 \else
-      \if \@nextchar <8 \else
-       \if \@nextchar >9 \else
-  10
-  \@chnum
-  \if \@nextchar m\thr@@\else
-   \if \@nextchar p4 \else
-    \if \@nextchar b5 \else
-   \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi
-   \fi \fi  \fi  \fi  \fi  \fi  \fi \fi \fi \fi \fi \fi}
-\def\@xexpast#1*#2#3#4\@@{%
-   \@tempcnta #2
-   \toks@={#1}\@temptokena={#3}%
-   \let\the at toksz\relax \let\the at toks\relax
-   \def\@tempa{\the at toksz}%
-   \ifnum\@tempcnta >0 \@whilenum\@tempcnta >0\do
-     {\edef\@tempa{\@tempa\the at toks}\advance \@tempcnta \m at ne}%
-       \let \@tempb \@xexpast \else
-       \let \@tempb \@xexnoop \fi
-   \def\the at toksz{\the\toks@}\def\the at toks{\the\@temptokena}%
-   \edef\@tempa{\@tempa}%
-   \expandafter \@tempb \@tempa #4\@@}
-\def\prepnext at tok{\advance \count@ \@ne
-   \toks\count@{}}
-\def\save at decl{\toks\count@ \expandafter{\@nextchar}}
-\def\insert at column{%
-   \the at toks \the \@tempcnta
-   \ignorespaces \@sharp \unskip
-   \the at toks \the \count@ \relax}
-\newdimen\col at sep
-\def\@acol{\@addtopreamble{\hskip\col at sep}}
-\def\@mkpream#1{\gdef\@preamble{}\@lastchclass 4 \@firstamptrue
-   \let\@sharp\relax \let\@startpbox\relax \let\@endpbox\relax
-   \@xexpast #1*0x\@@
-   \count@\m at ne
-   \let\the at toks\relax
-   \prepnext at tok
-   \expandafter \@tfor \expandafter \@nextchar
-    \expandafter :\expandafter =\@tempa \do
-   {\@testpach
-   \ifcase \@chclass \@classz \or \@classi \or \@classii
-     \or \save at decl \or \or \@classv \or \@classvi
-     \or \@classvii \or \@classviii  \or \@classix
-     \or \@classx \fi
-   \@lastchclass\@chclass}%
-   \ifcase\@lastchclass
-   \@acol \or
-   \or
-   \@acol \or
-   \@preamerr \thr@@ \or
-   \@preamerr \tw@ \@addtopreamble\@sharp \or
-   \or
-   \else  \@preamerr \@ne \fi
-   \def\the at toks{\the\toks}}
-\def\@classx{%
-  \ifcase \@lastchclass
-  \@acolampacol \or
-  \@addamp \@acol \or
-  \@acolampacol \or
-  \or
-  \@acol \@firstampfalse \or
-  \@addamp
-  \fi}
-\def\@classz{\@classx
-   \@tempcnta \count@
-   \prepnext at tok
-   \@addtopreamble{\ifcase \@chnum
-      \hfil
-      \d at llarbegin
-      \insert at column
-      \d at llarend \hfil \or
-      \hskip1sp\d at llarbegin \insert at column \d at llarend \hfil \or
-      \hfil\hskip1sp\d at llarbegin \insert at column \d at llarend \or
-   $\vcenter%$ emacs
-   \@startpbox{\@nextchar}\insert at column \@endpbox $\or%$ emacs
-   \vtop \@startpbox{\@nextchar}\insert at column \@endpbox \or
-   \vbox \@startpbox{\@nextchar}\insert at column \@endpbox
-  \fi}\prepnext at tok}
-\def\@classix{\ifnum \@lastchclass = \thr@@
-       \@preamerr \thr@@ \fi
-       \@classx}
-\def\@classviii{\ifnum \@lastchclass >\z@
-      \@preamerr 4\@chclass 6 \@classvi \fi}
-\def\@arrayrule{\@addtopreamble \vline}
-\def\@classvii{\ifnum \@lastchclass = \thr@@
-   \@preamerr \thr@@ \fi}
-\def\@classvi{\ifcase \@lastchclass
-      \@acol \or
-      \@addtopreamble{\hskip \doublerulesep}\or
-      \@acol \or
-      \@classvii
-      \fi}
-\def\@classii{\advance \count@ \m at ne
-   \save at decl\prepnext at tok}
-\def\@classv{\save at decl
-   \@addtopreamble{\d at llarbegin\the at toks\the\count@\relax\d at llarend}%
-   \prepnext at tok}
-\def\@classi{\@classvi
-   \ifcase \@chnum \@arrayrule \or
-      \@classv \fi}
-\def\@startpbox#1{\bgroup
-  \setlength\hsize{#1}\@arrayparboxrestore
-   \everypar{%
-      \vrule \@height \ht\@arstrutbox \@width \z@
-      \everypar{}}%
-   }
-\def\@endpbox{\@finalstrut\@arstrutbox \egroup\hfil}
-\def\@array[#1]#2{%
-  \@tempdima \ht \strutbox
-  \advance \@tempdima by\extrarowheight
-  \setbox \@arstrutbox \hbox{\vrule
-             \@height \arraystretch \@tempdima
-             \@depth \arraystretch \dp \strutbox
-             \@width \z@}%
-  \begingroup
-  \@mkpream{#2}%
-  \xdef\@preamble{\noexpand \ialign \@halignto
-                  \bgroup \@arstrut \@preamble
-                          \tabskip \z@ \cr}%
-  \endgroup
-  \@arrayleft
-  \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi
-  \bgroup
-  \let \@sharp ##\let \protect \relax
-  \lineskip \z@
-  \baselineskip \z@
-  \m at th
-  \let\\\@arraycr \let\tabularnewline\\\let\par\@empty \@preamble}
-\def\arraybackslash{\let\\\tabularnewline}
-\newdimen \extrarowheight
-\extrarowheight=0pt
-\def\@arstrut{\unhcopy\@arstrutbox}
-\def\@arraycr{\relax\iffalse{\fi\ifnum 0=`}\fi
-  \@ifstar \@xarraycr \@xarraycr}
-\def\@xarraycr{\@ifnextchar [%
-  \@argarraycr {\ifnum 0=`{}\fi\cr}}
-\def\@argarraycr[#1]{\ifnum0=`{}\fi\ifdim #1>\z@
-  \expandafter\@xargarraycr\else
-  \expandafter\@yargarraycr\fi{#1}}
-\def\@xargarraycr#1{\unskip
-  \@tempdima #1\advance\@tempdima \dp\@arstrutbox
-  \vrule \@depth\@tempdima \@width\z@ \cr}
-\def\@yargarraycr#1{\cr\noalign{\vskip #1}}
-\long\def\multicolumn#1#2#3{%
-   \multispan{#1}\begingroup
-   \def\@addamp{\if at firstamp \@firstampfalse \else
-                \@preamerr 5\fi}%
-   \@mkpream{#2}\@addtopreamble\@empty
-   \endgroup
-   \def\@sharp{#3}%
-   \@arstrut \@preamble
-   \null
-   \ignorespaces}
-\let\d at llarbegin\begingroup
-\let\d at llarend\endgroup
-\def\array{\col at sep\arraycolsep
-  \def\d at llarbegin{$}\let\d at llarend\d at llarbegin\def\@halignto{}%$ emacs
-  \@tabarray}
-\def\@tabarray{\@ifnextchar[{\@array}{\@array[c]}}
-\def\tabular{\def\@halignto{}\@tabular}
-\expandafter\def\csname tabular*\endcsname#1{%
-       \setlength\dimen@{#1}%
-       \edef\@halignto{to\the\dimen@}\@tabular}
-\def\@tabular{%
-  \leavevmode
-  \hbox \bgroup $\col at sep\tabcolsep \let\d at llarbegin\begingroup% $ emacs
-                                    \let\d at llarend\endgroup
-  \@tabarray}
-\def\endarray{\crcr \egroup \egroup \gdef\@preamble{}}
-\def\endtabular{\endarray $\egroup}%$ emacs
-\expandafter\let\csname endtabular*\endcsname=\endtabular
-\let\@ampacol=\relax        \let\@expast=\relax
-\let\@arrayclassiv=\relax   \let\@arrayclassz=\relax
-\let\@tabclassiv=\relax     \let\@tabclassz=\relax
-\let\@arrayacol=\relax      \let\@tabacol=\relax
-\let\@tabularcr=\relax      \let\@@endpbox=\relax
-\let\@argtabularcr=\relax   \let\@xtabularcr=\relax
-\def\@preamerr#1{\def\@tempd{{..} at wrong position: }%
-   %\PackageError{array}{%
-   \ClassError{memoir}{% changed in menoir
-   \ifcase #1 Illegal pream-token (\@nextchar): `c' used\or %0
-    Missing arg: token ignored\or                           %1
-    Empty preamble: `l' used\or                             %2
-    >\@tempd token ignored\or                               %3
-    <\@tempd changed to !{..}\or                            %4
-    Only one column-spec. allowed.\fi}\@ehc}                %5
-\def\newcolumntype#1{%
-  \edef\NC at char{\string#1}%
-  \@ifundefined{NC at find@\NC at char}%
-    {\@tfor\next:=<>clrmbp@!|\do{\if\noexpand\next\NC at char
-        %\PackageWarning{array}%
-          \@memwarn{Redefining primitive column \NC at char}\fi}% memoir change
-     \NC at list\expandafter{\the\NC at list\NC at do#1}}%
-   {%\PackageWarning{array}
-      \@memwarn{Column \NC at char\space is already defined}}% memoir change
-  \@namedef{NC at find@\NC at char}##1#1{\NC@{##1}}%
-  \@ifnextchar[{\newcol@{\NC at char}}{\newcol@{\NC at char}[0]}}
-\def\newcol@#1[#2]#3{\expandafter\@reargdef
-     \csname NC at rewrite@#1\endcsname[#2]{\NC at find#3}}
-\def\NC@#1{%
-  \@temptokena\expandafter{\the\@temptokena#1}\futurelet\next\NC at ifend}
-\def\NC at ifend{%
-  \ifx\next\relax
-    \else\@tempswatrue\expandafter\NC at rewrite\fi}
-\def\NC at do#1{%
-  \expandafter\let\expandafter\NC at rewrite
-    \csname NC at rewrite@\string#1\endcsname
-  \expandafter\let\expandafter\NC at find
-    \csname NC at find@\string#1\endcsname
-  \expandafter\@temptokena\expandafter{\expandafter}%
-        \expandafter\NC at find\the\@temptokena#1\relax}
-\def\showcols{{\def\NC at do##1{\let\NC at do\NC at show}\the\NC at list}}
-\def\NC at show#1{%
-  \typeout{Column #1\expandafter\expandafter\expandafter\NC at strip
-  \expandafter\meaning\csname NC at rewrite@#1\endcsname\@@}}
-\def\NC at strip#1:#2->#3 #4\@@{#2 -> #4}
-\newtoks\NC at list
-\newcolumntype{*}[2]{}
-\long\@namedef{NC at rewrite@*}#1#2{%
-  \count@#1\relax
-  \loop
-  \ifnum\count@>\z@
-  \advance\count@\m at ne
-  \@temptokena\expandafter{\the\@temptokena#2}%
-  \repeat
-  \NC at find}
-\let\@xexpast\relax
-\let\@xexnoop\relax
-\def\save at decl{\toks \count@ = \expandafter\expandafter\expandafter
-                  {\expandafter\@nextchar\the\toks\count@}}
-\def\@mkpream#1{\gdef\@preamble{}\@lastchclass 4 \@firstamptrue
-   \let\@sharp\relax \let\@startpbox\relax \let\@endpbox\relax
-   \@temptokena{#1}\@tempswatrue
-   \@whilesw\if at tempswa\fi{\@tempswafalse\the\NC at list}%
-   \count@\m at ne
-   \let\the at toks\relax
-   \prepnext at tok
-   \expandafter \@tfor \expandafter \@nextchar
-    \expandafter :\expandafter =\the\@temptokena \do
-   {\@testpach
-   \ifcase \@chclass \@classz \or \@classi \or \@classii
-     \or \save at decl \or \or \@classv \or \@classvi
-     \or \@classvii \or \@classviii
-     \or \@classx
-     \or \@classx \fi
-   \@lastchclass\@chclass}%
-   \ifcase\@lastchclass
-   \@acol \or
-   \or
-   \@acol \or
-   \@preamerr \thr@@ \or
-   \@preamerr \tw@ \@addtopreamble\@sharp \or
-   \or
-   \else  \@preamerr \@ne \fi
-   \def\the at toks{\the\toks}}
-\let\@classix\relax
-\def\@classviii{\ifnum \@lastchclass >\z@\ifnum\@lastchclass=\tw@\else
-      \@preamerr 4\@chclass 6 \@classvi \fi\fi}
-\def\@classv{\save at decl
-   \expandafter\NC at ecs\@nextchar\extracolsep{}\extracolsep\@@@
-   \@addtopreamble{\d at llarbegin\the at toks\the\count@\relax\d at llarend}%
-   \prepnext at tok}
-\def\NC at ecs#1\extracolsep#2#3\extracolsep#4\@@@{\def\@tempa{#2}%
-  \ifx\@tempa\@empty\else\toks\count@={#1\tabskip#2\relax#3}\fi}
-\def\@tabarray{\@ifnextchar[{\@@array}{\@@array[c]}}
-\let\@@array\@array
-\def\endarray{\crcr \egroup \egroup \@arrayright \gdef\@preamble{}}
-\let\@arrayleft\@empty
-\let\@arrayright\@empty
-\newlength{\extratabsurround}
-\setlength{\extratabsurround}{2pt}
-\newlength{\backup at length}
-\newcommand{\firsthline}{%}} emacs
-  \multicolumn1c{%
-    \global\backup at length\ht\@arstrutbox
-    \global\advance\backup at length\dp\@arstrutbox
-    \global\advance\backup at length\arrayrulewidth
-     \raise\extratabsurround\copy\@arstrutbox
-    }\\[-\backup at length]\hline
-}
-\newcommand{\lasthline}{\hline\multicolumn1c{%}} emacs
-    \global\backup at length2\ht\@arstrutbox
-    \global\advance\backup at length2\dp\@arstrutbox
-    \global\advance\backup at length\arrayrulewidth
-    }\\[-\backup at length]%
-    \multicolumn1c{%
-       \lower\extratabsurround\copy\@arstrutbox
-       }%
-}
-\CheckCommand*\@xhline{\ifx\reserved at a\hline
-               \vskip\doublerulesep
-               \vskip-\arrayrulewidth
-             \fi
-      \ifnum0=`{\fi}}
-\renewcommand*\@xhline{\ifx\reserved at a\hline
-               \vskip\doublerulesep
-             \fi
-      \ifnum0=`{\fi}}
-%%%%%%%%%% end array.sty 2016/10/06 v2.4d %%%%%%%%%
-
+\RequirePackage{array}[2018/04/30]
+ %
+ % %%%%%%%%%% Array package code %%%%%%%%%%%%%%%%%%%%%
+ % %%%%%%%%%% With acknowledgements to %%%%%%%%%%%%%%%%%%%%%
+ % %%%%%%%%%% Frank Mittelbach & David Carlisle %%%%%%%%%%%%%%%%%%%%%
+ %
+ % %%%%%%%%%% Copy corresponds to array.sty 2016/10/06 v2.4d %%%%%%%%%
+ % % \newcount \@chclass
+ % % \newcount \@chnum
+ % % \newcount \@lastchclass
+ % \def\@addtopreamble#1{\xdef\@preamble{\@preamble #1}}
+ % \def\@testpach{\@chclass
+ %  \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
+ %   \ifnum \@lastchclass=7 5 \else
+ %    \ifnum \@lastchclass=8 \tw@ \else
+ %     \ifnum \@lastchclass=9 \thr@@
+ %    \else \z@
+ %    \ifnum \@lastchclass = 10 \else
+ %    \edef\@nextchar{\expandafter\string\@nextchar}%
+ %    \@chnum
+ %    \if \@nextchar c\z@ \else
+ %     \if \@nextchar l\@ne \else
+ %      \if \@nextchar r\tw@ \else
+ %    \z@ \@chclass
+ %    \if\@nextchar |\@ne \else
+ %     \if \@nextchar !6 \else
+ %      \if \@nextchar @7 \else
+ %       \if \@nextchar <8 \else
+ %        \if \@nextchar >9 \else
+ %   10
+ %   \@chnum
+ %   \if \@nextchar m\thr@@\else
+ %    \if \@nextchar p4 \else
+ %     \if \@nextchar b5 \else
+ %    \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi
+ %    \fi \fi  \fi  \fi  \fi  \fi  \fi \fi \fi \fi \fi \fi}
+ % \def\@xexpast#1*#2#3#4\@@{%
+ %    \@tempcnta #2
+ %    \toks@={#1}\@temptokena={#3}%
+ %    \let\the at toksz\relax \let\the at toks\relax
+ %    \def\@tempa{\the at toksz}%
+ %    \ifnum\@tempcnta >0 \@whilenum\@tempcnta >0\do
+ %      {\edef\@tempa{\@tempa\the at toks}\advance \@tempcnta \m at ne}%
+ %        \let \@tempb \@xexpast \else
+ %        \let \@tempb \@xexnoop \fi
+ %    \def\the at toksz{\the\toks@}\def\the at toks{\the\@temptokena}%
+ %    \edef\@tempa{\@tempa}%
+ %    \expandafter \@tempb \@tempa #4\@@}
+ % %  \def\@xexnoop#1\@@{}
+ % \def\prepnext at tok{\advance \count@ \@ne
+ %    \toks\count@{}}
+ % \def\save at decl{\toks\count@ \expandafter{\@nextchar}}
+ % \def\insert at column{%
+ %    \the at toks \the \@tempcnta
+ %    \ignorespaces \@sharp \unskip
+ %    \the at toks \the \count@ \relax}
+ % %    \newif \@iffirstamp
+ % %    \def\@addamp{\if at firstamp \@firstampfalse
+ % %                 \else \@addtopreamble &\fi}
+ % \newdimen\col at sep
+ % \def\@acol{\@addtopreamble{\hskip\col at sep}}
+ % %    \def\@acolampacol{\@acol\@addamp\@acol}
+ % \def\@mkpream#1{\gdef\@preamble{}\@lastchclass 4 \@firstamptrue
+ %    \let\@sharp\relax \let\@startpbox\relax \let\@endpbox\relax
+ %    \@xexpast #1*0x\@@
+ %    \count@\m at ne
+ %    \let\the at toks\relax
+ %    \prepnext at tok
+ %    \expandafter \@tfor \expandafter \@nextchar
+ %     \expandafter :\expandafter =\@tempa \do
+ %    {\@testpach
+ %    \ifcase \@chclass \@classz \or \@classi \or \@classii
+ %      \or \save at decl \or \or \@classv \or \@classvi
+ %      \or \@classvii \or \@classviii  \or \@classix
+ %      \or \@classx \fi
+ %    \@lastchclass\@chclass}%
+ %    \ifcase\@lastchclass
+ %    \@acol \or
+ %    \or
+ %    \@acol \or
+ %    \@preamerr \thr@@ \or
+ %    \@preamerr \tw@ \@addtopreamble\@sharp \or
+ %    \or
+ %    \else  \@preamerr \@ne \fi
+ %    \def\the at toks{\the\toks}}
+ % \def\@classx{%
+ %   \ifcase \@lastchclass
+ %   \@acolampacol \or
+ %   \@addamp \@acol \or
+ %   \@acolampacol \or
+ %   \or
+ %   \@acol \@firstampfalse \or
+ %   \@addamp
+ %   \fi}
+ % \def\@classz{\@classx
+ %    \@tempcnta \count@
+ %    \prepnext at tok
+ %    \@addtopreamble{\ifcase \@chnum
+ %       \hfil
+ %       \d at llarbegin
+ %       \insert at column
+ %       \d at llarend \hfil \or
+ %       \hskip1sp\d at llarbegin \insert at column \d at llarend \hfil \or
+ %       \hfil\hskip1sp\d at llarbegin \insert at column \d at llarend \or
+ %    $\vcenter%$ emacs
+ %    \@startpbox{\@nextchar}\insert at column \@endpbox $\or%$ emacs
+ %    \vtop \@startpbox{\@nextchar}\insert at column \@endpbox \or
+ %    \vbox \@startpbox{\@nextchar}\insert at column \@endpbox
+ %   \fi}\prepnext at tok}
+ % \def\@classix{\ifnum \@lastchclass = \thr@@
+ %        \@preamerr \thr@@ \fi
+ %        \@classx}
+ % \def\@classviii{\ifnum \@lastchclass >\z@
+ %       \@preamerr 4\@chclass 6 \@classvi \fi}
+ % \def\@arrayrule{\@addtopreamble \vline}
+ % \def\@classvii{\ifnum \@lastchclass = \thr@@
+ %    \@preamerr \thr@@ \fi}
+ % \def\@classvi{\ifcase \@lastchclass
+ %       \@acol \or
+ %       \@addtopreamble{\hskip \doublerulesep}\or
+ %       \@acol \or
+ %       \@classvii
+ %       \fi}
+ % \def\@classii{\advance \count@ \m at ne
+ %    \save at decl\prepnext at tok}
+ % \def\@classv{\save at decl
+ %    \@addtopreamble{\d at llarbegin\the at toks\the\count@\relax\d at llarend}%
+ %    \prepnext at tok}
+ % \def\@classi{\@classvi
+ %    \ifcase \@chnum \@arrayrule \or
+ %       \@classv \fi}
+ % \def\@startpbox#1{\bgroup
+ %   \setlength\hsize{#1}\@arrayparboxrestore
+ %    \everypar{%
+ %       \vrule \@height \ht\@arstrutbox \@width \z@
+ %       \everypar{}}%
+ %    }
+ % \def\@endpbox{\@finalstrut\@arstrutbox \egroup\hfil}
+ % \def\@array[#1]#2{%
+ %   \@tempdima \ht \strutbox
+ %   \advance \@tempdima by\extrarowheight
+ %   \setbox \@arstrutbox \hbox{\vrule
+ %              \@height \arraystretch \@tempdima
+ %              \@depth \arraystretch \dp \strutbox
+ %              \@width \z@}%
+ %   \begingroup
+ %   \@mkpream{#2}%
+ %   \xdef\@preamble{\noexpand \ialign \@halignto
+ %                   \bgroup \@arstrut \@preamble
+ %                           \tabskip \z@ \cr}%
+ %   \endgroup
+ %   \@arrayleft
+ %   \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi
+ %   \bgroup
+ %   \let \@sharp ##\let \protect \relax
+ %   \lineskip \z@
+ %   \baselineskip \z@
+ %   \m at th
+ %   \let\\\@arraycr \let\tabularnewline\\\let\par\@empty \@preamble}
+ % \def\arraybackslash{\let\\\tabularnewline}
+ % \newdimen \extrarowheight
+ % \extrarowheight=0pt
+ % \def\@arstrut{\unhcopy\@arstrutbox}
+ % \def\@arraycr{\relax\iffalse{\fi\ifnum 0=`}\fi
+ %   \@ifstar \@xarraycr \@xarraycr}
+ % \def\@xarraycr{\@ifnextchar [%
+ %   \@argarraycr {\ifnum 0=`{}\fi\cr}}
+ % \def\@argarraycr[#1]{\ifnum0=`{}\fi\ifdim #1>\z@
+ %   \expandafter\@xargarraycr\else
+ %   \expandafter\@yargarraycr\fi{#1}}
+ % \def\@xargarraycr#1{\unskip
+ %   \@tempdima #1\advance\@tempdima \dp\@arstrutbox
+ %   \vrule \@depth\@tempdima \@width\z@ \cr}
+ % \def\@yargarraycr#1{\cr\noalign{\vskip #1}}
+ % \long\def\multicolumn#1#2#3{%
+ %    \multispan{#1}\begingroup
+ %    \def\@addamp{\if at firstamp \@firstampfalse \else
+ %                 \@preamerr 5\fi}%
+ %    \@mkpream{#2}\@addtopreamble\@empty
+ %    \endgroup
+ %    \def\@sharp{#3}%
+ %    \@arstrut \@preamble
+ %    \null
+ %    \ignorespaces}
+ % \let\d at llarbegin\begingroup
+ % \let\d at llarend\endgroup
+ % \def\array{\col at sep\arraycolsep
+ %   \def\d at llarbegin{$}\let\d at llarend\d at llarbegin\def\@halignto{}%$ emacs
+ %   \@tabarray}
+ % \def\@tabarray{\@ifnextchar[{\@array}{\@array[c]}}
+ % \def\tabular{\def\@halignto{}\@tabular}
+ % \expandafter\def\csname tabular*\endcsname#1{%
+ %        \setlength\dimen@{#1}%
+ %        \edef\@halignto{to\the\dimen@}\@tabular}
+ % \def\@tabular{%
+ %   \leavevmode
+ %   \hbox \bgroup $\col at sep\tabcolsep \let\d at llarbegin\begingroup% $ emacs
+ %                                     \let\d at llarend\endgroup
+ %   \@tabarray}
+ % \def\endarray{\crcr \egroup \egroup \gdef\@preamble{}}
+ % \def\endtabular{\endarray $\egroup}%$ emacs
+ % \expandafter\let\csname endtabular*\endcsname=\endtabular
+ % \let\@ampacol=\relax        \let\@expast=\relax
+ % \let\@arrayclassiv=\relax   \let\@arrayclassz=\relax
+ % \let\@tabclassiv=\relax     \let\@tabclassz=\relax
+ % \let\@arrayacol=\relax      \let\@tabacol=\relax
+ % \let\@tabularcr=\relax      \let\@@endpbox=\relax
+ % \let\@argtabularcr=\relax   \let\@xtabularcr=\relax
+ % \def\@preamerr#1{\def\@tempd{{..} at wrong position: }%
+ %    %\PackageError{array}{%
+ %    \ClassError{memoir}{% changed in menoir
+ %    \ifcase #1 Illegal pream-token (\@nextchar): `c' used\or %0
+ %     Missing arg: token ignored\or                           %1
+ %     Empty preamble: `l' used\or                             %2
+ %     >\@tempd token ignored\or                               %3
+ %     <\@tempd changed to !{..}\or                            %4
+ %     Only one column-spec. allowed.\fi}\@ehc}                %5
+ % \def\newcolumntype#1{%
+ %   \edef\NC at char{\string#1}%
+ %   \@ifundefined{NC at find@\NC at char}%
+ %     {\@tfor\next:=<>clrmbp@!|\do{\if\noexpand\next\NC at char
+ %         %\PackageWarning{array}%
+ %           \@memwarn{Redefining primitive column \NC at char}\fi}% memoir change
+ %      \NC at list\expandafter{\the\NC at list\NC at do#1}}%
+ %    {%\PackageWarning{array}
+ %       \@memwarn{Column \NC at char\space is already defined}}% memoir change
+ %   \@namedef{NC at find@\NC at char}##1#1{\NC@{##1}}%
+ %   \@ifnextchar[{\newcol@{\NC at char}}{\newcol@{\NC at char}[0]}}
+ % \def\newcol@#1[#2]#3{\expandafter\@reargdef
+ %      \csname NC at rewrite@#1\endcsname[#2]{\NC at find#3}}
+ % \def\NC@#1{%
+ %   \@temptokena\expandafter{\the\@temptokena#1}\futurelet\next\NC at ifend}
+ % \def\NC at ifend{%
+ %   \ifx\next\relax
+ %     \else\@tempswatrue\expandafter\NC at rewrite\fi}
+ % \def\NC at do#1{%
+ %   \expandafter\let\expandafter\NC at rewrite
+ %     \csname NC at rewrite@\string#1\endcsname
+ %   \expandafter\let\expandafter\NC at find
+ %     \csname NC at find@\string#1\endcsname
+ %   \expandafter\@temptokena\expandafter{\expandafter}%
+ %         \expandafter\NC at find\the\@temptokena#1\relax}
+ % \def\showcols{{\def\NC at do##1{\let\NC at do\NC at show}\the\NC at list}}
+ % \def\NC at show#1{%
+ %   \typeout{Column #1\expandafter\expandafter\expandafter\NC at strip
+ %   \expandafter\meaning\csname NC at rewrite@#1\endcsname\@@}}
+ % \def\NC at strip#1:#2->#3 #4\@@{#2 -> #4}
+ % \newtoks\NC at list
+ % \newcolumntype{*}[2]{}
+ % \long\@namedef{NC at rewrite@*}#1#2{%
+ %   \count@#1\relax
+ %   \loop
+ %   \ifnum\count@>\z@
+ %   \advance\count@\m at ne
+ %   \@temptokena\expandafter{\the\@temptokena#2}%
+ %   \repeat
+ %   \NC at find}
+ % \let\@xexpast\relax
+ % \let\@xexnoop\relax
+ % \def\save at decl{\toks \count@ = \expandafter\expandafter\expandafter
+ %                   {\expandafter\@nextchar\the\toks\count@}}
+ % \def\@mkpream#1{\gdef\@preamble{}\@lastchclass 4 \@firstamptrue
+ %    \let\@sharp\relax \let\@startpbox\relax \let\@endpbox\relax
+ %    \@temptokena{#1}\@tempswatrue
+ %    \@whilesw\if at tempswa\fi{\@tempswafalse\the\NC at list}%
+ %    \count@\m at ne
+ %    \let\the at toks\relax
+ %    \prepnext at tok
+ %    \expandafter \@tfor \expandafter \@nextchar
+ %     \expandafter :\expandafter =\the\@temptokena \do
+ %    {\@testpach
+ %    \ifcase \@chclass \@classz \or \@classi \or \@classii
+ %      \or \save at decl \or \or \@classv \or \@classvi
+ %      \or \@classvii \or \@classviii
+ %      \or \@classx
+ %      \or \@classx \fi
+ %    \@lastchclass\@chclass}%
+ %    \ifcase\@lastchclass
+ %    \@acol \or
+ %    \or
+ %    \@acol \or
+ %    \@preamerr \thr@@ \or
+ %    \@preamerr \tw@ \@addtopreamble\@sharp \or
+ %    \or
+ %    \else  \@preamerr \@ne \fi
+ %    \def\the at toks{\the\toks}}
+ % \let\@classix\relax
+ % \def\@classviii{\ifnum \@lastchclass >\z@\ifnum\@lastchclass=\tw@\else
+ %       \@preamerr 4\@chclass 6 \@classvi \fi\fi}
+ % \def\@classv{\save at decl
+ %    \expandafter\NC at ecs\@nextchar\extracolsep{}\extracolsep\@@@
+ %    \@addtopreamble{\d at llarbegin\the at toks\the\count@\relax\d at llarend}%
+ %    \prepnext at tok}
+ % \def\NC at ecs#1\extracolsep#2#3\extracolsep#4\@@@{\def\@tempa{#2}%
+ %   \ifx\@tempa\@empty\else\toks\count@={#1\tabskip#2\relax#3}\fi}
+ % \def\@tabarray{\@ifnextchar[{\@@array}{\@@array[c]}}
+ % \let\@@array\@array
+ % \def\endarray{\crcr \egroup \egroup \@arrayright \gdef\@preamble{}}
+ % \let\@arrayleft\@empty
+ % \let\@arrayright\@empty
+ % \newlength{\extratabsurround}
+ % \setlength{\extratabsurround}{2pt}
+ % \newlength{\backup at length}
+ % \newcommand{\firsthline}{%}} emacs
+ %   \multicolumn1c{%
+ %     \global\backup at length\ht\@arstrutbox
+ %     \global\advance\backup at length\dp\@arstrutbox
+ %     \global\advance\backup at length\arrayrulewidth
+ %      \raise\extratabsurround\copy\@arstrutbox
+ %     }\\[-\backup at length]\hline
+ % }
+ % \newcommand{\lasthline}{\hline\multicolumn1c{%}} emacs
+ %     \global\backup at length2\ht\@arstrutbox
+ %     \global\advance\backup at length2\dp\@arstrutbox
+ %     \global\advance\backup at length\arrayrulewidth
+ %     }\\[-\backup at length]%
+ %     \multicolumn1c{%
+ %        \lower\extratabsurround\copy\@arstrutbox
+ %        }%
+ % }
+ % \CheckCommand*\@xhline{\ifx\reserved at a\hline
+ %                \vskip\doublerulesep
+ %                \vskip-\arrayrulewidth
+ %              \fi
+ %       \ifnum0=`{\fi}}
+ % \renewcommand*\@xhline{\ifx\reserved at a\hline
+ %                \vskip\doublerulesep
+ %              \fi
+ %       \ifnum0=`{\fi}}
+ % %%%%%%%%%% end array.sty 2016/10/06 v2.4d %%%%%%%%%
+ %
 \newif \@iffirstamp
 \let\m at mold@addamp\@addamp
 \newcommand*{\m at m@addamp}{%
@@ -5594,271 +5602,277 @@
 \let\@addamp\m at m@addamp
 
 
-%%%%%%%%%% Dcolumn package code %%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%% With acknowledgements to David Carlisle %%%%%%%%%%%%%%%%%%%%%
+\RequirePackage{dcolumn}[2014/10/28]
+ % %%%%%%%%%% Dcolumn package code %%%%%%%%%%%%%%%%%%%%%
+ % %%%%%%%%%% With acknowledgements to David Carlisle %%%%%%%%%%%%%%%%%%%%%
+ %
+ % \def\DC@#1#2#3{%
+ %   \uccode`\~=`#1\relax
+ %   \m at th
+ %   \afterassignment\DC at x\count@#3\relax{#1}{#2}}
+ % \def\DC at x#1\relax#2#3{%
+ %   \ifnum\z@>\count@
+ %     \expandafter\DC at centre
+ %   \else
+ %     \expandafter\DC at right
+ %   \fi
+ %   {#2}{#3}{#1}}
+ % \def\DC at centre#1#2#3{%
+ %   \let\DC at end\DC at endcentre
+ %   \uppercase{\def~}{$\egroup\setbox\tw@=\hbox\bgroup${#2}}%$
+ %   \setbox\tw@=\hbox{${\phantom{{#2}}}$}%
+ %   \setbox\z@=\hbox\bgroup$\mathcode`#1="8000 }%$
+ % \def\DC at endcentre{$\egroup%$
+ %     \ifdim \wd\z@>\wd\tw@
+ %       \setbox\tw@=\hbox to\wd\z@{\unhbox\tw@\hfill}%
+ %     \else
+ %       \setbox\z@=\hbox to\wd\tw@{\hfill\unhbox\z@}\fi
+ %     \box\z@\box\tw@}
+ % \def\DC at right#1#2#3{%
+ %   \ifx\relax#3\relax
+ %     \hfill
+ %     \let\DC at rl\bgroup
+ %   \else
+ %     \edef\DC at rl{to\the\count@\dimen at ii\bgroup\hss\hfill}%
+ %     \count@\@gobble#3\relax
+ %   \fi
+ %   \let\DC at end\DC at endright
+ %   \uppercase{\def~}{$\egroup\setbox\tw@\hbox to\dimen@\bgroup${#2}}%
+ %    \setbox\z@\hbox{$1$}\dimen at ii\wd\z@
+ %    \dimen@\count@\dimen at ii
+ %    \setbox\z@\hbox{${#2}$}\advance\dimen@\wd\z@
+ %    \setbox\tw@\hbox to\dimen@{}%
+ %    \setbox\z@\hbox\DC at rl$\mathcode`#1="8000 }%$
+ % \def\DC at endright{$\hfil\egroup\box\z@\box\tw@}%$
+ % \newcolumntype{D}[3]{>{\DC@{#1}{#2}{#3}}c<{\DC at end}}
+ %
+ % %%%%%%%%%% end Dcolumn package code %%%%%%%%%%%%%%%%%%%%%
+ %
+\RequirePackage{delarray}[2014/10/28]
+ % %%%%%%%%%% Delarray package code %%%%%%%%%%%%%%%%%%%%%
+ % %%%%%%%%%% With acknowledgements to David Carlisle %%%%%%%%%%%%%%%%%%%%%
+ %
+ % \def\@@array[#1]{\@ifnextchar\bgroup
+ %   {\let\@arrayleft\relax\let\@arrayright\relax\@array[#1]}%
+ %   {\@del at array[#1]}}
+ % \def\@del at array[#1]#2#3#4{%
+ %   \setbox\z@\hbox{$\left#2\right#4$}%
+ %   \if#1c\def\@arrayleft{\left#2}\def\@arrayright{\right#4}%
+ %   \else\def\@arrayleft{\setbox\z@}%
+ %   \def\@arrayright{%
+ %      \dimen@=\dp\z@
+ %      \advance\dimen at -\ht\z@
+ %      \divide \dimen@ by \tw@
+ %      \advance\dimen@ by\fontdimen22 \textfont\tw@
+ %      \lower\dimen@\hbox{$\left#2\vcenter{\unvbox\z@}\right#4$}}%
+ %   \fi
+ %   \@array[#1]{#3}}
+ % %%%%%%%%%% end Delarray package code %%%%%%%%%%%%%%%%%%%%%
+ %
+\RequirePackage{tabularx}[2016/02/03]
 
-\def\DC@#1#2#3{%
-  \uccode`\~=`#1\relax
-  \m at th
-  \afterassignment\DC at x\count@#3\relax{#1}{#2}}
-\def\DC at x#1\relax#2#3{%
-  \ifnum\z@>\count@
-    \expandafter\DC at centre
-  \else
-    \expandafter\DC at right
-  \fi
-  {#2}{#3}{#1}}
-\def\DC at centre#1#2#3{%
-  \let\DC at end\DC at endcentre
-  \uppercase{\def~}{$\egroup\setbox\tw@=\hbox\bgroup${#2}}%$
-  \setbox\tw@=\hbox{${\phantom{{#2}}}$}%
-  \setbox\z@=\hbox\bgroup$\mathcode`#1="8000 }%$
-\def\DC at endcentre{$\egroup%$
-    \ifdim \wd\z@>\wd\tw@
-      \setbox\tw@=\hbox to\wd\z@{\unhbox\tw@\hfill}%
-    \else
-      \setbox\z@=\hbox to\wd\tw@{\hfill\unhbox\z@}\fi
-    \box\z@\box\tw@}
-\def\DC at right#1#2#3{%
-  \ifx\relax#3\relax
-    \hfill
-    \let\DC at rl\bgroup
-  \else
-    \edef\DC at rl{to\the\count@\dimen at ii\bgroup\hss\hfill}%
-    \count@\@gobble#3\relax
-  \fi
-  \let\DC at end\DC at endright
-  \uppercase{\def~}{$\egroup\setbox\tw@\hbox to\dimen@\bgroup${#2}}%
-   \setbox\z@\hbox{$1$}\dimen at ii\wd\z@
-   \dimen@\count@\dimen at ii
-   \setbox\z@\hbox{${#2}$}\advance\dimen@\wd\z@
-   \setbox\tw@\hbox to\dimen@{}%
-   \setbox\z@\hbox\DC at rl$\mathcode`#1="8000 }%$
-\def\DC at endright{$\hfil\egroup\box\z@\box\tw@}%$
-\newcolumntype{D}[3]{>{\DC@{#1}{#2}{#3}}c<{\DC at end}}
-
-%%%%%%%%%% end Dcolumn package code %%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%% Delarray package code %%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%% With acknowledgements to David Carlisle %%%%%%%%%%%%%%%%%%%%%
-
-\def\@@array[#1]{\@ifnextchar\bgroup
-  {\let\@arrayleft\relax\let\@arrayright\relax\@array[#1]}%
-  {\@del at array[#1]}}
-\def\@del at array[#1]#2#3#4{%
-  \setbox\z@\hbox{$\left#2\right#4$}%
-  \if#1c\def\@arrayleft{\left#2}\def\@arrayright{\right#4}%
-  \else\def\@arrayleft{\setbox\z@}%
-  \def\@arrayright{%
-     \dimen@=\dp\z@
-     \advance\dimen at -\ht\z@
-     \divide \dimen@ by \tw@
-     \advance\dimen@ by\fontdimen22 \textfont\tw@
-     \lower\dimen@\hbox{$\left#2\vcenter{\unvbox\z@}\right#4$}}%
-  \fi
-  \@array[#1]{#3}}
-%%%%%%%%%% end Delarray package code %%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%% Tabularx package code %%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%% With acknowledgements to David Carlisle %%%%%%%%%%%%%%%%%%%%%
-
-%%% This is a carbon copy of the tabularx dtx sources for v2.11,
-%%% 2016/02/03 with two changes: error messages mention the class
-%%% instead of tabularx.
-
-%%%%%%%%%% Tabularx package code v2.11 2016/02/03 %%%%%%%%%%%%%%%%%%%%%
-
-\newdimen\TX at col@width
-\newdimen\TX at old@table
-\newdimen\TX at old@col
-\newdimen\TX at target
-\newdimen\TX at delta
-\newcount\TX at cols
-\newif\ifTX@
-\def\tabularx#1{%
-\edef\TX@{\@currenvir}%
-  {\ifnum0=`}\fi
-  \setlength\TX at target{#1}%
-  \TX at typeout{Target width: #1 = \the\TX at target.}%
-  \toks@{}\TX at get@body}
-
-\let\endtabularx\relax
-\long\def\TX at get@body#1\end
-  {\toks@\expandafter{\the\toks@#1}\TX at find@end}
-\def\TX at find@end#1{%
-  \def\@tempa{#1}%
-  \ifx\@tempa\TX@\expandafter\TX at endtabularx
-  \else\toks@\expandafter
-    {\the\toks@\end{#1}}\expandafter\TX at get@body\fi}
-\long\def\TX at find@endtabularxa
-       #1\endtabularx#2\endtabularx#3\TX at find@endtabularxa{%
-  \ifx\TX@#2\relax\else
-  \toks@\expandafter{\the\toks@#1}%
-  \fi}
-\long\def\TX at find@endtabularxb
-       #1\endtabularx#2\endtabularx#3\TX at find@endtabularxb{%
-  \ifx\TX@#2%
-    \expandafter\@firstoftwo
-  \else
-     \expandafter\@secondoftwo
-  \fi
-  {#1}{#2}}
-\def\TX at find@endtabularxbb{%
-  \expandafter\expandafter\expandafter
-  \TX at find@endtabularxb
-}
-\def\TX@{tabularx}
-\def\TX at endtabularx{%
-   \expandafter\expandafter\expandafter
-     \TX at find@endtabularxa\csname end\TX@\endcsname
-     \endtabularx\TX@\endtabularx\TX at find@endtabularxa
-  \expandafter\TX at newcol\expandafter{\tabularxcolumn{\TX at col@width}}%
-  \let\verb\TX at verb
-  \def\@elt##1{\global\value{##1}\the\value{##1}\relax}%
-  \edef\TX at ckpt{\cl@@ckpt}%
-  \let\@elt\relax
-  \TX at old@table\maxdimen
-  \TX at col@width\TX at target
-  \global\TX at cols\@ne
-  \TX at typeout@
-    {\@spaces Table Width\@spaces Column Width\@spaces X Columns}%
-  \TX at trial{\def\NC at rewrite@X{%
-          \global\advance\TX at cols\@ne\NC at find p{\TX at col@width}}}%
-  \loop
-    \TX at arith
-    \ifTX@
-    \TX at trial{}%
-  \repeat
-  {\let\@footnotetext\TX at ftntext\let\@xfootnotenext\TX at xftntext
-    \csname tabular*\expandafter\endcsname\expandafter\TX at target
-      \the\toks@
-    \csname endtabular*\endcsname}%
-  \global\TX at ftn\expandafter{\expandafter}\the\TX at ftn
-  \ifnum0=`{\fi}%
-   \expandafter\expandafter\expandafter
-   \TX at find@endtabularxbb
-    \expandafter\end\expandafter{\TX@}%
-    \endtabularx\TX@\endtabularx\TX at find@endtabularxb
-}
-\def\TX at arith{%
-  \TX at false
-  \@tempdimb\maxdimen
-  \divide\@tempdimb\TX at cols
-  \ifdim\TX at col@width>\@tempdimb
-    \TX at typeout@{Don't exceed \maxdimen}%
-    \wd\@tempboxa\maxdimen
-  \fi
-  \ifdim\TX at old@table=\wd\@tempboxa
-    \TX at col@width\TX at old@col
-    \TX at typeout@{Reached minimum width, backing up.}%
-  \else
-    \dimen@\wd\@tempboxa
-    \advance\dimen@ -\TX at target
-    \ifdim\dimen@<\TX at delta
-      \TX at typeout@{Reached target.}%
-    \else
-      \ifnum\TX at cols>\@ne
-        \advance\TX at cols\m at ne
-      \fi
-      \divide\dimen@\TX at cols
-      \advance\dimen@ -\TX at col@width
-      \ifdim \dimen@ >\z@
-        %\PackageWarning{tabularx}%
-         \@memwarn{X Columns too narrow (table too wide)\MessageBreak}% <-- change here
-        \TX at col@width\TX at error@width\relax
-      \else
-        \TX at old@col\TX at col@width
-        \TX at old@table\wd\@tempboxa
-        \TX at col@width-\dimen@
-        \TX at true
-      \fi
-    \fi
-  \fi}
-\def\TX at error@width{1em}
-\TX at delta\hfuzz
-\newcolumntype{X}{}
-\def\tabularxcolumn#1{p{#1}}
-\def\TX at newcol{\newcol@{X}[0]}
-\def\TX at trial#1{%
-  \setbox\@tempboxa\hbox{%
-    #1\relax
-  \let\@footnotetext\TX at trial@ftn
-  \let\TX at vwarn\@empty
-   \expandafter\let\expandafter\tabularx\csname tabular*\endcsname
-   \expandafter\let\expandafter\endtabularx\csname endtabular*\endcsname
-   \def\write{\begingroup
-     \def\let{\afterassignment\endgroup\toks@}%
-        \afterassignment\let\count@}%
-    \hbadness\@M
-    \hfuzz\maxdimen
-    \let\hbadness\@tempcnta
-    \let\hfuzz\@tempdima
-    \expandafter\tabular\the\toks@
-    \endtabular}%
-  \TX at ckpt
-  \TX at typeout@{\@spaces
-     \expandafter\TX at align
-        \the\wd\@tempboxa\space\space\space\space\space\@@
-     \expandafter\TX at align
-        \the\TX at col@width\space\space\space\space\space\@@
-     \@spaces\the\TX at cols}}
-\def\TX at align#1.#2#3#4#5#6#7#8#9\@@{%
-  \ifnum#1<10 \space\fi
-  \ifnum#1<100 \space\fi
-  \ifnum#1<\@m\space\fi
-  \ifnum#1<\@M\space\fi
-  #1.#2#3#4#5#6#7#8\space\space}
-\ifx\arraybackslash\@undefined
-\def\arraybackslash{\let\\\tabularnewline}
-\fi
-\def\tracingtabularx{%
-  %\def\TX at typeout{\PackageWarningNoLine{tabularx}}%
-  \def\TX at typeout{\ClassWarningNoLine{memoir}}% <--- changed
-  \def\TX at typeout@##1{\typeout{(tabularx) ##1}}}
-\let\TX at typeout\@gobble
-\let\TX at typeout@\@gobble
-\newtoks\TX at ftn
-\long\def\TX at ftntext#1{%
-  \edef\@tempa{\the\TX at ftn\noexpand\footnotetext
-                    [\the\csname c@\@mpfn\endcsname]}%
-  \global\TX at ftn\expandafter{\@tempa{#1}}}%
-\long\def\TX at xftntext[#1]#2{%
-  \global\TX at ftn\expandafter{\the\TX at ftn\footnotetext[#1]{#2}}}
-\long\def\TX at trial@ftn#1{}
-{\uccode`\*=`\ %
-\uppercase{\gdef\TX at verb{%
-  \leavevmode\null\TX at vwarn
-  {\ifnum0=`}\fi\ttfamily\let\\\ignorespaces
-  \@ifstar{\let~*\TX at vb}{\TX at vb}}}}
-\def\TX at vb#1{\def\@tempa##1#1{\toks@{##1}\edef\@tempa{\the\toks@}%
-    \expandafter\TX at v\meaning\@tempa\\ \\\ifnum0=`{\fi}}\@tempa!}
-\def\TX at v#1!{\afterassignment\TX at vfirst\let\@tempa= }
-\begingroup
-\catcode`\*=\catcode`\#
-\catcode`\#=12
-\gdef\TX at vfirst{%
-  \if\@tempa#%
-    \def\@tempb{\TX at v@#}%
-  \else
-    \let\@tempb\TX at v@
-    \if\@tempa\space~\else\@tempa\fi
-  \fi
-  \@tempb}
-\gdef\TX at v@*1 *2{%
-  \TX at v@hash*1##\relax\if*2\\\else~\expandafter\TX at v@\fi*2}
-\gdef\TX at v@hash*1##*2{*1\ifx*2\relax\else#\expandafter\TX at v@hash\fi*2}
-\endgroup
-\def\TX at vwarn{%
-  \@warning{\noexpand\verb may be unreliable inside tabularx}%
-  \global\let\TX at vwarn\@empty}
-
-%%%%%%%%%% end Tabularx package code v2.11 %%%%%%%%%%%%%%%%%%%%%
-
-%%\@memfakeusepackage{array}
-%%\@memfakeusepackage{dcolumn}
-%%\@memfakeusepackage{delarray}
-%%\@memfakeusepackage{tabularx}
-
+ % %%%%%%%%%% Tabularx package code %%%%%%%%%%%%%%%%%%%%%
+ % %%%%%%%%%% With acknowledgements to David Carlisle %%%%%%%%%%%%%%%%%%%%%
+ %
+ % %%% This is a carbon copy of the tabularx dtx sources for v2.11,
+ % %%% 2016/02/03 with two changes: error messages mention the class
+ % %%% instead of tabularx.
+ %
+ % %%%%%%%%%% Tabularx package code v2.11 2016/02/03 %%%%%%%%%%%%%%%%%%%%%
+ %
+ % \newdimen\TX at col@width
+ % \newdimen\TX at old@table
+ % \newdimen\TX at old@col
+ % \newdimen\TX at target
+ % \newdimen\TX at delta
+ % \newcount\TX at cols
+ % \newif\ifTX@
+ % \def\tabularx#1{%
+ % \edef\TX@{\@currenvir}%
+ %   {\ifnum0=`}\fi
+ %   \setlength\TX at target{#1}%
+ %   \TX at typeout{Target width: #1 = \the\TX at target.}%
+ %   \toks@{}\TX at get@body}
+ % \let\endtabularx\relax
+ % \long\def\TX at get@body#1\end
+ %   {\toks@\expandafter{\the\toks@#1}\TX at find@end}
+ % \def\TX at find@end#1{%
+ %   \def\@tempa{#1}%
+ %   \ifx\@tempa\TX@\expandafter\TX at endtabularx
+ %   \else\toks@\expandafter
+ %     {\the\toks@\end{#1}}\expandafter\TX at get@body\fi}
+ % \long\def\TX at find@endtabularxa
+ %        #1\endtabularx#2\endtabularx#3\TX at find@endtabularxa{%
+ %   \ifx\TX@#2\relax\else
+ %   \toks@\expandafter{\the\toks@#1}%
+ %   \fi}
+ % \long\def\TX at find@endtabularxb
+ %        #1\endtabularx#2\endtabularx#3\TX at find@endtabularxb{%
+ %   \ifx\TX@#2%
+ %     \expandafter\@firstoftwo
+ %   \else
+ %      \expandafter\@secondoftwo
+ %   \fi
+ %   {#1}{#2}}
+ % \def\TX at find@endtabularxbb{%
+ %   \expandafter\expandafter\expandafter
+ %   \TX at find@endtabularxb
+ % }
+ % \def\TX@{tabularx}
+ % \def\TX at endtabularx{%
+ %    \expandafter\expandafter\expandafter
+ %      \TX at find@endtabularxa\csname end\TX@\endcsname
+ %      \endtabularx\TX@\endtabularx\TX at find@endtabularxa
+ %   \expandafter\TX at newcol\expandafter{\tabularxcolumn{\TX at col@width}}%
+ %   \let\verb\TX at verb
+ %   \def\@elt##1{\global\value{##1}\the\value{##1}\relax}%
+ %   \edef\TX at ckpt{\cl@@ckpt}%
+ %   \let\@elt\relax
+ %   \TX at old@table\maxdimen
+ %   \TX at col@width\TX at target
+ %   \global\TX at cols\@ne
+ %   \TX at typeout@
+ %     {\@spaces Table Width\@spaces Column Width\@spaces X Columns}%
+ %   \TX at trial{\def\NC at rewrite@X{%
+ %           \global\advance\TX at cols\@ne\NC at find p{\TX at col@width}}}%
+ %   \loop
+ %     \TX at arith
+ %     \ifTX@
+ %     \TX at trial{}%
+ %   \repeat
+ %   {\let\@footnotetext\TX at ftntext\let\@xfootnotenext\TX at xftntext
+ %     \csname tabular*\expandafter\endcsname\expandafter\TX at target
+ %       \the\toks@
+ %     \csname endtabular*\endcsname}%
+ %   \global\TX at ftn\expandafter{\expandafter}\the\TX at ftn
+ %   \ifnum0=`{\fi}%
+ %    \expandafter\expandafter\expandafter
+ %    \TX at find@endtabularxbb
+ %     \expandafter\end\expandafter{\TX@}%
+ %     \endtabularx\TX@\endtabularx\TX at find@endtabularxb
+ % }
+ % \def\TX at arith{%
+ %   \TX at false
+ %   \@tempdimb\maxdimen
+ %   \divide\@tempdimb\TX at cols
+ %   \ifdim\TX at col@width>\@tempdimb
+ %     \TX at typeout@{Don't exceed \maxdimen}%
+ %     \wd\@tempboxa\maxdimen
+ %   \fi
+ %   \ifdim\TX at old@table=\wd\@tempboxa
+ %     \TX at col@width\TX at old@col
+ %     \TX at typeout@{Reached minimum width, backing up.}%
+ %   \else
+ %     \dimen@\wd\@tempboxa
+ %     \advance\dimen@ -\TX at target
+ %     \ifdim\dimen@<\TX at delta
+ %       \TX at typeout@{Reached target.}%
+ %     \else
+ %       \ifnum\TX at cols>\@ne
+ %         \advance\TX at cols\m at ne
+ %       \fi
+ %       \divide\dimen@\TX at cols
+ %       \advance\dimen@ -\TX at col@width
+ %       \ifdim \dimen@ >\z@
+ %         %\PackageWarning{tabularx}%
+ %          \@memwarn{X Columns too narrow (table too wide)\MessageBreak}% <-- change here
+ %         \TX at col@width\TX at error@width\relax
+ %       \else
+ %         \TX at old@col\TX at col@width
+ %         \TX at old@table\wd\@tempboxa
+ %         \TX at col@width-\dimen@
+ %         \TX at true
+ %       \fi
+ %     \fi
+ %   \fi}
+ % \def\TX at error@width{1em}
+ % \TX at delta\hfuzz
+ % \newcolumntype{X}{}
+ % \def\tabularxcolumn#1{p{#1}}
+ % \def\TX at newcol{\newcol@{X}[0]}
+ % \def\TX at trial#1{%
+ %   \setbox\@tempboxa\hbox{%
+ %     #1\relax
+ %   \let\@footnotetext\TX at trial@ftn
+ %   \let\TX at vwarn\@empty
+ %    \expandafter\let\expandafter\tabularx\csname tabular*\endcsname
+ %    \expandafter\let\expandafter\endtabularx\csname endtabular*\endcsname
+ %    \def\write{\begingroup
+ %      \def\let{\afterassignment\endgroup\toks@}%
+ %         \afterassignment\let\count@}%
+ %     \hbadness\@M
+ %     \hfuzz\maxdimen
+ %     \let\hbadness\@tempcnta
+ %     \let\hfuzz\@tempdima
+ %     \expandafter\tabular\the\toks@
+ %     \endtabular}%
+ %   \TX at ckpt
+ %   \TX at typeout@{\@spaces
+ %      \expandafter\TX at align
+ %         \the\wd\@tempboxa\space\space\space\space\space\@@
+ %      \expandafter\TX at align
+ %         \the\TX at col@width\space\space\space\space\space\@@
+ %      \@spaces\the\TX at cols}}
+ % \def\TX at align#1.#2#3#4#5#6#7#8#9\@@{%
+ %   \ifnum#1<10 \space\fi
+ %   \ifnum#1<100 \space\fi
+ %   \ifnum#1<\@m\space\fi
+ %   \ifnum#1<\@M\space\fi
+ %   #1.#2#3#4#5#6#7#8\space\space}
+ % \ifx\arraybackslash\@undefined
+ % \def\arraybackslash{\let\\\tabularnewline}
+ % \fi
+ % \def\tracingtabularx{%
+ %   %\def\TX at typeout{\PackageWarningNoLine{tabularx}}%
+ %   \def\TX at typeout{\ClassWarningNoLine{memoir}}% <--- changed
+ %   \def\TX at typeout@##1{\typeout{(tabularx) ##1}}}
+ % \let\TX at typeout\@gobble
+ % \let\TX at typeout@\@gobble
+ % \newtoks\TX at ftn
+ % \long\def\TX at ftntext#1{%
+ %   \edef\@tempa{\the\TX at ftn\noexpand\footnotetext
+ %                     [\the\csname c@\@mpfn\endcsname]}%
+ %   \global\TX at ftn\expandafter{\@tempa{#1}}}%
+ % \long\def\TX at xftntext[#1]#2{%
+ %   \global\TX at ftn\expandafter{\the\TX at ftn\footnotetext[#1]{#2}}}
+ % \long\def\TX at trial@ftn#1{}
+ % {\uccode`\*=`\ %
+ % \uppercase{\gdef\TX at verb{%
+ %   \leavevmode\null\TX at vwarn
+ %   {\ifnum0=`}\fi\ttfamily\let\\\ignorespaces
+ %   \@ifstar{\let~*\TX at vb}{\TX at vb}}}}
+ % \def\TX at vb#1{\def\@tempa##1#1{\toks@{##1}\edef\@tempa{\the\toks@}%
+ %     \expandafter\TX at v\meaning\@tempa\\ \\\ifnum0=`{\fi}}\@tempa!}
+ % \def\TX at v#1!{\afterassignment\TX at vfirst\let\@tempa= }
+ % \begingroup
+ % \catcode`\*=\catcode`\#
+ % \catcode`\#=12
+ % \gdef\TX at vfirst{%
+ %   \if\@tempa#%
+ %     \def\@tempb{\TX at v@#}%
+ %   \else
+ %     \let\@tempb\TX at v@
+ %     \if\@tempa\space~\else\@tempa\fi
+ %   \fi
+ %   \@tempb}
+ % \gdef\TX at v@*1 *2{%
+ %   \TX at v@hash*1##\relax\if*2\\\else~\expandafter\TX at v@\fi*2}
+ % \gdef\TX at v@hash*1##*2{*1\ifx*2\relax\else#\expandafter\TX at v@hash\fi*2}
+ % \endgroup
+ % \def\TX at vwarn{%
+ %   \@warning{\noexpand\verb may be unreliable inside tabularx}%
+ %   \global\let\TX at vwarn\@empty}
+ %
+ % %%%%%%%%%% end Tabularx package code v2.11 %%%%%%%%%%%%%%%%%%%%%
+ %
+ %
+ %
+ %
+ % %%\@memfakeusepackage{array}
+ % %%\@memfakeusepackage{dcolumn}
+ % %%\@memfakeusepackage{delarray}
+ % %%\@memfakeusepackage{tabularx}
+ %
 \newcommand*{\bktabrule}[1]{%
   \hrule \@height#1}
 
@@ -13000,7 +13014,7 @@
 
 \EmulatedPackage{abstract}[2008/07/23]
 \EmulatedPackage{appendix}[2008/07/23]
-\EmulatedPackage{array}[2016/10/06]
+ % \EmulatedPackage{array}[2016/10/06]
 \EmulatedPackage{booktabs}[2016/05/16]
 \EmulatedPackage{ccaption}[2008/07/23]
 \EmulatedPackage{changepage}[2008/07/23]
@@ -13007,8 +13021,8 @@
 \EmulatedPackage{chngcntr}[2008/07/23]
 \EmulatedPackage{chngpage}[2008/07/23]
 \EmulatedPackage{crop}
-\EmulatedPackage{dcolumn}[2008/07/23]
-\EmulatedPackage{delarray}[2014/10/28]
+ % \EmulatedPackage{dcolumn}[2008/07/23]
+ % \EmulatedPackage{delarray}[2014/10/28]
 \EmulatedPackage{enumerate}[2008/07/23]
 \EmulatedPackage{epigraph}[2008/07/23]
 %%%%%\EmulatedPackage{framed}[2008/07/23]
@@ -13030,7 +13044,7 @@
 \EmulatedPackage{setspace}[2008/07/23]
 \EmulatedPackage{shortvrb}[2008/07/23]
 \EmulatedPackage{showidx}[2008/07/23]
-\EmulatedPackage{tabularx}[2016/02/03]
+ % \EmulatedPackage{tabularx}[2016/02/03]
 \EmulatedPackage{titleref}[2008/07/23]
 \EmulatedPackage{titling}[2008/07/23]
 \EmulatedPackage{tocbibind}[2008/07/23]



More information about the tex-live-commits mailing list