texlive[74839] Master/texmf-dist: eqnlines (3apr25)

commits+karl at tug.org commits+karl at tug.org
Thu Apr 3 21:50:19 CEST 2025


Revision: 74839
          https://tug.org/svn/texlive?view=revision&revision=74839
Author:   karl
Date:     2025-04-03 21:50:19 +0200 (Thu, 03 Apr 2025)
Log Message:
-----------
eqnlines (3apr25)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/eqnlines/README.txt
    trunk/Master/texmf-dist/doc/latex/eqnlines/eqnlines.pdf
    trunk/Master/texmf-dist/source/latex/eqnlines/eqnlines.dtx
    trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines-dev.sty
    trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines.sty

Modified: trunk/Master/texmf-dist/doc/latex/eqnlines/README.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/eqnlines/README.txt	2025-04-03 19:50:08 UTC (rev 74838)
+++ trunk/Master/texmf-dist/doc/latex/eqnlines/README.txt	2025-04-03 19:50:19 UTC (rev 74839)
@@ -1,4 +1,4 @@
-eqnlines v0.6.1
+eqnlines v0.7
 Copyright 2024-2025 Niklas Beisert
 
 Based on the latex package amsmath:
@@ -5,8 +5,6 @@
 Copyright (C) 1995, 2000, 2013 American Mathematical Society.
 Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society.
 
--- preview version --
-
 eqnlines is a LaTeX2e package providing a framework for typesetting
 single- and multi-line equations which extends the established
 equation environments of LaTeX and the amsmath package with many

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

Modified: trunk/Master/texmf-dist/source/latex/eqnlines/eqnlines.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/eqnlines/eqnlines.dtx	2025-04-03 19:50:08 UTC (rev 74838)
+++ trunk/Master/texmf-dist/source/latex/eqnlines/eqnlines.dtx	2025-04-03 19:50:19 UTC (rev 74839)
@@ -23,10 +23,10 @@
 % and the derived files eqnlines.sty.
 %
 %<package|sample>\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-%<package&!dev>\ProvidesPackage{eqnlines}[2025/03/27 v0.6.1 Single- and multi-line equations]
-%<package&dev>\ProvidesPackage{eqnlines-dev}[2025/03/27 v0.6.1 Single- and multi-line equations (development)]
+%<package&!dev>\ProvidesPackage{eqnlines}[2025/04/03 v0.7 Single- and multi-line equations]
+%<package&dev>\ProvidesPackage{eqnlines-dev}[2025/04/03 v0.7 Single- and multi-line equations (development)]
 %<*driver>
-\def\thedate#1{2025/03/27}\def\theversion#1{v0.6.1}
+\def\thedate#1{2025/04/03}\def\theversion#1{v0.7}
 \ProvidesFile{eqnlines.dtx}[\thedate{} \theversion{} eqnlines reference manual file]
 \PassOptionsToClass{10pt,a4paper}{article}
 \documentclass{ltxdoc}
@@ -57,6 +57,48 @@
 \hypersetup{pdfcontactemail={nbeisert at itp.phys.ethz.ch}}
 \hypersetup{pdfcontacturl={https://people.phys.ethz.ch/\xmptilde nbeisert/}}
 
+\usepackage{eqnlines}
+\eqnlinesset{belowtopmode=top,belowtopskip=0pt}
+\def\pstrut{\vphantom{(}}
+\def\bstrut{\vphantom{b}}
+
+\usepackage{verbatim}
+\makeatletter
+\def\example at addline#1{%
+  \g at addto@macro\example at dbuf{#1 }%
+  \g at addto@macro\example at pbuf{\item|#1|}}
+\def\scanexample{%
+  \gdef\example at dbuf{}%
+  \gdef\example at pbuf{}%
+  \begingroup
+  \@bsphack
+  \let\do\@makeother\dospecials
+  \catcode`\^^M\active
+  \def\verbatim at processline{\expandafter\example at addline\expandafter%
+    {\the\verbatim at line}}%
+  \verbatim at start}
+\def\endscanexample{\@esphack\endgroup\ignorespacesafterend}
+\def\printexample{\begingroup
+  \topsep\z at skip\parsep\z at skip\itemsep\z at skip\partopsep\z at skip\parskip\z at skip
+  \trivlist
+  \expandafter\scantokens\expandafter{\example at pbuf}%
+  \endtrivlist
+  \endgroup}
+\def\doexample{\expandafter\scantokens\expandafter{\example at dbuf}}
+\newcommand{\showexampleh}[1][0.5]{\par%
+  \parbox{\dimexpr#1\textwidth\relax}{\printexample}%
+  \parbox{\dimexpr\textwidth-#1\textwidth\relax}{\doexample}%
+  \par\medskip\ignorespaces}
+\newcommand{\showexamplev}{%
+  \printexample
+  \par\medskip
+  \parbox{\textwidth}{\doexample}%
+  \par\medskip\ignorespaces}
+\newenvironment{example}
+  {\parskip\z at skip\par\medskip\hrule\medskip}
+  {\par\hrule\par\medskip}
+\makeatother
+
 \newcommand{\TODO}{\textbf{\textcolor{red}{TODO:}} }
 
 \newcommand{\markpkg}[1]{\textsf{#1}}
@@ -158,10 +200,6 @@
 \url{https://ctan.org/pkg/eqnlines}}
 \maketitle
 
-\begin{center}
--- preview version --
-\end{center}
-
 \begin{abstract}\noindent
 \markpkg{eqnlines} is a \LaTeXe{} package providing
 a framework for typesetting single- and multi-line equations
@@ -190,7 +228,7 @@
 Typesetting mathematical equations is an undisputed strength of \TeX{}.
 \LaTeX{} improved the overall management of display equations,
 for instance by providing optional numbering.
-It also added elementary functionality for multi-lined equations
+It also added elementary functionality for multi-line equations
 with alignment. Some of its deficiencies were addressed by
 the multi-line equation environments of the package \ctanpkg{amsmath}
 which have become an established standard for these purposes.
@@ -321,7 +359,55 @@
 
 \DescribeEnv{equations}
 The package supplies a main maths environment called |equations|
-which accepts a comma-separated list of optional parameters
+which has three principal modes of operation.
+It can display a single-line equation
+just as the \LaTeX{} environment |equation| or
+the symbolic shortcut |\[...\]|:
+%
+\[
+\framebox[8cm]{\pstrut single line}
+\]
+%
+It can display a stack of equations
+analogous to the \ctanpkg{amsmath} environments |gather| and |multline|:
+\unskip\footnote{Arguably, a single-line equation is
+just a stack of equations of height 1.
+Nevertheless, there is a single-line mode
+which prohibits line breaks and which works slightly more efficiently:
+For example, the multi-line modes will process the input
+twice which is not needed for the single-line mode.
+Apart from that, the package takes care that the layout and spacing
+of single-line equations and multi-line equations consisting of a single line
+is the same.}
+%
+\<~[pad]
+\framebox[4cm]{\pstrut stacked line 1}
+\\
+\framebox[7cm]{\pstrut stacked line 2}
+\\
+\framebox[5cm]{\pstrut stacked line 3}
+\\
+\shoveright\framebox[5cm]{\pstrut aligned line 4}
+\>
+%
+It can also display several columns of aligned equations
+analogous to the \ctanpkg{amsmath} environment family |align|:
+%
+\<
+\framebox[1.0cm]{\pstrut 1a-L}\hskip-0.5pt&\framebox[3.0cm]{\pstrut 1a-R}
+&
+\framebox[1.5cm]{\pstrut 1b-L}\hskip-0.5pt&\framebox[3.5cm]{\pstrut 1b-R}
+\\
+\framebox[2.5cm]{\pstrut 2a-L}\hskip-0.5pt&\framebox[4.5cm]{\pstrut 2a-R}
+&
+&\framebox[2cm]{\pstrut 2b-R}
+\\
+&\framebox[4cm]{\pstrut 3a-R}
+\>
+%
+
+The environment |equations|
+accepts a comma-separated list of optional parameters
 `|[|\textit{opts}|]|':
 %
 \begin{center}
@@ -351,8 +437,8 @@
 \DescribeKey{single}
 \DescribeKey{lines}
 \DescribeKey{columns}
-The environment has three principal modes of operation
-which are selected by setting an optional argument as follows:
+The three modes of operation
+are selected by setting an optional argument as follows:
 %
 \begin{center}
 \begin{tabular}{llll}
@@ -389,6 +475,28 @@
 to the stacked form (with right alignment) if only a single column is provided
 (no `|&|'s).
 
+\begin{example}
+\begin{scanexample}
+\begin{equations}[single]
+x=\cos\phi
+\end{equations}
+\end{scanexample}
+\showexampleh
+\begin{scanexample}
+\begin{equations}[lines]
+x=\cos\phi \\ \phi=\arccos x
+\end{equations}
+\end{scanexample}
+\showexampleh
+\begin{scanexample}
+\begin{equations}[columns]
+x&=\cos\phi & \phi&=\arccos x \\
+ &=(z+z^{-1})/2 & &=-i\log z
+\end{equations}
+\end{scanexample}
+\showexampleh
+\end{example}
+
 \DescribeInterfaceMacro{\[...\string\]}
 \DescribeInterfaceMacro{\<...\string\>}
 \DescribeKey{\string~}
@@ -407,6 +515,33 @@
 Both default arguments are preset to |nonumber|
 which disables equation numbering, see \secref{sec:numbering}.
 
+\begin{example}
+\begin{scanexample}
+\[
+x=\cos\phi
+\]
+\end{scanexample}
+\showexampleh
+\begin{scanexample}
+\<~
+x=\cos\phi \\ \phi=\arccos x
+\>
+\end{scanexample}
+\showexampleh
+\begin{scanexample}
+\<
+x&=\cos\phi & \phi&=\arccos x \\
+ &=(z+z^{-1})/2 & &=-i\log z
+\>
+\end{scanexample}
+\showexampleh
+\begin{scanexample}
+\eqnlinesset{sqropt={donumber}}
+\[ x=\cos\phi \]
+\end{scanexample}
+\showexampleh
+\end{example}
+
 \DescribeEnv{equation}
 \DescribeEnv{multline}
 \DescribeEnv{gather}
@@ -414,7 +549,7 @@
 The package also supplies or overwrites the \ctanpkg{amsmath}
 environments |equation|, |multline|, |gather|, |align| and |flalign|
 including their starred variants
-but neither the |alignat| alternative forms nor |split|.
+(but neither the |alignat| alternative forms nor the |split| construction).
 It is possible to define further equation environments \textit{env}
 with a predefined set of options \textit{opts} using:
 %
@@ -423,11 +558,43 @@
 |{\eqnaddopt{|\textit{opts}|}\equations}{\endequations}|
 \end{center}
 
+\begin{example}
+\begin{scanexample}
+\begin{equation}
+x=\cos\phi
+\end{equation}
+\end{scanexample}
+\showexampleh
+\begin{scanexample}
+\begin{gather}
+x=\cos\phi \\ \phi=\arccos x
+\end{gather}
+\end{scanexample}
+\showexampleh
+\begin{scanexample}
+\begin{align}
+x&=\cos\phi & \phi&=\arccos x \\
+ &=(z+z^{-1})/2 & &=-i\log z
+\end{align}
+\end{scanexample}
+\showexampleh
+\begin{scanexample}
+\newenvironment{eqnlist}
+  {\eqnaddopt{lines,shape=left}\equations}
+  {\endequations}
+\begin{eqnlist}[nonumber]
+x=\cos\phi \\ \phi=\arccos x
+\end{eqnlist}
+\end{scanexample}
+\showexampleh[0.65]
+\end{example}
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \subsection{Numbering}
 \label{sec:numbering}
 
 \DescribeKey{numberline}
+\DescribeKey{nline,n}
 The package extends the established interface of \LaTeX{}
 and the \ctanpkg{amsmath} package for labelling equations
 with numbers or with manually assigned tags.
@@ -435,14 +602,15 @@
 individual labelling of the equation lines or
 one overall number/tag for the whole block of equations.
 The modes are selected by an optional argument
-|numberline=|\textit{mode} as follows:
+|numberline=|\textit{mode} (alternatively |nline| or just |n|)
+as follows:
 %
 \begin{center}
 \begin{tabular}{llll}
 name     & alt. & description & preset \\
 \hline
-|none|   & |n| & & preset off\\
-|all|    & |a| & individual lines & preset on\\
+|none|   & |n| & & all lines, preset off \\
+|all|    & |a| & individual lines & all lines \\
 |sub|    & |s| & & subequations (a,\,b,\,c,\,\ldots) \\
 \hline
 |first|  & |f| & & first line\\
@@ -453,7 +621,61 @@
 |here|   & |h| & & line indicated by |\numberhere| \\
 \end{tabular}
 \end{center}
-%
+
+\begin{example}
+\begin{scanexample}
+\begin{equations}[!,numberline=...]
+  x  &= \cos\phi  \\ &= (z+z^{-1})/2 \\
+\phi &= \arccos x \\ &= -i\log z
+\end{equations}
+\end{scanexample}
+\qquad\parbox{0.8\textwidth}{\printexample}
+\par\medskip
+\makebox[0.33\textwidth]{|none|:}\hfil
+\makebox[0.33\textwidth]{|all|:}\hfil
+\makebox[0.33\textwidth]{|sub|:}\par\smallskip
+\begin{minipage}{0.33\textwidth}
+\begin{equations}[!,numberline=none]
+  x  &= \cos\phi  \\ &= (z+z^{-1})/2 \\
+\phi &= \arccos x \\ &= -i\log z
+\end{equations}
+\end{minipage}\vrule\hfill
+\begin{minipage}{0.33\textwidth}
+\begin{equations}[!,numberline=all]
+  x  &= \cos\phi  \\ &= (z+z^{-1})/2 \\
+\phi &= \arccos x \\ &= -i\log z
+\end{equations}
+\end{minipage}\vrule\hfill
+\begin{minipage}{0.33\textwidth}
+\begin{equations}[!,numberline=sub]
+  x  &= \cos\phi  \\ &= (z+z^{-1})/2 \\
+\phi &= \arccos x \\ &= -i\log z
+\end{equations}
+\end{minipage}
+\par\medskip
+\makebox[0.33\textwidth]{|first|:}\hfil
+\makebox[0.33\textwidth]{|middle|:}\hfil
+\makebox[0.33\textwidth]{|last|:}\par\smallskip
+\begin{minipage}{0.33\textwidth}
+\begin{equations}[!,numberline=first]
+  x  &= \cos\phi  \\ &= (z+z^{-1})/2 \\
+\phi &= \arccos x \\ &= -i\log z
+\end{equations}
+\end{minipage}\vrule
+\begin{minipage}{0.33\textwidth}
+\begin{equations}[!,numberline=middle]
+  x  &= \cos\phi  \\ &= (z+z^{-1})/2 \\
+\phi &= \arccos x \\ &= -i\log z
+\end{equations}
+\end{minipage}\vrule
+\begin{minipage}{0.33\textwidth}
+\begin{equations}[!,numberline=last]
+  x  &= \cos\phi  \\ &= (z+z^{-1})/2 \\
+\phi &= \arccos x \\ &= -i\log z
+\end{equations}
+\end{minipage}
+\end{example}
+
 \DescribeInterfaceMacro{\nonumber}
 \DescribeInterfaceMacro{\donumber}
 Numbering can be turned on and off
@@ -466,10 +688,17 @@
 |\donumber|
 \end{center}
 %
-\DescribeKey{*}
-\DescribeKey{!}
-Alternatively, the numbering can be disabled or enabled for the block using
-modifiers (which must be placed \emph{before} further optional arguments):
+\DescribeKey{nonumber}
+\DescribeKey{donumber}
+\DescribeKey{number}
+\DescribeKey{nn,*}
+\DescribeKey{dn,!}
+The numbering can be disabled or enabled for the block
+by the keys |nonumber| or |donumber| (|nn|=`|*|' or |dn|=`|!|' for short)
+or by |number=|\textit{bool} with \textit{bool}
+either |on| or |off| (among several alternative forms).
+Alternatively the number can be switched by using modifiers
+(which cannot be used in conjunction with optional arguments |[|\ldots|]|):
 %
 \begin{center}
 |\[*|\textvisiblespace\,\ldots|\]|
@@ -480,7 +709,8 @@
 This allows to define a default behaviour and specify exceptions
 where they may occur.
 The star modifier following directly the environment declaration
-replaces the starred form of environments (|equation*|, etc.).
+replaces the starred form of environments (|equation*|, etc.)
+and there is no need to adjust the closing statement.
 
 \DescribeInterfaceMacro{\numberhere}
 \DescribeInterfaceMacro{\numbernext}
@@ -492,11 +722,74 @@
 |\numbernext|
 \end{center}
 %
-The former macro overrides the position to the present line.
-The latter macro defers the number to the next line,
-e.g.\ if an equation is broken into several lines
-and the last one should receive the number tag.
+The former macro overrides the position to the present line,
+the latter macro defers the number to the next line.
+For example, if an equation is broken into several lines
+one may use the combination |\numbernext \\|
+to assign the number to the last line.
 
+\begin{example}
+\begin{scanexample}
+\begin{equations}
+   x &= \cos\phi \nonumber \\
+     &= (z+z^{-1})/2 \\
+\phi &= \arccos x \nonumber \\
+     &= -i\log z
+\end{equations}
+\end{scanexample}
+\showexampleh
+\begin{scanexample}
+\begin{equations}*
+   x &= \cos\phi \donumber \\
+     &= (z+z^{-1})/2 \\
+\phi &= \arccos x \donumber \\
+     &= -i\log z
+\end{equations}
+\end{scanexample}
+\showexampleh
+\begin{scanexample}
+\eqnlinesset{numberline=last}
+\<! x &= \cos\phi \\
+ \phi &= \arccos x \>
+\end{scanexample}
+\showexampleh
+\begin{scanexample}
+\eqnlinesset{angopt=donumber}
+\<* x &= \cos\phi \\
+ \phi &= \arccos x \>
+\end{scanexample}
+\showexampleh
+\begin{scanexample}
+\begin{equations}
+   x &= \cos\phi \numbernext \\
+     &= (z+z^{-1})/2 \\
+\phi &= \arccos x \numbernext \\
+     &= -i\log z
+\end{equations}
+\end{scanexample}
+\showexampleh
+\begin{scanexample}
+\eqnlinesset{numberline=here}
+\<!
+   x &= \cos\phi \\
+     &= (z+z^{-1})/2 \\
+\phi &= \arccos x \numberhere \\
+     &= -i\log z
+\>
+\end{scanexample}
+\showexampleh
+\begin{scanexample}
+\eqnlinesset{numberline=first}
+\<!
+   x &= \cos\phi \numbernext \\
+     &= (z+z^{-1})/2 \\
+\phi &= \arccos x \numbernext \\
+     &= -i\log z
+\>
+\end{scanexample}
+\showexampleh
+\end{example}
+
 \DescribeInterfaceMacro{\label}
 \DescribeInterfaceMacro{\tag}
 Equation numbers can receive \LaTeX{} labels as usual
@@ -509,6 +802,8 @@
 |\tag|[|*|]|{|\textit{tag}|}|
 \end{center}
 %
+A |tag| replaces the equation number,
+|tag*| will drop the decoration by parentheses.
 Note that a label and a tag will always apply to the
 next number that will be printed, and only a single label
 and/or tag may be specified for it. For example, if the present line
@@ -515,10 +810,10 @@
 has no numbering, but the following line does,
 |\label| or |\tag| will apply to the following line.
 The macros |\label| and |\tag|
-can also be instructed to automatically enable numbering
-for the present line or block (|\donumber|).
-By default, numbers are triggered for |\tag|, but not for |\label|
-reflecting the behaviour set forth by \ctanpkg{amsmath}.
+can also be instructed to automatically enable numbering/tagging
+for the present line or block via |\donumber|, see below.
+By default, numbering/tagging is triggered for |\tag|,
+but not for |\label| reflecting the behaviour set forth by \ctanpkg{amsmath}.
 By enabling triggering for |\label|, numbers will be produced
 only if they have a chance of being referenced.
 
@@ -542,17 +837,32 @@
 the optional argument |label| can be used to assign
 a label to the parent number addressing the whole equation block.
 
-\DescribeInterfaceMacro{\raisetag}
+\DescribeInterfaceMacro{\eqref}
+The macro |\eqref| is the standard method for referring
+to equation numbers via their label.
+This method also uses the layout defined below.
+%
+\begin{center}
+|\eqref{|\textit{label}|}|.
+\end{center}
+%
+\DescribeInterfaceMacro{\tagform}
+\DescribeInterfaceMacro{\tagbox}
+\DescribeInterfaceMacro{\tagboxed}
+For custom typesetting,
+|\tagform| encloses a number/tag with decoration,
+|\tagbox| puts the decorated number in a box
+and |\tagboxed| combines the two.
 
-\DescribeKey{taglayout}
+\DescribeKey{tagbox}
 \DescribeKey{tagform}
 The typesetting of equation numbers and tags passes through two macros,
 one which defines the layout
-and another one which adds a decoration (brackets).
+and another one which adds a decoration by parentheses.
 These two methods can be adjusted via the options:
 %
 \begin{center}
-|taglayout|[|*|]|={|\textit{code}|}|
+|tagbox|[|*|]|={|\textit{code}|}|
 \quad and\quad
 |tagform={|\textit{l}|{|\textit{code}|}|\textit{r}|}|
 \quad or\quad
@@ -562,18 +872,154 @@
 Here, \textit{code} is some macro code
 that references the argument `|#1|' containing the
 number or tag, and \textit{l} and \textit{r}
-can be opening and closing brackets for the tag presentation.
+can be opening and closing parentheses for the tag presentation.
 
-\DescribeInterfaceMacro{\eqref}
-The macro |\eqref| is the standard method for referring
-to equation numbers via their label.
-This method also uses the layout defined above.
+\begin{example}
+\eqnlinesset{tagform=[{#1}]}
+\eqnlinesset{tagbox={\textcolor{blue}{#1}}}
+\begin{scanexample}
+\<[!,numberline=last]
+   x &= \cos\phi \\
+     &= (z+z^{-1})/2 \\
+\phi &= \arccos x \\
+     &= -i\log z
+\>
+\end{scanexample}
+\showexampleh
+\end{example}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \subsection{Horizontal Adjustment}
 \label{sec:adjustment}
 
-\DescribeKey{margin}
+\DescribeKey{layout}
+\DescribeKey{center}
+\DescribeKey{left}
+First of all, the overall layout can be adjusted
+between central and left alignment
+via |layout=center|, |layout=left| or |center|, |left| for short.
+
+\begin{example}
+\begin{scanexample}
+\<[layout=center]
+   x &= \cos\phi \\
+     &= (z+z^{-1})/2 \\
+\phi &= \arccos x \\
+     &= -i\log z
+\>
+\end{scanexample}
+\showexampleh[0.35]
+\begin{scanexample}
+\<[layout=left]
+   x &= \cos\phi \\
+     &= (z+z^{-1})/2 \\
+\phi &= \arccos x \\
+     &= -i\log z
+\>
+\end{scanexample}
+\showexampleh[0.35]
+\end{example}
+
+\DescribeKey{tags}
+\DescribeKey{tagsright}
+\DescribeKey{tagsleft}
+Furthermore, numbers and/or tags may be placed
+on the right or left margin
+via |tags=right|, |tags=left| or |tagsright|, |tagsleft| for short.
+
+\begin{example}
+\begin{scanexample}
+\<[tags=right,!]
+   x &= \cos\phi \\
+     &= (z+z^{-1})/2 \\
+\phi &= \arccos x \\
+     &= -i\log z
+\>
+\end{scanexample}
+\showexampleh
+\begin{scanexample}
+\<[tags=left,!]
+   x &= \cos\phi \\
+     &= (z+z^{-1})/2 \\
+\phi &= \arccos x \\
+     &= -i\log z
+\>
+\end{scanexample}
+\showexampleh
+\end{example}
+
+\DescribeKey{tagmargin}
+\DescribeKey{tagmargin*}
+\DescribeKey{tagmarginratio}
+In central alignment layout, one can impose a tag margin
+|tagmargin={|\textit{dimen}|}|
+which allocates some space to the tag
+such that equation content is centred in the remaining horizontal space.
+The margin can also be set to the width of some text by
+|tagmargin*={|\textit{text}|}| or it can be calculated
+as the maximum width of tags by |tagmargin| without parameter (default).
+The option |tagmarginratio={|\textit{ratio}|}|
+uses the tag margin only for equation blocks
+with a ratio of tags to rows above the given (decimal) ratio
+(a value above 1 uses the tag margin only for single equations with tags;
+default is |0.334|).
+The option |tagmarginthreshold={|\textit{threshold}|}|
+uses the tag margin only if the ratio of spacings would be below
+the given (decimal) threshold (very much off balance;
+default is |0.5|).
+The latter two options together with some tag margin
+can produce a more appealing layout for equation blocks of mixed filling.
+In the following example, the former two equations are centred
+on all horizontal space
+while the latter two equations are centred on the space left of the tag
+(the ratio of spacings without tag margin would be very small here):
+
+\begin{example}
+\begin{scanexample}
+\eqnlinesset{tagmarginthreshold=0.7}
+\[! \framebox[4em]{} \]
+\[! \framebox[8em]{} \]
+\[! \framebox[12em]{} \]
+\[! \framebox[16em]{} \]
+\end{scanexample}
+\showexampleh
+\end{example}
+
+\DescribeKey{leftmargin}
+\DescribeKey{leftmargin*}
+\DescribeKey{minleftmargin}
+\DescribeKey{maxleftmargin}
+In left alignment layout, all equations are left aligned to a left margin
+(|leftmargin| is initialised
+to the first level of enumerations and itemisations).
+It can be set to the width of some text by |leftmargin*={|\textit{text}|}|.
+Depending on the situation, the left margin may be
+reduced or extended to |minleftmargin| or |maxleftmargin|, respectively.
+
+\begin{example}
+\eqnlinesset{layout=left}
+\begin{scanexample}
+\eqnlinesset{layout=left}
+\<
+   x &= \cos\phi \\
+     &= (z+z^{-1})/2 \\
+\phi &= \arccos x \\
+     &= -i\log z
+\>
+\end{scanexample}
+\showexampleh[0.35]
+\begin{scanexample}
+\<[tags=left,!]
+   x &= \cos\phi \\
+     &= (z+z^{-1})/2 \\
+\phi &= \arccos x \\
+     &= -i\log z
+\>
+\end{scanexample}
+\showexampleh[0.35]
+\end{example}
+
+\DescribeKey{margins}
 \DescribeKey{mincolsep}
 \DescribeKey{maxcolsep}
 The horizontal alignment of columns is fixed for aligned multi-line equations:
@@ -585,14 +1031,33 @@
 (option |margins=on|),
 but it can be eliminated so that the outer columns
 are pushed right to the margin (option |margins=off|).
-In addition, a minimum and maximum width can be specified
-for the column separation (|mincolsep=|\textit{dimen}
-and |maxcolsep=|\textit{dimen}).
-By default, no maximum column separation is set (|maxcolsep*|),
-and all horizontal space is used, otherwise a value
-of |2em| ($\equiv$|\qquad|) is suggested with the minimum separation
-set to |1em| ($\equiv$|\quad|) by default.
+A minimum and maximum column separation can be specified
+via |mincolsep=|\textit{dimen} and |maxcolsep=|\textit{dimen}
+(defaults are |2em| and |1em|)
+or the maximum column separation can be disabled by |maxcolsep*|
+(which is required for |margins=off| to take effect).
 
+\begin{example}
+\begin{scanexample}
+\<[maxcolsep=2em]
+ x &= \cos\phi     & \phi &= \arccos x \\
+   &= (z+z^{-1})/2 &      &= -i\log z \>
+\end{scanexample}
+\showexamplev
+\begin{scanexample}
+\<[maxcolsep*]
+ x &= \cos\phi     & \phi &= \arccos x \\
+   &= (z+z^{-1})/2 &      &= -i\log z \>
+\end{scanexample}
+\showexamplev
+\begin{scanexample}
+\<[maxcolsep*,margins=off]
+ x &= \cos\phi     & \phi &= \arccos x \\
+   &= (z+z^{-1})/2 &      &= -i\log z \>
+\end{scanexample}
+\showexamplev
+\end{example}
+
 For stacks of equations including single equations,
 there is just a single alignment column
 whose horizontal alignment can be adjusted via a shape scheme or
@@ -618,8 +1083,55 @@
 \end{center}
 %
 Note that the steps shape comes to use in the \ctanpkg{amsmath}
-environment |multline|. The alignment preset
-can be adjusted for individual lines by the macros:
+environment |multline|.
+
+\begin{example}
+\eqnlinesset{pad=2em}
+\begin{scanexample}
+\eqnlinesset{pad=2em}
+\<~[shape=...] x = \cos\phi \\ x = (z+z^{-1})/2 \\
+  \phi = \arccos x \\ \phi = -i\log z \>
+\end{scanexample}
+\qquad\parbox{0.8\textwidth}{\printexample}
+\par\medskip
+\makebox[0.33\textwidth]{|left|:}\hfil
+\makebox[0.33\textwidth]{|center|:}\hfil
+\makebox[0.33\textwidth]{|right|:}\par\smallskip
+\begin{minipage}{0.33\textwidth}
+\<~[shape=left] x = \cos\phi \\ x = (z+z^{-1})/2 \\
+  \phi = \arccos x \\ \phi = -i\log z \>
+\end{minipage}\vrule\hfill
+\begin{minipage}{0.33\textwidth}
+\<~[shape=center] x = \cos\phi \\ x = (z+z^{-1})/2 \\
+  \phi = \arccos x \\ \phi = -i\log z \>
+\end{minipage}\vrule\hfill
+\begin{minipage}{0.33\textwidth}
+\<~[shape=right] x = \cos\phi \\ x = (z+z^{-1})/2 \\
+  \phi = \arccos x \\ \phi = -i\log z \>
+\end{minipage}
+\par\medskip
+\makebox[0.33\textwidth]{|first|:}\hfil
+\makebox[0.33\textwidth]{|hanging|:}\hfil
+\makebox[0.33\textwidth]{|steps|:}\par\smallskip
+\begin{minipage}{0.33\textwidth}
+\<~[shape=first] x = \cos\phi \\ x = (z+z^{-1})/2 \\
+  \phi = \arccos x \\ \phi = -i\log z \>
+\end{minipage}\vrule
+\begin{minipage}{0.33\textwidth}
+\<~[shape=hanging] x = \cos\phi \\ x = (z+z^{-1})/2 \\
+  \phi = \arccos x \\ \phi = -i\log z \>
+\end{minipage}\vrule
+\begin{minipage}{0.33\textwidth}
+\<~[shape=steps] x = \cos\phi \\ x = (z+z^{-1})/2 \\
+  \phi = \arccos x \\ \phi = -i\log z \>
+\end{minipage}
+\end{example}
+
+\DescribeInterfaceMacro{\shoveleft}
+\DescribeInterfaceMacro{\shovecenter}
+\DescribeInterfaceMacro{\shoveright}
+\DescribeKey{indent}
+The alignment preset can be adjusted for individual lines by the macros:
 %
 \begin{center}
 |\shoveleft|[|*|$\vert$|!|$\vert$|[|\textit{dimen}|]|],
@@ -632,7 +1144,6 @@
 In contradistinction to \ctanpkg{amsmath},
 these macros do not require to specify the cell contents as their argument
 (but there is no harm in doing so).
-\DescribeKey{indent}
 The macro |\shoveleft| also accepts the modifiers
 `|*|' or `|!|' for indentation or hanging indentation by
 the standard indentation amount (|indent|=|2em|)
@@ -650,44 +1161,31 @@
 Note that |indent*={|\textit{dimen}|}| sets the default indentation amount
 and the left padding at the same time.
 
-\DescribeKey{layout}
-\DescribeKey{center}
-\DescribeKey{left}
-Finally, the overall layout can be adjusted between central and left alignment
-via |layout=center|, |layout=left| or |center|, |left| for short.
+\begin{example}
+\begin{scanexample}
+\eqnlinesset{indent=2em,pad=5em}
+\<~
+\shoveleft \framebox[5em]{left} \\
+\shoveleft* \framebox[5em]{indent} \\
+\shovecenter \framebox[5em]{center} \\
+\shoveright \framebox[5em]{right}
+\>
+\end{scanexample}
+\showexampleh[0.55]
+\begin{scanexample}
+\eqnlinesset{layout=left}
+\eqnlinesset{leftmargin=2em}
+\eqnlinesset{indent=2em}
+\<~
+\shoveleft! \framebox[5em]{outdent} \\
+\shoveleft \framebox[5em]{left} \\
+\shoveleft* \framebox[5em]{indent} \\
+\shoveright \framebox[5em]{right}
+\>
+\end{scanexample}
+\showexampleh[0.55]
+\end{example}
 
-\DescribeKey{tagmargin}
-\DescribeKey{tagmargin*}
-\DescribeKey{tagmargincalc}
-\DescribeKey{tagmarginratio}
-In central alignment layout, there is the option of imposing a tag margin
-|tagmargin={|\textit{dimen}|}|
-which allocates some space to the tag
-such that equation content is centred in the remaining horizontal space.
-The margin can also be set to the width of some text by
-|tagmargin*={|\textit{text}|}| or it can be calculated
-as the maximum width of tags by |tagmargincalc|.
-The option |tagmarginratio={|\textit{ratio}|}|
-uses the tag margin only for equation blocks
-with a ratio of tags to rows above the given (decimal) ratio
-(a value above 1 uses the tag margin only for single equations with tags).
-The option |tagmarginthreshold={|\textit{threshold}|}|
-uses the tag margin only if the ratio of spacings is below
-the given (decimal) threshold.
-The latter two options together with some tag margin
-can produce a more appealing layout for equation blocks of mixed filling.
-
-\DescribeKey{leftmargin}
-\DescribeKey{leftmargin*}
-\DescribeKey{minleftmargin}
-\DescribeKey{maxleftmargin}
-In left alignment layout, all equations are left aligned to a left margin
-(|leftmargin| is initialised
-to the first level of enumerations and itemisations).
-It can be set to the width of some text by |leftmargin*={|\textit{text}|}|.
-Depending on the situation, the left margin may be
-reduced or extended to |minleftmargin| or |maxleftmargin|, respectively.
-
 \DescribeKey{marginbadness}
 \DescribeKey{maxbadness}
 Finally, we note that within single and stacked equations,
@@ -702,6 +1200,42 @@
 raises or lowers the equation tag if needed.
 Small values prevent shrinking and higher values allow for more compression.
 
+\begin{example}
+\begin{scanexample}
+\<~!
+x+x \\
+x+x+x+x \\
+x+x+x+x+x+x \\
+x+x+x+x+x+x+x+x \\
+x+x+x+x+x+x+x+x+x+x \\
+x+x+x+x+x+x+x+x+x+x+x+x \\
+\>
+\end{scanexample}
+\showexampleh[0.6]
+\end{example}
+
+\DescribeKey{mintagsep}
+\DescribeInterfaceMacro{\raisetag}
+If the available space on a line does not suffice to place
+both the equation and its tag
+(with a minimum separation of |mintagsep|; default is |0.5em|),
+a tag will automatically be lowered or raised
+(depending on whether it is placed on the right or left).
+The macro |\raisetag| may be used to fine-tune the vertical placement
+(applies only if the tag is already shifted due to lack of space).
+
+\begin{example}
+\begin{scanexample}
+\[! \phi = -\int \frac{\mathrm{d}x}{\sqrt{1+x^2}} \]
+\end{scanexample}
+\showexampleh[0.8]
+\begin{scanexample}
+\[! x = \frac{\partial}{\partial \phi}\sin\phi
+    \raisetag{0.45\baselineskip} \]
+\end{scanexample}
+\showexampleh[0.85]
+\end{example}
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \subsection{Punctuation}
 \label{sec:puctuation}
@@ -718,6 +1252,11 @@
 \DescribeKey{punct}
 The package supplies a semi-automatic scheme by which
 equations are terminated by a specific punctuation mark.
+\footnote{Clearly, the implementation of the scheme
+will takes higher efforts than direct coding.
+Hence, the scheme can be useful in situations
+where equations typically terminate phrases or
+where punctuation is otherwise expected in regular patterns.}
 Punctuation marks are set by:
 %
 \begin{center}
@@ -741,13 +1280,34 @@
 The default behaviour can be adjusted to a comma `|,|'
 for an individual equation
 by declaring `|\eqnpunct,|' before the equation
-(i.e.\ at the end of the textual phrase to which the punctuation mark belongs)
+(i.e.\ at the end of the textual phrase to which the punctuation mark belongs),
+at the end of the equation
 or by using the optional argument |[punct={,}]|.
-Likewise, |\eqnpunct{}| and |[punct={}]| eliminate a preset punctuation.
+Likewise, |\eqnpunct{}| and |[punct{}]| eliminate a preset punctuation.
 
+\begin{example}
+\eqnlinesset{skip=6pt}
+\begin{scanexample}
+\eqnpunctmain.
+The equation
+\[ x = \cos\phi \eqnpunct{} \]
+can also be written as
+\eqnpunct,
+\[ x = (z+z^{-1})/2 \]
+where we assume
+\[ z = \exp(i\phi) \]
+\end{scanexample}
+\showexampleh
+\end{example}
+
+\DescribeInterfaceMacro{\eqnpunctapply}
+In situations, where the punctuation must appear before the end
+of the block, e.g.\ before a ``q.e.d.'',
+it can be invoked manually by |\eqnpunctapply|.
+
 \DescribeKey{punctsep}
 For convenience, one may also specify a desired space
-(or any other sequence) preceding the punctuation
+(or any other code sequence) preceding the punctuation
 by |[punctsep={|\textit{sep}|}]|,
 e.g.\ \textit{sep}=|\,| or \textit{sep}=|\|\texttt{\textvisiblespace}.
 
@@ -762,6 +1322,19 @@
 A punctuation item may also be handed on to the next lower level
 of punctuation via the starred forms |punct*| and |punctline*|.
 
+\begin{example}
+\begin{scanexample}
+\eqnpunctcol, \eqnpunctline;
+\eqnpunctmain.
+\< x &= \cos\phi &
+\phi &= \arccos x \\
+   x &= (z+z^{-1})/2 &
+\phi &= -i\log z \>
+\end{scanexample}
+\showexampleh[0.4]
+\end{example}
+
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \subsection{Math Classes at Alignment}
 \label{sec:classes}
@@ -802,7 +1375,27 @@
 the alignment marker. Furthermore, in case of an empty left alignment cell,
 the leading math class is changed to |\mathord{}|
 so that a following binary operator is not interpreted as a unary one.
+For example, the following two expressions produce (almost) identical output:
 
+\begin{example}
+\begin{scanexample}
+\<[class=ampeq]
+a &= b+c \\
+  &= d-e \\
+  &\mathrel{}\phantom{=} +f
+\>
+\end{scanexample}
+\showexampleh
+\begin{scanexample}
+\<[class=eqamp]
+a =& b+c \\
+  =& d-e \\
+   & +f
+\>
+\end{scanexample}
+\showexampleh
+\end{example}
+
 \DescribeKey{classout}
 \DescribeKey{classin}
 \DescribeKey{classlead}
@@ -817,18 +1410,23 @@
 |classlead={|\textit{class}|}|.
 \end{center}
 %
-The parameter |classlead| determines the math class just after the alignment
+The parameter |classlead| alternatively |classin*|
+determines the math class just after the alignment
 if the cell before alignment is empty.
-
-For example, the following two expressions produce identical output:
+The spacing at the alignment is determined by the pairing
+of the last/first character and the selected math class at the alignment:
 %
-\begin{center}
-\begin{tabular}{l}
-|\<[ampeq] a &= b+c \\ &= d-e \\ &\mathrel{}\phantom{=} +f \>|
+\<[classin={},classout={},classlead={}]
+\framebox[1em]{\bstrut}\ \framebox[1em]{\bstrut}\
+\framebox[1em]{\bstrut a}\ \underline{\makebox[3em]{\itshape a-out}}
+\ \vrule&
+\ \underline{\makebox[3em]{\itshape in-b}}\ \framebox[1em]{\bstrut b}
+\ \framebox[1em]{\bstrut}\ \framebox[1em]{\bstrut}
 \\
-|\<[eqamp] a =& b+c \\ =& d-e \\ & +f \>|
-\end{tabular}{l}
-\end{center}
+\vrule&
+\ \underline{\makebox[3em]{\itshape lead-c}}\ \framebox[1em]{\bstrut c}
+\ \framebox[1em]{\bstrut}\ \framebox[1em]{\bstrut}
+\>
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \subsection{Vertical Spacing}
@@ -838,7 +1436,7 @@
 of the surrounding text.
 Hence, the vertical spacing depends on the surrounding text,
 in particular on the width and depth of the last line of text.
-Due to this influence it can be difficult to control
+Due to this influence it can be difficult to manually adjust
 the spacing accurately.
 The package adds several options to control the vertical spacing,
 and it also implements a uniform behaviour for all types of equations.
@@ -872,21 +1470,33 @@
 and less glue is needed above the equation.
 The package implements this basic \TeX{} feature
 for all single- and multi-line equation environments.
+
+\begin{example}
+\begin{scanexample}
+example of a long text line:
+\[ \mbox{long mode} \]
+vs.\ short:
+\[ \mbox{short mode} \]
+following line
+\end{scanexample}
+\showexampleh
+\end{example}
+
 \TeX{} also reduces the amount of glue below short equations
 (potentially to make their spacing appear more uniform).
 \DescribeKey{shortmode}
 The package allows to adjust the spacing for short equations
-via the global option |shortmode={|\textit{mode}|}|
+via the global option |shortmode=|\textit{mode}
 where \textit{mode} takes the values:
 %
 \begin{center}
 \begin{tabular}{lll}
-name & reduced glue \\
+\textit{mode} & reduced glue \\
 \hline
 |off| & disabled \\
-|above| & above short equations \\
+|above| & above short equations (package default) \\
 |belowone| & also below short single-line equations \\
-|belowall| & also below all short single-line equations \\
+|belowall| & also below all short multi-line equations \\
 \end{tabular}
 \end{center}
 %
@@ -897,6 +1507,45 @@
 via the optional arguments |short| and |long|
 taking the values |above|, |below| or |both|.
 
+\begin{example}
+\begin{scanexample}
+example of a long text line:
+\[[short] \mbox{forced short} \]
+and short:
+\[[long] \mbox{forced long} \]
+following line
+\end{scanexample}
+\showexampleh
+\end{example}
+
+There are three special situations |cont|, |par| and |top|
+which trigger different spacings:
+|cont| describes the situation
+at the start of an empty horizontal list
+(invoked by |\noindent|)
+or when an equation block directly follows another one;
+here, the space above the equation should be minimal
+(or even negative to remove the space below the previous equation block).
+|par| describes the situation at the beginning of a paragraph
+(invoked by |\par|);
+here, the space above the equation adds to the space between paragraphs.
+|top| describes the situation at the top of a vertical list
+(invoked by |\nointerlineskip|);
+here, one would typically want no space.
+
+\begin{example}
+\eqnlinesset{belowtopmode=long}
+\begin{scanexample}
+\hrule\begin{minipage}{\linewidth}
+\[ \mbox{top} \]
+some text\par
+\[ \mbox{par} \]
+\[ \mbox{cont} \]
+\end{minipage}\hrule
+\end{scanexample}
+\showexampleh
+\end{example}
+
 Third, the package provides several means to adjust the
 glue around equations:
 
@@ -908,6 +1557,19 @@
 or removed altogether via |noskip|.
 These keys also take the values |above|, |below| or |both|.
 
+\begin{example}
+\begin{scanexample}
+\hrule
+\[[long] \mbox{long default} \]
+\hrule
+\[[medskip] \mbox{medium space} \]
+\hrule
+\[[noskip] \mbox{no space} \]
+\hrule
+\end{scanexample}
+\showexampleh
+\end{example}
+
 \DescribeKey{par}
 The key |par| controls whether
 the equation environments end in horizontal mode (value |cont|)
@@ -937,7 +1599,7 @@
 \begin{tabular}{lll}
 \ldots\textit{pos}|skip| & both & description \\
 \hline
-|...long...|   & |skip| & standard amount of glue \\
+|...long...|   & |longskip| & regular amount of glue \\
 |...short...|  & -- & reduced glue for short equations \\
 |...cont...|   & -- & glue when issued from an empty |\noindent| paragraph \\
 |...par...|    & -- & glue when starting a paragraph (in vertical mode)\\
@@ -944,27 +1606,30 @@
 |...top...|    & -- & glue when issued at the top of vertical list \\
 |...med...|    & |medskip| & medium amount of glue \\\hline
 |...tag...|    & |tagskip| & glue for outer raised/lowered tags \\
-|...medtag...| & |medtagskip| & glue for outer raised/lowered tags with med \\
-|...partag...| & -- & glue for outer raised/lowered tags with par \\
+|...medtag...| & |medtagskip| & glue for outer raised/lowered tags with medium glue \\
+|...partag...| & -- & glue for outer raised/lowered tags with par skip \\
 \end{tabular}
 \end{center}
 %
 \DescribeKey{...mode}
-The situations |cont|, |par| and |top| use the respective glue |above...skip|
-above the equations.
-By default they use |belowlongskip| below the equations, but this setting
-may be adjusted by the global option \textit{pos}|mode|
+The situations \textit{pos}=|cont|, |par| and |top|
+use the respective amount of glue |above|\textit{pos}|skip|
+above the equations and the regular amount of glue |belowlongskip| below.
+These behaviours may be adjusted by the global options
+|above|\textit{pos}|mode| and |below|\textit{pos}|mode|
 with the values:
 %
 \begin{center}
 \begin{tabular}{lll}
-name & reduced glue \\
+value & reduced glue \\
 \hline
-|long| & regular amount below equations \\
-|short| & short amount below equations \\
-|cont| & |cont| amount below equations \\
-|par| & end the paragraph (only |parmode| and |topmode|) \\
-|top| & end the paragraph without interline skip (|topmode| only) \\
+|long| & regular amount of glue \\
+|short| & reduced glue for short equations \\
+|cont| & amount for empty paragraph \\
+|par| & amount for paragraph (and end the paragraph) \\
+|top| & amount for top (and end the paragraph without interline skip) \\
+|noskip| & no glue \\
+|medskip| & medium amount of glue \\
 \end{tabular}
 \end{center}
 
@@ -1008,12 +1673,37 @@
 which can be used within arbitrary math content.
 It works analogously to |equations| including optional arguments
 and modifiers, but it offers a reduced range of functionality
-such as (evidently) no numbering.
+such as (evidently) no numbering
+(yet, the |lines| mode accepts multiple columns here).
 Additional arguments are given by
 |margin|, |marginleft|, |marginright|
 which specify additional margin space
 around the equations box.
 
+\begin{example}
+\begin{scanexample}
+\[\left\{
+\begin{equationsbox}[margin=2em]
+   x &= \cos\phi \\
+\phi &= \arccos x
+\end{equationsbox}
+\right\}\]
+\end{scanexample}
+\showexampleh
+
+\begin{scanexample}
+\[\left[
+\begin{equationsbox}~[shape=l]
+   x = \cos\phi &
+\phi = \arccos x \\
+   x = (z+z^{-1})/2 &
+\phi = -i\log z
+\end{equationsbox}
+\right]\]
+\end{scanexample}
+\showexampleh
+\end{example}
+
 \DescribeEnv{subequations}
 \DescribeKey{subeqtemplate}
 The environment |subequations| group equations contained in the body
@@ -1021,13 +1711,25 @@
 of numbering (typically: a,\,b,\,c,\,\ldots).
 The numbering layout can be controlled via |subeqtemplate|.
 For instance, the default behaviour of adding lowercase latin letters
-to the parent equation number (|\theparentequation|)
+to the parent equation number (|#1|)
 is achieved by:
 %
 \begin{center}
-|subeqtemplate={\theparentequation\alph{equation}}|
+|subeqtemplate={#1\alph{#2}}|
 \end{center}
 
+\begin{example}
+\begin{scanexample}
+\eqnlinesset
+  {subeqtemplate={#1-\roman{#2}}}
+\begin{subequations}
+\[! x = \cos\phi \]
+and
+\[! \phi = \arccos x \]
+\end{subequations}
+\end{scanexample}
+\showexampleh[0.55]
+\end{example}
 
 \DescribeEnv{intertext}
 \DescribeInterfaceMacro{\intertext}
@@ -1041,6 +1743,15 @@
 The environment accepts several of the vertical spacing adjustments
 as an optional argument.
 
+\begin{example}
+\begin{scanexample}
+\< x &= \cos\phi
+\intertext[medskip]{and}
+\phi &= \arccos x \>
+\end{scanexample}
+\showexampleh
+\end{example}
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \subsection{General Options}
 \label{sec:auxiliary}
@@ -1071,7 +1782,7 @@
   & mimic classic \LaTeX/\ctanpkg{amsmath} (layout and dimensions) \\
 |defaults=eqnlines|
   & \ctanpkg{eqnlines} layout with fontsize-relative dimensions \\
-|rescan| & rescan environment body to allow special commands (e.g.\ |\verb|) \\
+|rescan| & rescan environment body for special commands (e.g.\ |\verb|) \\
 |linesfallback| & single column in align mode reverts to lines mode \\
 |ampproof| & equip optional argument parsing with protection for |&| \\
 |crerror| & invoke an error when `|\\|' is used in a single equation \\
@@ -1092,13 +1803,16 @@
 |equation| & bool & provide/overwrite |equation| and |\[|\ldots|\]| \\
 |amsmath| & bool & provide/overwrite \ctanpkg{amsmath}
                    environments and macros \\
+|amsmathends| & bool & patch \ctanpkg{amsmath} environments
+                   with individual endings \\
 |ang| & bool & provide |\<|\ldots|\>| \\
+|eqref| & bool & provide |\eqref| \\
 \end{tabular}
 \end{center}
-%
 
 If the above settings are explicitly disabled, the package will only supply
-the general purpose environment |equations| and its boxed cousin |equationsbox|.
+the general purpose environment |equations|
+and its boxed cousin |equationsbox|.
 In that case, the specific equation environments and other features
 can be activated by the command:
 %
@@ -1119,8 +1833,7 @@
    provide environment \textit{env} as \textit{name} \\
 |sqr| & provide |\[|\ldots|\]| \\
 |ang| & provide |\<|\ldots|\>| \\
-\textit{cmd} & provide/overwrite macro |\|\textit{cmd}:\\
-& |eqref|, |notag|, |thetag|, |allowdisplaybreaks|, |numberwithin| \\
+|eqref| & provide/overwrite macro |eqref| \\
 |tagform| & provide/overwrite macro |\tagform@|\\
 |maketag| & provide/overwrite macro |\maketag@@@|\\
 \end{tabular}
@@ -1304,21 +2017,12 @@
 %
 \begin{itemize}
 \item
-a proper manual
+documentation for all features
 %
 \item
 complete code documentation
 %
 \item
-sample document
-%
-\item
-version of |\eqref| that can handle multiple references and ranges
-enclosed by the default formatting for equation tags
-% syntax such as a - b, c, d (spaces to separate?, labels enclosed by {}?)
-% or completely manual such as \eqref*{\ref{...}--\ref{...},~\ref{...}}
-%
-\item
 switch to allow scanning of |\par| within body
 %
 \item
@@ -1363,6 +2067,22 @@
 \fi
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\paragraph{v0.7:} 2025/04/03
+
+\begin{itemize}
+\item
+manual expanded, examples added
+\item
+fixes for numbering, tagging, options, |linesfallback|, zero lines
+\item
+expansions for vertical spacing modes, tag display, |subeqtemplate|
+\item
+some consolidations
+\item
+internal rearrangements
+\end{itemize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \paragraph{v0.6.1:} 2025/03/27
 
 \begin{itemize}
@@ -1372,7 +2092,7 @@
 |numberline=none| now acts as |numberline=all| and |nonumber|
 \item
 fixed and extended |tagmargin|
-with |tagmargincalc|, |tagmarginratio| and |tagmarginthreshold|
+with |tagmarginratio| and |tagmarginthreshold|
 \item
 padding now applies to single-line equations as well
 \end{itemize}
@@ -1737,7 +2457,7 @@
 %    \end{macrocode}
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \subsection{Tagging Support}
+% \subsection{PDF Tagging Support}
 %
 %   \macro{\eql at tagging@...}
 % Proper PDF tagging
@@ -1849,28 +2569,28 @@
 \let\eql at tagsleft\eql at false
 %    \end{macrocode}
 %
-%   \ebool{\eql at flushleft}
-% The boolean parameter |\eql at flushleft|
+%   \ebool{\eql at layoutleft}
+% The boolean parameter |\eql at layoutleft|
 % specifies whether to use left or central alignment layout:
 %    \begin{macrocode}
-\let\eql at flushleft\eql at false
+\let\eql at layoutleft\eql at false
 %    \end{macrocode}
 %
-%   \ldimen{\eql at flushleftmargin@}
-%   \macro{\eql at flushleftmargin@val}
-%   \ldimen{\eql at flushleftmarginmin@}
-%   \ldimen{\eql at flushleftmarginmax@}
+%   \ldimen{\eql at layoutleftmargin@}
+%   \macro{\eql at layoutleftmargin@val}
+%   \ldimen{\eql at layoutleftmarginmin@}
+%   \ldimen{\eql at layoutleftmarginmax@}
 % The default width of the left margin in left alignment layout
-% is specified by |\eql at flushleftmargin@|.
-% It may be pushed down to |\eql at flushleftmarginmin@|
-% and up to |\eql at flushleftmarginmax@|:
+% is specified by |\eql at layoutleftmargin@|.
+% It may be pushed down to |\eql at layoutleftmarginmin@|
+% and up to |\eql at layoutleftmarginmax@|:
 %    \begin{macrocode}
-\newdimen\eql at flushleftmargin@
-\newdimen\eql at flushleftmarginmin@
-\newdimen\eql at flushleftmarginmax@
-\def\eql at flushleftmargin@val{\leftmargini}
-\eql at flushleftmarginmin@\z@
-\eql at flushleftmarginmax@.5\maxdimen
+\newdimen\eql at layoutleftmargin@
+\newdimen\eql at layoutleftmarginmin@
+\newdimen\eql at layoutleftmarginmax@
+\def\eql at layoutleftmargin@val{\leftmargini}
+\eql at layoutleftmarginmin@\z@
+\eql at layoutleftmarginmax@.5\maxdimen
 %    \end{macrocode}
 %
 %   \ldimen{\eql at tagmargin@}
@@ -1939,11 +2659,11 @@
 \def\eql at box@colsep{2em}
 %    \end{macrocode}
 %
-%   \macro{\eql at spread}
-% The extra spread of equation lines is specified by |\eql at spread|:
+%   \macro{\eql at spread@val}
+% The extra spread of equation lines is specified by |\eql at spread@val|:
 %    \begin{macrocode}
-\def\eql at spread{\jot}
-\newdimen\eql at spread@amount@
+\def\eql at spread@val{\jot}
+\newdimen\eql at spread@
 %    \end{macrocode}
 %
 %   \ldimen{\eql at tagfuzz@}
@@ -1968,8 +2688,8 @@
 \def\eql at display@depth{\dp\eql at strutbox@}
 %    \end{macrocode}
 %
-%   \tcounter{\eql at skip@mode at short@}
-% The setting |\eql at skip@mode at short@| specifies
+%   \macro{\eql at skip@mode at short}
+% The setting |\eql at skip@mode at short| specifies
 % when a reduced amount of glue should be used around equations
 % in case the text line above the equation fits in the space
 % that is left available in the first equation line.
@@ -1978,23 +2698,22 @@
 % value |2| furthermore reduces the glue below a single equation line and
 % value |3| also reduces the glue below multi-line equations:
 %    \begin{macrocode}
-\newcount\eql at skip@mode at short@
-\eql at skip@mode at short@\tw@
+\def\eql at skip@mode at short{2}
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\newcount\eql at skip@mode at cont@
-\eql at skip@mode at cont@\z@
+\def\eql at skip@mode at cont@above{2}
+\def\eql at skip@mode at cont@below{0}
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\newcount\eql at skip@mode at par@
-\eql at skip@mode at par@\z@
+\def\eql at skip@mode at par@above{3}
+\def\eql at skip@mode at par@below{0}
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\newcount\eql at skip@mode at top@
-\eql at skip@mode at top@\z@
+\def\eql at skip@mode at top@above{4}
+\def\eql at skip@mode at top@below{0}
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -2101,7 +2820,7 @@
 % \paragraph{Multi-Line Align Mode.}
 %
 %    \begin{macrocode}
-\let\eql at align@margins\eql at true
+\let\eql at columns@margins\eql at true
 %    \end{macrocode}
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2180,9 +2899,9 @@
 \newdimen\eql at colsep@
 %    \end{macrocode}
 %
-%   \tcounter{\eql at align@inter@}
+%   \tcounter{\eql at columns@inter@}
 %    \begin{macrocode}
-\newcount\eql at align@inter@
+\newcount\eql at columns@inter@
 %    \end{macrocode}
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2375,6 +3094,7 @@
 %    \end{macrocode}
 %
 %   \macro{\eql at punct@apply at block}
+%   \imacro{\eqnpunctapply}
 % Outputs the punctuation for the current equation block unless disabled
 % in analogy to |\eql at punct@apply at line|:
 %    \begin{macrocode}
@@ -2391,6 +3111,7 @@
     \let\eql at punct@col\@empty
   \fi
 }
+\let\eqnpunctapply\eql at punct@apply at block
 %    \end{macrocode}
 %
 %
@@ -2455,258 +3176,6 @@
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \section{Equations Box Environment}
-%
-% \TODO describe
-%
-% \TODO fixed width version (works only towards intercolumn stretch)?
-%
-%   \macro{\eql at box@cr}
-%    \begin{macrocode}
-\protected\def\eql at box@cr{%
-  \eql at ampprotect\eql at testopt@tight\eql at box@cr@\z@
-}
-\def\eql at box@cr@[#1]{%
-  \eql at punct@apply at line
-  \eql at hook@lineout
-  \eql at box@lastfield
-  \cr
-  \noalign{%
-    \vskip\glueexpr#1\relax
-  }%
-}
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-\let\eql at box@box\vcenter
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-\def\eql at box@lastfield at odd{%
-  &\omit
-  \kern-\wd\eql at fieldbox@
-  \box\eql at fieldbox@
-  \hfil
-  &\omit\kern-\eql at colsep@
-}%
-\def\eql at box@lastfield at even{&\omit\kern-\eql at colsep@}
-\def\eql at box@lastfield at lines{&\omit\kern-2\eql at colsep@}
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-\def\eql at box@open at align{%
-% \TODO templates
-  \let\eql at box@lastfield\@empty
-  \eql at halign@init{%
-%<dev>\eql at dev{starting new line}%
-  }%
-  \tabskip\z at skip
-  \halign\bgroup
-    &%
-      \let\eql at box@lastfield\eql at box@lastfield at odd
-      \global\setbox\eql at fieldbox@\hbox{%
-        \eql at strut@field
-        \@lign
-        $\m at th\displaystyle
-          \eql at hook@colin
-          ##%
-          \eql at class@innerleft
-          \eql at hook@innerleft
-          \eql at tagging@mathsave
-        $%
-        \eql at tagging@mathaddlast
-      }%
-      \hfil
-      \kern\wd\eql at fieldbox@
-      \tabskip\z at skip
-    &%
-      \eql at fieldwidth@\wd\eql at fieldbox@
-      \kern-\eql at fieldwidth@
-      \box\eql at fieldbox@
-      \let\eql at box@lastfield\eql at box@lastfield at even
-      \llap{\unhbox\eql at fieldbox@}%
-      \hbox{%
-        \eql at strut@field
-        \@lign
-        $\m at th\displaystyle
-          \eql at hook@innerright
-          \eql at class@innerright at sel
-          ##%
-          \eql at punct@apply at col
-          \eql at hook@colout
-          \eql at tagging@mathsave
-        $%
-        \eql at tagging@mathaddlast
-      }%
-      \hfil
-      \tabskip\eql at colsep@\relax
-    \crcr
-    \noalign{%
-      \eql at hook@blockbefore
-    }%
-    \eql at hook@blockin
-}
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-\def\eql at box@open at lines{%
-% \TODO templates
-  \let\shoveleft\eql at adjust@shoveleft
-  \let\shovecenter\eql at adjust@shovecenter
-  \let\shoveright\eql at adjust@shoveright
-  \let\eql at box@lastfield\eql at box@lastfield at lines
-  \eql at halign@init{%
-%<dev>\eql at dev{starting line \the\eql at row@}%
-    \global\advance\eql at row@\@ne
-  }%
-  \tabskip\z at skip
-  \halign\bgroup
-    &%
-      \eql at shape@pos@\m at ne
-      \setbox\eql at fieldbox@\hbox{%
-        \eql at strut@field
-        \@lign
-        $\m at th\displaystyle
-          \eql at hook@colin
-          ##%
-          \eql at punct@apply at col
-          \eql at hook@colout
-          \eql at tagging@mathsave
-        $%
-        \eql at tagging@mathaddlast
-      }%
-      \ifnum\eql at shape@pos@=\m at ne
-        \eql at shape@eval
-      \fi
-      \ifcase\eql at shape@pos@
-        \kern\eql at shape@amount@
-        \box\eql at fieldbox@
-        \skip@\@flushglue
-        \advance\skip@\eql at paddingleft@\relax
-        \advance\skip@\eql at paddingright@\relax
-        \advance\skip at -\eql at shape@amount@\relax
-        \hskip\skip@
-        \eql at tagging@alignleft
-      \or
-        \skip@\@flushglue
-        \advance\skip@\eql at paddingleft@\relax
-        \hskip\skip@
-        \box\eql at fieldbox@
-        \skip@\@flushglue
-        \advance\skip@\eql at paddingright@\relax
-        \hskip\skip@
-        \eql at tagging@aligncenter
-      \or
-        \skip@\@flushglue
-        \advance\skip@\eql at paddingleft@\relax
-        \advance\skip@\eql at paddingright@\relax
-        \hskip\skip@
-        \box\eql at fieldbox@
-        \eql at tagging@alignright
-      \fi
-      \tabskip\eql at colsep@\relax
-    \crcr
-    \noalign{%
-      \eql at hook@blockbefore
-    }%
-    \eql at hook@blockin
-}
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-\def\eql at box@close{%
-    \ifvmode\else
-      \global\eql at totalrows@\eql at row@
-      \eql at punct@apply at block
-      \eql at box@cr@[\z at skip]%
-    \fi
-    \crcr
-    \noalign{%
-      \eql at hook@blockafter
-    }%
-    \eql at tagging@tablesaveinner
-  \egroup
-}
-%    \end{macrocode}
-%
-%   \macro{\eql at box@start}
-%    \begin{macrocode}
-\def\eql at box@start{%
-  \relax
-  \ifmmode
-    \let\eql at box@endmath\@empty
-  \else
-    $\let\eql at box@endmath=$%
-  \fi
-  \eql at nextopt@process{equationsbox}%
-  \let\eql at punct@block\eql at punct@main
-  \let\eql at punct@main\relax
-  \eql at colsep@\glueexpr\eql at box@colsep\relax
-  \eql at paddingleft@\glueexpr\eql at paddingleft@val\relax
-  \eql at paddingright@\glueexpr\eql at paddingright@val\relax
-  \eql at indent@\glueexpr\eql at indent@val\relax
-  \eql at stack@save at boxed
-  \let\eql at flushleft\eql at false
-  \eql at row@\z@
-  \eql at totalrows@\@M
-  \eql at shape@sel
-  \hskip\glueexpr\eql at box@marginleft\relax
-  \eql at box@box\bgroup
-    \eql at display@leave
-    \let\\\eql at box@cr
-    \ifdefined\eql at box@mode at lines
-      \expandafter\eql at box@open at lines
-    \else
-      \expandafter\eql at box@open at align
-    \fi
-}
-%    \end{macrocode}
-%
-%   \macro{\eql at box@end}
-%    \begin{macrocode}
-\newcommand{\eql at box@end}{%
-    \eql at box@close
-  \egroup
-  \eql at tagging@tableaddinner
-  \hskip\glueexpr\eql at box@marginright\relax
-  \eql at stack@restore
-  \eql at box@endmath
-}
-%    \end{macrocode}
-%
-% \environment{equationsbox}
-%    \begin{macrocode}
-\newenvironment{equationsbox}{%
-%<dev>\eql at dev@enterenv
-  \eql at ampprotect\eql at box@testall\eql at box@start
-}{%
-  \eql at box@end
-%<dev>\eql at dev@leaveenv
-}
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-\def\eql at box@testall{\eql at box@testtilde}
-\def\eql at box@testtilde#1{%
-  \eql at ifnextgobble@tight~%
-    {\eqnaddopt{lines}\eql at box@testopt{#1}}%
-    {\eql at box@testopt{#1}}}
-\def\eql at box@testopt#1{%
-  \eql at ifnextchar@tight[%]
-    {\eql at box@addopt{#1}}%
-    {#1}}
-\def\eql at box@addopt#1[#2]{\eqnaddopt{#2}#1}
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-\def\eql at mode@aligned{\let\eql at box@mode at lines\eql at false}
-\def\eql at mode@lined{\let\eql at box@mode at lines\eql at true}
-\eql at mode@aligned
-%    \end{macrocode}
-%
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % \section{Equation Numbering}
 %
 % \TODO describe
@@ -2741,6 +3210,20 @@
 \def\eql at tag@boxedform#1{\eql at tag@box{\eql at tag@form{#1}}}
 %    \end{macrocode}
 %
+%    \begin{macrocode}
+\DeclareRobustCommand{\tagform}{\eql at tag@form}
+\DeclareRobustCommand{\tagbox}{\eql at tag@box}
+\DeclareRobustCommand{\tagboxed}{\eql at tag@boxedform}
+%    \end{macrocode}
+%
+%   \macro{\eqref}
+% \ctanpkg{amsmath} defines the macro |\eqref|
+% to refer to equation labels in a proper format.
+% We provide it for completeness:
+%    \begin{macrocode}
+\DeclareRobustCommand{\eql at eqref}[1]{\textup{\eql at tag@boxedform{\ref{#1}}}}
+%    \end{macrocode}
+%
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % \paragraph{Raise Tags.}
 %
@@ -2762,11 +3245,15 @@
 \eql at amsmath@let\raisetag\eql at raisetag@default
 %    \end{macrocode}
 %
-%    \TODO maybe introduce a star form to enforce raise?
+% \TODO maybe introduce a star form to enforce raise?
 %    \begin{macrocode}
-\def\eql at raisetag#1{\global\eql at raisetag@amount@\glueexpr#1\relax}%
+\def\eql at raisetag#1{\global\eql at raisetag@amount@\glueexpr#1\relax}
 %    \end{macrocode}
 %
+%    \begin{macrocode}
+\let\eql at raisetag@gobble\@gobble
+%    \end{macrocode}
+%
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % \subsection{Showkeys Integration}
 %
@@ -3060,7 +3547,7 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at tagbox@print at right{%
+\def\eql at tagbox@print at tagsright{%
   \kern-\wd\eql at tagbox@
   \box\eql at tagbox@
 }
@@ -3068,7 +3555,7 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at tagbox@print at left{%
+\def\eql at tagbox@print at tagsleft{%
   \wd\eql at tagbox@\z@
   \box\eql at tagbox@
 }
@@ -3076,7 +3563,7 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at tagbox@print at right@raise{%
+\def\eql at tagbox@print at tagsright@raise{%
   \ifnum\eql at row@=\eql at totalrows@
     \global\advance\eql at raisetag@firstlast@\tw@
   \fi
@@ -3089,7 +3576,7 @@
     \box\eql at tagbox@
   }}%
 }
-\def\eql at tagbox@print at left@raise{%
+\def\eql at tagbox@print at tagsleft@raise{%
   \ifnum\eql at row@=\@ne
     \global\advance\eql at raisetag@firstlast@\@ne
   \fi
@@ -3256,8 +3743,10 @@
 %   \imacro{\numberhere}
 %    \begin{macrocode}
 \def\numberhere{%
-  \ifmeasuring@
-    \ifnum\eql at numbering@target@<\z@\else
+  \ifnum\eql at numbering@target@<\z@
+    \donumber
+  \else
+    \ifmeasuring@
       \global\eql at numbering@target@\eql at row@
     \fi
   \fi
@@ -3268,8 +3757,10 @@
 %   \imacro{\numbernext}
 %    \begin{macrocode}
 \def\numbernext{%
-  \ifmeasuring@
-    \ifnum\eql at numbering@target@<\z@\else
+  \ifnum\eql at numbering@target@<\z@
+    \nonumber
+  \else
+    \ifmeasuring@
       \ifnum\eql at numbering@target@=\eql at row@
         \global\advance\eql at numbering@target@\@ne
       \fi
@@ -3288,9 +3779,21 @@
 \let\eql at numbering@autotag\eql at true
 \let\eql at numbering@blocklabel\@undefined
 \let\eql at numbering@blocktag\@undefined
+\let\eql at numbering@warn\eql at true
 %    \end{macrocode}
 %
 %    \begin{macrocode}
+\def\eql at numbering@autoenable{%
+  \global\@eqnswtrue
+  \ifx\eql at numbering@mode\eql at numbering@tab at here
+    \ifnum\eql at numbering@target@=\z@
+      \numberhere
+    \fi
+  \fi
+}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \eql at amsmath@after{
   \let\eql at print@eqnum at default\print at eqnum
   \let\eql at incr@eqnum at default\incr at eqnum
@@ -3314,12 +3817,14 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at label@warn{%
+\def\eql at label{%
   \ifdefined\eql at numbering@autolabel
-    \global\@eqnswtrue
+    \eql at numbering@autoenable
   \fi
-  \ifdefined\eql at nextlabel
-    \eql at warn@label at multiple\eql at nextlabel
+  \ifdefined\eql at numbering@warn
+    \ifdefined\eql at nextlabel
+      \eql at warn@label at multiple\eql at nextlabel
+    \fi
   \fi
   \global\edef\eql at nextlabel
 }
@@ -3327,33 +3832,20 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at tag@warn{%
-  \ifdefined\eql at numbering@autotag
-    \global\@eqnswtrue
-  \fi
-  \ifdefined\eql at nexttag
-    \eql at warn@tag at multiple
-  \fi
-  \eql at tag@makenext
-}
+\let\eql at label@gobble\@gobble
 %    \end{macrocode}
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at label@nowarn{%
-  \ifdefined\eql at numbering@autolabel
-    \global\@eqnswtrue
-  \fi
-  \global\edef\eql at nextlabel
-}
-%    \end{macrocode}
-%
-% \TODO describe
-%    \begin{macrocode}
-\def\eql at tag@nowarn{%
+\def\eql at tag{%
   \ifdefined\eql at numbering@autotag
-    \global\@eqnswtrue
+    \eql at numbering@autoenable
   \fi
+  \ifdefined\eql at numbering@warn
+    \ifdefined\eql at nexttag
+      \eql at warn@tag at multiple
+    \fi
+  \fi
   \eql at tag@makenext
 }
 %    \end{macrocode}
@@ -3395,8 +3887,9 @@
 %
 %    \begin{macrocode}
 \def\eql at numbering@single at init{%
-  \let\label\eql at label@warn
-  \let\tag\eql at tag@warn
+  \let\eql at numbering@warn\eql at true
+  \let\label\eql at label
+  \let\tag\eql at tag
   \let\raisetag\eql at raisetag
   \eql at numbering@target@\m at ne
   \let\eql at nextlabel\eql at blocklabel
@@ -3427,8 +3920,9 @@
 %
 %    \begin{macrocode}
 \def\eql at numbering@measure at init{%
-  \let\label\eql at label@warn
-  \let\tag\eql at tag@warn
+  \let\eql at numbering@warn\eql at true
+  \let\label\eql at label
+  \let\tag\eql at tag
   \let\raisetag\eql at raisetag
   \global\let\eql at nextlabel\eql at blocklabel
   \ifdefined\eql at blocktag
@@ -3491,8 +3985,9 @@
 %    \begin{macrocode}
 \def\eql at numbering@print at init{%
   \ifnum\eql at numbering@target@<\z@
-    \let\label\eql at label@nowarn
-    \let\tag\eql at tag@nowarn
+    \let\eql at numbering@warn\eql at false
+    \let\label\eql at label
+    \let\tag\eql at tag
     \let\raisetag\eql at raisetag
     \let\eql at nextlabel\eql at blocklabel
     \ifdefined\eql at blocktag
@@ -3501,9 +3996,9 @@
       \let\eql at nexttag\@undefined
     \fi
   \else
-    \let\label\@gobble
+    \let\label\eql at label@gobble
     \let\tag\eql at tag@gobble
-    \let\raisetag\eql at gobble
+    \let\raisetag\eql at raisetag@gobble
   \fi
 }
 %    \end{macrocode}
@@ -3878,6 +4373,13 @@
 % \TODO must not use setlength or setcounter when calc is loaded
 %    \begin{macrocode}
 \def\eql at display@close{%
+% \TODO temporary fix
+  \ifdefined\eql at tagging@on
+    \ifdefined\dollardollar at begin\else
+      \belowdisplayskip-\belowdisplayskip
+      \belowdisplayshortskip-\belowdisplayshortskip
+    \fi
+  \fi
   \ifdim\eql at display@firstavail@<\z@
     \eql at display@firstavail@\z@
   \fi
@@ -3884,20 +4386,19 @@
   \eql at skip@mode at leave@\z@
   \ifdim\eql at halign@prevdepth@=\maxdimen
     \ifdim\predisplaysize=-\maxdimen
-      \eql at skip@mode at above@\tw@
-      \eql at skip@mode at below@\eql at skip@mode at cont@
+      \eql at skip@mode at above@\eql at skip@mode at cont@above\relax
+      \eql at skip@mode at below@\eql at skip@mode at cont@below\relax
     \else
       \eql at skip@mode at above@\z@
       \eql at skip@mode at below@\z@
       \advance\eql at display@firstavail@\displayindent
       \ifdim\eql at display@firstavail@>\predisplaysize
-% \TODO: process this here or in below ifcase for short?
-        \ifcase\eql at skip@mode at short@
+        \ifcase\eql at skip@mode at short\relax
         \or
           \eql at skip@mode at above@\@ne
         \or
           \eql at skip@mode at above@\@ne
-          \ifnum\eql at row@=\tw@
+          \ifnum\eql at totalrows@=\@ne
             \eql at skip@mode at below@\@ne
           \fi
         \or
@@ -3908,29 +4409,25 @@
     \fi
   \else
     \ifdim\eql at halign@prevdepth@=-\@m\p@
-      \eql at skip@mode at above@4\relax
-      \eql at skip@mode at below@\eql at skip@mode at top@
-      \eql at skip@mode at leave@\z@
-      \predisplaypenalty\z@
-      \ifcase\eql at skip@mode at top@
-      \or
-      \or
-      \or
-        \eql at skip@mode at leave@\@ne
-      \or
-        \postdisplaypenalty\z@
-        \eql at skip@mode at leave@\tw@
-      \fi
+      \eql at skip@mode at above@\eql at skip@mode at top@above\relax
+      \eql at skip@mode at below@\eql at skip@mode at top@below\relax
     \else
-      \eql at skip@mode at above@\thr@@
-      \eql at skip@mode at below@\eql at skip@mode at par@
-      \eql at skip@mode at leave@\z@
-      \predisplaypenalty\z@
-      \ifnum\eql at skip@mode at par@=\thr@@
-        \eql at skip@mode at leave@\@ne
-      \fi
+      \eql at skip@mode at above@\eql at skip@mode at par@above\relax
+      \eql at skip@mode at below@\eql at skip@mode at par@below\relax
     \fi
   \fi
+  \ifcase\eql at skip@mode at above@
+  \or\or\or
+    \predisplaypenalty\z@
+  \or
+    \predisplaypenalty\z@
+  \fi
+  \ifcase\eql at skip@mode at below@
+  \or\or\or
+    \eql at skip@mode at leave@\@ne
+  \or
+    \eql at skip@mode at leave@\tw@
+  \fi
   \ifdefined\eql at skip@force at above
     \eql at skip@mode at above@\eql at skip@force at above\relax
   \fi
@@ -3940,6 +4437,9 @@
   \ifdefined\eql at skip@force at leave
     \eql at skip@mode at leave@\eql at skip@force at leave\relax
   \fi
+  \ifnum\eql at skip@mode at leave@>\z@
+    \postdisplaypenalty\z@
+  \fi
   \ifodd\eql at raisetag@firstlast@
     \ifcase\eql at skip@mode at above@
       \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
@@ -3972,7 +4472,7 @@
     \or
       \abovedisplayskip\z at skip
     \or
-      \abovedisplayskip\glueexpr\eql at skip@medtag at above\relax
+      \abovedisplayskip\glueexpr\eql at skip@med at above\relax
     \or
       \abovedisplayskip\glueexpr\eql at skip@custom at above\relax
     \fi
@@ -4009,7 +4509,7 @@
     \or
       \belowdisplayskip\z at skip
     \or
-      \belowdisplayskip\glueexpr\eql at skip@medtag at below\relax
+      \belowdisplayskip\glueexpr\eql at skip@med at below\relax
     \or
       \belowdisplayskip\glueexpr\eql at skip@custom at below\relax
     \fi
@@ -4024,8 +4524,10 @@
   \advance\belowdisplayskip\eql at belowspace@
   \advance\belowdisplayskip\eql at vspaceskip@
   \count@\prevgraf
-  \advance\count@\eql at row@
-  \advance\count at -\tw@
+  \advance\count@\eql at totalrows@
+  \ifnum\count@>\z@
+    \advance\count@\m at ne
+  \fi
   \prevgraf\count@
   \global\eql at skip@mode at leave@\eql at skip@mode at leave@
 % \TODO temporary fix
@@ -4088,11 +4590,11 @@
 % \TODO note on \string\spread at equation
 %    \begin{macrocode}
 \def\eql at halign@spread{%
-  \eql at spread@amount@\glueexpr\eql at spread\relax
-  \advance\eql at spread@amount@\normalbaselineskip
-  \advance\eql at spread@amount at -\baselineskip
-  \ifdim\eql at spread@amount@>\z@
-    \openup\eql at spread@amount@
+  \eql at spread@\glueexpr\eql at spread@val\relax
+  \advance\eql at spread@\normalbaselineskip
+  \advance\eql at spread@-\baselineskip
+  \ifdim\eql at spread@>\z@
+    \openup\eql at spread@
     \ifdefined\spread at equation
       \let\spread at equation\@empty
     \fi
@@ -4140,11 +4642,11 @@
       \ifdim\skip@<\lineskiplimit
         \skip@\lineskip
       \fi
-      \advance\skip at -\eql at spread@amount@\relax
+      \advance\skip at -\eql at spread@\relax
       \vskip\skip@
       \nointerlineskip
     \else
-      \vskip-\eql at spread@amount@\relax
+      \vskip-\eql at spread@\relax
     \fi
   \fi
 }
@@ -4383,27 +4885,27 @@
 }
 %    \end{macrocode}
 %
-%   \macro{\eql at shape@center at ...}
-%   \macro{\eql at shape@left at ...}
+%   \macro{\eql at shape@layoutcenter at ...}
+%   \macro{\eql at shape@layoutleft at ...}
 % Define the uniform shape schemes |left|, |center|, |right| and |default|
 % for the central and left alignment layout.
 % The scheme functions determine the desired alignment and indentation
 % for the current row:
 %    \begin{macrocode}
-\def\eql at shape@center at left{\eql at shape@pos@\z@\eql at shape@amount@\z@}
-\def\eql at shape@center at center{\eql at shape@pos@\@ne\eql at shape@amount@\z@}
-\def\eql at shape@center at right{\eql at shape@pos@\tw@\eql at shape@amount@\z@}
-\let\eql at shape@center at default\eql at shape@center at center
-\def\eql at shape@left at left{\eql at shape@pos@\z@\eql at shape@amount@\z@}
-\def\eql at shape@left at center{\eql at shape@pos@\@ne\eql at shape@amount@\z@}
-\def\eql at shape@left at right{\eql at shape@pos@\tw@\eql at shape@amount@\z@}
-\let\eql at shape@left at default\eql at shape@left at left
+\def\eql at shape@layoutcenter at left{\eql at shape@pos@\z@\eql at shape@amount@\z@}
+\def\eql at shape@layoutcenter at center{\eql at shape@pos@\@ne\eql at shape@amount@\z@}
+\def\eql at shape@layoutcenter at right{\eql at shape@pos@\tw@\eql at shape@amount@\z@}
+\let\eql at shape@layoutcenter at default\eql at shape@layoutcenter at center
+\def\eql at shape@layoutleft at left{\eql at shape@pos@\z@\eql at shape@amount@\z@}
+\def\eql at shape@layoutleft at center{\eql at shape@pos@\@ne\eql at shape@amount@\z@}
+\def\eql at shape@layoutleft at right{\eql at shape@pos@\tw@\eql at shape@amount@\z@}
+\let\eql at shape@layoutleft at default\eql at shape@layoutleft at left
 %    \end{macrocode}
 %
 % The |first| scheme implements left alignment with
 % indentation for the first line (unless there is only one line):
 %    \begin{macrocode}
-\def\eql at shape@center at first{%
+\def\eql at shape@layoutcenter at first{%
   \eql at shape@pos@\z@
   \eql at shape@amount@\z@
   \ifnum\eql at totalrows@>\@ne
@@ -4412,7 +4914,7 @@
     \fi
   \fi
 }
-\def\eql at shape@left at first{%
+\def\eql at shape@layoutleft at first{%
   \eql at shape@pos@\z@
   \eql at shape@amount@\z@
   \ifnum\eql at totalrows@>\@ne
@@ -4428,7 +4930,7 @@
 % In centeral alignment layout all but the first line are indented
 % while in left aligned layout the first line has negative indentation:
 %    \begin{macrocode}
-\def\eql at shape@center at hanging{%
+\def\eql at shape@layoutcenter at hanging{%
   \eql at shape@pos@\z@
   \eql at shape@amount@\eql at indent@
   \ifnum\eql at totalrows@>\@ne
@@ -4437,7 +4939,7 @@
     \fi
   \fi
 }
-\def\eql at shape@left at hanging{%
+\def\eql at shape@layoutleft at hanging{%
   \eql at shape@pos@\z@
   \eql at shape@amount@\z@
   \ifnum\eql at totalrows@>\@ne
@@ -4453,7 +4955,7 @@
 % In centeral alignment layout the shift operates on the alignment
 % whereas in left alignment layout the shift uses indentation:
 %    \begin{macrocode}
-\def\eql at shape@center at steps{%
+\def\eql at shape@layoutcenter at steps{%
   \eql at shape@amount@\z@
   \eql at shape@pos@\@ne
   \ifnum\eql at totalrows@>\@ne
@@ -4465,7 +4967,7 @@
     \fi
   \fi
 }
-\def\eql at shape@left at steps{%
+\def\eql at shape@layoutleft at steps{%
   \eql at shape@pos@\z@
   \eql at shape@amount@\z@
   \ifnum\eql at totalrows@>\@ne
@@ -4489,31 +4991,31 @@
 \def\eql at shape@sel{%
   \expandafter\let\expandafter\eql at shape@eval
     \csname eql at shape%
-    @\ifdefined\eql at flushleft left\else center\fi
+    @\ifdefined\eql at layoutleft layoutleft\else layoutcenter\fi
     @\eql at shape@mode\endcsname
 }
 %    \end{macrocode}
 %
-%   \macro{\eql at adjust@shoveleft}
-%   \macro{\eql at adjust@shoveright}
-%   \macro{\eql at adjust@shovecenter}
+%   \macro{\eql at adjust@alignleft}
+%   \macro{\eql at adjust@alignright}
+%   \macro{\eql at adjust@aligncenter}
 % Adjust the alignment of the current equation line.
 % For left alignment an optional argument specifies the amount of indentation:
 %    \begin{macrocode}
-\def\eql at adjust@shoveleft{%
+\def\eql at adjust@alignleft{%
   \global\eql at shape@pos@\z@
   \eql at srbgroup\eql at ifstar@tight
-    {\eql at adjust@shoveleft@[\eql at indent@]}%
+    {\eql at adjust@alignleft@[\eql at indent@]}%
     {\eql at ifnextgobble@tight{!}%
-      {\eql at adjust@shoveleft@[-\eql at indent@]}%
-      {\eql at testopt@tight\eql at adjust@shoveleft@\z@}%
+      {\eql at adjust@alignleft@[-\eql at indent@]}%
+      {\eql at testopt@tight\eql at adjust@alignleft@\z@}%
     }%
 }
-\def\eql at adjust@shoveleft@[#1]{%
+\def\eql at adjust@alignleft@[#1]{%
   \eql at sregroup\global\eql at shape@amount@\glueexpr#1\relax}
-\def\eql at adjust@shovecenter{%
+\def\eql at adjust@aligncenter{%
   \global\eql at shape@pos@\@ne\global\eql at shape@amount@\z@}
-\def\eql at adjust@shoveright{%
+\def\eql at adjust@alignright{%
   \global\eql at shape@pos@\tw@\global\eql at shape@amount@\z@}
 %    \end{macrocode}
 %
@@ -4612,9 +5114,9 @@
     \eql at tagging@alignright
   \fi
   \csname eql at adjust%
-    @\ifdefined\eql at flushleft flushleft\else center\fi
+    @\ifdefined\eql at layoutleft layoutleft\else layoutcenter\fi
     @\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
-    @\ifcase\eql at shape@pos@ shoveleft\or shovecenter\or shoveright\fi
+    @\ifcase\eql at shape@pos@ alignleft\or aligncenter\or alignright\fi
     @tag\endcsname
 }
 \def\eql at adjust@sel at notag{%
@@ -4627,9 +5129,9 @@
     \eql at tagging@alignright
   \fi
   \csname eql at adjust%
-    @\ifdefined\eql at flushleft flushleft\else center\fi
+    @\ifdefined\eql at layoutleft layoutleft\else layoutcenter\fi
     @\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
-    @\ifcase\eql at shape@pos@ shoveleft\or shovecenter\or shoveright\fi
+    @\ifcase\eql at shape@pos@ alignleft\or aligncenter\or alignright\fi
     @notag\endcsname
 }
 %    \end{macrocode}
@@ -4638,10 +5140,10 @@
 % \TODO any init needed for left alignment layout? marginleft is used per line!
 %    \begin{macrocode}
 \def\eql at adjust@calc{%
-  \ifdefined\eql at flushleft
-    \eql at flushleftmargin@\glueexpr\eql at flushleftmargin@val\relax
+  \ifdefined\eql at layoutleft
+    \eql at layoutleftmargin@\glueexpr\eql at layoutleftmargin@val\relax
   \else
-    \eql at align@inter@\z@
+    \eql at columns@inter@\z@
     \eql at adjust@tagmargin
     \ifdefined\eql at paddingmax
       \eql at marginleft@\z@
@@ -4673,7 +5175,7 @@
 %
 % \TODO check all these!!
 %    \begin{macrocode}
-\def\eql at adjust@center at tagsright@shovecenter at notag{%
+\def\eql at adjust@layoutcenter at tagsright@aligncenter at notag{%
   \dimen@\displaywidth
   \advance\dimen at -\eql at fieldwidth@
   \ifdim\dimen@>\eql at tagmargin@
@@ -4686,7 +5188,7 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at adjust@center at tagsright@shovecenter at tag{%
+\def\eql at adjust@layoutcenter at tagsright@aligncenter at tag{%
   \dimen@\displaywidth
   \ifdim\eql at tagwidth@<\eql at tagmargin@
     \advance\dimen at -\eql at tagmargin@
@@ -4696,7 +5198,7 @@
   \fi
   \ifdim\eql at fieldwidth@<\dimen@
     \eql at adjust@print at aligncenter\z@\eql at tagmargin@
-    \eql at tagbox@print at right
+    \eql at tagbox@print at tagsright
   \else
     \eql at adjust@try\eql at tagwidth@
     \ifnum\badness<\eql at maxbadness@
@@ -4705,10 +5207,10 @@
       \else
         \eql at adjust@print at alignright\z@\eql at tagwidth@
       \fi
-      \eql at tagbox@print at right
+      \eql at tagbox@print at tagsright
     \else
-      \eql at adjust@center at tagsright@shovecenter at notag
-      \eql at tagbox@print at right@raise
+      \eql at adjust@layoutcenter at tagsright@aligncenter at notag
+      \eql at tagbox@print at tagsright@raise
     \fi
   \fi
 }
@@ -4716,7 +5218,7 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at adjust@center at tagsleft@shovecenter at notag{%
+\def\eql at adjust@layoutcenter at tagsleft@aligncenter at notag{%
   \dimen@\displaywidth
   \advance\dimen at -\eql at tagmargin@
   \ifdim\eql at fieldwidth@<\dimen@
@@ -4729,7 +5231,7 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at adjust@center at tagsleft@shovecenter at tag{%
+\def\eql at adjust@layoutcenter at tagsleft@aligncenter at tag{%
   \dimen@\displaywidth
   \ifdim\eql at tagwidth@<\eql at tagmargin@
     \advance\dimen at -\eql at tagmargin@
@@ -4738,12 +5240,12 @@
     \advance\dimen@\eql at tagmargin@
   \fi
   \ifdim\eql at fieldwidth@<\dimen@
-    \eql at tagbox@print at left
+    \eql at tagbox@print at tagsleft
     \eql at adjust@print at aligncenter\eql at tagmargin@\z@
   \else
     \eql at adjust@try\eql at tagwidth@
     \ifnum\badness<\eql at maxbadness@
-      \eql at tagbox@print at left
+      \eql at tagbox@print at tagsleft
       \ifdim\eql at tagwidth@<\eql at tagmargin@
         \eql at adjust@print at alignright\eql at tagwidth@\z@
       \else
@@ -4750,8 +5252,8 @@
         \eql at adjust@print at alignleft\eql at tagwidth@\z@
       \fi
     \else
-      \eql at tagbox@print at left@raise
-      \eql at adjust@center at tagsleft@shovecenter at notag
+      \eql at tagbox@print at tagsleft@raise
+      \eql at adjust@layoutcenter at tagsleft@aligncenter at notag
     \fi
   \fi
   \eql at display@firstavail at set\z@
@@ -4760,7 +5262,7 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at adjust@center at tagsright@shoveleft at notag{%
+\def\eql at adjust@layoutcenter at tagsright@alignleft at notag{%
   \dimen@\displaywidth
   \advance\dimen at -\eql at marginleft@
   \advance\dimen at -\eql at shape@amount@
@@ -4776,7 +5278,7 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at adjust@center at tagsright@shoveleft at tag{%
+\def\eql at adjust@layoutcenter at tagsright@alignleft at tag{%
   \dimen@\eql at marginleft@
   \advance\dimen@\eql at shape@amount@
   \advance\dimen@\eql at tagwidth@
@@ -4785,7 +5287,7 @@
     \dimen@\eql at marginleft@
     \advance\dimen@\eql at shape@amount@
     \eql at adjust@print at alignleft\dimen@\eql at tagwidth@
-    \eql at tagbox@print at right
+    \eql at tagbox@print at tagsright
   \else
     \ifdim\eql at marginleft@>-\eql at shape@amount@
       \eql at adjust@try\eql at tagwidth@
@@ -4792,10 +5294,10 @@
     \fi
     \ifnum\badness<\eql at maxbadness@
       \eql at adjust@print at alignright\z@\eql at tagwidth@
-      \eql at tagbox@print at right
+      \eql at tagbox@print at tagsright
     \else
-      \eql at adjust@center at tagsright@shoveleft at notag
-      \eql at tagbox@print at right@raise
+      \eql at adjust@layoutcenter at tagsright@alignleft at notag
+      \eql at tagbox@print at tagsright@raise
     \fi
   \fi
 }
@@ -4803,7 +5305,7 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at adjust@center at tagsleft@shoveright at notag{%
+\def\eql at adjust@layoutcenter at tagsleft@alignright at notag{%
   \dimen@\displaywidth
   \advance\dimen at -\eql at tagmargin@
   \advance\dimen at -\eql at marginright@
@@ -4817,12 +5319,12 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at adjust@center at tagsleft@shoveright at tag{%
+\def\eql at adjust@layoutcenter at tagsleft@alignright at tag{%
   \dimen@\eql at marginright@
   \advance\dimen@\eql at tagwidth@
   \eql at adjust@try\dimen@
   \ifnum\badness<\eql at marginbadness@
-    \eql at tagbox@print at left
+    \eql at tagbox@print at tagsleft
     \eql at adjust@print at alignright\eql at tagwidth@\eql at marginright@
   \else
     \ifdim\eql at marginright@>\z@
@@ -4829,11 +5331,11 @@
       \eql at adjust@try\eql at tagwidth@
     \fi
     \ifnum\badness<\eql at maxbadness@
-      \eql at tagbox@print at left
+      \eql at tagbox@print at tagsleft
       \eql at adjust@print at alignleft\eql at tagwidth@\z@
     \else
-      \eql at tagbox@print at left@raise
-      \eql at adjust@center at tagsleft@shoveright at notag
+      \eql at tagbox@print at tagsleft@raise
+      \eql at adjust@layoutcenter at tagsleft@alignright at notag
     \fi
   \fi
   \eql at display@firstavail at set\z@
@@ -4842,7 +5344,7 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at adjust@center at tagsright@shoveright at notag{%
+\def\eql at adjust@layoutcenter at tagsright@alignright at notag{%
   \dimen@\displaywidth
   \advance\dimen at -\eql at tagmargin@
   \advance\dimen at -\eql at marginright@
@@ -4858,7 +5360,7 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at adjust@center at tagsright@shoveright at tag{%
+\def\eql at adjust@layoutcenter at tagsright@alignright at tag{%
   \dimen@\eql at tagmargin@
   \advance\dimen@\eql at marginright@
   \ifdim\eql at tagwidth@<\dimen@
@@ -4865,15 +5367,15 @@
     \eql at adjust@try\dimen@%
     \ifnum\badness<\eql at marginbadness@
       \eql at adjust@print at alignright\z@\dimen@
-      \eql at tagbox@print at right
+      \eql at tagbox@print at tagsright
     \else
       \eql at adjust@try\eql at tagwidth@
       \ifnum\badness<\eql at maxbadness@
         \eql at adjust@print at alignleft\z@\eql at tagwidth@
-        \eql at tagbox@print at right
+        \eql at tagbox@print at tagsright
       \else
         \eql at adjust@print at alignleft\z@\z@
-        \eql at tagbox@print at left@raise
+        \eql at tagbox@print at tagsleft@raise
       \fi
     \fi
   \else
@@ -4880,10 +5382,10 @@
     \eql at adjust@try\eql at tagwidth@
     \ifnum\badness<\eql at maxbadness@
       \eql at adjust@print at alignright\z@\eql at tagwidth@
-      \eql at tagbox@print at right
+      \eql at tagbox@print at tagsright
     \else
-      \eql at adjust@center at tagsright@shoveright at notag
-      \eql at tagbox@print at right@raise
+      \eql at adjust@layoutcenter at tagsright@alignright at notag
+      \eql at tagbox@print at tagsright@raise
     \fi
   \fi
 }
@@ -4891,7 +5393,7 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at adjust@center at tagsleft@shoveleft at notag{%
+\def\eql at adjust@layoutcenter at tagsleft@alignleft at notag{%
   \dimen@\displaywidth
   \advance\dimen at -\eql at tagmargin@
   \advance\dimen at -\eql at marginleft@
@@ -4909,7 +5411,7 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at adjust@center at tagsleft@shoveleft at tag{%
+\def\eql at adjust@layoutcenter at tagsleft@alignleft at tag{%
   \dimen@\eql at tagmargin@
   \advance\dimen@\eql at marginleft@
   \advance\dimen@\eql at shape@amount@
@@ -4916,15 +5418,15 @@
   \ifdim\eql at tagwidth@<\dimen@
     \eql at adjust@try\dimen@%
     \ifnum\badness<\eql at marginbadness@
-      \eql at tagbox@print at left
+      \eql at tagbox@print at tagsleft
       \eql at adjust@print at alignleft\dimen@\z@
     \else
       \eql at adjust@try\eql at tagwidth@
       \ifnum\badness<\eql at maxbadness@
-        \eql at tagbox@print at left
+        \eql at tagbox@print at tagsleft
         \eql at adjust@print at alignright\eql at tagwidth@\z@
       \else
-        \eql at tagbox@print at left@raise
+        \eql at tagbox@print at tagsleft@raise
         \eql at adjust@print at alignright\z@\z@
       \fi
     \fi
@@ -4931,11 +5433,11 @@
   \else
     \eql at adjust@try\eql at tagwidth@
     \ifnum\badness<\eql at maxbadness@
-      \eql at tagbox@print at left
+      \eql at tagbox@print at tagsleft
       \eql at adjust@print at alignleft\eql at tagwidth@\z@
     \else
-      \eql at tagbox@print at left@raise
-      \eql at adjust@center at tagsleft@shoveleft at notag
+      \eql at tagbox@print at tagsleft@raise
+      \eql at adjust@layoutcenter at tagsleft@alignleft at notag
     \fi
   \fi
   \eql at display@firstavail at set\z@
@@ -4970,7 +5472,7 @@
 %    \begin{macrocode}
   \@tempdima\displaywidth
   \advance\@tempdima-\eql at totalwidth@
-  \advance\@tempdima-\eql at align@inter@\eql at colsepmin@
+  \advance\@tempdima-\eql at columns@inter@\eql at colsepmin@
   \@tempdimb\@tempdima
   \advance\@tempdimb-\tw@\eql at tagmargin@
   \ifdim\@tempdimb>\z@
@@ -4987,14 +5489,14 @@
 % \TODO describe
 %
 %    \begin{macrocode}
-\def\eql at adjust@flushleft at shoveleft{%
-  \eql at marginleft@\eql at flushleftmargin@
+\def\eql at adjust@layoutleft at alignleft{%
+  \eql at marginleft@\eql at layoutleftmargin@
   \advance\eql at marginleft@\eql at shape@amount@
-  \ifdim\eql at marginleft@<\eql at flushleftmarginmin@
-    \eql at marginleft@\eql at flushleftmarginmin@
+  \ifdim\eql at marginleft@<\eql at layoutleftmarginmin@
+    \eql at marginleft@\eql at layoutleftmarginmin@
   \fi
-  \ifdim\eql at marginleft@>\eql at flushleftmarginmax@
-    \eql at marginleft@\eql at flushleftmarginmax@
+  \ifdim\eql at marginleft@>\eql at layoutleftmarginmax@
+    \eql at marginleft@\eql at layoutleftmarginmax@
   \fi
 }
 %    \end{macrocode}
@@ -5004,13 +5506,13 @@
 %       good left margin with ragged right
 %          (allow space between tag and equation in close case)
 %    \begin{macrocode}
-\def\eql at adjust@flushleft at shoveleft@notag{%
-  \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
+\def\eql at adjust@layoutleft at alignleft@notag{%
+  \ifdim\eql at layoutleftmarginmin@<\eql at marginleft@
     \eql at adjust@try\eql at marginleft@
     \ifnum\badness<\eql at marginbadness@
       \eql at adjust@print at alignleft\eql at marginleft@\z@
     \else
-      \eql at adjust@print at alignleft\eql at flushleftmarginmin@\z@
+      \eql at adjust@print at alignleft\eql at layoutleftmarginmin@\z@
     \fi
   \else
     \eql at adjust@print at alignleft\eql at marginleft@\z@
@@ -5020,12 +5522,12 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at adjust@flushleft at tagsright@shoveleft at notag{%
-  \eql at adjust@flushleft at shoveleft
-  \eql at adjust@flushleft at shoveleft@notag
+\def\eql at adjust@layoutleft at tagsright@alignleft at notag{%
+  \eql at adjust@layoutleft at alignleft
+  \eql at adjust@layoutleft at alignleft@notag
 }
-\let\eql at adjust@flushleft at tagsleft@shoveleft at notag
-  \eql at adjust@flushleft at tagsright@shoveleft at notag
+\let\eql at adjust@layoutleft at tagsleft@alignleft at notag
+  \eql at adjust@layoutleft at tagsright@alignleft at notag
 %    \end{macrocode}
 %
 %   \TODO what is worse, extend into margin or raise tag?
@@ -5034,26 +5536,26 @@
 %      margin with ragged right
 %          (allow space between tag and equation in close case)
 %    \begin{macrocode}
-\def\eql at adjust@flushleft at tagsright@shoveleft at tag{%
-  \eql at adjust@flushleft at shoveleft
+\def\eql at adjust@layoutleft at tagsright@alignleft at tag{%
+  \eql at adjust@layoutleft at alignleft
   \dimen@\eql at marginleft@
   \advance\dimen@\eql at tagwidth@
   \eql at adjust@try\dimen@
   \ifnum\badness<\eql at marginbadness@
     \eql at adjust@print at alignleft\eql at marginleft@\eql at tagwidth@
-    \eql at tagbox@print at right
+    \eql at tagbox@print at tagsright
   \else
-    \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
-      \dimen@\eql at flushleftmarginmin@
+    \ifdim\eql at layoutleftmarginmin@<\eql at marginleft@
+      \dimen@\eql at layoutleftmarginmin@
       \advance\dimen@\eql at tagwidth@
       \eql at adjust@try\dimen@
     \fi
     \ifnum\badness<\eql at maxbadness@
-      \eql at adjust@print at alignleft\eql at flushleftmarginmin@\eql at tagwidth@
-      \eql at tagbox@print at right
+      \eql at adjust@print at alignleft\eql at layoutleftmarginmin@\eql at tagwidth@
+      \eql at tagbox@print at tagsright
     \else
-      \eql at adjust@flushleft at shoveleft@notag
-      \eql at tagbox@print at right@raise
+      \eql at adjust@layoutleft at alignleft@notag
+      \eql at tagbox@print at tagsright@raise
     \fi
   \fi
 }
@@ -5060,39 +5562,39 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\def\eql at adjust@flushleft at tagsleft@shoveleft at tag{%
-  \eql at adjust@flushleft at shoveleft
-  \ifdim\eql at tagwidth@<\eql at flushleftmarginmin@
-    \eql at tagbox@print at left
-    \eql at adjust@flushleft at notag
+\def\eql at adjust@layoutleft at tagsleft@alignleft at tag{%
+  \eql at adjust@layoutleft at alignleft
+  \ifdim\eql at tagwidth@<\eql at layoutleftmarginmin@
+    \eql at tagbox@print at tagsleft
+    \eql at adjust@layoutleft at notag
   \else
     \ifdim\eql at tagwidth@<\eql at marginleft@
       \eql at adjust@try\eql at marginleft@
       \ifnum\badness<\eql at marginbadness@
-        \eql at tagbox@print at left
+        \eql at tagbox@print at tagsleft
         \eql at adjust@print at alignleft\eql at marginleft@\z@
       \else
         \eql at adjust@try\eql at tagwidth@
         \ifnum\badness<\eql at maxbadness@
-          \eql at tagbox@print at left
+          \eql at tagbox@print at tagsleft
           \eql at adjust@print at alignleft\eql at tagwidth@\z@
         \else
-          \eql at tagbox@print at left@raise
-          \eql at adjust@print at alignleft\eql at flushleftmarginmin@\z@
+          \eql at tagbox@print at tagsleft@raise
+          \eql at adjust@print at alignleft\eql at layoutleftmarginmin@\z@
         \fi
       \fi
     \else
-      \ifdim\eql at tagwidth@>\eql at flushleftmarginmax@
-        \eql at tagbox@print at left@raise
-        \eql at adjust@flushleft at shoveleft@notag
+      \ifdim\eql at tagwidth@>\eql at layoutleftmarginmax@
+        \eql at tagbox@print at tagsleft@raise
+        \eql at adjust@layoutleft at alignleft@notag
       \else
         \eql at adjust@try\eql at tagwidth@
         \ifnum\badness<\eql at maxbadness@
-          \eql at tagbox@print at left
+          \eql at tagbox@print at tagsleft
           \eql at adjust@print at alignleft\eql at tagwidth@\z@
         \else
-          \eql at tagbox@print at left@raise
-          \eql at adjust@flushleft at shoveleft@notag
+          \eql at tagbox@print at tagsleft@raise
+          \eql at adjust@layoutleft at alignleft@notag
         \fi
       \fi
     \fi
@@ -5103,46 +5605,46 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at adjust@flushleft at shoveright@notag{%
-  \eql at marginleft@\eql at flushleftmargin@
-  \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
+\def\eql at adjust@layoutleft at alignright@notag{%
+  \eql at marginleft@\eql at layoutleftmargin@
+  \ifdim\eql at layoutleftmarginmin@<\eql at marginleft@
     \eql at adjust@try\eql at marginleft@
     \ifnum\badness<\eql at marginbadness@
       \eql at adjust@print at alignright\eql at marginleft@\z@
     \else
-      \eql at adjust@print at alignright\eql at flushleftmarginmin@\z@
+      \eql at adjust@print at alignright\eql at layoutleftmarginmin@\z@
     \fi
   \else
     \eql at adjust@print at alignright\eql at marginleft@\z@
   \fi
 }
-\let\eql at adjust@flushleft at tagsright@shoveright at notag
-  \eql at adjust@flushleft at shoveright@notag
-\let\eql at adjust@flushleft at tagsleft@shoveright at notag
-  \eql at adjust@flushleft at shoveright@notag
+\let\eql at adjust@layoutleft at tagsright@alignright at notag
+  \eql at adjust@layoutleft at alignright@notag
+\let\eql at adjust@layoutleft at tagsleft@alignright at notag
+  \eql at adjust@layoutleft at alignright@notag
 %    \end{macrocode}
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at adjust@flushleft at tagsright@shoveright at tag{%
+\def\eql at adjust@layoutleft at tagsright@alignright at tag{%
   \dimen@\eql at marginleft@
   \advance\dimen@\eql at tagwidth@
   \eql at adjust@try\dimen@
   \ifnum\badness<\eql at marginbadness@
     \eql at adjust@print at alignright\eql at marginleft@\eql at tagwidth@
-    \eql at tagbox@print at right
+    \eql at tagbox@print at tagsright
   \else
-    \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
-      \dimen@\eql at flushleftmarginmin@
+    \ifdim\eql at layoutleftmarginmin@<\eql at marginleft@
+      \dimen@\eql at layoutleftmarginmin@
       \advance\dimen@\eql at tagwidth@
       \eql at adjust@try\dimen@
     \fi
     \ifnum\badness<\eql at maxbadness@
-      \eql at adjust@print at alignright\eql at flushleftmarginmin@\eql at tagwidth@
-      \eql at tagbox@print at right
+      \eql at adjust@print at alignright\eql at layoutleftmarginmin@\eql at tagwidth@
+      \eql at tagbox@print at tagsright
     \else
-      \eql at adjust@flushleft at shoveright@notag
-      \eql at tagbox@print at right@raise
+      \eql at adjust@layoutleft at alignright@notag
+      \eql at tagbox@print at tagsright@raise
     \fi
   \fi
 }
@@ -5150,38 +5652,38 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at adjust@flushleft at tagsleft@shoveright at tag{%
-  \ifdim\eql at tagwidth@<\eql at flushleftmarginmin@
-    \eql at tagbox@print at left
-    \eql at adjust@flushleft at shoveright@notag
+\def\eql at adjust@layoutleft at tagsleft@alignright at tag{%
+  \ifdim\eql at tagwidth@<\eql at layoutleftmarginmin@
+    \eql at tagbox@print at tagsleft
+    \eql at adjust@layoutleft at alignright@notag
   \else
     \ifdim\eql at tagwidth@<\eql at marginleft@
       \eql at adjust@try\eql at marginleft@
       \ifnum\badness<\eql at marginbadness@
-        \eql at tagbox@print at left
+        \eql at tagbox@print at tagsleft
         \eql at adjust@print at alignright\eql at marginleft@\z@
       \else
         \eql at adjust@try\eql at tagwidth@
         \ifnum\badness<\eql at maxbadness@
-          \eql at tagbox@print at left
+          \eql at tagbox@print at tagsleft
           \eql at adjust@print at alignright\eql at tagwidth@\z@
         \else
-          \eql at tagbox@print at left@raise
-          \eql at adjust@print at alignright\eql at flushleftmarginmin@\z@
+          \eql at tagbox@print at tagsleft@raise
+          \eql at adjust@print at alignright\eql at layoutleftmarginmin@\z@
         \fi
       \fi
     \else
-      \ifdim\eql at tagwidth@>\eql at flushleftmarginmax@
-        \eql at tagbox@print at left@raise
-        \eql at adjust@flushleft at shoveright@notag
+      \ifdim\eql at tagwidth@>\eql at layoutleftmarginmax@
+        \eql at tagbox@print at tagsleft@raise
+        \eql at adjust@layoutleft at alignright@notag
       \else
         \eql at adjust@try\eql at tagwidth@
         \ifnum\badness<\eql at maxbadness@
-          \eql at tagbox@print at left
+          \eql at tagbox@print at tagsleft
           \eql at adjust@print at alignright\eql at tagwidth@\z@
         \else
-          \eql at tagbox@print at left@raise
-          \eql at adjust@flushleft at shoveright@notag
+          \eql at tagbox@print at tagsleft@raise
+          \eql at adjust@layoutleft at alignright@notag
         \fi
       \fi
     \fi
@@ -5191,201 +5693,28 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\def\eql at adjust@flushleft at shovecenter{%
+\def\eql at adjust@layoutleft at aligncenter{%
   \eql at error{shove center not implemented for left alignment}%
 }
-\let\eql at adjust@flushleft at tagsright@shovecenter at notag
-  \eql at adjust@flushleft at shovecenter
-\let\eql at adjust@flushleft at tagsright@shovecenter at tag
-  \eql at adjust@flushleft at shovecenter
-\let\eql at adjust@flushleft at tagsleft@shovecenter at notag
-  \eql at adjust@flushleft at shovecenter
-\let\eql at adjust@flushleft at tagsleft@shovecenter at tag
-  \eql at adjust@flushleft at shovecenter
+\let\eql at adjust@layoutleft at tagsright@aligncenter at notag
+  \eql at adjust@layoutleft at aligncenter
+\let\eql at adjust@layoutleft at tagsright@aligncenter at tag
+  \eql at adjust@layoutleft at aligncenter
+\let\eql at adjust@layoutleft at tagsleft@aligncenter at notag
+  \eql at adjust@layoutleft at aligncenter
+\let\eql at adjust@layoutleft at tagsleft@aligncenter at tag
+  \eql at adjust@layoutleft at aligncenter
 %    \end{macrocode}
 %
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \section{Single-Line Equation}
-%
-% \TODO describe
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \subsection{Environment}
-%
-%    \begin{macrocode}
-\def\eql at single@cr{%
-  \eql at error{Cannot use `\string\\' within display equation.
-    Please switch to equations environment}%
-}
-%    \end{macrocode}
-%
-% \TODO describe
-%    \begin{macrocode}
-\def\eql at single@start{%
-  \eql at halign@catchprevdepth
-  \eql at tagging@start
-  \eql at dollardollar@begin
-  \eql at numbering@eval at mode
-  \let\eql at numbering@subeq at use\eql at false
-  \eql at stack@save at single
-%    \end{macrocode}
-%
-%    \TODO make other display environments push these!?
-%    \begin{macrocode}
-  \eql at numbering@single at init
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-  \ifdefined\eql at single@native
-    \let\eql at single@start at sel\eql at single@start at native
-    \let\eql at single@end at sel\eql at single@end at native
-    \let\raisetag\eql at raisetag@default
-  \else
-    \let\eql at single@start at sel\eql at single@start at adjust
-    \let\eql at single@end at sel\eql at single@end at adjust
-  \fi
-  \ifdefined\eql at single@crerror\else
-    \let\\\eql at single@cr
-  \fi
-  \eql at single@start at sel
-}
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-\def\eql at single@end{%
-  \eql at punct@apply at block
-  \eql at hook@eqout
-  \eql at single@end at sel
-  \eql at stack@restore
-  \eql at dollardollar@end
-  \eql at tagging@end
-  \eql at halign@leave
-}
-%    \end{macrocode}
-%
-% \TODO: try to feed in tagging after catchprevdepth
-%    \begin{macrocode}
-\def\eql at single@main{%
-  \expandafter\eql at single@start
-  \eql at scan@body
-  \eql at single@end
-}
-%    \end{macrocode}
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \subsection{Native}
-%
-%    \begin{macrocode}
-\def\eql at single@start at native{%
-%  \mathopen{}%
-  \eql at hook@eqin
-}%
-%    \end{macrocode}
-%
-% \TODO describe
-%    \begin{macrocode}
-\def\eql at single@end at native{%
-%  \mathclose{}%
-  \if at eqnsw
-    \ifdefined\eql at tagsleft
-      \leqno
-    \else
-      \eqno
-    \fi
-    \eql at compose@print
-  \fi
-  \ifnum\eql at displaybreak@pen@=\@MM\else
-    \postdisplaypenalty\eql at displaybreak@pen@
-  \fi
-}%
-%    \end{macrocode}
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \subsection{Adjustment}
-%
-%    \begin{macrocode}
-\def\eql at single@start at adjust{%
-  \eql at totalrows@\@ne
-  \eql at row@\z@
-  \eql at display@init
-  \let\shoveleft\eql at adjust@shoveleft
-  \let\shovecenter\eql at adjust@shovecenter
-  \let\shoveright\eql at adjust@shoveright
-  \eql at adjust@init
-  \eql at shape@eval
-  \eql at halign@init{}%
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-  \eql at row@\@ne
-  \setbox\eql at fieldbox@\hbox\bgroup
-    \eql at restore@hfuzz
-    \eql at strut@field
-    $\m at th\displaystyle%$
-      \eql at hook@eqin
-}
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-\def\eql at single@end at adjust{%
-    \eql at tagging@mathsave
-    $%$
-    \hfil
-    \kern\z@
-  \egroup
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-  \eql at fieldwidth@\wd\eql at fieldbox@
-  \eql at line@height@\ht\eql at fieldbox@
-  \eql at line@depth@\dp\eql at fieldbox@
-  \eql at totalwidth@\eql at fieldwidth@
-  \eql at totalrows@\@ne
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-  \if at eqnsw
-    \eql at tagbox@make\eql at compose@print
-    \eql at tagrows@\@ne
-  \else
-    \eql at tagwidth@\z@
-    \eql at tagrows@\z@
-  \fi
-  \eql at tagwidth@max@\eql at tagwidth@
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-  \eql at adjust@calc
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-  \halign{##\cr
-    \noalign{\eql at halign@before}%
-    \if at eqnsw
-      \eql at adjust@sel at tag
-    \else
-      \eql at adjust@sel at notag
-    \fi
-    \cr
-    \noalign{\eql at halign@after}%
-    \eql at tagging@tablesavelines
-  }%
-  \eql at row@\tw@
-  \eql at display@close
-}
-%    \end{macrocode}
-%
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % \section{Multi-Line Support}
 %
 % \TODO describe
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \subsection{Registers}
+% \subsection{Table Registers}
 %
 % \TODO can we unite |\eql at fieldlength@tab| and |\eql at tagwidth@tab|
 % \TODO then process sequentially not using ifcase?
@@ -5439,12 +5768,12 @@
 \let\eql at colwidth@tab\@empty
 %    \end{macrocode}
 %
-%   \macro{\eql at align@colwidth at get}
+%   \macro{\eql at columns@colwidth at get}
 %    \begin{macrocode}
-\def\eql at align@colwidth at get#1{%
+\def\eql at columns@colwidth at get#1{%
   \ifcase\expandafter#1\eql at colwidth@tab\else\z@\fi
 }
-\def\eql at align@colwidth at save{%
+\def\eql at columns@colwidth at save{%
   \begingroup
     \let\or\relax
     \global\edef\eql at colwidth@tab{\or\the\wd\thr@@\eql at colwidth@tab}%
@@ -5527,9 +5856,9 @@
   \ifdefined\eql at tagsleft
     \eql at display@firstavail at set\z@
     \ifdim\eql at tagwidth@>\eql at line@avail@
-      \eql at tagbox@print at left@raise
+      \eql at tagbox@print at tagsleft@raise
     \else
-      \eql at tagbox@print at left
+      \eql at tagbox@print at tagsleft
     \fi
     \kern\displaywidth
   \else
@@ -5536,9 +5865,9 @@
     \kern\displaywidth
     \advance\eql at tagwidth@\eql at line@width@
     \ifdim\eql at tagwidth@>\displaywidth
-      \eql at tagbox@print at right@raise
+      \eql at tagbox@print at tagsright@raise
     \else
-      \eql at tagbox@print at right
+      \eql at tagbox@print at tagsright
     \fi
   \fi
 }
@@ -5626,7 +5955,7 @@
     \let\eql at skip@force at below\z@
     \let\eql at skip@force at above\z@
     \eql at setkeys{intertext}\eql at intertext@opt
-    \openup-\eql at spread@amount@
+    \openup-\eql at spread@
     \penalty\postdisplaypenalty
     \ifcase\eql at skip@force at below\relax
       \advance\eql at vspaceskip@\glueexpr\eql at skip@long at below\relax
@@ -5723,92 +6052,383 @@
 }
 %    \end{macrocode}
 %
+%
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Equations Box Environment}
+%
+% \TODO describe
+%
+% \TODO fixed width version (works only towards intercolumn stretch)?
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Line Breaks}
+%
+%   \macro{\eql at box@cr}
+%    \begin{macrocode}
+\protected\def\eql at box@cr{%
+  \eql at ampprotect\eql at testopt@tight\eql at box@cr@\z@
+}
+\def\eql at box@cr@[#1]{%
+  \eql at punct@apply at line
+  \eql at hook@lineout
+  \eql at box@lastfield
+  \cr
+  \noalign{%
+    \vskip\glueexpr#1\relax
+  }%
+}
+%    \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Stacked Mode}
+%
+%    \begin{macrocode}
+\def\eql at box@lastfield at lines{&\omit\kern-2\eql at colsep@}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\def\eql at box@open at stacked{%
+% \TODO templates
+  \let\shoveleft\eql at adjust@alignleft
+  \let\shovecenter\eql at adjust@aligncenter
+  \let\shoveright\eql at adjust@alignright
+  \let\eql at box@lastfield\eql at box@lastfield at lines
+  \eql at halign@init{%
+%<dev>\eql at dev{starting line \the\eql at row@}%
+    \global\advance\eql at row@\@ne
+  }%
+  \tabskip\z at skip
+  \halign\bgroup
+    &%
+      \eql at shape@pos@\m at ne
+      \setbox\eql at fieldbox@\hbox{%
+        \eql at strut@field
+        \@lign
+        $\m at th\displaystyle
+          \eql at hook@colin
+          ##%
+          \eql at punct@apply at col
+          \eql at hook@colout
+          \eql at tagging@mathsave
+        $%
+        \eql at tagging@mathaddlast
+      }%
+      \ifnum\eql at shape@pos@=\m at ne
+        \eql at shape@eval
+      \fi
+      \ifcase\eql at shape@pos@
+        \kern\eql at shape@amount@
+        \box\eql at fieldbox@
+        \skip@\@flushglue
+        \advance\skip@\eql at paddingleft@\relax
+        \advance\skip@\eql at paddingright@\relax
+        \advance\skip at -\eql at shape@amount@\relax
+        \hskip\skip@
+        \eql at tagging@alignleft
+      \or
+        \skip@\@flushglue
+        \advance\skip@\eql at paddingleft@\relax
+        \hskip\skip@
+        \box\eql at fieldbox@
+        \skip@\@flushglue
+        \advance\skip@\eql at paddingright@\relax
+        \hskip\skip@
+        \eql at tagging@aligncenter
+      \or
+        \skip@\@flushglue
+        \advance\skip@\eql at paddingleft@\relax
+        \advance\skip@\eql at paddingright@\relax
+        \hskip\skip@
+        \box\eql at fieldbox@
+        \eql at tagging@alignright
+      \fi
+      \tabskip\eql at colsep@\relax
+    \crcr
+    \noalign{%
+      \eql at hook@blockbefore
+    }%
+    \eql at hook@blockin
+}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\def\eql at mode@stacked{\let\eql at box@open\eql at box@open at stacked}
+%    \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Aligned Mode}
+%
+%    \begin{macrocode}
+\def\eql at box@lastfield at odd{%
+  &\omit
+  \kern-\wd\eql at fieldbox@
+  \box\eql at fieldbox@
+  \hfil
+  &\omit\kern-\eql at colsep@
+}%
+\def\eql at box@lastfield at even{&\omit\kern-\eql at colsep@}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\def\eql at box@open at aligned{%
+% \TODO templates
+  \let\eql at box@lastfield\@empty
+  \eql at halign@init{%
+%<dev>\eql at dev{starting new line}%
+  }%
+  \tabskip\z at skip
+  \halign\bgroup
+    &%
+      \let\eql at box@lastfield\eql at box@lastfield at odd
+      \global\setbox\eql at fieldbox@\hbox{%
+        \eql at strut@field
+        \@lign
+        $\m at th\displaystyle
+          \eql at hook@colin
+          ##%
+          \eql at class@innerleft
+          \eql at hook@innerleft
+          \eql at tagging@mathsave
+        $%
+        \eql at tagging@mathaddlast
+      }%
+      \hfil
+      \kern\wd\eql at fieldbox@
+      \tabskip\z at skip
+    &%
+      \eql at fieldwidth@\wd\eql at fieldbox@
+      \kern-\eql at fieldwidth@
+      \box\eql at fieldbox@
+      \let\eql at box@lastfield\eql at box@lastfield at even
+      \llap{\unhbox\eql at fieldbox@}%
+      \hbox{%
+        \eql at strut@field
+        \@lign
+        $\m at th\displaystyle
+          \eql at hook@innerright
+          \eql at class@innerright at sel
+          ##%
+          \eql at punct@apply at col
+          \eql at hook@colout
+          \eql at tagging@mathsave
+        $%
+        \eql at tagging@mathaddlast
+      }%
+      \hfil
+      \tabskip\eql at colsep@\relax
+    \crcr
+    \noalign{%
+      \eql at hook@blockbefore
+    }%
+    \eql at hook@blockin
+}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\def\eql at mode@aligned{\let\eql at box@open\eql at box@open at aligned}
+%    \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % \subsection{Main}
 %
-% \TODO note that switching from align to lines mode,
-% the width can be incorrect due to different formatting (punctuation only?!).
-% only minor discrpancies expected and lines can adjust
-%   \macro{\eql at multi@main}
 %    \begin{macrocode}
-\let\eql at multi@mode at lines\eql at false
-\def\eql at multi@main{%
-  \eql at halign@catchprevdepth
-  \eql at tagging@start
-  \eql at dollardollar@begin
-  \eql at numbering@eval at mode
-  \eql at stack@save at multi
-  \ifdefined\eql at subequations@active
-    \let\eql at numbering@subeq at use\eql at false
-  \fi
-  \ifdefined\eql at numbering@subeq at use
-    \eql at numbering@subeq at init
-  \fi
-  \let\intertext\eql at intertext
-  \let\endintertext\endeql at intertext
-  \let\shoveleft\eql at adjust@shoveleft
-  \let\shovecenter\eql at adjust@shovecenter
-  \let\shoveright\eql at adjust@shoveright
-  \ifdefined\eql at multi@mode at lines
-    \expandafter\eql at lines@measure
-  \else
-    \ifdefined\eql at ampproof@active
-      \eql at ampproof
+\let\eql at box@box\vcenter
+\let\eql at box@open\@undefined
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\def\eql at box@close{%
+    \ifvmode\else
+      \global\eql at totalrows@\eql at row@
+      \eql at punct@apply at block
+      \eql at box@cr@[\z at skip]%
     \fi
-    \expandafter\eql at align@measure
-  \fi
-  \ifx\eql at numbering@subeq at use\@ne
-    \eql at numbering@subeq at revert
-  \fi
-  \ifdefined\eql at multi@mode at lines\else
-    \ifdefined\eql at multi@linesfallback
-      \ifnum\eql at totalcolumns@=\@ne
-        \let\eql at multi@mode at lines\eql at true
-        \eql at shape@set{r}%
-%        \eql at lines@measure
-      \fi
-    \fi
-  \fi
-  \ifdefined\eql at multi@mode at lines
-    \expandafter\eql at lines@print
+    \crcr
+    \noalign{%
+      \eql at hook@blockafter
+    }%
+    \eql at tagging@tablesaveinner
+  \egroup
+}
+%    \end{macrocode}
+%
+%   \macro{\eql at box@start}
+%    \begin{macrocode}
+\def\eql at box@start{%
+  \relax
+  \ifmmode
+    \let\eql at box@endmath\@empty
   \else
-    \expandafter\eql at align@print
+    $\let\eql at box@endmath=$%
   \fi
-  \ifdefined\eql at numbering@subeq at use
-    \eql at numbering@subeq at close
-  \fi
+  \eql at nextopt@process{equationsbox}%
+  \let\eql at punct@block\eql at punct@main
+  \let\eql at punct@main\relax
+  \eql at colsep@\glueexpr\eql at box@colsep\relax
+  \eql at paddingleft@\glueexpr\eql at paddingleft@val\relax
+  \eql at paddingright@\glueexpr\eql at paddingright@val\relax
+  \eql at indent@\glueexpr\eql at indent@val\relax
+  \eql at stack@save at boxed
+  \let\eql at layoutleft\eql at false
+  \eql at row@\z@
+  \eql at totalrows@\@M
+  \eql at shape@sel
+  \hskip\glueexpr\eql at box@marginleft\relax
+  \eql at box@box\bgroup
+    \eql at display@leave
+    \let\\\eql at box@cr
+    \eql at box@open
+}
+%    \end{macrocode}
+%
+%   \macro{\eql at box@end}
+%    \begin{macrocode}
+\newcommand{\eql at box@end}{%
+    \eql at box@close
+  \egroup
+  \eql at tagging@tableaddinner
+  \hskip\glueexpr\eql at box@marginright\relax
   \eql at stack@restore
-  \eql at dollardollar@end
-  \eql at tagging@end
-  \eql at halign@leave
+  \eql at box@endmath
 }
 %    \end{macrocode}
 %
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Environment}
+%
+% \environment{equationsbox}
+%    \begin{macrocode}
+\newenvironment{equationsbox}{%
+%<dev>\eql at dev@enterenv
+  \eql at ampprotect\eql at box@testall\eql at box@start
+}{%
+  \eql at box@end
+%<dev>\eql at dev@leaveenv
+}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\def\eql at box@testall{\eql at box@testtilde}
+\def\eql at box@testtilde#1{%
+  \eql at ifnextgobble@tight~%
+    {\eqnaddopt{lines}\eql at box@testopt{#1}}%
+    {\eql at box@testopt{#1}}}
+\def\eql at box@testopt#1{%
+  \eql at ifnextchar@tight[%]
+    {\eql at box@addopt{#1}}%
+    {#1}}
+\def\eql at box@addopt#1[#2]{\eqnaddopt{#2}#1}
+%    \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Single-Line Equation}
+%
 % \TODO describe
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Native Mode}
+%
 %    \begin{macrocode}
-\def\eql at mode@equation{%
-  \let\eql at equations@mode at single\eql at true
-  \ifdefined\eql at single@doscan
-    \let\eql at equations@main\eql at single@main
-    \let\eql at equations@end\@empty
+\def\eql at single@start at native{%
+%  \mathopen{}%
+  \eql at hook@eqin
+}%
+%    \end{macrocode}
+%
+% \TODO describe
+%    \begin{macrocode}
+\def\eql at single@end at native{%
+%  \mathclose{}%
+  \if at eqnsw
+    \ifdefined\eql at tagsleft
+      \leqno
+    \else
+      \eqno
+    \fi
+    \eql at compose@print
+  \fi
+  \ifnum\eql at displaybreak@pen@=\@MM\else
+    \postdisplaypenalty\eql at displaybreak@pen@
+  \fi
+}%
+%    \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Print}
+%
+%    \begin{macrocode}
+\def\eql at single@start at print{%
+  \eql at totalrows@\@ne
+  \eql at row@\z@
+  \eql at display@init
+  \let\shoveleft\eql at adjust@alignleft
+  \let\shovecenter\eql at adjust@aligncenter
+  \let\shoveright\eql at adjust@alignright
+  \eql at adjust@init
+  \eql at shape@eval
+  \eql at halign@init{}%
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+  \eql at row@\@ne
+  \setbox\eql at fieldbox@\hbox\bgroup
+    \eql at restore@hfuzz
+    \eql at strut@field
+    $\m at th\displaystyle%$
+      \eql at hook@eqin
+}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\def\eql at single@end at print{%
+    \eql at tagging@mathsave
+    $%$
+    \hfil
+    \kern\z@
+  \egroup
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+  \eql at fieldwidth@\wd\eql at fieldbox@
+  \eql at line@height@\ht\eql at fieldbox@
+  \eql at line@depth@\dp\eql at fieldbox@
+  \eql at totalwidth@\eql at fieldwidth@
+  \eql at totalrows@\@ne
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+  \if at eqnsw
+    \eql at tagbox@make\eql at compose@print
+    \eql at tagrows@\@ne
   \else
-    \let\eql at equations@main\@undefined
-    \let\eql at equations@end\eql at single@end
+    \eql at tagwidth@\z@
+    \eql at tagrows@\z@
   \fi
+  \eql at tagwidth@max@\eql at tagwidth@
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+  \eql at adjust@calc
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+  \halign{##\cr
+    \noalign{\eql at halign@before}%
+    \if at eqnsw
+      \eql at adjust@sel at tag
+    \else
+      \eql at adjust@sel at notag
+    \fi
+    \cr
+    \noalign{\eql at halign@after}%
+    \eql at tagging@tablesavelines
+  }%
+  \eql at row@\tw@
+  \eql at display@close
 }
-\def\eql at mode@align{%
-  \let\eql at equations@mode at single\eql at false
-  \let\eql at multi@mode at lines\eql at false
-  \let\eql at equations@main\eql at multi@main
-  \let\eql at equations@end\@empty
-}
-\def\eql at mode@lines{%
-  \let\eql at equations@mode at single\eql at false
-  \let\eql at multi@mode at lines\eql at true
-  \let\eql at equations@main\eql at multi@main
-  \let\eql at equations@end\@empty
-}
-\eql at mode@align
 %    \end{macrocode}
 %
 %
@@ -6023,7 +6643,7 @@
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \section{Multi-Line Align Mode}
+% \section{Multi-Line Columns Mode}
 %
 % \TODO describe
 %
@@ -6032,16 +6652,16 @@
 %
 % \TODO describe
 %
-%   \macro{\eql at align@add at amp}
-%   \macro{\eql at align@completerow}
+%   \macro{\eql at columns@add at amp}
+%   \macro{\eql at columns@completerow}
 %    \begin{macrocode}
-\def\eql at align@add at amp#1{\if m#1&\omit\expandafter\eql at align@add at amp\fi}
-\def\eql at align@completerow{%
+\def\eql at columns@add at amp#1{\if m#1&\omit\expandafter\eql at columns@add at amp\fi}
+\def\eql at columns@completerow{%
   \count@\eql at totalcolumns@
   \advance\count at -\eql at column@
   \advance\count@\@ne
   \edef\eql at tmp{%
-    \expandafter\eql at align@add at amp\romannumeral\number\count@ 000q}%
+    \expandafter\eql at columns@add at amp\romannumeral\number\count@ 000q}%
   \eql at tmp
 }
 %    \end{macrocode}
@@ -6051,9 +6671,9 @@
 %
 % \TODO describe
 %
-%   \macro{\eql at align@measure at line@begin}
+%   \macro{\eql at columns@measure at line@begin}
 %    \begin{macrocode}
-\def\eql at align@measure at line@begin{%
+\def\eql at columns@measure at line@begin{%
 %<dev>\eql at dev{starting line \the\eql at row@}%
   \global\eql at column@\z@
   \eql at numbering@measure at line@begin
@@ -6062,15 +6682,15 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\def\eql at align@measure at field{%
+\def\eql at columns@measure at field{%
   \eql at fieldlength@save\eql at column@
   \kern\wd\eql at fieldbox@
 }
 %    \end{macrocode}
 %
-%   \macro{\eql at align@measure at line@end}
+%   \macro{\eql at columns@measure at line@end}
 %    \begin{macrocode}
-\def\eql at align@measure at line@end{%
+\def\eql at columns@measure at line@end{%
   \eql at punct@apply at line
   \eql at hook@lineout
   &\omit
@@ -6077,13 +6697,13 @@
   \ifnum\eql at column@>\eql at totalcolumns@
     \global\eql at totalcolumns@\eql at column@
   \fi
-  \eql at align@measure at tag
+  \eql at columns@measure at tag
 }
 %    \end{macrocode}
 %
-%   \macro{\eql at align@measure at tag}
+%   \macro{\eql at columns@measure at tag}
 %    \begin{macrocode}
-\def\eql at align@measure at tag{%
+\def\eql at columns@measure at tag{%
   \ifnum\eql at numbering@target@<\z@
     \if at eqnsw
       \eql at tagbox@make\eql at compose@measure
@@ -6099,10 +6719,10 @@
 }
 %    \end{macrocode}
 %
-%   \macro{\eql at align@measure}
+%   \macro{\eql at columns@measure}
 %    \begin{macrocode}
-\def\eql at align@measure{%
-%<dev>\eql at dev@enter\eql at align@measure
+\def\eql at columns@measure{%
+%<dev>\eql at dev@enter\eql at columns@measure
   \eql at totalcolumns@\z@
   \eql at tagwidth@max@\z@
   \let\eql at tagwidth@tab\@empty
@@ -6111,8 +6731,8 @@
   \eql at measure@savecounters
   \setbox\z@\vbox{%
     \eql at numbering@measure at init
-    \eql at measure@init\eql at align@measure at line@begin
-    \eql at let@cr\eql at align@measure at line@end
+    \eql at measure@init\eql at columns@measure at line@begin
+    \eql at let@cr\eql at columns@measure at line@end
     \tabskip\z at skip
     \halign{%
       &%
@@ -6128,7 +6748,7 @@
           $%
         }%
         \global\eql at fieldwidth@\wd\eql at fieldbox@
-        \eql at align@measure at field
+        \eql at columns@measure at field
       &%
         \global\advance\eql at column@\@ne
         \setbox\eql at fieldbox@\hbox{%
@@ -6141,7 +6761,7 @@
             \eql at hook@colout
           $%
         }%
-        \eql at align@measure at field
+        \eql at columns@measure at field
         \hfil
       \crcr
       \noalign{%
@@ -6155,7 +6775,7 @@
       \ifvmode\else
         \eql at punct@apply at block
         \eql at hook@blockout
-        \eql at align@measure at line@end
+        \eql at columns@measure at line@end
         \cr
       \fi
       \noalign{%
@@ -6165,7 +6785,7 @@
 %    \TODO should we enforce even columns already here?!
 %    \TODO should we guard against no columns at all?!
 %    \begin{macrocode}
-      \eql at align@completerow
+      \eql at columns@completerow
       \cr
     }%
     \global\advance\eql at row@-\tw@
@@ -6204,12 +6824,12 @@
       \global\setbox\thr@@\lastbox
     }%
   \ifhbox\thr@@
-    \eql at align@colwidth at save
+    \eql at columns@colwidth at save
   \repeat
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-%<dev>\eql at dev@leave\eql at align@measure
+%<dev>\eql at dev@leave\eql at columns@measure
 }
 %    \end{macrocode}
 %
@@ -6218,9 +6838,9 @@
 %
 % \TODO describe
 %
-%   \macro{\eql at align@print at line@begin}
+%   \macro{\eql at columns@print at line@begin}
 %    \begin{macrocode}
-\def\eql at align@print at line@begin{%
+\def\eql at columns@print at line@begin{%
 %<dev>\eql at dev{starting line \the\eql at row@}%
   \global\eql at column@\z@
   \global\eql at line@pos@\eql at marginleft@
@@ -6233,13 +6853,13 @@
 }
 %    \end{macrocode}
 %
-%   \macro{\eql at align@print at field}
+%   \macro{\eql at columns@print at field}
 %    \begin{macrocode}
-\def\eql at align@print at field{%
+\def\eql at columns@print at field{%
 %    \end{macrocode}
 % determine available and used space
 %    \begin{macrocode}
-  \dimen@\eql at align@colwidth at get\eql at column@\relax
+  \dimen@\eql at columns@colwidth at get\eql at column@\relax
   \ifdim\wd\eql at fieldbox@>\z@
     \ifdim\eql at line@width@=\z@
       \eql at line@avail@\eql at line@pos@
@@ -6279,7 +6899,7 @@
 %
 %  \box\eql at fieldbox@
 %
-%  \dimen@\eql at align@colwidth at get\eql at column@\relax
+%  \dimen@\eql at columns@colwidth at get\eql at column@\relax
 %  \advance\dimen at -\wd\eql at fieldbox@
 %  \ifodd\eql at column@
 %    \kern\dimen@
@@ -6289,7 +6909,7 @@
 %    \kern\dimen@
 %  \fi
 %
-  \dimen@\eql at align@colwidth at get\eql at column@\relax
+  \dimen@\eql at columns@colwidth at get\eql at column@\relax
   \ifodd\eql at column@
     \kern\dimen@
   \else
@@ -6302,33 +6922,33 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\def\eql at align@print at trailright{%
+\def\eql at columns@print at trailright{%
    &\omit
     \global\advance\eql at column@\@ne
     \setbox\eql at fieldbox@\hbox{%
       \kern-\wd\eql at fieldbox@\box\eql at fieldbox@
     }%
-    \eql at align@print at field
+    \eql at columns@print at field
 }
 %    \end{macrocode}
 %
-%   \macro{\eql at align@print at line@end}
+%   \macro{\eql at columns@print at line@end}
 %    \begin{macrocode}
-\def\eql at align@print at line@end{%
+\def\eql at columns@print at line@end{%
   \eql at punct@apply at line
   \eql at hook@lineout
 % \TODO add an even column with empty stuff if box processing deferred
   \ifodd\eql at column@
-    \expandafter\eql at align@print at trailright
+    \expandafter\eql at columns@print at trailright
   \fi
-  \eql at align@completerow
-  \eql at align@print at tag
+  \eql at columns@completerow
+  \eql at columns@print at tag
 }
 %    \end{macrocode}
 %
-%   \macro{\eql at align@print at tag}
+%   \macro{\eql at columns@print at tag}
 %    \begin{macrocode}
-\def\eql at align@print at tag{%
+\def\eql at columns@print at tag{%
   \dimen@\eql at totalwidth@
   \advance\dimen@\eql at colsep@
   \kern-\dimen@
@@ -6349,15 +6969,15 @@
 }
 %    \end{macrocode}
 %
-%   \macro{\eql at align@print}
+%   \macro{\eql at columns@print}
 %    \begin{macrocode}
-\def\eql at align@print{%
-%<dev>\eql at dev@enter\eql at align@print
-  \eql at align@adjust
+\def\eql at columns@print{%
+%<dev>\eql at dev@enter\eql at columns@print
+  \eql at columns@adjust
   \eql at display@init
   \eql at numbering@print at init
-  \eql at print@init\eql at align@print at line@begin
-  \eql at let@cr\eql at align@print at line@end
+  \eql at print@init\eql at columns@print at line@begin
+  \eql at let@cr\eql at columns@print at line@end
   \tabskip\eql at marginleft@
   \halign{%
     &%
@@ -6376,7 +6996,7 @@
         \eql at tagging@mathaddlast
       }%
       \global\eql at fieldwidth@\wd\eql at fieldbox@
-      \eql at align@print at field
+      \eql at columns@print at field
       \tabskip\z at skip
     &%
       \global\advance\eql at column@\@ne
@@ -6396,7 +7016,7 @@
         $%
         \eql at tagging@mathaddlast
       }%
-      \eql at align@print at field
+      \eql at columns@print at field
       \hfil
       \tabskip\eql at colsep@\relax
     \crcr
@@ -6410,13 +7030,13 @@
     \ifvmode\else
       \eql at punct@apply at block
       \eql at hook@blockout
-      \eql at align@print at line@end
+      \eql at columns@print at line@end
       \cr
     \fi
     \noalign{%
       \eql at hook@blockafter
       \eql at halign@after
-%<dev>\eql at dev@leave\eql at align@print
+%<dev>\eql at dev@leave\eql at columns@print
     }%
     \eql at tagging@tablesavealign
   }%
@@ -6431,7 +7051,7 @@
 % \TODO does this respect the margin for numbers in centre mode?
 %
 %    \begin{macrocode}
-\def\eql at align@adjust{%
+\def\eql at columns@adjust{%
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -6448,20 +7068,20 @@
 %    \TODO should we guard against no columns?!
 %    \begin{macrocode}
   \ifnum\eql at totalcolumns@<\thr@@
-    \let\eql at align@margins\eql at true
+    \let\eql at columns@margins\eql at true
   \fi
 %    \end{macrocode}
 %
-% Determine the number of intercolumn spaces |\eql at align@inter@|:
+% Determine the number of intercolumn spaces |\eql at columns@inter@|:
 %    \begin{macrocode}
-  \eql at align@inter@\eql at totalcolumns@
-  \divide\eql at align@inter@\tw@
-  \advance\eql at align@inter@\m at ne
+  \eql at columns@inter@\eql at totalcolumns@
+  \divide\eql at columns@inter@\tw@
+  \advance\eql at columns@inter@\m at ne
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-  \ifdefined\eql at flushleft
-    \eql at flushleftmargin@\glueexpr\eql at flushleftmargin@val\relax
+  \ifdefined\eql at layoutleft
+    \eql at layoutleftmargin@\glueexpr\eql at layoutleftmargin@val\relax
   \else
     \eql at adjust@tagmargin
   \fi
@@ -6470,19 +7090,19 @@
 %    \begin{macrocode}
   \eql at colsep@\displaywidth
   \advance\eql at colsep@-\eql at totalwidth@
-  \ifdefined\eql at flushleft
-    \advance\eql at colsep@-\eql at flushleftmargin@
+  \ifdefined\eql at layoutleft
+    \advance\eql at colsep@-\eql at layoutleftmargin@
   \else
     \advance\eql at colsep@-\eql at tagmargin@
-    \ifdefined\eql at align@margins\else
+    \ifdefined\eql at columns@margins\else
       \ifdim\eql at tagmargin@>\z@
         \advance\eql at colsep@-\eql at tagsepmin@
       \fi
     \fi
   \fi
-  \count@\eql at align@inter@
-  \ifdefined\eql at align@margins
-    \ifdefined\eql at flushleft
+  \count@\eql at columns@inter@
+  \ifdefined\eql at columns@margins
+    \ifdefined\eql at layoutleft
       \advance\count@\@ne
     \else
       \advance\count@\tw@
@@ -6508,26 +7128,26 @@
 % Now determine the left margin |\eql at marginleft@|
 % \TODO complete
 %    \begin{macrocode}
-  \ifdefined\eql at flushleft
+  \ifdefined\eql at layoutleft
     \ifdim\eql at colsep@=\eql at colsepmin@
       \eql at marginleft@\displaywidth
       \advance\eql at marginleft@-\eql at totalwidth@
-      \advance\eql at marginleft@-\eql at align@inter@\eql at colsep@
-      \ifdim\eql at marginleft@>\eql at flushleftmargin@
-        \eql at marginleft@\eql at flushleftmargin@
+      \advance\eql at marginleft@-\eql at columns@inter@\eql at colsep@
+      \ifdim\eql at marginleft@>\eql at layoutleftmargin@
+        \eql at marginleft@\eql at layoutleftmargin@
       \else
-        \ifdim\eql at marginleft@<\eql at flushleftmarginmin@
-          \eql at marginleft@\eql at flushleftmarginmin@
+        \ifdim\eql at marginleft@<\eql at layoutleftmarginmin@
+          \eql at marginleft@\eql at layoutleftmarginmin@
         \fi
       \fi
     \else
-      \eql at marginleft@\eql at flushleftmargin@
+      \eql at marginleft@\eql at layoutleftmargin@
     \fi
   \else
-    \ifdefined\eql at align@margins
+    \ifdefined\eql at columns@margins
       \eql at marginleft@\displaywidth
       \advance\eql at marginleft@-\eql at totalwidth@
-      \advance\eql at marginleft@-\eql at align@inter@\eql at colsep@
+      \advance\eql at marginleft@-\eql at columns@inter@\eql at colsep@
       \ifdim\eql at marginleft@<\eql at tagmargin@
         \eql at marginleft@\z@
       \else
@@ -6555,9 +7175,9 @@
 % at the corresponding side as far as possible:
 %    \begin{macrocode}
   \ifdefined\eql at tagsleft
-    \let\eql at align@adjust at test\eql at align@adjust at test@tagleft
+    \let\eql at columns@adjust at test\eql at columns@adjust at test@tagleft
   \else
-    \let\eql at align@adjust at test\eql at align@adjust at test@tagright
+    \let\eql at columns@adjust at test\eql at columns@adjust at test@tagright
   \fi
   \eql at row@\eql at totalrows@
   \loop\ifnum\eql at row@>\z@
@@ -6575,8 +7195,8 @@
       \fi
     \fi
     \ifdim\eql at tagwidth@>\z@
-      \eql at align@adjust at calc
-      \eql at align@adjust at test
+      \eql at columns@adjust at calc
+      \eql at columns@adjust at test
     \fi
     \advance\eql at row@\m at ne
   \repeat
@@ -6584,7 +7204,7 @@
 % From now on |\eql at totalwidth@| will include
 % the left margin and the total intercolumn separation:
 %    \begin{macrocode}
-  \advance\eql at totalwidth@\eql at align@inter@\eql at colsep@
+  \advance\eql at totalwidth@\eql at columns@inter@\eql at colsep@
   \advance\eql at totalwidth@\eql at marginleft@
 }
 %    \end{macrocode}
@@ -6592,7 +7212,7 @@
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % \paragraph{Calc Space.}
 %
-%   \macro{\eql at align@adjust at calc}
+%   \macro{\eql at columns@adjust at calc}
 % Compute the space that is available at the beginning and at the end
 % of a particular row |\eql at row@|.
 % The space available at the beginning is returned in |\eql at line@avail@|
@@ -6602,9 +7222,9 @@
 % The total used width is returned in |\eql at line@width@|
 % and |\@tempcntb| describes the last used intercolumn space.
 % The available space at the end of the row is given as the difference
-% to |\eql at totalwidth@| and |\eql at align@inter@|:
+% to |\eql at totalwidth@| and |\eql at columns@inter@|:
 %    \begin{macrocode}
-\def\eql at align@adjust at calc{%
+\def\eql at columns@adjust at calc{%
   \eql at line@pos@\z@
   \eql at column@\z@
   \eql at line@avail@\eql at totalwidth@
@@ -6613,7 +7233,7 @@
   \@tempcntb\z@
   \edef\@tempb{\eql at fieldlength@get\eql at row@}%
   \@for\@tempa:=\@tempb\do
-    \eql at align@adjust at calc@col
+    \eql at columns@adjust at calc@col
   \advance\@tempcnta\m at ne
   \divide\@tempcnta\tw@
   \advance\@tempcntb\m at ne
@@ -6621,16 +7241,16 @@
 }
 %    \end{macrocode}
 %
-%   \macro{\eql at align@adjust at calc@col}
-% The macro |\eql at align@adjust at width@col| iterates over columns.
+%   \macro{\eql at columns@adjust at calc@col}
+% The macro |\eql at columns@adjust at width@col| iterates over columns.
 % When a non-blank field is encountered,
 % the available space on the left will be fixed if it is still undetermined,
 % and the total width is updated to the current position:
 %    \begin{macrocode}
-\def\eql at align@adjust at calc@col{%
+\def\eql at columns@adjust at calc@col{%
   \advance\eql at column@\@ne
   \@tempdima\@tempa\relax
-  \dimen@\eql at align@colwidth at get\eql at column@\relax
+  \dimen@\eql at columns@colwidth at get\eql at column@\relax
   \ifdim\@tempdima>\z@
     \ifdim\eql at line@width@=\z@
       \eql at line@avail@\eql at line@pos@
@@ -6655,10 +7275,10 @@
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % \paragraph{Placement for Right Tags.}
 %
-%   \macro{\eql at align@adjust at test@tagright}
+%   \macro{\eql at columns@adjust at test@tagright}
 % Test whether the spacing can be adjusted to make the current row fit:
 %    \begin{macrocode}
-\def\eql at align@adjust at test@tagright{%
+\def\eql at columns@adjust at test@tagright{%
 %    \end{macrocode}
 % The register |\@tempdima| will hold the amount of available space.
 %    \begin{macrocode}
@@ -6678,23 +7298,23 @@
 % and minimal left margin (in left alignment layout).
 %    \begin{macrocode}
     \dimen@\@tempcntb\eql at colsepmin@
-    \ifdefined\eql at flushleft
-      \advance\dimen@\eql at flushleftmarginmin@
+    \ifdefined\eql at layoutleft
+      \advance\dimen@\eql at layoutleftmarginmin@
     \fi
     \ifdim\dimen@>\@tempdima\else
 %    \end{macrocode}
-% If so, hand over to |\eql at align@adjust at modify@tagright|.
+% If so, hand over to |\eql at columns@adjust at modify@tagright|.
 %    \begin{macrocode}
-      \eql at align@adjust at modify@tagright
+      \eql at columns@adjust at modify@tagright
     \fi
   \fi
 }
 %    \end{macrocode}
 %
-%   \macro{\eql at align@adjust at modify@tagright}
+%   \macro{\eql at columns@adjust at modify@tagright}
 % Adjust the intercolumn space and left margin to make the row fit.
 %    \begin{macrocode}
-\def\eql at align@adjust at modify@tagright{%
+\def\eql at columns@adjust at modify@tagright{%
 %    \end{macrocode}
 % If there are any intercolumn spaces that contribute to the available space,
 % determine how much intercolumn separation would be needed
@@ -6707,10 +7327,10 @@
   \ifnum\@tempcntb>\z@
     \dimen@\@tempdima
     \count@\@tempcntb
-    \ifdefined\eql at flushleft
+    \ifdefined\eql at layoutleft
       \advance\dimen at -\eql at marginleft@
     \else
-      \ifdefined\eql at align@margins
+      \ifdefined\eql at columns@margins
         \advance\count@\@ne
       \fi
     \fi
@@ -6741,10 +7361,10 @@
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % \paragraph{Placement for Left Tags.}
 %
-%   \macro{\eql at align@adjust at test@tagleft}
+%   \macro{\eql at columns@adjust at test@tagleft}
 % Test whether the spacing can be adjusted to make the current row fit:
 %    \begin{macrocode}
-\def\eql at align@adjust at test@tagleft{%
+\def\eql at columns@adjust at test@tagleft{%
 %    \end{macrocode}
 % The register |\@tempdima| will hold the deficit amount of space
 % at the beginning of the row without adjustable space,
@@ -6751,7 +7371,7 @@
 % and the register |\count@| will hold the number of
 % intercolumn spaces that would contribute to space adjustments.
 %    \begin{macrocode}
-  \count@\eql at align@inter@
+  \count@\eql at columns@inter@
   \advance\count at -\@tempcnta
   \@tempdima\eql at tagwidth@
   \advance\@tempdima-\eql at line@avail@
@@ -6766,8 +7386,8 @@
 % If not, first verify that the tag will fit the line
 % (or the maxumal left margin in left alignment layout).
 %    \begin{macrocode}
-    \ifdefined\eql at flushleft
-      \dimen@\eql at flushleftmarginmax@
+    \ifdefined\eql at layoutleft
+      \dimen@\eql at layoutleftmarginmax@
     \else
       \dimen@\displaywidth
     \fi
@@ -6781,9 +7401,9 @@
       \advance\dimen@\@tempdima
       \ifdim\dimen@>\displaywidth\else
 %    \end{macrocode}
-% If so, hand over to |\eql at align@adjust at modify@tagleft|.
+% If so, hand over to |\eql at columns@adjust at modify@tagleft|.
 %    \begin{macrocode}
-        \eql at align@adjust at modify@tagleft
+        \eql at columns@adjust at modify@tagleft
       \fi
     \fi
   \fi
@@ -6792,10 +7412,10 @@
 %
 % \TODO implement a maximum shift (if tag+sep exceeds max, don't adjust)
 % \TODO could this mechanism possibly shift any longer line past the margin?!
-%   \macro{\eql at align@adjust at modify@tagleft}
+%   \macro{\eql at columns@adjust at modify@tagleft}
 % Adjust the intercolumn space and left margin to make the row fit.
 %    \begin{macrocode}
-\def\eql at align@adjust at modify@tagleft{%
+\def\eql at columns@adjust at modify@tagleft{%
 %    \end{macrocode}
 % If there are any intercolumn spaces that contribute to the available space,
 % determine how much intercolumn separation would be needed
@@ -6809,7 +7429,7 @@
     \dimen@\displaywidth
     \advance\dimen at -\eql at totalwidth@
     \advance\dimen at -\@tempdima
-    \ifdefined\eql at align@margins
+    \ifdefined\eql at columns@margins
       \advance\count@\@ne
     \fi
     \divide\dimen@\count@
@@ -6823,7 +7443,7 @@
         \dimen@\eql at colsepmin@
       \fi
       \advance\dimen at -\eql at colsep@
-      \advance\eql at marginleft@-\eql at align@inter@\dimen@
+      \advance\eql at marginleft@-\eql at columns@inter@\dimen@
       \advance\eql at colsep@\dimen@
     \fi
   \fi
@@ -7123,6 +7743,156 @@
 %    \end{macrocode}
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Single-Line Main}
+%
+%    \begin{macrocode}
+\def\eql at single@cr{%
+  \eql at error{Cannot use `\string\\' within display equation.
+    Please switch to equations environment}%
+}
+%    \end{macrocode}
+%
+% \TODO describe
+%    \begin{macrocode}
+\def\eql at single@start{%
+  \eql at halign@catchprevdepth
+  \eql at tagging@start
+  \eql at dollardollar@begin
+  \eql at numbering@eval at mode
+  \let\eql at numbering@subeq at use\eql at false
+  \eql at stack@save at single
+%    \end{macrocode}
+%
+%    \TODO make other display environments push these!?
+%    \begin{macrocode}
+  \eql at numbering@single at init
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+  \ifdefined\eql at single@native
+    \let\eql at single@start at sel\eql at single@start at native
+    \let\eql at single@end at sel\eql at single@end at native
+    \let\raisetag\eql at raisetag@default
+  \else
+    \let\eql at single@start at sel\eql at single@start at print
+    \let\eql at single@end at sel\eql at single@end at print
+  \fi
+  \ifdefined\eql at single@crerror\else
+    \let\\\eql at single@cr
+  \fi
+  \eql at single@start at sel
+}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\def\eql at single@end{%
+  \eql at punct@apply at block
+  \eql at hook@eqout
+  \eql at single@end at sel
+  \eql at stack@restore
+  \eql at dollardollar@end
+  \eql at tagging@end
+  \eql at halign@leave
+}
+%    \end{macrocode}
+%
+% \TODO: try to feed in tagging after catchprevdepth
+%    \begin{macrocode}
+\def\eql at single@main{%
+  \expandafter\eql at single@start
+  \eql at scan@body
+  \eql at single@end
+}
+%    \end{macrocode}
+%
+% \TODO describe
+%    \begin{macrocode}
+\def\eql at mode@equation{%
+  \ifdefined\eql at single@doscan
+    \let\eql at equations@main\eql at single@main
+    \let\eql at equations@end\@empty
+  \else
+    \let\eql at equations@main\@undefined
+    \let\eql at equations@end\eql at single@end
+  \fi
+}
+%    \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Multi-Line Main}
+%
+% \TODO note that switching from align to lines mode,
+% the width can be incorrect due to different formatting (punctuation only?!).
+% only minor discrpancies expected and lines can adjust
+%   \macro{\eql at multi@main}
+%    \begin{macrocode}
+\let\eql at multi@mode at lines\eql at false
+\def\eql at multi@main{%
+  \eql at halign@catchprevdepth
+  \eql at tagging@start
+  \eql at dollardollar@begin
+  \eql at numbering@eval at mode
+  \eql at stack@save at multi
+  \ifdefined\eql at subequations@active
+    \let\eql at numbering@subeq at use\eql at false
+  \fi
+  \ifdefined\eql at numbering@subeq at use
+    \eql at numbering@subeq at init
+  \fi
+  \let\intertext\eql at intertext
+  \let\endintertext\endeql at intertext
+  \let\shoveleft\eql at adjust@alignleft
+  \let\shovecenter\eql at adjust@aligncenter
+  \let\shoveright\eql at adjust@alignright
+  \ifdefined\eql at multi@mode at lines
+    \expandafter\eql at lines@measure
+  \else
+    \ifdefined\eql at ampproof@active
+      \eql at ampproof
+    \fi
+    \expandafter\eql at columns@measure
+  \fi
+  \ifx\eql at numbering@subeq at use\@ne
+    \eql at numbering@subeq at revert
+  \fi
+  \ifdefined\eql at multi@mode at lines\else
+    \ifdefined\eql at multi@linesfallback
+      \ifnum\eql at totalcolumns@=\@ne
+        \let\eql at multi@mode at lines\eql at true
+%        \eql at lines@measure
+      \fi
+    \fi
+  \fi
+  \ifdefined\eql at multi@mode at lines
+    \expandafter\eql at lines@print
+  \else
+    \expandafter\eql at columns@print
+  \fi
+  \ifdefined\eql at numbering@subeq at use
+    \eql at numbering@subeq at close
+  \fi
+  \eql at stack@restore
+  \eql at dollardollar@end
+  \eql at tagging@end
+  \eql at halign@leave
+}
+%    \end{macrocode}
+%
+% \TODO describe
+%    \begin{macrocode}
+\def\eql at mode@columns{%
+  \let\eql at equations@main\eql at multi@main
+  \let\eql at equations@end\@empty
+  \let\eql at multi@mode at lines\eql at false
+}
+\def\eql at mode@lines{%
+  \let\eql at equations@main\eql at multi@main
+  \let\eql at equations@end\@empty
+  \let\eql at multi@mode at lines\eql at true
+}
+%    \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % \subsection{Equations Environment}
 %
 % We now declare the main environment and its symbolic versions.
@@ -7276,71 +8046,7 @@
 %    \end{macrocode}
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \subsection{Independent Routines of amsmath}
-%
-%   \macro{\eqref}
-% \ctanpkg{amsmath} defines the macro |\eqref|
-% to refer to equation labels in a proper format
-% We provide it for completeness:
-%    \begin{macrocode}
-\DeclareRobustCommand{\eql at eqref}[1]{\textup{\eql at tag@boxedform{\ref{#1}}}}
-%    \end{macrocode}
-%
-%   \macro{\numberwithin}
-% \ctanpkg{amsmath} defines the macro |\numberwithin|
-% to specify that equations should be numbered within sections.
-% The \LaTeX{} kernel contains a similar command
-% |\counterwithin| (with a slightly extended syntax) that can be used
-% as a drop-in replacement for |\numberwithin|:
-%    \begin{macrocode}
-\DeclareRobustCommand{\eql at numberwithin}[3][\arabic]{%
-  \@ifundefined{c@#2}{\@nocounterr{#2}}{%
-    \@ifundefined{c@#3}{\@nocounterr{#3}}{%
-      \ifdefined\HyOrg at addtoreset
-        \HyOrg at addtoreset{#2}{#3}%
-      \else
-        \@addtoreset{#2}{#3}%
-      \fi
-      \expandafter\xdef\csname the#2\endcsname{%
-        \expandafter\noexpand\csname the#3\endcsname.\noexpand#1{#2}}%
-      \ifdefined\theHequation
-        \expandafter\xdef\csname theH#2\endcsname{%
-          \expandafter\noexpand
-          \csname the\@ifundefined{theH#3}{}H#3\endcsname.%
-            \noexpand\arabic{#2}}%
-      \fi
-    }%
-  }%
-}
-%    \end{macrocode}
-%
-%   \imacro{\allowdisplaybreaks}
-% \ctanpkg{amsmath} defines the macro |\allowdisplaybreaks|
-% which we also provide for completeness.
-% The package uses the general setup mechanism instead:
-%    \begin{macrocode}
-\DeclareRobustCommand{\eql at allowdisplaybreaks}[1][4]{%
-  \eqnlinesset{allowbreaks=#1}%
-}
-%    \end{macrocode}
-%
-%   \imacro{\notag}
-% \ctanpkg{amsmath} defines the alias |\notag| for |\nonumber|
-% which we also provide for completeness:
-%    \begin{macrocode}
-\newcommand{\eql at notag}{\nonumber}
-%    \end{macrocode}
-%
-%   \imacro{\thetag}
-% \ctanpkg{amsmath} defines |\thetag| to print a tag
-% which we also provide for completeness:
-%    \begin{macrocode}
-\newcommand{\eql at thetag}{\leavevmode\eql at tag@boxedform}
-%    \end{macrocode}
-%
-%
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % \section{Options}
 %
 % The package uses the \ctanpkg{keyval} mechanism to parse
@@ -7418,10 +8124,23 @@
   \eql at decide@select{#1}{#2}{#3}{%
     {,abovebelow,both,tb}{#4#5},%
     {above,top,t}{#4},%
-    {below,bottom,b}{#5}}%
-  }
+    {below,bottom,b}{#5}}}
 %    \end{macrocode}
 %
+%   \macro{\eql at decide@situation}
+% \TODO describe
+%    \begin{macrocode}
+\def\eql at decide@situation#1#2#3#4{%
+  \eql at decide@select{#1}{#2}{#3}{%
+    {{long}{\def#4{0}}},%
+    {{short}{\def#4{1}}},%
+    {{cont}{\def#4{2}}},%
+    {{par}{\def#4{3}}},%
+    {{top}{\def#4{4}}},%
+    {{noskip}{\def#4{5}}},%
+    {{medskip}{\def#4{6}}}}}
+%    \end{macrocode}
+%
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % \subsection{Declaration Code}
 %
@@ -7482,86 +8201,6 @@
 %    \end{macrocode}
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \subsection{Parameter Sets}
-%
-% \TODO par at above plus parskip?
-%    \begin{macrocode}
-\def\eql at defaults@classic{%
-  \def\eql at tagsepmin@val{.5\fontdimen6\textfont\tw@}%
-  \def\eql at colsepmax@val{.5\maxdimen}%
-  \def\eql at spread{\jot}%
-  \let\eql at tagmargin@val\@undefined
-  \eql at tagmargin@ratio@\p@
-  \def\eql at tagmargin@threshold{0.5}%
-  \def\eql at flushleftmargin@val{\leftmargini}%
-  \let\eql at display@height\@undefined
-  \let\eql at display@depth\@undefined
-  \eql at skip@mode at short@\tw@
-  \eql at skip@mode at cont@\@ne
-  \eql at skip@mode at par@\z@
-  \eql at skip@mode at top@\z@
-  \def\eql at skip@long at above{\abovedisplayskip}%
-  \def\eql at skip@long at below{\belowdisplayskip}%
-  \def\eql at skip@short at above{\abovedisplayshortskip}%
-  \def\eql at skip@short at below{\belowdisplayshortskip}%
-  \def\eql at skip@cont at above{\eql at skip@short at above}%
-  \def\eql at skip@cont at below{\eql at skip@short at below}%
-  \def\eql at skip@par at above{\eql at skip@long at above}%
-  \def\eql at skip@par at below{\eql at skip@long at below}%
-  \def\eql at skip@top at above{\eql at skip@long at above}%
-  \def\eql at skip@top at below{\eql at skip@long at below}%
-  \def\eql at skip@med at above{\abovedisplayskip/2}%
-  \def\eql at skip@med at below{\belowdisplayskip/2}%
-  \def\eql at skip@medtag at above{\z at skip}%
-  \def\eql at skip@medtag at below{\z at skip}%
-  \def\eql at skip@tag at above{\z at skip}%
-  \def\eql at skip@tag at below{\z at skip}%
-}
-%    \end{macrocode}
-%
-% values based on 10pt vs 12pt
-%    \begin{macrocode}
-\def\eql at defaults@eqnlines{%
-  \def\eql at tagsepmin@val{.5em}%
-  \def\eql at colsepmax@val{2em}%
-  \def\eql at spread{0.2\normalbaselineskip}%
-  \let\eql at tagmargin@val\@undefined
-  \eql at tagmargin@ratio at .334\p@
-  \def\eql at tagmargin@threshold{0.5}%
-  \def\eql at flushleftmargin@val{\leftmargini}%
-  \def\eql at display@height{\ht\eql at strutbox@}%
-  \def\eql at display@depth{\dp\eql at strutbox@}%
-  \eql at skip@mode at short@\@ne
-  \eql at skip@mode at cont@\z@
-  \eql at skip@mode at par@\z@
-  \eql at skip@mode at top@\z@
-  \def\eql at skip@long at above{0.75\normalbaselineskip
-    \@plus0.25\normalbaselineskip\@minus0.4\normalbaselineskip}%
-  \let\eql at skip@long at below\eql at skip@long at above
-  \def\eql at skip@short at above{0.0\normalbaselineskip
-    \@plus0.25\normalbaselineskip}%
-  \def\eql at skip@short at below{0.0\normalbaselineskip
-    \@plus0.25\normalbaselineskip}%
-  \def\eql at skip@med at above{0.4\normalbaselineskip
-    \@plus0.2\normalbaselineskip\@minus0.2\normalbaselineskip}%
-  \let\eql at skip@med at below\eql at skip@med at above
-  \def\eql at skip@cont at above{\z at skip}%
-  \def\eql at skip@cont at below{\eql at skip@long at below}%
-  \def\eql at skip@par at above{\eql at skip@long at above}%
-  \def\eql at skip@par at below{\eql at skip@long at below}%
-  \def\eql at skip@top at above{\z at skip}%
-  \def\eql at skip@top at below{\z at skip}%
-  \def\eql at skip@tag at above{\z at skip}%
-  \def\eql at skip@tag at below{\z at skip}%
-  \def\eql at skip@partag at above{\z at skip}%
-  \def\eql at skip@partag at below{\z at skip}%
-  \def\eql at skip@medtag at above{\z at skip}%
-  \def\eql at skip@medtag at below{\z at skip}%
-}
-\eql at defaults@eqnlines
-%    \end{macrocode}
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % \subsection{Options Declarations}
 %
 % \TODO describe
@@ -7571,8 +8210,8 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\eql at define@key{equationsbox}{gathered,gather,ga,lines,lined,ln,\string~}[]{%
-  \eql at mode@lined}
+\eql at define@key{equationsbox}{gathered,gather,ga,lines,ln,\string~}[]{%
+  \eql at mode@stacked}
 \eql at define@key{equationsbox}{aligned,align,al,columns,col,@}[]{%
   \eql at mode@aligned}
 \eql at define@key{equationsbox}{top,t}[]{\let\eql at box@box\vtop}
@@ -7587,13 +8226,13 @@
 % \TODO describe
 %    \begin{macrocode}
 \eql at define@key{equations}{equation,eq,single,1}[]{\eql at mode@equation}
-\eql at define@key{equations}{gathered,gather,ga,lines,lined,ln,\string~}[]{%
+\eql at define@key{equations}{gathered,gather,ga,lines,ln,\string~}[]{%
   \eql at mode@lines}
 \eql at define@key{equations}{aligned,align,al,columns,col,@}[]{%
-  \eql at mode@align}
+  \eql at mode@columns}
 \eql at define@key{equations}{native}[true]{%
   \eql at decide@bool{#3}{#2}{#1}\eql at single@native%
-  \ifdefined\eql at single@native\let\eql at flushleft\eql at false\fi}
+  \ifdefined\eql at single@native\let\eql at layoutleft\eql at false\fi}
 \eql at define@key{setup}{native}[true]{%
   \eql at decide@bool{#3}{#2}{#1}\eql at single@native}
 \eql at define@key{setup}{scanequation}[true]{%
@@ -7611,7 +8250,7 @@
 % \TODO describe
 %    \begin{macrocode}
 \def\eql at keycat{equations,equationsbox,setup}
-\eql at define@key\eql at keycat{spread}[\jot]{\def\eql at spread{#1}}
+\eql at define@key\eql at keycat{spread}{\def\eql at spread@val{#1}}
 \eql at define@key\eql at keycat{strut}[true]{\eql at decide@if{#3}{#2}{#1}%
   {\let\eql at strut@field\eql at strut}{\let\eql at strut@field\relax}}
 \eql at define@key\eql at keycat{struttag}[true]{\eql at decide@if{#3}{#2}{#1}%
@@ -7773,33 +8412,27 @@
 \eql at define@key{setup}{abovecontskip}{%
   \def\eql at skip@cont at above{#1}}
 \eql at define@key{setup}{abovecontskip*}[]{%
-  \def\eql at skip@cont at above{\eql at spread-\eql at skip@long at below}}
+  \def\eql at skip@cont at above{\eql at spread@val-\eql at skip@long at below}}
 \eql at define@key{setup}{belowcontskip}{%
   \def\eql at skip@cont at below{#1}}
 \eql at define@key{setup}{shortmode}{%
   \eql at decide@select{#3}{#2}{#1}{%
-    {{off,never,no}{\eql at skip@mode at short@\z@}},%
-    {{above,neverbelow,notbelow,belowoff}{\eql at skip@mode at short@\@ne}},%
-    {{belowone,belowsingle}{\eql at skip@mode at short@\tw@}},%
-    {{belowall,always,on}{\eql at skip@mode at short@\thr@@}}}}
+    {{off,never,no}{\def\eql at skip@mode at short{0}}},%
+    {{above,neverbelow,notbelow,belowoff}{\def\eql at skip@mode at short{1}}},%
+    {{belowone,belowsingle}{\def\eql at skip@mode at short{2}}},%
+    {{belowall,always,on}{\def\eql at skip@mode at short{3}}}}}
+\eql at define@key{setup}{abovecontmode}{%
+  \eql at decide@situation{#3}{#2}{#1}\eql at skip@mode at cont@above}
 \eql at define@key{setup}{belowcontmode}{%
-  \eql at decide@select{#3}{#2}{#1}{%
-    {{long}{\eql at skip@mode at cont@\z@}},%
-    {{short}{\eql at skip@mode at cont@\@ne}},%
-    {{cont}{\eql at skip@mode at cont@\tw@}}}}
+  \eql at decide@situation{#3}{#2}{#1}\eql at skip@mode at cont@below}
+\eql at define@key{setup}{aboveparmode}{%
+  \eql at decide@situation{#3}{#2}{#1}\eql at skip@mode at par@above}
 \eql at define@key{setup}{belowparmode}{%
-  \eql at decide@select{#3}{#2}{#1}{%
-    {{long}{\eql at skip@mode at par@\z@}},%
-    {{short}{\eql at skip@mode at par@\@ne}},%
-    {{cont}{\eql at skip@mode at par@\tw@}},%
-    {{par}{\eql at skip@mode at par@\thr@@}}}}
+  \eql at decide@situation{#3}{#2}{#1}\eql at skip@mode at par@below}
+\eql at define@key{setup}{abovetopmode}{%
+  \eql at decide@situation{#3}{#2}{#1}\eql at skip@mode at top@above}
 \eql at define@key{setup}{belowtopmode}{%
-  \eql at decide@select{#3}{#2}{#1}{%
-    {{long}{\eql at skip@mode at top@\z@}},%
-    {{short}{\eql at skip@mode at top@\@ne}},%
-    {{cont}{\eql at skip@mode at top@\tw@}},%
-    {{par}{\eql at skip@mode at top@\thre@@}},%
-    {{top}{\eql at skip@mode at top@4\relax}}}}
+  \eql at decide@situation{#3}{#2}{#1}\eql at skip@mode at top@below}
 %    \end{macrocode}
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -7819,10 +8452,10 @@
 % \TODO describe
 %    \begin{macrocode}
 \def\eql at keycat{equations,setup}
-\eql at define@key\eql at keycat{tagmargin}{\def\eql at tagmargin@val{#1}}
+\eql at define@key\eql at keycat{tagmargin}[]{\def\eql at tagmargin@val{#1}
+  \ifx\eql at tagmargin@val\@empty\let\eql at tagmargin@val\@undefined\fi}
 \eql at define@key\eql at keycat{tagmargin*}{%
   \settowidth\dimen@{#1}\edef\eql at tagmargin@val{\the\dimen@}}
-\eql at define@key\eql at keycat{tagmargincalc}[]{\let\eql at tagmargin@val\@undefined}
 \eql at define@key\eql at keycat{tagmarginratio}{%
   \eql at tagmargin@ratio@\dimexpr#1pt\relax}
 \eql at define@key\eql at keycat{tagmarginthreshold}{%
@@ -7838,15 +8471,20 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\eql at define@key{setup}{taglayout}{\eql at tag@setbox{#1}}
-\eql at define@key{setup}{taglayout*}{\eql at tag@setbox@{#1}}
+\eql at define@key{setup}{tagbox,taglayout}{\eql at tag@setbox{#1}}
+\eql at define@key{setup}{tagbox,taglayout*}{\eql at tag@setbox@{#1}}
 \eql at define@key{setup}{tagform}{\eql at tag@setform#1}
 \eql at define@key{setup}{tagform*}{\eql at tag@setform@{#1}}
-\eql at define@key{setup}{subeqtemplate}{\def\eql at subequations@template{#1}}
+\eql at define@key{setup}{subeqtemplate}{%
+  \def\eql at subequations@template####1####2{#1}%
+  \expandafter\def\expandafter\eql at subequations@template\expandafter{%
+    \eql at subequations@template\theparentequation{equation}}%
+}
+%\def\eql at subequations@template{#1}}
 \eql at define@key{setup}{autolabel}[true]{%
-  \eql at decide@bool{#3}{#2}{#1}\eql at autolabel}
+  \eql at decide@bool{#3}{#2}{#1}\eql at numbering@autolabel}
 \eql at define@key{setup}{autotag}[true]{%
-  \eql at decide@bool{#3}{#2}{#1}\eql at autotag}
+  \eql at decide@bool{#3}{#2}{#1}\eql at numbering@autotag}
 %    \end{macrocode}
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -7857,8 +8495,10 @@
 \def\eql at keycat{equations,setup}
 \eql at define@key\eql at keycat{numberline,numline,n}[all]{%
   \eql at numbering@set{##1}}
-\eql at define@key\eql at keycat{nonumber,nn,*}[]{\let\eql at numbering@active\eql at false}
-\eql at define@key\eql at keycat{donumber,dn,!}[]{\let\eql at numbering@active\eql at true}
+\eql at define@key\eql at keycat{nonumber,nn,*}[]{%
+  \let\eql at numbering@active\eql at false}
+\eql at define@key\eql at keycat{donumber,dn,!}[]{%
+  \let\eql at numbering@active\eql at true}
 \eql at define@key\eql at keycat{number,num}[true]{%
   \eql at decide@bool{#3}{#2}{#1}\eql at numbering@active}
 \eql at define@key\eql at keycat{tagsleft,leqno}[]{\let\eql at tagsleft\eql at true}
@@ -7876,19 +8516,19 @@
 %    \begin{macrocode}
 \def\eql at keycat{equations,setup}
 \eql at define@key\eql at keycat{layout}{\eql at decide@select{#3}{#2}{#1}{%
-  {{center,c}{\let\eql at flushleft\eql at false}},%
-  {{left,l}{\let\eql at flushleft\eql at true}}}}
-\eql at define@key\eql at keycat{center}[]{\let\eql at flushleft\eql at false}
-\eql at define@key\eql at keycat{flushleft,left}[]{\let\eql at flushleft\eql at true}
-\eql at define@key\eql at keycat{leftmargin}{\def\eql at flushleftmargin@val{#1}}
+  {{center,c}{\let\eql at layoutleft\eql at false}},%
+  {{left,l}{\let\eql at layoutleft\eql at true}}}}
+\eql at define@key\eql at keycat{center}[]{\let\eql at layoutleft\eql at false}
+\eql at define@key\eql at keycat{flushleft,left}[]{\let\eql at layoutleft\eql at true}
+\eql at define@key\eql at keycat{leftmargin}{\def\eql at layoutleftmargin@val{#1}}
 \eql at define@key\eql at keycat{leftmargin*}{%
-  \settowidth\dimen@{#1}\edef\eql at flushleftmargin@val{\the\dimen@}}
+  \settowidth\dimen@{#1}\edef\eql at layoutleftmargin@val{\the\dimen@}}
 \eql at define@key\eql at keycat{minleftmargin}{%
-  \eql at flushleftmarginmin@\glueexpr#1\relax}
+  \eql at layoutleftmarginmin@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{maxleftmargin}{%
-  \eql at flushleftmarginmax@\glueexpr#1\relax}
+  \eql at layoutleftmarginmax@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{maxleftmargin*}[]{%
-  \eql at flushleftmarginmax@.5\maxdimen}
+  \eql at layoutleftmarginmax@.5\maxdimen}
 %    \end{macrocode}
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -7903,7 +8543,7 @@
 \eql at define@key\eql at keycat{maxcolsep}{\def\eql at colsepmax@val{#1}}
 \eql at define@key\eql at keycat{maxcolsep*}[]{\def\eql at colsepmax@val{.5\maxdimen}}
 \eql at define@key\eql at keycat{margins}[true]{%
-  \eql at decide@bool{#3}{#2}{#1}\eql at align@margins}
+  \eql at decide@bool{#3}{#2}{#1}\eql at columns@margins}
 \def\eql at keycat{equationsbox,setup}
 \eql at define@key\eql at keycat{margin}{%
   \def\eql at box@marginleft{#1}\def\eql at box@marginright{#1}}
@@ -7941,7 +8581,7 @@
 \def\eql at keycat{equations,equationsbox,setup}
 \eql at define@key\eql at keycat{classout}{\eql at class@innerleft at set{#1}}
 \eql at define@key\eql at keycat{classin}{\eql at class@innerright at set{#1}}
-\eql at define@key\eql at keycat{classin*}{\eql at class@innerlead at set{#1}}
+\eql at define@key\eql at keycat{classlead,classin*}{\eql at class@innerlead at set{#1}}
 \eql at define@key\eql at keycat{ampeq}[]{\eql at class@ampeq}
 \eql at define@key\eql at keycat{eqamp}[]{\eql at class@eqamp}
 \eql at define@key\eql at keycat{class}{\eql at decide@select{#3}{#2}{#1}{%
@@ -8017,6 +8657,91 @@
 %    \end{macrocode}
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Parameter Sets}
+%
+% \TODO par at above plus parskip?
+%    \begin{macrocode}
+\def\eql at defaults@classic{%
+  \eqnlinesset{mintagsep={.5\fontdimen6\textfont2\relax}}%
+  \eqnlinesset{maxcolsep*}%
+  \eqnlinesset{spread={\jot}}%
+  \eqnlinesset{tagmargin}%
+  \eqnlinesset{tagmarginratio=1}%
+  \eqnlinesset{tagmarginthreshold=0.5}%
+  \eqnlinesset{leftmargin={\leftmargini}}%
+  \eqnlinesset{displayheight*}%
+  \eqnlinesset{displaydepth*}%
+  \eqnlinesset{shortmode=belowsingle}%
+  \eqnlinesset{abovecontmode=short}%
+  \eqnlinesset{belowcontmode=short}%
+  \eqnlinesset{aboveparmode=long}%
+  \eqnlinesset{belowparmode=long}%
+  \eqnlinesset{abovetopmode=long}%
+  \eqnlinesset{belowtopmode=long}%
+  \eqnlinesset{abovelongskip={\abovedisplayskip}}%
+  \eqnlinesset{belowlongskip={\belowdisplayskip}}%
+  \eqnlinesset{aboveshortskip={\abovedisplayshortskip}}%
+  \eqnlinesset{belowshortskip={\belowdisplayshortskip}}%
+  \eqnlinesset{abovemedskip={.5\abovedisplayskip}}%
+  \eqnlinesset{belowmedskip={.5\belowdisplayskip}}%
+  \eqnlinesset{abovecontskip=0pt}%
+  \eqnlinesset{belowcontskip=0pt}%
+  \eqnlinesset{aboveparskip=0pt}%
+  \eqnlinesset{belowparskip=0pt}%
+  \eqnlinesset{abovetopskip=0pt}%
+  \eqnlinesset{belowtopskip=0pt}%
+  \eqnlinesset{abovetagskip=0pt}%
+  \eqnlinesset{belowtagskip=0pt}%
+  \eqnlinesset{abovemedtagskip=0pt}%
+  \eqnlinesset{belowmedtagskip=0pt}%
+  \eqnlinesset{abovepartagskip=0pt}%
+  \eqnlinesset{belowpartagskip=0pt}%
+}
+%    \end{macrocode}
+%
+% values based on 10pt vs 12pt
+%    \begin{macrocode}
+\def\eql at defaults@eqnlines{%
+  \eqnlinesset{mintagsep=.5em}%
+  \eqnlinesset{maxcolsep=2em}%
+  \eqnlinesset{spread={0.2\normalbaselineskip}}%
+  \eqnlinesset{tagmargin}%
+  \eqnlinesset{tagmarginratio=.334}%
+  \eqnlinesset{tagmarginthreshold=0.5}%
+  \eqnlinesset{leftmargin={\leftmargini}}%
+  \eqnlinesset{displayheight}%
+  \eqnlinesset{displaydepth}%
+  \eqnlinesset{shortmode=above}%
+  \eqnlinesset{abovecontmode=noskip}%
+  \eqnlinesset{belowcontmode=long}%
+  \eqnlinesset{aboveparmode=long}%
+  \eqnlinesset{belowparmode=long}%
+  \eqnlinesset{abovetopmode=noskip}%
+  \eqnlinesset{belowtopmode=long}%
+  \eqnlinesset{longskip={0.75\normalbaselineskip
+    plus 0.25\normalbaselineskip minus 0.4\normalbaselineskip}}%
+  \eqnlinesset{aboveshortskip={0.0\normalbaselineskip
+    plus 0.25\normalbaselineskip}}%
+  \eqnlinesset{belowshortskip={0.0\normalbaselineskip
+    plus 0.25\normalbaselineskip}}%
+  \eqnlinesset{medskip={0.4\normalbaselineskip
+    plus 0.2\normalbaselineskip minus 0.2\normalbaselineskip}}%
+  \eqnlinesset{abovecontskip=0pt}%
+  \eqnlinesset{belowcontskip=0pt}%
+  \eqnlinesset{aboveparskip=0pt}%
+  \eqnlinesset{belowparskip=0pt}%
+  \eqnlinesset{abovetopskip=0pt}%
+  \eqnlinesset{belowtopskip=0pt}%
+  \eqnlinesset{abovetagskip=0pt}%
+  \eqnlinesset{belowtagskip=0pt}%
+  \eqnlinesset{abovemedtagskip=0pt}%
+  \eqnlinesset{belowmedtagskip=0pt}%
+  \eqnlinesset{abovepartagskip=0pt}%
+  \eqnlinesset{belowpartagskip=0pt}%
+}
+%    \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % \subsection{Component Selection}
 %
 % \TODO describe
@@ -8041,7 +8766,7 @@
 \newenvironment{eql at align}
   {\eqnaddopt{align}\equations}{\endequations}
 \newenvironment{eql at flalign}
-  {\eqnaddopt{align,margins=false}\equations}{\endequations}
+  {\eqnaddopt{align,margins=false,maxcolsep*}\equations}{\endequations}
 \newenvironment{eql at equation*}
   {\eqnaddopt{nonumber}\eql at equation}{\endequations}
 \newenvironment{eql at gather*}
@@ -8338,11 +9063,6 @@
 \eql at define@key{provide}{sqr}[]{\eql at provide@sqr}
 \eql at define@key{provide}{ang}[]{\eql at provide@ang}
 \eql at define@key{provide}{eqref}[]{\eql at provide@cmd{eqref}{#1}}
-\eql at define@key{provide}{notag}[]{\eql at provide@cmd{notag}{#1}}
-\eql at define@key{provide}{thetag}[]{\eql at provide@cmd{thetag}{#1}}
-\eql at define@key{provide}{allowdisplaybreaks}[]{%
-  \eql at provide@cmd{allowdisplaybreaks}{#1}}
-\eql at define@key{provide}{numberwithin}[]{\eql at provide@cmd{numberwithin}{#1}}
 \eql at define@key{provide}{tagform}[]{%
   \def\tagform@##1{\maketag@@@{\eql at tag@form{#1}}}}
 \eql at define@key{provide}{maketag}[]{%
@@ -8386,6 +9106,13 @@
 \DeclareOption*{\expandafter\eqnlinesset\expandafter{\CurrentOption}}
 %    \end{macrocode}
 %
+% Set defaults for package:
+%    \begin{macrocode}
+\eql at defaults@eqnlines
+\eql at mode@columns
+\eql at mode@aligned
+%    \end{macrocode}
+%
 % Process package options:
 %    \begin{macrocode}
 \ProcessOptions

Modified: trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines-dev.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines-dev.sty	2025-04-03 19:50:08 UTC (rev 74838)
+++ trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines-dev.sty	2025-04-03 19:50:19 UTC (rev 74839)
@@ -21,7 +21,7 @@
 %% version 2008 or later.
 %% 
 \NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesPackage{eqnlines-dev}[2025/03/27 v0.6.1 Single- and multi-line equations (development)]
+\ProvidesPackage{eqnlines-dev}[2025/04/03 v0.7 Single- and multi-line equations (development)]
 \def\eql at dev#1{\PackageInfo{eqnlines-dev}{#1}}
 \def\eql at dev@start#1{\eql at dev{starting \string#1}}
 \def\eql at dev@enter#1{\eql at dev{entering \string#1}}
@@ -182,13 +182,13 @@
   \def\eql at tagging@end{}
 \fi
 \let\eql at tagsleft\eql at false
-\let\eql at flushleft\eql at false
-\newdimen\eql at flushleftmargin@
-\newdimen\eql at flushleftmarginmin@
-\newdimen\eql at flushleftmarginmax@
-\def\eql at flushleftmargin@val{\leftmargini}
-\eql at flushleftmarginmin@\z@
-\eql at flushleftmarginmax@.5\maxdimen
+\let\eql at layoutleft\eql at false
+\newdimen\eql at layoutleftmargin@
+\newdimen\eql at layoutleftmarginmin@
+\newdimen\eql at layoutleftmarginmax@
+\def\eql at layoutleftmargin@val{\leftmargini}
+\eql at layoutleftmarginmin@\z@
+\eql at layoutleftmarginmax@.5\maxdimen
 \newdimen\eql at tagmargin@
 \let\eql at tagmargin@val\@undefined
 \newdimen\eql at tagmargin@ratio@
@@ -204,20 +204,19 @@
 \def\eql at box@marginleft{\z at skip}
 \def\eql at box@marginright{\z at skip}
 \def\eql at box@colsep{2em}
-\def\eql at spread{\jot}
-\newdimen\eql at spread@amount@
+\def\eql at spread@val{\jot}
+\newdimen\eql at spread@
 \newdimen\eql at tagfuzz@
 \eql at tagfuzz@16sp\relax
 \def\eql at display@height{\ht\eql at strutbox@}
 \def\eql at display@depth{\dp\eql at strutbox@}
-\newcount\eql at skip@mode at short@
-\eql at skip@mode at short@\tw@
-\newcount\eql at skip@mode at cont@
-\eql at skip@mode at cont@\z@
-\newcount\eql at skip@mode at par@
-\eql at skip@mode at par@\z@
-\newcount\eql at skip@mode at top@
-\eql at skip@mode at top@\z@
+\def\eql at skip@mode at short{2}
+\def\eql at skip@mode at cont@above{2}
+\def\eql at skip@mode at cont@below{0}
+\def\eql at skip@mode at par@above{3}
+\def\eql at skip@mode at par@below{0}
+\def\eql at skip@mode at top@above{4}
+\def\eql at skip@mode at top@below{0}
 \newcount\eql at skip@mode at leave@
 \let\eql at skip@force at leave\@undefined
 \newcount\eql at skip@mode at above@
@@ -253,7 +252,7 @@
 \def\eql at tagsepmin@val{.5\fontdimen6\textfont\tw@}
 \def\eql at equations@sqr at opt{equation,nonumber}
 \def\eql at equations@ang at opt{align,nonumber}
-\let\eql at align@margins\eql at true
+\let\eql at columns@margins\eql at true
 \newbox\eql at fieldbox@
 \newbox\eql at tagbox@
 \newdimen\eql at fieldwidth@
@@ -271,7 +270,7 @@
 \newcount\eql at column@
 \newcount\eql at totalcolumns@
 \newdimen\eql at colsep@
-\newcount\eql at align@inter@
+\newcount\eql at columns@inter@
 \newdimen\eql at display@firstavail@
 \def\eql at display@firstavail at set#1{%
   \ifnum\eql at row@=\@ne
@@ -364,6 +363,7 @@
     \let\eql at punct@col\@empty
   \fi
 }
+\let\eqnpunctapply\eql at punct@apply at block
 \def\eql at class@innerright at sel@{%
   \ifdim\eql at fieldwidth@=\z@
     \eql at class@innerlead
@@ -392,210 +392,6 @@
   \eql at class@innerlead at set{{}}%
 }
 \eql at class@ampeq
-\protected\def\eql at box@cr{%
-  \eql at ampprotect\eql at testopt@tight\eql at box@cr@\z@
-}
-\def\eql at box@cr@[#1]{%
-  \eql at punct@apply at line
-  \eql at hook@lineout
-  \eql at box@lastfield
-  \cr
-  \noalign{%
-    \vskip\glueexpr#1\relax
-  }%
-}
-\let\eql at box@box\vcenter
-\def\eql at box@lastfield at odd{%
-  &\omit
-  \kern-\wd\eql at fieldbox@
-  \box\eql at fieldbox@
-  \hfil
-  &\omit\kern-\eql at colsep@
-}%
-\def\eql at box@lastfield at even{&\omit\kern-\eql at colsep@}
-\def\eql at box@lastfield at lines{&\omit\kern-2\eql at colsep@}
-\def\eql at box@open at align{%
-  \let\eql at box@lastfield\@empty
-  \eql at halign@init{%
-\eql at dev{starting new line}%
-  }%
-  \tabskip\z at skip
-  \halign\bgroup
-    &%
-      \let\eql at box@lastfield\eql at box@lastfield at odd
-      \global\setbox\eql at fieldbox@\hbox{%
-        \eql at strut@field
-        \@lign
-        $\m at th\displaystyle
-          \eql at hook@colin
-          ##%
-          \eql at class@innerleft
-          \eql at hook@innerleft
-          \eql at tagging@mathsave
-        $%
-        \eql at tagging@mathaddlast
-      }%
-      \hfil
-      \kern\wd\eql at fieldbox@
-      \tabskip\z at skip
-    &%
-      \eql at fieldwidth@\wd\eql at fieldbox@
-      \kern-\eql at fieldwidth@
-      \box\eql at fieldbox@
-      \let\eql at box@lastfield\eql at box@lastfield at even
-      \llap{\unhbox\eql at fieldbox@}%
-      \hbox{%
-        \eql at strut@field
-        \@lign
-        $\m at th\displaystyle
-          \eql at hook@innerright
-          \eql at class@innerright at sel
-          ##%
-          \eql at punct@apply at col
-          \eql at hook@colout
-          \eql at tagging@mathsave
-        $%
-        \eql at tagging@mathaddlast
-      }%
-      \hfil
-      \tabskip\eql at colsep@\relax
-    \crcr
-    \noalign{%
-      \eql at hook@blockbefore
-    }%
-    \eql at hook@blockin
-}
-\def\eql at box@open at lines{%
-  \let\shoveleft\eql at adjust@shoveleft
-  \let\shovecenter\eql at adjust@shovecenter
-  \let\shoveright\eql at adjust@shoveright
-  \let\eql at box@lastfield\eql at box@lastfield at lines
-  \eql at halign@init{%
-\eql at dev{starting line \the\eql at row@}%
-    \global\advance\eql at row@\@ne
-  }%
-  \tabskip\z at skip
-  \halign\bgroup
-    &%
-      \eql at shape@pos@\m at ne
-      \setbox\eql at fieldbox@\hbox{%
-        \eql at strut@field
-        \@lign
-        $\m at th\displaystyle
-          \eql at hook@colin
-          ##%
-          \eql at punct@apply at col
-          \eql at hook@colout
-          \eql at tagging@mathsave
-        $%
-        \eql at tagging@mathaddlast
-      }%
-      \ifnum\eql at shape@pos@=\m at ne
-        \eql at shape@eval
-      \fi
-      \ifcase\eql at shape@pos@
-        \kern\eql at shape@amount@
-        \box\eql at fieldbox@
-        \skip@\@flushglue
-        \advance\skip@\eql at paddingleft@\relax
-        \advance\skip@\eql at paddingright@\relax
-        \advance\skip at -\eql at shape@amount@\relax
-        \hskip\skip@
-        \eql at tagging@alignleft
-      \or
-        \skip@\@flushglue
-        \advance\skip@\eql at paddingleft@\relax
-        \hskip\skip@
-        \box\eql at fieldbox@
-        \skip@\@flushglue
-        \advance\skip@\eql at paddingright@\relax
-        \hskip\skip@
-        \eql at tagging@aligncenter
-      \or
-        \skip@\@flushglue
-        \advance\skip@\eql at paddingleft@\relax
-        \advance\skip@\eql at paddingright@\relax
-        \hskip\skip@
-        \box\eql at fieldbox@
-        \eql at tagging@alignright
-      \fi
-      \tabskip\eql at colsep@\relax
-    \crcr
-    \noalign{%
-      \eql at hook@blockbefore
-    }%
-    \eql at hook@blockin
-}
-\def\eql at box@close{%
-    \ifvmode\else
-      \global\eql at totalrows@\eql at row@
-      \eql at punct@apply at block
-      \eql at box@cr@[\z at skip]%
-    \fi
-    \crcr
-    \noalign{%
-      \eql at hook@blockafter
-    }%
-    \eql at tagging@tablesaveinner
-  \egroup
-}
-\def\eql at box@start{%
-  \relax
-  \ifmmode
-    \let\eql at box@endmath\@empty
-  \else
-    $\let\eql at box@endmath=$%
-  \fi
-  \eql at nextopt@process{equationsbox}%
-  \let\eql at punct@block\eql at punct@main
-  \let\eql at punct@main\relax
-  \eql at colsep@\glueexpr\eql at box@colsep\relax
-  \eql at paddingleft@\glueexpr\eql at paddingleft@val\relax
-  \eql at paddingright@\glueexpr\eql at paddingright@val\relax
-  \eql at indent@\glueexpr\eql at indent@val\relax
-  \eql at stack@save at boxed
-  \let\eql at flushleft\eql at false
-  \eql at row@\z@
-  \eql at totalrows@\@M
-  \eql at shape@sel
-  \hskip\glueexpr\eql at box@marginleft\relax
-  \eql at box@box\bgroup
-    \eql at display@leave
-    \let\\\eql at box@cr
-    \ifdefined\eql at box@mode at lines
-      \expandafter\eql at box@open at lines
-    \else
-      \expandafter\eql at box@open at align
-    \fi
-}
-\newcommand{\eql at box@end}{%
-    \eql at box@close
-  \egroup
-  \eql at tagging@tableaddinner
-  \hskip\glueexpr\eql at box@marginright\relax
-  \eql at stack@restore
-  \eql at box@endmath
-}
-\newenvironment{equationsbox}{%
-\eql at dev@enterenv
-  \eql at ampprotect\eql at box@testall\eql at box@start
-}{%
-  \eql at box@end
-\eql at dev@leaveenv
-}
-\def\eql at box@testall{\eql at box@testtilde}
-\def\eql at box@testtilde#1{%
-  \eql at ifnextgobble@tight~%
-    {\eqnaddopt{lines}\eql at box@testopt{#1}}%
-    {\eql at box@testopt{#1}}}
-\def\eql at box@testopt#1{%
-  \eql at ifnextchar@tight[%]
-    {\eql at box@addopt{#1}}%
-    {#1}}
-\def\eql at box@addopt#1[#2]{\eqnaddopt{#2}#1}
-\def\eql at mode@aligned{\let\eql at box@mode at lines\eql at false}
-\def\eql at mode@lined{\let\eql at box@mode at lines\eql at true}
-\eql at mode@aligned
 \def\eql at tag@setbox@#1{%
   \def\eql at tag@box##1{#1}%
 }
@@ -611,6 +407,10 @@
 \eql at tag@setbox{#1}
 \eql at tag@setform({#1})
 \def\eql at tag@boxedform#1{\eql at tag@box{\eql at tag@form{#1}}}
+\DeclareRobustCommand{\tagform}{\eql at tag@form}
+\DeclareRobustCommand{\tagbox}{\eql at tag@box}
+\DeclareRobustCommand{\tagboxed}{\eql at tag@boxedform}
+\DeclareRobustCommand{\eql at eqref}[1]{\textup{\eql at tag@boxedform{\ref{#1}}}}
 \newdimen\eql at raisetag@amount@
 \def\eql at raisetag@default{%
   \eql at warning{\string\raisetag\space not allowed here}
@@ -617,7 +417,8 @@
   \@gobble
 }
 \eql at amsmath@let\raisetag\eql at raisetag@default
-\def\eql at raisetag#1{\global\eql at raisetag@amount@\glueexpr#1\relax}%
+\def\eql at raisetag#1{\global\eql at raisetag@amount@\glueexpr#1\relax}
+\let\eql at raisetag@gobble\@gobble
 \let\eql at SK@loaded\eql at false
 \let\eql at SK@label\@gobble
 \let\eql at SK@clearlabel\@empty
@@ -802,15 +603,15 @@
   \fi
   \advance\eql at tagwidth@\eql at tagsepmin@
 }
-\def\eql at tagbox@print at right{%
+\def\eql at tagbox@print at tagsright{%
   \kern-\wd\eql at tagbox@
   \box\eql at tagbox@
 }
-\def\eql at tagbox@print at left{%
+\def\eql at tagbox@print at tagsleft{%
   \wd\eql at tagbox@\z@
   \box\eql at tagbox@
 }
-\def\eql at tagbox@print at right@raise{%
+\def\eql at tagbox@print at tagsright@raise{%
   \ifnum\eql at row@=\eql at totalrows@
     \global\advance\eql at raisetag@firstlast@\tw@
   \fi
@@ -823,7 +624,7 @@
     \box\eql at tagbox@
   }}%
 }
-\def\eql at tagbox@print at left@raise{%
+\def\eql at tagbox@print at tagsleft@raise{%
   \ifnum\eql at row@=\@ne
     \global\advance\eql at raisetag@firstlast@\@ne
   \fi
@@ -940,15 +741,19 @@
   \let\eql at numbering@active\eql at false
 }
 \def\numberhere{%
-  \ifmeasuring@
-    \ifnum\eql at numbering@target@<\z@\else
+  \ifnum\eql at numbering@target@<\z@
+    \donumber
+  \else
+    \ifmeasuring@
       \global\eql at numbering@target@\eql at row@
     \fi
   \fi
 }
 \def\numbernext{%
-  \ifmeasuring@
-    \ifnum\eql at numbering@target@<\z@\else
+  \ifnum\eql at numbering@target@<\z@
+    \nonumber
+  \else
+    \ifmeasuring@
       \ifnum\eql at numbering@target@=\eql at row@
         \global\advance\eql at numbering@target@\@ne
       \fi
@@ -959,6 +764,15 @@
 \let\eql at numbering@autotag\eql at true
 \let\eql at numbering@blocklabel\@undefined
 \let\eql at numbering@blocktag\@undefined
+\let\eql at numbering@warn\eql at true
+\def\eql at numbering@autoenable{%
+  \global\@eqnswtrue
+  \ifx\eql at numbering@mode\eql at numbering@tab at here
+    \ifnum\eql at numbering@target@=\z@
+      \numberhere
+    \fi
+  \fi
+}
 \eql at amsmath@after{
   \let\eql at print@eqnum at default\print at eqnum
   \let\eql at incr@eqnum at default\incr at eqnum
@@ -974,36 +788,29 @@
     \fi
   \fi
 }
-\def\eql at label@warn{%
+\def\eql at label{%
   \ifdefined\eql at numbering@autolabel
-    \global\@eqnswtrue
+    \eql at numbering@autoenable
   \fi
-  \ifdefined\eql at nextlabel
-    \eql at warn@label at multiple\eql at nextlabel
+  \ifdefined\eql at numbering@warn
+    \ifdefined\eql at nextlabel
+      \eql at warn@label at multiple\eql at nextlabel
+    \fi
   \fi
   \global\edef\eql at nextlabel
 }
-\def\eql at tag@warn{%
+\let\eql at label@gobble\@gobble
+\def\eql at tag{%
   \ifdefined\eql at numbering@autotag
-    \global\@eqnswtrue
+    \eql at numbering@autoenable
   \fi
-  \ifdefined\eql at nexttag
-    \eql at warn@tag at multiple
+  \ifdefined\eql at numbering@warn
+    \ifdefined\eql at nexttag
+      \eql at warn@tag at multiple
+    \fi
   \fi
   \eql at tag@makenext
 }
-\def\eql at label@nowarn{%
-  \ifdefined\eql at numbering@autolabel
-    \global\@eqnswtrue
-  \fi
-  \global\edef\eql at nextlabel
-}
-\def\eql at tag@nowarn{%
-  \ifdefined\eql at numbering@autotag
-    \global\@eqnswtrue
-  \fi
-  \eql at tag@makenext
-}
 \def\eql at blocklabel@set#1{%
   \ifdefined\eql at blocklabel
     \eql at warn@label at multiple\eql at blocklabel
@@ -1023,8 +830,9 @@
   \def\eql at blocktag{*{#1}}%
 }
 \def\eql at numbering@single at init{%
-  \let\label\eql at label@warn
-  \let\tag\eql at tag@warn
+  \let\eql at numbering@warn\eql at true
+  \let\label\eql at label
+  \let\tag\eql at tag
   \let\raisetag\eql at raisetag
   \eql at numbering@target@\m at ne
   \let\eql at nextlabel\eql at blocklabel
@@ -1047,8 +855,9 @@
   \global\eql at raisetag@amount@\z@
 }
 \def\eql at numbering@measure at init{%
-  \let\label\eql at label@warn
-  \let\tag\eql at tag@warn
+  \let\eql at numbering@warn\eql at true
+  \let\label\eql at label
+  \let\tag\eql at tag
   \let\raisetag\eql at raisetag
   \global\let\eql at nextlabel\eql at blocklabel
   \ifdefined\eql at blocktag
@@ -1095,8 +904,9 @@
 }
 \def\eql at numbering@print at init{%
   \ifnum\eql at numbering@target@<\z@
-    \let\label\eql at label@nowarn
-    \let\tag\eql at tag@nowarn
+    \let\eql at numbering@warn\eql at false
+    \let\label\eql at label
+    \let\tag\eql at tag
     \let\raisetag\eql at raisetag
     \let\eql at nextlabel\eql at blocklabel
     \ifdefined\eql at blocktag
@@ -1105,9 +915,9 @@
       \let\eql at nexttag\@undefined
     \fi
   \else
-    \let\label\@gobble
+    \let\label\eql at label@gobble
     \let\tag\eql at tag@gobble
-    \let\raisetag\eql at gobble
+    \let\raisetag\eql at raisetag@gobble
   \fi
 }
 \def\eql at numbering@print at block@begin{%
@@ -1294,6 +1104,12 @@
   \let\vspace\eql at vspace
 }
 \def\eql at display@close{%
+  \ifdefined\eql at tagging@on
+    \ifdefined\dollardollar at begin\else
+      \belowdisplayskip-\belowdisplayskip
+      \belowdisplayshortskip-\belowdisplayshortskip
+    \fi
+  \fi
   \ifdim\eql at display@firstavail@<\z@
     \eql at display@firstavail@\z@
   \fi
@@ -1300,19 +1116,19 @@
   \eql at skip@mode at leave@\z@
   \ifdim\eql at halign@prevdepth@=\maxdimen
     \ifdim\predisplaysize=-\maxdimen
-      \eql at skip@mode at above@\tw@
-      \eql at skip@mode at below@\eql at skip@mode at cont@
+      \eql at skip@mode at above@\eql at skip@mode at cont@above\relax
+      \eql at skip@mode at below@\eql at skip@mode at cont@below\relax
     \else
       \eql at skip@mode at above@\z@
       \eql at skip@mode at below@\z@
       \advance\eql at display@firstavail@\displayindent
       \ifdim\eql at display@firstavail@>\predisplaysize
-        \ifcase\eql at skip@mode at short@
+        \ifcase\eql at skip@mode at short\relax
         \or
           \eql at skip@mode at above@\@ne
         \or
           \eql at skip@mode at above@\@ne
-          \ifnum\eql at row@=\tw@
+          \ifnum\eql at totalrows@=\@ne
             \eql at skip@mode at below@\@ne
           \fi
         \or
@@ -1323,29 +1139,25 @@
     \fi
   \else
     \ifdim\eql at halign@prevdepth@=-\@m\p@
-      \eql at skip@mode at above@4\relax
-      \eql at skip@mode at below@\eql at skip@mode at top@
-      \eql at skip@mode at leave@\z@
-      \predisplaypenalty\z@
-      \ifcase\eql at skip@mode at top@
-      \or
-      \or
-      \or
-        \eql at skip@mode at leave@\@ne
-      \or
-        \postdisplaypenalty\z@
-        \eql at skip@mode at leave@\tw@
-      \fi
+      \eql at skip@mode at above@\eql at skip@mode at top@above\relax
+      \eql at skip@mode at below@\eql at skip@mode at top@below\relax
     \else
-      \eql at skip@mode at above@\thr@@
-      \eql at skip@mode at below@\eql at skip@mode at par@
-      \eql at skip@mode at leave@\z@
-      \predisplaypenalty\z@
-      \ifnum\eql at skip@mode at par@=\thr@@
-        \eql at skip@mode at leave@\@ne
-      \fi
+      \eql at skip@mode at above@\eql at skip@mode at par@above\relax
+      \eql at skip@mode at below@\eql at skip@mode at par@below\relax
     \fi
   \fi
+  \ifcase\eql at skip@mode at above@
+  \or\or\or
+    \predisplaypenalty\z@
+  \or
+    \predisplaypenalty\z@
+  \fi
+  \ifcase\eql at skip@mode at below@
+  \or\or\or
+    \eql at skip@mode at leave@\@ne
+  \or
+    \eql at skip@mode at leave@\tw@
+  \fi
   \ifdefined\eql at skip@force at above
     \eql at skip@mode at above@\eql at skip@force at above\relax
   \fi
@@ -1355,6 +1167,9 @@
   \ifdefined\eql at skip@force at leave
     \eql at skip@mode at leave@\eql at skip@force at leave\relax
   \fi
+  \ifnum\eql at skip@mode at leave@>\z@
+    \postdisplaypenalty\z@
+  \fi
   \ifodd\eql at raisetag@firstlast@
     \ifcase\eql at skip@mode at above@
       \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
@@ -1387,7 +1202,7 @@
     \or
       \abovedisplayskip\z at skip
     \or
-      \abovedisplayskip\glueexpr\eql at skip@medtag at above\relax
+      \abovedisplayskip\glueexpr\eql at skip@med at above\relax
     \or
       \abovedisplayskip\glueexpr\eql at skip@custom at above\relax
     \fi
@@ -1424,7 +1239,7 @@
     \or
       \belowdisplayskip\z at skip
     \or
-      \belowdisplayskip\glueexpr\eql at skip@medtag at below\relax
+      \belowdisplayskip\glueexpr\eql at skip@med at below\relax
     \or
       \belowdisplayskip\glueexpr\eql at skip@custom at below\relax
     \fi
@@ -1439,8 +1254,10 @@
   \advance\belowdisplayskip\eql at belowspace@
   \advance\belowdisplayskip\eql at vspaceskip@
   \count@\prevgraf
-  \advance\count@\eql at row@
-  \advance\count at -\tw@
+  \advance\count@\eql at totalrows@
+  \ifnum\count@>\z@
+    \advance\count@\m at ne
+  \fi
   \prevgraf\count@
   \global\eql at skip@mode at leave@\eql at skip@mode at leave@
   \ifdefined\eql at tagging@on
@@ -1481,11 +1298,11 @@
 }
 \AtBeginDocument{\eql at strut@make}
 \def\eql at halign@spread{%
-  \eql at spread@amount@\glueexpr\eql at spread\relax
-  \advance\eql at spread@amount@\normalbaselineskip
-  \advance\eql at spread@amount at -\baselineskip
-  \ifdim\eql at spread@amount@>\z@
-    \openup\eql at spread@amount@
+  \eql at spread@\glueexpr\eql at spread@val\relax
+  \advance\eql at spread@\normalbaselineskip
+  \advance\eql at spread@-\baselineskip
+  \ifdim\eql at spread@>\z@
+    \openup\eql at spread@
     \ifdefined\spread at equation
       \let\spread at equation\@empty
     \fi
@@ -1522,11 +1339,11 @@
       \ifdim\skip@<\lineskiplimit
         \skip@\lineskip
       \fi
-      \advance\skip at -\eql at spread@amount@\relax
+      \advance\skip at -\eql at spread@\relax
       \vskip\skip@
       \nointerlineskip
     \else
-      \vskip-\eql at spread@amount@\relax
+      \vskip-\eql at spread@\relax
     \fi
   \fi
 }
@@ -1654,15 +1471,15 @@
     \let\eql at shape@mode\eql at shape@tab at default
   \fi
 }
-\def\eql at shape@center at left{\eql at shape@pos@\z@\eql at shape@amount@\z@}
-\def\eql at shape@center at center{\eql at shape@pos@\@ne\eql at shape@amount@\z@}
-\def\eql at shape@center at right{\eql at shape@pos@\tw@\eql at shape@amount@\z@}
-\let\eql at shape@center at default\eql at shape@center at center
-\def\eql at shape@left at left{\eql at shape@pos@\z@\eql at shape@amount@\z@}
-\def\eql at shape@left at center{\eql at shape@pos@\@ne\eql at shape@amount@\z@}
-\def\eql at shape@left at right{\eql at shape@pos@\tw@\eql at shape@amount@\z@}
-\let\eql at shape@left at default\eql at shape@left at left
-\def\eql at shape@center at first{%
+\def\eql at shape@layoutcenter at left{\eql at shape@pos@\z@\eql at shape@amount@\z@}
+\def\eql at shape@layoutcenter at center{\eql at shape@pos@\@ne\eql at shape@amount@\z@}
+\def\eql at shape@layoutcenter at right{\eql at shape@pos@\tw@\eql at shape@amount@\z@}
+\let\eql at shape@layoutcenter at default\eql at shape@layoutcenter at center
+\def\eql at shape@layoutleft at left{\eql at shape@pos@\z@\eql at shape@amount@\z@}
+\def\eql at shape@layoutleft at center{\eql at shape@pos@\@ne\eql at shape@amount@\z@}
+\def\eql at shape@layoutleft at right{\eql at shape@pos@\tw@\eql at shape@amount@\z@}
+\let\eql at shape@layoutleft at default\eql at shape@layoutleft at left
+\def\eql at shape@layoutcenter at first{%
   \eql at shape@pos@\z@
   \eql at shape@amount@\z@
   \ifnum\eql at totalrows@>\@ne
@@ -1671,7 +1488,7 @@
     \fi
   \fi
 }
-\def\eql at shape@left at first{%
+\def\eql at shape@layoutleft at first{%
   \eql at shape@pos@\z@
   \eql at shape@amount@\z@
   \ifnum\eql at totalrows@>\@ne
@@ -1680,7 +1497,7 @@
     \fi
   \fi
 }
-\def\eql at shape@center at hanging{%
+\def\eql at shape@layoutcenter at hanging{%
   \eql at shape@pos@\z@
   \eql at shape@amount@\eql at indent@
   \ifnum\eql at totalrows@>\@ne
@@ -1689,7 +1506,7 @@
     \fi
   \fi
 }
-\def\eql at shape@left at hanging{%
+\def\eql at shape@layoutleft at hanging{%
   \eql at shape@pos@\z@
   \eql at shape@amount@\z@
   \ifnum\eql at totalrows@>\@ne
@@ -1698,7 +1515,7 @@
     \fi
   \fi
 }
-\def\eql at shape@center at steps{%
+\def\eql at shape@layoutcenter at steps{%
   \eql at shape@amount@\z@
   \eql at shape@pos@\@ne
   \ifnum\eql at totalrows@>\@ne
@@ -1710,7 +1527,7 @@
     \fi
   \fi
 }
-\def\eql at shape@left at steps{%
+\def\eql at shape@layoutleft at steps{%
   \eql at shape@pos@\z@
   \eql at shape@amount@\z@
   \ifnum\eql at totalrows@>\@ne
@@ -1726,23 +1543,23 @@
 \def\eql at shape@sel{%
   \expandafter\let\expandafter\eql at shape@eval
     \csname eql at shape%
-    @\ifdefined\eql at flushleft left\else center\fi
+    @\ifdefined\eql at layoutleft layoutleft\else layoutcenter\fi
     @\eql at shape@mode\endcsname
 }
-\def\eql at adjust@shoveleft{%
+\def\eql at adjust@alignleft{%
   \global\eql at shape@pos@\z@
   \eql at srbgroup\eql at ifstar@tight
-    {\eql at adjust@shoveleft@[\eql at indent@]}%
+    {\eql at adjust@alignleft@[\eql at indent@]}%
     {\eql at ifnextgobble@tight{!}%
-      {\eql at adjust@shoveleft@[-\eql at indent@]}%
-      {\eql at testopt@tight\eql at adjust@shoveleft@\z@}%
+      {\eql at adjust@alignleft@[-\eql at indent@]}%
+      {\eql at testopt@tight\eql at adjust@alignleft@\z@}%
     }%
 }
-\def\eql at adjust@shoveleft@[#1]{%
+\def\eql at adjust@alignleft@[#1]{%
   \eql at sregroup\global\eql at shape@amount@\glueexpr#1\relax}
-\def\eql at adjust@shovecenter{%
+\def\eql at adjust@aligncenter{%
   \global\eql at shape@pos@\@ne\global\eql at shape@amount@\z@}
-\def\eql at adjust@shoveright{%
+\def\eql at adjust@alignright{%
   \global\eql at shape@pos@\tw@\global\eql at shape@amount@\z@}
 \def\eql at adjust@try#1{%
   \setbox\eql at fieldbox@\hbox to\displaywidth{%
@@ -1796,9 +1613,9 @@
     \eql at tagging@alignright
   \fi
   \csname eql at adjust%
-    @\ifdefined\eql at flushleft flushleft\else center\fi
+    @\ifdefined\eql at layoutleft layoutleft\else layoutcenter\fi
     @\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
-    @\ifcase\eql at shape@pos@ shoveleft\or shovecenter\or shoveright\fi
+    @\ifcase\eql at shape@pos@ alignleft\or aligncenter\or alignright\fi
     @tag\endcsname
 }
 \def\eql at adjust@sel at notag{%
@@ -1811,16 +1628,16 @@
     \eql at tagging@alignright
   \fi
   \csname eql at adjust%
-    @\ifdefined\eql at flushleft flushleft\else center\fi
+    @\ifdefined\eql at layoutleft layoutleft\else layoutcenter\fi
     @\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
-    @\ifcase\eql at shape@pos@ shoveleft\or shovecenter\or shoveright\fi
+    @\ifcase\eql at shape@pos@ alignleft\or aligncenter\or alignright\fi
     @notag\endcsname
 }
 \def\eql at adjust@calc{%
-  \ifdefined\eql at flushleft
-    \eql at flushleftmargin@\glueexpr\eql at flushleftmargin@val\relax
+  \ifdefined\eql at layoutleft
+    \eql at layoutleftmargin@\glueexpr\eql at layoutleftmargin@val\relax
   \else
-    \eql at align@inter@\z@
+    \eql at columns@inter@\z@
     \eql at adjust@tagmargin
     \ifdefined\eql at paddingmax
       \eql at marginleft@\z@
@@ -1843,7 +1660,7 @@
     \fi
   \fi
 }
-\def\eql at adjust@center at tagsright@shovecenter at notag{%
+\def\eql at adjust@layoutcenter at tagsright@aligncenter at notag{%
   \dimen@\displaywidth
   \advance\dimen at -\eql at fieldwidth@
   \ifdim\dimen@>\eql at tagmargin@
@@ -1852,7 +1669,7 @@
     \eql at adjust@print at alignleft\z@\z@
   \fi
 }
-\def\eql at adjust@center at tagsright@shovecenter at tag{%
+\def\eql at adjust@layoutcenter at tagsright@aligncenter at tag{%
   \dimen@\displaywidth
   \ifdim\eql at tagwidth@<\eql at tagmargin@
     \advance\dimen at -\eql at tagmargin@
@@ -1862,7 +1679,7 @@
   \fi
   \ifdim\eql at fieldwidth@<\dimen@
     \eql at adjust@print at aligncenter\z@\eql at tagmargin@
-    \eql at tagbox@print at right
+    \eql at tagbox@print at tagsright
   \else
     \eql at adjust@try\eql at tagwidth@
     \ifnum\badness<\eql at maxbadness@
@@ -1871,14 +1688,14 @@
       \else
         \eql at adjust@print at alignright\z@\eql at tagwidth@
       \fi
-      \eql at tagbox@print at right
+      \eql at tagbox@print at tagsright
     \else
-      \eql at adjust@center at tagsright@shovecenter at notag
-      \eql at tagbox@print at right@raise
+      \eql at adjust@layoutcenter at tagsright@aligncenter at notag
+      \eql at tagbox@print at tagsright@raise
     \fi
   \fi
 }
-\def\eql at adjust@center at tagsleft@shovecenter at notag{%
+\def\eql at adjust@layoutcenter at tagsleft@aligncenter at notag{%
   \dimen@\displaywidth
   \advance\dimen at -\eql at tagmargin@
   \ifdim\eql at fieldwidth@<\dimen@
@@ -1887,7 +1704,7 @@
     \eql at adjust@print at alignright\z@\z@
   \fi
 }
-\def\eql at adjust@center at tagsleft@shovecenter at tag{%
+\def\eql at adjust@layoutcenter at tagsleft@aligncenter at tag{%
   \dimen@\displaywidth
   \ifdim\eql at tagwidth@<\eql at tagmargin@
     \advance\dimen at -\eql at tagmargin@
@@ -1896,12 +1713,12 @@
     \advance\dimen@\eql at tagmargin@
   \fi
   \ifdim\eql at fieldwidth@<\dimen@
-    \eql at tagbox@print at left
+    \eql at tagbox@print at tagsleft
     \eql at adjust@print at aligncenter\eql at tagmargin@\z@
   \else
     \eql at adjust@try\eql at tagwidth@
     \ifnum\badness<\eql at maxbadness@
-      \eql at tagbox@print at left
+      \eql at tagbox@print at tagsleft
       \ifdim\eql at tagwidth@<\eql at tagmargin@
         \eql at adjust@print at alignright\eql at tagwidth@\z@
       \else
@@ -1908,13 +1725,13 @@
         \eql at adjust@print at alignleft\eql at tagwidth@\z@
       \fi
     \else
-      \eql at tagbox@print at left@raise
-      \eql at adjust@center at tagsleft@shovecenter at notag
+      \eql at tagbox@print at tagsleft@raise
+      \eql at adjust@layoutcenter at tagsleft@aligncenter at notag
     \fi
   \fi
   \eql at display@firstavail at set\z@
 }
-\def\eql at adjust@center at tagsright@shoveleft at notag{%
+\def\eql at adjust@layoutcenter at tagsright@alignleft at notag{%
   \dimen@\displaywidth
   \advance\dimen at -\eql at marginleft@
   \advance\dimen at -\eql at shape@amount@
@@ -1926,7 +1743,7 @@
     \eql at adjust@print at alignright\z@\z@
   \fi
 }
-\def\eql at adjust@center at tagsright@shoveleft at tag{%
+\def\eql at adjust@layoutcenter at tagsright@alignleft at tag{%
   \dimen@\eql at marginleft@
   \advance\dimen@\eql at shape@amount@
   \advance\dimen@\eql at tagwidth@
@@ -1935,7 +1752,7 @@
     \dimen@\eql at marginleft@
     \advance\dimen@\eql at shape@amount@
     \eql at adjust@print at alignleft\dimen@\eql at tagwidth@
-    \eql at tagbox@print at right
+    \eql at tagbox@print at tagsright
   \else
     \ifdim\eql at marginleft@>-\eql at shape@amount@
       \eql at adjust@try\eql at tagwidth@
@@ -1942,14 +1759,14 @@
     \fi
     \ifnum\badness<\eql at maxbadness@
       \eql at adjust@print at alignright\z@\eql at tagwidth@
-      \eql at tagbox@print at right
+      \eql at tagbox@print at tagsright
     \else
-      \eql at adjust@center at tagsright@shoveleft at notag
-      \eql at tagbox@print at right@raise
+      \eql at adjust@layoutcenter at tagsright@alignleft at notag
+      \eql at tagbox@print at tagsright@raise
     \fi
   \fi
 }
-\def\eql at adjust@center at tagsleft@shoveright at notag{%
+\def\eql at adjust@layoutcenter at tagsleft@alignright at notag{%
   \dimen@\displaywidth
   \advance\dimen at -\eql at tagmargin@
   \advance\dimen at -\eql at marginright@
@@ -1959,12 +1776,12 @@
     \eql at adjust@print at alignleft\z@\z@
   \fi
 }
-\def\eql at adjust@center at tagsleft@shoveright at tag{%
+\def\eql at adjust@layoutcenter at tagsleft@alignright at tag{%
   \dimen@\eql at marginright@
   \advance\dimen@\eql at tagwidth@
   \eql at adjust@try\dimen@
   \ifnum\badness<\eql at marginbadness@
-    \eql at tagbox@print at left
+    \eql at tagbox@print at tagsleft
     \eql at adjust@print at alignright\eql at tagwidth@\eql at marginright@
   \else
     \ifdim\eql at marginright@>\z@
@@ -1971,16 +1788,16 @@
       \eql at adjust@try\eql at tagwidth@
     \fi
     \ifnum\badness<\eql at maxbadness@
-      \eql at tagbox@print at left
+      \eql at tagbox@print at tagsleft
       \eql at adjust@print at alignleft\eql at tagwidth@\z@
     \else
-      \eql at tagbox@print at left@raise
-      \eql at adjust@center at tagsleft@shoveright at notag
+      \eql at tagbox@print at tagsleft@raise
+      \eql at adjust@layoutcenter at tagsleft@alignright at notag
     \fi
   \fi
   \eql at display@firstavail at set\z@
 }
-\def\eql at adjust@center at tagsright@shoveright at notag{%
+\def\eql at adjust@layoutcenter at tagsright@alignright at notag{%
   \dimen@\displaywidth
   \advance\dimen at -\eql at tagmargin@
   \advance\dimen at -\eql at marginright@
@@ -1992,7 +1809,7 @@
     \eql at adjust@print at alignleft\z@\z@
   \fi
 }
-\def\eql at adjust@center at tagsright@shoveright at tag{%
+\def\eql at adjust@layoutcenter at tagsright@alignright at tag{%
   \dimen@\eql at tagmargin@
   \advance\dimen@\eql at marginright@
   \ifdim\eql at tagwidth@<\dimen@
@@ -1999,15 +1816,15 @@
     \eql at adjust@try\dimen@%
     \ifnum\badness<\eql at marginbadness@
       \eql at adjust@print at alignright\z@\dimen@
-      \eql at tagbox@print at right
+      \eql at tagbox@print at tagsright
     \else
       \eql at adjust@try\eql at tagwidth@
       \ifnum\badness<\eql at maxbadness@
         \eql at adjust@print at alignleft\z@\eql at tagwidth@
-        \eql at tagbox@print at right
+        \eql at tagbox@print at tagsright
       \else
         \eql at adjust@print at alignleft\z@\z@
-        \eql at tagbox@print at left@raise
+        \eql at tagbox@print at tagsleft@raise
       \fi
     \fi
   \else
@@ -2014,14 +1831,14 @@
     \eql at adjust@try\eql at tagwidth@
     \ifnum\badness<\eql at maxbadness@
       \eql at adjust@print at alignright\z@\eql at tagwidth@
-      \eql at tagbox@print at right
+      \eql at tagbox@print at tagsright
     \else
-      \eql at adjust@center at tagsright@shoveright at notag
-      \eql at tagbox@print at right@raise
+      \eql at adjust@layoutcenter at tagsright@alignright at notag
+      \eql at tagbox@print at tagsright@raise
     \fi
   \fi
 }
-\def\eql at adjust@center at tagsleft@shoveleft at notag{%
+\def\eql at adjust@layoutcenter at tagsleft@alignleft at notag{%
   \dimen@\displaywidth
   \advance\dimen at -\eql at tagmargin@
   \advance\dimen at -\eql at marginleft@
@@ -2035,7 +1852,7 @@
     \eql at adjust@print at alignright\z@\z@
   \fi
 }
-\def\eql at adjust@center at tagsleft@shoveleft at tag{%
+\def\eql at adjust@layoutcenter at tagsleft@alignleft at tag{%
   \dimen@\eql at tagmargin@
   \advance\dimen@\eql at marginleft@
   \advance\dimen@\eql at shape@amount@
@@ -2042,15 +1859,15 @@
   \ifdim\eql at tagwidth@<\dimen@
     \eql at adjust@try\dimen@%
     \ifnum\badness<\eql at marginbadness@
-      \eql at tagbox@print at left
+      \eql at tagbox@print at tagsleft
       \eql at adjust@print at alignleft\dimen@\z@
     \else
       \eql at adjust@try\eql at tagwidth@
       \ifnum\badness<\eql at maxbadness@
-        \eql at tagbox@print at left
+        \eql at tagbox@print at tagsleft
         \eql at adjust@print at alignright\eql at tagwidth@\z@
       \else
-        \eql at tagbox@print at left@raise
+        \eql at tagbox@print at tagsleft@raise
         \eql at adjust@print at alignright\z@\z@
       \fi
     \fi
@@ -2057,11 +1874,11 @@
   \else
     \eql at adjust@try\eql at tagwidth@
     \ifnum\badness<\eql at maxbadness@
-      \eql at tagbox@print at left
+      \eql at tagbox@print at tagsleft
       \eql at adjust@print at alignleft\eql at tagwidth@\z@
     \else
-      \eql at tagbox@print at left@raise
-      \eql at adjust@center at tagsleft@shoveleft at notag
+      \eql at tagbox@print at tagsleft@raise
+      \eql at adjust@layoutcenter at tagsleft@alignleft at notag
     \fi
   \fi
   \eql at display@firstavail at set\z@
@@ -2086,7 +1903,7 @@
   \fi
   \@tempdima\displaywidth
   \advance\@tempdima-\eql at totalwidth@
-  \advance\@tempdima-\eql at align@inter@\eql at colsepmin@
+  \advance\@tempdima-\eql at columns@inter@\eql at colsepmin@
   \@tempdimb\@tempdima
   \advance\@tempdimb-\tw@\eql at tagmargin@
   \ifdim\@tempdimb>\z@
@@ -2095,90 +1912,90 @@
     \fi
   \fi
 }
-\def\eql at adjust@flushleft at shoveleft{%
-  \eql at marginleft@\eql at flushleftmargin@
+\def\eql at adjust@layoutleft at alignleft{%
+  \eql at marginleft@\eql at layoutleftmargin@
   \advance\eql at marginleft@\eql at shape@amount@
-  \ifdim\eql at marginleft@<\eql at flushleftmarginmin@
-    \eql at marginleft@\eql at flushleftmarginmin@
+  \ifdim\eql at marginleft@<\eql at layoutleftmarginmin@
+    \eql at marginleft@\eql at layoutleftmarginmin@
   \fi
-  \ifdim\eql at marginleft@>\eql at flushleftmarginmax@
-    \eql at marginleft@\eql at flushleftmarginmax@
+  \ifdim\eql at marginleft@>\eql at layoutleftmarginmax@
+    \eql at marginleft@\eql at layoutleftmarginmax@
   \fi
 }
-\def\eql at adjust@flushleft at shoveleft@notag{%
-  \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
+\def\eql at adjust@layoutleft at alignleft@notag{%
+  \ifdim\eql at layoutleftmarginmin@<\eql at marginleft@
     \eql at adjust@try\eql at marginleft@
     \ifnum\badness<\eql at marginbadness@
       \eql at adjust@print at alignleft\eql at marginleft@\z@
     \else
-      \eql at adjust@print at alignleft\eql at flushleftmarginmin@\z@
+      \eql at adjust@print at alignleft\eql at layoutleftmarginmin@\z@
     \fi
   \else
     \eql at adjust@print at alignleft\eql at marginleft@\z@
   \fi
 }
-\def\eql at adjust@flushleft at tagsright@shoveleft at notag{%
-  \eql at adjust@flushleft at shoveleft
-  \eql at adjust@flushleft at shoveleft@notag
+\def\eql at adjust@layoutleft at tagsright@alignleft at notag{%
+  \eql at adjust@layoutleft at alignleft
+  \eql at adjust@layoutleft at alignleft@notag
 }
-\let\eql at adjust@flushleft at tagsleft@shoveleft at notag
-  \eql at adjust@flushleft at tagsright@shoveleft at notag
-\def\eql at adjust@flushleft at tagsright@shoveleft at tag{%
-  \eql at adjust@flushleft at shoveleft
+\let\eql at adjust@layoutleft at tagsleft@alignleft at notag
+  \eql at adjust@layoutleft at tagsright@alignleft at notag
+\def\eql at adjust@layoutleft at tagsright@alignleft at tag{%
+  \eql at adjust@layoutleft at alignleft
   \dimen@\eql at marginleft@
   \advance\dimen@\eql at tagwidth@
   \eql at adjust@try\dimen@
   \ifnum\badness<\eql at marginbadness@
     \eql at adjust@print at alignleft\eql at marginleft@\eql at tagwidth@
-    \eql at tagbox@print at right
+    \eql at tagbox@print at tagsright
   \else
-    \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
-      \dimen@\eql at flushleftmarginmin@
+    \ifdim\eql at layoutleftmarginmin@<\eql at marginleft@
+      \dimen@\eql at layoutleftmarginmin@
       \advance\dimen@\eql at tagwidth@
       \eql at adjust@try\dimen@
     \fi
     \ifnum\badness<\eql at maxbadness@
-      \eql at adjust@print at alignleft\eql at flushleftmarginmin@\eql at tagwidth@
-      \eql at tagbox@print at right
+      \eql at adjust@print at alignleft\eql at layoutleftmarginmin@\eql at tagwidth@
+      \eql at tagbox@print at tagsright
     \else
-      \eql at adjust@flushleft at shoveleft@notag
-      \eql at tagbox@print at right@raise
+      \eql at adjust@layoutleft at alignleft@notag
+      \eql at tagbox@print at tagsright@raise
     \fi
   \fi
 }
-\def\eql at adjust@flushleft at tagsleft@shoveleft at tag{%
-  \eql at adjust@flushleft at shoveleft
-  \ifdim\eql at tagwidth@<\eql at flushleftmarginmin@
-    \eql at tagbox@print at left
-    \eql at adjust@flushleft at notag
+\def\eql at adjust@layoutleft at tagsleft@alignleft at tag{%
+  \eql at adjust@layoutleft at alignleft
+  \ifdim\eql at tagwidth@<\eql at layoutleftmarginmin@
+    \eql at tagbox@print at tagsleft
+    \eql at adjust@layoutleft at notag
   \else
     \ifdim\eql at tagwidth@<\eql at marginleft@
       \eql at adjust@try\eql at marginleft@
       \ifnum\badness<\eql at marginbadness@
-        \eql at tagbox@print at left
+        \eql at tagbox@print at tagsleft
         \eql at adjust@print at alignleft\eql at marginleft@\z@
       \else
         \eql at adjust@try\eql at tagwidth@
         \ifnum\badness<\eql at maxbadness@
-          \eql at tagbox@print at left
+          \eql at tagbox@print at tagsleft
           \eql at adjust@print at alignleft\eql at tagwidth@\z@
         \else
-          \eql at tagbox@print at left@raise
-          \eql at adjust@print at alignleft\eql at flushleftmarginmin@\z@
+          \eql at tagbox@print at tagsleft@raise
+          \eql at adjust@print at alignleft\eql at layoutleftmarginmin@\z@
         \fi
       \fi
     \else
-      \ifdim\eql at tagwidth@>\eql at flushleftmarginmax@
-        \eql at tagbox@print at left@raise
-        \eql at adjust@flushleft at shoveleft@notag
+      \ifdim\eql at tagwidth@>\eql at layoutleftmarginmax@
+        \eql at tagbox@print at tagsleft@raise
+        \eql at adjust@layoutleft at alignleft@notag
       \else
         \eql at adjust@try\eql at tagwidth@
         \ifnum\badness<\eql at maxbadness@
-          \eql at tagbox@print at left
+          \eql at tagbox@print at tagsleft
           \eql at adjust@print at alignleft\eql at tagwidth@\z@
         \else
-          \eql at tagbox@print at left@raise
-          \eql at adjust@flushleft at shoveleft@notag
+          \eql at tagbox@print at tagsleft@raise
+          \eql at adjust@layoutleft at alignleft@notag
         \fi
       \fi
     \fi
@@ -2185,77 +2002,77 @@
   \fi
   \eql at display@firstavail at set\z@
 }
-\def\eql at adjust@flushleft at shoveright@notag{%
-  \eql at marginleft@\eql at flushleftmargin@
-  \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
+\def\eql at adjust@layoutleft at alignright@notag{%
+  \eql at marginleft@\eql at layoutleftmargin@
+  \ifdim\eql at layoutleftmarginmin@<\eql at marginleft@
     \eql at adjust@try\eql at marginleft@
     \ifnum\badness<\eql at marginbadness@
       \eql at adjust@print at alignright\eql at marginleft@\z@
     \else
-      \eql at adjust@print at alignright\eql at flushleftmarginmin@\z@
+      \eql at adjust@print at alignright\eql at layoutleftmarginmin@\z@
     \fi
   \else
     \eql at adjust@print at alignright\eql at marginleft@\z@
   \fi
 }
-\let\eql at adjust@flushleft at tagsright@shoveright at notag
-  \eql at adjust@flushleft at shoveright@notag
-\let\eql at adjust@flushleft at tagsleft@shoveright at notag
-  \eql at adjust@flushleft at shoveright@notag
-\def\eql at adjust@flushleft at tagsright@shoveright at tag{%
+\let\eql at adjust@layoutleft at tagsright@alignright at notag
+  \eql at adjust@layoutleft at alignright@notag
+\let\eql at adjust@layoutleft at tagsleft@alignright at notag
+  \eql at adjust@layoutleft at alignright@notag
+\def\eql at adjust@layoutleft at tagsright@alignright at tag{%
   \dimen@\eql at marginleft@
   \advance\dimen@\eql at tagwidth@
   \eql at adjust@try\dimen@
   \ifnum\badness<\eql at marginbadness@
     \eql at adjust@print at alignright\eql at marginleft@\eql at tagwidth@
-    \eql at tagbox@print at right
+    \eql at tagbox@print at tagsright
   \else
-    \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
-      \dimen@\eql at flushleftmarginmin@
+    \ifdim\eql at layoutleftmarginmin@<\eql at marginleft@
+      \dimen@\eql at layoutleftmarginmin@
       \advance\dimen@\eql at tagwidth@
       \eql at adjust@try\dimen@
     \fi
     \ifnum\badness<\eql at maxbadness@
-      \eql at adjust@print at alignright\eql at flushleftmarginmin@\eql at tagwidth@
-      \eql at tagbox@print at right
+      \eql at adjust@print at alignright\eql at layoutleftmarginmin@\eql at tagwidth@
+      \eql at tagbox@print at tagsright
     \else
-      \eql at adjust@flushleft at shoveright@notag
-      \eql at tagbox@print at right@raise
+      \eql at adjust@layoutleft at alignright@notag
+      \eql at tagbox@print at tagsright@raise
     \fi
   \fi
 }
-\def\eql at adjust@flushleft at tagsleft@shoveright at tag{%
-  \ifdim\eql at tagwidth@<\eql at flushleftmarginmin@
-    \eql at tagbox@print at left
-    \eql at adjust@flushleft at shoveright@notag
+\def\eql at adjust@layoutleft at tagsleft@alignright at tag{%
+  \ifdim\eql at tagwidth@<\eql at layoutleftmarginmin@
+    \eql at tagbox@print at tagsleft
+    \eql at adjust@layoutleft at alignright@notag
   \else
     \ifdim\eql at tagwidth@<\eql at marginleft@
       \eql at adjust@try\eql at marginleft@
       \ifnum\badness<\eql at marginbadness@
-        \eql at tagbox@print at left
+        \eql at tagbox@print at tagsleft
         \eql at adjust@print at alignright\eql at marginleft@\z@
       \else
         \eql at adjust@try\eql at tagwidth@
         \ifnum\badness<\eql at maxbadness@
-          \eql at tagbox@print at left
+          \eql at tagbox@print at tagsleft
           \eql at adjust@print at alignright\eql at tagwidth@\z@
         \else
-          \eql at tagbox@print at left@raise
-          \eql at adjust@print at alignright\eql at flushleftmarginmin@\z@
+          \eql at tagbox@print at tagsleft@raise
+          \eql at adjust@print at alignright\eql at layoutleftmarginmin@\z@
         \fi
       \fi
     \else
-      \ifdim\eql at tagwidth@>\eql at flushleftmarginmax@
-        \eql at tagbox@print at left@raise
-        \eql at adjust@flushleft at shoveright@notag
+      \ifdim\eql at tagwidth@>\eql at layoutleftmarginmax@
+        \eql at tagbox@print at tagsleft@raise
+        \eql at adjust@layoutleft at alignright@notag
       \else
         \eql at adjust@try\eql at tagwidth@
         \ifnum\badness<\eql at maxbadness@
-          \eql at tagbox@print at left
+          \eql at tagbox@print at tagsleft
           \eql at adjust@print at alignright\eql at tagwidth@\z@
         \else
-          \eql at tagbox@print at left@raise
-          \eql at adjust@flushleft at shoveright@notag
+          \eql at tagbox@print at tagsleft@raise
+          \eql at adjust@layoutleft at alignright@notag
         \fi
       \fi
     \fi
@@ -2262,123 +2079,17 @@
   \fi
   \eql at display@firstavail at set\z@
 }
-\def\eql at adjust@flushleft at shovecenter{%
+\def\eql at adjust@layoutleft at aligncenter{%
   \eql at error{shove center not implemented for left alignment}%
 }
-\let\eql at adjust@flushleft at tagsright@shovecenter at notag
-  \eql at adjust@flushleft at shovecenter
-\let\eql at adjust@flushleft at tagsright@shovecenter at tag
-  \eql at adjust@flushleft at shovecenter
-\let\eql at adjust@flushleft at tagsleft@shovecenter at notag
-  \eql at adjust@flushleft at shovecenter
-\let\eql at adjust@flushleft at tagsleft@shovecenter at tag
-  \eql at adjust@flushleft at shovecenter
-\def\eql at single@cr{%
-  \eql at error{Cannot use `\string\\' within display equation.
-    Please switch to equations environment}%
-}
-\def\eql at single@start{%
-  \eql at halign@catchprevdepth
-  \eql at tagging@start
-  \eql at dollardollar@begin
-  \eql at numbering@eval at mode
-  \let\eql at numbering@subeq at use\eql at false
-  \eql at stack@save at single
-  \eql at numbering@single at init
-  \ifdefined\eql at single@native
-    \let\eql at single@start at sel\eql at single@start at native
-    \let\eql at single@end at sel\eql at single@end at native
-    \let\raisetag\eql at raisetag@default
-  \else
-    \let\eql at single@start at sel\eql at single@start at adjust
-    \let\eql at single@end at sel\eql at single@end at adjust
-  \fi
-  \ifdefined\eql at single@crerror\else
-    \let\\\eql at single@cr
-  \fi
-  \eql at single@start at sel
-}
-\def\eql at single@end{%
-  \eql at punct@apply at block
-  \eql at hook@eqout
-  \eql at single@end at sel
-  \eql at stack@restore
-  \eql at dollardollar@end
-  \eql at tagging@end
-  \eql at halign@leave
-}
-\def\eql at single@main{%
-  \expandafter\eql at single@start
-  \eql at scan@body
-  \eql at single@end
-}
-\def\eql at single@start at native{%
-  \eql at hook@eqin
-}%
-\def\eql at single@end at native{%
-  \if at eqnsw
-    \ifdefined\eql at tagsleft
-      \leqno
-    \else
-      \eqno
-    \fi
-    \eql at compose@print
-  \fi
-  \ifnum\eql at displaybreak@pen@=\@MM\else
-    \postdisplaypenalty\eql at displaybreak@pen@
-  \fi
-}%
-\def\eql at single@start at adjust{%
-  \eql at totalrows@\@ne
-  \eql at row@\z@
-  \eql at display@init
-  \let\shoveleft\eql at adjust@shoveleft
-  \let\shovecenter\eql at adjust@shovecenter
-  \let\shoveright\eql at adjust@shoveright
-  \eql at adjust@init
-  \eql at shape@eval
-  \eql at halign@init{}%
-  \eql at row@\@ne
-  \setbox\eql at fieldbox@\hbox\bgroup
-    \eql at restore@hfuzz
-    \eql at strut@field
-    $\m at th\displaystyle%$
-      \eql at hook@eqin
-}
-\def\eql at single@end at adjust{%
-    \eql at tagging@mathsave
-    $%$
-    \hfil
-    \kern\z@
-  \egroup
-  \eql at fieldwidth@\wd\eql at fieldbox@
-  \eql at line@height@\ht\eql at fieldbox@
-  \eql at line@depth@\dp\eql at fieldbox@
-  \eql at totalwidth@\eql at fieldwidth@
-  \eql at totalrows@\@ne
-  \if at eqnsw
-    \eql at tagbox@make\eql at compose@print
-    \eql at tagrows@\@ne
-  \else
-    \eql at tagwidth@\z@
-    \eql at tagrows@\z@
-  \fi
-  \eql at tagwidth@max@\eql at tagwidth@
-  \eql at adjust@calc
-  \halign{##\cr
-    \noalign{\eql at halign@before}%
-    \if at eqnsw
-      \eql at adjust@sel at tag
-    \else
-      \eql at adjust@sel at notag
-    \fi
-    \cr
-    \noalign{\eql at halign@after}%
-    \eql at tagging@tablesavelines
-  }%
-  \eql at row@\tw@
-  \eql at display@close
-}
+\let\eql at adjust@layoutleft at tagsright@aligncenter at notag
+  \eql at adjust@layoutleft at aligncenter
+\let\eql at adjust@layoutleft at tagsright@aligncenter at tag
+  \eql at adjust@layoutleft at aligncenter
+\let\eql at adjust@layoutleft at tagsleft@aligncenter at notag
+  \eql at adjust@layoutleft at aligncenter
+\let\eql at adjust@layoutleft at tagsleft@aligncenter at tag
+  \eql at adjust@layoutleft at aligncenter
 \let\eql at fieldlength@tab\@empty
 \def\eql at fieldlength@save#1{%
   \begingroup
@@ -2414,10 +2125,10 @@
   \endgroup
 }
 \let\eql at colwidth@tab\@empty
-\def\eql at align@colwidth at get#1{%
+\def\eql at columns@colwidth at get#1{%
   \ifcase\expandafter#1\eql at colwidth@tab\else\z@\fi
 }
-\def\eql at align@colwidth at save{%
+\def\eql at columns@colwidth at save{%
   \begingroup
     \let\or\relax
     \global\edef\eql at colwidth@tab{\or\the\wd\thr@@\eql at colwidth@tab}%
@@ -2471,9 +2182,9 @@
   \ifdefined\eql at tagsleft
     \eql at display@firstavail at set\z@
     \ifdim\eql at tagwidth@>\eql at line@avail@
-      \eql at tagbox@print at left@raise
+      \eql at tagbox@print at tagsleft@raise
     \else
-      \eql at tagbox@print at left
+      \eql at tagbox@print at tagsleft
     \fi
     \kern\displaywidth
   \else
@@ -2480,9 +2191,9 @@
     \kern\displaywidth
     \advance\eql at tagwidth@\eql at line@width@
     \ifdim\eql at tagwidth@>\displaywidth
-      \eql at tagbox@print at right@raise
+      \eql at tagbox@print at tagsright@raise
     \else
-      \eql at tagbox@print at right
+      \eql at tagbox@print at tagsright
     \fi
   \fi
 }
@@ -2524,7 +2235,7 @@
     \let\eql at skip@force at below\z@
     \let\eql at skip@force at above\z@
     \eql at setkeys{intertext}\eql at intertext@opt
-    \openup-\eql at spread@amount@
+    \openup-\eql at spread@
     \penalty\postdisplaypenalty
     \ifcase\eql at skip@force at below\relax
       \advance\eql at vspaceskip@\glueexpr\eql at skip@long at below\relax
@@ -2606,79 +2317,273 @@
     }%
   }%
 }
-\let\eql at multi@mode at lines\eql at false
-\def\eql at multi@main{%
-  \eql at halign@catchprevdepth
-  \eql at tagging@start
-  \eql at dollardollar@begin
-  \eql at numbering@eval at mode
-  \eql at stack@save at multi
-  \ifdefined\eql at subequations@active
-    \let\eql at numbering@subeq at use\eql at false
-  \fi
-  \ifdefined\eql at numbering@subeq at use
-    \eql at numbering@subeq at init
-  \fi
-  \let\intertext\eql at intertext
-  \let\endintertext\endeql at intertext
-  \let\shoveleft\eql at adjust@shoveleft
-  \let\shovecenter\eql at adjust@shovecenter
-  \let\shoveright\eql at adjust@shoveright
-  \ifdefined\eql at multi@mode at lines
-    \expandafter\eql at lines@measure
-  \else
-    \ifdefined\eql at ampproof@active
-      \eql at ampproof
-    \fi
-    \expandafter\eql at align@measure
-  \fi
-  \ifx\eql at numbering@subeq at use\@ne
-    \eql at numbering@subeq at revert
-  \fi
-  \ifdefined\eql at multi@mode at lines\else
-    \ifdefined\eql at multi@linesfallback
-      \ifnum\eql at totalcolumns@=\@ne
-        \let\eql at multi@mode at lines\eql at true
-        \eql at shape@set{r}%
+\protected\def\eql at box@cr{%
+  \eql at ampprotect\eql at testopt@tight\eql at box@cr@\z@
+}
+\def\eql at box@cr@[#1]{%
+  \eql at punct@apply at line
+  \eql at hook@lineout
+  \eql at box@lastfield
+  \cr
+  \noalign{%
+    \vskip\glueexpr#1\relax
+  }%
+}
+\def\eql at box@lastfield at lines{&\omit\kern-2\eql at colsep@}
+\def\eql at box@open at stacked{%
+  \let\shoveleft\eql at adjust@alignleft
+  \let\shovecenter\eql at adjust@aligncenter
+  \let\shoveright\eql at adjust@alignright
+  \let\eql at box@lastfield\eql at box@lastfield at lines
+  \eql at halign@init{%
+\eql at dev{starting line \the\eql at row@}%
+    \global\advance\eql at row@\@ne
+  }%
+  \tabskip\z at skip
+  \halign\bgroup
+    &%
+      \eql at shape@pos@\m at ne
+      \setbox\eql at fieldbox@\hbox{%
+        \eql at strut@field
+        \@lign
+        $\m at th\displaystyle
+          \eql at hook@colin
+          ##%
+          \eql at punct@apply at col
+          \eql at hook@colout
+          \eql at tagging@mathsave
+        $%
+        \eql at tagging@mathaddlast
+      }%
+      \ifnum\eql at shape@pos@=\m at ne
+        \eql at shape@eval
       \fi
+      \ifcase\eql at shape@pos@
+        \kern\eql at shape@amount@
+        \box\eql at fieldbox@
+        \skip@\@flushglue
+        \advance\skip@\eql at paddingleft@\relax
+        \advance\skip@\eql at paddingright@\relax
+        \advance\skip at -\eql at shape@amount@\relax
+        \hskip\skip@
+        \eql at tagging@alignleft
+      \or
+        \skip@\@flushglue
+        \advance\skip@\eql at paddingleft@\relax
+        \hskip\skip@
+        \box\eql at fieldbox@
+        \skip@\@flushglue
+        \advance\skip@\eql at paddingright@\relax
+        \hskip\skip@
+        \eql at tagging@aligncenter
+      \or
+        \skip@\@flushglue
+        \advance\skip@\eql at paddingleft@\relax
+        \advance\skip@\eql at paddingright@\relax
+        \hskip\skip@
+        \box\eql at fieldbox@
+        \eql at tagging@alignright
+      \fi
+      \tabskip\eql at colsep@\relax
+    \crcr
+    \noalign{%
+      \eql at hook@blockbefore
+    }%
+    \eql at hook@blockin
+}
+\def\eql at mode@stacked{\let\eql at box@open\eql at box@open at stacked}
+\def\eql at box@lastfield at odd{%
+  &\omit
+  \kern-\wd\eql at fieldbox@
+  \box\eql at fieldbox@
+  \hfil
+  &\omit\kern-\eql at colsep@
+}%
+\def\eql at box@lastfield at even{&\omit\kern-\eql at colsep@}
+\def\eql at box@open at aligned{%
+  \let\eql at box@lastfield\@empty
+  \eql at halign@init{%
+\eql at dev{starting new line}%
+  }%
+  \tabskip\z at skip
+  \halign\bgroup
+    &%
+      \let\eql at box@lastfield\eql at box@lastfield at odd
+      \global\setbox\eql at fieldbox@\hbox{%
+        \eql at strut@field
+        \@lign
+        $\m at th\displaystyle
+          \eql at hook@colin
+          ##%
+          \eql at class@innerleft
+          \eql at hook@innerleft
+          \eql at tagging@mathsave
+        $%
+        \eql at tagging@mathaddlast
+      }%
+      \hfil
+      \kern\wd\eql at fieldbox@
+      \tabskip\z at skip
+    &%
+      \eql at fieldwidth@\wd\eql at fieldbox@
+      \kern-\eql at fieldwidth@
+      \box\eql at fieldbox@
+      \let\eql at box@lastfield\eql at box@lastfield at even
+      \llap{\unhbox\eql at fieldbox@}%
+      \hbox{%
+        \eql at strut@field
+        \@lign
+        $\m at th\displaystyle
+          \eql at hook@innerright
+          \eql at class@innerright at sel
+          ##%
+          \eql at punct@apply at col
+          \eql at hook@colout
+          \eql at tagging@mathsave
+        $%
+        \eql at tagging@mathaddlast
+      }%
+      \hfil
+      \tabskip\eql at colsep@\relax
+    \crcr
+    \noalign{%
+      \eql at hook@blockbefore
+    }%
+    \eql at hook@blockin
+}
+\def\eql at mode@aligned{\let\eql at box@open\eql at box@open at aligned}
+\let\eql at box@box\vcenter
+\let\eql at box@open\@undefined
+\def\eql at box@close{%
+    \ifvmode\else
+      \global\eql at totalrows@\eql at row@
+      \eql at punct@apply at block
+      \eql at box@cr@[\z at skip]%
     \fi
-  \fi
-  \ifdefined\eql at multi@mode at lines
-    \expandafter\eql at lines@print
+    \crcr
+    \noalign{%
+      \eql at hook@blockafter
+    }%
+    \eql at tagging@tablesaveinner
+  \egroup
+}
+\def\eql at box@start{%
+  \relax
+  \ifmmode
+    \let\eql at box@endmath\@empty
   \else
-    \expandafter\eql at align@print
+    $\let\eql at box@endmath=$%
   \fi
-  \ifdefined\eql at numbering@subeq at use
-    \eql at numbering@subeq at close
-  \fi
+  \eql at nextopt@process{equationsbox}%
+  \let\eql at punct@block\eql at punct@main
+  \let\eql at punct@main\relax
+  \eql at colsep@\glueexpr\eql at box@colsep\relax
+  \eql at paddingleft@\glueexpr\eql at paddingleft@val\relax
+  \eql at paddingright@\glueexpr\eql at paddingright@val\relax
+  \eql at indent@\glueexpr\eql at indent@val\relax
+  \eql at stack@save at boxed
+  \let\eql at layoutleft\eql at false
+  \eql at row@\z@
+  \eql at totalrows@\@M
+  \eql at shape@sel
+  \hskip\glueexpr\eql at box@marginleft\relax
+  \eql at box@box\bgroup
+    \eql at display@leave
+    \let\\\eql at box@cr
+    \eql at box@open
+}
+\newcommand{\eql at box@end}{%
+    \eql at box@close
+  \egroup
+  \eql at tagging@tableaddinner
+  \hskip\glueexpr\eql at box@marginright\relax
   \eql at stack@restore
-  \eql at dollardollar@end
-  \eql at tagging@end
-  \eql at halign@leave
+  \eql at box@endmath
 }
-\def\eql at mode@equation{%
-  \let\eql at equations@mode at single\eql at true
-  \ifdefined\eql at single@doscan
-    \let\eql at equations@main\eql at single@main
-    \let\eql at equations@end\@empty
+\newenvironment{equationsbox}{%
+\eql at dev@enterenv
+  \eql at ampprotect\eql at box@testall\eql at box@start
+}{%
+  \eql at box@end
+\eql at dev@leaveenv
+}
+\def\eql at box@testall{\eql at box@testtilde}
+\def\eql at box@testtilde#1{%
+  \eql at ifnextgobble@tight~%
+    {\eqnaddopt{lines}\eql at box@testopt{#1}}%
+    {\eql at box@testopt{#1}}}
+\def\eql at box@testopt#1{%
+  \eql at ifnextchar@tight[%]
+    {\eql at box@addopt{#1}}%
+    {#1}}
+\def\eql at box@addopt#1[#2]{\eqnaddopt{#2}#1}
+\def\eql at single@start at native{%
+  \eql at hook@eqin
+}%
+\def\eql at single@end at native{%
+  \if at eqnsw
+    \ifdefined\eql at tagsleft
+      \leqno
+    \else
+      \eqno
+    \fi
+    \eql at compose@print
+  \fi
+  \ifnum\eql at displaybreak@pen@=\@MM\else
+    \postdisplaypenalty\eql at displaybreak@pen@
+  \fi
+}%
+\def\eql at single@start at print{%
+  \eql at totalrows@\@ne
+  \eql at row@\z@
+  \eql at display@init
+  \let\shoveleft\eql at adjust@alignleft
+  \let\shovecenter\eql at adjust@aligncenter
+  \let\shoveright\eql at adjust@alignright
+  \eql at adjust@init
+  \eql at shape@eval
+  \eql at halign@init{}%
+  \eql at row@\@ne
+  \setbox\eql at fieldbox@\hbox\bgroup
+    \eql at restore@hfuzz
+    \eql at strut@field
+    $\m at th\displaystyle%$
+      \eql at hook@eqin
+}
+\def\eql at single@end at print{%
+    \eql at tagging@mathsave
+    $%$
+    \hfil
+    \kern\z@
+  \egroup
+  \eql at fieldwidth@\wd\eql at fieldbox@
+  \eql at line@height@\ht\eql at fieldbox@
+  \eql at line@depth@\dp\eql at fieldbox@
+  \eql at totalwidth@\eql at fieldwidth@
+  \eql at totalrows@\@ne
+  \if at eqnsw
+    \eql at tagbox@make\eql at compose@print
+    \eql at tagrows@\@ne
   \else
-    \let\eql at equations@main\@undefined
-    \let\eql at equations@end\eql at single@end
+    \eql at tagwidth@\z@
+    \eql at tagrows@\z@
   \fi
+  \eql at tagwidth@max@\eql at tagwidth@
+  \eql at adjust@calc
+  \halign{##\cr
+    \noalign{\eql at halign@before}%
+    \if at eqnsw
+      \eql at adjust@sel at tag
+    \else
+      \eql at adjust@sel at notag
+    \fi
+    \cr
+    \noalign{\eql at halign@after}%
+    \eql at tagging@tablesavelines
+  }%
+  \eql at row@\tw@
+  \eql at display@close
 }
-\def\eql at mode@align{%
-  \let\eql at equations@mode at single\eql at false
-  \let\eql at multi@mode at lines\eql at false
-  \let\eql at equations@main\eql at multi@main
-  \let\eql at equations@end\@empty
-}
-\def\eql at mode@lines{%
-  \let\eql at equations@mode at single\eql at false
-  \let\eql at multi@mode at lines\eql at true
-  \let\eql at equations@main\eql at multi@main
-  \let\eql at equations@end\@empty
-}
-\eql at mode@align
 \def\eql at lines@measure at line@begin{%
 \eql at dev{starting line \the\eql at row@}%
   \eql at numbering@measure at line@begin
@@ -2834,26 +2739,26 @@
   }%
   \eql at display@close
 }
-\def\eql at align@add at amp#1{\if m#1&\omit\expandafter\eql at align@add at amp\fi}
-\def\eql at align@completerow{%
+\def\eql at columns@add at amp#1{\if m#1&\omit\expandafter\eql at columns@add at amp\fi}
+\def\eql at columns@completerow{%
   \count@\eql at totalcolumns@
   \advance\count at -\eql at column@
   \advance\count@\@ne
   \edef\eql at tmp{%
-    \expandafter\eql at align@add at amp\romannumeral\number\count@ 000q}%
+    \expandafter\eql at columns@add at amp\romannumeral\number\count@ 000q}%
   \eql at tmp
 }
-\def\eql at align@measure at line@begin{%
+\def\eql at columns@measure at line@begin{%
 \eql at dev{starting line \the\eql at row@}%
   \global\eql at column@\z@
   \eql at numbering@measure at line@begin
   \eql at hook@linein
 }
-\def\eql at align@measure at field{%
+\def\eql at columns@measure at field{%
   \eql at fieldlength@save\eql at column@
   \kern\wd\eql at fieldbox@
 }
-\def\eql at align@measure at line@end{%
+\def\eql at columns@measure at line@end{%
   \eql at punct@apply at line
   \eql at hook@lineout
   &\omit
@@ -2860,9 +2765,9 @@
   \ifnum\eql at column@>\eql at totalcolumns@
     \global\eql at totalcolumns@\eql at column@
   \fi
-  \eql at align@measure at tag
+  \eql at columns@measure at tag
 }
-\def\eql at align@measure at tag{%
+\def\eql at columns@measure at tag{%
   \ifnum\eql at numbering@target@<\z@
     \if at eqnsw
       \eql at tagbox@make\eql at compose@measure
@@ -2876,8 +2781,8 @@
     \eql at tagwidth@save
   \fi
 }
-\def\eql at align@measure{%
-\eql at dev@enter\eql at align@measure
+\def\eql at columns@measure{%
+\eql at dev@enter\eql at columns@measure
   \eql at totalcolumns@\z@
   \eql at tagwidth@max@\z@
   \let\eql at tagwidth@tab\@empty
@@ -2886,8 +2791,8 @@
   \eql at measure@savecounters
   \setbox\z@\vbox{%
     \eql at numbering@measure at init
-    \eql at measure@init\eql at align@measure at line@begin
-    \eql at let@cr\eql at align@measure at line@end
+    \eql at measure@init\eql at columns@measure at line@begin
+    \eql at let@cr\eql at columns@measure at line@end
     \tabskip\z at skip
     \halign{%
       &%
@@ -2903,7 +2808,7 @@
           $%
         }%
         \global\eql at fieldwidth@\wd\eql at fieldbox@
-        \eql at align@measure at field
+        \eql at columns@measure at field
       &%
         \global\advance\eql at column@\@ne
         \setbox\eql at fieldbox@\hbox{%
@@ -2916,7 +2821,7 @@
             \eql at hook@colout
           $%
         }%
-        \eql at align@measure at field
+        \eql at columns@measure at field
         \hfil
       \crcr
       \noalign{%
@@ -2927,13 +2832,13 @@
       \ifvmode\else
         \eql at punct@apply at block
         \eql at hook@blockout
-        \eql at align@measure at line@end
+        \eql at columns@measure at line@end
         \cr
       \fi
       \noalign{%
         \eql at hook@blockafter
       }%
-      \eql at align@completerow
+      \eql at columns@completerow
       \cr
     }%
     \global\advance\eql at row@-\tw@
@@ -2964,11 +2869,11 @@
       \global\setbox\thr@@\lastbox
     }%
   \ifhbox\thr@@
-    \eql at align@colwidth at save
+    \eql at columns@colwidth at save
   \repeat
-\eql at dev@leave\eql at align@measure
+\eql at dev@leave\eql at columns@measure
 }
-\def\eql at align@print at line@begin{%
+\def\eql at columns@print at line@begin{%
 \eql at dev{starting line \the\eql at row@}%
   \global\eql at column@\z@
   \global\eql at line@pos@\eql at marginleft@
@@ -2979,8 +2884,8 @@
   \eql at numbering@print at line@begin
   \eql at hook@linein
 }
-\def\eql at align@print at field{%
-  \dimen@\eql at align@colwidth at get\eql at column@\relax
+\def\eql at columns@print at field{%
+  \dimen@\eql at columns@colwidth at get\eql at column@\relax
   \ifdim\wd\eql at fieldbox@>\z@
     \ifdim\eql at line@width@=\z@
       \eql at line@avail@\eql at line@pos@
@@ -3009,7 +2914,7 @@
   \ifdim\dp\eql at fieldbox@>\eql at line@depth@
     \global\eql at line@depth@\dp\eql at fieldbox@
   \fi
-  \dimen@\eql at align@colwidth at get\eql at column@\relax
+  \dimen@\eql at columns@colwidth at get\eql at column@\relax
   \ifodd\eql at column@
     \kern\dimen@
   \else
@@ -3018,24 +2923,24 @@
     \kern\dimen@
   \fi
 }
-\def\eql at align@print at trailright{%
+\def\eql at columns@print at trailright{%
    &\omit
     \global\advance\eql at column@\@ne
     \setbox\eql at fieldbox@\hbox{%
       \kern-\wd\eql at fieldbox@\box\eql at fieldbox@
     }%
-    \eql at align@print at field
+    \eql at columns@print at field
 }
-\def\eql at align@print at line@end{%
+\def\eql at columns@print at line@end{%
   \eql at punct@apply at line
   \eql at hook@lineout
   \ifodd\eql at column@
-    \expandafter\eql at align@print at trailright
+    \expandafter\eql at columns@print at trailright
   \fi
-  \eql at align@completerow
-  \eql at align@print at tag
+  \eql at columns@completerow
+  \eql at columns@print at tag
 }
-\def\eql at align@print at tag{%
+\def\eql at columns@print at tag{%
   \dimen@\eql at totalwidth@
   \advance\dimen@\eql at colsep@
   \kern-\dimen@
@@ -3051,13 +2956,13 @@
     \kern\displaywidth
   \fi
 }
-\def\eql at align@print{%
-\eql at dev@enter\eql at align@print
-  \eql at align@adjust
+\def\eql at columns@print{%
+\eql at dev@enter\eql at columns@print
+  \eql at columns@adjust
   \eql at display@init
   \eql at numbering@print at init
-  \eql at print@init\eql at align@print at line@begin
-  \eql at let@cr\eql at align@print at line@end
+  \eql at print@init\eql at columns@print at line@begin
+  \eql at let@cr\eql at columns@print at line@end
   \tabskip\eql at marginleft@
   \halign{%
     &%
@@ -3076,7 +2981,7 @@
         \eql at tagging@mathaddlast
       }%
       \global\eql at fieldwidth@\wd\eql at fieldbox@
-      \eql at align@print at field
+      \eql at columns@print at field
       \tabskip\z at skip
     &%
       \global\advance\eql at column@\@ne
@@ -3095,7 +3000,7 @@
         $%
         \eql at tagging@mathaddlast
       }%
-      \eql at align@print at field
+      \eql at columns@print at field
       \hfil
       \tabskip\eql at colsep@\relax
     \crcr
@@ -3109,49 +3014,49 @@
     \ifvmode\else
       \eql at punct@apply at block
       \eql at hook@blockout
-      \eql at align@print at line@end
+      \eql at columns@print at line@end
       \cr
     \fi
     \noalign{%
       \eql at hook@blockafter
       \eql at halign@after
-\eql at dev@leave\eql at align@print
+\eql at dev@leave\eql at columns@print
     }%
     \eql at tagging@tablesavealign
   }%
   \eql at display@close
 }
-\def\eql at align@adjust{%
+\def\eql at columns@adjust{%
   \eql at colsepmin@\glueexpr\eql at colsepmin@val\relax
   \ifodd\eql at totalcolumns@
     \advance\eql at totalcolumns@\@ne
   \fi
   \ifnum\eql at totalcolumns@<\thr@@
-    \let\eql at align@margins\eql at true
+    \let\eql at columns@margins\eql at true
   \fi
-  \eql at align@inter@\eql at totalcolumns@
-  \divide\eql at align@inter@\tw@
-  \advance\eql at align@inter@\m at ne
-  \ifdefined\eql at flushleft
-    \eql at flushleftmargin@\glueexpr\eql at flushleftmargin@val\relax
+  \eql at columns@inter@\eql at totalcolumns@
+  \divide\eql at columns@inter@\tw@
+  \advance\eql at columns@inter@\m at ne
+  \ifdefined\eql at layoutleft
+    \eql at layoutleftmargin@\glueexpr\eql at layoutleftmargin@val\relax
   \else
     \eql at adjust@tagmargin
   \fi
   \eql at colsep@\displaywidth
   \advance\eql at colsep@-\eql at totalwidth@
-  \ifdefined\eql at flushleft
-    \advance\eql at colsep@-\eql at flushleftmargin@
+  \ifdefined\eql at layoutleft
+    \advance\eql at colsep@-\eql at layoutleftmargin@
   \else
     \advance\eql at colsep@-\eql at tagmargin@
-    \ifdefined\eql at align@margins\else
+    \ifdefined\eql at columns@margins\else
       \ifdim\eql at tagmargin@>\z@
         \advance\eql at colsep@-\eql at tagsepmin@
       \fi
     \fi
   \fi
-  \count@\eql at align@inter@
-  \ifdefined\eql at align@margins
-    \ifdefined\eql at flushleft
+  \count@\eql at columns@inter@
+  \ifdefined\eql at columns@margins
+    \ifdefined\eql at layoutleft
       \advance\count@\@ne
     \else
       \advance\count@\tw@
@@ -3166,26 +3071,26 @@
       \eql at colsep@\dimen@
     \fi
   \fi
-  \ifdefined\eql at flushleft
+  \ifdefined\eql at layoutleft
     \ifdim\eql at colsep@=\eql at colsepmin@
       \eql at marginleft@\displaywidth
       \advance\eql at marginleft@-\eql at totalwidth@
-      \advance\eql at marginleft@-\eql at align@inter@\eql at colsep@
-      \ifdim\eql at marginleft@>\eql at flushleftmargin@
-        \eql at marginleft@\eql at flushleftmargin@
+      \advance\eql at marginleft@-\eql at columns@inter@\eql at colsep@
+      \ifdim\eql at marginleft@>\eql at layoutleftmargin@
+        \eql at marginleft@\eql at layoutleftmargin@
       \else
-        \ifdim\eql at marginleft@<\eql at flushleftmarginmin@
-          \eql at marginleft@\eql at flushleftmarginmin@
+        \ifdim\eql at marginleft@<\eql at layoutleftmarginmin@
+          \eql at marginleft@\eql at layoutleftmarginmin@
         \fi
       \fi
     \else
-      \eql at marginleft@\eql at flushleftmargin@
+      \eql at marginleft@\eql at layoutleftmargin@
     \fi
   \else
-    \ifdefined\eql at align@margins
+    \ifdefined\eql at columns@margins
       \eql at marginleft@\displaywidth
       \advance\eql at marginleft@-\eql at totalwidth@
-      \advance\eql at marginleft@-\eql at align@inter@\eql at colsep@
+      \advance\eql at marginleft@-\eql at columns@inter@\eql at colsep@
       \ifdim\eql at marginleft@<\eql at tagmargin@
         \eql at marginleft@\z@
       \else
@@ -3207,9 +3112,9 @@
     \fi
   \fi
   \ifdefined\eql at tagsleft
-    \let\eql at align@adjust at test\eql at align@adjust at test@tagleft
+    \let\eql at columns@adjust at test\eql at columns@adjust at test@tagleft
   \else
-    \let\eql at align@adjust at test\eql at align@adjust at test@tagright
+    \let\eql at columns@adjust at test\eql at columns@adjust at test@tagright
   \fi
   \eql at row@\eql at totalrows@
   \loop\ifnum\eql at row@>\z@
@@ -3221,15 +3126,15 @@
       \fi
     \fi
     \ifdim\eql at tagwidth@>\z@
-      \eql at align@adjust at calc
-      \eql at align@adjust at test
+      \eql at columns@adjust at calc
+      \eql at columns@adjust at test
     \fi
     \advance\eql at row@\m at ne
   \repeat
-  \advance\eql at totalwidth@\eql at align@inter@\eql at colsep@
+  \advance\eql at totalwidth@\eql at columns@inter@\eql at colsep@
   \advance\eql at totalwidth@\eql at marginleft@
 }
-\def\eql at align@adjust at calc{%
+\def\eql at columns@adjust at calc{%
   \eql at line@pos@\z@
   \eql at column@\z@
   \eql at line@avail@\eql at totalwidth@
@@ -3238,16 +3143,16 @@
   \@tempcntb\z@
   \edef\@tempb{\eql at fieldlength@get\eql at row@}%
   \@for\@tempa:=\@tempb\do
-    \eql at align@adjust at calc@col
+    \eql at columns@adjust at calc@col
   \advance\@tempcnta\m at ne
   \divide\@tempcnta\tw@
   \advance\@tempcntb\m at ne
   \divide\@tempcntb\tw@
 }
-\def\eql at align@adjust at calc@col{%
+\def\eql at columns@adjust at calc@col{%
   \advance\eql at column@\@ne
   \@tempdima\@tempa\relax
-  \dimen@\eql at align@colwidth at get\eql at column@\relax
+  \dimen@\eql at columns@colwidth at get\eql at column@\relax
   \ifdim\@tempdima>\z@
     \ifdim\eql at line@width@=\z@
       \eql at line@avail@\eql at line@pos@
@@ -3267,7 +3172,7 @@
   \fi
   \advance\eql at line@pos@\dimen@
 }
-\def\eql at align@adjust at test@tagright{%
+\def\eql at columns@adjust at test@tagright{%
   \@tempdima\displaywidth
   \advance\@tempdima-\eql at line@width@
   \advance\@tempdima-\eql at tagwidth@
@@ -3275,22 +3180,22 @@
   \advance\dimen@\@tempcntb\eql at colsep@
   \ifdim\dimen@>\@tempdima
     \dimen@\@tempcntb\eql at colsepmin@
-    \ifdefined\eql at flushleft
-      \advance\dimen@\eql at flushleftmarginmin@
+    \ifdefined\eql at layoutleft
+      \advance\dimen@\eql at layoutleftmarginmin@
     \fi
     \ifdim\dimen@>\@tempdima\else
-      \eql at align@adjust at modify@tagright
+      \eql at columns@adjust at modify@tagright
     \fi
   \fi
 }
-\def\eql at align@adjust at modify@tagright{%
+\def\eql at columns@adjust at modify@tagright{%
   \ifnum\@tempcntb>\z@
     \dimen@\@tempdima
     \count@\@tempcntb
-    \ifdefined\eql at flushleft
+    \ifdefined\eql at layoutleft
       \advance\dimen at -\eql at marginleft@
     \else
-      \ifdefined\eql at align@margins
+      \ifdefined\eql at columns@margins
         \advance\count@\@ne
       \fi
     \fi
@@ -3308,8 +3213,8 @@
     \eql at marginleft@\dimen@
   \fi
 }
-\def\eql at align@adjust at test@tagleft{%
-  \count@\eql at align@inter@
+\def\eql at columns@adjust at test@tagleft{%
+  \count@\eql at columns@inter@
   \advance\count at -\@tempcnta
   \@tempdima\eql at tagwidth@
   \advance\@tempdima-\eql at line@avail@
@@ -3316,8 +3221,8 @@
   \dimen@\eql at marginleft@
   \advance\dimen@\@tempcnta\eql at colsep@
   \ifdim\dimen@<\@tempdima
-    \ifdefined\eql at flushleft
-      \dimen@\eql at flushleftmarginmax@
+    \ifdefined\eql at layoutleft
+      \dimen@\eql at layoutleftmarginmax@
     \else
       \dimen@\displaywidth
     \fi
@@ -3326,17 +3231,17 @@
       \advance\dimen@\eql at totalwidth@
       \advance\dimen@\@tempdima
       \ifdim\dimen@>\displaywidth\else
-        \eql at align@adjust at modify@tagleft
+        \eql at columns@adjust at modify@tagleft
       \fi
     \fi
   \fi
 }
-\def\eql at align@adjust at modify@tagleft{%
+\def\eql at columns@adjust at modify@tagleft{%
   \ifnum\count@>\z@
     \dimen@\displaywidth
     \advance\dimen at -\eql at totalwidth@
     \advance\dimen at -\@tempdima
-    \ifdefined\eql at align@margins
+    \ifdefined\eql at columns@margins
       \advance\count@\@ne
     \fi
     \divide\dimen@\count@
@@ -3345,7 +3250,7 @@
         \dimen@\eql at colsepmin@
       \fi
       \advance\dimen at -\eql at colsep@
-      \advance\eql at marginleft@-\eql at align@inter@\dimen@
+      \advance\eql at marginleft@-\eql at columns@inter@\dimen@
       \advance\eql at colsep@\dimen@
     \fi
   \fi
@@ -3477,6 +3382,113 @@
   \eql at indent@\glueexpr\eql at indent@val\relax
   \eql at tagsepmin@\glueexpr\eql at tagsepmin@val\relax
 }
+\def\eql at single@cr{%
+  \eql at error{Cannot use `\string\\' within display equation.
+    Please switch to equations environment}%
+}
+\def\eql at single@start{%
+  \eql at halign@catchprevdepth
+  \eql at tagging@start
+  \eql at dollardollar@begin
+  \eql at numbering@eval at mode
+  \let\eql at numbering@subeq at use\eql at false
+  \eql at stack@save at single
+  \eql at numbering@single at init
+  \ifdefined\eql at single@native
+    \let\eql at single@start at sel\eql at single@start at native
+    \let\eql at single@end at sel\eql at single@end at native
+    \let\raisetag\eql at raisetag@default
+  \else
+    \let\eql at single@start at sel\eql at single@start at print
+    \let\eql at single@end at sel\eql at single@end at print
+  \fi
+  \ifdefined\eql at single@crerror\else
+    \let\\\eql at single@cr
+  \fi
+  \eql at single@start at sel
+}
+\def\eql at single@end{%
+  \eql at punct@apply at block
+  \eql at hook@eqout
+  \eql at single@end at sel
+  \eql at stack@restore
+  \eql at dollardollar@end
+  \eql at tagging@end
+  \eql at halign@leave
+}
+\def\eql at single@main{%
+  \expandafter\eql at single@start
+  \eql at scan@body
+  \eql at single@end
+}
+\def\eql at mode@equation{%
+  \ifdefined\eql at single@doscan
+    \let\eql at equations@main\eql at single@main
+    \let\eql at equations@end\@empty
+  \else
+    \let\eql at equations@main\@undefined
+    \let\eql at equations@end\eql at single@end
+  \fi
+}
+\let\eql at multi@mode at lines\eql at false
+\def\eql at multi@main{%
+  \eql at halign@catchprevdepth
+  \eql at tagging@start
+  \eql at dollardollar@begin
+  \eql at numbering@eval at mode
+  \eql at stack@save at multi
+  \ifdefined\eql at subequations@active
+    \let\eql at numbering@subeq at use\eql at false
+  \fi
+  \ifdefined\eql at numbering@subeq at use
+    \eql at numbering@subeq at init
+  \fi
+  \let\intertext\eql at intertext
+  \let\endintertext\endeql at intertext
+  \let\shoveleft\eql at adjust@alignleft
+  \let\shovecenter\eql at adjust@aligncenter
+  \let\shoveright\eql at adjust@alignright
+  \ifdefined\eql at multi@mode at lines
+    \expandafter\eql at lines@measure
+  \else
+    \ifdefined\eql at ampproof@active
+      \eql at ampproof
+    \fi
+    \expandafter\eql at columns@measure
+  \fi
+  \ifx\eql at numbering@subeq at use\@ne
+    \eql at numbering@subeq at revert
+  \fi
+  \ifdefined\eql at multi@mode at lines\else
+    \ifdefined\eql at multi@linesfallback
+      \ifnum\eql at totalcolumns@=\@ne
+        \let\eql at multi@mode at lines\eql at true
+      \fi
+    \fi
+  \fi
+  \ifdefined\eql at multi@mode at lines
+    \expandafter\eql at lines@print
+  \else
+    \expandafter\eql at columns@print
+  \fi
+  \ifdefined\eql at numbering@subeq at use
+    \eql at numbering@subeq at close
+  \fi
+  \eql at stack@restore
+  \eql at dollardollar@end
+  \eql at tagging@end
+  \eql at halign@leave
+}
+\def\eql at mode@columns{%
+  \let\eql at equations@main\eql at multi@main
+  \let\eql at equations@end\@empty
+  \let\eql at multi@mode at lines\eql at false
+}
+\def\eql at mode@lines{%
+  \let\eql at equations@main\eql at multi@main
+  \let\eql at equations@end\@empty
+  \let\eql at multi@mode at lines\eql at true
+}
 \newenvironment{equations}{%
 \eql at dev@enterenv
   \ifmmode
@@ -3553,31 +3565,6 @@
   \end{equations at ang}%
   \ignorespaces
 }
-\DeclareRobustCommand{\eql at eqref}[1]{\textup{\eql at tag@boxedform{\ref{#1}}}}
-\DeclareRobustCommand{\eql at numberwithin}[3][\arabic]{%
-  \@ifundefined{c@#2}{\@nocounterr{#2}}{%
-    \@ifundefined{c@#3}{\@nocounterr{#3}}{%
-      \ifdefined\HyOrg at addtoreset
-        \HyOrg at addtoreset{#2}{#3}%
-      \else
-        \@addtoreset{#2}{#3}%
-      \fi
-      \expandafter\xdef\csname the#2\endcsname{%
-        \expandafter\noexpand\csname the#3\endcsname.\noexpand#1{#2}}%
-      \ifdefined\theHequation
-        \expandafter\xdef\csname theH#2\endcsname{%
-          \expandafter\noexpand
-          \csname the\@ifundefined{theH#3}{}H#3\endcsname.%
-            \noexpand\arabic{#2}}%
-      \fi
-    }%
-  }%
-}
-\DeclareRobustCommand{\eql at allowdisplaybreaks}[1][4]{%
-  \eqnlinesset{allowbreaks=#1}%
-}
-\newcommand{\eql at notag}{\nonumber}
-\newcommand{\eql at thetag}{\leavevmode\eql at tag@boxedform}
 \RequirePackage{keyval}
 \def\eql at decide@select#1#2#3#4{%
   \def\@tempa{#3}%
@@ -3611,8 +3598,16 @@
   \eql at decide@select{#1}{#2}{#3}{%
     {,abovebelow,both,tb}{#4#5},%
     {above,top,t}{#4},%
-    {below,bottom,b}{#5}}%
-  }
+    {below,bottom,b}{#5}}}
+\def\eql at decide@situation#1#2#3#4{%
+  \eql at decide@select{#1}{#2}{#3}{%
+    {{long}{\def#4{0}}},%
+    {{short}{\def#4{1}}},%
+    {{cont}{\def#4{2}}},%
+    {{par}{\def#4{3}}},%
+    {{top}{\def#4{4}}},%
+    {{noskip}{\def#4{5}}},%
+    {{medskip}{\def#4{6}}}}}
 \def\eql at define@key#1#2{%
   \eql at ifnextchar@loose[%]
     {\eql at definekey@opt{#1}{#2}}%
@@ -3645,77 +3640,8 @@
 }
 \newcommand{\eqnaddopt}[1]{%
   \expandafter\def\expandafter\eql at nextopt\expandafter{\eql at nextopt,#1}}
-\def\eql at defaults@classic{%
-  \def\eql at tagsepmin@val{.5\fontdimen6\textfont\tw@}%
-  \def\eql at colsepmax@val{.5\maxdimen}%
-  \def\eql at spread{\jot}%
-  \let\eql at tagmargin@val\@undefined
-  \eql at tagmargin@ratio@\p@
-  \def\eql at tagmargin@threshold{0.5}%
-  \def\eql at flushleftmargin@val{\leftmargini}%
-  \let\eql at display@height\@undefined
-  \let\eql at display@depth\@undefined
-  \eql at skip@mode at short@\tw@
-  \eql at skip@mode at cont@\@ne
-  \eql at skip@mode at par@\z@
-  \eql at skip@mode at top@\z@
-  \def\eql at skip@long at above{\abovedisplayskip}%
-  \def\eql at skip@long at below{\belowdisplayskip}%
-  \def\eql at skip@short at above{\abovedisplayshortskip}%
-  \def\eql at skip@short at below{\belowdisplayshortskip}%
-  \def\eql at skip@cont at above{\eql at skip@short at above}%
-  \def\eql at skip@cont at below{\eql at skip@short at below}%
-  \def\eql at skip@par at above{\eql at skip@long at above}%
-  \def\eql at skip@par at below{\eql at skip@long at below}%
-  \def\eql at skip@top at above{\eql at skip@long at above}%
-  \def\eql at skip@top at below{\eql at skip@long at below}%
-  \def\eql at skip@med at above{\abovedisplayskip/2}%
-  \def\eql at skip@med at below{\belowdisplayskip/2}%
-  \def\eql at skip@medtag at above{\z at skip}%
-  \def\eql at skip@medtag at below{\z at skip}%
-  \def\eql at skip@tag at above{\z at skip}%
-  \def\eql at skip@tag at below{\z at skip}%
-}
-\def\eql at defaults@eqnlines{%
-  \def\eql at tagsepmin@val{.5em}%
-  \def\eql at colsepmax@val{2em}%
-  \def\eql at spread{0.2\normalbaselineskip}%
-  \let\eql at tagmargin@val\@undefined
-  \eql at tagmargin@ratio at .334\p@
-  \def\eql at tagmargin@threshold{0.5}%
-  \def\eql at flushleftmargin@val{\leftmargini}%
-  \def\eql at display@height{\ht\eql at strutbox@}%
-  \def\eql at display@depth{\dp\eql at strutbox@}%
-  \eql at skip@mode at short@\@ne
-  \eql at skip@mode at cont@\z@
-  \eql at skip@mode at par@\z@
-  \eql at skip@mode at top@\z@
-  \def\eql at skip@long at above{0.75\normalbaselineskip
-    \@plus0.25\normalbaselineskip\@minus0.4\normalbaselineskip}%
-  \let\eql at skip@long at below\eql at skip@long at above
-  \def\eql at skip@short at above{0.0\normalbaselineskip
-    \@plus0.25\normalbaselineskip}%
-  \def\eql at skip@short at below{0.0\normalbaselineskip
-    \@plus0.25\normalbaselineskip}%
-  \def\eql at skip@med at above{0.4\normalbaselineskip
-    \@plus0.2\normalbaselineskip\@minus0.2\normalbaselineskip}%
-  \let\eql at skip@med at below\eql at skip@med at above
-  \def\eql at skip@cont at above{\z at skip}%
-  \def\eql at skip@cont at below{\eql at skip@long at below}%
-  \def\eql at skip@par at above{\eql at skip@long at above}%
-  \def\eql at skip@par at below{\eql at skip@long at below}%
-  \def\eql at skip@top at above{\z at skip}%
-  \def\eql at skip@top at below{\z at skip}%
-  \def\eql at skip@tag at above{\z at skip}%
-  \def\eql at skip@tag at below{\z at skip}%
-  \def\eql at skip@partag at above{\z at skip}%
-  \def\eql at skip@partag at below{\z at skip}%
-  \def\eql at skip@medtag at above{\z at skip}%
-  \def\eql at skip@medtag at below{\z at skip}%
-}
-\eql at defaults@eqnlines
-\eql at define@key{equationsbox}{gathered,gather,ga,lines,lined,ln,\string~}[]{%
-  \eql at mode@lined}
+\eql at define@key{equationsbox}{gathered,gather,ga,lines,ln,\string~}[]{%
+  \eql at mode@stacked}
 \eql at define@key{equationsbox}{aligned,align,al,columns,col,@}[]{%
   \eql at mode@aligned}
 \eql at define@key{equationsbox}{top,t}[]{\let\eql at box@box\vtop}
@@ -3723,13 +3649,13 @@
 \eql at define@key{equationsbox}{bottom,b}[]{\let\eql at box@box\vbox}
 \eql at define@key{equationsbox}{colsep}{\def\eql at box@colsep{#1}}
 \eql at define@key{equations}{equation,eq,single,1}[]{\eql at mode@equation}
-\eql at define@key{equations}{gathered,gather,ga,lines,lined,ln,\string~}[]{%
+\eql at define@key{equations}{gathered,gather,ga,lines,ln,\string~}[]{%
   \eql at mode@lines}
 \eql at define@key{equations}{aligned,align,al,columns,col,@}[]{%
-  \eql at mode@align}
+  \eql at mode@columns}
 \eql at define@key{equations}{native}[true]{%
   \eql at decide@bool{#3}{#2}{#1}\eql at single@native%
-  \ifdefined\eql at single@native\let\eql at flushleft\eql at false\fi}
+  \ifdefined\eql at single@native\let\eql at layoutleft\eql at false\fi}
 \eql at define@key{setup}{native}[true]{%
   \eql at decide@bool{#3}{#2}{#1}\eql at single@native}
 \eql at define@key{setup}{scanequation}[true]{%
@@ -3739,7 +3665,7 @@
 \eql at define@key{setup}{angopt}[]{%
   \def\eql at equations@ang at opt{align,#1}}
 \def\eql at keycat{equations,equationsbox,setup}
-\eql at define@key\eql at keycat{spread}[\jot]{\def\eql at spread{#1}}
+\eql at define@key\eql at keycat{spread}{\def\eql at spread@val{#1}}
 \eql at define@key\eql at keycat{strut}[true]{\eql at decide@if{#3}{#2}{#1}%
   {\let\eql at strut@field\eql at strut}{\let\eql at strut@field\relax}}
 \eql at define@key\eql at keycat{struttag}[true]{\eql at decide@if{#3}{#2}{#1}%
@@ -3879,42 +3805,36 @@
 \eql at define@key{setup}{abovecontskip}{%
   \def\eql at skip@cont at above{#1}}
 \eql at define@key{setup}{abovecontskip*}[]{%
-  \def\eql at skip@cont at above{\eql at spread-\eql at skip@long at below}}
+  \def\eql at skip@cont at above{\eql at spread@val-\eql at skip@long at below}}
 \eql at define@key{setup}{belowcontskip}{%
   \def\eql at skip@cont at below{#1}}
 \eql at define@key{setup}{shortmode}{%
   \eql at decide@select{#3}{#2}{#1}{%
-    {{off,never,no}{\eql at skip@mode at short@\z@}},%
-    {{above,neverbelow,notbelow,belowoff}{\eql at skip@mode at short@\@ne}},%
-    {{belowone,belowsingle}{\eql at skip@mode at short@\tw@}},%
-    {{belowall,always,on}{\eql at skip@mode at short@\thr@@}}}}
+    {{off,never,no}{\def\eql at skip@mode at short{0}}},%
+    {{above,neverbelow,notbelow,belowoff}{\def\eql at skip@mode at short{1}}},%
+    {{belowone,belowsingle}{\def\eql at skip@mode at short{2}}},%
+    {{belowall,always,on}{\def\eql at skip@mode at short{3}}}}}
+\eql at define@key{setup}{abovecontmode}{%
+  \eql at decide@situation{#3}{#2}{#1}\eql at skip@mode at cont@above}
 \eql at define@key{setup}{belowcontmode}{%
-  \eql at decide@select{#3}{#2}{#1}{%
-    {{long}{\eql at skip@mode at cont@\z@}},%
-    {{short}{\eql at skip@mode at cont@\@ne}},%
-    {{cont}{\eql at skip@mode at cont@\tw@}}}}
+  \eql at decide@situation{#3}{#2}{#1}\eql at skip@mode at cont@below}
+\eql at define@key{setup}{aboveparmode}{%
+  \eql at decide@situation{#3}{#2}{#1}\eql at skip@mode at par@above}
 \eql at define@key{setup}{belowparmode}{%
-  \eql at decide@select{#3}{#2}{#1}{%
-    {{long}{\eql at skip@mode at par@\z@}},%
-    {{short}{\eql at skip@mode at par@\@ne}},%
-    {{cont}{\eql at skip@mode at par@\tw@}},%
-    {{par}{\eql at skip@mode at par@\thr@@}}}}
+  \eql at decide@situation{#3}{#2}{#1}\eql at skip@mode at par@below}
+\eql at define@key{setup}{abovetopmode}{%
+  \eql at decide@situation{#3}{#2}{#1}\eql at skip@mode at top@above}
 \eql at define@key{setup}{belowtopmode}{%
-  \eql at decide@select{#3}{#2}{#1}{%
-    {{long}{\eql at skip@mode at top@\z@}},%
-    {{short}{\eql at skip@mode at top@\@ne}},%
-    {{cont}{\eql at skip@mode at top@\tw@}},%
-    {{par}{\eql at skip@mode at top@\thre@@}},%
-    {{top}{\eql at skip@mode at top@4\relax}}}}
+  \eql at decide@situation{#3}{#2}{#1}\eql at skip@mode at top@below}
 \def\eql at keycat{equations,subequations}
 \eql at define@key\eql at keycat{label}{\eql at blocklabel@set{#1}}
 \eql at define@key\eql at keycat{tag}{\eql at blocktag@set{#1}}
 \eql at define@key\eql at keycat{tag*}{\eql at blocktag@setstar{#1}}
 \def\eql at keycat{equations,setup}
-\eql at define@key\eql at keycat{tagmargin}{\def\eql at tagmargin@val{#1}}
+\eql at define@key\eql at keycat{tagmargin}[]{\def\eql at tagmargin@val{#1}
+  \ifx\eql at tagmargin@val\@empty\let\eql at tagmargin@val\@undefined\fi}
 \eql at define@key\eql at keycat{tagmargin*}{%
   \settowidth\dimen@{#1}\edef\eql at tagmargin@val{\the\dimen@}}
-\eql at define@key\eql at keycat{tagmargincalc}[]{\let\eql at tagmargin@val\@undefined}
 \eql at define@key\eql at keycat{tagmarginratio}{%
   \eql at tagmargin@ratio@\dimexpr#1pt\relax}
 \eql at define@key\eql at keycat{tagmarginthreshold}{%
@@ -3923,20 +3843,26 @@
 \eql at define@key\eql at keycat{mintagwidth}{%
   \settowidth\dimen@{#1}\edef\eql at tagsepmin@val{\the\dimen@}}
 \eql at define@key\eql at keycat{mintagwidth*}{\settowidth\eql at tagwidthmin@{#1}}
-\eql at define@key{setup}{taglayout}{\eql at tag@setbox{#1}}
-\eql at define@key{setup}{taglayout*}{\eql at tag@setbox@{#1}}
+\eql at define@key{setup}{tagbox,taglayout}{\eql at tag@setbox{#1}}
+\eql at define@key{setup}{tagbox,taglayout*}{\eql at tag@setbox@{#1}}
 \eql at define@key{setup}{tagform}{\eql at tag@setform#1}
 \eql at define@key{setup}{tagform*}{\eql at tag@setform@{#1}}
-\eql at define@key{setup}{subeqtemplate}{\def\eql at subequations@template{#1}}
+\eql at define@key{setup}{subeqtemplate}{%
+  \def\eql at subequations@template####1####2{#1}%
+  \expandafter\def\expandafter\eql at subequations@template\expandafter{%
+    \eql at subequations@template\theparentequation{equation}}%
+}
 \eql at define@key{setup}{autolabel}[true]{%
-  \eql at decide@bool{#3}{#2}{#1}\eql at autolabel}
+  \eql at decide@bool{#3}{#2}{#1}\eql at numbering@autolabel}
 \eql at define@key{setup}{autotag}[true]{%
-  \eql at decide@bool{#3}{#2}{#1}\eql at autotag}
+  \eql at decide@bool{#3}{#2}{#1}\eql at numbering@autotag}
 \def\eql at keycat{equations,setup}
 \eql at define@key\eql at keycat{numberline,numline,n}[all]{%
   \eql at numbering@set{##1}}
-\eql at define@key\eql at keycat{nonumber,nn,*}[]{\let\eql at numbering@active\eql at false}
-\eql at define@key\eql at keycat{donumber,dn,!}[]{\let\eql at numbering@active\eql at true}
+\eql at define@key\eql at keycat{nonumber,nn,*}[]{%
+  \let\eql at numbering@active\eql at false}
+\eql at define@key\eql at keycat{donumber,dn,!}[]{%
+  \let\eql at numbering@active\eql at true}
 \eql at define@key\eql at keycat{number,num}[true]{%
   \eql at decide@bool{#3}{#2}{#1}\eql at numbering@active}
 \eql at define@key\eql at keycat{tagsleft,leqno}[]{\let\eql at tagsleft\eql at true}
@@ -3947,19 +3873,19 @@
     {{left,l}{\let\eql at tagsleft\eql at true}}}}
 \def\eql at keycat{equations,setup}
 \eql at define@key\eql at keycat{layout}{\eql at decide@select{#3}{#2}{#1}{%
-  {{center,c}{\let\eql at flushleft\eql at false}},%
-  {{left,l}{\let\eql at flushleft\eql at true}}}}
-\eql at define@key\eql at keycat{center}[]{\let\eql at flushleft\eql at false}
-\eql at define@key\eql at keycat{flushleft,left}[]{\let\eql at flushleft\eql at true}
-\eql at define@key\eql at keycat{leftmargin}{\def\eql at flushleftmargin@val{#1}}
+  {{center,c}{\let\eql at layoutleft\eql at false}},%
+  {{left,l}{\let\eql at layoutleft\eql at true}}}}
+\eql at define@key\eql at keycat{center}[]{\let\eql at layoutleft\eql at false}
+\eql at define@key\eql at keycat{flushleft,left}[]{\let\eql at layoutleft\eql at true}
+\eql at define@key\eql at keycat{leftmargin}{\def\eql at layoutleftmargin@val{#1}}
 \eql at define@key\eql at keycat{leftmargin*}{%
-  \settowidth\dimen@{#1}\edef\eql at flushleftmargin@val{\the\dimen@}}
+  \settowidth\dimen@{#1}\edef\eql at layoutleftmargin@val{\the\dimen@}}
 \eql at define@key\eql at keycat{minleftmargin}{%
-  \eql at flushleftmarginmin@\glueexpr#1\relax}
+  \eql at layoutleftmarginmin@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{maxleftmargin}{%
-  \eql at flushleftmarginmax@\glueexpr#1\relax}
+  \eql at layoutleftmarginmax@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{maxleftmargin*}[]{%
-  \eql at flushleftmarginmax@.5\maxdimen}
+  \eql at layoutleftmarginmax@.5\maxdimen}
 \def\eql at keycat{equations,setup}
 \eql at define@key\eql at keycat{marginbadness}{\eql at marginbadness@#1\relax}
 \eql at define@key\eql at keycat{maxbadness}{\eql at maxbadness@#1\relax}
@@ -3967,7 +3893,7 @@
 \eql at define@key\eql at keycat{maxcolsep}{\def\eql at colsepmax@val{#1}}
 \eql at define@key\eql at keycat{maxcolsep*}[]{\def\eql at colsepmax@val{.5\maxdimen}}
 \eql at define@key\eql at keycat{margins}[true]{%
-  \eql at decide@bool{#3}{#2}{#1}\eql at align@margins}
+  \eql at decide@bool{#3}{#2}{#1}\eql at columns@margins}
 \def\eql at keycat{equationsbox,setup}
 \eql at define@key\eql at keycat{margin}{%
   \def\eql at box@marginleft{#1}\def\eql at box@marginright{#1}}
@@ -3991,7 +3917,7 @@
 \def\eql at keycat{equations,equationsbox,setup}
 \eql at define@key\eql at keycat{classout}{\eql at class@innerleft at set{#1}}
 \eql at define@key\eql at keycat{classin}{\eql at class@innerright at set{#1}}
-\eql at define@key\eql at keycat{classin*}{\eql at class@innerlead at set{#1}}
+\eql at define@key\eql at keycat{classlead,classin*}{\eql at class@innerlead at set{#1}}
 \eql at define@key\eql at keycat{ampeq}[]{\eql at class@ampeq}
 \eql at define@key\eql at keycat{eqamp}[]{\eql at class@eqamp}
 \eql at define@key\eql at keycat{class}{\eql at decide@select{#3}{#2}{#1}{%
@@ -4043,6 +3969,80 @@
 \eql at define@key{setup}{eqref}[true]{%
   \eql at error@packageoption{#2}%
   \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at eqref}
+\def\eql at defaults@classic{%
+  \eqnlinesset{mintagsep={.5\fontdimen6\textfont2\relax}}%
+  \eqnlinesset{maxcolsep*}%
+  \eqnlinesset{spread={\jot}}%
+  \eqnlinesset{tagmargin}%
+  \eqnlinesset{tagmarginratio=1}%
+  \eqnlinesset{tagmarginthreshold=0.5}%
+  \eqnlinesset{leftmargin={\leftmargini}}%
+  \eqnlinesset{displayheight*}%
+  \eqnlinesset{displaydepth*}%
+  \eqnlinesset{shortmode=belowsingle}%
+  \eqnlinesset{abovecontmode=short}%
+  \eqnlinesset{belowcontmode=short}%
+  \eqnlinesset{aboveparmode=long}%
+  \eqnlinesset{belowparmode=long}%
+  \eqnlinesset{abovetopmode=long}%
+  \eqnlinesset{belowtopmode=long}%
+  \eqnlinesset{abovelongskip={\abovedisplayskip}}%
+  \eqnlinesset{belowlongskip={\belowdisplayskip}}%
+  \eqnlinesset{aboveshortskip={\abovedisplayshortskip}}%
+  \eqnlinesset{belowshortskip={\belowdisplayshortskip}}%
+  \eqnlinesset{abovemedskip={.5\abovedisplayskip}}%
+  \eqnlinesset{belowmedskip={.5\belowdisplayskip}}%
+  \eqnlinesset{abovecontskip=0pt}%
+  \eqnlinesset{belowcontskip=0pt}%
+  \eqnlinesset{aboveparskip=0pt}%
+  \eqnlinesset{belowparskip=0pt}%
+  \eqnlinesset{abovetopskip=0pt}%
+  \eqnlinesset{belowtopskip=0pt}%
+  \eqnlinesset{abovetagskip=0pt}%
+  \eqnlinesset{belowtagskip=0pt}%
+  \eqnlinesset{abovemedtagskip=0pt}%
+  \eqnlinesset{belowmedtagskip=0pt}%
+  \eqnlinesset{abovepartagskip=0pt}%
+  \eqnlinesset{belowpartagskip=0pt}%
+}
+\def\eql at defaults@eqnlines{%
+  \eqnlinesset{mintagsep=.5em}%
+  \eqnlinesset{maxcolsep=2em}%
+  \eqnlinesset{spread={0.2\normalbaselineskip}}%
+  \eqnlinesset{tagmargin}%
+  \eqnlinesset{tagmarginratio=.334}%
+  \eqnlinesset{tagmarginthreshold=0.5}%
+  \eqnlinesset{leftmargin={\leftmargini}}%
+  \eqnlinesset{displayheight}%
+  \eqnlinesset{displaydepth}%
+  \eqnlinesset{shortmode=above}%
+  \eqnlinesset{abovecontmode=noskip}%
+  \eqnlinesset{belowcontmode=long}%
+  \eqnlinesset{aboveparmode=long}%
+  \eqnlinesset{belowparmode=long}%
+  \eqnlinesset{abovetopmode=noskip}%
+  \eqnlinesset{belowtopmode=long}%
+  \eqnlinesset{longskip={0.75\normalbaselineskip
+    plus 0.25\normalbaselineskip minus 0.4\normalbaselineskip}}%
+  \eqnlinesset{aboveshortskip={0.0\normalbaselineskip
+    plus 0.25\normalbaselineskip}}%
+  \eqnlinesset{belowshortskip={0.0\normalbaselineskip
+    plus 0.25\normalbaselineskip}}%
+  \eqnlinesset{medskip={0.4\normalbaselineskip
+    plus 0.2\normalbaselineskip minus 0.2\normalbaselineskip}}%
+  \eqnlinesset{abovecontskip=0pt}%
+  \eqnlinesset{belowcontskip=0pt}%
+  \eqnlinesset{aboveparskip=0pt}%
+  \eqnlinesset{belowparskip=0pt}%
+  \eqnlinesset{abovetopskip=0pt}%
+  \eqnlinesset{belowtopskip=0pt}%
+  \eqnlinesset{abovetagskip=0pt}%
+  \eqnlinesset{belowtagskip=0pt}%
+  \eqnlinesset{abovemedtagskip=0pt}%
+  \eqnlinesset{belowmedtagskip=0pt}%
+  \eqnlinesset{abovepartagskip=0pt}%
+  \eqnlinesset{belowpartagskip=0pt}%
+}
 \newenvironment{eql at gathered}
   {\eqnaddopt{lines}\equationsbox}{\endequationsbox}
 \newenvironment{eql at multlined}
@@ -4059,7 +4059,7 @@
 \newenvironment{eql at align}
   {\eqnaddopt{align}\equations}{\endequations}
 \newenvironment{eql at flalign}
-  {\eqnaddopt{align,margins=false}\equations}{\endequations}
+  {\eqnaddopt{align,margins=false,maxcolsep*}\equations}{\endequations}
 \newenvironment{eql at equation*}
   {\eqnaddopt{nonumber}\eql at equation}{\endequations}
 \newenvironment{eql at gather*}
@@ -4304,11 +4304,6 @@
 \eql at define@key{provide}{sqr}[]{\eql at provide@sqr}
 \eql at define@key{provide}{ang}[]{\eql at provide@ang}
 \eql at define@key{provide}{eqref}[]{\eql at provide@cmd{eqref}{#1}}
-\eql at define@key{provide}{notag}[]{\eql at provide@cmd{notag}{#1}}
-\eql at define@key{provide}{thetag}[]{\eql at provide@cmd{thetag}{#1}}
-\eql at define@key{provide}{allowdisplaybreaks}[]{%
-  \eql at provide@cmd{allowdisplaybreaks}{#1}}
-\eql at define@key{provide}{numberwithin}[]{\eql at provide@cmd{numberwithin}{#1}}
 \eql at define@key{provide}{tagform}[]{%
   \def\tagform@##1{\maketag@@@{\eql at tag@form{#1}}}}
 \eql at define@key{provide}{maketag}[]{%
@@ -4323,6 +4318,9 @@
 \DeclareOption{leqno}{\eqnlinesset{tagsleft}}
 \DeclareOption{fleqn}{\eqnlinesset{left}}
 \DeclareOption*{\expandafter\eqnlinesset\expandafter{\CurrentOption}}
+\eql at defaults@eqnlines
+\eql at mode@columns
+\eql at mode@aligned
 \ProcessOptions
 \def\eql at error@packageoption#1{%
   \eql at error{may only use `#1' as a package option}%

Modified: trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines.sty	2025-04-03 19:50:08 UTC (rev 74838)
+++ trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines.sty	2025-04-03 19:50:19 UTC (rev 74839)
@@ -21,7 +21,7 @@
 %% version 2008 or later.
 %% 
 \NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesPackage{eqnlines}[2025/03/27 v0.6.1 Single- and multi-line equations]
+\ProvidesPackage{eqnlines}[2025/04/03 v0.7 Single- and multi-line equations]
 \let\eql at false\@undefined
 \let\eql at true\@empty
 \ifdefined\dollardollar at begin
@@ -175,13 +175,13 @@
   \def\eql at tagging@end{}
 \fi
 \let\eql at tagsleft\eql at false
-\let\eql at flushleft\eql at false
-\newdimen\eql at flushleftmargin@
-\newdimen\eql at flushleftmarginmin@
-\newdimen\eql at flushleftmarginmax@
-\def\eql at flushleftmargin@val{\leftmargini}
-\eql at flushleftmarginmin@\z@
-\eql at flushleftmarginmax@.5\maxdimen
+\let\eql at layoutleft\eql at false
+\newdimen\eql at layoutleftmargin@
+\newdimen\eql at layoutleftmarginmin@
+\newdimen\eql at layoutleftmarginmax@
+\def\eql at layoutleftmargin@val{\leftmargini}
+\eql at layoutleftmarginmin@\z@
+\eql at layoutleftmarginmax@.5\maxdimen
 \newdimen\eql at tagmargin@
 \let\eql at tagmargin@val\@undefined
 \newdimen\eql at tagmargin@ratio@
@@ -197,20 +197,19 @@
 \def\eql at box@marginleft{\z at skip}
 \def\eql at box@marginright{\z at skip}
 \def\eql at box@colsep{2em}
-\def\eql at spread{\jot}
-\newdimen\eql at spread@amount@
+\def\eql at spread@val{\jot}
+\newdimen\eql at spread@
 \newdimen\eql at tagfuzz@
 \eql at tagfuzz@16sp\relax
 \def\eql at display@height{\ht\eql at strutbox@}
 \def\eql at display@depth{\dp\eql at strutbox@}
-\newcount\eql at skip@mode at short@
-\eql at skip@mode at short@\tw@
-\newcount\eql at skip@mode at cont@
-\eql at skip@mode at cont@\z@
-\newcount\eql at skip@mode at par@
-\eql at skip@mode at par@\z@
-\newcount\eql at skip@mode at top@
-\eql at skip@mode at top@\z@
+\def\eql at skip@mode at short{2}
+\def\eql at skip@mode at cont@above{2}
+\def\eql at skip@mode at cont@below{0}
+\def\eql at skip@mode at par@above{3}
+\def\eql at skip@mode at par@below{0}
+\def\eql at skip@mode at top@above{4}
+\def\eql at skip@mode at top@below{0}
 \newcount\eql at skip@mode at leave@
 \let\eql at skip@force at leave\@undefined
 \newcount\eql at skip@mode at above@
@@ -246,7 +245,7 @@
 \def\eql at tagsepmin@val{.5\fontdimen6\textfont\tw@}
 \def\eql at equations@sqr at opt{equation,nonumber}
 \def\eql at equations@ang at opt{align,nonumber}
-\let\eql at align@margins\eql at true
+\let\eql at columns@margins\eql at true
 \newbox\eql at fieldbox@
 \newbox\eql at tagbox@
 \newdimen\eql at fieldwidth@
@@ -264,7 +263,7 @@
 \newcount\eql at column@
 \newcount\eql at totalcolumns@
 \newdimen\eql at colsep@
-\newcount\eql at align@inter@
+\newcount\eql at columns@inter@
 \newdimen\eql at display@firstavail@
 \def\eql at display@firstavail at set#1{%
   \ifnum\eql at row@=\@ne
@@ -357,6 +356,7 @@
     \let\eql at punct@col\@empty
   \fi
 }
+\let\eqnpunctapply\eql at punct@apply at block
 \def\eql at class@innerright at sel@{%
   \ifdim\eql at fieldwidth@=\z@
     \eql at class@innerlead
@@ -385,206 +385,6 @@
   \eql at class@innerlead at set{{}}%
 }
 \eql at class@ampeq
-\protected\def\eql at box@cr{%
-  \eql at ampprotect\eql at testopt@tight\eql at box@cr@\z@
-}
-\def\eql at box@cr@[#1]{%
-  \eql at punct@apply at line
-  \eql at hook@lineout
-  \eql at box@lastfield
-  \cr
-  \noalign{%
-    \vskip\glueexpr#1\relax
-  }%
-}
-\let\eql at box@box\vcenter
-\def\eql at box@lastfield at odd{%
-  &\omit
-  \kern-\wd\eql at fieldbox@
-  \box\eql at fieldbox@
-  \hfil
-  &\omit\kern-\eql at colsep@
-}%
-\def\eql at box@lastfield at even{&\omit\kern-\eql at colsep@}
-\def\eql at box@lastfield at lines{&\omit\kern-2\eql at colsep@}
-\def\eql at box@open at align{%
-  \let\eql at box@lastfield\@empty
-  \eql at halign@init{%
-  }%
-  \tabskip\z at skip
-  \halign\bgroup
-    &%
-      \let\eql at box@lastfield\eql at box@lastfield at odd
-      \global\setbox\eql at fieldbox@\hbox{%
-        \eql at strut@field
-        \@lign
-        $\m at th\displaystyle
-          \eql at hook@colin
-          ##%
-          \eql at class@innerleft
-          \eql at hook@innerleft
-          \eql at tagging@mathsave
-        $%
-        \eql at tagging@mathaddlast
-      }%
-      \hfil
-      \kern\wd\eql at fieldbox@
-      \tabskip\z at skip
-    &%
-      \eql at fieldwidth@\wd\eql at fieldbox@
-      \kern-\eql at fieldwidth@
-      \box\eql at fieldbox@
-      \let\eql at box@lastfield\eql at box@lastfield at even
-      \llap{\unhbox\eql at fieldbox@}%
-      \hbox{%
-        \eql at strut@field
-        \@lign
-        $\m at th\displaystyle
-          \eql at hook@innerright
-          \eql at class@innerright at sel
-          ##%
-          \eql at punct@apply at col
-          \eql at hook@colout
-          \eql at tagging@mathsave
-        $%
-        \eql at tagging@mathaddlast
-      }%
-      \hfil
-      \tabskip\eql at colsep@\relax
-    \crcr
-    \noalign{%
-      \eql at hook@blockbefore
-    }%
-    \eql at hook@blockin
-}
-\def\eql at box@open at lines{%
-  \let\shoveleft\eql at adjust@shoveleft
-  \let\shovecenter\eql at adjust@shovecenter
-  \let\shoveright\eql at adjust@shoveright
-  \let\eql at box@lastfield\eql at box@lastfield at lines
-  \eql at halign@init{%
-    \global\advance\eql at row@\@ne
-  }%
-  \tabskip\z at skip
-  \halign\bgroup
-    &%
-      \eql at shape@pos@\m at ne
-      \setbox\eql at fieldbox@\hbox{%
-        \eql at strut@field
-        \@lign
-        $\m at th\displaystyle
-          \eql at hook@colin
-          ##%
-          \eql at punct@apply at col
-          \eql at hook@colout
-          \eql at tagging@mathsave
-        $%
-        \eql at tagging@mathaddlast
-      }%
-      \ifnum\eql at shape@pos@=\m at ne
-        \eql at shape@eval
-      \fi
-      \ifcase\eql at shape@pos@
-        \kern\eql at shape@amount@
-        \box\eql at fieldbox@
-        \skip@\@flushglue
-        \advance\skip@\eql at paddingleft@\relax
-        \advance\skip@\eql at paddingright@\relax
-        \advance\skip at -\eql at shape@amount@\relax
-        \hskip\skip@
-        \eql at tagging@alignleft
-      \or
-        \skip@\@flushglue
-        \advance\skip@\eql at paddingleft@\relax
-        \hskip\skip@
-        \box\eql at fieldbox@
-        \skip@\@flushglue
-        \advance\skip@\eql at paddingright@\relax
-        \hskip\skip@
-        \eql at tagging@aligncenter
-      \or
-        \skip@\@flushglue
-        \advance\skip@\eql at paddingleft@\relax
-        \advance\skip@\eql at paddingright@\relax
-        \hskip\skip@
-        \box\eql at fieldbox@
-        \eql at tagging@alignright
-      \fi
-      \tabskip\eql at colsep@\relax
-    \crcr
-    \noalign{%
-      \eql at hook@blockbefore
-    }%
-    \eql at hook@blockin
-}
-\def\eql at box@close{%
-    \ifvmode\else
-      \global\eql at totalrows@\eql at row@
-      \eql at punct@apply at block
-      \eql at box@cr@[\z at skip]%
-    \fi
-    \crcr
-    \noalign{%
-      \eql at hook@blockafter
-    }%
-    \eql at tagging@tablesaveinner
-  \egroup
-}
-\def\eql at box@start{%
-  \relax
-  \ifmmode
-    \let\eql at box@endmath\@empty
-  \else
-    $\let\eql at box@endmath=$%
-  \fi
-  \eql at nextopt@process{equationsbox}%
-  \let\eql at punct@block\eql at punct@main
-  \let\eql at punct@main\relax
-  \eql at colsep@\glueexpr\eql at box@colsep\relax
-  \eql at paddingleft@\glueexpr\eql at paddingleft@val\relax
-  \eql at paddingright@\glueexpr\eql at paddingright@val\relax
-  \eql at indent@\glueexpr\eql at indent@val\relax
-  \eql at stack@save at boxed
-  \let\eql at flushleft\eql at false
-  \eql at row@\z@
-  \eql at totalrows@\@M
-  \eql at shape@sel
-  \hskip\glueexpr\eql at box@marginleft\relax
-  \eql at box@box\bgroup
-    \eql at display@leave
-    \let\\\eql at box@cr
-    \ifdefined\eql at box@mode at lines
-      \expandafter\eql at box@open at lines
-    \else
-      \expandafter\eql at box@open at align
-    \fi
-}
-\newcommand{\eql at box@end}{%
-    \eql at box@close
-  \egroup
-  \eql at tagging@tableaddinner
-  \hskip\glueexpr\eql at box@marginright\relax
-  \eql at stack@restore
-  \eql at box@endmath
-}
-\newenvironment{equationsbox}{%
-  \eql at ampprotect\eql at box@testall\eql at box@start
-}{%
-  \eql at box@end
-}
-\def\eql at box@testall{\eql at box@testtilde}
-\def\eql at box@testtilde#1{%
-  \eql at ifnextgobble@tight~%
-    {\eqnaddopt{lines}\eql at box@testopt{#1}}%
-    {\eql at box@testopt{#1}}}
-\def\eql at box@testopt#1{%
-  \eql at ifnextchar@tight[%]
-    {\eql at box@addopt{#1}}%
-    {#1}}
-\def\eql at box@addopt#1[#2]{\eqnaddopt{#2}#1}
-\def\eql at mode@aligned{\let\eql at box@mode at lines\eql at false}
-\def\eql at mode@lined{\let\eql at box@mode at lines\eql at true}
-\eql at mode@aligned
 \def\eql at tag@setbox@#1{%
   \def\eql at tag@box##1{#1}%
 }
@@ -600,6 +400,10 @@
 \eql at tag@setbox{#1}
 \eql at tag@setform({#1})
 \def\eql at tag@boxedform#1{\eql at tag@box{\eql at tag@form{#1}}}
+\DeclareRobustCommand{\tagform}{\eql at tag@form}
+\DeclareRobustCommand{\tagbox}{\eql at tag@box}
+\DeclareRobustCommand{\tagboxed}{\eql at tag@boxedform}
+\DeclareRobustCommand{\eql at eqref}[1]{\textup{\eql at tag@boxedform{\ref{#1}}}}
 \newdimen\eql at raisetag@amount@
 \def\eql at raisetag@default{%
   \eql at warning{\string\raisetag\space not allowed here}
@@ -606,7 +410,8 @@
   \@gobble
 }
 \eql at amsmath@let\raisetag\eql at raisetag@default
-\def\eql at raisetag#1{\global\eql at raisetag@amount@\glueexpr#1\relax}%
+\def\eql at raisetag#1{\global\eql at raisetag@amount@\glueexpr#1\relax}
+\let\eql at raisetag@gobble\@gobble
 \let\eql at SK@loaded\eql at false
 \let\eql at SK@label\@gobble
 \let\eql at SK@clearlabel\@empty
@@ -791,15 +596,15 @@
   \fi
   \advance\eql at tagwidth@\eql at tagsepmin@
 }
-\def\eql at tagbox@print at right{%
+\def\eql at tagbox@print at tagsright{%
   \kern-\wd\eql at tagbox@
   \box\eql at tagbox@
 }
-\def\eql at tagbox@print at left{%
+\def\eql at tagbox@print at tagsleft{%
   \wd\eql at tagbox@\z@
   \box\eql at tagbox@
 }
-\def\eql at tagbox@print at right@raise{%
+\def\eql at tagbox@print at tagsright@raise{%
   \ifnum\eql at row@=\eql at totalrows@
     \global\advance\eql at raisetag@firstlast@\tw@
   \fi
@@ -812,7 +617,7 @@
     \box\eql at tagbox@
   }}%
 }
-\def\eql at tagbox@print at left@raise{%
+\def\eql at tagbox@print at tagsleft@raise{%
   \ifnum\eql at row@=\@ne
     \global\advance\eql at raisetag@firstlast@\@ne
   \fi
@@ -929,15 +734,19 @@
   \let\eql at numbering@active\eql at false
 }
 \def\numberhere{%
-  \ifmeasuring@
-    \ifnum\eql at numbering@target@<\z@\else
+  \ifnum\eql at numbering@target@<\z@
+    \donumber
+  \else
+    \ifmeasuring@
       \global\eql at numbering@target@\eql at row@
     \fi
   \fi
 }
 \def\numbernext{%
-  \ifmeasuring@
-    \ifnum\eql at numbering@target@<\z@\else
+  \ifnum\eql at numbering@target@<\z@
+    \nonumber
+  \else
+    \ifmeasuring@
       \ifnum\eql at numbering@target@=\eql at row@
         \global\advance\eql at numbering@target@\@ne
       \fi
@@ -948,6 +757,15 @@
 \let\eql at numbering@autotag\eql at true
 \let\eql at numbering@blocklabel\@undefined
 \let\eql at numbering@blocktag\@undefined
+\let\eql at numbering@warn\eql at true
+\def\eql at numbering@autoenable{%
+  \global\@eqnswtrue
+  \ifx\eql at numbering@mode\eql at numbering@tab at here
+    \ifnum\eql at numbering@target@=\z@
+      \numberhere
+    \fi
+  \fi
+}
 \eql at amsmath@after{
   \let\eql at print@eqnum at default\print at eqnum
   \let\eql at incr@eqnum at default\incr at eqnum
@@ -963,36 +781,29 @@
     \fi
   \fi
 }
-\def\eql at label@warn{%
+\def\eql at label{%
   \ifdefined\eql at numbering@autolabel
-    \global\@eqnswtrue
+    \eql at numbering@autoenable
   \fi
-  \ifdefined\eql at nextlabel
-    \eql at warn@label at multiple\eql at nextlabel
+  \ifdefined\eql at numbering@warn
+    \ifdefined\eql at nextlabel
+      \eql at warn@label at multiple\eql at nextlabel
+    \fi
   \fi
   \global\edef\eql at nextlabel
 }
-\def\eql at tag@warn{%
+\let\eql at label@gobble\@gobble
+\def\eql at tag{%
   \ifdefined\eql at numbering@autotag
-    \global\@eqnswtrue
+    \eql at numbering@autoenable
   \fi
-  \ifdefined\eql at nexttag
-    \eql at warn@tag at multiple
+  \ifdefined\eql at numbering@warn
+    \ifdefined\eql at nexttag
+      \eql at warn@tag at multiple
+    \fi
   \fi
   \eql at tag@makenext
 }
-\def\eql at label@nowarn{%
-  \ifdefined\eql at numbering@autolabel
-    \global\@eqnswtrue
-  \fi
-  \global\edef\eql at nextlabel
-}
-\def\eql at tag@nowarn{%
-  \ifdefined\eql at numbering@autotag
-    \global\@eqnswtrue
-  \fi
-  \eql at tag@makenext
-}
 \def\eql at blocklabel@set#1{%
   \ifdefined\eql at blocklabel
     \eql at warn@label at multiple\eql at blocklabel
@@ -1012,8 +823,9 @@
   \def\eql at blocktag{*{#1}}%
 }
 \def\eql at numbering@single at init{%
-  \let\label\eql at label@warn
-  \let\tag\eql at tag@warn
+  \let\eql at numbering@warn\eql at true
+  \let\label\eql at label
+  \let\tag\eql at tag
   \let\raisetag\eql at raisetag
   \eql at numbering@target@\m at ne
   \let\eql at nextlabel\eql at blocklabel
@@ -1036,8 +848,9 @@
   \global\eql at raisetag@amount@\z@
 }
 \def\eql at numbering@measure at init{%
-  \let\label\eql at label@warn
-  \let\tag\eql at tag@warn
+  \let\eql at numbering@warn\eql at true
+  \let\label\eql at label
+  \let\tag\eql at tag
   \let\raisetag\eql at raisetag
   \global\let\eql at nextlabel\eql at blocklabel
   \ifdefined\eql at blocktag
@@ -1084,8 +897,9 @@
 }
 \def\eql at numbering@print at init{%
   \ifnum\eql at numbering@target@<\z@
-    \let\label\eql at label@nowarn
-    \let\tag\eql at tag@nowarn
+    \let\eql at numbering@warn\eql at false
+    \let\label\eql at label
+    \let\tag\eql at tag
     \let\raisetag\eql at raisetag
     \let\eql at nextlabel\eql at blocklabel
     \ifdefined\eql at blocktag
@@ -1094,9 +908,9 @@
       \let\eql at nexttag\@undefined
     \fi
   \else
-    \let\label\@gobble
+    \let\label\eql at label@gobble
     \let\tag\eql at tag@gobble
-    \let\raisetag\eql at gobble
+    \let\raisetag\eql at raisetag@gobble
   \fi
 }
 \def\eql at numbering@print at block@begin{%
@@ -1281,6 +1095,12 @@
   \let\vspace\eql at vspace
 }
 \def\eql at display@close{%
+  \ifdefined\eql at tagging@on
+    \ifdefined\dollardollar at begin\else
+      \belowdisplayskip-\belowdisplayskip
+      \belowdisplayshortskip-\belowdisplayshortskip
+    \fi
+  \fi
   \ifdim\eql at display@firstavail@<\z@
     \eql at display@firstavail@\z@
   \fi
@@ -1287,19 +1107,19 @@
   \eql at skip@mode at leave@\z@
   \ifdim\eql at halign@prevdepth@=\maxdimen
     \ifdim\predisplaysize=-\maxdimen
-      \eql at skip@mode at above@\tw@
-      \eql at skip@mode at below@\eql at skip@mode at cont@
+      \eql at skip@mode at above@\eql at skip@mode at cont@above\relax
+      \eql at skip@mode at below@\eql at skip@mode at cont@below\relax
     \else
       \eql at skip@mode at above@\z@
       \eql at skip@mode at below@\z@
       \advance\eql at display@firstavail@\displayindent
       \ifdim\eql at display@firstavail@>\predisplaysize
-        \ifcase\eql at skip@mode at short@
+        \ifcase\eql at skip@mode at short\relax
         \or
           \eql at skip@mode at above@\@ne
         \or
           \eql at skip@mode at above@\@ne
-          \ifnum\eql at row@=\tw@
+          \ifnum\eql at totalrows@=\@ne
             \eql at skip@mode at below@\@ne
           \fi
         \or
@@ -1310,29 +1130,25 @@
     \fi
   \else
     \ifdim\eql at halign@prevdepth@=-\@m\p@
-      \eql at skip@mode at above@4\relax
-      \eql at skip@mode at below@\eql at skip@mode at top@
-      \eql at skip@mode at leave@\z@
-      \predisplaypenalty\z@
-      \ifcase\eql at skip@mode at top@
-      \or
-      \or
-      \or
-        \eql at skip@mode at leave@\@ne
-      \or
-        \postdisplaypenalty\z@
-        \eql at skip@mode at leave@\tw@
-      \fi
+      \eql at skip@mode at above@\eql at skip@mode at top@above\relax
+      \eql at skip@mode at below@\eql at skip@mode at top@below\relax
     \else
-      \eql at skip@mode at above@\thr@@
-      \eql at skip@mode at below@\eql at skip@mode at par@
-      \eql at skip@mode at leave@\z@
-      \predisplaypenalty\z@
-      \ifnum\eql at skip@mode at par@=\thr@@
-        \eql at skip@mode at leave@\@ne
-      \fi
+      \eql at skip@mode at above@\eql at skip@mode at par@above\relax
+      \eql at skip@mode at below@\eql at skip@mode at par@below\relax
     \fi
   \fi
+  \ifcase\eql at skip@mode at above@
+  \or\or\or
+    \predisplaypenalty\z@
+  \or
+    \predisplaypenalty\z@
+  \fi
+  \ifcase\eql at skip@mode at below@
+  \or\or\or
+    \eql at skip@mode at leave@\@ne
+  \or
+    \eql at skip@mode at leave@\tw@
+  \fi
   \ifdefined\eql at skip@force at above
     \eql at skip@mode at above@\eql at skip@force at above\relax
   \fi
@@ -1342,6 +1158,9 @@
   \ifdefined\eql at skip@force at leave
     \eql at skip@mode at leave@\eql at skip@force at leave\relax
   \fi
+  \ifnum\eql at skip@mode at leave@>\z@
+    \postdisplaypenalty\z@
+  \fi
   \ifodd\eql at raisetag@firstlast@
     \ifcase\eql at skip@mode at above@
       \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
@@ -1374,7 +1193,7 @@
     \or
       \abovedisplayskip\z at skip
     \or
-      \abovedisplayskip\glueexpr\eql at skip@medtag at above\relax
+      \abovedisplayskip\glueexpr\eql at skip@med at above\relax
     \or
       \abovedisplayskip\glueexpr\eql at skip@custom at above\relax
     \fi
@@ -1411,7 +1230,7 @@
     \or
       \belowdisplayskip\z at skip
     \or
-      \belowdisplayskip\glueexpr\eql at skip@medtag at below\relax
+      \belowdisplayskip\glueexpr\eql at skip@med at below\relax
     \or
       \belowdisplayskip\glueexpr\eql at skip@custom at below\relax
     \fi
@@ -1426,8 +1245,10 @@
   \advance\belowdisplayskip\eql at belowspace@
   \advance\belowdisplayskip\eql at vspaceskip@
   \count@\prevgraf
-  \advance\count@\eql at row@
-  \advance\count at -\tw@
+  \advance\count@\eql at totalrows@
+  \ifnum\count@>\z@
+    \advance\count@\m at ne
+  \fi
   \prevgraf\count@
   \global\eql at skip@mode at leave@\eql at skip@mode at leave@
   \ifdefined\eql at tagging@on
@@ -1468,11 +1289,11 @@
 }
 \AtBeginDocument{\eql at strut@make}
 \def\eql at halign@spread{%
-  \eql at spread@amount@\glueexpr\eql at spread\relax
-  \advance\eql at spread@amount@\normalbaselineskip
-  \advance\eql at spread@amount at -\baselineskip
-  \ifdim\eql at spread@amount@>\z@
-    \openup\eql at spread@amount@
+  \eql at spread@\glueexpr\eql at spread@val\relax
+  \advance\eql at spread@\normalbaselineskip
+  \advance\eql at spread@-\baselineskip
+  \ifdim\eql at spread@>\z@
+    \openup\eql at spread@
     \ifdefined\spread at equation
       \let\spread at equation\@empty
     \fi
@@ -1509,11 +1330,11 @@
       \ifdim\skip@<\lineskiplimit
         \skip@\lineskip
       \fi
-      \advance\skip at -\eql at spread@amount@\relax
+      \advance\skip at -\eql at spread@\relax
       \vskip\skip@
       \nointerlineskip
     \else
-      \vskip-\eql at spread@amount@\relax
+      \vskip-\eql at spread@\relax
     \fi
   \fi
 }
@@ -1641,15 +1462,15 @@
     \let\eql at shape@mode\eql at shape@tab at default
   \fi
 }
-\def\eql at shape@center at left{\eql at shape@pos@\z@\eql at shape@amount@\z@}
-\def\eql at shape@center at center{\eql at shape@pos@\@ne\eql at shape@amount@\z@}
-\def\eql at shape@center at right{\eql at shape@pos@\tw@\eql at shape@amount@\z@}
-\let\eql at shape@center at default\eql at shape@center at center
-\def\eql at shape@left at left{\eql at shape@pos@\z@\eql at shape@amount@\z@}
-\def\eql at shape@left at center{\eql at shape@pos@\@ne\eql at shape@amount@\z@}
-\def\eql at shape@left at right{\eql at shape@pos@\tw@\eql at shape@amount@\z@}
-\let\eql at shape@left at default\eql at shape@left at left
-\def\eql at shape@center at first{%
+\def\eql at shape@layoutcenter at left{\eql at shape@pos@\z@\eql at shape@amount@\z@}
+\def\eql at shape@layoutcenter at center{\eql at shape@pos@\@ne\eql at shape@amount@\z@}
+\def\eql at shape@layoutcenter at right{\eql at shape@pos@\tw@\eql at shape@amount@\z@}
+\let\eql at shape@layoutcenter at default\eql at shape@layoutcenter at center
+\def\eql at shape@layoutleft at left{\eql at shape@pos@\z@\eql at shape@amount@\z@}
+\def\eql at shape@layoutleft at center{\eql at shape@pos@\@ne\eql at shape@amount@\z@}
+\def\eql at shape@layoutleft at right{\eql at shape@pos@\tw@\eql at shape@amount@\z@}
+\let\eql at shape@layoutleft at default\eql at shape@layoutleft at left
+\def\eql at shape@layoutcenter at first{%
   \eql at shape@pos@\z@
   \eql at shape@amount@\z@
   \ifnum\eql at totalrows@>\@ne
@@ -1658,7 +1479,7 @@
     \fi
   \fi
 }
-\def\eql at shape@left at first{%
+\def\eql at shape@layoutleft at first{%
   \eql at shape@pos@\z@
   \eql at shape@amount@\z@
   \ifnum\eql at totalrows@>\@ne
@@ -1667,7 +1488,7 @@
     \fi
   \fi
 }
-\def\eql at shape@center at hanging{%
+\def\eql at shape@layoutcenter at hanging{%
   \eql at shape@pos@\z@
   \eql at shape@amount@\eql at indent@
   \ifnum\eql at totalrows@>\@ne
@@ -1676,7 +1497,7 @@
     \fi
   \fi
 }
-\def\eql at shape@left at hanging{%
+\def\eql at shape@layoutleft at hanging{%
   \eql at shape@pos@\z@
   \eql at shape@amount@\z@
   \ifnum\eql at totalrows@>\@ne
@@ -1685,7 +1506,7 @@
     \fi
   \fi
 }
-\def\eql at shape@center at steps{%
+\def\eql at shape@layoutcenter at steps{%
   \eql at shape@amount@\z@
   \eql at shape@pos@\@ne
   \ifnum\eql at totalrows@>\@ne
@@ -1697,7 +1518,7 @@
     \fi
   \fi
 }
-\def\eql at shape@left at steps{%
+\def\eql at shape@layoutleft at steps{%
   \eql at shape@pos@\z@
   \eql at shape@amount@\z@
   \ifnum\eql at totalrows@>\@ne
@@ -1713,23 +1534,23 @@
 \def\eql at shape@sel{%
   \expandafter\let\expandafter\eql at shape@eval
     \csname eql at shape%
-    @\ifdefined\eql at flushleft left\else center\fi
+    @\ifdefined\eql at layoutleft layoutleft\else layoutcenter\fi
     @\eql at shape@mode\endcsname
 }
-\def\eql at adjust@shoveleft{%
+\def\eql at adjust@alignleft{%
   \global\eql at shape@pos@\z@
   \eql at srbgroup\eql at ifstar@tight
-    {\eql at adjust@shoveleft@[\eql at indent@]}%
+    {\eql at adjust@alignleft@[\eql at indent@]}%
     {\eql at ifnextgobble@tight{!}%
-      {\eql at adjust@shoveleft@[-\eql at indent@]}%
-      {\eql at testopt@tight\eql at adjust@shoveleft@\z@}%
+      {\eql at adjust@alignleft@[-\eql at indent@]}%
+      {\eql at testopt@tight\eql at adjust@alignleft@\z@}%
     }%
 }
-\def\eql at adjust@shoveleft@[#1]{%
+\def\eql at adjust@alignleft@[#1]{%
   \eql at sregroup\global\eql at shape@amount@\glueexpr#1\relax}
-\def\eql at adjust@shovecenter{%
+\def\eql at adjust@aligncenter{%
   \global\eql at shape@pos@\@ne\global\eql at shape@amount@\z@}
-\def\eql at adjust@shoveright{%
+\def\eql at adjust@alignright{%
   \global\eql at shape@pos@\tw@\global\eql at shape@amount@\z@}
 \def\eql at adjust@try#1{%
   \setbox\eql at fieldbox@\hbox to\displaywidth{%
@@ -1783,9 +1604,9 @@
     \eql at tagging@alignright
   \fi
   \csname eql at adjust%
-    @\ifdefined\eql at flushleft flushleft\else center\fi
+    @\ifdefined\eql at layoutleft layoutleft\else layoutcenter\fi
     @\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
-    @\ifcase\eql at shape@pos@ shoveleft\or shovecenter\or shoveright\fi
+    @\ifcase\eql at shape@pos@ alignleft\or aligncenter\or alignright\fi
     @tag\endcsname
 }
 \def\eql at adjust@sel at notag{%
@@ -1798,16 +1619,16 @@
     \eql at tagging@alignright
   \fi
   \csname eql at adjust%
-    @\ifdefined\eql at flushleft flushleft\else center\fi
+    @\ifdefined\eql at layoutleft layoutleft\else layoutcenter\fi
     @\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
-    @\ifcase\eql at shape@pos@ shoveleft\or shovecenter\or shoveright\fi
+    @\ifcase\eql at shape@pos@ alignleft\or aligncenter\or alignright\fi
     @notag\endcsname
 }
 \def\eql at adjust@calc{%
-  \ifdefined\eql at flushleft
-    \eql at flushleftmargin@\glueexpr\eql at flushleftmargin@val\relax
+  \ifdefined\eql at layoutleft
+    \eql at layoutleftmargin@\glueexpr\eql at layoutleftmargin@val\relax
   \else
-    \eql at align@inter@\z@
+    \eql at columns@inter@\z@
     \eql at adjust@tagmargin
     \ifdefined\eql at paddingmax
       \eql at marginleft@\z@
@@ -1830,7 +1651,7 @@
     \fi
   \fi
 }
-\def\eql at adjust@center at tagsright@shovecenter at notag{%
+\def\eql at adjust@layoutcenter at tagsright@aligncenter at notag{%
   \dimen@\displaywidth
   \advance\dimen at -\eql at fieldwidth@
   \ifdim\dimen@>\eql at tagmargin@
@@ -1839,7 +1660,7 @@
     \eql at adjust@print at alignleft\z@\z@
   \fi
 }
-\def\eql at adjust@center at tagsright@shovecenter at tag{%
+\def\eql at adjust@layoutcenter at tagsright@aligncenter at tag{%
   \dimen@\displaywidth
   \ifdim\eql at tagwidth@<\eql at tagmargin@
     \advance\dimen at -\eql at tagmargin@
@@ -1849,7 +1670,7 @@
   \fi
   \ifdim\eql at fieldwidth@<\dimen@
     \eql at adjust@print at aligncenter\z@\eql at tagmargin@
-    \eql at tagbox@print at right
+    \eql at tagbox@print at tagsright
   \else
     \eql at adjust@try\eql at tagwidth@
     \ifnum\badness<\eql at maxbadness@
@@ -1858,14 +1679,14 @@
       \else
         \eql at adjust@print at alignright\z@\eql at tagwidth@
       \fi
-      \eql at tagbox@print at right
+      \eql at tagbox@print at tagsright
     \else
-      \eql at adjust@center at tagsright@shovecenter at notag
-      \eql at tagbox@print at right@raise
+      \eql at adjust@layoutcenter at tagsright@aligncenter at notag
+      \eql at tagbox@print at tagsright@raise
     \fi
   \fi
 }
-\def\eql at adjust@center at tagsleft@shovecenter at notag{%
+\def\eql at adjust@layoutcenter at tagsleft@aligncenter at notag{%
   \dimen@\displaywidth
   \advance\dimen at -\eql at tagmargin@
   \ifdim\eql at fieldwidth@<\dimen@
@@ -1874,7 +1695,7 @@
     \eql at adjust@print at alignright\z@\z@
   \fi
 }
-\def\eql at adjust@center at tagsleft@shovecenter at tag{%
+\def\eql at adjust@layoutcenter at tagsleft@aligncenter at tag{%
   \dimen@\displaywidth
   \ifdim\eql at tagwidth@<\eql at tagmargin@
     \advance\dimen at -\eql at tagmargin@
@@ -1883,12 +1704,12 @@
     \advance\dimen@\eql at tagmargin@
   \fi
   \ifdim\eql at fieldwidth@<\dimen@
-    \eql at tagbox@print at left
+    \eql at tagbox@print at tagsleft
     \eql at adjust@print at aligncenter\eql at tagmargin@\z@
   \else
     \eql at adjust@try\eql at tagwidth@
     \ifnum\badness<\eql at maxbadness@
-      \eql at tagbox@print at left
+      \eql at tagbox@print at tagsleft
       \ifdim\eql at tagwidth@<\eql at tagmargin@
         \eql at adjust@print at alignright\eql at tagwidth@\z@
       \else
@@ -1895,13 +1716,13 @@
         \eql at adjust@print at alignleft\eql at tagwidth@\z@
       \fi
     \else
-      \eql at tagbox@print at left@raise
-      \eql at adjust@center at tagsleft@shovecenter at notag
+      \eql at tagbox@print at tagsleft@raise
+      \eql at adjust@layoutcenter at tagsleft@aligncenter at notag
     \fi
   \fi
   \eql at display@firstavail at set\z@
 }
-\def\eql at adjust@center at tagsright@shoveleft at notag{%
+\def\eql at adjust@layoutcenter at tagsright@alignleft at notag{%
   \dimen@\displaywidth
   \advance\dimen at -\eql at marginleft@
   \advance\dimen at -\eql at shape@amount@
@@ -1913,7 +1734,7 @@
     \eql at adjust@print at alignright\z@\z@
   \fi
 }
-\def\eql at adjust@center at tagsright@shoveleft at tag{%
+\def\eql at adjust@layoutcenter at tagsright@alignleft at tag{%
   \dimen@\eql at marginleft@
   \advance\dimen@\eql at shape@amount@
   \advance\dimen@\eql at tagwidth@
@@ -1922,7 +1743,7 @@
     \dimen@\eql at marginleft@
     \advance\dimen@\eql at shape@amount@
     \eql at adjust@print at alignleft\dimen@\eql at tagwidth@
-    \eql at tagbox@print at right
+    \eql at tagbox@print at tagsright
   \else
     \ifdim\eql at marginleft@>-\eql at shape@amount@
       \eql at adjust@try\eql at tagwidth@
@@ -1929,14 +1750,14 @@
     \fi
     \ifnum\badness<\eql at maxbadness@
       \eql at adjust@print at alignright\z@\eql at tagwidth@
-      \eql at tagbox@print at right
+      \eql at tagbox@print at tagsright
     \else
-      \eql at adjust@center at tagsright@shoveleft at notag
-      \eql at tagbox@print at right@raise
+      \eql at adjust@layoutcenter at tagsright@alignleft at notag
+      \eql at tagbox@print at tagsright@raise
     \fi
   \fi
 }
-\def\eql at adjust@center at tagsleft@shoveright at notag{%
+\def\eql at adjust@layoutcenter at tagsleft@alignright at notag{%
   \dimen@\displaywidth
   \advance\dimen at -\eql at tagmargin@
   \advance\dimen at -\eql at marginright@
@@ -1946,12 +1767,12 @@
     \eql at adjust@print at alignleft\z@\z@
   \fi
 }
-\def\eql at adjust@center at tagsleft@shoveright at tag{%
+\def\eql at adjust@layoutcenter at tagsleft@alignright at tag{%
   \dimen@\eql at marginright@
   \advance\dimen@\eql at tagwidth@
   \eql at adjust@try\dimen@
   \ifnum\badness<\eql at marginbadness@
-    \eql at tagbox@print at left
+    \eql at tagbox@print at tagsleft
     \eql at adjust@print at alignright\eql at tagwidth@\eql at marginright@
   \else
     \ifdim\eql at marginright@>\z@
@@ -1958,16 +1779,16 @@
       \eql at adjust@try\eql at tagwidth@
     \fi
     \ifnum\badness<\eql at maxbadness@
-      \eql at tagbox@print at left
+      \eql at tagbox@print at tagsleft
       \eql at adjust@print at alignleft\eql at tagwidth@\z@
     \else
-      \eql at tagbox@print at left@raise
-      \eql at adjust@center at tagsleft@shoveright at notag
+      \eql at tagbox@print at tagsleft@raise
+      \eql at adjust@layoutcenter at tagsleft@alignright at notag
     \fi
   \fi
   \eql at display@firstavail at set\z@
 }
-\def\eql at adjust@center at tagsright@shoveright at notag{%
+\def\eql at adjust@layoutcenter at tagsright@alignright at notag{%
   \dimen@\displaywidth
   \advance\dimen at -\eql at tagmargin@
   \advance\dimen at -\eql at marginright@
@@ -1979,7 +1800,7 @@
     \eql at adjust@print at alignleft\z@\z@
   \fi
 }
-\def\eql at adjust@center at tagsright@shoveright at tag{%
+\def\eql at adjust@layoutcenter at tagsright@alignright at tag{%
   \dimen@\eql at tagmargin@
   \advance\dimen@\eql at marginright@
   \ifdim\eql at tagwidth@<\dimen@
@@ -1986,15 +1807,15 @@
     \eql at adjust@try\dimen@%
     \ifnum\badness<\eql at marginbadness@
       \eql at adjust@print at alignright\z@\dimen@
-      \eql at tagbox@print at right
+      \eql at tagbox@print at tagsright
     \else
       \eql at adjust@try\eql at tagwidth@
       \ifnum\badness<\eql at maxbadness@
         \eql at adjust@print at alignleft\z@\eql at tagwidth@
-        \eql at tagbox@print at right
+        \eql at tagbox@print at tagsright
       \else
         \eql at adjust@print at alignleft\z@\z@
-        \eql at tagbox@print at left@raise
+        \eql at tagbox@print at tagsleft@raise
       \fi
     \fi
   \else
@@ -2001,14 +1822,14 @@
     \eql at adjust@try\eql at tagwidth@
     \ifnum\badness<\eql at maxbadness@
       \eql at adjust@print at alignright\z@\eql at tagwidth@
-      \eql at tagbox@print at right
+      \eql at tagbox@print at tagsright
     \else
-      \eql at adjust@center at tagsright@shoveright at notag
-      \eql at tagbox@print at right@raise
+      \eql at adjust@layoutcenter at tagsright@alignright at notag
+      \eql at tagbox@print at tagsright@raise
     \fi
   \fi
 }
-\def\eql at adjust@center at tagsleft@shoveleft at notag{%
+\def\eql at adjust@layoutcenter at tagsleft@alignleft at notag{%
   \dimen@\displaywidth
   \advance\dimen at -\eql at tagmargin@
   \advance\dimen at -\eql at marginleft@
@@ -2022,7 +1843,7 @@
     \eql at adjust@print at alignright\z@\z@
   \fi
 }
-\def\eql at adjust@center at tagsleft@shoveleft at tag{%
+\def\eql at adjust@layoutcenter at tagsleft@alignleft at tag{%
   \dimen@\eql at tagmargin@
   \advance\dimen@\eql at marginleft@
   \advance\dimen@\eql at shape@amount@
@@ -2029,15 +1850,15 @@
   \ifdim\eql at tagwidth@<\dimen@
     \eql at adjust@try\dimen@%
     \ifnum\badness<\eql at marginbadness@
-      \eql at tagbox@print at left
+      \eql at tagbox@print at tagsleft
       \eql at adjust@print at alignleft\dimen@\z@
     \else
       \eql at adjust@try\eql at tagwidth@
       \ifnum\badness<\eql at maxbadness@
-        \eql at tagbox@print at left
+        \eql at tagbox@print at tagsleft
         \eql at adjust@print at alignright\eql at tagwidth@\z@
       \else
-        \eql at tagbox@print at left@raise
+        \eql at tagbox@print at tagsleft@raise
         \eql at adjust@print at alignright\z@\z@
       \fi
     \fi
@@ -2044,11 +1865,11 @@
   \else
     \eql at adjust@try\eql at tagwidth@
     \ifnum\badness<\eql at maxbadness@
-      \eql at tagbox@print at left
+      \eql at tagbox@print at tagsleft
       \eql at adjust@print at alignleft\eql at tagwidth@\z@
     \else
-      \eql at tagbox@print at left@raise
-      \eql at adjust@center at tagsleft@shoveleft at notag
+      \eql at tagbox@print at tagsleft@raise
+      \eql at adjust@layoutcenter at tagsleft@alignleft at notag
     \fi
   \fi
   \eql at display@firstavail at set\z@
@@ -2073,7 +1894,7 @@
   \fi
   \@tempdima\displaywidth
   \advance\@tempdima-\eql at totalwidth@
-  \advance\@tempdima-\eql at align@inter@\eql at colsepmin@
+  \advance\@tempdima-\eql at columns@inter@\eql at colsepmin@
   \@tempdimb\@tempdima
   \advance\@tempdimb-\tw@\eql at tagmargin@
   \ifdim\@tempdimb>\z@
@@ -2082,90 +1903,90 @@
     \fi
   \fi
 }
-\def\eql at adjust@flushleft at shoveleft{%
-  \eql at marginleft@\eql at flushleftmargin@
+\def\eql at adjust@layoutleft at alignleft{%
+  \eql at marginleft@\eql at layoutleftmargin@
   \advance\eql at marginleft@\eql at shape@amount@
-  \ifdim\eql at marginleft@<\eql at flushleftmarginmin@
-    \eql at marginleft@\eql at flushleftmarginmin@
+  \ifdim\eql at marginleft@<\eql at layoutleftmarginmin@
+    \eql at marginleft@\eql at layoutleftmarginmin@
   \fi
-  \ifdim\eql at marginleft@>\eql at flushleftmarginmax@
-    \eql at marginleft@\eql at flushleftmarginmax@
+  \ifdim\eql at marginleft@>\eql at layoutleftmarginmax@
+    \eql at marginleft@\eql at layoutleftmarginmax@
   \fi
 }
-\def\eql at adjust@flushleft at shoveleft@notag{%
-  \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
+\def\eql at adjust@layoutleft at alignleft@notag{%
+  \ifdim\eql at layoutleftmarginmin@<\eql at marginleft@
     \eql at adjust@try\eql at marginleft@
     \ifnum\badness<\eql at marginbadness@
       \eql at adjust@print at alignleft\eql at marginleft@\z@
     \else
-      \eql at adjust@print at alignleft\eql at flushleftmarginmin@\z@
+      \eql at adjust@print at alignleft\eql at layoutleftmarginmin@\z@
     \fi
   \else
     \eql at adjust@print at alignleft\eql at marginleft@\z@
   \fi
 }
-\def\eql at adjust@flushleft at tagsright@shoveleft at notag{%
-  \eql at adjust@flushleft at shoveleft
-  \eql at adjust@flushleft at shoveleft@notag
+\def\eql at adjust@layoutleft at tagsright@alignleft at notag{%
+  \eql at adjust@layoutleft at alignleft
+  \eql at adjust@layoutleft at alignleft@notag
 }
-\let\eql at adjust@flushleft at tagsleft@shoveleft at notag
-  \eql at adjust@flushleft at tagsright@shoveleft at notag
-\def\eql at adjust@flushleft at tagsright@shoveleft at tag{%
-  \eql at adjust@flushleft at shoveleft
+\let\eql at adjust@layoutleft at tagsleft@alignleft at notag
+  \eql at adjust@layoutleft at tagsright@alignleft at notag
+\def\eql at adjust@layoutleft at tagsright@alignleft at tag{%
+  \eql at adjust@layoutleft at alignleft
   \dimen@\eql at marginleft@
   \advance\dimen@\eql at tagwidth@
   \eql at adjust@try\dimen@
   \ifnum\badness<\eql at marginbadness@
     \eql at adjust@print at alignleft\eql at marginleft@\eql at tagwidth@
-    \eql at tagbox@print at right
+    \eql at tagbox@print at tagsright
   \else
-    \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
-      \dimen@\eql at flushleftmarginmin@
+    \ifdim\eql at layoutleftmarginmin@<\eql at marginleft@
+      \dimen@\eql at layoutleftmarginmin@
       \advance\dimen@\eql at tagwidth@
       \eql at adjust@try\dimen@
     \fi
     \ifnum\badness<\eql at maxbadness@
-      \eql at adjust@print at alignleft\eql at flushleftmarginmin@\eql at tagwidth@
-      \eql at tagbox@print at right
+      \eql at adjust@print at alignleft\eql at layoutleftmarginmin@\eql at tagwidth@
+      \eql at tagbox@print at tagsright
     \else
-      \eql at adjust@flushleft at shoveleft@notag
-      \eql at tagbox@print at right@raise
+      \eql at adjust@layoutleft at alignleft@notag
+      \eql at tagbox@print at tagsright@raise
     \fi
   \fi
 }
-\def\eql at adjust@flushleft at tagsleft@shoveleft at tag{%
-  \eql at adjust@flushleft at shoveleft
-  \ifdim\eql at tagwidth@<\eql at flushleftmarginmin@
-    \eql at tagbox@print at left
-    \eql at adjust@flushleft at notag
+\def\eql at adjust@layoutleft at tagsleft@alignleft at tag{%
+  \eql at adjust@layoutleft at alignleft
+  \ifdim\eql at tagwidth@<\eql at layoutleftmarginmin@
+    \eql at tagbox@print at tagsleft
+    \eql at adjust@layoutleft at notag
   \else
     \ifdim\eql at tagwidth@<\eql at marginleft@
       \eql at adjust@try\eql at marginleft@
       \ifnum\badness<\eql at marginbadness@
-        \eql at tagbox@print at left
+        \eql at tagbox@print at tagsleft
         \eql at adjust@print at alignleft\eql at marginleft@\z@
       \else
         \eql at adjust@try\eql at tagwidth@
         \ifnum\badness<\eql at maxbadness@
-          \eql at tagbox@print at left
+          \eql at tagbox@print at tagsleft
           \eql at adjust@print at alignleft\eql at tagwidth@\z@
         \else
-          \eql at tagbox@print at left@raise
-          \eql at adjust@print at alignleft\eql at flushleftmarginmin@\z@
+          \eql at tagbox@print at tagsleft@raise
+          \eql at adjust@print at alignleft\eql at layoutleftmarginmin@\z@
         \fi
       \fi
     \else
-      \ifdim\eql at tagwidth@>\eql at flushleftmarginmax@
-        \eql at tagbox@print at left@raise
-        \eql at adjust@flushleft at shoveleft@notag
+      \ifdim\eql at tagwidth@>\eql at layoutleftmarginmax@
+        \eql at tagbox@print at tagsleft@raise
+        \eql at adjust@layoutleft at alignleft@notag
       \else
         \eql at adjust@try\eql at tagwidth@
         \ifnum\badness<\eql at maxbadness@
-          \eql at tagbox@print at left
+          \eql at tagbox@print at tagsleft
           \eql at adjust@print at alignleft\eql at tagwidth@\z@
         \else
-          \eql at tagbox@print at left@raise
-          \eql at adjust@flushleft at shoveleft@notag
+          \eql at tagbox@print at tagsleft@raise
+          \eql at adjust@layoutleft at alignleft@notag
         \fi
       \fi
     \fi
@@ -2172,77 +1993,77 @@
   \fi
   \eql at display@firstavail at set\z@
 }
-\def\eql at adjust@flushleft at shoveright@notag{%
-  \eql at marginleft@\eql at flushleftmargin@
-  \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
+\def\eql at adjust@layoutleft at alignright@notag{%
+  \eql at marginleft@\eql at layoutleftmargin@
+  \ifdim\eql at layoutleftmarginmin@<\eql at marginleft@
     \eql at adjust@try\eql at marginleft@
     \ifnum\badness<\eql at marginbadness@
       \eql at adjust@print at alignright\eql at marginleft@\z@
     \else
-      \eql at adjust@print at alignright\eql at flushleftmarginmin@\z@
+      \eql at adjust@print at alignright\eql at layoutleftmarginmin@\z@
     \fi
   \else
     \eql at adjust@print at alignright\eql at marginleft@\z@
   \fi
 }
-\let\eql at adjust@flushleft at tagsright@shoveright at notag
-  \eql at adjust@flushleft at shoveright@notag
-\let\eql at adjust@flushleft at tagsleft@shoveright at notag
-  \eql at adjust@flushleft at shoveright@notag
-\def\eql at adjust@flushleft at tagsright@shoveright at tag{%
+\let\eql at adjust@layoutleft at tagsright@alignright at notag
+  \eql at adjust@layoutleft at alignright@notag
+\let\eql at adjust@layoutleft at tagsleft@alignright at notag
+  \eql at adjust@layoutleft at alignright@notag
+\def\eql at adjust@layoutleft at tagsright@alignright at tag{%
   \dimen@\eql at marginleft@
   \advance\dimen@\eql at tagwidth@
   \eql at adjust@try\dimen@
   \ifnum\badness<\eql at marginbadness@
     \eql at adjust@print at alignright\eql at marginleft@\eql at tagwidth@
-    \eql at tagbox@print at right
+    \eql at tagbox@print at tagsright
   \else
-    \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
-      \dimen@\eql at flushleftmarginmin@
+    \ifdim\eql at layoutleftmarginmin@<\eql at marginleft@
+      \dimen@\eql at layoutleftmarginmin@
       \advance\dimen@\eql at tagwidth@
       \eql at adjust@try\dimen@
     \fi
     \ifnum\badness<\eql at maxbadness@
-      \eql at adjust@print at alignright\eql at flushleftmarginmin@\eql at tagwidth@
-      \eql at tagbox@print at right
+      \eql at adjust@print at alignright\eql at layoutleftmarginmin@\eql at tagwidth@
+      \eql at tagbox@print at tagsright
     \else
-      \eql at adjust@flushleft at shoveright@notag
-      \eql at tagbox@print at right@raise
+      \eql at adjust@layoutleft at alignright@notag
+      \eql at tagbox@print at tagsright@raise
     \fi
   \fi
 }
-\def\eql at adjust@flushleft at tagsleft@shoveright at tag{%
-  \ifdim\eql at tagwidth@<\eql at flushleftmarginmin@
-    \eql at tagbox@print at left
-    \eql at adjust@flushleft at shoveright@notag
+\def\eql at adjust@layoutleft at tagsleft@alignright at tag{%
+  \ifdim\eql at tagwidth@<\eql at layoutleftmarginmin@
+    \eql at tagbox@print at tagsleft
+    \eql at adjust@layoutleft at alignright@notag
   \else
     \ifdim\eql at tagwidth@<\eql at marginleft@
       \eql at adjust@try\eql at marginleft@
       \ifnum\badness<\eql at marginbadness@
-        \eql at tagbox@print at left
+        \eql at tagbox@print at tagsleft
         \eql at adjust@print at alignright\eql at marginleft@\z@
       \else
         \eql at adjust@try\eql at tagwidth@
         \ifnum\badness<\eql at maxbadness@
-          \eql at tagbox@print at left
+          \eql at tagbox@print at tagsleft
           \eql at adjust@print at alignright\eql at tagwidth@\z@
         \else
-          \eql at tagbox@print at left@raise
-          \eql at adjust@print at alignright\eql at flushleftmarginmin@\z@
+          \eql at tagbox@print at tagsleft@raise
+          \eql at adjust@print at alignright\eql at layoutleftmarginmin@\z@
         \fi
       \fi
     \else
-      \ifdim\eql at tagwidth@>\eql at flushleftmarginmax@
-        \eql at tagbox@print at left@raise
-        \eql at adjust@flushleft at shoveright@notag
+      \ifdim\eql at tagwidth@>\eql at layoutleftmarginmax@
+        \eql at tagbox@print at tagsleft@raise
+        \eql at adjust@layoutleft at alignright@notag
       \else
         \eql at adjust@try\eql at tagwidth@
         \ifnum\badness<\eql at maxbadness@
-          \eql at tagbox@print at left
+          \eql at tagbox@print at tagsleft
           \eql at adjust@print at alignright\eql at tagwidth@\z@
         \else
-          \eql at tagbox@print at left@raise
-          \eql at adjust@flushleft at shoveright@notag
+          \eql at tagbox@print at tagsleft@raise
+          \eql at adjust@layoutleft at alignright@notag
         \fi
       \fi
     \fi
@@ -2249,123 +2070,17 @@
   \fi
   \eql at display@firstavail at set\z@
 }
-\def\eql at adjust@flushleft at shovecenter{%
+\def\eql at adjust@layoutleft at aligncenter{%
   \eql at error{shove center not implemented for left alignment}%
 }
-\let\eql at adjust@flushleft at tagsright@shovecenter at notag
-  \eql at adjust@flushleft at shovecenter
-\let\eql at adjust@flushleft at tagsright@shovecenter at tag
-  \eql at adjust@flushleft at shovecenter
-\let\eql at adjust@flushleft at tagsleft@shovecenter at notag
-  \eql at adjust@flushleft at shovecenter
-\let\eql at adjust@flushleft at tagsleft@shovecenter at tag
-  \eql at adjust@flushleft at shovecenter
-\def\eql at single@cr{%
-  \eql at error{Cannot use `\string\\' within display equation.
-    Please switch to equations environment}%
-}
-\def\eql at single@start{%
-  \eql at halign@catchprevdepth
-  \eql at tagging@start
-  \eql at dollardollar@begin
-  \eql at numbering@eval at mode
-  \let\eql at numbering@subeq at use\eql at false
-  \eql at stack@save at single
-  \eql at numbering@single at init
-  \ifdefined\eql at single@native
-    \let\eql at single@start at sel\eql at single@start at native
-    \let\eql at single@end at sel\eql at single@end at native
-    \let\raisetag\eql at raisetag@default
-  \else
-    \let\eql at single@start at sel\eql at single@start at adjust
-    \let\eql at single@end at sel\eql at single@end at adjust
-  \fi
-  \ifdefined\eql at single@crerror\else
-    \let\\\eql at single@cr
-  \fi
-  \eql at single@start at sel
-}
-\def\eql at single@end{%
-  \eql at punct@apply at block
-  \eql at hook@eqout
-  \eql at single@end at sel
-  \eql at stack@restore
-  \eql at dollardollar@end
-  \eql at tagging@end
-  \eql at halign@leave
-}
-\def\eql at single@main{%
-  \expandafter\eql at single@start
-  \eql at scan@body
-  \eql at single@end
-}
-\def\eql at single@start at native{%
-  \eql at hook@eqin
-}%
-\def\eql at single@end at native{%
-  \if at eqnsw
-    \ifdefined\eql at tagsleft
-      \leqno
-    \else
-      \eqno
-    \fi
-    \eql at compose@print
-  \fi
-  \ifnum\eql at displaybreak@pen@=\@MM\else
-    \postdisplaypenalty\eql at displaybreak@pen@
-  \fi
-}%
-\def\eql at single@start at adjust{%
-  \eql at totalrows@\@ne
-  \eql at row@\z@
-  \eql at display@init
-  \let\shoveleft\eql at adjust@shoveleft
-  \let\shovecenter\eql at adjust@shovecenter
-  \let\shoveright\eql at adjust@shoveright
-  \eql at adjust@init
-  \eql at shape@eval
-  \eql at halign@init{}%
-  \eql at row@\@ne
-  \setbox\eql at fieldbox@\hbox\bgroup
-    \eql at restore@hfuzz
-    \eql at strut@field
-    $\m at th\displaystyle%$
-      \eql at hook@eqin
-}
-\def\eql at single@end at adjust{%
-    \eql at tagging@mathsave
-    $%$
-    \hfil
-    \kern\z@
-  \egroup
-  \eql at fieldwidth@\wd\eql at fieldbox@
-  \eql at line@height@\ht\eql at fieldbox@
-  \eql at line@depth@\dp\eql at fieldbox@
-  \eql at totalwidth@\eql at fieldwidth@
-  \eql at totalrows@\@ne
-  \if at eqnsw
-    \eql at tagbox@make\eql at compose@print
-    \eql at tagrows@\@ne
-  \else
-    \eql at tagwidth@\z@
-    \eql at tagrows@\z@
-  \fi
-  \eql at tagwidth@max@\eql at tagwidth@
-  \eql at adjust@calc
-  \halign{##\cr
-    \noalign{\eql at halign@before}%
-    \if at eqnsw
-      \eql at adjust@sel at tag
-    \else
-      \eql at adjust@sel at notag
-    \fi
-    \cr
-    \noalign{\eql at halign@after}%
-    \eql at tagging@tablesavelines
-  }%
-  \eql at row@\tw@
-  \eql at display@close
-}
+\let\eql at adjust@layoutleft at tagsright@aligncenter at notag
+  \eql at adjust@layoutleft at aligncenter
+\let\eql at adjust@layoutleft at tagsright@aligncenter at tag
+  \eql at adjust@layoutleft at aligncenter
+\let\eql at adjust@layoutleft at tagsleft@aligncenter at notag
+  \eql at adjust@layoutleft at aligncenter
+\let\eql at adjust@layoutleft at tagsleft@aligncenter at tag
+  \eql at adjust@layoutleft at aligncenter
 \let\eql at fieldlength@tab\@empty
 \def\eql at fieldlength@save#1{%
   \begingroup
@@ -2401,10 +2116,10 @@
   \endgroup
 }
 \let\eql at colwidth@tab\@empty
-\def\eql at align@colwidth at get#1{%
+\def\eql at columns@colwidth at get#1{%
   \ifcase\expandafter#1\eql at colwidth@tab\else\z@\fi
 }
-\def\eql at align@colwidth at save{%
+\def\eql at columns@colwidth at save{%
   \begingroup
     \let\or\relax
     \global\edef\eql at colwidth@tab{\or\the\wd\thr@@\eql at colwidth@tab}%
@@ -2458,9 +2173,9 @@
   \ifdefined\eql at tagsleft
     \eql at display@firstavail at set\z@
     \ifdim\eql at tagwidth@>\eql at line@avail@
-      \eql at tagbox@print at left@raise
+      \eql at tagbox@print at tagsleft@raise
     \else
-      \eql at tagbox@print at left
+      \eql at tagbox@print at tagsleft
     \fi
     \kern\displaywidth
   \else
@@ -2467,9 +2182,9 @@
     \kern\displaywidth
     \advance\eql at tagwidth@\eql at line@width@
     \ifdim\eql at tagwidth@>\displaywidth
-      \eql at tagbox@print at right@raise
+      \eql at tagbox@print at tagsright@raise
     \else
-      \eql at tagbox@print at right
+      \eql at tagbox@print at tagsright
     \fi
   \fi
 }
@@ -2511,7 +2226,7 @@
     \let\eql at skip@force at below\z@
     \let\eql at skip@force at above\z@
     \eql at setkeys{intertext}\eql at intertext@opt
-    \openup-\eql at spread@amount@
+    \openup-\eql at spread@
     \penalty\postdisplaypenalty
     \ifcase\eql at skip@force at below\relax
       \advance\eql at vspaceskip@\glueexpr\eql at skip@long at below\relax
@@ -2593,79 +2308,269 @@
     }%
   }%
 }
-\let\eql at multi@mode at lines\eql at false
-\def\eql at multi@main{%
-  \eql at halign@catchprevdepth
-  \eql at tagging@start
-  \eql at dollardollar@begin
-  \eql at numbering@eval at mode
-  \eql at stack@save at multi
-  \ifdefined\eql at subequations@active
-    \let\eql at numbering@subeq at use\eql at false
-  \fi
-  \ifdefined\eql at numbering@subeq at use
-    \eql at numbering@subeq at init
-  \fi
-  \let\intertext\eql at intertext
-  \let\endintertext\endeql at intertext
-  \let\shoveleft\eql at adjust@shoveleft
-  \let\shovecenter\eql at adjust@shovecenter
-  \let\shoveright\eql at adjust@shoveright
-  \ifdefined\eql at multi@mode at lines
-    \expandafter\eql at lines@measure
-  \else
-    \ifdefined\eql at ampproof@active
-      \eql at ampproof
-    \fi
-    \expandafter\eql at align@measure
-  \fi
-  \ifx\eql at numbering@subeq at use\@ne
-    \eql at numbering@subeq at revert
-  \fi
-  \ifdefined\eql at multi@mode at lines\else
-    \ifdefined\eql at multi@linesfallback
-      \ifnum\eql at totalcolumns@=\@ne
-        \let\eql at multi@mode at lines\eql at true
-        \eql at shape@set{r}%
+\protected\def\eql at box@cr{%
+  \eql at ampprotect\eql at testopt@tight\eql at box@cr@\z@
+}
+\def\eql at box@cr@[#1]{%
+  \eql at punct@apply at line
+  \eql at hook@lineout
+  \eql at box@lastfield
+  \cr
+  \noalign{%
+    \vskip\glueexpr#1\relax
+  }%
+}
+\def\eql at box@lastfield at lines{&\omit\kern-2\eql at colsep@}
+\def\eql at box@open at stacked{%
+  \let\shoveleft\eql at adjust@alignleft
+  \let\shovecenter\eql at adjust@aligncenter
+  \let\shoveright\eql at adjust@alignright
+  \let\eql at box@lastfield\eql at box@lastfield at lines
+  \eql at halign@init{%
+    \global\advance\eql at row@\@ne
+  }%
+  \tabskip\z at skip
+  \halign\bgroup
+    &%
+      \eql at shape@pos@\m at ne
+      \setbox\eql at fieldbox@\hbox{%
+        \eql at strut@field
+        \@lign
+        $\m at th\displaystyle
+          \eql at hook@colin
+          ##%
+          \eql at punct@apply at col
+          \eql at hook@colout
+          \eql at tagging@mathsave
+        $%
+        \eql at tagging@mathaddlast
+      }%
+      \ifnum\eql at shape@pos@=\m at ne
+        \eql at shape@eval
       \fi
+      \ifcase\eql at shape@pos@
+        \kern\eql at shape@amount@
+        \box\eql at fieldbox@
+        \skip@\@flushglue
+        \advance\skip@\eql at paddingleft@\relax
+        \advance\skip@\eql at paddingright@\relax
+        \advance\skip at -\eql at shape@amount@\relax
+        \hskip\skip@
+        \eql at tagging@alignleft
+      \or
+        \skip@\@flushglue
+        \advance\skip@\eql at paddingleft@\relax
+        \hskip\skip@
+        \box\eql at fieldbox@
+        \skip@\@flushglue
+        \advance\skip@\eql at paddingright@\relax
+        \hskip\skip@
+        \eql at tagging@aligncenter
+      \or
+        \skip@\@flushglue
+        \advance\skip@\eql at paddingleft@\relax
+        \advance\skip@\eql at paddingright@\relax
+        \hskip\skip@
+        \box\eql at fieldbox@
+        \eql at tagging@alignright
+      \fi
+      \tabskip\eql at colsep@\relax
+    \crcr
+    \noalign{%
+      \eql at hook@blockbefore
+    }%
+    \eql at hook@blockin
+}
+\def\eql at mode@stacked{\let\eql at box@open\eql at box@open at stacked}
+\def\eql at box@lastfield at odd{%
+  &\omit
+  \kern-\wd\eql at fieldbox@
+  \box\eql at fieldbox@
+  \hfil
+  &\omit\kern-\eql at colsep@
+}%
+\def\eql at box@lastfield at even{&\omit\kern-\eql at colsep@}
+\def\eql at box@open at aligned{%
+  \let\eql at box@lastfield\@empty
+  \eql at halign@init{%
+  }%
+  \tabskip\z at skip
+  \halign\bgroup
+    &%
+      \let\eql at box@lastfield\eql at box@lastfield at odd
+      \global\setbox\eql at fieldbox@\hbox{%
+        \eql at strut@field
+        \@lign
+        $\m at th\displaystyle
+          \eql at hook@colin
+          ##%
+          \eql at class@innerleft
+          \eql at hook@innerleft
+          \eql at tagging@mathsave
+        $%
+        \eql at tagging@mathaddlast
+      }%
+      \hfil
+      \kern\wd\eql at fieldbox@
+      \tabskip\z at skip
+    &%
+      \eql at fieldwidth@\wd\eql at fieldbox@
+      \kern-\eql at fieldwidth@
+      \box\eql at fieldbox@
+      \let\eql at box@lastfield\eql at box@lastfield at even
+      \llap{\unhbox\eql at fieldbox@}%
+      \hbox{%
+        \eql at strut@field
+        \@lign
+        $\m at th\displaystyle
+          \eql at hook@innerright
+          \eql at class@innerright at sel
+          ##%
+          \eql at punct@apply at col
+          \eql at hook@colout
+          \eql at tagging@mathsave
+        $%
+        \eql at tagging@mathaddlast
+      }%
+      \hfil
+      \tabskip\eql at colsep@\relax
+    \crcr
+    \noalign{%
+      \eql at hook@blockbefore
+    }%
+    \eql at hook@blockin
+}
+\def\eql at mode@aligned{\let\eql at box@open\eql at box@open at aligned}
+\let\eql at box@box\vcenter
+\let\eql at box@open\@undefined
+\def\eql at box@close{%
+    \ifvmode\else
+      \global\eql at totalrows@\eql at row@
+      \eql at punct@apply at block
+      \eql at box@cr@[\z at skip]%
     \fi
-  \fi
-  \ifdefined\eql at multi@mode at lines
-    \expandafter\eql at lines@print
+    \crcr
+    \noalign{%
+      \eql at hook@blockafter
+    }%
+    \eql at tagging@tablesaveinner
+  \egroup
+}
+\def\eql at box@start{%
+  \relax
+  \ifmmode
+    \let\eql at box@endmath\@empty
   \else
-    \expandafter\eql at align@print
+    $\let\eql at box@endmath=$%
   \fi
-  \ifdefined\eql at numbering@subeq at use
-    \eql at numbering@subeq at close
-  \fi
+  \eql at nextopt@process{equationsbox}%
+  \let\eql at punct@block\eql at punct@main
+  \let\eql at punct@main\relax
+  \eql at colsep@\glueexpr\eql at box@colsep\relax
+  \eql at paddingleft@\glueexpr\eql at paddingleft@val\relax
+  \eql at paddingright@\glueexpr\eql at paddingright@val\relax
+  \eql at indent@\glueexpr\eql at indent@val\relax
+  \eql at stack@save at boxed
+  \let\eql at layoutleft\eql at false
+  \eql at row@\z@
+  \eql at totalrows@\@M
+  \eql at shape@sel
+  \hskip\glueexpr\eql at box@marginleft\relax
+  \eql at box@box\bgroup
+    \eql at display@leave
+    \let\\\eql at box@cr
+    \eql at box@open
+}
+\newcommand{\eql at box@end}{%
+    \eql at box@close
+  \egroup
+  \eql at tagging@tableaddinner
+  \hskip\glueexpr\eql at box@marginright\relax
   \eql at stack@restore
-  \eql at dollardollar@end
-  \eql at tagging@end
-  \eql at halign@leave
+  \eql at box@endmath
 }
-\def\eql at mode@equation{%
-  \let\eql at equations@mode at single\eql at true
-  \ifdefined\eql at single@doscan
-    \let\eql at equations@main\eql at single@main
-    \let\eql at equations@end\@empty
+\newenvironment{equationsbox}{%
+  \eql at ampprotect\eql at box@testall\eql at box@start
+}{%
+  \eql at box@end
+}
+\def\eql at box@testall{\eql at box@testtilde}
+\def\eql at box@testtilde#1{%
+  \eql at ifnextgobble@tight~%
+    {\eqnaddopt{lines}\eql at box@testopt{#1}}%
+    {\eql at box@testopt{#1}}}
+\def\eql at box@testopt#1{%
+  \eql at ifnextchar@tight[%]
+    {\eql at box@addopt{#1}}%
+    {#1}}
+\def\eql at box@addopt#1[#2]{\eqnaddopt{#2}#1}
+\def\eql at single@start at native{%
+  \eql at hook@eqin
+}%
+\def\eql at single@end at native{%
+  \if at eqnsw
+    \ifdefined\eql at tagsleft
+      \leqno
+    \else
+      \eqno
+    \fi
+    \eql at compose@print
+  \fi
+  \ifnum\eql at displaybreak@pen@=\@MM\else
+    \postdisplaypenalty\eql at displaybreak@pen@
+  \fi
+}%
+\def\eql at single@start at print{%
+  \eql at totalrows@\@ne
+  \eql at row@\z@
+  \eql at display@init
+  \let\shoveleft\eql at adjust@alignleft
+  \let\shovecenter\eql at adjust@aligncenter
+  \let\shoveright\eql at adjust@alignright
+  \eql at adjust@init
+  \eql at shape@eval
+  \eql at halign@init{}%
+  \eql at row@\@ne
+  \setbox\eql at fieldbox@\hbox\bgroup
+    \eql at restore@hfuzz
+    \eql at strut@field
+    $\m at th\displaystyle%$
+      \eql at hook@eqin
+}
+\def\eql at single@end at print{%
+    \eql at tagging@mathsave
+    $%$
+    \hfil
+    \kern\z@
+  \egroup
+  \eql at fieldwidth@\wd\eql at fieldbox@
+  \eql at line@height@\ht\eql at fieldbox@
+  \eql at line@depth@\dp\eql at fieldbox@
+  \eql at totalwidth@\eql at fieldwidth@
+  \eql at totalrows@\@ne
+  \if at eqnsw
+    \eql at tagbox@make\eql at compose@print
+    \eql at tagrows@\@ne
   \else
-    \let\eql at equations@main\@undefined
-    \let\eql at equations@end\eql at single@end
+    \eql at tagwidth@\z@
+    \eql at tagrows@\z@
   \fi
+  \eql at tagwidth@max@\eql at tagwidth@
+  \eql at adjust@calc
+  \halign{##\cr
+    \noalign{\eql at halign@before}%
+    \if at eqnsw
+      \eql at adjust@sel at tag
+    \else
+      \eql at adjust@sel at notag
+    \fi
+    \cr
+    \noalign{\eql at halign@after}%
+    \eql at tagging@tablesavelines
+  }%
+  \eql at row@\tw@
+  \eql at display@close
 }
-\def\eql at mode@align{%
-  \let\eql at equations@mode at single\eql at false
-  \let\eql at multi@mode at lines\eql at false
-  \let\eql at equations@main\eql at multi@main
-  \let\eql at equations@end\@empty
-}
-\def\eql at mode@lines{%
-  \let\eql at equations@mode at single\eql at false
-  \let\eql at multi@mode at lines\eql at true
-  \let\eql at equations@main\eql at multi@main
-  \let\eql at equations@end\@empty
-}
-\eql at mode@align
 \def\eql at lines@measure at line@begin{%
   \eql at numbering@measure at line@begin
   \eql at hook@linein
@@ -2815,25 +2720,25 @@
   }%
   \eql at display@close
 }
-\def\eql at align@add at amp#1{\if m#1&\omit\expandafter\eql at align@add at amp\fi}
-\def\eql at align@completerow{%
+\def\eql at columns@add at amp#1{\if m#1&\omit\expandafter\eql at columns@add at amp\fi}
+\def\eql at columns@completerow{%
   \count@\eql at totalcolumns@
   \advance\count at -\eql at column@
   \advance\count@\@ne
   \edef\eql at tmp{%
-    \expandafter\eql at align@add at amp\romannumeral\number\count@ 000q}%
+    \expandafter\eql at columns@add at amp\romannumeral\number\count@ 000q}%
   \eql at tmp
 }
-\def\eql at align@measure at line@begin{%
+\def\eql at columns@measure at line@begin{%
   \global\eql at column@\z@
   \eql at numbering@measure at line@begin
   \eql at hook@linein
 }
-\def\eql at align@measure at field{%
+\def\eql at columns@measure at field{%
   \eql at fieldlength@save\eql at column@
   \kern\wd\eql at fieldbox@
 }
-\def\eql at align@measure at line@end{%
+\def\eql at columns@measure at line@end{%
   \eql at punct@apply at line
   \eql at hook@lineout
   &\omit
@@ -2840,9 +2745,9 @@
   \ifnum\eql at column@>\eql at totalcolumns@
     \global\eql at totalcolumns@\eql at column@
   \fi
-  \eql at align@measure at tag
+  \eql at columns@measure at tag
 }
-\def\eql at align@measure at tag{%
+\def\eql at columns@measure at tag{%
   \ifnum\eql at numbering@target@<\z@
     \if at eqnsw
       \eql at tagbox@make\eql at compose@measure
@@ -2856,7 +2761,7 @@
     \eql at tagwidth@save
   \fi
 }
-\def\eql at align@measure{%
+\def\eql at columns@measure{%
   \eql at totalcolumns@\z@
   \eql at tagwidth@max@\z@
   \let\eql at tagwidth@tab\@empty
@@ -2865,8 +2770,8 @@
   \eql at measure@savecounters
   \setbox\z@\vbox{%
     \eql at numbering@measure at init
-    \eql at measure@init\eql at align@measure at line@begin
-    \eql at let@cr\eql at align@measure at line@end
+    \eql at measure@init\eql at columns@measure at line@begin
+    \eql at let@cr\eql at columns@measure at line@end
     \tabskip\z at skip
     \halign{%
       &%
@@ -2882,7 +2787,7 @@
           $%
         }%
         \global\eql at fieldwidth@\wd\eql at fieldbox@
-        \eql at align@measure at field
+        \eql at columns@measure at field
       &%
         \global\advance\eql at column@\@ne
         \setbox\eql at fieldbox@\hbox{%
@@ -2895,7 +2800,7 @@
             \eql at hook@colout
           $%
         }%
-        \eql at align@measure at field
+        \eql at columns@measure at field
         \hfil
       \crcr
       \noalign{%
@@ -2906,13 +2811,13 @@
       \ifvmode\else
         \eql at punct@apply at block
         \eql at hook@blockout
-        \eql at align@measure at line@end
+        \eql at columns@measure at line@end
         \cr
       \fi
       \noalign{%
         \eql at hook@blockafter
       }%
-      \eql at align@completerow
+      \eql at columns@completerow
       \cr
     }%
     \global\advance\eql at row@-\tw@
@@ -2943,10 +2848,10 @@
       \global\setbox\thr@@\lastbox
     }%
   \ifhbox\thr@@
-    \eql at align@colwidth at save
+    \eql at columns@colwidth at save
   \repeat
 }
-\def\eql at align@print at line@begin{%
+\def\eql at columns@print at line@begin{%
   \global\eql at column@\z@
   \global\eql at line@pos@\eql at marginleft@
   \global\eql at line@width@\z@
@@ -2956,8 +2861,8 @@
   \eql at numbering@print at line@begin
   \eql at hook@linein
 }
-\def\eql at align@print at field{%
-  \dimen@\eql at align@colwidth at get\eql at column@\relax
+\def\eql at columns@print at field{%
+  \dimen@\eql at columns@colwidth at get\eql at column@\relax
   \ifdim\wd\eql at fieldbox@>\z@
     \ifdim\eql at line@width@=\z@
       \eql at line@avail@\eql at line@pos@
@@ -2986,7 +2891,7 @@
   \ifdim\dp\eql at fieldbox@>\eql at line@depth@
     \global\eql at line@depth@\dp\eql at fieldbox@
   \fi
-  \dimen@\eql at align@colwidth at get\eql at column@\relax
+  \dimen@\eql at columns@colwidth at get\eql at column@\relax
   \ifodd\eql at column@
     \kern\dimen@
   \else
@@ -2995,24 +2900,24 @@
     \kern\dimen@
   \fi
 }
-\def\eql at align@print at trailright{%
+\def\eql at columns@print at trailright{%
    &\omit
     \global\advance\eql at column@\@ne
     \setbox\eql at fieldbox@\hbox{%
       \kern-\wd\eql at fieldbox@\box\eql at fieldbox@
     }%
-    \eql at align@print at field
+    \eql at columns@print at field
 }
-\def\eql at align@print at line@end{%
+\def\eql at columns@print at line@end{%
   \eql at punct@apply at line
   \eql at hook@lineout
   \ifodd\eql at column@
-    \expandafter\eql at align@print at trailright
+    \expandafter\eql at columns@print at trailright
   \fi
-  \eql at align@completerow
-  \eql at align@print at tag
+  \eql at columns@completerow
+  \eql at columns@print at tag
 }
-\def\eql at align@print at tag{%
+\def\eql at columns@print at tag{%
   \dimen@\eql at totalwidth@
   \advance\dimen@\eql at colsep@
   \kern-\dimen@
@@ -3028,12 +2933,12 @@
     \kern\displaywidth
   \fi
 }
-\def\eql at align@print{%
-  \eql at align@adjust
+\def\eql at columns@print{%
+  \eql at columns@adjust
   \eql at display@init
   \eql at numbering@print at init
-  \eql at print@init\eql at align@print at line@begin
-  \eql at let@cr\eql at align@print at line@end
+  \eql at print@init\eql at columns@print at line@begin
+  \eql at let@cr\eql at columns@print at line@end
   \tabskip\eql at marginleft@
   \halign{%
     &%
@@ -3052,7 +2957,7 @@
         \eql at tagging@mathaddlast
       }%
       \global\eql at fieldwidth@\wd\eql at fieldbox@
-      \eql at align@print at field
+      \eql at columns@print at field
       \tabskip\z at skip
     &%
       \global\advance\eql at column@\@ne
@@ -3071,7 +2976,7 @@
         $%
         \eql at tagging@mathaddlast
       }%
-      \eql at align@print at field
+      \eql at columns@print at field
       \hfil
       \tabskip\eql at colsep@\relax
     \crcr
@@ -3085,7 +2990,7 @@
     \ifvmode\else
       \eql at punct@apply at block
       \eql at hook@blockout
-      \eql at align@print at line@end
+      \eql at columns@print at line@end
       \cr
     \fi
     \noalign{%
@@ -3096,37 +3001,37 @@
   }%
   \eql at display@close
 }
-\def\eql at align@adjust{%
+\def\eql at columns@adjust{%
   \eql at colsepmin@\glueexpr\eql at colsepmin@val\relax
   \ifodd\eql at totalcolumns@
     \advance\eql at totalcolumns@\@ne
   \fi
   \ifnum\eql at totalcolumns@<\thr@@
-    \let\eql at align@margins\eql at true
+    \let\eql at columns@margins\eql at true
   \fi
-  \eql at align@inter@\eql at totalcolumns@
-  \divide\eql at align@inter@\tw@
-  \advance\eql at align@inter@\m at ne
-  \ifdefined\eql at flushleft
-    \eql at flushleftmargin@\glueexpr\eql at flushleftmargin@val\relax
+  \eql at columns@inter@\eql at totalcolumns@
+  \divide\eql at columns@inter@\tw@
+  \advance\eql at columns@inter@\m at ne
+  \ifdefined\eql at layoutleft
+    \eql at layoutleftmargin@\glueexpr\eql at layoutleftmargin@val\relax
   \else
     \eql at adjust@tagmargin
   \fi
   \eql at colsep@\displaywidth
   \advance\eql at colsep@-\eql at totalwidth@
-  \ifdefined\eql at flushleft
-    \advance\eql at colsep@-\eql at flushleftmargin@
+  \ifdefined\eql at layoutleft
+    \advance\eql at colsep@-\eql at layoutleftmargin@
   \else
     \advance\eql at colsep@-\eql at tagmargin@
-    \ifdefined\eql at align@margins\else
+    \ifdefined\eql at columns@margins\else
       \ifdim\eql at tagmargin@>\z@
         \advance\eql at colsep@-\eql at tagsepmin@
       \fi
     \fi
   \fi
-  \count@\eql at align@inter@
-  \ifdefined\eql at align@margins
-    \ifdefined\eql at flushleft
+  \count@\eql at columns@inter@
+  \ifdefined\eql at columns@margins
+    \ifdefined\eql at layoutleft
       \advance\count@\@ne
     \else
       \advance\count@\tw@
@@ -3141,26 +3046,26 @@
       \eql at colsep@\dimen@
     \fi
   \fi
-  \ifdefined\eql at flushleft
+  \ifdefined\eql at layoutleft
     \ifdim\eql at colsep@=\eql at colsepmin@
       \eql at marginleft@\displaywidth
       \advance\eql at marginleft@-\eql at totalwidth@
-      \advance\eql at marginleft@-\eql at align@inter@\eql at colsep@
-      \ifdim\eql at marginleft@>\eql at flushleftmargin@
-        \eql at marginleft@\eql at flushleftmargin@
+      \advance\eql at marginleft@-\eql at columns@inter@\eql at colsep@
+      \ifdim\eql at marginleft@>\eql at layoutleftmargin@
+        \eql at marginleft@\eql at layoutleftmargin@
       \else
-        \ifdim\eql at marginleft@<\eql at flushleftmarginmin@
-          \eql at marginleft@\eql at flushleftmarginmin@
+        \ifdim\eql at marginleft@<\eql at layoutleftmarginmin@
+          \eql at marginleft@\eql at layoutleftmarginmin@
         \fi
       \fi
     \else
-      \eql at marginleft@\eql at flushleftmargin@
+      \eql at marginleft@\eql at layoutleftmargin@
     \fi
   \else
-    \ifdefined\eql at align@margins
+    \ifdefined\eql at columns@margins
       \eql at marginleft@\displaywidth
       \advance\eql at marginleft@-\eql at totalwidth@
-      \advance\eql at marginleft@-\eql at align@inter@\eql at colsep@
+      \advance\eql at marginleft@-\eql at columns@inter@\eql at colsep@
       \ifdim\eql at marginleft@<\eql at tagmargin@
         \eql at marginleft@\z@
       \else
@@ -3182,9 +3087,9 @@
     \fi
   \fi
   \ifdefined\eql at tagsleft
-    \let\eql at align@adjust at test\eql at align@adjust at test@tagleft
+    \let\eql at columns@adjust at test\eql at columns@adjust at test@tagleft
   \else
-    \let\eql at align@adjust at test\eql at align@adjust at test@tagright
+    \let\eql at columns@adjust at test\eql at columns@adjust at test@tagright
   \fi
   \eql at row@\eql at totalrows@
   \loop\ifnum\eql at row@>\z@
@@ -3196,15 +3101,15 @@
       \fi
     \fi
     \ifdim\eql at tagwidth@>\z@
-      \eql at align@adjust at calc
-      \eql at align@adjust at test
+      \eql at columns@adjust at calc
+      \eql at columns@adjust at test
     \fi
     \advance\eql at row@\m at ne
   \repeat
-  \advance\eql at totalwidth@\eql at align@inter@\eql at colsep@
+  \advance\eql at totalwidth@\eql at columns@inter@\eql at colsep@
   \advance\eql at totalwidth@\eql at marginleft@
 }
-\def\eql at align@adjust at calc{%
+\def\eql at columns@adjust at calc{%
   \eql at line@pos@\z@
   \eql at column@\z@
   \eql at line@avail@\eql at totalwidth@
@@ -3213,16 +3118,16 @@
   \@tempcntb\z@
   \edef\@tempb{\eql at fieldlength@get\eql at row@}%
   \@for\@tempa:=\@tempb\do
-    \eql at align@adjust at calc@col
+    \eql at columns@adjust at calc@col
   \advance\@tempcnta\m at ne
   \divide\@tempcnta\tw@
   \advance\@tempcntb\m at ne
   \divide\@tempcntb\tw@
 }
-\def\eql at align@adjust at calc@col{%
+\def\eql at columns@adjust at calc@col{%
   \advance\eql at column@\@ne
   \@tempdima\@tempa\relax
-  \dimen@\eql at align@colwidth at get\eql at column@\relax
+  \dimen@\eql at columns@colwidth at get\eql at column@\relax
   \ifdim\@tempdima>\z@
     \ifdim\eql at line@width@=\z@
       \eql at line@avail@\eql at line@pos@
@@ -3242,7 +3147,7 @@
   \fi
   \advance\eql at line@pos@\dimen@
 }
-\def\eql at align@adjust at test@tagright{%
+\def\eql at columns@adjust at test@tagright{%
   \@tempdima\displaywidth
   \advance\@tempdima-\eql at line@width@
   \advance\@tempdima-\eql at tagwidth@
@@ -3250,22 +3155,22 @@
   \advance\dimen@\@tempcntb\eql at colsep@
   \ifdim\dimen@>\@tempdima
     \dimen@\@tempcntb\eql at colsepmin@
-    \ifdefined\eql at flushleft
-      \advance\dimen@\eql at flushleftmarginmin@
+    \ifdefined\eql at layoutleft
+      \advance\dimen@\eql at layoutleftmarginmin@
     \fi
     \ifdim\dimen@>\@tempdima\else
-      \eql at align@adjust at modify@tagright
+      \eql at columns@adjust at modify@tagright
     \fi
   \fi
 }
-\def\eql at align@adjust at modify@tagright{%
+\def\eql at columns@adjust at modify@tagright{%
   \ifnum\@tempcntb>\z@
     \dimen@\@tempdima
     \count@\@tempcntb
-    \ifdefined\eql at flushleft
+    \ifdefined\eql at layoutleft
       \advance\dimen at -\eql at marginleft@
     \else
-      \ifdefined\eql at align@margins
+      \ifdefined\eql at columns@margins
         \advance\count@\@ne
       \fi
     \fi
@@ -3283,8 +3188,8 @@
     \eql at marginleft@\dimen@
   \fi
 }
-\def\eql at align@adjust at test@tagleft{%
-  \count@\eql at align@inter@
+\def\eql at columns@adjust at test@tagleft{%
+  \count@\eql at columns@inter@
   \advance\count at -\@tempcnta
   \@tempdima\eql at tagwidth@
   \advance\@tempdima-\eql at line@avail@
@@ -3291,8 +3196,8 @@
   \dimen@\eql at marginleft@
   \advance\dimen@\@tempcnta\eql at colsep@
   \ifdim\dimen@<\@tempdima
-    \ifdefined\eql at flushleft
-      \dimen@\eql at flushleftmarginmax@
+    \ifdefined\eql at layoutleft
+      \dimen@\eql at layoutleftmarginmax@
     \else
       \dimen@\displaywidth
     \fi
@@ -3301,17 +3206,17 @@
       \advance\dimen@\eql at totalwidth@
       \advance\dimen@\@tempdima
       \ifdim\dimen@>\displaywidth\else
-        \eql at align@adjust at modify@tagleft
+        \eql at columns@adjust at modify@tagleft
       \fi
     \fi
   \fi
 }
-\def\eql at align@adjust at modify@tagleft{%
+\def\eql at columns@adjust at modify@tagleft{%
   \ifnum\count@>\z@
     \dimen@\displaywidth
     \advance\dimen at -\eql at totalwidth@
     \advance\dimen at -\@tempdima
-    \ifdefined\eql at align@margins
+    \ifdefined\eql at columns@margins
       \advance\count@\@ne
     \fi
     \divide\dimen@\count@
@@ -3320,7 +3225,7 @@
         \dimen@\eql at colsepmin@
       \fi
       \advance\dimen at -\eql at colsep@
-      \advance\eql at marginleft@-\eql at align@inter@\dimen@
+      \advance\eql at marginleft@-\eql at columns@inter@\dimen@
       \advance\eql at colsep@\dimen@
     \fi
   \fi
@@ -3446,6 +3351,113 @@
   \eql at indent@\glueexpr\eql at indent@val\relax
   \eql at tagsepmin@\glueexpr\eql at tagsepmin@val\relax
 }
+\def\eql at single@cr{%
+  \eql at error{Cannot use `\string\\' within display equation.
+    Please switch to equations environment}%
+}
+\def\eql at single@start{%
+  \eql at halign@catchprevdepth
+  \eql at tagging@start
+  \eql at dollardollar@begin
+  \eql at numbering@eval at mode
+  \let\eql at numbering@subeq at use\eql at false
+  \eql at stack@save at single
+  \eql at numbering@single at init
+  \ifdefined\eql at single@native
+    \let\eql at single@start at sel\eql at single@start at native
+    \let\eql at single@end at sel\eql at single@end at native
+    \let\raisetag\eql at raisetag@default
+  \else
+    \let\eql at single@start at sel\eql at single@start at print
+    \let\eql at single@end at sel\eql at single@end at print
+  \fi
+  \ifdefined\eql at single@crerror\else
+    \let\\\eql at single@cr
+  \fi
+  \eql at single@start at sel
+}
+\def\eql at single@end{%
+  \eql at punct@apply at block
+  \eql at hook@eqout
+  \eql at single@end at sel
+  \eql at stack@restore
+  \eql at dollardollar@end
+  \eql at tagging@end
+  \eql at halign@leave
+}
+\def\eql at single@main{%
+  \expandafter\eql at single@start
+  \eql at scan@body
+  \eql at single@end
+}
+\def\eql at mode@equation{%
+  \ifdefined\eql at single@doscan
+    \let\eql at equations@main\eql at single@main
+    \let\eql at equations@end\@empty
+  \else
+    \let\eql at equations@main\@undefined
+    \let\eql at equations@end\eql at single@end
+  \fi
+}
+\let\eql at multi@mode at lines\eql at false
+\def\eql at multi@main{%
+  \eql at halign@catchprevdepth
+  \eql at tagging@start
+  \eql at dollardollar@begin
+  \eql at numbering@eval at mode
+  \eql at stack@save at multi
+  \ifdefined\eql at subequations@active
+    \let\eql at numbering@subeq at use\eql at false
+  \fi
+  \ifdefined\eql at numbering@subeq at use
+    \eql at numbering@subeq at init
+  \fi
+  \let\intertext\eql at intertext
+  \let\endintertext\endeql at intertext
+  \let\shoveleft\eql at adjust@alignleft
+  \let\shovecenter\eql at adjust@aligncenter
+  \let\shoveright\eql at adjust@alignright
+  \ifdefined\eql at multi@mode at lines
+    \expandafter\eql at lines@measure
+  \else
+    \ifdefined\eql at ampproof@active
+      \eql at ampproof
+    \fi
+    \expandafter\eql at columns@measure
+  \fi
+  \ifx\eql at numbering@subeq at use\@ne
+    \eql at numbering@subeq at revert
+  \fi
+  \ifdefined\eql at multi@mode at lines\else
+    \ifdefined\eql at multi@linesfallback
+      \ifnum\eql at totalcolumns@=\@ne
+        \let\eql at multi@mode at lines\eql at true
+      \fi
+    \fi
+  \fi
+  \ifdefined\eql at multi@mode at lines
+    \expandafter\eql at lines@print
+  \else
+    \expandafter\eql at columns@print
+  \fi
+  \ifdefined\eql at numbering@subeq at use
+    \eql at numbering@subeq at close
+  \fi
+  \eql at stack@restore
+  \eql at dollardollar@end
+  \eql at tagging@end
+  \eql at halign@leave
+}
+\def\eql at mode@columns{%
+  \let\eql at equations@main\eql at multi@main
+  \let\eql at equations@end\@empty
+  \let\eql at multi@mode at lines\eql at false
+}
+\def\eql at mode@lines{%
+  \let\eql at equations@main\eql at multi@main
+  \let\eql at equations@end\@empty
+  \let\eql at multi@mode at lines\eql at true
+}
 \newenvironment{equations}{%
   \ifmmode
     \eql at error@mathmode{\string\begin{\@currenvir}}%
@@ -3516,31 +3528,6 @@
   \end{equations at ang}%
   \ignorespaces
 }
-\DeclareRobustCommand{\eql at eqref}[1]{\textup{\eql at tag@boxedform{\ref{#1}}}}
-\DeclareRobustCommand{\eql at numberwithin}[3][\arabic]{%
-  \@ifundefined{c@#2}{\@nocounterr{#2}}{%
-    \@ifundefined{c@#3}{\@nocounterr{#3}}{%
-      \ifdefined\HyOrg at addtoreset
-        \HyOrg at addtoreset{#2}{#3}%
-      \else
-        \@addtoreset{#2}{#3}%
-      \fi
-      \expandafter\xdef\csname the#2\endcsname{%
-        \expandafter\noexpand\csname the#3\endcsname.\noexpand#1{#2}}%
-      \ifdefined\theHequation
-        \expandafter\xdef\csname theH#2\endcsname{%
-          \expandafter\noexpand
-          \csname the\@ifundefined{theH#3}{}H#3\endcsname.%
-            \noexpand\arabic{#2}}%
-      \fi
-    }%
-  }%
-}
-\DeclareRobustCommand{\eql at allowdisplaybreaks}[1][4]{%
-  \eqnlinesset{allowbreaks=#1}%
-}
-\newcommand{\eql at notag}{\nonumber}
-\newcommand{\eql at thetag}{\leavevmode\eql at tag@boxedform}
 \RequirePackage{keyval}
 \def\eql at decide@select#1#2#3#4{%
   \def\@tempa{#3}%
@@ -3574,8 +3561,16 @@
   \eql at decide@select{#1}{#2}{#3}{%
     {,abovebelow,both,tb}{#4#5},%
     {above,top,t}{#4},%
-    {below,bottom,b}{#5}}%
-  }
+    {below,bottom,b}{#5}}}
+\def\eql at decide@situation#1#2#3#4{%
+  \eql at decide@select{#1}{#2}{#3}{%
+    {{long}{\def#4{0}}},%
+    {{short}{\def#4{1}}},%
+    {{cont}{\def#4{2}}},%
+    {{par}{\def#4{3}}},%
+    {{top}{\def#4{4}}},%
+    {{noskip}{\def#4{5}}},%
+    {{medskip}{\def#4{6}}}}}
 \def\eql at define@key#1#2{%
   \eql at ifnextchar@loose[%]
     {\eql at definekey@opt{#1}{#2}}%
@@ -3607,77 +3602,8 @@
 }
 \newcommand{\eqnaddopt}[1]{%
   \expandafter\def\expandafter\eql at nextopt\expandafter{\eql at nextopt,#1}}
-\def\eql at defaults@classic{%
-  \def\eql at tagsepmin@val{.5\fontdimen6\textfont\tw@}%
-  \def\eql at colsepmax@val{.5\maxdimen}%
-  \def\eql at spread{\jot}%
-  \let\eql at tagmargin@val\@undefined
-  \eql at tagmargin@ratio@\p@
-  \def\eql at tagmargin@threshold{0.5}%
-  \def\eql at flushleftmargin@val{\leftmargini}%
-  \let\eql at display@height\@undefined
-  \let\eql at display@depth\@undefined
-  \eql at skip@mode at short@\tw@
-  \eql at skip@mode at cont@\@ne
-  \eql at skip@mode at par@\z@
-  \eql at skip@mode at top@\z@
-  \def\eql at skip@long at above{\abovedisplayskip}%
-  \def\eql at skip@long at below{\belowdisplayskip}%
-  \def\eql at skip@short at above{\abovedisplayshortskip}%
-  \def\eql at skip@short at below{\belowdisplayshortskip}%
-  \def\eql at skip@cont at above{\eql at skip@short at above}%
-  \def\eql at skip@cont at below{\eql at skip@short at below}%
-  \def\eql at skip@par at above{\eql at skip@long at above}%
-  \def\eql at skip@par at below{\eql at skip@long at below}%
-  \def\eql at skip@top at above{\eql at skip@long at above}%
-  \def\eql at skip@top at below{\eql at skip@long at below}%
-  \def\eql at skip@med at above{\abovedisplayskip/2}%
-  \def\eql at skip@med at below{\belowdisplayskip/2}%
-  \def\eql at skip@medtag at above{\z at skip}%
-  \def\eql at skip@medtag at below{\z at skip}%
-  \def\eql at skip@tag at above{\z at skip}%
-  \def\eql at skip@tag at below{\z at skip}%
-}
-\def\eql at defaults@eqnlines{%
-  \def\eql at tagsepmin@val{.5em}%
-  \def\eql at colsepmax@val{2em}%
-  \def\eql at spread{0.2\normalbaselineskip}%
-  \let\eql at tagmargin@val\@undefined
-  \eql at tagmargin@ratio at .334\p@
-  \def\eql at tagmargin@threshold{0.5}%
-  \def\eql at flushleftmargin@val{\leftmargini}%
-  \def\eql at display@height{\ht\eql at strutbox@}%
-  \def\eql at display@depth{\dp\eql at strutbox@}%
-  \eql at skip@mode at short@\@ne
-  \eql at skip@mode at cont@\z@
-  \eql at skip@mode at par@\z@
-  \eql at skip@mode at top@\z@
-  \def\eql at skip@long at above{0.75\normalbaselineskip
-    \@plus0.25\normalbaselineskip\@minus0.4\normalbaselineskip}%
-  \let\eql at skip@long at below\eql at skip@long at above
-  \def\eql at skip@short at above{0.0\normalbaselineskip
-    \@plus0.25\normalbaselineskip}%
-  \def\eql at skip@short at below{0.0\normalbaselineskip
-    \@plus0.25\normalbaselineskip}%
-  \def\eql at skip@med at above{0.4\normalbaselineskip
-    \@plus0.2\normalbaselineskip\@minus0.2\normalbaselineskip}%
-  \let\eql at skip@med at below\eql at skip@med at above
-  \def\eql at skip@cont at above{\z at skip}%
-  \def\eql at skip@cont at below{\eql at skip@long at below}%
-  \def\eql at skip@par at above{\eql at skip@long at above}%
-  \def\eql at skip@par at below{\eql at skip@long at below}%
-  \def\eql at skip@top at above{\z at skip}%
-  \def\eql at skip@top at below{\z at skip}%
-  \def\eql at skip@tag at above{\z at skip}%
-  \def\eql at skip@tag at below{\z at skip}%
-  \def\eql at skip@partag at above{\z at skip}%
-  \def\eql at skip@partag at below{\z at skip}%
-  \def\eql at skip@medtag at above{\z at skip}%
-  \def\eql at skip@medtag at below{\z at skip}%
-}
-\eql at defaults@eqnlines
-\eql at define@key{equationsbox}{gathered,gather,ga,lines,lined,ln,\string~}[]{%
-  \eql at mode@lined}
+\eql at define@key{equationsbox}{gathered,gather,ga,lines,ln,\string~}[]{%
+  \eql at mode@stacked}
 \eql at define@key{equationsbox}{aligned,align,al,columns,col,@}[]{%
   \eql at mode@aligned}
 \eql at define@key{equationsbox}{top,t}[]{\let\eql at box@box\vtop}
@@ -3685,13 +3611,13 @@
 \eql at define@key{equationsbox}{bottom,b}[]{\let\eql at box@box\vbox}
 \eql at define@key{equationsbox}{colsep}{\def\eql at box@colsep{#1}}
 \eql at define@key{equations}{equation,eq,single,1}[]{\eql at mode@equation}
-\eql at define@key{equations}{gathered,gather,ga,lines,lined,ln,\string~}[]{%
+\eql at define@key{equations}{gathered,gather,ga,lines,ln,\string~}[]{%
   \eql at mode@lines}
 \eql at define@key{equations}{aligned,align,al,columns,col,@}[]{%
-  \eql at mode@align}
+  \eql at mode@columns}
 \eql at define@key{equations}{native}[true]{%
   \eql at decide@bool{#3}{#2}{#1}\eql at single@native%
-  \ifdefined\eql at single@native\let\eql at flushleft\eql at false\fi}
+  \ifdefined\eql at single@native\let\eql at layoutleft\eql at false\fi}
 \eql at define@key{setup}{native}[true]{%
   \eql at decide@bool{#3}{#2}{#1}\eql at single@native}
 \eql at define@key{setup}{scanequation}[true]{%
@@ -3701,7 +3627,7 @@
 \eql at define@key{setup}{angopt}[]{%
   \def\eql at equations@ang at opt{align,#1}}
 \def\eql at keycat{equations,equationsbox,setup}
-\eql at define@key\eql at keycat{spread}[\jot]{\def\eql at spread{#1}}
+\eql at define@key\eql at keycat{spread}{\def\eql at spread@val{#1}}
 \eql at define@key\eql at keycat{strut}[true]{\eql at decide@if{#3}{#2}{#1}%
   {\let\eql at strut@field\eql at strut}{\let\eql at strut@field\relax}}
 \eql at define@key\eql at keycat{struttag}[true]{\eql at decide@if{#3}{#2}{#1}%
@@ -3841,42 +3767,36 @@
 \eql at define@key{setup}{abovecontskip}{%
   \def\eql at skip@cont at above{#1}}
 \eql at define@key{setup}{abovecontskip*}[]{%
-  \def\eql at skip@cont at above{\eql at spread-\eql at skip@long at below}}
+  \def\eql at skip@cont at above{\eql at spread@val-\eql at skip@long at below}}
 \eql at define@key{setup}{belowcontskip}{%
   \def\eql at skip@cont at below{#1}}
 \eql at define@key{setup}{shortmode}{%
   \eql at decide@select{#3}{#2}{#1}{%
-    {{off,never,no}{\eql at skip@mode at short@\z@}},%
-    {{above,neverbelow,notbelow,belowoff}{\eql at skip@mode at short@\@ne}},%
-    {{belowone,belowsingle}{\eql at skip@mode at short@\tw@}},%
-    {{belowall,always,on}{\eql at skip@mode at short@\thr@@}}}}
+    {{off,never,no}{\def\eql at skip@mode at short{0}}},%
+    {{above,neverbelow,notbelow,belowoff}{\def\eql at skip@mode at short{1}}},%
+    {{belowone,belowsingle}{\def\eql at skip@mode at short{2}}},%
+    {{belowall,always,on}{\def\eql at skip@mode at short{3}}}}}
+\eql at define@key{setup}{abovecontmode}{%
+  \eql at decide@situation{#3}{#2}{#1}\eql at skip@mode at cont@above}
 \eql at define@key{setup}{belowcontmode}{%
-  \eql at decide@select{#3}{#2}{#1}{%
-    {{long}{\eql at skip@mode at cont@\z@}},%
-    {{short}{\eql at skip@mode at cont@\@ne}},%
-    {{cont}{\eql at skip@mode at cont@\tw@}}}}
+  \eql at decide@situation{#3}{#2}{#1}\eql at skip@mode at cont@below}
+\eql at define@key{setup}{aboveparmode}{%
+  \eql at decide@situation{#3}{#2}{#1}\eql at skip@mode at par@above}
 \eql at define@key{setup}{belowparmode}{%
-  \eql at decide@select{#3}{#2}{#1}{%
-    {{long}{\eql at skip@mode at par@\z@}},%
-    {{short}{\eql at skip@mode at par@\@ne}},%
-    {{cont}{\eql at skip@mode at par@\tw@}},%
-    {{par}{\eql at skip@mode at par@\thr@@}}}}
+  \eql at decide@situation{#3}{#2}{#1}\eql at skip@mode at par@below}
+\eql at define@key{setup}{abovetopmode}{%
+  \eql at decide@situation{#3}{#2}{#1}\eql at skip@mode at top@above}
 \eql at define@key{setup}{belowtopmode}{%
-  \eql at decide@select{#3}{#2}{#1}{%
-    {{long}{\eql at skip@mode at top@\z@}},%
-    {{short}{\eql at skip@mode at top@\@ne}},%
-    {{cont}{\eql at skip@mode at top@\tw@}},%
-    {{par}{\eql at skip@mode at top@\thre@@}},%
-    {{top}{\eql at skip@mode at top@4\relax}}}}
+  \eql at decide@situation{#3}{#2}{#1}\eql at skip@mode at top@below}
 \def\eql at keycat{equations,subequations}
 \eql at define@key\eql at keycat{label}{\eql at blocklabel@set{#1}}
 \eql at define@key\eql at keycat{tag}{\eql at blocktag@set{#1}}
 \eql at define@key\eql at keycat{tag*}{\eql at blocktag@setstar{#1}}
 \def\eql at keycat{equations,setup}
-\eql at define@key\eql at keycat{tagmargin}{\def\eql at tagmargin@val{#1}}
+\eql at define@key\eql at keycat{tagmargin}[]{\def\eql at tagmargin@val{#1}
+  \ifx\eql at tagmargin@val\@empty\let\eql at tagmargin@val\@undefined\fi}
 \eql at define@key\eql at keycat{tagmargin*}{%
   \settowidth\dimen@{#1}\edef\eql at tagmargin@val{\the\dimen@}}
-\eql at define@key\eql at keycat{tagmargincalc}[]{\let\eql at tagmargin@val\@undefined}
 \eql at define@key\eql at keycat{tagmarginratio}{%
   \eql at tagmargin@ratio@\dimexpr#1pt\relax}
 \eql at define@key\eql at keycat{tagmarginthreshold}{%
@@ -3885,20 +3805,26 @@
 \eql at define@key\eql at keycat{mintagwidth}{%
   \settowidth\dimen@{#1}\edef\eql at tagsepmin@val{\the\dimen@}}
 \eql at define@key\eql at keycat{mintagwidth*}{\settowidth\eql at tagwidthmin@{#1}}
-\eql at define@key{setup}{taglayout}{\eql at tag@setbox{#1}}
-\eql at define@key{setup}{taglayout*}{\eql at tag@setbox@{#1}}
+\eql at define@key{setup}{tagbox,taglayout}{\eql at tag@setbox{#1}}
+\eql at define@key{setup}{tagbox,taglayout*}{\eql at tag@setbox@{#1}}
 \eql at define@key{setup}{tagform}{\eql at tag@setform#1}
 \eql at define@key{setup}{tagform*}{\eql at tag@setform@{#1}}
-\eql at define@key{setup}{subeqtemplate}{\def\eql at subequations@template{#1}}
+\eql at define@key{setup}{subeqtemplate}{%
+  \def\eql at subequations@template####1####2{#1}%
+  \expandafter\def\expandafter\eql at subequations@template\expandafter{%
+    \eql at subequations@template\theparentequation{equation}}%
+}
 \eql at define@key{setup}{autolabel}[true]{%
-  \eql at decide@bool{#3}{#2}{#1}\eql at autolabel}
+  \eql at decide@bool{#3}{#2}{#1}\eql at numbering@autolabel}
 \eql at define@key{setup}{autotag}[true]{%
-  \eql at decide@bool{#3}{#2}{#1}\eql at autotag}
+  \eql at decide@bool{#3}{#2}{#1}\eql at numbering@autotag}
 \def\eql at keycat{equations,setup}
 \eql at define@key\eql at keycat{numberline,numline,n}[all]{%
   \eql at numbering@set{##1}}
-\eql at define@key\eql at keycat{nonumber,nn,*}[]{\let\eql at numbering@active\eql at false}
-\eql at define@key\eql at keycat{donumber,dn,!}[]{\let\eql at numbering@active\eql at true}
+\eql at define@key\eql at keycat{nonumber,nn,*}[]{%
+  \let\eql at numbering@active\eql at false}
+\eql at define@key\eql at keycat{donumber,dn,!}[]{%
+  \let\eql at numbering@active\eql at true}
 \eql at define@key\eql at keycat{number,num}[true]{%
   \eql at decide@bool{#3}{#2}{#1}\eql at numbering@active}
 \eql at define@key\eql at keycat{tagsleft,leqno}[]{\let\eql at tagsleft\eql at true}
@@ -3909,19 +3835,19 @@
     {{left,l}{\let\eql at tagsleft\eql at true}}}}
 \def\eql at keycat{equations,setup}
 \eql at define@key\eql at keycat{layout}{\eql at decide@select{#3}{#2}{#1}{%
-  {{center,c}{\let\eql at flushleft\eql at false}},%
-  {{left,l}{\let\eql at flushleft\eql at true}}}}
-\eql at define@key\eql at keycat{center}[]{\let\eql at flushleft\eql at false}
-\eql at define@key\eql at keycat{flushleft,left}[]{\let\eql at flushleft\eql at true}
-\eql at define@key\eql at keycat{leftmargin}{\def\eql at flushleftmargin@val{#1}}
+  {{center,c}{\let\eql at layoutleft\eql at false}},%
+  {{left,l}{\let\eql at layoutleft\eql at true}}}}
+\eql at define@key\eql at keycat{center}[]{\let\eql at layoutleft\eql at false}
+\eql at define@key\eql at keycat{flushleft,left}[]{\let\eql at layoutleft\eql at true}
+\eql at define@key\eql at keycat{leftmargin}{\def\eql at layoutleftmargin@val{#1}}
 \eql at define@key\eql at keycat{leftmargin*}{%
-  \settowidth\dimen@{#1}\edef\eql at flushleftmargin@val{\the\dimen@}}
+  \settowidth\dimen@{#1}\edef\eql at layoutleftmargin@val{\the\dimen@}}
 \eql at define@key\eql at keycat{minleftmargin}{%
-  \eql at flushleftmarginmin@\glueexpr#1\relax}
+  \eql at layoutleftmarginmin@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{maxleftmargin}{%
-  \eql at flushleftmarginmax@\glueexpr#1\relax}
+  \eql at layoutleftmarginmax@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{maxleftmargin*}[]{%
-  \eql at flushleftmarginmax@.5\maxdimen}
+  \eql at layoutleftmarginmax@.5\maxdimen}
 \def\eql at keycat{equations,setup}
 \eql at define@key\eql at keycat{marginbadness}{\eql at marginbadness@#1\relax}
 \eql at define@key\eql at keycat{maxbadness}{\eql at maxbadness@#1\relax}
@@ -3929,7 +3855,7 @@
 \eql at define@key\eql at keycat{maxcolsep}{\def\eql at colsepmax@val{#1}}
 \eql at define@key\eql at keycat{maxcolsep*}[]{\def\eql at colsepmax@val{.5\maxdimen}}
 \eql at define@key\eql at keycat{margins}[true]{%
-  \eql at decide@bool{#3}{#2}{#1}\eql at align@margins}
+  \eql at decide@bool{#3}{#2}{#1}\eql at columns@margins}
 \def\eql at keycat{equationsbox,setup}
 \eql at define@key\eql at keycat{margin}{%
   \def\eql at box@marginleft{#1}\def\eql at box@marginright{#1}}
@@ -3953,7 +3879,7 @@
 \def\eql at keycat{equations,equationsbox,setup}
 \eql at define@key\eql at keycat{classout}{\eql at class@innerleft at set{#1}}
 \eql at define@key\eql at keycat{classin}{\eql at class@innerright at set{#1}}
-\eql at define@key\eql at keycat{classin*}{\eql at class@innerlead at set{#1}}
+\eql at define@key\eql at keycat{classlead,classin*}{\eql at class@innerlead at set{#1}}
 \eql at define@key\eql at keycat{ampeq}[]{\eql at class@ampeq}
 \eql at define@key\eql at keycat{eqamp}[]{\eql at class@eqamp}
 \eql at define@key\eql at keycat{class}{\eql at decide@select{#3}{#2}{#1}{%
@@ -4005,6 +3931,80 @@
 \eql at define@key{setup}{eqref}[true]{%
   \eql at error@packageoption{#2}%
   \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at eqref}
+\def\eql at defaults@classic{%
+  \eqnlinesset{mintagsep={.5\fontdimen6\textfont2\relax}}%
+  \eqnlinesset{maxcolsep*}%
+  \eqnlinesset{spread={\jot}}%
+  \eqnlinesset{tagmargin}%
+  \eqnlinesset{tagmarginratio=1}%
+  \eqnlinesset{tagmarginthreshold=0.5}%
+  \eqnlinesset{leftmargin={\leftmargini}}%
+  \eqnlinesset{displayheight*}%
+  \eqnlinesset{displaydepth*}%
+  \eqnlinesset{shortmode=belowsingle}%
+  \eqnlinesset{abovecontmode=short}%
+  \eqnlinesset{belowcontmode=short}%
+  \eqnlinesset{aboveparmode=long}%
+  \eqnlinesset{belowparmode=long}%
+  \eqnlinesset{abovetopmode=long}%
+  \eqnlinesset{belowtopmode=long}%
+  \eqnlinesset{abovelongskip={\abovedisplayskip}}%
+  \eqnlinesset{belowlongskip={\belowdisplayskip}}%
+  \eqnlinesset{aboveshortskip={\abovedisplayshortskip}}%
+  \eqnlinesset{belowshortskip={\belowdisplayshortskip}}%
+  \eqnlinesset{abovemedskip={.5\abovedisplayskip}}%
+  \eqnlinesset{belowmedskip={.5\belowdisplayskip}}%
+  \eqnlinesset{abovecontskip=0pt}%
+  \eqnlinesset{belowcontskip=0pt}%
+  \eqnlinesset{aboveparskip=0pt}%
+  \eqnlinesset{belowparskip=0pt}%
+  \eqnlinesset{abovetopskip=0pt}%
+  \eqnlinesset{belowtopskip=0pt}%
+  \eqnlinesset{abovetagskip=0pt}%
+  \eqnlinesset{belowtagskip=0pt}%
+  \eqnlinesset{abovemedtagskip=0pt}%
+  \eqnlinesset{belowmedtagskip=0pt}%
+  \eqnlinesset{abovepartagskip=0pt}%
+  \eqnlinesset{belowpartagskip=0pt}%
+}
+\def\eql at defaults@eqnlines{%
+  \eqnlinesset{mintagsep=.5em}%
+  \eqnlinesset{maxcolsep=2em}%
+  \eqnlinesset{spread={0.2\normalbaselineskip}}%
+  \eqnlinesset{tagmargin}%
+  \eqnlinesset{tagmarginratio=.334}%
+  \eqnlinesset{tagmarginthreshold=0.5}%
+  \eqnlinesset{leftmargin={\leftmargini}}%
+  \eqnlinesset{displayheight}%
+  \eqnlinesset{displaydepth}%
+  \eqnlinesset{shortmode=above}%
+  \eqnlinesset{abovecontmode=noskip}%
+  \eqnlinesset{belowcontmode=long}%
+  \eqnlinesset{aboveparmode=long}%
+  \eqnlinesset{belowparmode=long}%
+  \eqnlinesset{abovetopmode=noskip}%
+  \eqnlinesset{belowtopmode=long}%
+  \eqnlinesset{longskip={0.75\normalbaselineskip
+    plus 0.25\normalbaselineskip minus 0.4\normalbaselineskip}}%
+  \eqnlinesset{aboveshortskip={0.0\normalbaselineskip
+    plus 0.25\normalbaselineskip}}%
+  \eqnlinesset{belowshortskip={0.0\normalbaselineskip
+    plus 0.25\normalbaselineskip}}%
+  \eqnlinesset{medskip={0.4\normalbaselineskip
+    plus 0.2\normalbaselineskip minus 0.2\normalbaselineskip}}%
+  \eqnlinesset{abovecontskip=0pt}%
+  \eqnlinesset{belowcontskip=0pt}%
+  \eqnlinesset{aboveparskip=0pt}%
+  \eqnlinesset{belowparskip=0pt}%
+  \eqnlinesset{abovetopskip=0pt}%
+  \eqnlinesset{belowtopskip=0pt}%
+  \eqnlinesset{abovetagskip=0pt}%
+  \eqnlinesset{belowtagskip=0pt}%
+  \eqnlinesset{abovemedtagskip=0pt}%
+  \eqnlinesset{belowmedtagskip=0pt}%
+  \eqnlinesset{abovepartagskip=0pt}%
+  \eqnlinesset{belowpartagskip=0pt}%
+}
 \newenvironment{eql at gathered}
   {\eqnaddopt{lines}\equationsbox}{\endequationsbox}
 \newenvironment{eql at multlined}
@@ -4021,7 +4021,7 @@
 \newenvironment{eql at align}
   {\eqnaddopt{align}\equations}{\endequations}
 \newenvironment{eql at flalign}
-  {\eqnaddopt{align,margins=false}\equations}{\endequations}
+  {\eqnaddopt{align,margins=false,maxcolsep*}\equations}{\endequations}
 \newenvironment{eql at equation*}
   {\eqnaddopt{nonumber}\eql at equation}{\endequations}
 \newenvironment{eql at gather*}
@@ -4266,11 +4266,6 @@
 \eql at define@key{provide}{sqr}[]{\eql at provide@sqr}
 \eql at define@key{provide}{ang}[]{\eql at provide@ang}
 \eql at define@key{provide}{eqref}[]{\eql at provide@cmd{eqref}{#1}}
-\eql at define@key{provide}{notag}[]{\eql at provide@cmd{notag}{#1}}
-\eql at define@key{provide}{thetag}[]{\eql at provide@cmd{thetag}{#1}}
-\eql at define@key{provide}{allowdisplaybreaks}[]{%
-  \eql at provide@cmd{allowdisplaybreaks}{#1}}
-\eql at define@key{provide}{numberwithin}[]{\eql at provide@cmd{numberwithin}{#1}}
 \eql at define@key{provide}{tagform}[]{%
   \def\tagform@##1{\maketag@@@{\eql at tag@form{#1}}}}
 \eql at define@key{provide}{maketag}[]{%
@@ -4283,6 +4278,9 @@
 \DeclareOption{leqno}{\eqnlinesset{tagsleft}}
 \DeclareOption{fleqn}{\eqnlinesset{left}}
 \DeclareOption*{\expandafter\eqnlinesset\expandafter{\CurrentOption}}
+\eql at defaults@eqnlines
+\eql at mode@columns
+\eql at mode@aligned
 \ProcessOptions
 \def\eql at error@packageoption#1{%
   \eql at error{may only use `#1' as a package option}%



More information about the tex-live-commits mailing list.