texlive[74571] Master/texmf-dist: eqnlines (11mar25)

commits+karl at tug.org commits+karl at tug.org
Tue Mar 11 21:06:49 CET 2025


Revision: 74571
          https://tug.org/svn/texlive?view=revision&revision=74571
Author:   karl
Date:     2025-03-11 21:06:49 +0100 (Tue, 11 Mar 2025)
Log Message:
-----------
eqnlines (11mar25)

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-03-11 20:06:37 UTC (rev 74570)
+++ trunk/Master/texmf-dist/doc/latex/eqnlines/README.txt	2025-03-11 20:06:49 UTC (rev 74571)
@@ -1,4 +1,4 @@
-eqnlines v0.5
+eqnlines v0.6
 Copyright 2024-2025 Niklas Beisert
 
 Based on the latex package amsmath:

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-03-11 20:06:37 UTC (rev 74570)
+++ trunk/Master/texmf-dist/source/latex/eqnlines/eqnlines.dtx	2025-03-11 20:06:49 UTC (rev 74571)
@@ -8,7 +8,7 @@
 % Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society.
 %
 % This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3c
+% conditions of the LaTeX Project Public License, either version 1.3
 % of this license or (at your option) any later version.
 % The latest version of this license is in
 %   https://www.latex-project.org/lppl.txt
@@ -23,10 +23,10 @@
 % and the derived files eqnlines.sty.
 %
 %<package|sample>\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-%<package&!dev>\ProvidesPackage{eqnlines}[2025/02/25 v0.5 Single- and multi-line equations]
-%<package&dev>\ProvidesPackage{eqnlines-dev}[2025/02/25 v0.5 Single- and multi-line equations (development)]
+%<package&!dev>\ProvidesPackage{eqnlines}[2025/03/11 v0.6 Single- and multi-line equations]
+%<package&dev>\ProvidesPackage{eqnlines-dev}[2025/03/11 v0.6 Single- and multi-line equations (development)]
 %<*driver>
-\def\thedate#1{2025/02/25}\def\theversion#1{v0.5}
+\def\thedate#1{2025/03/11}\def\theversion#1{v0.6}
 \ProvidesFile{eqnlines.dtx}[\thedate{} \theversion{} eqnlines reference manual file]
 \PassOptionsToClass{10pt,a4paper}{article}
 \documentclass{ltxdoc}
@@ -35,7 +35,6 @@
 \usepackage[hyperindex=false]{hyperref}
 \usepackage{hyperxmp}
 \usepackage[usenames]{color}
-\usepackage{amssymb}
 
 \AddToHook{begindocument/before}{\hypersetup{colorlinks=false}}
 \hypersetup{urlbordercolor={.5 1 1}}
@@ -154,7 +153,8 @@
   {\texttt{nbeisert at itp.phys.ethz.ch}}}
 \hypersetup{pdfauthor={Niklas Beisert}}
 \hypersetup{pdfsubject={Manual for the LaTeX2e Package eqnlines}}
-\date{\thedate{}, \theversion{}}
+\date{\thedate{}, \theversion{}\\[1ex]
+\url{https://ctan.org/pkg/eqnlines}}
 \maketitle
 
 \begin{center}
@@ -194,7 +194,7 @@
 the multi-line equation environments of the package \ctanpkg{amsmath}
 which have become an established standard for these purposes.
 
-The package \markpkg{eqnlines} builds upon and extends
+The package \ctanpkg{eqnlines} builds upon and extends
 the functionality of the \LaTeX{} and \ctanpkg{amsmath}
 equation environments with some new features
 as well as convenient options to adjust the layout where needed.
@@ -272,7 +272,7 @@
 provided by these packages.
 In the latter case,
 the equation environments of \LaTeX{} and \ctanpkg{amsmath}
-are either replaced or left in place while the \markpkg{eqnlines}
+are either replaced or left in place while the \ctanpkg{eqnlines}
 environments can be accessed using the alternate name |equations|.
 
 
@@ -303,7 +303,7 @@
 
 \medskip
 
-To use the \markpkg{eqnlines} package add the command
+To use the \ctanpkg{eqnlines} package add the command
 %
 \begin{center}
 |\usepackage{eqnlines}|
@@ -312,7 +312,7 @@
 to the preamble of the \LaTeX{} document.
 To use unrelated features of the \ctanpkg{amsmath} package
 or of the \ctanpkg{mathtools} extension,
-it makes sense to load these packages \emph{before} \markpkg{eqnlines}.
+it makes sense to load these packages \emph{before} \ctanpkg{eqnlines}.
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \subsection{Equations Environment}
@@ -336,6 +336,8 @@
 Furthermore, the environment accepts some modifiers
 (like the star modifier `|*|' for many other \LaTeX\ macros)
 which will be explained further below.
+These follow the scheme |{ !t~ !t* !t! !o !e{@} }| 
+according to the syntax of |\NewDocumentCommand|.
 
 We note that the equations environment should be started with a white space
 character `\texttt{\textvisiblespace}'
@@ -542,8 +544,7 @@
 
 \DescribeKey{taglayout}
 \DescribeKey{tagform}
-The typesetting of equation numbers and tags passes through
-two methods defined by \ctanpkg{amsmath},
+The typesetting of equation numbers and tags passes through two macros,
 one which defines the layout
 and another one which adds a decoration (brackets).
 These two methods can be adjusted via the options:
@@ -887,6 +888,15 @@
 or removed altogether via |noskip|.
 These keys also take the values |above|, |below| or |both|.
 
+\DescribeKey{par}
+The key |par| controls to whether 
+the equations environment end in horizontal mode (value |cont|)
+or in vertical mode (value |par|, default)
+with a dedicated amount of glue |belowparskip|.
+An environment can also end in vertical mode
+without interline skip (value |top|)
+and with glue |belowtopskip|.
+
 \DescribeKey{...skip}
 \DescribeInterfaceMacro{\vspace}
 \DescribeKey{...space}
@@ -898,23 +908,45 @@
 Additional glue can be added above or below equation environments
 by means of the options |abovespace| and |belowspace|.
 
-The package also maintains several global vertical space settings:
+The package also maintains several global vertical space settings
+|above|\textit{pos}|skip| and |below|\textit{pos}|skip|
+(sometimes \textit{pos}|skip| for both):
 %
 \DescribeKey{...skip}
 \begin{center}
-\begin{tabular}{llll}
-above & below & both & description \\
+\begin{tabular}{lll}
+\ldots\textit{pos}|skip| & both & description \\
 \hline
-|aboveskip| & |belowskip| & |skip| & standard amount of glue \\
-|aboveshortskip| & |belowshortskip| & -- & reduced glue for short equations \\
-|abovemedskip| & |belowmedskip| & |medskip| & medium amount of glue \\
-|abovetagskip| & |belowtagskip| & |tagskip|
-  & glue for outer raised/lowered tags \\
-|abovetopskip| & -- & -- & glue at top of vertical list \\
-|aboveparskip| & -- & -- & glue when starting a paragraph \\
-|abovecontskip| & -- & -- & glue when started from empty paragraph \\
+|...long...|   & |skip| & standard 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)\\
+|...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 \\
 \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|
+with the values:
+%
+\begin{center}
+\begin{tabular}{lll}
+name & 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) \\
+\end{tabular}
+\end{center}
 
 \DescribeKey{spread}
 \DescribeKey{strut}
@@ -990,11 +1022,11 @@
 as an optional argument.
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\subsection{Feature Selection and Package Options}
-\label{sec:features}
+\subsection{General Options}
+\label{sec:auxiliary}
 
 \DescribeInterfaceMacro{\eqnlinesset}
-Features and options of general nature can be selected by the commands:
+Options of general nature can be selected by the commands:
 %
 \begin{center}
 \begin{tabular}{rl}
@@ -1010,6 +1042,26 @@
 |\eqnlinesset| must be used afterwards.
 \textit{opts} is a comma-separated list of options.
 
+The package supplies the following general settings:
+\begin{center}
+\begin{tabular}{ll}
+option & description \\
+\hline
+|defaults=classic| 
+  & 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|) \\
+|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 \\
+\end{tabular}
+\end{center}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Feature Selection and Package Options}
+\label{sec:features}
+
 The following few settings can only be specified when loading the package,
 not via |\eqnlinesset|:
 %
@@ -1025,7 +1077,7 @@
 \end{center}
 %
 
-If the above settings are disabled, the package will only supply
+If the above settings are explicitly disabled, the package will only supply
 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:
@@ -1049,6 +1101,8 @@
 |ang| & provide |\<|\ldots|\>| \\
 \textit{cmd} & provide/overwrite macro |\|\textit{cmd}:\\
 & |eqref|, |notag|, |thetag|, |allowdisplaybreaks|, |numberwithin| \\
+|tagform| & provide/overwrite macro |\tagform@|\\
+|maketag| & provide/overwrite macro |\maketag@@@|\\
 \end{tabular}
 \end{center}
 
@@ -1189,11 +1243,11 @@
 of the package \ctanpkg{amsmath}.
 The present code is based on \ctanpkg{amsmath} v2.17t (2024/11/05).
 Compatibility with the \ctanpkg{amsmath} package is maintained
-whether \markpkg{eqnlines} is loaded before or after \ctanpkg{amsmath}.
-By default, \markpkg{eqnlines} will rename
+whether \ctanpkg{eqnlines} is loaded before or after \ctanpkg{amsmath}.
+By default, \ctanpkg{eqnlines} will rename
 the math environments of \ctanpkg{amsmath} with a prefix |ams...|
 and overwrite them with its own implementations.
-Alternatively, \markpkg{eqnlines} may assign individual names
+Alternatively, \ctanpkg{eqnlines} may assign individual names
 to the maths environments and preserve the ones of \ctanpkg{amsmath}.
 The other features provided by \ctanpkg{amsmath}
 can be used.
@@ -1204,7 +1258,7 @@
 provided by the \ctanpkg{mathtools} package.
 Compatibility with the \ctanpkg{mathtools} package
 has been tested with v1.31 (2024/10/04),
-and it is maintained whether \markpkg{eqnlines}
+and it is maintained whether \ctanpkg{eqnlines}
 is loaded before or after \ctanpkg{mathtools}.
 Some features like adding a box and emphasising
 equations via \ctanpkg{empheq} does not (yet) work.
@@ -1235,9 +1289,6 @@
 complete code documentation
 \item
 sample document
-\item
-pdf tagging
-\unskip\footnote{See \url{https://latex3.github.io/tagging-project/}}
 \end{itemize}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1244,6 +1295,25 @@
 \subsection{Revision History}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\paragraph{v0.6:} 2025/03/11
+
+\begin{itemize}
+\item
+preliminary pdf tagging support 
+(\url{https://latex3.github.io/tagging-project/})
+\item
+classic \LaTeX/\ctanpkg{amsmath} vs.\ \ctanpkg{eqnlines} presets
+\item
+changed vertical spacing schemes and added further options
+\item
+supplied dimensions processed by |\glueexpr|
+\item
+more independent of \ctanpkg{amsmath} structures
+\item
+internal reorganisations
+\end{itemize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \paragraph{v0.5:} 2025/02/25
 
 \begin{itemize}
@@ -1516,7 +1586,9 @@
 % \subsection{amsmath Integration}
 %
 %   \macro{\eql at amsmath@after}
-%   \macro{\eql at amsmath@futurebefore}
+%   \macro{\eql at amsmath@before}
+%   \macro{\eql at amsmath@undefine}
+%   \macro{\eql at amsmath@let}
 % We need to overwrite certain macros from \ctanpkg{amsmath}.
 % The method |\eql at amsmath@after| executes argument |#1|
 % after loading \ctanpkg{amsmath} is loaded.
@@ -1523,13 +1595,17 @@
 % It also runs the code if \ctanpkg{amsmath} has already been loaded.
 % Furthermore, loading \ctanpkg{amsmath} requires
 % certain macros to be undefined. To this end
-% |\eql at amsmath@futurebefore| will execute argument |#1|
-% before any future loading of \ctanpkg{amsmath}:
-%    \TODO might use |\@for| for undefine
+% |\eql at amsmath@before| will execute argument |#1|
+% before any future loading of \ctanpkg{amsmath}.
+% |\eql at amsmath@undefine| undefines a macro
+% in this way and |\eql at amsmath@let| overwrites
+% a macro of |\ctanpkg{amsmath}|:
 %    \begin{macrocode}
 \def\eql at amsmath@after#1{\AddToHook{package/amsmath/after}{#1}}
-\def\eql at amsmath@futurebefore#1{%
+\def\eql at amsmath@before#1{%
   \@ifpackageloaded{amsmath}{}{\AddToHook{package/amsmath/before}{#1}}}
+\def\eql at amsmath@undefine#1{\eql at amsmath@before{\let#1\@undefined}}
+\def\eql at amsmath@let#1#2{\eql at amsmath@undefine#1\let#1#2}
 %    \end{macrocode}
 %
 %
@@ -1574,7 +1650,7 @@
   #1\eql at regunset@\relax
   \AtBeginDocument{%
     \ifdim#1=\eql at regunset@
-      \setlength#1{#2}%
+      #1\glueexpr#2\relax
     \fi
   }%
 }
@@ -1674,6 +1750,7 @@
 % The extra spread of equation lines is specified by |\eql at spread|:
 %    \begin{macrocode}
 \def\eql at spread{\jot}
+\newdimen\eql at spread@amount@
 %    \end{macrocode}
 %
 %   \ldimen{\eql at tagfuzz@}
@@ -1687,28 +1764,19 @@
 \eql at tagfuzz@16sp\relax
 %    \end{macrocode}
 %
-%   \lskip{\eql at abovedisplayskip@}
-%   \lskip{\eql at belowdisplayskip@}
-% We need two registers |\eql at abovedisplayskip@| and
-% |\eql at belowdisplayskip@| to feed values
-% to the final adjustment section after the end of |\halign|
-% where |\setlength| of \ctanpkg{calc} would fail:
+%   \macro{\eql at display@height}
+%   \macro{\eql at display@depth}
+% An equation will appear to the surrounding text
+% with a fixed apparent height and depth specified
+% by |\eql at display@height| and |\eql at display@depth|, respectively.
+% By default it appears as a strut for equations:
 %    \begin{macrocode}
-\newskip\eql at abovedisplayskip@
-\newskip\eql at belowdisplayskip@
+\def\eql at display@height{\ht\eql at strutbox@}
+\def\eql at display@depth{\dp\eql at strutbox@}
 %    \end{macrocode}
 %
-%   \lskip{\eql at abovedisplaytagskip@}
-%   \lskip{\eql at belowdisplaytagskip@}
-%    \begin{macrocode}
-\newskip\eql at abovedisplaytagskip@
-\newskip\eql at belowdisplaytagskip@
-\eql at abovedisplaytagskip@\z at skip
-\eql at belowdisplaytagskip@\z at skip
-%    \end{macrocode}
-%
-%   \tcounter{\eql at displayshortmode@}
-% The setting |\eql at displayshortmode@| specifies
+%   \tcounter{\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.
@@ -1717,58 +1785,80 @@
 % 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 displayshortmode@
-\eql at displayshortmode@\tw@
+\newcount\eql at skip@mode at short@
+\eql at skip@mode at short@\tw@
 %    \end{macrocode}
 %
-%   \lskip{\eql at abovedisplaycontskip@}
-% The glue when an equation is at the top of a horizontal list
-% is specified by |\eql at abovedisplaycontskip@|:
 %    \begin{macrocode}
-\newskip\eql at abovedisplaycontskip@
-\eql at regsetdelayed\eql at abovedisplaycontskip@\abovedisplayshortskip
+\newcount\eql at skip@mode at cont@
+\eql at skip@mode at cont@\z@
 %    \end{macrocode}
 %
-%   \lskip{\eql at abovedisplaytopskip@}
-%   \lskip{\eql at belowdisplaytopskip@}
-% The glue when an equation is at the top of a vertical list
-% is specified by |\eql at abovedisplaytopskip@|
-% and |\eql at belowdisplaytopskip@|:
 %    \begin{macrocode}
-\newskip\eql at abovedisplaytopskip@
-\newskip\eql at belowdisplaytopskip@
-\eql at abovedisplaytopskip@\z at skip
-\eql at regsetdelayed\eql at belowdisplaytopskip@\belowdisplayskip
+\newcount\eql at skip@mode at par@
+\eql at skip@mode at par@\z@
 %    \end{macrocode}
 %
-%   \lskip{\eql at abovedisplayparskip@}
-% The glue when an equation starts a paragraph
-% is specified by |\eql at abovedisplaytopskip@|:
 %    \begin{macrocode}
-\newskip\eql at abovedisplayparskip@
-\eql at regsetdelayed\eql at abovedisplayparskip@\abovedisplayskip
+\newcount\eql at skip@mode at top@
+\eql at skip@mode at top@\z@
 %    \end{macrocode}
 %
-%   \macro{\eql at display@height}
-%   \macro{\eql at display@depth}
-% An equation will appear to the surrounding text
-% with a fixed apparent height and depth specified
-% by |\eql at display@height| and |\eql at display@depth|, respectively.
-% By default it appears as a strut for equations:
 %    \begin{macrocode}
-\def\eql at display@height{\ht\eql at strutbox@}
-\def\eql at display@depth{\dp\eql at strutbox@}
+\newcount\eql at skip@mode at leave@
+\let\eql at skip@force at leave\@undefined
 %    \end{macrocode}
 %
-%   \lskip{\eql at abovedisplaymedskip@}
-%   \lskip{\eql at belowdisplaymedskip@}
+%   \macro{\eql at skip@force at above}
+%   \macro{\eql at skip@force at below}
+%   \tcounter{\eql at skip@mode at above@}
+%   \tcounter{\eql at skip@mode at below@}
+% 0: short, 1: long, 2: cont, 3: par, 4: top, 5: no, 6: med, 7: custom
+%    \begin{macrocode}
+\newcount\eql at skip@mode at above@
+\newcount\eql at skip@mode at below@
+\let\eql at skip@force at above\@undefined
+\let\eql at skip@force at below\@undefined
+\let\eql at skip@custom at above\@undefined
+\let\eql at skip@custom at below\@undefined
+%    \end{macrocode}
+%
+%   \macro{\eql at skip@cont at above}
+% The glue when an equation is at the top of a horizontal list
+% is specified by |\eql at skip@cont at above|:
+%   \macro{\eql at skip@top at above}
+%   \macro{\eql at skip@top at below}
+% The glue when an equation is at the top of a vertical list
+% is specified by |\eql at skip@top at above|
+% and |\eql at skip@top at below|:
+%   \macro{\eql at skip@par at above}
+% The glue when an equation starts a paragraph
+% is specified by |\eql at skip@par at above|:
+%   \macro{\eql at skip@med at above}
+%   \macro{\eql at skip@med at below}
 % The surrounding glue for an equation with reduced spacing
-% is given by |\eql at abovedisplaymedskip@| and |\eql at belowdisplaymedskip@|:
+% is given by |\eql at skip@med at above| and |\eql at skip@med at below|:
+%
 %    \begin{macrocode}
-\newskip\eql at abovedisplaymedskip@
-\newskip\eql at belowdisplaymedskip@
-\eql at regsetdelayed\eql at abovedisplaymedskip@\belowdisplayshortskip
-\eql at regsetdelayed\eql at belowdisplaymedskip@\eql at belowdisplaymedskip@
+\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}
+% \TODO: parabove plus parskip?
+\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@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}
 %    \end{macrocode}
 %
 %   \ldimen{\eql at colsepmin@}
@@ -1885,7 +1975,10 @@
 % We should tell \ctanpkg{hyperref} about measuring processes
 % as we're not \ctanpkg{amsmath} and not being catered for:
 %    \begin{macrocode}
-\newif\ifmeasuring@
+% \newif\ifmeasuring@
+\ifdefined\measuring at true\else
+  \expandafter\newif\csname ifmeasuring@\endcsname
+\fi
 \AddToHook{package/hyperref/after}{
   \ifdefined\Hy at ifnotmeasuring
     \renewcommand\Hy at ifnotmeasuring[1]{\ifmeasuring@\else#1\fi}
@@ -1900,10 +1993,11 @@
 % We provide it in case \ctanpkg{amsmath} is absent,
 % and initialise it:
 %    \begin{macrocode}
+% \newif\if at display
 \ifdefined\@displaytrue\else
-\everydisplay\expandafter{\the\everydisplay\@displaytrue}
+  \expandafter\newif\csname if at display\endcsname
+  \everydisplay\expandafter{\the\everydisplay\@displaytrue}
 \fi
-\newif\if at display
 %    \end{macrocode}
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1934,7 +2028,76 @@
 %
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Tagging Support}
+%
+%    \begin{macrocode}
+\let\eql at tagging@on\eql at false
+\IfFormatAtLeastTF{2025-06-01}{%
+  \csname tag_if_active:T\endcsname{\let\eql at tagging@on\eql at true}}{}
+\ifdefined\eql at tagging@on
+  \def\eql at tagging@mathsave{%
+    \UseTaggingSocket{math/luamml/save/nNn}{{}\displaystyle{mtd}}}
+  \def\eql at tagging@mathaddlast{%
+    \UseTaggingSocket{math/luamml/mtable/finalizecol}{last}}
+  \def\eql at tagging@tagbegin{%
+    \UseTaggingSocket{math/display/tag/begin}}
+  \def\eql at tagging@tagend{%
+    \UseTaggingSocket{math/display/tag/end}}
+  \def\eql at tagging@tagsave{%
+    \UseTaggingSocket{math/luamml/mtable/tag/save}}
+  \def\eql at tagging@tagaddbox{%
+    \setbox\z@\copy\eql at tagbox@%
+    \UseTaggingSocket{math/luamml/mtable/tag/set}}
+  \def\eql at tagging@tablesaveinner{%
+    \UseExpandableTaggingSocket{math/luamml/mtable/innertable/save}}
+  \def\eql at tagging@tableaddinner{%
+    \UseTaggingSocket{math/luamml/mtable/innertable/finalize}}
+  \def\eql at tagging@tablesavelines{%
+    \UseExpandableTaggingSocket{math/luamml/mtable/finalize}{gather}}
+  \def\eql at tagging@tablesavealign{%
+    \UseExpandableTaggingSocket{math/luamml/mtable/finalize}{align}}
+  \def\eql at tagging@alignleft{%
+    \UseTaggingSocket{math/luamml/mtable/aligncol}{left}}
+  \def\eql at tagging@aligncenter{%
+    \UseTaggingSocket{math/luamml/mtable/aligncol}{center}}
+  \def\eql at tagging@alignright{%
+    \UseTaggingSocket{math/luamml/mtable/aligncol}{right}}
+  \let\eql at single@doscan\eql at true
+  \let\eql at scan@body\eql at scan@body at rescan
+  \ExplSyntaxOn
+  \def\eql at tagging@start{%
+    \bool_if:NF\l__math_collected_bool{%
+      \toks@\expandafter{\eql at tagging@opt}%
+      \edef\eql at tmp{{\@currenvir}{[\the\toks@] \the\eql at scan@reg@}}%
+      \expandafter\__math_process:nn\eql at tmp
+      \@kernel at math@registered at begin
+      \bool_set_true:N\l__math_collected_bool
+    }%
+  }
+  \def\eql at tagging@end{}
+  \ExplSyntaxOff
+\else
+  \def\eql at tagging@mathsave{}
+  \def\eql at tagging@mathaddlast{}
+  \def\eql at tagging@tagbegin{}
+  \def\eql at tagging@tagend{}
+  \def\eql at tagging@tagsave{}
+  \def\eql at tagging@tagaddbox{}
+  \def\eql at tagging@tablesaveinner{}
+  \def\eql at tagging@tableaddinner{}
+  \def\eql at tagging@tablesavelines{}
+  \def\eql at tagging@tablesavealign{}
+  \def\eql at tagging@alignleft{}
+  \def\eql at tagging@aligncenter{}
+  \def\eql at tagging@alignright{}
+  \def\eql at tagging@start{}
+  \def\eql at tagging@end{}
+\fi
+%    \end{macrocode}
+%
+%
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % \section{Punctuation}
 %
 % The equations environments supply an automatic punctuation scheme
@@ -2115,8 +2278,7 @@
   \eql at box@lastfield
   \cr
   \noalign{%
-    \setlength\skip@{#1}%
-    \vskip\skip@
+    \vskip\glueexpr#1\relax
   }%
 }
 %    \end{macrocode}
@@ -2143,10 +2305,10 @@
   \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
@@ -2156,12 +2318,14 @@
           ##%
           \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@
@@ -2176,10 +2340,12 @@
           ##%
           \eql at punct@apply at col
           \eql at hook@colout
+          \eql at tagging@mathsave
         $%
+        \eql at tagging@mathaddlast
       }%
       \hfil
-      \tabskip\eql at colsep@
+      \tabskip\eql at colsep@\relax
     \crcr
     \noalign{%
       \eql at hook@blockbefore
@@ -2202,44 +2368,49 @@
   \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
-      $%
-    }%
-    \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@
-    \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@
-    \or
-      \skip@\@flushglue
-      \advance\skip@\eql at paddingleft@\relax
-      \advance\skip@\eql at paddingright@\relax
-      \hskip\skip@
-      \box\eql at fieldbox@
-    \fi
-    \tabskip\eql at colsep@
+      \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
@@ -2259,6 +2430,7 @@
     \noalign{%
       \eql at hook@blockafter
     }%
+    \eql at tagging@tablesaveinner
   \egroup
 }
 %    \end{macrocode}
@@ -2275,17 +2447,16 @@
   \eql at nextopt@process{equationsbox}%
   \let\eql at punct@block\eql at punct@main
   \let\eql at punct@main\relax
-  \setlength\eql at colsep@\eql at box@colsep
-  \setlength\eql at paddingleft@\eql at paddingleft@val
-  \setlength\eql at paddingright@\eql at paddingright@val
-  \setlength\eql at indent@\eql at indent@val
+  \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
-  \setlength\skip@\eql at box@marginleft
-  \hskip\skip@
+  \hskip\glueexpr\eql at box@marginleft\relax
   \eql at box@box\bgroup
     \eql at display@leave
     \let\\\eql at box@cr
@@ -2302,8 +2473,8 @@
 \newcommand{\eql at box@end}{%
     \eql at box@close
   \egroup
-  \setlength\skip@\eql at box@marginright
-  \hskip\skip@
+  \eql at tagging@tableaddinner
+  \hskip\glueexpr\eql at box@marginright\relax
   \eql at stack@restore
   \eql at box@endmath
 }
@@ -2342,210 +2513,21 @@
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \section{Subequation Numbering}
-%
-% We replicate the \ctanpkg{amsmath} functionality to
-% number a block of equations with a common number and
-% a sub-numbering.
-%
-%   \lcounter{parentequation}
-% We define a counter to store the main equation number
-% while in subequation mode.
-% It makes sense to share this definition
-% with \ctanpkg{amsmath} as |parentequation|,
-% and we need to undefine it when \ctanpkg{amsmath}
-% is loaded at a later stage:
-%    \begin{macrocode}
-\eql at amsmath@futurebefore{
-  \let\c at parentequation\@undefined
-  \let\theparentequation\@undefined
-}
-\ifdefined\c at parentequation\else
-\newcounter{parentequation}
-\fi
-%    \end{macrocode}
-%
-%   \macro{\eql at subequations@template}
-% We store a template which will installed as |\theequation|
-% in subequations mode:
-% \TODO need to protect something?!
-%    \begin{macrocode}
-\def\eql at subequations@template{\theparentequation\alph{equation}}
-%    \end{macrocode}
-%
-%   \macro{\eql at subequations@active}
-% A boolean register which tells whether subequations are in use
-% and thus must not be invoked again:
-%    \begin{macrocode}
-\let\eql at subequations@active\eql at false
-%    \end{macrocode}
-%
-%   \macro{\eql at subequations@init}
-% Low-level initialise the subequations mode.
-% Store the equation counter in |\eql at subequations@restorecounter|
-% for the case that no equation numbers will be used.
-% Step the equation counter, copy it to |parentequation|
-% and initialise |\theparentequation|
-% (and its \ctanpkg{hyperref} counterpart)
-% with the expanded current value of |\theequation|;
-% fill with tag data instead if a tag has been specified.
-% Reset the equation counter and use the template
-% for |\thequation|:
-%    \begin{macrocode}
-\def\eql at subequations@init{%
-  \edef\eql at subequations@restorecounter{%
-    \global\c at equation\the\c at equation\relax}%
-  \ifdefined\eql at blocktag
-    \expandafter\eql at tag@makenext\eql at blocktag
-    \eql at nexttag
-    \global\advance\eql at numbering@refcount@\@ne
-    \protected at edef\theHparentequation{eql-\the\eql at numbering@refcount@}%
-    \protected at edef\theparentequation{\eql at tag@text}%
-  \else
-    \advance\c at equation\@ne
-    \protected at edef\theparentequation{\theequation}%
-    \ifdefined\theHequation
-      \protected at edef\theHparentequation{\theHequation}%
-    \fi
-  \fi
-  \global\c at parentequation\c at equation
-  \global\c at equation\z@
-  \let\theequation\eql at subequations@template
-  \def\theHequation{\theHparentequation.\arabic{equation}}%
-}
-%    \end{macrocode}
-%
-%   \macro{\eql at subequations@close}
-% Low-level close the subequations mode.
-% If no number has been used, return to the original equation counter,
-% otherwise use the value stored in |parentequation|.
-% Note that we cannot use |\setcounter| here because the
-% \ctanpkg{calc} version would involve actions which are not
-% allowed after |\halign| within a display equation:
-%    \begin{macrocode}
-\def\eql at subequations@close{%
-  \ifnum\c at equation=\z@
-    \eql at subequations@restorecounter
-  \else
-    \global\c at equation\c at parentequation
-  \fi
-}
-%    \end{macrocode}
-%
-%   \macro{\eql at subequations@start}
-% Start the subequations environment with optional parameters in |#1|.
-% Enter subequations mode and set an anchor for subsequent |\label|'s.
-% Manually print the \ctanpkg{showkeys} tag:
-% \TODO join with other similar anchor routines |\eql at numbering@printsubeqlabel|
-%    \begin{macrocode}
-\def\eql at subequations@start{%
-  \let\eql at blocktag\@undefined
-  \let\eql at blocklabel\@undefined
-  \eql at nextopt@process{subequations}%
-  \eql at subequations@init
-  \global\advance\eql at numbering@refcount@\@ne
-  \edef\eql at subequations@currentHref{equation.eql-\the\eql at numbering@refcount@}%
-  \eql at Hy@anchor\eql at subequations@currentHref
-  \edef\eql at subequations@thepage{\thepage}%
-  \def\@currentcounter{equation}%
-  \let\@currentHref\eql at subequations@currentHref
-  \protected at edef\@currentlabel{\p at equation\theparentequation}%
-  \let\@currentlabelname\eql at labelname@default
-  \let\eql at subequations@active\eql at true
-  \ifdefined\eql at blocklabel
-    \ifdefined\eql at SK
-      \SK@\SK@@label\eql at blocklabel
-    \fi
-  \fi
-  \ignorespaces
-}
-%    \end{macrocode}
-%
-%   \macro{\eql at subequations@end}
-% End the subequations environment.
-% Issue the label if one has been specified and
-% an equation number has actually been used.
-% Then close subequations mode:
-%    \begin{macrocode}
-\def\eql at subequations@end{%
-  \ifnum\c at equation>\z@
-    \ifdefined\eql at blocklabel
-      \begingroup
-        \def\@currentcounter{equation}%
-        \let\thepage\eql at subequations@thepage
-        \let\@currentHref\eql at subequations@currentHref
-% \TODO how about tag* ?! also within equations!
-        \protected at edef\@currentlabel{\p at equation\theparentequation}%
-        \let\@currentlabelname\eql at labelname@default
-        \expandafter\eql at label@clean\expandafter{\eql at blocklabel}%
-      \endgroup
-    \fi
-  \fi
-  \eql at subequations@close
-  \ignorespacesafterend
-}
-%    \end{macrocode}
-%
-%   \environment{subequations}
-% The subequations environment tests for optional parameters
-% and passes on to the start and end routines:
-%    \begin{macrocode}
-\newenvironment{eql at subequations}{%
-%<dev>\eql at dev@enterenv
-  \eql at subequations@testall\eql at subequations@start%
-}{%
-  \eql at subequations@end
-%<dev>\eql at dev@leaveenv
-}
-%    \end{macrocode}
-%
-% \TODO describe
-%    \begin{macrocode}
-\def\eql at subequations@testall{\eql at subequations@testopt}
-\def\eql at subequations@testopt#1{%
-  \eql at ifnextchar@tight[%]
-    {\eql at subequations@addopt{\eql at subequations@testat{#1}}}%
-    {\eql at subequations@testat{#1}}}
-\def\eql at subequations@addopt#1[#2]{\eqnaddopt{#2}#1}
-\def\eql at subequations@testat#1{%
-  \eql at ifat@tight%
-    {\eql at subequations@addlabel{#1}}%
-    {#1}}
-\def\eql at subequations@addlabel#1#2{\eqnaddopt{label={#2}}#1}
-%    \end{macrocode}
-%
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % \section{Equation Numbering}
 %
 % \TODO describe
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \subsection{Macros Shared with Amsmath}
+% \subsection{Tag Formatting}
 %
 % \TODO describe
 %
-%   \macro{\maketag@@@}
 %    \begin{macrocode}
-\ifdefined\maketag@@@\else
-\def\maketag@@@#1{\hbox{\m at th\normalfont#1}}
-\fi
-%    \end{macrocode}
-%
-%   \macro{\tagform@}
-%    \begin{macrocode}
-\ifdefined\tagform@\else
-\def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}
-\fi
-%    \end{macrocode}
-%
-%    \begin{macrocode}
-\def\eql at tag@setmake@#1{%
-  \def\maketag@@@##1{\hbox{\m at th\normalfont#1}}%
+\def\eql at tag@setbox@#1{%
+  \def\eql at tag@box##1{#1}%
 }
-\def\eql at tag@setmake#1{%
-  \def\maketag@@@##1{\hbox{\m at th\normalfont#1}}%
+\def\eql at tag@setbox#1{%
+  \def\eql at tag@box##1{\hbox{\m at th\normalfont#1}}%
 }
 %    \end{macrocode}
 %
@@ -2552,15 +2534,21 @@
 % \TODO describe
 %    \begin{macrocode}
 \def\eql at tag@setform@#1{%
-  \def\tagform@##1{\maketag@@@{#1}}%
+  \def\eql at tag@form##1{#1}%
 }
 \def\eql at tag@setform#1#2#3{%
-  \def\tagform@##1{\maketag@@@{#1\ignorespaces#2\unskip\@@italiccorr#3}}%
+  \def\eql at tag@form##1{#1\ignorespaces#2\unskip\@@italiccorr#3}%
 }
 %    \end{macrocode}
-
+%
+%    \begin{macrocode}
+\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}}}
+%    \end{macrocode}
+%
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%    \paragraph{raise tags}
+%    \paragraph{Raise Tags}
 %
 %   \ldimen{\eql at raisetag@amount@}
 %    \begin{macrocode}
@@ -2577,14 +2565,12 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\eql at amsmath@after{\let\eql at raisetag@default\raisetag}
-\eql at amsmath@futurebefore{\let\raisetag\@undefined}
-\let\raisetag\eql at raisetag@default
+\eql at amsmath@let\raisetag\eql at raisetag@default
 %    \end{macrocode}
 %
 %    \TODO maybe introduce a star form to enforce raise?
 %    \begin{macrocode}
-\def\eql at raisetag#1{\setlength\dimen@{#1}\global\eql at raisetag@amount@\dimen@}%
+\def\eql at raisetag#1{\global\eql at raisetag@amount@\glueexpr#1\relax}%
 %    \end{macrocode}
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2593,33 +2579,33 @@
 % \TODO describe
 %
 %    \begin{macrocode}
-\let\eql at SK\@undefined
-\let\eql at SK@lab at relax\@empty
-\let\eql at SK@makelabel\@gobble
+\let\eql at SK@loaded\eql at false
+\let\eql at SK@label\@gobble
+\let\eql at SK@clearlabel\@empty
+\let\eql at SK@setlabel\@gobble
 \let\eql at SK@printlabel at right\@empty
 \let\eql at SK@printlabel at left\@empty
 \let\eql at SK@printlabel at line\@empty
 \def\eql at label@clean{\eql at label@org}
 \AddToHook{package/showkeys/after}{
-  \let\eql at SK\@empty
-  \def\eql at SK@lab at relax{\let\eql at SK@lab\relax}
-  \eql at SK@lab at relax
+  \let\eql at SK@loaded\eql at true
+  \def\eql at SK@label#1{\SK@\SK@@label#1}
+  \def\eql at SK@clearlabel{\let\eql at SK@lab\relax}
+  \eql at SK@clearlabel
   \def\eql at SK@@label#1>#2\SK@{%
     \def\eql at SK@lab{\smash{\SK at labelcolor\showkeyslabelformat{#2}}}%
   }
-  \def\eql at SK@makelabel#1{%
-    \SK@\eql at SK@@label#1%
-  }
+  \def\eql at SK@setlabel#1{\SK@\eql at SK@@label#1}
   \def\eql at SK@printlabel at right{%
     \ifx\eql at SK@lab\relax\else
       \rlap{\kern\marginparsep\eql at SK@lab}%
-      \eql at SK@lab at relax
+      \eql at SK@clearlabel
     \fi
   }
   \def\eql at SK@printlabel at left{%
     \ifx\eql at SK@lab\relax\else
       \llap{\eql at SK@lab\kern\marginparsep}%
-      \eql at SK@lab at relax
+      \eql at SK@clearlabel
     \fi
   }
   \def\eql at SK@printlabel at line{%
@@ -2631,7 +2617,7 @@
           \eql at SK@lab
           \kern\marginparsep
         }%
-        \eql at SK@lab at relax
+        \eql at SK@clearlabel
       \else
         \rlap{%
           \dimen@\displaywidth
@@ -2640,7 +2626,7 @@
           \eql at SK@lab
         }%
       \fi
-      \eql at SK@lab at relax
+      \eql at SK@clearlabel
       \prevdepth\dimen@
     \fi
   }
@@ -2678,9 +2664,6 @@
 %    \begin{macrocode}
 \def\eql at tag@default{%
   \eql at error{\string\tag\space not allowed here}{}\eql at tag@gobble}
-\eql at amsmath@after{
-  \let\eql at tag@default\tag
-}
 \let\tag\eql at tag@default
 %    \end{macrocode}
 %
@@ -2719,7 +2702,7 @@
 %    \begin{macrocode}
 \def\eql at tag@makenext at star[#1]#2{%
   \global\def\eql at nexttag{%
-    \let\eql at tag@tool\maketag@@@
+    \let\eql at tag@tool\@firstofone
     \protected at edef\eql at tag@text{#2}%
     \protected at edef\eql at tag@label{#1}%
   }%
@@ -2726,7 +2709,7 @@
 }
 \def\eql at tag@makenext@[#1]#2{%
   \global\def\eql at nexttag{%
-    \let\eql at tag@tool\tagform@
+    \let\eql at tag@tool\eql at tag@form
     \protected at edef\eql at tag@text{#2}%
     \protected at edef\eql at tag@label{#1}%
     \protected at edef\eql at tag@label{\p at equation\eql at tag@label}%
@@ -2743,13 +2726,15 @@
 %    \begin{macrocode}
 \newcount\eql at numbering@refcount@
 \eql at numbering@refcount@\z@
+\def\eql at numbering@ref{equation.eql-\the\eql at numbering@refcount@}
+\def\eql at numbering@refstep{\global\advance\eql at numbering@refcount@\@ne}
 %    \end{macrocode}
 %
 % \TODO describe
 %    \begin{macrocode}
 \def\eql at numbering@makeblockanchor{%
-  \global\advance\eql at numbering@refcount@\@ne
-  \global\edef\eql at label@currentHref{equation.eql-\the\eql at numbering@refcount@}%
+  \eql at numbering@refstep
+  \global\edef\eql at label@currentHref{\eql at numbering@ref}%
   \eql at Hy@anchor\eql at label@currentHref
   \global\edef\eql at label@thepage{\thepage}%
 }
@@ -2773,13 +2758,13 @@
     \eql at nexttag
     \def\@currentcounter{equation}%
     \let\@currentlabel\eql at tag@label
-    \global\advance\eql at numbering@refcount@\@ne
-    \edef\@currentHref{equation.eql-\the\eql at numbering@refcount@}%
+    \eql at numbering@refstep
+    \edef\@currentHref{\eql at numbering@ref}%
     \eql at Hy@anchor\@currentHref
     \global\let\eql at nexttag\@undefined
   \else
     \refstepcounter{equation}%
-    \let\eql at tag@tool\tagform@
+    \let\eql at tag@tool\eql at tag@form
     \edef\eql at tag@text{\theequation}%
   \fi
 }
@@ -2788,7 +2773,7 @@
 %    \begin{macrocode}
 \def\eql at compose@label{%
   \ifmeasuring@\else
-    \eql at SK@lab at relax
+    \eql at SK@clearlabel
     \ifdefined\eql at nextlabel
       \ifnum
         \ifnum\eql at numbering@target@<\z@
@@ -2806,7 +2791,7 @@
 % \TODO describe
 %    \begin{macrocode}
 \def\eql at compose@label@{%
-  \eql at SK@makelabel\eql at nextlabel
+  \eql at SK@setlabel\eql at nextlabel
   \begingroup
     \ifnum\eql at numbering@target@=\eql at row@
       \eql at numbering@setblockanchor
@@ -2821,7 +2806,12 @@
 % \TODO describe
 %    \begin{macrocode}
 \def\eql at compose@tag{%
-  \eql at tag@tool\eql at tag@text
+  \eql at tagging@tagbegin
+  \eql at tag@box{%
+    \eql at tag@tool\eql at tag@text
+    \eql at tagging@tagsave
+  }%
+  \eql at tagging@tagend
 }
 %    \end{macrocode}
 %
@@ -2845,10 +2835,10 @@
 \def\eql at compose@measure{%
   \ifdefined\eql at nexttag
     \eql at nexttag
-    \eql at tag@tool\eql at tag@text
+    \eql at tag@box{\eql at tag@tool\eql at tag@text}%
   \else
     \stepcounter{equation}%
-    \tagform@\theequation
+    \eql at tag@box{\eql at tag@form\theequation}%
   \fi
   \ifnum\eql at numbering@target@<\z@
     \global\let\eql at nextlabel\@undefined
@@ -2936,7 +2926,7 @@
 \def\eql at numbering@printsubeqlabel{%
   \ifdefined\eql at parentlabel
     \eql at numbering@makeblockanchor
-    \eql at SK@makelabel\eql at parentlabel
+    \eql at SK@setlabel\eql at parentlabel
     \begingroup
       \def\@currentcounter{equation}%
       \eql at numbering@setblockanchor
@@ -3118,7 +3108,6 @@
 \let\eql at numbering@blocktag\@undefined
 %    \end{macrocode}
 %
-% \TODO where does this belong?
 %    \begin{macrocode}
 \eql at amsmath@after{
   \let\eql at print@eqnum at default\print at eqnum
@@ -3372,11 +3361,189 @@
 }
 %    \end{macrocode}
 %
+%
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \subsection{Subequations}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Subequation Numbering}
 %
+% We replicate the \ctanpkg{amsmath} functionality to
+% number a block of equations with a common number and
+% a sub-numbering.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Definitions}
+%
+%   \lcounter{parentequation}
+% We define a counter to store the main equation number
+% while in subequation mode.
+% It makes sense to share this definition
+% with \ctanpkg{amsmath} as |parentequation|,
+% and we need to undefine it when \ctanpkg{amsmath}
+% is loaded at a later stage:
+%    \begin{macrocode}
+\eql at amsmath@undefine\c at parentequation
+\eql at amsmath@undefine\theparentequation
+\ifdefined\c at parentequation\else
+\newcounter{parentequation}
+\fi
+%    \end{macrocode}
+%
+%   \macro{\eql at subequations@template}
+% We store a template which will installed as |\theequation|
+% in subequations mode:
+% \TODO need to protect something?!
+%    \begin{macrocode}
+\def\eql at subequations@template{\theparentequation\alph{equation}}
+%    \end{macrocode}
+%
+%   \macro{\eql at subequations@active}
+% A boolean register which tells whether subequations are in use
+% and thus must not be invoked again:
+%    \begin{macrocode}
+\let\eql at subequations@active\eql at false
+%    \end{macrocode}
+%
+%   \macro{\eql at subequations@init}
+% Low-level initialise the subequations mode.
+% Store the equation counter in |\eql at subequations@restorecounter|
+% for the case that no equation numbers will be used.
+% Step the equation counter, copy it to |parentequation|
+% and initialise |\theparentequation|
+% (and its \ctanpkg{hyperref} counterpart)
+% with the expanded current value of |\theequation|;
+% fill with tag data instead if a tag has been specified.
+% Reset the equation counter and use the template
+% for |\thequation|:
+%    \begin{macrocode}
+\def\eql at subequations@init{%
+  \edef\eql at subequations@restorecounter{%
+    \global\c at equation\the\c at equation\relax}%
+  \ifdefined\eql at blocktag
+    \expandafter\eql at tag@makenext\eql at blocktag
+    \eql at nexttag
+    \eql at numbering@refstep
+    \protected at edef\theHparentequation{\eql at numbering@ref}%
+    \protected at edef\theparentequation{\eql at tag@text}%
+  \else
+    \advance\c at equation\@ne
+    \protected at edef\theparentequation{\theequation}%
+    \ifdefined\theHequation
+      \protected at edef\theHparentequation{\theHequation}%
+    \fi
+  \fi
+  \global\c at parentequation\c at equation
+  \global\c at equation\z@
+  \let\theequation\eql at subequations@template
+  \def\theHequation{\theHparentequation.\arabic{equation}}%
+}
+%    \end{macrocode}
+%
+%   \macro{\eql at subequations@close}
+% Low-level close the subequations mode.
+% If no number has been used, return to the original equation counter,
+% otherwise use the value stored in |parentequation|.
+% Note that we cannot use |\setcounter| here because the
+% \ctanpkg{calc} version would involve actions which are not
+% allowed after |\halign| within a display equation:
+%    \begin{macrocode}
+\def\eql at subequations@close{%
+  \ifnum\c at equation=\z@
+    \eql at subequations@restorecounter
+  \else
+    \global\c at equation\c at parentequation
+  \fi
+}
+%    \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Environment}
+%
+%   \macro{\eql at subequations@start}
+% Start the subequations environment with optional parameters in |#1|.
+% Enter subequations mode and set an anchor for subsequent |\label|'s.
+% Manually print the \ctanpkg{showkeys} tag:
+% \TODO join with other similar anchor routines |\eql at numbering@printsubeqlabel|
+%    \begin{macrocode}
+\def\eql at subequations@start{%
+  \let\eql at blocktag\@undefined
+  \let\eql at blocklabel\@undefined
+  \eql at nextopt@process{subequations}%
+  \eql at subequations@init
+  \eql at numbering@refstep
+  \edef\eql at subequations@currentHref{\eql at numbering@ref}%
+  \eql at Hy@anchor\eql at subequations@currentHref
+  \edef\eql at subequations@thepage{\thepage}%
+  \def\@currentcounter{equation}%
+  \let\@currentHref\eql at subequations@currentHref
+  \protected at edef\@currentlabel{\p at equation\theparentequation}%
+  \let\@currentlabelname\eql at labelname@default
+  \let\eql at subequations@active\eql at true
+  \ifdefined\eql at blocklabel
+    \eql at SK@label\eql at blocklabel
+  \fi
+  \ignorespaces
+}
+%    \end{macrocode}
+%
+%   \macro{\eql at subequations@end}
+% End the subequations environment.
+% Issue the label if one has been specified and
+% an equation number has actually been used.
+% Then close subequations mode:
+%    \begin{macrocode}
+\def\eql at subequations@end{%
+  \ifnum\c at equation>\z@
+    \ifdefined\eql at blocklabel
+      \begingroup
+        \def\@currentcounter{equation}%
+        \let\thepage\eql at subequations@thepage
+        \let\@currentHref\eql at subequations@currentHref
+% \TODO how about tag* ?! also within equations!
+        \protected at edef\@currentlabel{\p at equation\theparentequation}%
+        \let\@currentlabelname\eql at labelname@default
+        \expandafter\eql at label@clean\expandafter{\eql at blocklabel}%
+      \endgroup
+    \fi
+  \fi
+  \eql at subequations@close
+  \ignorespacesafterend
+}
+%    \end{macrocode}
+%
+%   \environment{subequations}
+% The subequations environment tests for optional parameters
+% and passes on to the start and end routines:
+%    \begin{macrocode}
+\newenvironment{eql at subequations}{%
+%<dev>\eql at dev@enterenv
+  \eql at subequations@testall\eql at subequations@start%
+}{%
+  \eql at subequations@end
+%<dev>\eql at dev@leaveenv
+}
+%    \end{macrocode}
+%
 % \TODO describe
+%    \begin{macrocode}
+\def\eql at subequations@testall{\eql at subequations@testopt}
+\def\eql at subequations@testopt#1{%
+  \eql at ifnextchar@tight[%]
+    {\eql at subequations@addopt{\eql at subequations@testat{#1}}}%
+    {\eql at subequations@testat{#1}}}
+\def\eql at subequations@addopt#1[#2]{\eqnaddopt{#2}#1}
+\def\eql at subequations@testat#1{%
+  \eql at ifat@tight%
+    {\eql at subequations@addlabel{#1}}%
+    {#1}}
+\def\eql at subequations@addlabel#1#2{\eqnaddopt{label={#2}}#1}
+%    \end{macrocode}
 %
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Subequation Scheme}
+%
+% \TODO describe
+%
 %    \begin{macrocode}
 \def\eql at numbering@subeq at init{%
   \let\eql at save@theequation\theequation
@@ -3447,9 +3614,8 @@
 %    \begin{macrocode}
 \DeclareRobustCommand{\eql at displaybreak@default}[1][4]{%
   \eql at warning{Invalid use of \string\displaybreak}{}}
-\eql at amsmath@futurebefore{\let\displaybreak\@undefined}
 \eql at amsmath@after{\let\eql at displaybreak@default\displaybreak}
-\let\displaybreak\eql at displaybreak@default
+\eql at amsmath@let\displaybreak\eql at displaybreak@default
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -3498,14 +3664,6 @@
 %
 % \TODO describe
 %
-%   \macro{\eql at display@atend}
-%    \begin{macrocode}
-\def\eql at display@atend#1{%
-  \expandafter\def\expandafter\eql at display@doatend\expandafter
-    {\eql at display@doatend#1}%
-}
-%    \end{macrocode}
-%
 %   \lskip{\eql at vspaceskip@}
 %   \lskip{\eql at abovespace@}
 %   \lskip{\eql at belowspace@}
@@ -3517,9 +3675,7 @@
 \let\eql at vspace@org\vspace
 \def\eql at vspace{\eql at ifstar@loose\eql at vspace@\eql at vspace@}
 \def\eql at vspace@#1{%
-  \setlength\skip@{#1}%
-  \global\advance\eql at vspaceskip@\skip@
-}
+  \global\advance\eql at vspaceskip@\glueexpr#1\relax}
 %    \end{macrocode}
 %
 %   \macro{\eql at display@init}
@@ -3541,55 +3697,141 @@
 % \TODO must not use setlength or setcounter when calc is loaded
 %    \begin{macrocode}
 \def\eql at display@close{%
+  \ifdim\eql at display@firstavail@<\z@
+    \eql at display@firstavail@\z@
+  \fi
+  \eql at skip@mode at leave@\z@
   \ifdim\eql at halign@prevdepth@=\maxdimen
     \ifdim\predisplaysize=-\maxdimen
-%  \TODO hbox was clear (noindent)
-      \abovedisplayskip\eql at abovedisplaycontskip@
-% \TODO whether to enable or disable short
-      \predisplaysize\maxdimen
-      \abovedisplayshortskip\abovedisplayskip
-      \belowdisplayshortskip\belowdisplayskip
+      \eql at skip@mode at above@\tw@
+      \eql at skip@mode at below@\eql at skip@mode at cont@
+    \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@
+        \or
+          \eql at skip@mode at above@\@ne
+        \or
+          \eql at skip@mode at above@\@ne
+          \ifnum\eql at row@=\tw@
+            \eql at skip@mode at below@\@ne
+          \fi
+        \or
+          \eql at skip@mode at above@\@ne
+          \eql at skip@mode at below@\@ne
+        \fi
+      \fi
     \fi
   \else
-%  \TODO should tagskip be allowed to override these?! rather not
-    \ifdim\eql at halign@prevdepth@=\@m\p@
+    \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@
-      \abovedisplayskip\eql at abovedisplaytopskip@
-% \TODO whether to offer this?
-      \belowdisplayskip\eql at belowdisplaytopskip@
+      \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
     \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@
-      \abovedisplayskip\eql at abovedisplayparskip@
+      \ifnum\eql at skip@mode at par@=\thr@@
+        \eql at skip@mode at leave@\@ne
+      \fi
     \fi
-% \TODO whether to enable or disable short
-    \predisplaysize\maxdimen
-    \abovedisplayshortskip\abovedisplayskip
-    \belowdisplayshortskip\belowdisplayskip
   \fi
-  \eql at display@doatend
-  \ifdim\eql at display@firstavail@<\z@
-    \eql at display@firstavail@\z@
+  \ifdefined\eql at skip@force at above
+    \eql at skip@mode at above@\eql at skip@force at above\relax
   \fi
-  \advance\eql at display@firstavail@\displayindent
-  \ifdim\eql at display@firstavail@>\predisplaysize
-    \ifcase\eql at displayshortmode@
+  \ifdefined\eql at skip@force at below
+    \eql at skip@mode at below@\eql at skip@force at below\relax
+  \fi
+  \ifdefined\eql at skip@force at leave
+    \eql at skip@mode at leave@\eql at skip@force at leave\relax
+  \fi
+  \ifodd\eql at raisetag@firstlast@
+    \ifcase\eql at skip@mode at above@
+      \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
     \or
-      \abovedisplayskip\abovedisplayshortskip
+      \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
     \or
-      \abovedisplayskip\abovedisplayshortskip
-      \ifnum\eql at row@=\tw@
-        \belowdisplayskip\belowdisplayshortskip
-      \fi
+      \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
     \or
-      \abovedisplayskip\abovedisplayshortskip
-      \belowdisplayskip\belowdisplayshortskip
+      \abovedisplayskip\glueexpr\eql at skip@partag at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@partag at above\relax
+    \or
+      \abovedisplayskip\z at skip
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@medtag at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@custom at above\relax
     \fi
+  \else
+    \ifcase\eql at skip@mode at above@
+      \abovedisplayskip\glueexpr\eql at skip@long at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@short at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@cont at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@par at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@top at above\relax
+    \or
+      \abovedisplayskip\z at skip
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@medtag at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@custom at above\relax
+    \fi
   \fi
-  \ifodd\eql at raisetag@firstlast@
-    \abovedisplayskip\eql at abovedisplaytagskip@
-  \fi
   \ifnum\eql at raisetag@firstlast@>\@ne
-    \belowdisplayskip\eql at belowdisplaytagskip@
+    \ifcase\eql at skip@mode at below@
+      \belowdisplayskip\glueexpr\eql at skip@tag at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@tag at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@tag at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@partag at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@partag at below\relax
+    \or
+      \belowdisplayskip\z at skip
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@medtag at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@custom at below\relax
+    \fi
+  \else
+    \ifcase\eql at skip@mode at below@
+      \belowdisplayskip\glueexpr\eql at skip@long at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@short at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@cont at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@par at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@top at below\relax
+    \or
+      \belowdisplayskip\z at skip
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@medtag at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@custom at below\relax
+    \fi
   \fi
   \ifnum\eql at displaybreak@pen@=\@MM\else
     \postdisplaypenalty\eql at displaybreak@pen@
@@ -3597,14 +3839,16 @@
   \ifnum\eql at displaybreak@prepen@=\@MM\else
     \predisplaypenalty\eql at displaybreak@prepen@
   \fi
-% \TODO here or above?
   \advance\abovedisplayskip\eql at abovespace@
   \advance\belowdisplayskip\eql at belowspace@
   \advance\belowdisplayskip\eql at vspaceskip@
+  \abovedisplayshortskip\abovedisplayskip
+  \belowdisplayshortskip\belowdisplayskip
   \count@\prevgraf
   \advance\count@\eql at row@
   \advance\count at -\tw@
   \prevgraf\count@
+  \global\eql at skip@mode at leave@\eql at skip@mode at leave@
 }
 %    \end{macrocode}
 %
@@ -3614,13 +3858,15 @@
   \let\tag\eql at tag@default
   \let\raisetag\eql at raisetag@default
   \let\displaybreak\eql at displaybreak@default
+  \let\intertext\eql at intertext@default
   \let\vspace\eql at vspace@org
 }
 \expandafter\def\expandafter\@arrayparboxrestore\expandafter{%
   \@arrayparboxrestore
   \eql at display@leave
-% \TODO should we always revert to originals? or only if switch is set
-  \eql at amprevert
+  \ifdefined\eql at ampproof@active
+    \eql at amprevert
+  \fi
   \@displayfalse
 }
 %    \end{macrocode}
@@ -3654,16 +3900,14 @@
 %    \end{macrocode}
 %
 % \TODO describe
+% \TODO note on \string\spread at equation
 %    \begin{macrocode}
 \def\eql at halign@spread{%
-  \dimen@\eql at spread\relax
-  \advance\dimen@\normalbaselineskip
-  \ifdim\dimen@>\baselineskip
-    \normalbaselines
-    \dimen@\eql at spread\relax
-    \advance\dimen@\normalbaselineskip
-    \advance\dimen at -\baselineskip
-    \openup\dimen@
+  \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@
     \ifdefined\spread at equation
       \let\spread at equation\@empty
     \fi
@@ -3686,20 +3930,37 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
+\def\eql at halign@leave{%
+  \ifcase\eql at skip@mode at leave@
+  \or
+    \endgraf
+  \or
+    \endgraf
+    \prevdepth-\@m\p@
+  \fi
+}
+%    \end{macrocode}
+%
+% \TODO: how about penalty here? not for entry into display
+%    \begin{macrocode}
 \def\eql at halign@before{%
   \ifdim\eql at halign@prevdepth@=\maxdimen\else
     \prevdepth\eql at halign@prevdepth@
   \fi
   \ifdim\prevdepth=-\@m\p@\else
-    \skip@\normalbaselineskip
-    \advance\skip at -\eql at display@height\relax
-    \advance\skip at -\prevdepth\relax
-    \ifdim\skip@<\normallineskiplimit
-      \vskip\normallineskip
+    \ifdefined\eql at display@height
+      \skip@\baselineskip
+      \advance\skip at -\glueexpr\eql at display@height\relax
+      \advance\skip at -\prevdepth\relax
+      \ifdim\skip@<\lineskiplimit
+        \skip@\lineskip
+      \fi
+      \advance\skip at -\eql at spread@amount@\relax
+      \vskip\skip@
+      \nointerlineskip
     \else
-      \vskip\skip@
+      \vskip-\eql at spread@amount@\relax
     \fi
-    \nointerlineskip
   \fi
 }
 %    \end{macrocode}
@@ -3707,7 +3968,9 @@
 % \TODO describe
 %    \begin{macrocode}
 \def\eql at halign@after{%
-  \prevdepth\eql at display@depth\relax
+  \ifdefined\eql at display@depth
+    \prevdepth\glueexpr\eql at display@depth\relax
+  \fi
 }
 %    \end{macrocode}
 %
@@ -4060,7 +4323,7 @@
     }%
 }
 \def\eql at adjust@shoveleft@[#1]{%
-  \eql at sregroup\setlength\dimen@{#1}\global\eql at shape@amount@\dimen@}
+  \eql at sregroup\global\eql at shape@amount@\glueexpr#1\relax}
 \def\eql at adjust@shovecenter{%
   \global\eql at shape@pos@\@ne\global\eql at shape@amount@\z@}
 \def\eql at adjust@shoveright{%
@@ -4089,7 +4352,12 @@
 %    \begin{macrocode}
 \def\eql at adjust@print#1#2{%
   \eql at restore@hfuzz
-  \hbox to\displaywidth{#1\unhbox\eql at fieldbox@\unkern#2}%
+  \hbox to\displaywidth{%
+    #1%
+    \unhbox\eql at fieldbox@\unkern
+    #2%
+    \eql at tagging@mathaddlast
+  }%
 }
 %    \end{macrocode}
 %
@@ -4148,6 +4416,14 @@
 % current alignment position and on whether a tag is present or not:
 %    \begin{macrocode}
 \def\eql at adjust@sel at tag{%
+  \eql at tagging@tagaddbox
+  \ifcase\eql at shape@pos@
+    \eql at tagging@alignleft
+  \or
+    \eql at tagging@aligncenter
+  \or
+    \eql at tagging@alignright
+  \fi
   \csname eql at adjust%
     @\ifdefined\eql at flushleft flushleft\else center\fi
     @\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
@@ -4155,6 +4431,14 @@
     @tag\endcsname
 }
 \def\eql at adjust@sel at notag{%
+  \eql at tagging@tagaddbox
+  \ifcase\eql at shape@pos@
+    \eql at tagging@alignleft
+  \or
+    \eql at tagging@aligncenter
+  \or
+    \eql at tagging@alignright
+  \fi
   \csname eql at adjust%
     @\ifdefined\eql at flushleft flushleft\else center\fi
     @\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
@@ -4682,6 +4966,9 @@
 % \TODO describe
 %    \begin{macrocode}
 \def\eql at single@start{%
+  \eql at halign@catchprevdepth
+  \eql at tagging@start
+  $$%$$
   \eql at numbering@eval at mode
   \let\eql at numbering@subeq at use\eql at false
   \eql at stack@save at single
@@ -4714,9 +5001,21 @@
   \eql at hook@eqout
   \eql at single@end at sel
   \eql at stack@restore
+  $$%$$
+  \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}
 %
@@ -4776,6 +5075,7 @@
 %
 %    \begin{macrocode}
 \def\eql at single@end at adjust{%
+    \eql at tagging@mathsave
     $%$
     \hfil
     \kern\z@
@@ -4800,6 +5100,7 @@
     \fi
     \cr
     \noalign{\eql at halign@after}%
+    \eql at tagging@tablesavelines
   }%
   \eql at row@\tw@
   \eql at display@close
@@ -5002,7 +5303,7 @@
     \else
       \penalty\eql at displaybreak@pen@
     \fi
-    \addtolength\eql at vspaceskip@{#1}%
+    \advance\eql at vspaceskip@\glueexpr#1\relax%
     \vskip\eql at vspaceskip@
     \global\eql at vspaceskip@\z at skip
   }%
@@ -5022,37 +5323,58 @@
 %
 % \TODO describe
 %
-%    \begin{macrocode}
-\eql at amsmath@futurebefore{\let\intertext\@undefined}
-%    \end{macrocode}
 % \TODO revert in everymath?
-%   \macro{\intertext}
-%   \macro{\eql at intertext@}
 %    \begin{macrocode}
-\providecommand{\intertext}{\eql at error{Invalid use of \string\intertext}}
+\def\eql at intertext@default{\eql at error{Invalid use of \string\intertext}}
+\eql at amsmath@let\intertext\eql at intertext@default
 %    \end{macrocode}
 %
 % \TODO why does it fail in measuring? total width?!
 % determine total width otherwise!?
 %    \begin{macrocode}
-\def\eql at intertext@process#1{%
+\def\eql at intertext@process{%
   \eql at math@cr@@@
   \cr
-  \ifmeasuring@\else
-    \expandafter\eql at intertext@print{#1}%
+  \ifmeasuring@
+    \expandafter\@gobble
+  \else
+    \expandafter\eql at intertext@print
   \fi
 }
 %    \end{macrocode}
 %
 % \TODO describe
+% \TODO prevgraf
+% \TODO prevdepth
+% \TODO does this have to be in a vbox?
+% \TODO vskip and penalty opposite order
+% \TODO can we handle short?
 %    \begin{macrocode}
 \def\eql at intertext@print#1{%
   \noalign{%
     \eql at halign@after
+    \let\eql at skip@force at below\z@
+    \let\eql at skip@force at above\z@
     \eql at setkeys{intertext}\eql at intertext@opt
-    \normalbaselines
+    \openup-\eql at spread@amount@
     \penalty\postdisplaypenalty
-    \addtolength\eql at vspaceskip@\belowdisplayskip
+    \ifcase\eql at skip@force at below\relax
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@long at below\relax
+    \or
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@short at below\relax
+    \or
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@cont at below\relax
+    \or
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@par at below\relax
+    \or
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@top at below\relax
+    \or
+      \advance\eql at vspaceskip@\z at skip
+    \or
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@med at below\relax
+    \or
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@custom at below\relax
+    \fi
     \vskip\eql at vspaceskip@
     \global\eql at vspaceskip@\z at skip
     \vbox{%
@@ -5069,7 +5391,24 @@
       \par
     }%
     \penalty\predisplaypenalty
-    \vskip\abovedisplayskip
+    \ifcase\eql at skip@force at above\relax
+      \vskip\glueexpr\eql at skip@long at above\relax
+    \or
+      \vskip\glueexpr\eql at skip@short at above\relax
+    \or
+      \vskip\glueexpr\eql at skip@cont at above\relax
+    \or
+      \vskip\glueexpr\eql at skip@par at above\relax
+    \or
+      \vskip\glueexpr\eql at skip@top at above\relax
+    \or
+      \vskip\z at skip
+    \or
+      \vskip\glueexpr\eql at skip@med at above\relax
+    \or
+      \vskip\glueexpr\eql at skip@custom at above\relax
+    \fi
+%    \eql at halign@prevdepth@\maxdimen
     \eql at halign@prevdepth@\z@
     \eql at halign@before
   }
@@ -5124,6 +5463,9 @@
 %    \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 numbering@eval at mode
   \eql at stack@save at multi
   \ifdefined\eql at subequations@active
@@ -5166,6 +5508,9 @@
     \eql at numbering@subeq at close
   \fi
   \eql at stack@restore
+  $$%$$
+  \eql at tagging@end
+  \eql at halign@leave
 }
 %    \end{macrocode}
 %
@@ -5173,16 +5518,24 @@
 %    \begin{macrocode}
 \def\eql at mode@equation{%
   \let\eql at equations@mode at single\eql at true
-  \let\eql at equations@end\eql at single@end
+  \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
 }
 \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
@@ -5344,12 +5697,12 @@
       \advance\dimen at -\eql at tagmargin@
       \divide\dimen@\tw@
       \eql at marginleft@\dimen@
-      \advance\eql at marginleft@-\eql at paddingleft@
+      \advance\eql at marginleft@-\glueexpr\eql at paddingleft@val\relax
       \ifdim\eql at marginleft@<\z@
         \eql at marginleft@\z@
       \fi
       \eql at marginright@\dimen@
-      \advance\eql at marginright@-\eql at paddingright@
+      \advance\eql at marginright@-\glueexpr\eql at paddingright@val\relax
       \ifdim\eql at marginright@<\z@
         \eql at marginright@\z@
       \fi
@@ -5371,6 +5724,7 @@
           ##%
           \eql at punct@apply at col
           \eql at hook@colout
+          \eql at tagging@mathsave
         $%
         \hfil
         \kern\z@
@@ -5396,6 +5750,7 @@
       \eql at halign@after
 %<dev>\eql at dev@leave\eql at lines@print
     }%
+    \eql at tagging@tablesavelines
   }%
   \eql at display@close
 }
@@ -5460,53 +5815,12 @@
 }
 %    \end{macrocode}
 %
-%   \macro{\eql at align@preamble}
 %    \begin{macrocode}
-\def\eql at align@preamble#1#2#3{%
-  &%
-  \global\advance\eql at column@\@ne
-  \hfil
-  \global\setbox\eql at fieldbox@\hbox{%
-    #3%
-    \@lign
-    $\m at th\displaystyle
-      \eql at hook@colin
-      ##%
-      \eql at class@innerleft
-      \eql at hook@innerleft
-    $%
-  }%
-  \global\eql at fieldwidth@\wd\eql at fieldbox@
-  #2%
-  \tabskip\z at skip
-  &%
-  \global\advance\eql at column@\@ne
-  \setbox\eql at fieldbox@\hbox{%
-% \TODO temp
-\kern-\wd\eql at fieldbox@
-\box\eql at fieldbox@
-    #3%
-    \@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
-    $%
-  }%
-  #2%
-  \hfil
-  \tabskip#1%
-}
-%    \end{macrocode}
-%
-%    \begin{macrocode}
 \def\eql at align@print at trailright{%
    &\omit
     \global\advance\eql at column@\@ne
     \setbox\eql at fieldbox@\hbox{%
-\kern-\wd\eql at fieldbox@\box\eql at fieldbox@
+      \kern-\wd\eql at fieldbox@\box\eql at fieldbox@
     }%
     \eql at align@print at field
 }
@@ -5627,8 +5941,10 @@
   \eql at numbering@print at line@eval
   \if at eqnsw
     \eql at tagbox@make\eql at compose@print
+    \eql at tagging@tagaddbox
     \eql at tagbox@print at multi
   \else
+    \eql at tagging@tagaddbox
     \kern\displaywidth
   \fi
 }
@@ -5645,7 +5961,45 @@
   \eql at let@cr\eql at align@print at line@end
   \tabskip\eql at marginleft@
   \halign{%
-    \span\eql at align@preamble\eql at colsep@\eql at align@print at field\eql at strut@field
+    &%
+      \global\advance\eql at column@\@ne
+      \hfil
+      \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
+      }%
+      \global\eql at fieldwidth@\wd\eql at fieldbox@
+      \eql at align@print at field
+      \tabskip\z at skip
+    &%
+      \global\advance\eql at column@\@ne
+      \setbox\eql at fieldbox@\hbox{%
+% \TODO printing left field in right field
+        \kern-\wd\eql at fieldbox@
+        \box\eql at fieldbox@
+        \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
+      }%
+      \eql at align@print at field
+      \hfil
+      \tabskip\eql at colsep@\relax
     \crcr
     \noalign{%
       \eql at halign@before
@@ -5665,6 +6019,7 @@
       \eql at halign@after
 %<dev>\eql at dev@leave\eql at align@print
     }%
+    \eql at tagging@tablesavealign
   }%
   \eql at display@close
 }
@@ -5731,8 +6086,36 @@
     \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
+    \tabskip\z at skip
     \halign{%
-      \span\eql at align@preamble\z at skip\eql at align@measure at field\relax
+      &%
+        \global\advance\eql at column@\@ne
+        \hfil
+        \global\setbox\eql at fieldbox@\hbox{%
+          \@lign
+          $\m at th\displaystyle
+            \eql at hook@colin
+            ##%
+            \eql at class@innerleft
+            \eql at hook@innerleft
+          $%
+        }%
+        \global\eql at fieldwidth@\wd\eql at fieldbox@
+        \eql at align@measure at field
+      &%
+        \global\advance\eql at column@\@ne
+        \setbox\eql at fieldbox@\hbox{%
+          \@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 align@measure at field
+        \hfil
       \crcr
       \noalign{%
         \eql at hook@blockbefore
@@ -5813,6 +6196,11 @@
 \def\eql at align@adjust{%
 %    \end{macrocode}
 %
+%    \begin{macrocode}
+  \eql at colsepmin@\glueexpr\eql at colsepmin@val\relax
+  \eql at colsepmax@\glueexpr\eql at colsepmax@val\relax
+%    \end{macrocode}
+%
 %    \TODO shouldn't we do this earlier for access to last column?
 %    \begin{macrocode}
   \ifodd\eql at totalcolumns@
@@ -6179,7 +6567,6 @@
 % environment name as the name of the temporary function that is
 % |\let| to |\eql at scan@env at iterate|:
 %    \begin{macrocode}
-%  \begingroup
   \edef\eql at scan@iterate{\expandafter\noexpand\csname\@currenvir\endcsname}%
   \expandafter\let\expandafter\eql at scan@env at org\eql at scan@iterate
   \expandafter\let\eql at scan@iterate\eql at scan@env at iterate
@@ -6271,7 +6658,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\def\eql at scan@sqrang at cancel{\ignorespaces}
+\def\eql at scan@sqrang at cancel{\expandafter\ignorespaces\@gobble}
 %    \end{macrocode}
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -6344,7 +6731,9 @@
 \def\eql at equations@processopt{%
   \let\eql at blocklabel\@undefined
   \let\eql at blocktag\@undefined
-  \let\eql at display@doatend\@empty
+  \let\eql at skip@force at above\@undefined
+  \let\eql at skip@force at below\@undefined
+  \let\eql at skip@force at leave\@undefined
   \eql at abovespace@\z at skip
   \eql at belowspace@\z at skip
   \eql at displaybreak@prepen@\@MM
@@ -6351,11 +6740,7 @@
   \eql at nextopt@process{equations}%
   \let\eql at punct@block\eql at punct@main
   \let\eql at punct@main\relax
-  \setlength\eql at paddingleft@\eql at paddingleft@val
-  \setlength\eql at paddingright@\eql at paddingright@val
-  \setlength\eql at indent@\eql at indent@val
-  \setlength\eql at colsepmin@\eql at colsepmin@val
-  \setlength\eql at colsepmax@\eql at colsepmax@val
+  \eql at indent@\glueexpr\eql at indent@val\relax
 }
 %    \end{macrocode}
 %
@@ -6370,14 +6755,11 @@
     \eql at error@mathmode{\string\begin{\@currenvir}}%
     \expandafter\eql at scan@env\expandafter\eql at scan@env at cancel
   \else
-    \eql at halign@catchprevdepth
-    $$%$$
     \expandafter\eql at ampprotect\expandafter\eql at equations@testall
       \expandafter\eql at equations@start
   \fi
 }{%
   \eql at equations@end
-  $$%$$
   \ignorespacesafterend
 %<dev>\eql at dev@leaveenv
 }
@@ -6386,10 +6768,10 @@
 %    \begin{macrocode}
 \def\eql at equations@start{%
   \eql at equations@processopt
-  \ifdefined\eql at equations@mode at single
+  \ifdefined\eql at equations@main
+    \expandafter\eql at scan@env\expandafter\eql at equations@main
+  \else
     \expandafter\eql at single@start
-  \else
-    \expandafter\eql at scan@env\expandafter\eql at multi@main
   \fi
 }
 %    \end{macrocode}
@@ -6398,6 +6780,7 @@
 % \paragraph{square and angle brackets}
 %
 %    \begin{macrocode}
+\newenvironment{equations at sqr}{}{}
 \def\eql at equations@sqr at opt{equation,nonumber}
 \protected\def\eql at equations@sqr at open{%
   \ifmmode
@@ -6406,8 +6789,7 @@
   \else
 %<dev>\eql at dev@enter{\[...\string\]}%
     \expandafter\eqnaddopt\expandafter{\eql at equations@sqr at opt}%
-    \eql at halign@catchprevdepth
-    $$%$$
+    \begin{equations at sqr}%
     \expandafter\eql at ampprotect\expandafter\eql at equations@testall
       \expandafter\eql at equations@sqr at start
   \fi
@@ -6415,6 +6797,7 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
+\newenvironment{equations at ang}{}{}
 \def\eql at equations@ang at opt{align,nonumber}
 \protected\def\eql at equations@ang at open{%
   \ifmmode
@@ -6423,8 +6806,7 @@
   \else
 %<dev>\eql at dev@enter{\<...\string\>}%
     \expandafter\eqnaddopt\expandafter{\eql at equations@ang at opt}%
-    \eql at halign@catchprevdepth
-    $$%$$
+    \begin{equations at ang}%
     \expandafter\eql at ampprotect\expandafter\eql at equations@testall
       \expandafter\eql at equations@ang at start
   \fi
@@ -6434,10 +6816,10 @@
 %    \begin{macrocode}
 \def\eql at equations@sqr at start{%
   \eql at equations@processopt
-  \ifdefined\eql at equations@mode at single
+  \ifdefined\eql at equations@main
+    \expandafter\eql at scan@sqr\expandafter\eql at equations@main
+  \else
     \expandafter\eql at single@start
-  \else
-    \expandafter\eql at scan@sqr\expandafter\eql at multi@main
   \fi
 }
 %    \end{macrocode}
@@ -6445,10 +6827,10 @@
 %    \begin{macrocode}
 \def\eql at equations@ang at start{%
   \eql at equations@processopt
-  \ifdefined\eql at equations@mode at single
+  \ifdefined\eql at equations@main
+    \expandafter\eql at scan@ang\expandafter\eql at equations@main
+  \else
     \expandafter\eql at single@start
-  \else
-    \expandafter\eql at scan@ang\expandafter\eql at multi@main
   \fi
 }
 %    \end{macrocode}
@@ -6456,8 +6838,8 @@
 %    \begin{macrocode}
 \protected\def\eql at equations@sqr at close{%
   \eql at equations@end
-  $$%$$
 %<dev>\eql at dev@leave{\[...\string\]}%
+  \end{equations at sqr}%
   \ignorespaces
 }
 %    \end{macrocode}
@@ -6465,8 +6847,8 @@
 %    \begin{macrocode}
 \protected\def\eql at equations@ang at close{%
   \eql at equations@end
-  $$%$$
 %<dev>\eql at dev@leave{\<...\string\>}%
+  \end{equations at ang}%
   \ignorespaces
 }
 %    \end{macrocode}
@@ -6480,7 +6862,7 @@
 % We provide it for completeness:
 % \TODO versions of eqref for ranges (optional argument) or lists (,)?
 %    \begin{macrocode}
-\DeclareRobustCommand{\eql at eqref}[1]{\textup{\tagform@{\ref{#1}}}}
+\DeclareRobustCommand{\eql at eqref}[1]{\textup{\eql at tag@boxedform{\ref{#1}}}}
 %    \end{macrocode}
 %
 %   \macro{\numberwithin}
@@ -6532,7 +6914,7 @@
 % \ctanpkg{amsmath} defines |\thetag| to print a tag
 % which we also provide for completeness:
 %    \begin{macrocode}
-\newcommand{\eql at thetag}{\leavevmode\tagform@}
+\newcommand{\eql at thetag}{\leavevmode\eql at tag@boxedform}
 %    \end{macrocode}
 %
 %
@@ -6654,7 +7036,7 @@
 % prepends the prefix |eql@| to the category,
 % and it expands the list argument once:
 %    \begin{macrocode}
-\def\eql at setkeys#1#2{
+\def\eql at setkeys#1#2{%
   \def\eql at tmp{\setkeys{eql@#1}}%
   \expandafter\eql at tmp\expandafter{#2}%
 }
@@ -6671,6 +7053,7 @@
 \def\eql at nextopt@process#1{%
 %<dev>\eql at dev@start\eql at nextopt@process
   \eql at setkeys{#1}\eql at nextopt
+  \let\eql at tagging@opt\eql at nextopt
   \global\let\eql at nextopt\@empty
 }
 \newcommand{\eqnaddopt}[1]{%
@@ -6678,6 +7061,76 @@
 %    \end{macrocode}
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Parameter Sets}
+%
+% \TODO: par at above plus parskip?
+%    \begin{macrocode}
+\def\eql at defaults@classic{%
+  \def\eql at colsepmax@val{.5\maxdimen}%
+  \def\eql at spread{\jot}%
+  \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 colsepmax@val{2em}%
+  \def\eql at spread{0.2\normalbaselineskip}%
+  \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.2\normalbaselineskip}%
+  \def\eql at skip@short at below{0.0\normalbaselineskip
+    \@plus0.25\normalbaselineskip}%
+  \def\eql at skip@med at above{0.375\normalbaselineskip
+    \@plus0.225\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
@@ -6712,6 +7165,8 @@
   \ifdefined\eql at single@native\let\eql at flushleft\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]{%
+  \eql at decide@bool{#3}{#2}{#1}\eql at single@doscan}
 \eql at define@key{setup}{sqropt}[]{%
   \def\eql at equations@sqr at opt{equation,#1}}
 \eql at define@key{setup}{angopt}[]{%
@@ -6743,134 +7198,177 @@
   \def\eql at display@height{#1}}
 \eql at define@key\eql at keycat{displaydepth}[\dp\eql at strutbox@]{%
   \def\eql at display@depth{#1}}
+\eql at define@key\eql at keycat{displayheight*}[]{%
+  \let\eql at display@height\@undefined}
+\eql at define@key\eql at keycat{displaydepth*}[]{%
+  \let\eql at display@depth\@undefined}
 %    \end{macrocode}
 %
 % \TODO describe
+% \TODO short should just apply to above?! or as far as short would apply...
 %    \begin{macrocode}
 \eql at define@key{equations}{noskip}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\eql at display@atend{%
-      \abovedisplayskip\z at skip
-      \abovedisplayshortskip\z at skip
-      \eql at abovedisplaytagskip@\z at skip}}%
-    {\eql at display@atend{%
-      \belowdisplayskip\z at skip
-      \belowdisplayshortskip\z at skip
-      \eql at belowdisplaytagskip@\z at skip}}}
-\eql at define@key{equations}{short}[]{%
+    {\def\eql at skip@force at above{5}}%
+    {\def\eql at skip@force at below{5}}}
+\eql at define@key{equations}{short}[above]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\eql at display@atend{%
-      \abovedisplayskip\abovedisplayshortskip}}%
-    {\eql at display@atend{%
-      \belowdisplayskip\belowdisplayshortskip}}}
+    {\def\eql at skip@force at above{1}}%
+    {\def\eql at skip@force at below{1}}}
 \eql at define@key{equations}{long}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\eql at display@atend{%
-      \abovedisplayshortskip\abovedisplayskip}}%
-    {\eql at display@atend{%
-      \belowdisplayshortskip\belowdisplayskip}}}
+    {\def\eql at skip@force at above{0}}%
+    {\def\eql at skip@force at below{0}}}
 \eql at define@key{equations}{medskip}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\eql at display@atend{%
-      \abovedisplayskip\eql at abovedisplaymedskip@}}%
-    {\eql at display@atend{%
-      \belowdisplayskip\eql at belowdisplaymedskip@}}}
+    {\def\eql at skip@force at above{6}}%
+    {\def\eql at skip@force at below{6}}}
+\eql at define@key{equations}{par}[par]{%
+  \eql at decide@select{#3}{#2}{#1}{%
+    {{default,}{\let\eql at skip@force at leave\@undefined}},%
+    {{cont,hmode}{\let\eql at skip@force at leave\z@}},%
+    {{par,vmode}{\let\eql at skip@force at leave\@ne
+      \ifdefined\eql at skip@force at below\else
+        \def\eql at skip@force at below{3}%
+      \fi}},%
+    {{top}{\let\eql at skip@force at leave\tw@
+      \ifdefined\eql at skip@force at below\else
+        \def\eql at skip@force at below{4}
+      \fi}}}}
 %    \end{macrocode}
 %
 % \TODO describe
 %    \begin{macrocode}
 \eql at define@key{equations}{skip}{%
-  \setlength\eql at abovedisplayskip@{#1}%
-  \eql at belowdisplayskip@\eql at abovedisplayskip@%
-  \eql at display@atend{%
-    \abovedisplayskip\eql at abovedisplayskip@
-    \abovedisplayshortskip\abovedisplayskip
-    \eql at abovedisplaytagskip@\abovedisplayskip
-    \belowdisplayskip\abovedisplayskip
-    \belowdisplayshortskip\belowdisplayskip
-    \eql at belowdisplaytagskip@\belowdisplayskip}}
+  \def\eql at skip@force at above{7}%
+  \def\eql at skip@custom at above{#1}%
+  \let\eql at skip@force at below\eql at skip@force at above
+  \let\eql at skip@custom at below\eql at skip@custom at above}
 \eql at define@key{equations}{aboveskip}{%
-  \setlength\eql at abovedisplayskip@{#1}%
-  \eql at display@atend{%
-    \abovedisplayskip\eql at abovedisplayskip@
-    \abovedisplayshortskip\abovedisplayskip
-    \eql at abovedisplaytagskip@\abovedisplayskip}}
+  \def\eql at skip@force at above{7}%
+  \def\eql at skip@custom at above{#1}}
 \eql at define@key{equations}{belowskip}{%
-  \setlength\eql at belowdisplayskip@{#1}%
-  \eql at display@atend{%
-    \belowdisplayskip\eql at belowdisplayskip@
-    \belowdisplayshortskip\belowdisplayskip%
-    \eql at belowdisplaytagskip@\belowdisplayskip}}
+  \def\eql at skip@force at below{7}%
+  \def\eql at skip@custom at below{#1}}
 \eql at define@key{equations}{abovespace}{%
-  \addtolength\eql at abovespace@{#1}}
+  \advance\eql at abovespace@\glueexpr#1\relax}
 \eql at define@key{equations}{belowspace}{%
-  \addtolength\eql at belowspace@{#1}}
+  \advance\eql at belowspace@\glueexpr#1\relax}
 %    \end{macrocode}
 %
 % \TODO describe
 %    \begin{macrocode}
 \eql at define@key{intertext}{skip}{%
-  \setlength\abovedisplayskip{#1}\belowdisplayskip\abovedisplayskip}
+  \def\eql at skip@force at above{7}%
+  \def\eql at skip@custom at above{#1}%
+  \let\eql at skip@force at below\eql at skip@force at above
+  \let\eql at skip@custom at below\eql at skip@custom at above}
 \eql at define@key{intertext}{aboveskip}{%
-  \setlength\belowdisplayskip{#1}}
+  \def\eql at skip@force at below{7}%
+  \def\eql at skip@custom at below{#1}}
 \eql at define@key{intertext}{belowskip}{%
-  \setlength\abovedisplayskip{#1}}
+  \def\eql at skip@force at above{7}%
+  \def\eql at skip@custom at above{#1}}
 \eql at define@key{intertext}{noskip}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\belowdisplayskip\z at skip\belowdisplayshortskip\z at skip}%
-    {\abovedisplayskip\z at skip\abovedisplayshortskip\z at skip}}
+    {\def\eql at skip@force at below{5}}%
+    {\def\eql at skip@force at above{5}}}
 \eql at define@key{intertext}{short}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\belowdisplayskip\belowdisplayshortskip}%
-    {\abovedisplayskip\abovedisplayshortskip}}
+    {\def\eql at skip@force at below{1}}%
+    {\def\eql at skip@force at above{1}}}
 \eql at define@key{intertext}{long}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\belowdisplayshortskip\belowdisplayskip}%
-    {\abovedisplayshortskip\abovedisplayskip}}
+    {\def\eql at skip@force at below{0}}%
+    {\def\eql at skip@force at above{0}}}
 \eql at define@key{intertext}{medskip}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\belowdisplayskip\eql at belowdisplaymedskip@}%
-    {\abovedisplayskip\eql at abovedisplaymedskip@}}
+    {\def\eql at skip@force at below{6}}%
+    {\def\eql at skip@force at above{6}}}
 %    \end{macrocode}
 %
 % \TODO describe
 %    \begin{macrocode}
-\eql at define@key{setup}{skip}{%
-  \setlength\abovedisplayskip{#1}\belowdisplayskip\abovedisplayskip}
-\eql at define@key{setup}{aboveskip}{%
-  \setlength\abovedisplayskip{#1}}
-\eql at define@key{setup}{belowskip}{%
-  \setlength\belowdisplayskip{#1}}
+\eql at define@key{setup}{skip,longskip}{%
+  \abovedisplayskip\glueexpr#1\relax
+  \belowdisplayskip\abovedisplayskip
+  \def\eql at skip@long at above{#1}%
+  \let\eql at skip@long at below\eql at skip@long at above}
+\eql at define@key{setup}{aboveskip,abovelongskip}{%
+  \abovedisplayskip\glueexpr#1\relax
+  \def\eql at skip@long at above{#1}}
+\eql at define@key{setup}{belowskip,belowlongskip}{%
+  \belowdisplayskip\glueexpr#1\relax
+  \def\eql at skip@long at below{#1}}
 \eql at define@key{setup}{aboveshortskip}{%
-  \setlength\abovedisplayshortskip{#1}}
+  \abovedisplayshortskip\glueexpr#1\relax
+  \def\eql at skip@short at above{#1}}
 \eql at define@key{setup}{belowshortskip}{%
-  \setlength\belowdisplayshortskip{#1}}
+  \belowdisplayshortskip\glueexpr#1\relax
+  \def\eql at skip@short at below{#1}}
 \eql at define@key{setup}{tagskip}{%
-  \setlength\eql at abovedisplaytagskip@{#1}%
-  \eql at belowdisplaytagskip@\eql at abovedisplaytagskip@}
+  \def\eql at skip@tag at above{#1}%
+  \let\eql at skip@tag at below\eql at skip@tag at above}
 \eql at define@key{setup}{abovetagskip}{%
-  \setlength\eql at abovedisplaytagskip@{#1}}
+  \def\eql at skip@tag at above{#1}}
 \eql at define@key{setup}{belowtagskip}{%
-  \setlength\eql at belowdisplaytagskip@{#1}}
+  \def\eql at skip@tag at below{#1}}
 \eql at define@key{setup}{medskip}{%
-  \setlength\eql at abovedisplaymedskip@{#1}%
-  \eql at belowdisplaymedskip@\eql at abovedisplaymedskip@}
+  \def\eql at skip@med at above{#1}%
+  \let\eql at skip@med at below\eql at skip@med at above}
 \eql at define@key{setup}{abovemedskip}{%
-  \setlength\eql at abovedisplaymedskip@{#1}}
+  \def\eql at skip@med at above{#1}}
+\eql at define@key{setup}{belowmedskip}{%
+  \def\eql at skip@med at below{#1}}
+\eql at define@key{setup}{medtagskip}{%
+  \def\eql at skip@medtag at above{#1}%
+  \let\eql at skip@medtag at below\eql at skip@medtag at above}
+\eql at define@key{setup}{abovemedtagskip}{%
+  \def\eql at skip@medtag at above{#1}}
+\eql at define@key{setup}{belowmedtagskip}{%
+  \def\eql at skip@medtag at below{#1}}
 \eql at define@key{setup}{abovetopskip}{%
-  \setlength\eql at abovedisplaytopskip@{#1}}
+  \def\eql at skip@top at above{#1}}
+\eql at define@key{setup}{belowtopskip}{%
+  \def\eql at skip@top at below{#1}}
 \eql at define@key{setup}{aboveparskip}{%
-  \setlength\eql at abovedisplayparskip@{#1}}
+  \def\eql at skip@par at above{#1}}
+\eql at define@key{setup}{belowparskip}{%
+  \def\eql at skip@par at below{#1}}
+\eql at define@key{setup}{abovepartagskip}{%
+  \def\eql at skip@partag at above{#1}}
+\eql at define@key{setup}{belowpartagskip}{%
+  \def\eql at skip@partag at below{#1}}
 \eql at define@key{setup}{abovecontskip}{%
-  \setlength\eql at abovedisplaycontskip@{#1}}
-\eql at define@key{setup}{belowmedskip}{%
-  \setlength\eql at belowdisplaymedskip@{#1}}
+  \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}}
+\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 displayshortmode@\z@}},%
-    {{above,neverbelow,notbelow,belowoff}{\eql at displayshortmode@\@ne}},%
-    {{belowone,belowsingle}{\eql at displayshortmode@\tw@}},%
-    {{belowall,always,on}{\eql at displayshortmode@\thr@@}}}}
+    {{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@@}}}}
+\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 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 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}}}}
 %    \end{macrocode}
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -6890,10 +7388,10 @@
 % \TODO describe
 %    \begin{macrocode}
 \def\eql at keycat{equations,setup}
-\eql at define@key\eql at keycat{tagmargin}{\setlength\eql at tagmargin@{#1}}
+\eql at define@key\eql at keycat{tagmargin}{\eql at tagmargin@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{tagmargin*}{\settowidth\eql at tagmargin@{#1}}
-\eql at define@key\eql at keycat{mintagsep}{\setlength\eql at tagsepmin@{#1}}
-\eql at define@key\eql at keycat{mintagwidth}{\setlength\eql at tagwidthmin@{#1}}
+\eql at define@key\eql at keycat{mintagsep}{\eql at tagsepmin@\glueexpr#1\relax}
+\eql at define@key\eql at keycat{mintagwidth}{\eql at tagwidthmin@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{mintagwidth*}{\settowidth\eql at tagwidthmin@{#1}}
 %    \end{macrocode}
 %
@@ -6902,8 +7400,8 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\eql at define@key{setup}{taglayout}{\eql at tag@setmake{#1}}
-\eql at define@key{setup}{taglayout*}{\eql at tag@setmake@{#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}{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}}
@@ -6945,13 +7443,13 @@
 \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}{%
-  \setlength\eql at flushleftmargin@{#1}}
+  \eql at flushleftmargin@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{minleftmargin}{%
-  \setlength\eql at flushleftmarginmin@{#1}}
+  \eql at flushleftmarginmin@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{maxleftmargin}{%
-  \setlength\eql at flushleftmarginmax@{#1}}
+  \eql at flushleftmarginmax@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{maxleftmargin*}[]{%
-  \setlength\eql at flushleftmarginmax@{.5\maxdimen}}
+  \eql at flushleftmarginmax@.5\maxdimen}
 %    \end{macrocode}
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -7035,7 +7533,7 @@
 %    \begin{macrocode}
 \let\eql at multi@linesfallback\eql at true
 \let\eql at single@crerror\eql at true
-\let\eql at ampproof@active\eql at true
+\let\eql at ampproof@active\eql at false
 \eql at define@key{setup}{linesfallback}[true]{%
   \eql at decide@bool{#3}{#2}{#1}\eql at multi@linesfallback}
 \eql at define@key{setup}{ampproof}[true]{%
@@ -7046,6 +7544,10 @@
   \eql at decide@if{#3}{#2}{#1}%
     {\let\eql at scan@body\eql at scan@body at rescan}%
     {\let\eql at scan@body\eql at scan@body at dump}}
+\eql at define@key{setup}{defaults}{%
+  \eql at decide@select{#3}{#2}{#1}{%
+    {{classic}{\eql at defaults@classic}},%
+    {{eqnlines}{\eql at defaults@eqnlines}}}}
 %    \end{macrocode}
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -7053,22 +7555,26 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\let\eql at provide@amsmath\eql at true
-\let\eql at provide@equation\eql at true
-\let\eql at provide@ang\eql at true
-\let\eql at amsmath@dofixends\eql at true
+\let\eql at provide@opt at equation\eql at true
+\let\eql at provide@opt at amsmathends\eql at true
+\let\eql at provide@opt at amsmath\eql at true
+\let\eql at provide@opt at ang\eql at true
+\let\eql at provide@opt at eqref\eql at true
 \eql at define@key{setup}{equation}[true]{%
   \eql at error@packageoption{#2}%
-  \eql at decide@bool{#3}{#2}{#1}\eql at provide@equation}
+  \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at equation}
+\eql at define@key{setup}{amsmathends}[true]{%
+  \eql at error@packageoption{#2}%
+  \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at amsmathends}
 \eql at define@key{setup}{amsmath}[true]{%
   \eql at error@packageoption{#2}%
-  \eql at decide@bool{#3}{#2}{#1}\eql at provide@amsmath}
-\eql at define@key{setup}{amsmathends}[true]{%
-  \eql at error@packageoption{#2}%
-  \eql at decide@bool{#3}{#2}{#1}\eql at amsmath@dofixends}
+  \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at amsmath}
 \eql at define@key{setup}{ang}[true]{%
   \eql at error@packageoption{#2}%
-  \eql at decide@bool{#3}{#2}{#1}\eql at provide@ang}
+  \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at ang}
+\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}
 %    \end{macrocode}
 %
 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -7195,7 +7701,7 @@
       \eql at provide@movecmd{#1}{eql@#1}%
     }%
     \eql at provide@movecmd{#1}{eql@#1}%
-    \eql at amsmath@futurebefore{\eql at provide@undefinecmd{#1}}%
+    \eql at amsmath@before{\eql at provide@undefinecmd{#1}}%
   \fi
 }
 %    \end{macrocode}
@@ -7254,8 +7760,8 @@
     }%
     \eql at provide@moveenv{#1}{eql@#1}%
     \eql at provide@moveenv{#1*}{eql@#1*}%
-    \eql at amsmath@futurebefore{\eql at provide@undefineenv{#1}}%
-    \eql at amsmath@futurebefore{\eql at provide@undefineenv{#1*}}%
+    \eql at amsmath@before{\eql at provide@undefineenv{#1}}%
+    \eql at amsmath@before{\eql at provide@undefineenv{#1*}}%
   \fi
 }
 %    \end{macrocode}
@@ -7286,7 +7792,13 @@
     }}%
     \eql at provide@moveenv{equation}{eql at equation}%
     \eql at provide@moveenv{equation*}{eql at equation*}%
-    \eql at amsmath@futurebefore{\eql at provide@undefineenv{equation*}}%
+    \eql at amsmath@before{\eql at provide@undefineenv{equation*}}%
+    \ifdefined\eql at tagging@on
+      \AddToHook{begindocument/end}{%
+        \eql at provide@moveenv{equation}{eql at equation}%
+        \eql at provide@moveenv{equation*}{eql at equation*}%
+      }%
+    \fi
   \fi
 }
 %    \end{macrocode}
@@ -7311,18 +7823,6 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\def\eql at provide@env at subequations@reinstall{%
-  \global\let\subequations\eql at subequations
-  \let\@tempa\UseHook
-  \let\@tempb\UseHookWithArguments
-  \def\UseHook{\let\UseHook\@tempa\let\UseHookWithArguments\@tempb%
-    \expandafter\subequations\@gobble}%
-  \def\UseHookWithArguments{\expandafter\UseHook\@gobble}%
-}
-%    \end{macrocode}
-%
-% \TODO describe
-%    \begin{macrocode}
 \def\eql at provide@env at subequations#1{%
   \eql at provide@onlyonce{subequations}{#1}%
   \ifdefined\eql at tmp
@@ -7332,7 +7832,6 @@
     \eql at amsmath@after{%
       \eql at provide@moveenv{amssubequations}{subequations}%
       \eql at provide@moveenv{subequations}{eql at subequations}%
-      \let\subequations\eql at provide@env at subequations@reinstall
     }%
     \AddToHook{package/hyperref/after}{%
       \AddToHook{cmd/subequations/before}[hyperref]{}%
@@ -7344,17 +7843,18 @@
         \stepcounter{equation}%
         \protected at edef\theHparentequation{\theHequation}%
         \addtocounter{equation}{-1}%
-      }
+      }%
       \AddToHook{cmd/amssubequations/after}%
       {%
         \def\theHequation{\theHparentequation\alph{equation}}%
         \ignorespaces
-      }
-    }
+      }%
+      \AddToHook{begindocument/end}{%
+        \eql at provide@moveenv{subequations}{eql at subequations}%
+      }%
+    }%
     \eql at provide@moveenv{subequations}{eql at subequations}%
-    \AddToHook{cmd/subequations/after}{}%
-    \let\subequations\eql at provide@env at subequations@reinstall
-    \eql at amsmath@futurebefore{\eql at provide@undefineenv{subequations}}%
+    \eql at amsmath@before{\eql at provide@undefineenv{subequations}}%
   \fi
 }
 %    \end{macrocode}
@@ -7368,6 +7868,12 @@
     \let\[\eql at equations@sqr at open
     \let\]\eql at equations@sqr at close
   }%
+  \ifdefined\eql at tagging@on
+    \AddToHook{begindocument/end}{%
+      \let\[\eql at equations@sqr at open
+      \let\]\eql at equations@sqr at close
+    }%
+  \fi
 }
 %    \end{macrocode}
 %
@@ -7398,6 +7904,10 @@
 \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}[]{%
+  \def\maketag@@@##1{\eql at tag@box{##1}}}
 %    \end{macrocode}
 %
 % \TODO describe
@@ -7446,14 +7956,14 @@
 %
 % Provide classes of interfaces:
 %    \begin{macrocode}
-\ifcsname tagsleft at true\endcsname\else
+\ifdefined\tagsleft at true\else
   \expandafter\newif\csname iftagsleft@\endcsname
 \fi
-\ifcsname @fleqntrue\endcsname\else
+\ifdefined\@fleqntrue\else
   \expandafter\newif\csname if at fleqn\endcsname
 \fi
-\ifdefined\eql at provide@amsmath
-  \let\eql at provide@equation\eql at true
+\ifdefined\eql at provide@opt at amsmath
+  \let\eql at provide@opt at equation\eql at true
   \eql at amsmath@after{%
     \iftagsleft@
       \eqnlinesset{tagsleft}
@@ -7471,35 +7981,34 @@
 %
 % \TODO describe
 %    \begin{macrocode}
-\ifdefined\eql at provide@equation
-  \eqnlinesprovide{equation,sqr}
-\fi
+\ifdefined\eql at provide@opt at equation\eqnlinesprovide{equation,sqr}\fi
 %    \end{macrocode}
 %
 % \TODO describe
 %    \begin{macrocode}
-\ifdefined\eql at amsmath@dofixends
-  \eql at amsmath@fixends
-\fi
+\ifdefined\eql at provide@opt at amsmathends\eql at amsmath@fixends\fi
 %    \end{macrocode}
 %
 % \TODO describe
 %    \begin{macrocode}
-\ifdefined\eql at provide@amsmath
+\ifdefined\eql at provide@opt at amsmath
   \eqnlinesprovide{%
     multline,gather,align,flalign,%
     multlined,gathered,aligned,%
-    subequations,eqref}
+    subequations}
 \fi
 %    \end{macrocode}
 %
 % \TODO describe
 %    \begin{macrocode}
-\ifdefined\eql at provide@ang
-  \eqnlinesprovide{ang}
-\fi
+\ifdefined\eql at provide@opt at ang\eqnlinesprovide{ang}\fi
 %    \end{macrocode}
 %
+% \TODO describe
+%    \begin{macrocode}
+\ifdefined\eql at provide@opt at eqref\eqnlinesprovide{eqref}\fi
+%    \end{macrocode}
+%
 %\iffalse
 %</package>
 %\fi

Modified: trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines-dev.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines-dev.sty	2025-03-11 20:06:37 UTC (rev 74570)
+++ trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines-dev.sty	2025-03-11 20:06:49 UTC (rev 74571)
@@ -21,7 +21,7 @@
 %% version 2008 or later.
 %% 
 \NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesPackage{eqnlines-dev}[2025/02/25 v0.5 Single- and multi-line equations (development)]
+\ProvidesPackage{eqnlines-dev}[2025/03/11 v0.6 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}}
@@ -106,8 +106,10 @@
 \def\eql at warn@tag at multiple{\eql at warning{Multiple equation \string\tag's:
       previous tag declaration will be lost}}
 \def\eql at amsmath@after#1{\AddToHook{package/amsmath/after}{#1}}
-\def\eql at amsmath@futurebefore#1{%
+\def\eql at amsmath@before#1{%
   \@ifpackageloaded{amsmath}{}{\AddToHook{package/amsmath/before}{#1}}}
+\def\eql at amsmath@undefine#1{\eql at amsmath@before{\let#1\@undefined}}
+\def\eql at amsmath@let#1#2{\eql at amsmath@undefine#1\let#1#2}
 \let\eql at false\@undefined
 \let\eql at true\@empty
 \newskip\eql at regunset@
@@ -116,7 +118,7 @@
   #1\eql at regunset@\relax
   \AtBeginDocument{%
     \ifdim#1=\eql at regunset@
-      \setlength#1{#2}%
+      #1\glueexpr#2\relax
     \fi
   }%
 }
@@ -141,30 +143,45 @@
 \def\eql at box@marginright{\z at skip}
 \def\eql at box@colsep{2em}
 \def\eql at spread{\jot}
+\newdimen\eql at spread@amount@
 \newdimen\eql at tagfuzz@
 \eql at tagfuzz@16sp\relax
-\newskip\eql at abovedisplayskip@
-\newskip\eql at belowdisplayskip@
-\newskip\eql at abovedisplaytagskip@
-\newskip\eql at belowdisplaytagskip@
-\eql at abovedisplaytagskip@\z at skip
-\eql at belowdisplaytagskip@\z at skip
-\newcount\eql at displayshortmode@
-\eql at displayshortmode@\tw@
-\newskip\eql at abovedisplaycontskip@
-\eql at regsetdelayed\eql at abovedisplaycontskip@\abovedisplayshortskip
-\newskip\eql at abovedisplaytopskip@
-\newskip\eql at belowdisplaytopskip@
-\eql at abovedisplaytopskip@\z at skip
-\eql at regsetdelayed\eql at belowdisplaytopskip@\belowdisplayskip
-\newskip\eql at abovedisplayparskip@
-\eql at regsetdelayed\eql at abovedisplayparskip@\abovedisplayskip
 \def\eql at display@height{\ht\eql at strutbox@}
 \def\eql at display@depth{\dp\eql at strutbox@}
-\newskip\eql at abovedisplaymedskip@
-\newskip\eql at belowdisplaymedskip@
-\eql at regsetdelayed\eql at abovedisplaymedskip@\belowdisplayshortskip
-\eql at regsetdelayed\eql at belowdisplaymedskip@\eql at belowdisplaymedskip@
+\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@
+\newcount\eql at skip@mode at leave@
+\let\eql at skip@force at leave\@undefined
+\newcount\eql at skip@mode at above@
+\newcount\eql at skip@mode at below@
+\let\eql at skip@force at above\@undefined
+\let\eql at skip@force at below\@undefined
+\let\eql at skip@custom at above\@undefined
+\let\eql at skip@custom at below\@undefined
+\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@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}
 \newdimen\eql at colsepmin@
 \newdimen\eql at colsepmax@
 \def\eql at colsepmin@val{1em}
@@ -189,7 +206,9 @@
 \newdimen\eql at tagwidth@
 \newdimen\eql at line@height@
 \newdimen\eql at line@depth@
-\newif\ifmeasuring@
+\ifdefined\measuring at true\else
+  \expandafter\newif\csname ifmeasuring@\endcsname
+\fi
 \AddToHook{package/hyperref/after}{
   \ifdefined\Hy at ifnotmeasuring
     \renewcommand\Hy at ifnotmeasuring[1]{\ifmeasuring@\else#1\fi}
@@ -196,9 +215,9 @@
   \fi
 }
 \ifdefined\@displaytrue\else
-\everydisplay\expandafter{\the\everydisplay\@displaytrue}
+  \expandafter\newif\csname if at display\endcsname
+  \everydisplay\expandafter{\the\everydisplay\@displaytrue}
 \fi
-\newif\if at display
 \let\eql at hook@blockbefore\@empty
 \let\eql at hook@blockafter\@empty
 \let\eql at hook@blockin\@empty
@@ -212,6 +231,68 @@
 \let\eql at hook@innerleft\@empty
 \let\eql at hook@innerright\@empty
 \let\eql at hook@innerlead\@empty
+\let\eql at tagging@on\eql at false
+\IfFormatAtLeastTF{2025-06-01}{%
+  \csname tag_if_active:T\endcsname{\let\eql at tagging@on\eql at true}}{}
+\ifdefined\eql at tagging@on
+  \def\eql at tagging@mathsave{%
+    \UseTaggingSocket{math/luamml/save/nNn}{{}\displaystyle{mtd}}}
+  \def\eql at tagging@mathaddlast{%
+    \UseTaggingSocket{math/luamml/mtable/finalizecol}{last}}
+  \def\eql at tagging@tagbegin{%
+    \UseTaggingSocket{math/display/tag/begin}}
+  \def\eql at tagging@tagend{%
+    \UseTaggingSocket{math/display/tag/end}}
+  \def\eql at tagging@tagsave{%
+    \UseTaggingSocket{math/luamml/mtable/tag/save}}
+  \def\eql at tagging@tagaddbox{%
+    \setbox\z@\copy\eql at tagbox@%
+    \UseTaggingSocket{math/luamml/mtable/tag/set}}
+  \def\eql at tagging@tablesaveinner{%
+    \UseExpandableTaggingSocket{math/luamml/mtable/innertable/save}}
+  \def\eql at tagging@tableaddinner{%
+    \UseTaggingSocket{math/luamml/mtable/innertable/finalize}}
+  \def\eql at tagging@tablesavelines{%
+    \UseExpandableTaggingSocket{math/luamml/mtable/finalize}{gather}}
+  \def\eql at tagging@tablesavealign{%
+    \UseExpandableTaggingSocket{math/luamml/mtable/finalize}{align}}
+  \def\eql at tagging@alignleft{%
+    \UseTaggingSocket{math/luamml/mtable/aligncol}{left}}
+  \def\eql at tagging@aligncenter{%
+    \UseTaggingSocket{math/luamml/mtable/aligncol}{center}}
+  \def\eql at tagging@alignright{%
+    \UseTaggingSocket{math/luamml/mtable/aligncol}{right}}
+  \let\eql at single@doscan\eql at true
+  \let\eql at scan@body\eql at scan@body at rescan
+  \ExplSyntaxOn
+  \def\eql at tagging@start{%
+    \bool_if:NF\l__math_collected_bool{%
+      \toks@\expandafter{\eql at tagging@opt}%
+      \edef\eql at tmp{{\@currenvir}{[\the\toks@] \the\eql at scan@reg@}}%
+      \expandafter\__math_process:nn\eql at tmp
+      \@kernel at math@registered at begin
+      \bool_set_true:N\l__math_collected_bool
+    }%
+  }
+  \def\eql at tagging@end{}
+  \ExplSyntaxOff
+\else
+  \def\eql at tagging@mathsave{}
+  \def\eql at tagging@mathaddlast{}
+  \def\eql at tagging@tagbegin{}
+  \def\eql at tagging@tagend{}
+  \def\eql at tagging@tagsave{}
+  \def\eql at tagging@tagaddbox{}
+  \def\eql at tagging@tablesaveinner{}
+  \def\eql at tagging@tableaddinner{}
+  \def\eql at tagging@tablesavelines{}
+  \def\eql at tagging@tablesavealign{}
+  \def\eql at tagging@alignleft{}
+  \def\eql at tagging@aligncenter{}
+  \def\eql at tagging@alignright{}
+  \def\eql at tagging@start{}
+  \def\eql at tagging@end{}
+\fi
 \let\eql at punct@col\@empty
 \let\eql at punct@line\relax
 \let\eql at punct@block\relax
@@ -295,8 +376,7 @@
   \eql at box@lastfield
   \cr
   \noalign{%
-    \setlength\skip@{#1}%
-    \vskip\skip@
+    \vskip\glueexpr#1\relax
   }%
 }
 \let\eql at box@box\vcenter
@@ -313,10 +393,10 @@
   \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
@@ -326,12 +406,14 @@
           ##%
           \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@
@@ -346,10 +428,12 @@
           ##%
           \eql at punct@apply at col
           \eql at hook@colout
+          \eql at tagging@mathsave
         $%
+        \eql at tagging@mathaddlast
       }%
       \hfil
-      \tabskip\eql at colsep@
+      \tabskip\eql at colsep@\relax
     \crcr
     \noalign{%
       \eql at hook@blockbefore
@@ -368,44 +452,49 @@
   \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
-      $%
-    }%
-    \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@
-    \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@
-    \or
-      \skip@\@flushglue
-      \advance\skip@\eql at paddingleft@\relax
-      \advance\skip@\eql at paddingright@\relax
-      \hskip\skip@
-      \box\eql at fieldbox@
-    \fi
-    \tabskip\eql at colsep@
+      \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
@@ -422,6 +511,7 @@
     \noalign{%
       \eql at hook@blockafter
     }%
+    \eql at tagging@tablesaveinner
   \egroup
 }
 \def\eql at box@start{%
@@ -434,17 +524,16 @@
   \eql at nextopt@process{equationsbox}%
   \let\eql at punct@block\eql at punct@main
   \let\eql at punct@main\relax
-  \setlength\eql at colsep@\eql at box@colsep
-  \setlength\eql at paddingleft@\eql at paddingleft@val
-  \setlength\eql at paddingright@\eql at paddingright@val
-  \setlength\eql at indent@\eql at indent@val
+  \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
-  \setlength\skip@\eql at box@marginleft
-  \hskip\skip@
+  \hskip\glueexpr\eql at box@marginleft\relax
   \eql at box@box\bgroup
     \eql at display@leave
     \let\\\eql at box@cr
@@ -457,8 +546,8 @@
 \newcommand{\eql at box@end}{%
     \eql at box@close
   \egroup
-  \setlength\skip@\eql at box@marginright
-  \hskip\skip@
+  \eql at tagging@tableaddinner
+  \hskip\glueexpr\eql at box@marginright\relax
   \eql at stack@restore
   \eql at box@endmath
 }
@@ -482,153 +571,55 @@
 \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
-\eql at amsmath@futurebefore{
-  \let\c at parentequation\@undefined
-  \let\theparentequation\@undefined
+\def\eql at tag@setbox@#1{%
+  \def\eql at tag@box##1{#1}%
 }
-\ifdefined\c at parentequation\else
-\newcounter{parentequation}
-\fi
-\def\eql at subequations@template{\theparentequation\alph{equation}}
-\let\eql at subequations@active\eql at false
-\def\eql at subequations@init{%
-  \edef\eql at subequations@restorecounter{%
-    \global\c at equation\the\c at equation\relax}%
-  \ifdefined\eql at blocktag
-    \expandafter\eql at tag@makenext\eql at blocktag
-    \eql at nexttag
-    \global\advance\eql at numbering@refcount@\@ne
-    \protected at edef\theHparentequation{eql-\the\eql at numbering@refcount@}%
-    \protected at edef\theparentequation{\eql at tag@text}%
-  \else
-    \advance\c at equation\@ne
-    \protected at edef\theparentequation{\theequation}%
-    \ifdefined\theHequation
-      \protected at edef\theHparentequation{\theHequation}%
-    \fi
-  \fi
-  \global\c at parentequation\c at equation
-  \global\c at equation\z@
-  \let\theequation\eql at subequations@template
-  \def\theHequation{\theHparentequation.\arabic{equation}}%
+\def\eql at tag@setbox#1{%
+  \def\eql at tag@box##1{\hbox{\m at th\normalfont#1}}%
 }
-\def\eql at subequations@close{%
-  \ifnum\c at equation=\z@
-    \eql at subequations@restorecounter
-  \else
-    \global\c at equation\c at parentequation
-  \fi
-}
-\def\eql at subequations@start{%
-  \let\eql at blocktag\@undefined
-  \let\eql at blocklabel\@undefined
-  \eql at nextopt@process{subequations}%
-  \eql at subequations@init
-  \global\advance\eql at numbering@refcount@\@ne
-  \edef\eql at subequations@currentHref{equation.eql-\the\eql at numbering@refcount@}%
-  \eql at Hy@anchor\eql at subequations@currentHref
-  \edef\eql at subequations@thepage{\thepage}%
-  \def\@currentcounter{equation}%
-  \let\@currentHref\eql at subequations@currentHref
-  \protected at edef\@currentlabel{\p at equation\theparentequation}%
-  \let\@currentlabelname\eql at labelname@default
-  \let\eql at subequations@active\eql at true
-  \ifdefined\eql at blocklabel
-    \ifdefined\eql at SK
-      \SK@\SK@@label\eql at blocklabel
-    \fi
-  \fi
-  \ignorespaces
-}
-\def\eql at subequations@end{%
-  \ifnum\c at equation>\z@
-    \ifdefined\eql at blocklabel
-      \begingroup
-        \def\@currentcounter{equation}%
-        \let\thepage\eql at subequations@thepage
-        \let\@currentHref\eql at subequations@currentHref
-        \protected at edef\@currentlabel{\p at equation\theparentequation}%
-        \let\@currentlabelname\eql at labelname@default
-        \expandafter\eql at label@clean\expandafter{\eql at blocklabel}%
-      \endgroup
-    \fi
-  \fi
-  \eql at subequations@close
-  \ignorespacesafterend
-}
-\newenvironment{eql at subequations}{%
-\eql at dev@enterenv
-  \eql at subequations@testall\eql at subequations@start%
-}{%
-  \eql at subequations@end
-\eql at dev@leaveenv
-}
-\def\eql at subequations@testall{\eql at subequations@testopt}
-\def\eql at subequations@testopt#1{%
-  \eql at ifnextchar@tight[%]
-    {\eql at subequations@addopt{\eql at subequations@testat{#1}}}%
-    {\eql at subequations@testat{#1}}}
-\def\eql at subequations@addopt#1[#2]{\eqnaddopt{#2}#1}
-\def\eql at subequations@testat#1{%
-  \eql at ifat@tight%
-    {\eql at subequations@addlabel{#1}}%
-    {#1}}
-\def\eql at subequations@addlabel#1#2{\eqnaddopt{label={#2}}#1}
-\ifdefined\maketag@@@\else
-\def\maketag@@@#1{\hbox{\m at th\normalfont#1}}
-\fi
-\ifdefined\tagform@\else
-\def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}
-\fi
-\def\eql at tag@setmake@#1{%
-  \def\maketag@@@##1{\hbox{\m at th\normalfont#1}}%
-}
-\def\eql at tag@setmake#1{%
-  \def\maketag@@@##1{\hbox{\m at th\normalfont#1}}%
-}
 \def\eql at tag@setform@#1{%
-  \def\tagform@##1{\maketag@@@{#1}}%
+  \def\eql at tag@form##1{#1}%
 }
 \def\eql at tag@setform#1#2#3{%
-  \def\tagform@##1{\maketag@@@{#1\ignorespaces#2\unskip\@@italiccorr#3}}%
+  \def\eql at tag@form##1{#1\ignorespaces#2\unskip\@@italiccorr#3}%
 }
-
+\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}}}
 \newdimen\eql at raisetag@amount@
 \def\eql at raisetag@default{%
   \eql at warning{\string\raisetag\space not allowed here}
   \@gobble
 }
-\eql at amsmath@after{\let\eql at raisetag@default\raisetag}
-\eql at amsmath@futurebefore{\let\raisetag\@undefined}
-\let\raisetag\eql at raisetag@default
-\def\eql at raisetag#1{\setlength\dimen@{#1}\global\eql at raisetag@amount@\dimen@}%
-\let\eql at SK\@undefined
-\let\eql at SK@lab at relax\@empty
-\let\eql at SK@makelabel\@gobble
+\eql at amsmath@let\raisetag\eql at raisetag@default
+\def\eql at raisetag#1{\global\eql at raisetag@amount@\glueexpr#1\relax}%
+\let\eql at SK@loaded\eql at false
+\let\eql at SK@label\@gobble
+\let\eql at SK@clearlabel\@empty
+\let\eql at SK@setlabel\@gobble
 \let\eql at SK@printlabel at right\@empty
 \let\eql at SK@printlabel at left\@empty
 \let\eql at SK@printlabel at line\@empty
 \def\eql at label@clean{\eql at label@org}
 \AddToHook{package/showkeys/after}{
-  \let\eql at SK\@empty
-  \def\eql at SK@lab at relax{\let\eql at SK@lab\relax}
-  \eql at SK@lab at relax
+  \let\eql at SK@loaded\eql at true
+  \def\eql at SK@label#1{\SK@\SK@@label#1}
+  \def\eql at SK@clearlabel{\let\eql at SK@lab\relax}
+  \eql at SK@clearlabel
   \def\eql at SK@@label#1>#2\SK@{%
     \def\eql at SK@lab{\smash{\SK at labelcolor\showkeyslabelformat{#2}}}%
   }
-  \def\eql at SK@makelabel#1{%
-    \SK@\eql at SK@@label#1%
-  }
+  \def\eql at SK@setlabel#1{\SK@\eql at SK@@label#1}
   \def\eql at SK@printlabel at right{%
     \ifx\eql at SK@lab\relax\else
       \rlap{\kern\marginparsep\eql at SK@lab}%
-      \eql at SK@lab at relax
+      \eql at SK@clearlabel
     \fi
   }
   \def\eql at SK@printlabel at left{%
     \ifx\eql at SK@lab\relax\else
       \llap{\eql at SK@lab\kern\marginparsep}%
-      \eql at SK@lab at relax
+      \eql at SK@clearlabel
     \fi
   }
   \def\eql at SK@printlabel at line{%
@@ -640,7 +631,7 @@
           \eql at SK@lab
           \kern\marginparsep
         }%
-        \eql at SK@lab at relax
+        \eql at SK@clearlabel
       \else
         \rlap{%
           \dimen@\displaywidth
@@ -649,7 +640,7 @@
           \eql at SK@lab
         }%
       \fi
-      \eql at SK@lab at relax
+      \eql at SK@clearlabel
       \prevdepth\dimen@
     \fi
   }
@@ -662,9 +653,6 @@
 \let\eql at nexttag\@undefined
 \def\eql at tag@default{%
   \eql at error{\string\tag\space not allowed here}{}\eql at tag@gobble}
-\eql at amsmath@after{
-  \let\eql at tag@default\tag
-}
 \let\tag\eql at tag@default
 \def\eql at tag@gobble@[#1]#2{}
 \def\eql at tag@gobble{%
@@ -681,7 +669,7 @@
 }
 \def\eql at tag@makenext at star[#1]#2{%
   \global\def\eql at nexttag{%
-    \let\eql at tag@tool\maketag@@@
+    \let\eql at tag@tool\@firstofone
     \protected at edef\eql at tag@text{#2}%
     \protected at edef\eql at tag@label{#1}%
   }%
@@ -688,7 +676,7 @@
 }
 \def\eql at tag@makenext@[#1]#2{%
   \global\def\eql at nexttag{%
-    \let\eql at tag@tool\tagform@
+    \let\eql at tag@tool\eql at tag@form
     \protected at edef\eql at tag@text{#2}%
     \protected at edef\eql at tag@label{#1}%
     \protected at edef\eql at tag@label{\p at equation\eql at tag@label}%
@@ -696,9 +684,11 @@
 }
 \newcount\eql at numbering@refcount@
 \eql at numbering@refcount@\z@
+\def\eql at numbering@ref{equation.eql-\the\eql at numbering@refcount@}
+\def\eql at numbering@refstep{\global\advance\eql at numbering@refcount@\@ne}
 \def\eql at numbering@makeblockanchor{%
-  \global\advance\eql at numbering@refcount@\@ne
-  \global\edef\eql at label@currentHref{equation.eql-\the\eql at numbering@refcount@}%
+  \eql at numbering@refstep
+  \global\edef\eql at label@currentHref{\eql at numbering@ref}%
   \eql at Hy@anchor\eql at label@currentHref
   \global\edef\eql at label@thepage{\thepage}%
 }
@@ -711,19 +701,19 @@
     \eql at nexttag
     \def\@currentcounter{equation}%
     \let\@currentlabel\eql at tag@label
-    \global\advance\eql at numbering@refcount@\@ne
-    \edef\@currentHref{equation.eql-\the\eql at numbering@refcount@}%
+    \eql at numbering@refstep
+    \edef\@currentHref{\eql at numbering@ref}%
     \eql at Hy@anchor\@currentHref
     \global\let\eql at nexttag\@undefined
   \else
     \refstepcounter{equation}%
-    \let\eql at tag@tool\tagform@
+    \let\eql at tag@tool\eql at tag@form
     \edef\eql at tag@text{\theequation}%
   \fi
 }
 \def\eql at compose@label{%
   \ifmeasuring@\else
-    \eql at SK@lab at relax
+    \eql at SK@clearlabel
     \ifdefined\eql at nextlabel
       \ifnum
         \ifnum\eql at numbering@target@<\z@
@@ -737,7 +727,7 @@
   \fi
 }
 \def\eql at compose@label@{%
-  \eql at SK@makelabel\eql at nextlabel
+  \eql at SK@setlabel\eql at nextlabel
   \begingroup
     \ifnum\eql at numbering@target@=\eql at row@
       \eql at numbering@setblockanchor
@@ -748,7 +738,12 @@
   \endgroup
 }
 \def\eql at compose@tag{%
-  \eql at tag@tool\eql at tag@text
+  \eql at tagging@tagbegin
+  \eql at tag@box{%
+    \eql at tag@tool\eql at tag@text
+    \eql at tagging@tagsave
+  }%
+  \eql at tagging@tagend
 }
 \def\eql at compose@print{%
   \eql at compose@anchor
@@ -764,10 +759,10 @@
 \def\eql at compose@measure{%
   \ifdefined\eql at nexttag
     \eql at nexttag
-    \eql at tag@tool\eql at tag@text
+    \eql at tag@box{\eql at tag@tool\eql at tag@text}%
   \else
     \stepcounter{equation}%
-    \tagform@\theequation
+    \eql at tag@box{\eql at tag@form\theequation}%
   \fi
   \ifnum\eql at numbering@target@<\z@
     \global\let\eql at nextlabel\@undefined
@@ -826,7 +821,7 @@
 \def\eql at numbering@printsubeqlabel{%
   \ifdefined\eql at parentlabel
     \eql at numbering@makeblockanchor
-    \eql at SK@makelabel\eql at parentlabel
+    \eql at SK@setlabel\eql at parentlabel
     \begingroup
       \def\@currentcounter{equation}%
       \eql at numbering@setblockanchor
@@ -1121,6 +1116,94 @@
     \fi
   \fi
 }
+\eql at amsmath@undefine\c at parentequation
+\eql at amsmath@undefine\theparentequation
+\ifdefined\c at parentequation\else
+\newcounter{parentequation}
+\fi
+\def\eql at subequations@template{\theparentequation\alph{equation}}
+\let\eql at subequations@active\eql at false
+\def\eql at subequations@init{%
+  \edef\eql at subequations@restorecounter{%
+    \global\c at equation\the\c at equation\relax}%
+  \ifdefined\eql at blocktag
+    \expandafter\eql at tag@makenext\eql at blocktag
+    \eql at nexttag
+    \eql at numbering@refstep
+    \protected at edef\theHparentequation{\eql at numbering@ref}%
+    \protected at edef\theparentequation{\eql at tag@text}%
+  \else
+    \advance\c at equation\@ne
+    \protected at edef\theparentequation{\theequation}%
+    \ifdefined\theHequation
+      \protected at edef\theHparentequation{\theHequation}%
+    \fi
+  \fi
+  \global\c at parentequation\c at equation
+  \global\c at equation\z@
+  \let\theequation\eql at subequations@template
+  \def\theHequation{\theHparentequation.\arabic{equation}}%
+}
+\def\eql at subequations@close{%
+  \ifnum\c at equation=\z@
+    \eql at subequations@restorecounter
+  \else
+    \global\c at equation\c at parentequation
+  \fi
+}
+\def\eql at subequations@start{%
+  \let\eql at blocktag\@undefined
+  \let\eql at blocklabel\@undefined
+  \eql at nextopt@process{subequations}%
+  \eql at subequations@init
+  \eql at numbering@refstep
+  \edef\eql at subequations@currentHref{\eql at numbering@ref}%
+  \eql at Hy@anchor\eql at subequations@currentHref
+  \edef\eql at subequations@thepage{\thepage}%
+  \def\@currentcounter{equation}%
+  \let\@currentHref\eql at subequations@currentHref
+  \protected at edef\@currentlabel{\p at equation\theparentequation}%
+  \let\@currentlabelname\eql at labelname@default
+  \let\eql at subequations@active\eql at true
+  \ifdefined\eql at blocklabel
+    \eql at SK@label\eql at blocklabel
+  \fi
+  \ignorespaces
+}
+\def\eql at subequations@end{%
+  \ifnum\c at equation>\z@
+    \ifdefined\eql at blocklabel
+      \begingroup
+        \def\@currentcounter{equation}%
+        \let\thepage\eql at subequations@thepage
+        \let\@currentHref\eql at subequations@currentHref
+        \protected at edef\@currentlabel{\p at equation\theparentequation}%
+        \let\@currentlabelname\eql at labelname@default
+        \expandafter\eql at label@clean\expandafter{\eql at blocklabel}%
+      \endgroup
+    \fi
+  \fi
+  \eql at subequations@close
+  \ignorespacesafterend
+}
+\newenvironment{eql at subequations}{%
+\eql at dev@enterenv
+  \eql at subequations@testall\eql at subequations@start%
+}{%
+  \eql at subequations@end
+\eql at dev@leaveenv
+}
+\def\eql at subequations@testall{\eql at subequations@testopt}
+\def\eql at subequations@testopt#1{%
+  \eql at ifnextchar@tight[%]
+    {\eql at subequations@addopt{\eql at subequations@testat{#1}}}%
+    {\eql at subequations@testat{#1}}}
+\def\eql at subequations@addopt#1[#2]{\eqnaddopt{#2}#1}
+\def\eql at subequations@testat#1{%
+  \eql at ifat@tight%
+    {\eql at subequations@addlabel{#1}}%
+    {#1}}
+\def\eql at subequations@addlabel#1#2{\eqnaddopt{label={#2}}#1}
 \def\eql at numbering@subeq at init{%
   \let\eql at save@theequation\theequation
   \let\eql at save@theHequation\theHequation
@@ -1152,9 +1235,8 @@
 }
 \DeclareRobustCommand{\eql at displaybreak@default}[1][4]{%
   \eql at warning{Invalid use of \string\displaybreak}{}}
-\eql at amsmath@futurebefore{\let\displaybreak\@undefined}
 \eql at amsmath@after{\let\eql at displaybreak@default\displaybreak}
-\let\displaybreak\eql at displaybreak@default
+\eql at amsmath@let\displaybreak\eql at displaybreak@default
 \newcount\eql at displaybreak@pen@
 \newcount\eql at displaybreak@prepen@
 \protected\def\eql at displaybreak@print{%
@@ -1178,10 +1260,6 @@
   \eql at ampprotect\eql at testopt@tight\eql at displaybreak@measure@{4}%
 }
 \def\eql at displaybreak@measure@[#1]{}
-\def\eql at display@atend#1{%
-  \expandafter\def\expandafter\eql at display@doatend\expandafter
-    {\eql at display@doatend#1}%
-}
 \newskip\eql at vspaceskip@
 \newskip\eql at abovespace@
 \newskip\eql at belowspace@
@@ -1188,9 +1266,7 @@
 \let\eql at vspace@org\vspace
 \def\eql at vspace{\eql at ifstar@loose\eql at vspace@\eql at vspace@}
 \def\eql at vspace@#1{%
-  \setlength\skip@{#1}%
-  \global\advance\eql at vspaceskip@\skip@
-}
+  \global\advance\eql at vspaceskip@\glueexpr#1\relax}
 \def\eql at display@init{%
   \eql at display@firstavail@\z@
   \eql at raisetag@firstlast@\z@
@@ -1201,50 +1277,140 @@
   \let\vspace\eql at vspace
 }
 \def\eql at display@close{%
+  \ifdim\eql at display@firstavail@<\z@
+    \eql at display@firstavail@\z@
+  \fi
+  \eql at skip@mode at leave@\z@
   \ifdim\eql at halign@prevdepth@=\maxdimen
     \ifdim\predisplaysize=-\maxdimen
-      \abovedisplayskip\eql at abovedisplaycontskip@
-      \predisplaysize\maxdimen
-      \abovedisplayshortskip\abovedisplayskip
-      \belowdisplayshortskip\belowdisplayskip
+      \eql at skip@mode at above@\tw@
+      \eql at skip@mode at below@\eql at skip@mode at cont@
+    \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@
+        \or
+          \eql at skip@mode at above@\@ne
+        \or
+          \eql at skip@mode at above@\@ne
+          \ifnum\eql at row@=\tw@
+            \eql at skip@mode at below@\@ne
+          \fi
+        \or
+          \eql at skip@mode at above@\@ne
+          \eql at skip@mode at below@\@ne
+        \fi
+      \fi
     \fi
   \else
-    \ifdim\eql at halign@prevdepth@=\@m\p@
+    \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@
-      \abovedisplayskip\eql at abovedisplaytopskip@
-      \belowdisplayskip\eql at belowdisplaytopskip@
+      \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
     \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@
-      \abovedisplayskip\eql at abovedisplayparskip@
+      \ifnum\eql at skip@mode at par@=\thr@@
+        \eql at skip@mode at leave@\@ne
+      \fi
     \fi
-    \predisplaysize\maxdimen
-    \abovedisplayshortskip\abovedisplayskip
-    \belowdisplayshortskip\belowdisplayskip
   \fi
-  \eql at display@doatend
-  \ifdim\eql at display@firstavail@<\z@
-    \eql at display@firstavail@\z@
+  \ifdefined\eql at skip@force at above
+    \eql at skip@mode at above@\eql at skip@force at above\relax
   \fi
-  \advance\eql at display@firstavail@\displayindent
-  \ifdim\eql at display@firstavail@>\predisplaysize
-    \ifcase\eql at displayshortmode@
+  \ifdefined\eql at skip@force at below
+    \eql at skip@mode at below@\eql at skip@force at below\relax
+  \fi
+  \ifdefined\eql at skip@force at leave
+    \eql at skip@mode at leave@\eql at skip@force at leave\relax
+  \fi
+  \ifodd\eql at raisetag@firstlast@
+    \ifcase\eql at skip@mode at above@
+      \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
     \or
-      \abovedisplayskip\abovedisplayshortskip
+      \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
     \or
-      \abovedisplayskip\abovedisplayshortskip
-      \ifnum\eql at row@=\tw@
-        \belowdisplayskip\belowdisplayshortskip
-      \fi
+      \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
     \or
-      \abovedisplayskip\abovedisplayshortskip
-      \belowdisplayskip\belowdisplayshortskip
+      \abovedisplayskip\glueexpr\eql at skip@partag at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@partag at above\relax
+    \or
+      \abovedisplayskip\z at skip
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@medtag at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@custom at above\relax
     \fi
+  \else
+    \ifcase\eql at skip@mode at above@
+      \abovedisplayskip\glueexpr\eql at skip@long at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@short at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@cont at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@par at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@top at above\relax
+    \or
+      \abovedisplayskip\z at skip
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@medtag at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@custom at above\relax
+    \fi
   \fi
-  \ifodd\eql at raisetag@firstlast@
-    \abovedisplayskip\eql at abovedisplaytagskip@
-  \fi
   \ifnum\eql at raisetag@firstlast@>\@ne
-    \belowdisplayskip\eql at belowdisplaytagskip@
+    \ifcase\eql at skip@mode at below@
+      \belowdisplayskip\glueexpr\eql at skip@tag at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@tag at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@tag at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@partag at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@partag at below\relax
+    \or
+      \belowdisplayskip\z at skip
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@medtag at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@custom at below\relax
+    \fi
+  \else
+    \ifcase\eql at skip@mode at below@
+      \belowdisplayskip\glueexpr\eql at skip@long at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@short at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@cont at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@par at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@top at below\relax
+    \or
+      \belowdisplayskip\z at skip
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@medtag at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@custom at below\relax
+    \fi
   \fi
   \ifnum\eql at displaybreak@pen@=\@MM\else
     \postdisplaypenalty\eql at displaybreak@pen@
@@ -1255,10 +1421,13 @@
   \advance\abovedisplayskip\eql at abovespace@
   \advance\belowdisplayskip\eql at belowspace@
   \advance\belowdisplayskip\eql at vspaceskip@
+  \abovedisplayshortskip\abovedisplayskip
+  \belowdisplayshortskip\belowdisplayskip
   \count@\prevgraf
   \advance\count@\eql at row@
   \advance\count at -\tw@
   \prevgraf\count@
+  \global\eql at skip@mode at leave@\eql at skip@mode at leave@
 }
 \def\eql at display@leave{%
   \let\label\eql at label@org
@@ -1265,12 +1434,15 @@
   \let\tag\eql at tag@default
   \let\raisetag\eql at raisetag@default
   \let\displaybreak\eql at displaybreak@default
+  \let\intertext\eql at intertext@default
   \let\vspace\eql at vspace@org
 }
 \expandafter\def\expandafter\@arrayparboxrestore\expandafter{%
   \@arrayparboxrestore
   \eql at display@leave
-  \eql at amprevert
+  \ifdefined\eql at ampproof@active
+    \eql at amprevert
+  \fi
   \@displayfalse
 }
 \newbox\eql at strutbox@
@@ -1289,14 +1461,11 @@
 }
 \AtBeginDocument{\eql at strut@make}
 \def\eql at halign@spread{%
-  \dimen@\eql at spread\relax
-  \advance\dimen@\normalbaselineskip
-  \ifdim\dimen@>\baselineskip
-    \normalbaselines
-    \dimen@\eql at spread\relax
-    \advance\dimen@\normalbaselineskip
-    \advance\dimen at -\baselineskip
-    \openup\dimen@
+  \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@
     \ifdefined\spread at equation
       \let\spread at equation\@empty
     \fi
@@ -1312,24 +1481,39 @@
     \eql at halign@prevdepth@\maxdimen
   \fi
 }
+\def\eql at halign@leave{%
+  \ifcase\eql at skip@mode at leave@
+  \or
+    \endgraf
+  \or
+    \endgraf
+    \prevdepth-\@m\p@
+  \fi
+}
 \def\eql at halign@before{%
   \ifdim\eql at halign@prevdepth@=\maxdimen\else
     \prevdepth\eql at halign@prevdepth@
   \fi
   \ifdim\prevdepth=-\@m\p@\else
-    \skip@\normalbaselineskip
-    \advance\skip at -\eql at display@height\relax
-    \advance\skip at -\prevdepth\relax
-    \ifdim\skip@<\normallineskiplimit
-      \vskip\normallineskip
+    \ifdefined\eql at display@height
+      \skip@\baselineskip
+      \advance\skip at -\glueexpr\eql at display@height\relax
+      \advance\skip at -\prevdepth\relax
+      \ifdim\skip@<\lineskiplimit
+        \skip@\lineskip
+      \fi
+      \advance\skip at -\eql at spread@amount@\relax
+      \vskip\skip@
+      \nointerlineskip
     \else
-      \vskip\skip@
+      \vskip-\eql at spread@amount@\relax
     \fi
-    \nointerlineskip
   \fi
 }
 \def\eql at halign@after{%
-  \prevdepth\eql at display@depth\relax
+  \ifdefined\eql at display@depth
+    \prevdepth\glueexpr\eql at display@depth\relax
+  \fi
 }
 \def\eql at halign@init#1{%
   \eql at halign@spread
@@ -1533,7 +1717,7 @@
     }%
 }
 \def\eql at adjust@shoveleft@[#1]{%
-  \eql at sregroup\setlength\dimen@{#1}\global\eql at shape@amount@\dimen@}
+  \eql at sregroup\global\eql at shape@amount@\glueexpr#1\relax}
 \def\eql at adjust@shovecenter{%
   \global\eql at shape@pos@\@ne\global\eql at shape@amount@\z@}
 \def\eql at adjust@shoveright{%
@@ -1544,7 +1728,12 @@
 }
 \def\eql at adjust@print#1#2{%
   \eql at restore@hfuzz
-  \hbox to\displaywidth{#1\unhbox\eql at fieldbox@\unkern#2}%
+  \hbox to\displaywidth{%
+    #1%
+    \unhbox\eql at fieldbox@\unkern
+    #2%
+    \eql at tagging@mathaddlast
+  }%
 }
 \def\eql at adjust@print at alignleft#1#2{%
   \ifnum\eql at row@=\@ne
@@ -1576,6 +1765,14 @@
   \eql at shape@sel
 }
 \def\eql at adjust@sel at tag{%
+  \eql at tagging@tagaddbox
+  \ifcase\eql at shape@pos@
+    \eql at tagging@alignleft
+  \or
+    \eql at tagging@aligncenter
+  \or
+    \eql at tagging@alignright
+  \fi
   \csname eql at adjust%
     @\ifdefined\eql at flushleft flushleft\else center\fi
     @\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
@@ -1583,6 +1780,14 @@
     @tag\endcsname
 }
 \def\eql at adjust@sel at notag{%
+  \eql at tagging@tagaddbox
+  \ifcase\eql at shape@pos@
+    \eql at tagging@alignleft
+  \or
+    \eql at tagging@aligncenter
+  \or
+    \eql at tagging@alignright
+  \fi
   \csname eql at adjust%
     @\ifdefined\eql at flushleft flushleft\else center\fi
     @\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
@@ -1995,6 +2200,9 @@
     Please switch to equations environment}%
 }
 \def\eql at single@start{%
+  \eql at halign@catchprevdepth
+  \eql at tagging@start
+  $$%$$
   \eql at numbering@eval at mode
   \let\eql at numbering@subeq at use\eql at false
   \eql at stack@save at single
@@ -2017,7 +2225,15 @@
   \eql at hook@eqout
   \eql at single@end at sel
   \eql at stack@restore
+  $$%$$
+  \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
 }%
@@ -2055,6 +2271,7 @@
       \eql at hook@eqin
 }
 \def\eql at single@end at adjust{%
+    \eql at tagging@mathsave
     $%$
     \hfil
     \kern\z@
@@ -2073,6 +2290,7 @@
     \fi
     \cr
     \noalign{\eql at halign@after}%
+    \eql at tagging@tablesavelines
   }%
   \eql at row@\tw@
   \eql at display@close
@@ -2192,7 +2410,7 @@
     \else
       \penalty\eql at displaybreak@pen@
     \fi
-    \addtolength\eql at vspaceskip@{#1}%
+    \advance\eql at vspaceskip@\glueexpr#1\relax%
     \vskip\eql at vspaceskip@
     \global\eql at vspaceskip@\z at skip
   }%
@@ -2201,22 +2419,42 @@
   \let\\\eql at math@cr
   \let\eql at math@cr@@@#1%
 }
-\eql at amsmath@futurebefore{\let\intertext\@undefined}
-\providecommand{\intertext}{\eql at error{Invalid use of \string\intertext}}
-\def\eql at intertext@process#1{%
+\def\eql at intertext@default{\eql at error{Invalid use of \string\intertext}}
+\eql at amsmath@let\intertext\eql at intertext@default
+\def\eql at intertext@process{%
   \eql at math@cr@@@
   \cr
-  \ifmeasuring@\else
-    \expandafter\eql at intertext@print{#1}%
+  \ifmeasuring@
+    \expandafter\@gobble
+  \else
+    \expandafter\eql at intertext@print
   \fi
 }
 \def\eql at intertext@print#1{%
   \noalign{%
     \eql at halign@after
+    \let\eql at skip@force at below\z@
+    \let\eql at skip@force at above\z@
     \eql at setkeys{intertext}\eql at intertext@opt
-    \normalbaselines
+    \openup-\eql at spread@amount@
     \penalty\postdisplaypenalty
-    \addtolength\eql at vspaceskip@\belowdisplayskip
+    \ifcase\eql at skip@force at below\relax
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@long at below\relax
+    \or
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@short at below\relax
+    \or
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@cont at below\relax
+    \or
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@par at below\relax
+    \or
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@top at below\relax
+    \or
+      \advance\eql at vspaceskip@\z at skip
+    \or
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@med at below\relax
+    \or
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@custom at below\relax
+    \fi
     \vskip\eql at vspaceskip@
     \global\eql at vspaceskip@\z at skip
     \vbox{%
@@ -2233,7 +2471,23 @@
       \par
     }%
     \penalty\predisplaypenalty
-    \vskip\abovedisplayskip
+    \ifcase\eql at skip@force at above\relax
+      \vskip\glueexpr\eql at skip@long at above\relax
+    \or
+      \vskip\glueexpr\eql at skip@short at above\relax
+    \or
+      \vskip\glueexpr\eql at skip@cont at above\relax
+    \or
+      \vskip\glueexpr\eql at skip@par at above\relax
+    \or
+      \vskip\glueexpr\eql at skip@top at above\relax
+    \or
+      \vskip\z at skip
+    \or
+      \vskip\glueexpr\eql at skip@med at above\relax
+    \or
+      \vskip\glueexpr\eql at skip@custom at above\relax
+    \fi
     \eql at halign@prevdepth@\z@
     \eql at halign@before
   }
@@ -2266,6 +2520,9 @@
 }
 \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 numbering@eval at mode
   \eql at stack@save at multi
   \ifdefined\eql at subequations@active
@@ -2307,19 +2564,30 @@
     \eql at numbering@subeq at close
   \fi
   \eql at stack@restore
+  $$%$$
+  \eql at tagging@end
+  \eql at halign@leave
 }
 \def\eql at mode@equation{%
   \let\eql at equations@mode at single\eql at true
-  \let\eql at equations@end\eql at single@end
+  \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
 }
 \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
@@ -2430,12 +2698,12 @@
       \advance\dimen at -\eql at tagmargin@
       \divide\dimen@\tw@
       \eql at marginleft@\dimen@
-      \advance\eql at marginleft@-\eql at paddingleft@
+      \advance\eql at marginleft@-\glueexpr\eql at paddingleft@val\relax
       \ifdim\eql at marginleft@<\z@
         \eql at marginleft@\z@
       \fi
       \eql at marginright@\dimen@
-      \advance\eql at marginright@-\eql at paddingright@
+      \advance\eql at marginright@-\glueexpr\eql at paddingright@val\relax
       \ifdim\eql at marginright@<\z@
         \eql at marginright@\z@
       \fi
@@ -2457,6 +2725,7 @@
           ##%
           \eql at punct@apply at col
           \eql at hook@colout
+          \eql at tagging@mathsave
         $%
         \hfil
         \kern\z@
@@ -2481,6 +2750,7 @@
       \eql at halign@after
 \eql at dev@leave\eql at lines@print
     }%
+    \eql at tagging@tablesavelines
   }%
   \eql at display@close
 }
@@ -2506,47 +2776,11 @@
     \expandafter\eql at align@add at amp\romannumeral\number\count@ 000q}%
   \eql at tmp
 }
-\def\eql at align@preamble#1#2#3{%
-  &%
-  \global\advance\eql at column@\@ne
-  \hfil
-  \global\setbox\eql at fieldbox@\hbox{%
-    #3%
-    \@lign
-    $\m at th\displaystyle
-      \eql at hook@colin
-      ##%
-      \eql at class@innerleft
-      \eql at hook@innerleft
-    $%
-  }%
-  \global\eql at fieldwidth@\wd\eql at fieldbox@
-  #2%
-  \tabskip\z at skip
-  &%
-  \global\advance\eql at column@\@ne
-  \setbox\eql at fieldbox@\hbox{%
-\kern-\wd\eql at fieldbox@
-\box\eql at fieldbox@
-    #3%
-    \@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
-    $%
-  }%
-  #2%
-  \hfil
-  \tabskip#1%
-}
 \def\eql at align@print at trailright{%
    &\omit
     \global\advance\eql at column@\@ne
     \setbox\eql at fieldbox@\hbox{%
-\kern-\wd\eql at fieldbox@\box\eql at fieldbox@
+      \kern-\wd\eql at fieldbox@\box\eql at fieldbox@
     }%
     \eql at align@print at field
 }
@@ -2618,8 +2852,10 @@
   \eql at numbering@print at line@eval
   \if at eqnsw
     \eql at tagbox@make\eql at compose@print
+    \eql at tagging@tagaddbox
     \eql at tagbox@print at multi
   \else
+    \eql at tagging@tagaddbox
     \kern\displaywidth
   \fi
 }
@@ -2632,7 +2868,44 @@
   \eql at let@cr\eql at align@print at line@end
   \tabskip\eql at marginleft@
   \halign{%
-    \span\eql at align@preamble\eql at colsep@\eql at align@print at field\eql at strut@field
+    &%
+      \global\advance\eql at column@\@ne
+      \hfil
+      \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
+      }%
+      \global\eql at fieldwidth@\wd\eql at fieldbox@
+      \eql at align@print at field
+      \tabskip\z at skip
+    &%
+      \global\advance\eql at column@\@ne
+      \setbox\eql at fieldbox@\hbox{%
+        \kern-\wd\eql at fieldbox@
+        \box\eql at fieldbox@
+        \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
+      }%
+      \eql at align@print at field
+      \hfil
+      \tabskip\eql at colsep@\relax
     \crcr
     \noalign{%
       \eql at halign@before
@@ -2652,6 +2925,7 @@
       \eql at halign@after
 \eql at dev@leave\eql at align@print
     }%
+    \eql at tagging@tablesavealign
   }%
   \eql at display@close
 }
@@ -2694,8 +2968,36 @@
     \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
+    \tabskip\z at skip
     \halign{%
-      \span\eql at align@preamble\z at skip\eql at align@measure at field\relax
+      &%
+        \global\advance\eql at column@\@ne
+        \hfil
+        \global\setbox\eql at fieldbox@\hbox{%
+          \@lign
+          $\m at th\displaystyle
+            \eql at hook@colin
+            ##%
+            \eql at class@innerleft
+            \eql at hook@innerleft
+          $%
+        }%
+        \global\eql at fieldwidth@\wd\eql at fieldbox@
+        \eql at align@measure at field
+      &%
+        \global\advance\eql at column@\@ne
+        \setbox\eql at fieldbox@\hbox{%
+          \@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 align@measure at field
+        \hfil
       \crcr
       \noalign{%
         \eql at hook@blockbefore
@@ -2745,6 +3047,8 @@
 \eql at dev@leave\eql at align@measure
 }
 \def\eql at align@adjust{%
+  \eql at colsepmin@\glueexpr\eql at colsepmin@val\relax
+  \eql at colsepmax@\glueexpr\eql at colsepmax@val\relax
   \ifodd\eql at totalcolumns@
     \advance\eql at totalcolumns@\@ne
   \fi
@@ -3020,7 +3324,7 @@
     \expandafter\[%\]
   \fi
 }
-\def\eql at scan@sqrang at cancel{\ignorespaces}
+\def\eql at scan@sqrang at cancel{\expandafter\ignorespaces\@gobble}
 \def\eql at scan@ang#1{%
 \eql at dev@enter\eql at scan@ang
   \def\eql at scan@end{#1\>}%
@@ -3071,7 +3375,9 @@
 \def\eql at equations@processopt{%
   \let\eql at blocklabel\@undefined
   \let\eql at blocktag\@undefined
-  \let\eql at display@doatend\@empty
+  \let\eql at skip@force at above\@undefined
+  \let\eql at skip@force at below\@undefined
+  \let\eql at skip@force at leave\@undefined
   \eql at abovespace@\z at skip
   \eql at belowspace@\z at skip
   \eql at displaybreak@prepen@\@MM
@@ -3078,11 +3384,7 @@
   \eql at nextopt@process{equations}%
   \let\eql at punct@block\eql at punct@main
   \let\eql at punct@main\relax
-  \setlength\eql at paddingleft@\eql at paddingleft@val
-  \setlength\eql at paddingright@\eql at paddingright@val
-  \setlength\eql at indent@\eql at indent@val
-  \setlength\eql at colsepmin@\eql at colsepmin@val
-  \setlength\eql at colsepmax@\eql at colsepmax@val
+  \eql at indent@\glueexpr\eql at indent@val\relax
 }
 \newenvironment{equations}{%
 \eql at dev@enterenv
@@ -3090,25 +3392,23 @@
     \eql at error@mathmode{\string\begin{\@currenvir}}%
     \expandafter\eql at scan@env\expandafter\eql at scan@env at cancel
   \else
-    \eql at halign@catchprevdepth
-    $$%$$
     \expandafter\eql at ampprotect\expandafter\eql at equations@testall
       \expandafter\eql at equations@start
   \fi
 }{%
   \eql at equations@end
-  $$%$$
   \ignorespacesafterend
 \eql at dev@leaveenv
 }
 \def\eql at equations@start{%
   \eql at equations@processopt
-  \ifdefined\eql at equations@mode at single
+  \ifdefined\eql at equations@main
+    \expandafter\eql at scan@env\expandafter\eql at equations@main
+  \else
     \expandafter\eql at single@start
-  \else
-    \expandafter\eql at scan@env\expandafter\eql at multi@main
   \fi
 }
+\newenvironment{equations at sqr}{}{}
 \def\eql at equations@sqr at opt{equation,nonumber}
 \protected\def\eql at equations@sqr at open{%
   \ifmmode
@@ -3117,12 +3417,12 @@
   \else
 \eql at dev@enter{\[...\string\]}%
     \expandafter\eqnaddopt\expandafter{\eql at equations@sqr at opt}%
-    \eql at halign@catchprevdepth
-    $$%$$
+    \begin{equations at sqr}%
     \expandafter\eql at ampprotect\expandafter\eql at equations@testall
       \expandafter\eql at equations@sqr at start
   \fi
 }
+\newenvironment{equations at ang}{}{}
 \def\eql at equations@ang at opt{align,nonumber}
 \protected\def\eql at equations@ang at open{%
   \ifmmode
@@ -3131,8 +3431,7 @@
   \else
 \eql at dev@enter{\<...\string\>}%
     \expandafter\eqnaddopt\expandafter{\eql at equations@ang at opt}%
-    \eql at halign@catchprevdepth
-    $$%$$
+    \begin{equations at ang}%
     \expandafter\eql at ampprotect\expandafter\eql at equations@testall
       \expandafter\eql at equations@ang at start
   \fi
@@ -3139,33 +3438,33 @@
 }
 \def\eql at equations@sqr at start{%
   \eql at equations@processopt
-  \ifdefined\eql at equations@mode at single
+  \ifdefined\eql at equations@main
+    \expandafter\eql at scan@sqr\expandafter\eql at equations@main
+  \else
     \expandafter\eql at single@start
-  \else
-    \expandafter\eql at scan@sqr\expandafter\eql at multi@main
   \fi
 }
 \def\eql at equations@ang at start{%
   \eql at equations@processopt
-  \ifdefined\eql at equations@mode at single
+  \ifdefined\eql at equations@main
+    \expandafter\eql at scan@ang\expandafter\eql at equations@main
+  \else
     \expandafter\eql at single@start
-  \else
-    \expandafter\eql at scan@ang\expandafter\eql at multi@main
   \fi
 }
 \protected\def\eql at equations@sqr at close{%
   \eql at equations@end
-  $$%$$
 \eql at dev@leave{\[...\string\]}%
+  \end{equations at sqr}%
   \ignorespaces
 }
 \protected\def\eql at equations@ang at close{%
   \eql at equations@end
-  $$%$$
 \eql at dev@leave{\<...\string\>}%
+  \end{equations at ang}%
   \ignorespaces
 }
-\DeclareRobustCommand{\eql at eqref}[1]{\textup{\tagform@{\ref{#1}}}}
+\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}}{%
@@ -3189,7 +3488,7 @@
   \eqnlinesset{allowbreaks=#1}%
 }
 \newcommand{\eql at notag}{\nonumber}
-\newcommand{\eql at thetag}{\leavevmode\tagform@}
+\newcommand{\eql at thetag}{\leavevmode\eql at tag@boxedform}
 \RequirePackage{keyval}
 \def\eql at decide@select#1#2#3#4{%
   \def\@tempa{#3}%
@@ -3244,7 +3543,7 @@
     }%
   }%
 }
-\def\eql at setkeys#1#2{
+\def\eql at setkeys#1#2{%
   \def\eql at tmp{\setkeys{eql@#1}}%
   \expandafter\eql at tmp\expandafter{#2}%
 }
@@ -3252,10 +3551,70 @@
 \def\eql at nextopt@process#1{%
 \eql at dev@start\eql at nextopt@process
   \eql at setkeys{#1}\eql at nextopt
+  \let\eql at tagging@opt\eql at nextopt
   \global\let\eql at nextopt\@empty
 }
 \newcommand{\eqnaddopt}[1]{%
   \expandafter\def\expandafter\eql at nextopt\expandafter{\eql at nextopt,#1}}
+\def\eql at defaults@classic{%
+  \def\eql at colsepmax@val{.5\maxdimen}%
+  \def\eql at spread{\jot}%
+  \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 colsepmax@val{2em}%
+  \def\eql at spread{0.2\normalbaselineskip}%
+  \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.2\normalbaselineskip}%
+  \def\eql at skip@short at below{0.0\normalbaselineskip
+    \@plus0.25\normalbaselineskip}%
+  \def\eql at skip@med at above{0.375\normalbaselineskip
+    \@plus0.225\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}{aligned,align,al,columns,col,@}[]{%
@@ -3274,6 +3633,8 @@
   \ifdefined\eql at single@native\let\eql at flushleft\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]{%
+  \eql at decide@bool{#3}{#2}{#1}\eql at single@doscan}
 \eql at define@key{setup}{sqropt}[]{%
   \def\eql at equations@sqr at opt{equation,#1}}
 \eql at define@key{setup}{angopt}[]{%
@@ -3292,130 +3653,172 @@
   \def\eql at display@height{#1}}
 \eql at define@key\eql at keycat{displaydepth}[\dp\eql at strutbox@]{%
   \def\eql at display@depth{#1}}
+\eql at define@key\eql at keycat{displayheight*}[]{%
+  \let\eql at display@height\@undefined}
+\eql at define@key\eql at keycat{displaydepth*}[]{%
+  \let\eql at display@depth\@undefined}
 \eql at define@key{equations}{noskip}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\eql at display@atend{%
-      \abovedisplayskip\z at skip
-      \abovedisplayshortskip\z at skip
-      \eql at abovedisplaytagskip@\z at skip}}%
-    {\eql at display@atend{%
-      \belowdisplayskip\z at skip
-      \belowdisplayshortskip\z at skip
-      \eql at belowdisplaytagskip@\z at skip}}}
-\eql at define@key{equations}{short}[]{%
+    {\def\eql at skip@force at above{5}}%
+    {\def\eql at skip@force at below{5}}}
+\eql at define@key{equations}{short}[above]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\eql at display@atend{%
-      \abovedisplayskip\abovedisplayshortskip}}%
-    {\eql at display@atend{%
-      \belowdisplayskip\belowdisplayshortskip}}}
+    {\def\eql at skip@force at above{1}}%
+    {\def\eql at skip@force at below{1}}}
 \eql at define@key{equations}{long}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\eql at display@atend{%
-      \abovedisplayshortskip\abovedisplayskip}}%
-    {\eql at display@atend{%
-      \belowdisplayshortskip\belowdisplayskip}}}
+    {\def\eql at skip@force at above{0}}%
+    {\def\eql at skip@force at below{0}}}
 \eql at define@key{equations}{medskip}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\eql at display@atend{%
-      \abovedisplayskip\eql at abovedisplaymedskip@}}%
-    {\eql at display@atend{%
-      \belowdisplayskip\eql at belowdisplaymedskip@}}}
+    {\def\eql at skip@force at above{6}}%
+    {\def\eql at skip@force at below{6}}}
+\eql at define@key{equations}{par}[par]{%
+  \eql at decide@select{#3}{#2}{#1}{%
+    {{default,}{\let\eql at skip@force at leave\@undefined}},%
+    {{cont,hmode}{\let\eql at skip@force at leave\z@}},%
+    {{par,vmode}{\let\eql at skip@force at leave\@ne
+      \ifdefined\eql at skip@force at below\else
+        \def\eql at skip@force at below{3}%
+      \fi}},%
+    {{top}{\let\eql at skip@force at leave\tw@
+      \ifdefined\eql at skip@force at below\else
+        \def\eql at skip@force at below{4}
+      \fi}}}}
 \eql at define@key{equations}{skip}{%
-  \setlength\eql at abovedisplayskip@{#1}%
-  \eql at belowdisplayskip@\eql at abovedisplayskip@%
-  \eql at display@atend{%
-    \abovedisplayskip\eql at abovedisplayskip@
-    \abovedisplayshortskip\abovedisplayskip
-    \eql at abovedisplaytagskip@\abovedisplayskip
-    \belowdisplayskip\abovedisplayskip
-    \belowdisplayshortskip\belowdisplayskip
-    \eql at belowdisplaytagskip@\belowdisplayskip}}
+  \def\eql at skip@force at above{7}%
+  \def\eql at skip@custom at above{#1}%
+  \let\eql at skip@force at below\eql at skip@force at above
+  \let\eql at skip@custom at below\eql at skip@custom at above}
 \eql at define@key{equations}{aboveskip}{%
-  \setlength\eql at abovedisplayskip@{#1}%
-  \eql at display@atend{%
-    \abovedisplayskip\eql at abovedisplayskip@
-    \abovedisplayshortskip\abovedisplayskip
-    \eql at abovedisplaytagskip@\abovedisplayskip}}
+  \def\eql at skip@force at above{7}%
+  \def\eql at skip@custom at above{#1}}
 \eql at define@key{equations}{belowskip}{%
-  \setlength\eql at belowdisplayskip@{#1}%
-  \eql at display@atend{%
-    \belowdisplayskip\eql at belowdisplayskip@
-    \belowdisplayshortskip\belowdisplayskip%
-    \eql at belowdisplaytagskip@\belowdisplayskip}}
+  \def\eql at skip@force at below{7}%
+  \def\eql at skip@custom at below{#1}}
 \eql at define@key{equations}{abovespace}{%
-  \addtolength\eql at abovespace@{#1}}
+  \advance\eql at abovespace@\glueexpr#1\relax}
 \eql at define@key{equations}{belowspace}{%
-  \addtolength\eql at belowspace@{#1}}
+  \advance\eql at belowspace@\glueexpr#1\relax}
 \eql at define@key{intertext}{skip}{%
-  \setlength\abovedisplayskip{#1}\belowdisplayskip\abovedisplayskip}
+  \def\eql at skip@force at above{7}%
+  \def\eql at skip@custom at above{#1}%
+  \let\eql at skip@force at below\eql at skip@force at above
+  \let\eql at skip@custom at below\eql at skip@custom at above}
 \eql at define@key{intertext}{aboveskip}{%
-  \setlength\belowdisplayskip{#1}}
+  \def\eql at skip@force at below{7}%
+  \def\eql at skip@custom at below{#1}}
 \eql at define@key{intertext}{belowskip}{%
-  \setlength\abovedisplayskip{#1}}
+  \def\eql at skip@force at above{7}%
+  \def\eql at skip@custom at above{#1}}
 \eql at define@key{intertext}{noskip}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\belowdisplayskip\z at skip\belowdisplayshortskip\z at skip}%
-    {\abovedisplayskip\z at skip\abovedisplayshortskip\z at skip}}
+    {\def\eql at skip@force at below{5}}%
+    {\def\eql at skip@force at above{5}}}
 \eql at define@key{intertext}{short}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\belowdisplayskip\belowdisplayshortskip}%
-    {\abovedisplayskip\abovedisplayshortskip}}
+    {\def\eql at skip@force at below{1}}%
+    {\def\eql at skip@force at above{1}}}
 \eql at define@key{intertext}{long}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\belowdisplayshortskip\belowdisplayskip}%
-    {\abovedisplayshortskip\abovedisplayskip}}
+    {\def\eql at skip@force at below{0}}%
+    {\def\eql at skip@force at above{0}}}
 \eql at define@key{intertext}{medskip}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\belowdisplayskip\eql at belowdisplaymedskip@}%
-    {\abovedisplayskip\eql at abovedisplaymedskip@}}
-\eql at define@key{setup}{skip}{%
-  \setlength\abovedisplayskip{#1}\belowdisplayskip\abovedisplayskip}
-\eql at define@key{setup}{aboveskip}{%
-  \setlength\abovedisplayskip{#1}}
-\eql at define@key{setup}{belowskip}{%
-  \setlength\belowdisplayskip{#1}}
+    {\def\eql at skip@force at below{6}}%
+    {\def\eql at skip@force at above{6}}}
+\eql at define@key{setup}{skip,longskip}{%
+  \abovedisplayskip\glueexpr#1\relax
+  \belowdisplayskip\abovedisplayskip
+  \def\eql at skip@long at above{#1}%
+  \let\eql at skip@long at below\eql at skip@long at above}
+\eql at define@key{setup}{aboveskip,abovelongskip}{%
+  \abovedisplayskip\glueexpr#1\relax
+  \def\eql at skip@long at above{#1}}
+\eql at define@key{setup}{belowskip,belowlongskip}{%
+  \belowdisplayskip\glueexpr#1\relax
+  \def\eql at skip@long at below{#1}}
 \eql at define@key{setup}{aboveshortskip}{%
-  \setlength\abovedisplayshortskip{#1}}
+  \abovedisplayshortskip\glueexpr#1\relax
+  \def\eql at skip@short at above{#1}}
 \eql at define@key{setup}{belowshortskip}{%
-  \setlength\belowdisplayshortskip{#1}}
+  \belowdisplayshortskip\glueexpr#1\relax
+  \def\eql at skip@short at below{#1}}
 \eql at define@key{setup}{tagskip}{%
-  \setlength\eql at abovedisplaytagskip@{#1}%
-  \eql at belowdisplaytagskip@\eql at abovedisplaytagskip@}
+  \def\eql at skip@tag at above{#1}%
+  \let\eql at skip@tag at below\eql at skip@tag at above}
 \eql at define@key{setup}{abovetagskip}{%
-  \setlength\eql at abovedisplaytagskip@{#1}}
+  \def\eql at skip@tag at above{#1}}
 \eql at define@key{setup}{belowtagskip}{%
-  \setlength\eql at belowdisplaytagskip@{#1}}
+  \def\eql at skip@tag at below{#1}}
 \eql at define@key{setup}{medskip}{%
-  \setlength\eql at abovedisplaymedskip@{#1}%
-  \eql at belowdisplaymedskip@\eql at abovedisplaymedskip@}
+  \def\eql at skip@med at above{#1}%
+  \let\eql at skip@med at below\eql at skip@med at above}
 \eql at define@key{setup}{abovemedskip}{%
-  \setlength\eql at abovedisplaymedskip@{#1}}
+  \def\eql at skip@med at above{#1}}
+\eql at define@key{setup}{belowmedskip}{%
+  \def\eql at skip@med at below{#1}}
+\eql at define@key{setup}{medtagskip}{%
+  \def\eql at skip@medtag at above{#1}%
+  \let\eql at skip@medtag at below\eql at skip@medtag at above}
+\eql at define@key{setup}{abovemedtagskip}{%
+  \def\eql at skip@medtag at above{#1}}
+\eql at define@key{setup}{belowmedtagskip}{%
+  \def\eql at skip@medtag at below{#1}}
 \eql at define@key{setup}{abovetopskip}{%
-  \setlength\eql at abovedisplaytopskip@{#1}}
+  \def\eql at skip@top at above{#1}}
+\eql at define@key{setup}{belowtopskip}{%
+  \def\eql at skip@top at below{#1}}
 \eql at define@key{setup}{aboveparskip}{%
-  \setlength\eql at abovedisplayparskip@{#1}}
+  \def\eql at skip@par at above{#1}}
+\eql at define@key{setup}{belowparskip}{%
+  \def\eql at skip@par at below{#1}}
+\eql at define@key{setup}{abovepartagskip}{%
+  \def\eql at skip@partag at above{#1}}
+\eql at define@key{setup}{belowpartagskip}{%
+  \def\eql at skip@partag at below{#1}}
 \eql at define@key{setup}{abovecontskip}{%
-  \setlength\eql at abovedisplaycontskip@{#1}}
-\eql at define@key{setup}{belowmedskip}{%
-  \setlength\eql at belowdisplaymedskip@{#1}}
+  \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}}
+\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 displayshortmode@\z@}},%
-    {{above,neverbelow,notbelow,belowoff}{\eql at displayshortmode@\@ne}},%
-    {{belowone,belowsingle}{\eql at displayshortmode@\tw@}},%
-    {{belowall,always,on}{\eql at displayshortmode@\thr@@}}}}
+    {{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@@}}}}
+\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 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 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}}}}
 \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}{\setlength\eql at tagmargin@{#1}}
+\eql at define@key\eql at keycat{tagmargin}{\eql at tagmargin@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{tagmargin*}{\settowidth\eql at tagmargin@{#1}}
-\eql at define@key\eql at keycat{mintagsep}{\setlength\eql at tagsepmin@{#1}}
-\eql at define@key\eql at keycat{mintagwidth}{\setlength\eql at tagwidthmin@{#1}}
+\eql at define@key\eql at keycat{mintagsep}{\eql at tagsepmin@\glueexpr#1\relax}
+\eql at define@key\eql at keycat{mintagwidth}{\eql at tagwidthmin@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{mintagwidth*}{\settowidth\eql at tagwidthmin@{#1}}
-\eql at define@key{setup}{taglayout}{\eql at tag@setmake{#1}}
-\eql at define@key{setup}{taglayout*}{\eql at tag@setmake@{#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}{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}}
@@ -3443,13 +3846,13 @@
 \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}{%
-  \setlength\eql at flushleftmargin@{#1}}
+  \eql at flushleftmargin@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{minleftmargin}{%
-  \setlength\eql at flushleftmarginmin@{#1}}
+  \eql at flushleftmarginmin@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{maxleftmargin}{%
-  \setlength\eql at flushleftmarginmax@{#1}}
+  \eql at flushleftmarginmax@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{maxleftmargin*}[]{%
-  \setlength\eql at flushleftmarginmax@{.5\maxdimen}}
+  \eql at flushleftmarginmax@.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}
@@ -3498,7 +3901,7 @@
 \eql at define@key\eql at keycat{punctcol*}[]{\let\eql at punct@col\relax}
 \let\eql at multi@linesfallback\eql at true
 \let\eql at single@crerror\eql at true
-\let\eql at ampproof@active\eql at true
+\let\eql at ampproof@active\eql at false
 \eql at define@key{setup}{linesfallback}[true]{%
   \eql at decide@bool{#3}{#2}{#1}\eql at multi@linesfallback}
 \eql at define@key{setup}{ampproof}[true]{%
@@ -3509,22 +3912,30 @@
   \eql at decide@if{#3}{#2}{#1}%
     {\let\eql at scan@body\eql at scan@body at rescan}%
     {\let\eql at scan@body\eql at scan@body at dump}}
-\let\eql at provide@amsmath\eql at true
-\let\eql at provide@equation\eql at true
-\let\eql at provide@ang\eql at true
-\let\eql at amsmath@dofixends\eql at true
+\eql at define@key{setup}{defaults}{%
+  \eql at decide@select{#3}{#2}{#1}{%
+    {{classic}{\eql at defaults@classic}},%
+    {{eqnlines}{\eql at defaults@eqnlines}}}}
+\let\eql at provide@opt at equation\eql at true
+\let\eql at provide@opt at amsmathends\eql at true
+\let\eql at provide@opt at amsmath\eql at true
+\let\eql at provide@opt at ang\eql at true
+\let\eql at provide@opt at eqref\eql at true
 \eql at define@key{setup}{equation}[true]{%
   \eql at error@packageoption{#2}%
-  \eql at decide@bool{#3}{#2}{#1}\eql at provide@equation}
+  \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at equation}
+\eql at define@key{setup}{amsmathends}[true]{%
+  \eql at error@packageoption{#2}%
+  \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at amsmathends}
 \eql at define@key{setup}{amsmath}[true]{%
   \eql at error@packageoption{#2}%
-  \eql at decide@bool{#3}{#2}{#1}\eql at provide@amsmath}
-\eql at define@key{setup}{amsmathends}[true]{%
-  \eql at error@packageoption{#2}%
-  \eql at decide@bool{#3}{#2}{#1}\eql at amsmath@dofixends}
+  \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at amsmath}
 \eql at define@key{setup}{ang}[true]{%
   \eql at error@packageoption{#2}%
-  \eql at decide@bool{#3}{#2}{#1}\eql at provide@ang}
+  \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at ang}
+\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}
 \newenvironment{eql at gathered}
   {\eqnaddopt{lines}\equationsbox}{\endequationsbox}
 \newenvironment{eql at multlined}
@@ -3624,7 +4035,7 @@
       \eql at provide@movecmd{#1}{eql@#1}%
     }%
     \eql at provide@movecmd{#1}{eql@#1}%
-    \eql at amsmath@futurebefore{\eql at provide@undefinecmd{#1}}%
+    \eql at amsmath@before{\eql at provide@undefinecmd{#1}}%
   \fi
 }
 \def\eql at amsmath@endfix#1#2{%
@@ -3671,8 +4082,8 @@
     }%
     \eql at provide@moveenv{#1}{eql@#1}%
     \eql at provide@moveenv{#1*}{eql@#1*}%
-    \eql at amsmath@futurebefore{\eql at provide@undefineenv{#1}}%
-    \eql at amsmath@futurebefore{\eql at provide@undefineenv{#1*}}%
+    \eql at amsmath@before{\eql at provide@undefineenv{#1}}%
+    \eql at amsmath@before{\eql at provide@undefineenv{#1*}}%
   \fi
 }
 \def\eql at provide@env at equation#1{%
@@ -3699,7 +4110,13 @@
     }}%
     \eql at provide@moveenv{equation}{eql at equation}%
     \eql at provide@moveenv{equation*}{eql at equation*}%
-    \eql at amsmath@futurebefore{\eql at provide@undefineenv{equation*}}%
+    \eql at amsmath@before{\eql at provide@undefineenv{equation*}}%
+    \ifdefined\eql at tagging@on
+      \AddToHook{begindocument/end}{%
+        \eql at provide@moveenv{equation}{eql at equation}%
+        \eql at provide@moveenv{equation*}{eql at equation*}%
+      }%
+    \fi
   \fi
 }
 \def\eql at provide@env at multlined#1{%
@@ -3716,14 +4133,6 @@
       \eql at provide@undefineenv{multlined}}}%
   \fi
 }
-\def\eql at provide@env at subequations@reinstall{%
-  \global\let\subequations\eql at subequations
-  \let\@tempa\UseHook
-  \let\@tempb\UseHookWithArguments
-  \def\UseHook{\let\UseHook\@tempa\let\UseHookWithArguments\@tempb%
-    \expandafter\subequations\@gobble}%
-  \def\UseHookWithArguments{\expandafter\UseHook\@gobble}%
-}
 \def\eql at provide@env at subequations#1{%
   \eql at provide@onlyonce{subequations}{#1}%
   \ifdefined\eql at tmp
@@ -3733,7 +4142,6 @@
     \eql at amsmath@after{%
       \eql at provide@moveenv{amssubequations}{subequations}%
       \eql at provide@moveenv{subequations}{eql at subequations}%
-      \let\subequations\eql at provide@env at subequations@reinstall
     }%
     \AddToHook{package/hyperref/after}{%
       \AddToHook{cmd/subequations/before}[hyperref]{}%
@@ -3745,17 +4153,18 @@
         \stepcounter{equation}%
         \protected at edef\theHparentequation{\theHequation}%
         \addtocounter{equation}{-1}%
-      }
+      }%
       \AddToHook{cmd/amssubequations/after}%
       {%
         \def\theHequation{\theHparentequation\alph{equation}}%
         \ignorespaces
-      }
-    }
+      }%
+      \AddToHook{begindocument/end}{%
+        \eql at provide@moveenv{subequations}{eql at subequations}%
+      }%
+    }%
     \eql at provide@moveenv{subequations}{eql at subequations}%
-    \AddToHook{cmd/subequations/after}{}%
-    \let\subequations\eql at provide@env at subequations@reinstall
-    \eql at amsmath@futurebefore{\eql at provide@undefineenv{subequations}}%
+    \eql at amsmath@before{\eql at provide@undefineenv{subequations}}%
   \fi
 }
 \def\eql at provide@sqr{%
@@ -3765,6 +4174,12 @@
     \let\[\eql at equations@sqr at open
     \let\]\eql at equations@sqr at close
   }%
+  \ifdefined\eql at tagging@on
+    \AddToHook{begindocument/end}{%
+      \let\[\eql at equations@sqr at open
+      \let\]\eql at equations@sqr at close
+    }%
+  \fi
 }
 \def\eql at provide@ang{%
   \let\<\eql at equations@ang at open
@@ -3787,6 +4202,10 @@
 \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}[]{%
+  \def\maketag@@@##1{\eql at tag@box{##1}}}
 \newcommand{\eqnlinesprovide}[1]{%
 \eql at dev@start\eqnlinesprovide
   \eql at setkeys{provide}{#1}}
@@ -3799,14 +4218,14 @@
 \def\eql at error@packageoption#1{%
   \eql at error{may only use `#1' as a package option}%
 }
-\ifcsname tagsleft at true\endcsname\else
+\ifdefined\tagsleft at true\else
   \expandafter\newif\csname iftagsleft@\endcsname
 \fi
-\ifcsname @fleqntrue\endcsname\else
+\ifdefined\@fleqntrue\else
   \expandafter\newif\csname if at fleqn\endcsname
 \fi
-\ifdefined\eql at provide@amsmath
-  \let\eql at provide@equation\eql at true
+\ifdefined\eql at provide@opt at amsmath
+  \let\eql at provide@opt at equation\eql at true
   \eql at amsmath@after{%
     \iftagsleft@
       \eqnlinesset{tagsleft}
@@ -3820,21 +4239,16 @@
     \fi
   }
 \fi
-\ifdefined\eql at provide@equation
-  \eqnlinesprovide{equation,sqr}
-\fi
-\ifdefined\eql at amsmath@dofixends
-  \eql at amsmath@fixends
-\fi
-\ifdefined\eql at provide@amsmath
+\ifdefined\eql at provide@opt at equation\eqnlinesprovide{equation,sqr}\fi
+\ifdefined\eql at provide@opt at amsmathends\eql at amsmath@fixends\fi
+\ifdefined\eql at provide@opt at amsmath
   \eqnlinesprovide{%
     multline,gather,align,flalign,%
     multlined,gathered,aligned,%
-    subequations,eqref}
+    subequations}
 \fi
-\ifdefined\eql at provide@ang
-  \eqnlinesprovide{ang}
-\fi
+\ifdefined\eql at provide@opt at ang\eqnlinesprovide{ang}\fi
+\ifdefined\eql at provide@opt at eqref\eqnlinesprovide{eqref}\fi
 \endinput
 %%
 %% End of file `eqnlines-dev.sty'.

Modified: trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines.sty	2025-03-11 20:06:37 UTC (rev 74570)
+++ trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines.sty	2025-03-11 20:06:49 UTC (rev 74571)
@@ -21,7 +21,7 @@
 %% version 2008 or later.
 %% 
 \NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesPackage{eqnlines}[2025/02/25 v0.5 Single- and multi-line equations]
+\ProvidesPackage{eqnlines}[2025/03/11 v0.6 Single- and multi-line equations]
 \let\eql at ifnextchar@loose\kernel at ifnextchar
 \long\def\eql at ifnextchar@tight#1#2#3{%
   \let\reserved at d= #1%
@@ -99,8 +99,10 @@
 \def\eql at warn@tag at multiple{\eql at warning{Multiple equation \string\tag's:
       previous tag declaration will be lost}}
 \def\eql at amsmath@after#1{\AddToHook{package/amsmath/after}{#1}}
-\def\eql at amsmath@futurebefore#1{%
+\def\eql at amsmath@before#1{%
   \@ifpackageloaded{amsmath}{}{\AddToHook{package/amsmath/before}{#1}}}
+\def\eql at amsmath@undefine#1{\eql at amsmath@before{\let#1\@undefined}}
+\def\eql at amsmath@let#1#2{\eql at amsmath@undefine#1\let#1#2}
 \let\eql at false\@undefined
 \let\eql at true\@empty
 \newskip\eql at regunset@
@@ -109,7 +111,7 @@
   #1\eql at regunset@\relax
   \AtBeginDocument{%
     \ifdim#1=\eql at regunset@
-      \setlength#1{#2}%
+      #1\glueexpr#2\relax
     \fi
   }%
 }
@@ -134,30 +136,45 @@
 \def\eql at box@marginright{\z at skip}
 \def\eql at box@colsep{2em}
 \def\eql at spread{\jot}
+\newdimen\eql at spread@amount@
 \newdimen\eql at tagfuzz@
 \eql at tagfuzz@16sp\relax
-\newskip\eql at abovedisplayskip@
-\newskip\eql at belowdisplayskip@
-\newskip\eql at abovedisplaytagskip@
-\newskip\eql at belowdisplaytagskip@
-\eql at abovedisplaytagskip@\z at skip
-\eql at belowdisplaytagskip@\z at skip
-\newcount\eql at displayshortmode@
-\eql at displayshortmode@\tw@
-\newskip\eql at abovedisplaycontskip@
-\eql at regsetdelayed\eql at abovedisplaycontskip@\abovedisplayshortskip
-\newskip\eql at abovedisplaytopskip@
-\newskip\eql at belowdisplaytopskip@
-\eql at abovedisplaytopskip@\z at skip
-\eql at regsetdelayed\eql at belowdisplaytopskip@\belowdisplayskip
-\newskip\eql at abovedisplayparskip@
-\eql at regsetdelayed\eql at abovedisplayparskip@\abovedisplayskip
 \def\eql at display@height{\ht\eql at strutbox@}
 \def\eql at display@depth{\dp\eql at strutbox@}
-\newskip\eql at abovedisplaymedskip@
-\newskip\eql at belowdisplaymedskip@
-\eql at regsetdelayed\eql at abovedisplaymedskip@\belowdisplayshortskip
-\eql at regsetdelayed\eql at belowdisplaymedskip@\eql at belowdisplaymedskip@
+\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@
+\newcount\eql at skip@mode at leave@
+\let\eql at skip@force at leave\@undefined
+\newcount\eql at skip@mode at above@
+\newcount\eql at skip@mode at below@
+\let\eql at skip@force at above\@undefined
+\let\eql at skip@force at below\@undefined
+\let\eql at skip@custom at above\@undefined
+\let\eql at skip@custom at below\@undefined
+\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@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}
 \newdimen\eql at colsepmin@
 \newdimen\eql at colsepmax@
 \def\eql at colsepmin@val{1em}
@@ -182,7 +199,9 @@
 \newdimen\eql at tagwidth@
 \newdimen\eql at line@height@
 \newdimen\eql at line@depth@
-\newif\ifmeasuring@
+\ifdefined\measuring at true\else
+  \expandafter\newif\csname ifmeasuring@\endcsname
+\fi
 \AddToHook{package/hyperref/after}{
   \ifdefined\Hy at ifnotmeasuring
     \renewcommand\Hy at ifnotmeasuring[1]{\ifmeasuring@\else#1\fi}
@@ -189,9 +208,9 @@
   \fi
 }
 \ifdefined\@displaytrue\else
-\everydisplay\expandafter{\the\everydisplay\@displaytrue}
+  \expandafter\newif\csname if at display\endcsname
+  \everydisplay\expandafter{\the\everydisplay\@displaytrue}
 \fi
-\newif\if at display
 \let\eql at hook@blockbefore\@empty
 \let\eql at hook@blockafter\@empty
 \let\eql at hook@blockin\@empty
@@ -205,6 +224,68 @@
 \let\eql at hook@innerleft\@empty
 \let\eql at hook@innerright\@empty
 \let\eql at hook@innerlead\@empty
+\let\eql at tagging@on\eql at false
+\IfFormatAtLeastTF{2025-06-01}{%
+  \csname tag_if_active:T\endcsname{\let\eql at tagging@on\eql at true}}{}
+\ifdefined\eql at tagging@on
+  \def\eql at tagging@mathsave{%
+    \UseTaggingSocket{math/luamml/save/nNn}{{}\displaystyle{mtd}}}
+  \def\eql at tagging@mathaddlast{%
+    \UseTaggingSocket{math/luamml/mtable/finalizecol}{last}}
+  \def\eql at tagging@tagbegin{%
+    \UseTaggingSocket{math/display/tag/begin}}
+  \def\eql at tagging@tagend{%
+    \UseTaggingSocket{math/display/tag/end}}
+  \def\eql at tagging@tagsave{%
+    \UseTaggingSocket{math/luamml/mtable/tag/save}}
+  \def\eql at tagging@tagaddbox{%
+    \setbox\z@\copy\eql at tagbox@%
+    \UseTaggingSocket{math/luamml/mtable/tag/set}}
+  \def\eql at tagging@tablesaveinner{%
+    \UseExpandableTaggingSocket{math/luamml/mtable/innertable/save}}
+  \def\eql at tagging@tableaddinner{%
+    \UseTaggingSocket{math/luamml/mtable/innertable/finalize}}
+  \def\eql at tagging@tablesavelines{%
+    \UseExpandableTaggingSocket{math/luamml/mtable/finalize}{gather}}
+  \def\eql at tagging@tablesavealign{%
+    \UseExpandableTaggingSocket{math/luamml/mtable/finalize}{align}}
+  \def\eql at tagging@alignleft{%
+    \UseTaggingSocket{math/luamml/mtable/aligncol}{left}}
+  \def\eql at tagging@aligncenter{%
+    \UseTaggingSocket{math/luamml/mtable/aligncol}{center}}
+  \def\eql at tagging@alignright{%
+    \UseTaggingSocket{math/luamml/mtable/aligncol}{right}}
+  \let\eql at single@doscan\eql at true
+  \let\eql at scan@body\eql at scan@body at rescan
+  \ExplSyntaxOn
+  \def\eql at tagging@start{%
+    \bool_if:NF\l__math_collected_bool{%
+      \toks@\expandafter{\eql at tagging@opt}%
+      \edef\eql at tmp{{\@currenvir}{[\the\toks@] \the\eql at scan@reg@}}%
+      \expandafter\__math_process:nn\eql at tmp
+      \@kernel at math@registered at begin
+      \bool_set_true:N\l__math_collected_bool
+    }%
+  }
+  \def\eql at tagging@end{}
+  \ExplSyntaxOff
+\else
+  \def\eql at tagging@mathsave{}
+  \def\eql at tagging@mathaddlast{}
+  \def\eql at tagging@tagbegin{}
+  \def\eql at tagging@tagend{}
+  \def\eql at tagging@tagsave{}
+  \def\eql at tagging@tagaddbox{}
+  \def\eql at tagging@tablesaveinner{}
+  \def\eql at tagging@tableaddinner{}
+  \def\eql at tagging@tablesavelines{}
+  \def\eql at tagging@tablesavealign{}
+  \def\eql at tagging@alignleft{}
+  \def\eql at tagging@aligncenter{}
+  \def\eql at tagging@alignright{}
+  \def\eql at tagging@start{}
+  \def\eql at tagging@end{}
+\fi
 \let\eql at punct@col\@empty
 \let\eql at punct@line\relax
 \let\eql at punct@block\relax
@@ -288,8 +369,7 @@
   \eql at box@lastfield
   \cr
   \noalign{%
-    \setlength\skip@{#1}%
-    \vskip\skip@
+    \vskip\glueexpr#1\relax
   }%
 }
 \let\eql at box@box\vcenter
@@ -305,10 +385,10 @@
 \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
@@ -318,12 +398,14 @@
           ##%
           \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@
@@ -338,10 +420,12 @@
           ##%
           \eql at punct@apply at col
           \eql at hook@colout
+          \eql at tagging@mathsave
         $%
+        \eql at tagging@mathaddlast
       }%
       \hfil
-      \tabskip\eql at colsep@
+      \tabskip\eql at colsep@\relax
     \crcr
     \noalign{%
       \eql at hook@blockbefore
@@ -359,44 +443,49 @@
   \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
-      $%
-    }%
-    \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@
-    \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@
-    \or
-      \skip@\@flushglue
-      \advance\skip@\eql at paddingleft@\relax
-      \advance\skip@\eql at paddingright@\relax
-      \hskip\skip@
-      \box\eql at fieldbox@
-    \fi
-    \tabskip\eql at colsep@
+      \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
@@ -413,6 +502,7 @@
     \noalign{%
       \eql at hook@blockafter
     }%
+    \eql at tagging@tablesaveinner
   \egroup
 }
 \def\eql at box@start{%
@@ -425,17 +515,16 @@
   \eql at nextopt@process{equationsbox}%
   \let\eql at punct@block\eql at punct@main
   \let\eql at punct@main\relax
-  \setlength\eql at colsep@\eql at box@colsep
-  \setlength\eql at paddingleft@\eql at paddingleft@val
-  \setlength\eql at paddingright@\eql at paddingright@val
-  \setlength\eql at indent@\eql at indent@val
+  \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
-  \setlength\skip@\eql at box@marginleft
-  \hskip\skip@
+  \hskip\glueexpr\eql at box@marginleft\relax
   \eql at box@box\bgroup
     \eql at display@leave
     \let\\\eql at box@cr
@@ -448,8 +537,8 @@
 \newcommand{\eql at box@end}{%
     \eql at box@close
   \egroup
-  \setlength\skip@\eql at box@marginright
-  \hskip\skip@
+  \eql at tagging@tableaddinner
+  \hskip\glueexpr\eql at box@marginright\relax
   \eql at stack@restore
   \eql at box@endmath
 }
@@ -471,151 +560,55 @@
 \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
-\eql at amsmath@futurebefore{
-  \let\c at parentequation\@undefined
-  \let\theparentequation\@undefined
+\def\eql at tag@setbox@#1{%
+  \def\eql at tag@box##1{#1}%
 }
-\ifdefined\c at parentequation\else
-\newcounter{parentequation}
-\fi
-\def\eql at subequations@template{\theparentequation\alph{equation}}
-\let\eql at subequations@active\eql at false
-\def\eql at subequations@init{%
-  \edef\eql at subequations@restorecounter{%
-    \global\c at equation\the\c at equation\relax}%
-  \ifdefined\eql at blocktag
-    \expandafter\eql at tag@makenext\eql at blocktag
-    \eql at nexttag
-    \global\advance\eql at numbering@refcount@\@ne
-    \protected at edef\theHparentequation{eql-\the\eql at numbering@refcount@}%
-    \protected at edef\theparentequation{\eql at tag@text}%
-  \else
-    \advance\c at equation\@ne
-    \protected at edef\theparentequation{\theequation}%
-    \ifdefined\theHequation
-      \protected at edef\theHparentequation{\theHequation}%
-    \fi
-  \fi
-  \global\c at parentequation\c at equation
-  \global\c at equation\z@
-  \let\theequation\eql at subequations@template
-  \def\theHequation{\theHparentequation.\arabic{equation}}%
+\def\eql at tag@setbox#1{%
+  \def\eql at tag@box##1{\hbox{\m at th\normalfont#1}}%
 }
-\def\eql at subequations@close{%
-  \ifnum\c at equation=\z@
-    \eql at subequations@restorecounter
-  \else
-    \global\c at equation\c at parentequation
-  \fi
-}
-\def\eql at subequations@start{%
-  \let\eql at blocktag\@undefined
-  \let\eql at blocklabel\@undefined
-  \eql at nextopt@process{subequations}%
-  \eql at subequations@init
-  \global\advance\eql at numbering@refcount@\@ne
-  \edef\eql at subequations@currentHref{equation.eql-\the\eql at numbering@refcount@}%
-  \eql at Hy@anchor\eql at subequations@currentHref
-  \edef\eql at subequations@thepage{\thepage}%
-  \def\@currentcounter{equation}%
-  \let\@currentHref\eql at subequations@currentHref
-  \protected at edef\@currentlabel{\p at equation\theparentequation}%
-  \let\@currentlabelname\eql at labelname@default
-  \let\eql at subequations@active\eql at true
-  \ifdefined\eql at blocklabel
-    \ifdefined\eql at SK
-      \SK@\SK@@label\eql at blocklabel
-    \fi
-  \fi
-  \ignorespaces
-}
-\def\eql at subequations@end{%
-  \ifnum\c at equation>\z@
-    \ifdefined\eql at blocklabel
-      \begingroup
-        \def\@currentcounter{equation}%
-        \let\thepage\eql at subequations@thepage
-        \let\@currentHref\eql at subequations@currentHref
-        \protected at edef\@currentlabel{\p at equation\theparentequation}%
-        \let\@currentlabelname\eql at labelname@default
-        \expandafter\eql at label@clean\expandafter{\eql at blocklabel}%
-      \endgroup
-    \fi
-  \fi
-  \eql at subequations@close
-  \ignorespacesafterend
-}
-\newenvironment{eql at subequations}{%
-  \eql at subequations@testall\eql at subequations@start%
-}{%
-  \eql at subequations@end
-}
-\def\eql at subequations@testall{\eql at subequations@testopt}
-\def\eql at subequations@testopt#1{%
-  \eql at ifnextchar@tight[%]
-    {\eql at subequations@addopt{\eql at subequations@testat{#1}}}%
-    {\eql at subequations@testat{#1}}}
-\def\eql at subequations@addopt#1[#2]{\eqnaddopt{#2}#1}
-\def\eql at subequations@testat#1{%
-  \eql at ifat@tight%
-    {\eql at subequations@addlabel{#1}}%
-    {#1}}
-\def\eql at subequations@addlabel#1#2{\eqnaddopt{label={#2}}#1}
-\ifdefined\maketag@@@\else
-\def\maketag@@@#1{\hbox{\m at th\normalfont#1}}
-\fi
-\ifdefined\tagform@\else
-\def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}
-\fi
-\def\eql at tag@setmake@#1{%
-  \def\maketag@@@##1{\hbox{\m at th\normalfont#1}}%
-}
-\def\eql at tag@setmake#1{%
-  \def\maketag@@@##1{\hbox{\m at th\normalfont#1}}%
-}
 \def\eql at tag@setform@#1{%
-  \def\tagform@##1{\maketag@@@{#1}}%
+  \def\eql at tag@form##1{#1}%
 }
 \def\eql at tag@setform#1#2#3{%
-  \def\tagform@##1{\maketag@@@{#1\ignorespaces#2\unskip\@@italiccorr#3}}%
+  \def\eql at tag@form##1{#1\ignorespaces#2\unskip\@@italiccorr#3}%
 }
-
+\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}}}
 \newdimen\eql at raisetag@amount@
 \def\eql at raisetag@default{%
   \eql at warning{\string\raisetag\space not allowed here}
   \@gobble
 }
-\eql at amsmath@after{\let\eql at raisetag@default\raisetag}
-\eql at amsmath@futurebefore{\let\raisetag\@undefined}
-\let\raisetag\eql at raisetag@default
-\def\eql at raisetag#1{\setlength\dimen@{#1}\global\eql at raisetag@amount@\dimen@}%
-\let\eql at SK\@undefined
-\let\eql at SK@lab at relax\@empty
-\let\eql at SK@makelabel\@gobble
+\eql at amsmath@let\raisetag\eql at raisetag@default
+\def\eql at raisetag#1{\global\eql at raisetag@amount@\glueexpr#1\relax}%
+\let\eql at SK@loaded\eql at false
+\let\eql at SK@label\@gobble
+\let\eql at SK@clearlabel\@empty
+\let\eql at SK@setlabel\@gobble
 \let\eql at SK@printlabel at right\@empty
 \let\eql at SK@printlabel at left\@empty
 \let\eql at SK@printlabel at line\@empty
 \def\eql at label@clean{\eql at label@org}
 \AddToHook{package/showkeys/after}{
-  \let\eql at SK\@empty
-  \def\eql at SK@lab at relax{\let\eql at SK@lab\relax}
-  \eql at SK@lab at relax
+  \let\eql at SK@loaded\eql at true
+  \def\eql at SK@label#1{\SK@\SK@@label#1}
+  \def\eql at SK@clearlabel{\let\eql at SK@lab\relax}
+  \eql at SK@clearlabel
   \def\eql at SK@@label#1>#2\SK@{%
     \def\eql at SK@lab{\smash{\SK at labelcolor\showkeyslabelformat{#2}}}%
   }
-  \def\eql at SK@makelabel#1{%
-    \SK@\eql at SK@@label#1%
-  }
+  \def\eql at SK@setlabel#1{\SK@\eql at SK@@label#1}
   \def\eql at SK@printlabel at right{%
     \ifx\eql at SK@lab\relax\else
       \rlap{\kern\marginparsep\eql at SK@lab}%
-      \eql at SK@lab at relax
+      \eql at SK@clearlabel
     \fi
   }
   \def\eql at SK@printlabel at left{%
     \ifx\eql at SK@lab\relax\else
       \llap{\eql at SK@lab\kern\marginparsep}%
-      \eql at SK@lab at relax
+      \eql at SK@clearlabel
     \fi
   }
   \def\eql at SK@printlabel at line{%
@@ -627,7 +620,7 @@
           \eql at SK@lab
           \kern\marginparsep
         }%
-        \eql at SK@lab at relax
+        \eql at SK@clearlabel
       \else
         \rlap{%
           \dimen@\displaywidth
@@ -636,7 +629,7 @@
           \eql at SK@lab
         }%
       \fi
-      \eql at SK@lab at relax
+      \eql at SK@clearlabel
       \prevdepth\dimen@
     \fi
   }
@@ -649,9 +642,6 @@
 \let\eql at nexttag\@undefined
 \def\eql at tag@default{%
   \eql at error{\string\tag\space not allowed here}{}\eql at tag@gobble}
-\eql at amsmath@after{
-  \let\eql at tag@default\tag
-}
 \let\tag\eql at tag@default
 \def\eql at tag@gobble@[#1]#2{}
 \def\eql at tag@gobble{%
@@ -668,7 +658,7 @@
 }
 \def\eql at tag@makenext at star[#1]#2{%
   \global\def\eql at nexttag{%
-    \let\eql at tag@tool\maketag@@@
+    \let\eql at tag@tool\@firstofone
     \protected at edef\eql at tag@text{#2}%
     \protected at edef\eql at tag@label{#1}%
   }%
@@ -675,7 +665,7 @@
 }
 \def\eql at tag@makenext@[#1]#2{%
   \global\def\eql at nexttag{%
-    \let\eql at tag@tool\tagform@
+    \let\eql at tag@tool\eql at tag@form
     \protected at edef\eql at tag@text{#2}%
     \protected at edef\eql at tag@label{#1}%
     \protected at edef\eql at tag@label{\p at equation\eql at tag@label}%
@@ -683,9 +673,11 @@
 }
 \newcount\eql at numbering@refcount@
 \eql at numbering@refcount@\z@
+\def\eql at numbering@ref{equation.eql-\the\eql at numbering@refcount@}
+\def\eql at numbering@refstep{\global\advance\eql at numbering@refcount@\@ne}
 \def\eql at numbering@makeblockanchor{%
-  \global\advance\eql at numbering@refcount@\@ne
-  \global\edef\eql at label@currentHref{equation.eql-\the\eql at numbering@refcount@}%
+  \eql at numbering@refstep
+  \global\edef\eql at label@currentHref{\eql at numbering@ref}%
   \eql at Hy@anchor\eql at label@currentHref
   \global\edef\eql at label@thepage{\thepage}%
 }
@@ -698,19 +690,19 @@
     \eql at nexttag
     \def\@currentcounter{equation}%
     \let\@currentlabel\eql at tag@label
-    \global\advance\eql at numbering@refcount@\@ne
-    \edef\@currentHref{equation.eql-\the\eql at numbering@refcount@}%
+    \eql at numbering@refstep
+    \edef\@currentHref{\eql at numbering@ref}%
     \eql at Hy@anchor\@currentHref
     \global\let\eql at nexttag\@undefined
   \else
     \refstepcounter{equation}%
-    \let\eql at tag@tool\tagform@
+    \let\eql at tag@tool\eql at tag@form
     \edef\eql at tag@text{\theequation}%
   \fi
 }
 \def\eql at compose@label{%
   \ifmeasuring@\else
-    \eql at SK@lab at relax
+    \eql at SK@clearlabel
     \ifdefined\eql at nextlabel
       \ifnum
         \ifnum\eql at numbering@target@<\z@
@@ -724,7 +716,7 @@
   \fi
 }
 \def\eql at compose@label@{%
-  \eql at SK@makelabel\eql at nextlabel
+  \eql at SK@setlabel\eql at nextlabel
   \begingroup
     \ifnum\eql at numbering@target@=\eql at row@
       \eql at numbering@setblockanchor
@@ -735,7 +727,12 @@
   \endgroup
 }
 \def\eql at compose@tag{%
-  \eql at tag@tool\eql at tag@text
+  \eql at tagging@tagbegin
+  \eql at tag@box{%
+    \eql at tag@tool\eql at tag@text
+    \eql at tagging@tagsave
+  }%
+  \eql at tagging@tagend
 }
 \def\eql at compose@print{%
   \eql at compose@anchor
@@ -751,10 +748,10 @@
 \def\eql at compose@measure{%
   \ifdefined\eql at nexttag
     \eql at nexttag
-    \eql at tag@tool\eql at tag@text
+    \eql at tag@box{\eql at tag@tool\eql at tag@text}%
   \else
     \stepcounter{equation}%
-    \tagform@\theequation
+    \eql at tag@box{\eql at tag@form\theequation}%
   \fi
   \ifnum\eql at numbering@target@<\z@
     \global\let\eql at nextlabel\@undefined
@@ -813,7 +810,7 @@
 \def\eql at numbering@printsubeqlabel{%
   \ifdefined\eql at parentlabel
     \eql at numbering@makeblockanchor
-    \eql at SK@makelabel\eql at parentlabel
+    \eql at SK@setlabel\eql at parentlabel
     \begingroup
       \def\@currentcounter{equation}%
       \eql at numbering@setblockanchor
@@ -1108,6 +1105,92 @@
     \fi
   \fi
 }
+\eql at amsmath@undefine\c at parentequation
+\eql at amsmath@undefine\theparentequation
+\ifdefined\c at parentequation\else
+\newcounter{parentequation}
+\fi
+\def\eql at subequations@template{\theparentequation\alph{equation}}
+\let\eql at subequations@active\eql at false
+\def\eql at subequations@init{%
+  \edef\eql at subequations@restorecounter{%
+    \global\c at equation\the\c at equation\relax}%
+  \ifdefined\eql at blocktag
+    \expandafter\eql at tag@makenext\eql at blocktag
+    \eql at nexttag
+    \eql at numbering@refstep
+    \protected at edef\theHparentequation{\eql at numbering@ref}%
+    \protected at edef\theparentequation{\eql at tag@text}%
+  \else
+    \advance\c at equation\@ne
+    \protected at edef\theparentequation{\theequation}%
+    \ifdefined\theHequation
+      \protected at edef\theHparentequation{\theHequation}%
+    \fi
+  \fi
+  \global\c at parentequation\c at equation
+  \global\c at equation\z@
+  \let\theequation\eql at subequations@template
+  \def\theHequation{\theHparentequation.\arabic{equation}}%
+}
+\def\eql at subequations@close{%
+  \ifnum\c at equation=\z@
+    \eql at subequations@restorecounter
+  \else
+    \global\c at equation\c at parentequation
+  \fi
+}
+\def\eql at subequations@start{%
+  \let\eql at blocktag\@undefined
+  \let\eql at blocklabel\@undefined
+  \eql at nextopt@process{subequations}%
+  \eql at subequations@init
+  \eql at numbering@refstep
+  \edef\eql at subequations@currentHref{\eql at numbering@ref}%
+  \eql at Hy@anchor\eql at subequations@currentHref
+  \edef\eql at subequations@thepage{\thepage}%
+  \def\@currentcounter{equation}%
+  \let\@currentHref\eql at subequations@currentHref
+  \protected at edef\@currentlabel{\p at equation\theparentequation}%
+  \let\@currentlabelname\eql at labelname@default
+  \let\eql at subequations@active\eql at true
+  \ifdefined\eql at blocklabel
+    \eql at SK@label\eql at blocklabel
+  \fi
+  \ignorespaces
+}
+\def\eql at subequations@end{%
+  \ifnum\c at equation>\z@
+    \ifdefined\eql at blocklabel
+      \begingroup
+        \def\@currentcounter{equation}%
+        \let\thepage\eql at subequations@thepage
+        \let\@currentHref\eql at subequations@currentHref
+        \protected at edef\@currentlabel{\p at equation\theparentequation}%
+        \let\@currentlabelname\eql at labelname@default
+        \expandafter\eql at label@clean\expandafter{\eql at blocklabel}%
+      \endgroup
+    \fi
+  \fi
+  \eql at subequations@close
+  \ignorespacesafterend
+}
+\newenvironment{eql at subequations}{%
+  \eql at subequations@testall\eql at subequations@start%
+}{%
+  \eql at subequations@end
+}
+\def\eql at subequations@testall{\eql at subequations@testopt}
+\def\eql at subequations@testopt#1{%
+  \eql at ifnextchar@tight[%]
+    {\eql at subequations@addopt{\eql at subequations@testat{#1}}}%
+    {\eql at subequations@testat{#1}}}
+\def\eql at subequations@addopt#1[#2]{\eqnaddopt{#2}#1}
+\def\eql at subequations@testat#1{%
+  \eql at ifat@tight%
+    {\eql at subequations@addlabel{#1}}%
+    {#1}}
+\def\eql at subequations@addlabel#1#2{\eqnaddopt{label={#2}}#1}
 \def\eql at numbering@subeq at init{%
   \let\eql at save@theequation\theequation
   \let\eql at save@theHequation\theHequation
@@ -1139,9 +1222,8 @@
 }
 \DeclareRobustCommand{\eql at displaybreak@default}[1][4]{%
   \eql at warning{Invalid use of \string\displaybreak}{}}
-\eql at amsmath@futurebefore{\let\displaybreak\@undefined}
 \eql at amsmath@after{\let\eql at displaybreak@default\displaybreak}
-\let\displaybreak\eql at displaybreak@default
+\eql at amsmath@let\displaybreak\eql at displaybreak@default
 \newcount\eql at displaybreak@pen@
 \newcount\eql at displaybreak@prepen@
 \protected\def\eql at displaybreak@print{%
@@ -1165,10 +1247,6 @@
   \eql at ampprotect\eql at testopt@tight\eql at displaybreak@measure@{4}%
 }
 \def\eql at displaybreak@measure@[#1]{}
-\def\eql at display@atend#1{%
-  \expandafter\def\expandafter\eql at display@doatend\expandafter
-    {\eql at display@doatend#1}%
-}
 \newskip\eql at vspaceskip@
 \newskip\eql at abovespace@
 \newskip\eql at belowspace@
@@ -1175,9 +1253,7 @@
 \let\eql at vspace@org\vspace
 \def\eql at vspace{\eql at ifstar@loose\eql at vspace@\eql at vspace@}
 \def\eql at vspace@#1{%
-  \setlength\skip@{#1}%
-  \global\advance\eql at vspaceskip@\skip@
-}
+  \global\advance\eql at vspaceskip@\glueexpr#1\relax}
 \def\eql at display@init{%
   \eql at display@firstavail@\z@
   \eql at raisetag@firstlast@\z@
@@ -1188,50 +1264,140 @@
   \let\vspace\eql at vspace
 }
 \def\eql at display@close{%
+  \ifdim\eql at display@firstavail@<\z@
+    \eql at display@firstavail@\z@
+  \fi
+  \eql at skip@mode at leave@\z@
   \ifdim\eql at halign@prevdepth@=\maxdimen
     \ifdim\predisplaysize=-\maxdimen
-      \abovedisplayskip\eql at abovedisplaycontskip@
-      \predisplaysize\maxdimen
-      \abovedisplayshortskip\abovedisplayskip
-      \belowdisplayshortskip\belowdisplayskip
+      \eql at skip@mode at above@\tw@
+      \eql at skip@mode at below@\eql at skip@mode at cont@
+    \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@
+        \or
+          \eql at skip@mode at above@\@ne
+        \or
+          \eql at skip@mode at above@\@ne
+          \ifnum\eql at row@=\tw@
+            \eql at skip@mode at below@\@ne
+          \fi
+        \or
+          \eql at skip@mode at above@\@ne
+          \eql at skip@mode at below@\@ne
+        \fi
+      \fi
     \fi
   \else
-    \ifdim\eql at halign@prevdepth@=\@m\p@
+    \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@
-      \abovedisplayskip\eql at abovedisplaytopskip@
-      \belowdisplayskip\eql at belowdisplaytopskip@
+      \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
     \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@
-      \abovedisplayskip\eql at abovedisplayparskip@
+      \ifnum\eql at skip@mode at par@=\thr@@
+        \eql at skip@mode at leave@\@ne
+      \fi
     \fi
-    \predisplaysize\maxdimen
-    \abovedisplayshortskip\abovedisplayskip
-    \belowdisplayshortskip\belowdisplayskip
   \fi
-  \eql at display@doatend
-  \ifdim\eql at display@firstavail@<\z@
-    \eql at display@firstavail@\z@
+  \ifdefined\eql at skip@force at above
+    \eql at skip@mode at above@\eql at skip@force at above\relax
   \fi
-  \advance\eql at display@firstavail@\displayindent
-  \ifdim\eql at display@firstavail@>\predisplaysize
-    \ifcase\eql at displayshortmode@
+  \ifdefined\eql at skip@force at below
+    \eql at skip@mode at below@\eql at skip@force at below\relax
+  \fi
+  \ifdefined\eql at skip@force at leave
+    \eql at skip@mode at leave@\eql at skip@force at leave\relax
+  \fi
+  \ifodd\eql at raisetag@firstlast@
+    \ifcase\eql at skip@mode at above@
+      \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
     \or
-      \abovedisplayskip\abovedisplayshortskip
+      \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
     \or
-      \abovedisplayskip\abovedisplayshortskip
-      \ifnum\eql at row@=\tw@
-        \belowdisplayskip\belowdisplayshortskip
-      \fi
+      \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
     \or
-      \abovedisplayskip\abovedisplayshortskip
-      \belowdisplayskip\belowdisplayshortskip
+      \abovedisplayskip\glueexpr\eql at skip@partag at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@partag at above\relax
+    \or
+      \abovedisplayskip\z at skip
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@medtag at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@custom at above\relax
     \fi
+  \else
+    \ifcase\eql at skip@mode at above@
+      \abovedisplayskip\glueexpr\eql at skip@long at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@short at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@cont at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@par at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@top at above\relax
+    \or
+      \abovedisplayskip\z at skip
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@medtag at above\relax
+    \or
+      \abovedisplayskip\glueexpr\eql at skip@custom at above\relax
+    \fi
   \fi
-  \ifodd\eql at raisetag@firstlast@
-    \abovedisplayskip\eql at abovedisplaytagskip@
-  \fi
   \ifnum\eql at raisetag@firstlast@>\@ne
-    \belowdisplayskip\eql at belowdisplaytagskip@
+    \ifcase\eql at skip@mode at below@
+      \belowdisplayskip\glueexpr\eql at skip@tag at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@tag at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@tag at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@partag at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@partag at below\relax
+    \or
+      \belowdisplayskip\z at skip
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@medtag at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@custom at below\relax
+    \fi
+  \else
+    \ifcase\eql at skip@mode at below@
+      \belowdisplayskip\glueexpr\eql at skip@long at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@short at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@cont at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@par at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@top at below\relax
+    \or
+      \belowdisplayskip\z at skip
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@medtag at below\relax
+    \or
+      \belowdisplayskip\glueexpr\eql at skip@custom at below\relax
+    \fi
   \fi
   \ifnum\eql at displaybreak@pen@=\@MM\else
     \postdisplaypenalty\eql at displaybreak@pen@
@@ -1242,10 +1408,13 @@
   \advance\abovedisplayskip\eql at abovespace@
   \advance\belowdisplayskip\eql at belowspace@
   \advance\belowdisplayskip\eql at vspaceskip@
+  \abovedisplayshortskip\abovedisplayskip
+  \belowdisplayshortskip\belowdisplayskip
   \count@\prevgraf
   \advance\count@\eql at row@
   \advance\count at -\tw@
   \prevgraf\count@
+  \global\eql at skip@mode at leave@\eql at skip@mode at leave@
 }
 \def\eql at display@leave{%
   \let\label\eql at label@org
@@ -1252,12 +1421,15 @@
   \let\tag\eql at tag@default
   \let\raisetag\eql at raisetag@default
   \let\displaybreak\eql at displaybreak@default
+  \let\intertext\eql at intertext@default
   \let\vspace\eql at vspace@org
 }
 \expandafter\def\expandafter\@arrayparboxrestore\expandafter{%
   \@arrayparboxrestore
   \eql at display@leave
-  \eql at amprevert
+  \ifdefined\eql at ampproof@active
+    \eql at amprevert
+  \fi
   \@displayfalse
 }
 \newbox\eql at strutbox@
@@ -1276,14 +1448,11 @@
 }
 \AtBeginDocument{\eql at strut@make}
 \def\eql at halign@spread{%
-  \dimen@\eql at spread\relax
-  \advance\dimen@\normalbaselineskip
-  \ifdim\dimen@>\baselineskip
-    \normalbaselines
-    \dimen@\eql at spread\relax
-    \advance\dimen@\normalbaselineskip
-    \advance\dimen at -\baselineskip
-    \openup\dimen@
+  \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@
     \ifdefined\spread at equation
       \let\spread at equation\@empty
     \fi
@@ -1299,24 +1468,39 @@
     \eql at halign@prevdepth@\maxdimen
   \fi
 }
+\def\eql at halign@leave{%
+  \ifcase\eql at skip@mode at leave@
+  \or
+    \endgraf
+  \or
+    \endgraf
+    \prevdepth-\@m\p@
+  \fi
+}
 \def\eql at halign@before{%
   \ifdim\eql at halign@prevdepth@=\maxdimen\else
     \prevdepth\eql at halign@prevdepth@
   \fi
   \ifdim\prevdepth=-\@m\p@\else
-    \skip@\normalbaselineskip
-    \advance\skip at -\eql at display@height\relax
-    \advance\skip at -\prevdepth\relax
-    \ifdim\skip@<\normallineskiplimit
-      \vskip\normallineskip
+    \ifdefined\eql at display@height
+      \skip@\baselineskip
+      \advance\skip at -\glueexpr\eql at display@height\relax
+      \advance\skip at -\prevdepth\relax
+      \ifdim\skip@<\lineskiplimit
+        \skip@\lineskip
+      \fi
+      \advance\skip at -\eql at spread@amount@\relax
+      \vskip\skip@
+      \nointerlineskip
     \else
-      \vskip\skip@
+      \vskip-\eql at spread@amount@\relax
     \fi
-    \nointerlineskip
   \fi
 }
 \def\eql at halign@after{%
-  \prevdepth\eql at display@depth\relax
+  \ifdefined\eql at display@depth
+    \prevdepth\glueexpr\eql at display@depth\relax
+  \fi
 }
 \def\eql at halign@init#1{%
   \eql at halign@spread
@@ -1520,7 +1704,7 @@
     }%
 }
 \def\eql at adjust@shoveleft@[#1]{%
-  \eql at sregroup\setlength\dimen@{#1}\global\eql at shape@amount@\dimen@}
+  \eql at sregroup\global\eql at shape@amount@\glueexpr#1\relax}
 \def\eql at adjust@shovecenter{%
   \global\eql at shape@pos@\@ne\global\eql at shape@amount@\z@}
 \def\eql at adjust@shoveright{%
@@ -1531,7 +1715,12 @@
 }
 \def\eql at adjust@print#1#2{%
   \eql at restore@hfuzz
-  \hbox to\displaywidth{#1\unhbox\eql at fieldbox@\unkern#2}%
+  \hbox to\displaywidth{%
+    #1%
+    \unhbox\eql at fieldbox@\unkern
+    #2%
+    \eql at tagging@mathaddlast
+  }%
 }
 \def\eql at adjust@print at alignleft#1#2{%
   \ifnum\eql at row@=\@ne
@@ -1563,6 +1752,14 @@
   \eql at shape@sel
 }
 \def\eql at adjust@sel at tag{%
+  \eql at tagging@tagaddbox
+  \ifcase\eql at shape@pos@
+    \eql at tagging@alignleft
+  \or
+    \eql at tagging@aligncenter
+  \or
+    \eql at tagging@alignright
+  \fi
   \csname eql at adjust%
     @\ifdefined\eql at flushleft flushleft\else center\fi
     @\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
@@ -1570,6 +1767,14 @@
     @tag\endcsname
 }
 \def\eql at adjust@sel at notag{%
+  \eql at tagging@tagaddbox
+  \ifcase\eql at shape@pos@
+    \eql at tagging@alignleft
+  \or
+    \eql at tagging@aligncenter
+  \or
+    \eql at tagging@alignright
+  \fi
   \csname eql at adjust%
     @\ifdefined\eql at flushleft flushleft\else center\fi
     @\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
@@ -1982,6 +2187,9 @@
     Please switch to equations environment}%
 }
 \def\eql at single@start{%
+  \eql at halign@catchprevdepth
+  \eql at tagging@start
+  $$%$$
   \eql at numbering@eval at mode
   \let\eql at numbering@subeq at use\eql at false
   \eql at stack@save at single
@@ -2004,7 +2212,15 @@
   \eql at hook@eqout
   \eql at single@end at sel
   \eql at stack@restore
+  $$%$$
+  \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
 }%
@@ -2042,6 +2258,7 @@
       \eql at hook@eqin
 }
 \def\eql at single@end at adjust{%
+    \eql at tagging@mathsave
     $%$
     \hfil
     \kern\z@
@@ -2060,6 +2277,7 @@
     \fi
     \cr
     \noalign{\eql at halign@after}%
+    \eql at tagging@tablesavelines
   }%
   \eql at row@\tw@
   \eql at display@close
@@ -2179,7 +2397,7 @@
     \else
       \penalty\eql at displaybreak@pen@
     \fi
-    \addtolength\eql at vspaceskip@{#1}%
+    \advance\eql at vspaceskip@\glueexpr#1\relax%
     \vskip\eql at vspaceskip@
     \global\eql at vspaceskip@\z at skip
   }%
@@ -2188,22 +2406,42 @@
   \let\\\eql at math@cr
   \let\eql at math@cr@@@#1%
 }
-\eql at amsmath@futurebefore{\let\intertext\@undefined}
-\providecommand{\intertext}{\eql at error{Invalid use of \string\intertext}}
-\def\eql at intertext@process#1{%
+\def\eql at intertext@default{\eql at error{Invalid use of \string\intertext}}
+\eql at amsmath@let\intertext\eql at intertext@default
+\def\eql at intertext@process{%
   \eql at math@cr@@@
   \cr
-  \ifmeasuring@\else
-    \expandafter\eql at intertext@print{#1}%
+  \ifmeasuring@
+    \expandafter\@gobble
+  \else
+    \expandafter\eql at intertext@print
   \fi
 }
 \def\eql at intertext@print#1{%
   \noalign{%
     \eql at halign@after
+    \let\eql at skip@force at below\z@
+    \let\eql at skip@force at above\z@
     \eql at setkeys{intertext}\eql at intertext@opt
-    \normalbaselines
+    \openup-\eql at spread@amount@
     \penalty\postdisplaypenalty
-    \addtolength\eql at vspaceskip@\belowdisplayskip
+    \ifcase\eql at skip@force at below\relax
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@long at below\relax
+    \or
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@short at below\relax
+    \or
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@cont at below\relax
+    \or
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@par at below\relax
+    \or
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@top at below\relax
+    \or
+      \advance\eql at vspaceskip@\z at skip
+    \or
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@med at below\relax
+    \or
+      \advance\eql at vspaceskip@\glueexpr\eql at skip@custom at below\relax
+    \fi
     \vskip\eql at vspaceskip@
     \global\eql at vspaceskip@\z at skip
     \vbox{%
@@ -2220,7 +2458,23 @@
       \par
     }%
     \penalty\predisplaypenalty
-    \vskip\abovedisplayskip
+    \ifcase\eql at skip@force at above\relax
+      \vskip\glueexpr\eql at skip@long at above\relax
+    \or
+      \vskip\glueexpr\eql at skip@short at above\relax
+    \or
+      \vskip\glueexpr\eql at skip@cont at above\relax
+    \or
+      \vskip\glueexpr\eql at skip@par at above\relax
+    \or
+      \vskip\glueexpr\eql at skip@top at above\relax
+    \or
+      \vskip\z at skip
+    \or
+      \vskip\glueexpr\eql at skip@med at above\relax
+    \or
+      \vskip\glueexpr\eql at skip@custom at above\relax
+    \fi
     \eql at halign@prevdepth@\z@
     \eql at halign@before
   }
@@ -2253,6 +2507,9 @@
 }
 \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 numbering@eval at mode
   \eql at stack@save at multi
   \ifdefined\eql at subequations@active
@@ -2294,19 +2551,30 @@
     \eql at numbering@subeq at close
   \fi
   \eql at stack@restore
+  $$%$$
+  \eql at tagging@end
+  \eql at halign@leave
 }
 \def\eql at mode@equation{%
   \let\eql at equations@mode at single\eql at true
-  \let\eql at equations@end\eql at single@end
+  \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
 }
 \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
@@ -2412,12 +2680,12 @@
       \advance\dimen at -\eql at tagmargin@
       \divide\dimen@\tw@
       \eql at marginleft@\dimen@
-      \advance\eql at marginleft@-\eql at paddingleft@
+      \advance\eql at marginleft@-\glueexpr\eql at paddingleft@val\relax
       \ifdim\eql at marginleft@<\z@
         \eql at marginleft@\z@
       \fi
       \eql at marginright@\dimen@
-      \advance\eql at marginright@-\eql at paddingright@
+      \advance\eql at marginright@-\glueexpr\eql at paddingright@val\relax
       \ifdim\eql at marginright@<\z@
         \eql at marginright@\z@
       \fi
@@ -2439,6 +2707,7 @@
           ##%
           \eql at punct@apply at col
           \eql at hook@colout
+          \eql at tagging@mathsave
         $%
         \hfil
         \kern\z@
@@ -2462,6 +2731,7 @@
       \eql at hook@blockafter
       \eql at halign@after
     }%
+    \eql at tagging@tablesavelines
   }%
   \eql at display@close
 }
@@ -2487,47 +2757,11 @@
     \expandafter\eql at align@add at amp\romannumeral\number\count@ 000q}%
   \eql at tmp
 }
-\def\eql at align@preamble#1#2#3{%
-  &%
-  \global\advance\eql at column@\@ne
-  \hfil
-  \global\setbox\eql at fieldbox@\hbox{%
-    #3%
-    \@lign
-    $\m at th\displaystyle
-      \eql at hook@colin
-      ##%
-      \eql at class@innerleft
-      \eql at hook@innerleft
-    $%
-  }%
-  \global\eql at fieldwidth@\wd\eql at fieldbox@
-  #2%
-  \tabskip\z at skip
-  &%
-  \global\advance\eql at column@\@ne
-  \setbox\eql at fieldbox@\hbox{%
-\kern-\wd\eql at fieldbox@
-\box\eql at fieldbox@
-    #3%
-    \@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
-    $%
-  }%
-  #2%
-  \hfil
-  \tabskip#1%
-}
 \def\eql at align@print at trailright{%
    &\omit
     \global\advance\eql at column@\@ne
     \setbox\eql at fieldbox@\hbox{%
-\kern-\wd\eql at fieldbox@\box\eql at fieldbox@
+      \kern-\wd\eql at fieldbox@\box\eql at fieldbox@
     }%
     \eql at align@print at field
 }
@@ -2598,8 +2832,10 @@
   \eql at numbering@print at line@eval
   \if at eqnsw
     \eql at tagbox@make\eql at compose@print
+    \eql at tagging@tagaddbox
     \eql at tagbox@print at multi
   \else
+    \eql at tagging@tagaddbox
     \kern\displaywidth
   \fi
 }
@@ -2611,7 +2847,44 @@
   \eql at let@cr\eql at align@print at line@end
   \tabskip\eql at marginleft@
   \halign{%
-    \span\eql at align@preamble\eql at colsep@\eql at align@print at field\eql at strut@field
+    &%
+      \global\advance\eql at column@\@ne
+      \hfil
+      \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
+      }%
+      \global\eql at fieldwidth@\wd\eql at fieldbox@
+      \eql at align@print at field
+      \tabskip\z at skip
+    &%
+      \global\advance\eql at column@\@ne
+      \setbox\eql at fieldbox@\hbox{%
+        \kern-\wd\eql at fieldbox@
+        \box\eql at fieldbox@
+        \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
+      }%
+      \eql at align@print at field
+      \hfil
+      \tabskip\eql at colsep@\relax
     \crcr
     \noalign{%
       \eql at halign@before
@@ -2630,6 +2903,7 @@
       \eql at hook@blockafter
       \eql at halign@after
     }%
+    \eql at tagging@tablesavealign
   }%
   \eql at display@close
 }
@@ -2670,8 +2944,36 @@
     \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
+    \tabskip\z at skip
     \halign{%
-      \span\eql at align@preamble\z at skip\eql at align@measure at field\relax
+      &%
+        \global\advance\eql at column@\@ne
+        \hfil
+        \global\setbox\eql at fieldbox@\hbox{%
+          \@lign
+          $\m at th\displaystyle
+            \eql at hook@colin
+            ##%
+            \eql at class@innerleft
+            \eql at hook@innerleft
+          $%
+        }%
+        \global\eql at fieldwidth@\wd\eql at fieldbox@
+        \eql at align@measure at field
+      &%
+        \global\advance\eql at column@\@ne
+        \setbox\eql at fieldbox@\hbox{%
+          \@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 align@measure at field
+        \hfil
       \crcr
       \noalign{%
         \eql at hook@blockbefore
@@ -2720,6 +3022,8 @@
   \repeat
 }
 \def\eql at align@adjust{%
+  \eql at colsepmin@\glueexpr\eql at colsepmin@val\relax
+  \eql at colsepmax@\glueexpr\eql at colsepmax@val\relax
   \ifodd\eql at totalcolumns@
     \advance\eql at totalcolumns@\@ne
   \fi
@@ -2991,7 +3295,7 @@
     \expandafter\[%\]
   \fi
 }
-\def\eql at scan@sqrang at cancel{\ignorespaces}
+\def\eql at scan@sqrang at cancel{\expandafter\ignorespaces\@gobble}
 \def\eql at scan@ang#1{%
   \def\eql at scan@end{#1\>}%
   \eql at scan@reg@{}\def\eql at scan@stack{b}%
@@ -3040,7 +3344,9 @@
 \def\eql at equations@processopt{%
   \let\eql at blocklabel\@undefined
   \let\eql at blocktag\@undefined
-  \let\eql at display@doatend\@empty
+  \let\eql at skip@force at above\@undefined
+  \let\eql at skip@force at below\@undefined
+  \let\eql at skip@force at leave\@undefined
   \eql at abovespace@\z at skip
   \eql at belowspace@\z at skip
   \eql at displaybreak@prepen@\@MM
@@ -3047,11 +3353,7 @@
   \eql at nextopt@process{equations}%
   \let\eql at punct@block\eql at punct@main
   \let\eql at punct@main\relax
-  \setlength\eql at paddingleft@\eql at paddingleft@val
-  \setlength\eql at paddingright@\eql at paddingright@val
-  \setlength\eql at indent@\eql at indent@val
-  \setlength\eql at colsepmin@\eql at colsepmin@val
-  \setlength\eql at colsepmax@\eql at colsepmax@val
+  \eql at indent@\glueexpr\eql at indent@val\relax
 }
 \newenvironment{equations}{%
   \ifmmode
@@ -3058,24 +3360,22 @@
     \eql at error@mathmode{\string\begin{\@currenvir}}%
     \expandafter\eql at scan@env\expandafter\eql at scan@env at cancel
   \else
-    \eql at halign@catchprevdepth
-    $$%$$
     \expandafter\eql at ampprotect\expandafter\eql at equations@testall
       \expandafter\eql at equations@start
   \fi
 }{%
   \eql at equations@end
-  $$%$$
   \ignorespacesafterend
 }
 \def\eql at equations@start{%
   \eql at equations@processopt
-  \ifdefined\eql at equations@mode at single
+  \ifdefined\eql at equations@main
+    \expandafter\eql at scan@env\expandafter\eql at equations@main
+  \else
     \expandafter\eql at single@start
-  \else
-    \expandafter\eql at scan@env\expandafter\eql at multi@main
   \fi
 }
+\newenvironment{equations at sqr}{}{}
 \def\eql at equations@sqr at opt{equation,nonumber}
 \protected\def\eql at equations@sqr at open{%
   \ifmmode
@@ -3083,12 +3383,12 @@
     \expandafter\eql at scan@sqr\expandafter\eql at scan@sqrang at cancel
   \else
     \expandafter\eqnaddopt\expandafter{\eql at equations@sqr at opt}%
-    \eql at halign@catchprevdepth
-    $$%$$
+    \begin{equations at sqr}%
     \expandafter\eql at ampprotect\expandafter\eql at equations@testall
       \expandafter\eql at equations@sqr at start
   \fi
 }
+\newenvironment{equations at ang}{}{}
 \def\eql at equations@ang at opt{align,nonumber}
 \protected\def\eql at equations@ang at open{%
   \ifmmode
@@ -3096,8 +3396,7 @@
     \expandafter\eql at scan@ang\expandafter\eql at scan@sqrang at cancel
   \else
     \expandafter\eqnaddopt\expandafter{\eql at equations@ang at opt}%
-    \eql at halign@catchprevdepth
-    $$%$$
+    \begin{equations at ang}%
     \expandafter\eql at ampprotect\expandafter\eql at equations@testall
       \expandafter\eql at equations@ang at start
   \fi
@@ -3104,31 +3403,31 @@
 }
 \def\eql at equations@sqr at start{%
   \eql at equations@processopt
-  \ifdefined\eql at equations@mode at single
+  \ifdefined\eql at equations@main
+    \expandafter\eql at scan@sqr\expandafter\eql at equations@main
+  \else
     \expandafter\eql at single@start
-  \else
-    \expandafter\eql at scan@sqr\expandafter\eql at multi@main
   \fi
 }
 \def\eql at equations@ang at start{%
   \eql at equations@processopt
-  \ifdefined\eql at equations@mode at single
+  \ifdefined\eql at equations@main
+    \expandafter\eql at scan@ang\expandafter\eql at equations@main
+  \else
     \expandafter\eql at single@start
-  \else
-    \expandafter\eql at scan@ang\expandafter\eql at multi@main
   \fi
 }
 \protected\def\eql at equations@sqr at close{%
   \eql at equations@end
-  $$%$$
+  \end{equations at sqr}%
   \ignorespaces
 }
 \protected\def\eql at equations@ang at close{%
   \eql at equations@end
-  $$%$$
+  \end{equations at ang}%
   \ignorespaces
 }
-\DeclareRobustCommand{\eql at eqref}[1]{\textup{\tagform@{\ref{#1}}}}
+\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}}{%
@@ -3152,7 +3451,7 @@
   \eqnlinesset{allowbreaks=#1}%
 }
 \newcommand{\eql at notag}{\nonumber}
-\newcommand{\eql at thetag}{\leavevmode\tagform@}
+\newcommand{\eql at thetag}{\leavevmode\eql at tag@boxedform}
 \RequirePackage{keyval}
 \def\eql at decide@select#1#2#3#4{%
   \def\@tempa{#3}%
@@ -3207,7 +3506,7 @@
     }%
   }%
 }
-\def\eql at setkeys#1#2{
+\def\eql at setkeys#1#2{%
   \def\eql at tmp{\setkeys{eql@#1}}%
   \expandafter\eql at tmp\expandafter{#2}%
 }
@@ -3214,10 +3513,70 @@
 \let\eql at nextopt\@empty
 \def\eql at nextopt@process#1{%
   \eql at setkeys{#1}\eql at nextopt
+  \let\eql at tagging@opt\eql at nextopt
   \global\let\eql at nextopt\@empty
 }
 \newcommand{\eqnaddopt}[1]{%
   \expandafter\def\expandafter\eql at nextopt\expandafter{\eql at nextopt,#1}}
+\def\eql at defaults@classic{%
+  \def\eql at colsepmax@val{.5\maxdimen}%
+  \def\eql at spread{\jot}%
+  \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 colsepmax@val{2em}%
+  \def\eql at spread{0.2\normalbaselineskip}%
+  \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.2\normalbaselineskip}%
+  \def\eql at skip@short at below{0.0\normalbaselineskip
+    \@plus0.25\normalbaselineskip}%
+  \def\eql at skip@med at above{0.375\normalbaselineskip
+    \@plus0.225\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}{aligned,align,al,columns,col,@}[]{%
@@ -3236,6 +3595,8 @@
   \ifdefined\eql at single@native\let\eql at flushleft\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]{%
+  \eql at decide@bool{#3}{#2}{#1}\eql at single@doscan}
 \eql at define@key{setup}{sqropt}[]{%
   \def\eql at equations@sqr at opt{equation,#1}}
 \eql at define@key{setup}{angopt}[]{%
@@ -3254,130 +3615,172 @@
   \def\eql at display@height{#1}}
 \eql at define@key\eql at keycat{displaydepth}[\dp\eql at strutbox@]{%
   \def\eql at display@depth{#1}}
+\eql at define@key\eql at keycat{displayheight*}[]{%
+  \let\eql at display@height\@undefined}
+\eql at define@key\eql at keycat{displaydepth*}[]{%
+  \let\eql at display@depth\@undefined}
 \eql at define@key{equations}{noskip}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\eql at display@atend{%
-      \abovedisplayskip\z at skip
-      \abovedisplayshortskip\z at skip
-      \eql at abovedisplaytagskip@\z at skip}}%
-    {\eql at display@atend{%
-      \belowdisplayskip\z at skip
-      \belowdisplayshortskip\z at skip
-      \eql at belowdisplaytagskip@\z at skip}}}
-\eql at define@key{equations}{short}[]{%
+    {\def\eql at skip@force at above{5}}%
+    {\def\eql at skip@force at below{5}}}
+\eql at define@key{equations}{short}[above]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\eql at display@atend{%
-      \abovedisplayskip\abovedisplayshortskip}}%
-    {\eql at display@atend{%
-      \belowdisplayskip\belowdisplayshortskip}}}
+    {\def\eql at skip@force at above{1}}%
+    {\def\eql at skip@force at below{1}}}
 \eql at define@key{equations}{long}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\eql at display@atend{%
-      \abovedisplayshortskip\abovedisplayskip}}%
-    {\eql at display@atend{%
-      \belowdisplayshortskip\belowdisplayskip}}}
+    {\def\eql at skip@force at above{0}}%
+    {\def\eql at skip@force at below{0}}}
 \eql at define@key{equations}{medskip}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\eql at display@atend{%
-      \abovedisplayskip\eql at abovedisplaymedskip@}}%
-    {\eql at display@atend{%
-      \belowdisplayskip\eql at belowdisplaymedskip@}}}
+    {\def\eql at skip@force at above{6}}%
+    {\def\eql at skip@force at below{6}}}
+\eql at define@key{equations}{par}[par]{%
+  \eql at decide@select{#3}{#2}{#1}{%
+    {{default,}{\let\eql at skip@force at leave\@undefined}},%
+    {{cont,hmode}{\let\eql at skip@force at leave\z@}},%
+    {{par,vmode}{\let\eql at skip@force at leave\@ne
+      \ifdefined\eql at skip@force at below\else
+        \def\eql at skip@force at below{3}%
+      \fi}},%
+    {{top}{\let\eql at skip@force at leave\tw@
+      \ifdefined\eql at skip@force at below\else
+        \def\eql at skip@force at below{4}
+      \fi}}}}
 \eql at define@key{equations}{skip}{%
-  \setlength\eql at abovedisplayskip@{#1}%
-  \eql at belowdisplayskip@\eql at abovedisplayskip@%
-  \eql at display@atend{%
-    \abovedisplayskip\eql at abovedisplayskip@
-    \abovedisplayshortskip\abovedisplayskip
-    \eql at abovedisplaytagskip@\abovedisplayskip
-    \belowdisplayskip\abovedisplayskip
-    \belowdisplayshortskip\belowdisplayskip
-    \eql at belowdisplaytagskip@\belowdisplayskip}}
+  \def\eql at skip@force at above{7}%
+  \def\eql at skip@custom at above{#1}%
+  \let\eql at skip@force at below\eql at skip@force at above
+  \let\eql at skip@custom at below\eql at skip@custom at above}
 \eql at define@key{equations}{aboveskip}{%
-  \setlength\eql at abovedisplayskip@{#1}%
-  \eql at display@atend{%
-    \abovedisplayskip\eql at abovedisplayskip@
-    \abovedisplayshortskip\abovedisplayskip
-    \eql at abovedisplaytagskip@\abovedisplayskip}}
+  \def\eql at skip@force at above{7}%
+  \def\eql at skip@custom at above{#1}}
 \eql at define@key{equations}{belowskip}{%
-  \setlength\eql at belowdisplayskip@{#1}%
-  \eql at display@atend{%
-    \belowdisplayskip\eql at belowdisplayskip@
-    \belowdisplayshortskip\belowdisplayskip%
-    \eql at belowdisplaytagskip@\belowdisplayskip}}
+  \def\eql at skip@force at below{7}%
+  \def\eql at skip@custom at below{#1}}
 \eql at define@key{equations}{abovespace}{%
-  \addtolength\eql at abovespace@{#1}}
+  \advance\eql at abovespace@\glueexpr#1\relax}
 \eql at define@key{equations}{belowspace}{%
-  \addtolength\eql at belowspace@{#1}}
+  \advance\eql at belowspace@\glueexpr#1\relax}
 \eql at define@key{intertext}{skip}{%
-  \setlength\abovedisplayskip{#1}\belowdisplayskip\abovedisplayskip}
+  \def\eql at skip@force at above{7}%
+  \def\eql at skip@custom at above{#1}%
+  \let\eql at skip@force at below\eql at skip@force at above
+  \let\eql at skip@custom at below\eql at skip@custom at above}
 \eql at define@key{intertext}{aboveskip}{%
-  \setlength\belowdisplayskip{#1}}
+  \def\eql at skip@force at below{7}%
+  \def\eql at skip@custom at below{#1}}
 \eql at define@key{intertext}{belowskip}{%
-  \setlength\abovedisplayskip{#1}}
+  \def\eql at skip@force at above{7}%
+  \def\eql at skip@custom at above{#1}}
 \eql at define@key{intertext}{noskip}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\belowdisplayskip\z at skip\belowdisplayshortskip\z at skip}%
-    {\abovedisplayskip\z at skip\abovedisplayshortskip\z at skip}}
+    {\def\eql at skip@force at below{5}}%
+    {\def\eql at skip@force at above{5}}}
 \eql at define@key{intertext}{short}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\belowdisplayskip\belowdisplayshortskip}%
-    {\abovedisplayskip\abovedisplayshortskip}}
+    {\def\eql at skip@force at below{1}}%
+    {\def\eql at skip@force at above{1}}}
 \eql at define@key{intertext}{long}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\belowdisplayshortskip\belowdisplayskip}%
-    {\abovedisplayshortskip\abovedisplayskip}}
+    {\def\eql at skip@force at below{0}}%
+    {\def\eql at skip@force at above{0}}}
 \eql at define@key{intertext}{medskip}[]{%
   \eql at decide@abovebelow{#3}{#2}{#1}%
-    {\belowdisplayskip\eql at belowdisplaymedskip@}%
-    {\abovedisplayskip\eql at abovedisplaymedskip@}}
-\eql at define@key{setup}{skip}{%
-  \setlength\abovedisplayskip{#1}\belowdisplayskip\abovedisplayskip}
-\eql at define@key{setup}{aboveskip}{%
-  \setlength\abovedisplayskip{#1}}
-\eql at define@key{setup}{belowskip}{%
-  \setlength\belowdisplayskip{#1}}
+    {\def\eql at skip@force at below{6}}%
+    {\def\eql at skip@force at above{6}}}
+\eql at define@key{setup}{skip,longskip}{%
+  \abovedisplayskip\glueexpr#1\relax
+  \belowdisplayskip\abovedisplayskip
+  \def\eql at skip@long at above{#1}%
+  \let\eql at skip@long at below\eql at skip@long at above}
+\eql at define@key{setup}{aboveskip,abovelongskip}{%
+  \abovedisplayskip\glueexpr#1\relax
+  \def\eql at skip@long at above{#1}}
+\eql at define@key{setup}{belowskip,belowlongskip}{%
+  \belowdisplayskip\glueexpr#1\relax
+  \def\eql at skip@long at below{#1}}
 \eql at define@key{setup}{aboveshortskip}{%
-  \setlength\abovedisplayshortskip{#1}}
+  \abovedisplayshortskip\glueexpr#1\relax
+  \def\eql at skip@short at above{#1}}
 \eql at define@key{setup}{belowshortskip}{%
-  \setlength\belowdisplayshortskip{#1}}
+  \belowdisplayshortskip\glueexpr#1\relax
+  \def\eql at skip@short at below{#1}}
 \eql at define@key{setup}{tagskip}{%
-  \setlength\eql at abovedisplaytagskip@{#1}%
-  \eql at belowdisplaytagskip@\eql at abovedisplaytagskip@}
+  \def\eql at skip@tag at above{#1}%
+  \let\eql at skip@tag at below\eql at skip@tag at above}
 \eql at define@key{setup}{abovetagskip}{%
-  \setlength\eql at abovedisplaytagskip@{#1}}
+  \def\eql at skip@tag at above{#1}}
 \eql at define@key{setup}{belowtagskip}{%
-  \setlength\eql at belowdisplaytagskip@{#1}}
+  \def\eql at skip@tag at below{#1}}
 \eql at define@key{setup}{medskip}{%
-  \setlength\eql at abovedisplaymedskip@{#1}%
-  \eql at belowdisplaymedskip@\eql at abovedisplaymedskip@}
+  \def\eql at skip@med at above{#1}%
+  \let\eql at skip@med at below\eql at skip@med at above}
 \eql at define@key{setup}{abovemedskip}{%
-  \setlength\eql at abovedisplaymedskip@{#1}}
+  \def\eql at skip@med at above{#1}}
+\eql at define@key{setup}{belowmedskip}{%
+  \def\eql at skip@med at below{#1}}
+\eql at define@key{setup}{medtagskip}{%
+  \def\eql at skip@medtag at above{#1}%
+  \let\eql at skip@medtag at below\eql at skip@medtag at above}
+\eql at define@key{setup}{abovemedtagskip}{%
+  \def\eql at skip@medtag at above{#1}}
+\eql at define@key{setup}{belowmedtagskip}{%
+  \def\eql at skip@medtag at below{#1}}
 \eql at define@key{setup}{abovetopskip}{%
-  \setlength\eql at abovedisplaytopskip@{#1}}
+  \def\eql at skip@top at above{#1}}
+\eql at define@key{setup}{belowtopskip}{%
+  \def\eql at skip@top at below{#1}}
 \eql at define@key{setup}{aboveparskip}{%
-  \setlength\eql at abovedisplayparskip@{#1}}
+  \def\eql at skip@par at above{#1}}
+\eql at define@key{setup}{belowparskip}{%
+  \def\eql at skip@par at below{#1}}
+\eql at define@key{setup}{abovepartagskip}{%
+  \def\eql at skip@partag at above{#1}}
+\eql at define@key{setup}{belowpartagskip}{%
+  \def\eql at skip@partag at below{#1}}
 \eql at define@key{setup}{abovecontskip}{%
-  \setlength\eql at abovedisplaycontskip@{#1}}
-\eql at define@key{setup}{belowmedskip}{%
-  \setlength\eql at belowdisplaymedskip@{#1}}
+  \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}}
+\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 displayshortmode@\z@}},%
-    {{above,neverbelow,notbelow,belowoff}{\eql at displayshortmode@\@ne}},%
-    {{belowone,belowsingle}{\eql at displayshortmode@\tw@}},%
-    {{belowall,always,on}{\eql at displayshortmode@\thr@@}}}}
+    {{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@@}}}}
+\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 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 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}}}}
 \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}{\setlength\eql at tagmargin@{#1}}
+\eql at define@key\eql at keycat{tagmargin}{\eql at tagmargin@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{tagmargin*}{\settowidth\eql at tagmargin@{#1}}
-\eql at define@key\eql at keycat{mintagsep}{\setlength\eql at tagsepmin@{#1}}
-\eql at define@key\eql at keycat{mintagwidth}{\setlength\eql at tagwidthmin@{#1}}
+\eql at define@key\eql at keycat{mintagsep}{\eql at tagsepmin@\glueexpr#1\relax}
+\eql at define@key\eql at keycat{mintagwidth}{\eql at tagwidthmin@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{mintagwidth*}{\settowidth\eql at tagwidthmin@{#1}}
-\eql at define@key{setup}{taglayout}{\eql at tag@setmake{#1}}
-\eql at define@key{setup}{taglayout*}{\eql at tag@setmake@{#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}{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}}
@@ -3405,13 +3808,13 @@
 \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}{%
-  \setlength\eql at flushleftmargin@{#1}}
+  \eql at flushleftmargin@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{minleftmargin}{%
-  \setlength\eql at flushleftmarginmin@{#1}}
+  \eql at flushleftmarginmin@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{maxleftmargin}{%
-  \setlength\eql at flushleftmarginmax@{#1}}
+  \eql at flushleftmarginmax@\glueexpr#1\relax}
 \eql at define@key\eql at keycat{maxleftmargin*}[]{%
-  \setlength\eql at flushleftmarginmax@{.5\maxdimen}}
+  \eql at flushleftmarginmax@.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}
@@ -3460,7 +3863,7 @@
 \eql at define@key\eql at keycat{punctcol*}[]{\let\eql at punct@col\relax}
 \let\eql at multi@linesfallback\eql at true
 \let\eql at single@crerror\eql at true
-\let\eql at ampproof@active\eql at true
+\let\eql at ampproof@active\eql at false
 \eql at define@key{setup}{linesfallback}[true]{%
   \eql at decide@bool{#3}{#2}{#1}\eql at multi@linesfallback}
 \eql at define@key{setup}{ampproof}[true]{%
@@ -3471,22 +3874,30 @@
   \eql at decide@if{#3}{#2}{#1}%
     {\let\eql at scan@body\eql at scan@body at rescan}%
     {\let\eql at scan@body\eql at scan@body at dump}}
-\let\eql at provide@amsmath\eql at true
-\let\eql at provide@equation\eql at true
-\let\eql at provide@ang\eql at true
-\let\eql at amsmath@dofixends\eql at true
+\eql at define@key{setup}{defaults}{%
+  \eql at decide@select{#3}{#2}{#1}{%
+    {{classic}{\eql at defaults@classic}},%
+    {{eqnlines}{\eql at defaults@eqnlines}}}}
+\let\eql at provide@opt at equation\eql at true
+\let\eql at provide@opt at amsmathends\eql at true
+\let\eql at provide@opt at amsmath\eql at true
+\let\eql at provide@opt at ang\eql at true
+\let\eql at provide@opt at eqref\eql at true
 \eql at define@key{setup}{equation}[true]{%
   \eql at error@packageoption{#2}%
-  \eql at decide@bool{#3}{#2}{#1}\eql at provide@equation}
+  \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at equation}
+\eql at define@key{setup}{amsmathends}[true]{%
+  \eql at error@packageoption{#2}%
+  \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at amsmathends}
 \eql at define@key{setup}{amsmath}[true]{%
   \eql at error@packageoption{#2}%
-  \eql at decide@bool{#3}{#2}{#1}\eql at provide@amsmath}
-\eql at define@key{setup}{amsmathends}[true]{%
-  \eql at error@packageoption{#2}%
-  \eql at decide@bool{#3}{#2}{#1}\eql at amsmath@dofixends}
+  \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at amsmath}
 \eql at define@key{setup}{ang}[true]{%
   \eql at error@packageoption{#2}%
-  \eql at decide@bool{#3}{#2}{#1}\eql at provide@ang}
+  \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at ang}
+\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}
 \newenvironment{eql at gathered}
   {\eqnaddopt{lines}\equationsbox}{\endequationsbox}
 \newenvironment{eql at multlined}
@@ -3586,7 +3997,7 @@
       \eql at provide@movecmd{#1}{eql@#1}%
     }%
     \eql at provide@movecmd{#1}{eql@#1}%
-    \eql at amsmath@futurebefore{\eql at provide@undefinecmd{#1}}%
+    \eql at amsmath@before{\eql at provide@undefinecmd{#1}}%
   \fi
 }
 \def\eql at amsmath@endfix#1#2{%
@@ -3633,8 +4044,8 @@
     }%
     \eql at provide@moveenv{#1}{eql@#1}%
     \eql at provide@moveenv{#1*}{eql@#1*}%
-    \eql at amsmath@futurebefore{\eql at provide@undefineenv{#1}}%
-    \eql at amsmath@futurebefore{\eql at provide@undefineenv{#1*}}%
+    \eql at amsmath@before{\eql at provide@undefineenv{#1}}%
+    \eql at amsmath@before{\eql at provide@undefineenv{#1*}}%
   \fi
 }
 \def\eql at provide@env at equation#1{%
@@ -3661,7 +4072,13 @@
     }}%
     \eql at provide@moveenv{equation}{eql at equation}%
     \eql at provide@moveenv{equation*}{eql at equation*}%
-    \eql at amsmath@futurebefore{\eql at provide@undefineenv{equation*}}%
+    \eql at amsmath@before{\eql at provide@undefineenv{equation*}}%
+    \ifdefined\eql at tagging@on
+      \AddToHook{begindocument/end}{%
+        \eql at provide@moveenv{equation}{eql at equation}%
+        \eql at provide@moveenv{equation*}{eql at equation*}%
+      }%
+    \fi
   \fi
 }
 \def\eql at provide@env at multlined#1{%
@@ -3678,14 +4095,6 @@
       \eql at provide@undefineenv{multlined}}}%
   \fi
 }
-\def\eql at provide@env at subequations@reinstall{%
-  \global\let\subequations\eql at subequations
-  \let\@tempa\UseHook
-  \let\@tempb\UseHookWithArguments
-  \def\UseHook{\let\UseHook\@tempa\let\UseHookWithArguments\@tempb%
-    \expandafter\subequations\@gobble}%
-  \def\UseHookWithArguments{\expandafter\UseHook\@gobble}%
-}
 \def\eql at provide@env at subequations#1{%
   \eql at provide@onlyonce{subequations}{#1}%
   \ifdefined\eql at tmp
@@ -3695,7 +4104,6 @@
     \eql at amsmath@after{%
       \eql at provide@moveenv{amssubequations}{subequations}%
       \eql at provide@moveenv{subequations}{eql at subequations}%
-      \let\subequations\eql at provide@env at subequations@reinstall
     }%
     \AddToHook{package/hyperref/after}{%
       \AddToHook{cmd/subequations/before}[hyperref]{}%
@@ -3707,17 +4115,18 @@
         \stepcounter{equation}%
         \protected at edef\theHparentequation{\theHequation}%
         \addtocounter{equation}{-1}%
-      }
+      }%
       \AddToHook{cmd/amssubequations/after}%
       {%
         \def\theHequation{\theHparentequation\alph{equation}}%
         \ignorespaces
-      }
-    }
+      }%
+      \AddToHook{begindocument/end}{%
+        \eql at provide@moveenv{subequations}{eql at subequations}%
+      }%
+    }%
     \eql at provide@moveenv{subequations}{eql at subequations}%
-    \AddToHook{cmd/subequations/after}{}%
-    \let\subequations\eql at provide@env at subequations@reinstall
-    \eql at amsmath@futurebefore{\eql at provide@undefineenv{subequations}}%
+    \eql at amsmath@before{\eql at provide@undefineenv{subequations}}%
   \fi
 }
 \def\eql at provide@sqr{%
@@ -3727,6 +4136,12 @@
     \let\[\eql at equations@sqr at open
     \let\]\eql at equations@sqr at close
   }%
+  \ifdefined\eql at tagging@on
+    \AddToHook{begindocument/end}{%
+      \let\[\eql at equations@sqr at open
+      \let\]\eql at equations@sqr at close
+    }%
+  \fi
 }
 \def\eql at provide@ang{%
   \let\<\eql at equations@ang at open
@@ -3749,6 +4164,10 @@
 \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}[]{%
+  \def\maketag@@@##1{\eql at tag@box{##1}}}
 \newcommand{\eqnlinesprovide}[1]{%
   \eql at setkeys{provide}{#1}}
 \newcommand{\eqnlinesset}[1]{%
@@ -3759,14 +4178,14 @@
 \def\eql at error@packageoption#1{%
   \eql at error{may only use `#1' as a package option}%
 }
-\ifcsname tagsleft at true\endcsname\else
+\ifdefined\tagsleft at true\else
   \expandafter\newif\csname iftagsleft@\endcsname
 \fi
-\ifcsname @fleqntrue\endcsname\else
+\ifdefined\@fleqntrue\else
   \expandafter\newif\csname if at fleqn\endcsname
 \fi
-\ifdefined\eql at provide@amsmath
-  \let\eql at provide@equation\eql at true
+\ifdefined\eql at provide@opt at amsmath
+  \let\eql at provide@opt at equation\eql at true
   \eql at amsmath@after{%
     \iftagsleft@
       \eqnlinesset{tagsleft}
@@ -3780,21 +4199,16 @@
     \fi
   }
 \fi
-\ifdefined\eql at provide@equation
-  \eqnlinesprovide{equation,sqr}
-\fi
-\ifdefined\eql at amsmath@dofixends
-  \eql at amsmath@fixends
-\fi
-\ifdefined\eql at provide@amsmath
+\ifdefined\eql at provide@opt at equation\eqnlinesprovide{equation,sqr}\fi
+\ifdefined\eql at provide@opt at amsmathends\eql at amsmath@fixends\fi
+\ifdefined\eql at provide@opt at amsmath
   \eqnlinesprovide{%
     multline,gather,align,flalign,%
     multlined,gathered,aligned,%
-    subequations,eqref}
+    subequations}
 \fi
-\ifdefined\eql at provide@ang
-  \eqnlinesprovide{ang}
-\fi
+\ifdefined\eql at provide@opt at ang\eqnlinesprovide{ang}\fi
+\ifdefined\eql at provide@opt at eqref\eqnlinesprovide{eqref}\fi
 \endinput
 %%
 %% End of file `eqnlines.sty'.



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