texlive[74313] branches/branch2024.final/Master: eqnlines (branch)
commits+karl at tug.org
commits+karl at tug.org
Wed Feb 26 22:14:50 CET 2025
Revision: 74313
https://tug.org/svn/texlive?view=revision&revision=74313
Author: karl
Date: 2025-02-26 22:14:50 +0100 (Wed, 26 Feb 2025)
Log Message:
-----------
eqnlines (branch) (26feb25)
Modified Paths:
--------------
branches/branch2024.final/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc
Added Paths:
-----------
branches/branch2024.final/Master/texmf-dist/doc/latex/eqnlines/
branches/branch2024.final/Master/texmf-dist/doc/latex/eqnlines/README.txt
branches/branch2024.final/Master/texmf-dist/doc/latex/eqnlines/eqnlines.pdf
branches/branch2024.final/Master/texmf-dist/source/latex/eqnlines/
branches/branch2024.final/Master/texmf-dist/source/latex/eqnlines/eqnlines.dtx
branches/branch2024.final/Master/texmf-dist/source/latex/eqnlines/eqnlines.ins
branches/branch2024.final/Master/texmf-dist/tex/latex/eqnlines/
branches/branch2024.final/Master/texmf-dist/tex/latex/eqnlines/eqnlines-dev.sty
branches/branch2024.final/Master/texmf-dist/tex/latex/eqnlines/eqnlines.sty
branches/branch2024.final/Master/tlpkg/tlpsrc/eqnlines.tlpsrc
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/eqnlines/README.txt
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/eqnlines/README.txt (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/eqnlines/README.txt 2025-02-26 21:14:50 UTC (rev 74313)
@@ -0,0 +1,44 @@
+eqnlines v0.5
+Copyright 2024-2025 Niklas Beisert
+
+Based on the latex package amsmath:
+Copyright (C) 1995, 2000, 2013 American Mathematical Society.
+Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society.
+
+-- preview version --
+
+eqnlines is a LaTeX2e package providing a framework for typesetting
+single- and multi-line equations which extends the established
+equation environments of LaTeX and the amsmath package with many
+options for convenient adjustment of the intended layout. In
+particular, the package adds flexible schemes for numbering,
+horizontal alignment and semi-automatic punctuation, and it improves
+upon the horizontal and vertical spacing options. The extensions can
+be used and adjusted through optional arguments and modifiers to the
+equation environments as well as global settings.
+
+The package consists of the files
+
+ README.txt readme file
+ eqnlines.ins installation file
+ eqnlines.dtx source file
+ eqnlines.sty package file
+ eqnlines-dev.sty package file (development version)
+
+The distribution consists of the files
+README.txt, eqnlines.ins and eqnlines.dtx.
+
+Run "(pdf)latex eqnlines.dtx" to compile the manual eqnlines.pdf.
+
+Run "latex eqnlines.ins" to create the package eqnlines.sty and the
+development version eqnlines-dev.sty.
+Copy the file eqnlines.sty to an appropriate directory of your LaTeX
+distribution, e.g. texmf-root/tex/latex/eqnlines.
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ https://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
+version 2008 or later.
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/eqnlines/README.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/eqnlines/eqnlines.pdf
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/eqnlines/eqnlines.pdf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/eqnlines/eqnlines.pdf 2025-02-26 21:14:21 UTC (rev 74312)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/eqnlines/eqnlines.pdf 2025-02-26 21:14:50 UTC (rev 74313)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/eqnlines/eqnlines.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/source/latex/eqnlines/eqnlines.dtx
===================================================================
--- branches/branch2024.final/Master/texmf-dist/source/latex/eqnlines/eqnlines.dtx (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/source/latex/eqnlines/eqnlines.dtx 2025-02-26 21:14:50 UTC (rev 74313)
@@ -0,0 +1,7507 @@
+%
+% \iffalse meta-comment
+%
+% eqnlines.dtx Copyright (C) 2024-2025 Niklas Beisert
+%
+% Based on the latex package amsmath:
+% Copyright (C) 1995, 2000, 2013 American Mathematical Society.
+% 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
+% 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
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2008 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Niklas Beisert.
+%
+% This work consists of the files eqnlines.dtx and eqnlines.ins
+% 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)]
+%<*driver>
+\def\thedate#1{2025/02/25}\def\theversion#1{v0.5}
+\ProvidesFile{eqnlines.dtx}[\thedate{} \theversion{} eqnlines reference manual file]
+\PassOptionsToClass{10pt,a4paper}{article}
+\documentclass{ltxdoc}
+
+\usepackage[margin=35mm]{geometry}
+\usepackage[hyperindex=false]{hyperref}
+\usepackage{hyperxmp}
+\usepackage[usenames]{color}
+\usepackage{amssymb}
+
+\AddToHook{begindocument/before}{\hypersetup{colorlinks=false}}
+\hypersetup{urlbordercolor={.5 1 1}}
+\hypersetup{linkbordercolor={1 .7 .7}}
+\AddToHook{begindocument/before}{\hypersetup{pdfstartview=FitH}}
+\hypersetup{pdfsource={}}
+\hypersetup{pdflang={en-UK}}
+\hypersetup{pdfurl={https://ctan.org/pkg/eqnlines}}
+\hypersetup{pdfcopyright={Copyright 2024-2025 Niklas Beisert.
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license or (at your option) any later version.}}
+\hypersetup{pdflicenseurl={https://www.latex-project.org/lppl.txt}}
+\hypersetup{pdfcontactaddress={ETH Zurich, ITP, HIT K,
+ Wolfgang-Pauli-Strasse 27}}
+\hypersetup{pdfcontactpostcode={8093}}
+\hypersetup{pdfcontactcity={Zurich}}
+\hypersetup{pdfcontactcountry={Switzerland}}
+\hypersetup{pdfcontactemail={nbeisert at itp.phys.ethz.ch}}
+\hypersetup{pdfcontacturl={https://people.phys.ethz.ch/\xmptilde nbeisert/}}
+
+\newcommand{\TODO}{\textbf{\textcolor{red}{TODO:}} }
+
+\newcommand{\markpkg}[1]{\textsf{#1}}
+\newcommand{\secref}[1]{\hyperref[#1]{section \ref*{#1}}}
+\newcommand{\ctanref}[2]{\href{https://ctan.org/#1}{#2}}
+\newcommand{\ctanpkg}[1]{\ctanref{pkg/#1}{\markpkg{#1}}}
+
+\RenewDocElement[macrolike = true ,
+ toplevel = false,
+ idxtype = ,
+ idxgroup = LaTeX commands\actualchar\LaTeX{} commands ,
+ printtype =
+ ]{Macro}{macro}
+\RenewDocElement[macrolike = false ,
+ toplevel = false,
+ idxtype = env. ,
+ idxgroup = Package environments,
+ printtype = \textit{env.}
+ ]{Env}{environment}
+\NewDocElement[macrolike = true ,
+ toplevel = false,
+ idxtype = ,
+ idxgroup = Package commands,
+ printtype =
+ ]{InterfaceMacro}{imacro}
+\NewDocElement[macrolike = true ,
+ toplevel = false,
+ idxtype = ,
+ idxgroup = Package commands (obsolete),
+ printtype =
+ ]{ObsoleteInterfaceMacro}{omacro}
+\NewDocElement[macrolike = false ,
+ toplevel = false,
+ idxtype = key ,
+ idxgroup = Package keys ,
+ printtype = \textit{key}
+ ]{Key}{key}
+\NewDocElement[macrolike = true ,
+ toplevel = false,
+ idxtype = counter ,
+ idxgroup = TeX counters\actualchar \protect\TeX{} counters ,
+ printtype = \textit{counter}
+ ]{TeXCounter}{tcounter}
+\NewDocElement[macrolike = false ,
+ toplevel = false,
+ idxtype = counter ,
+ idxgroup = LaTeX counters\actualchar \LaTeX{} counters ,
+ printtype = \textit{counter}
+ ]{LaTeXCounter}{lcounter}
+\NewDocElement[macrolike = true ,
+ toplevel = false,
+ idxtype = skip ,
+ idxgroup = LaTeX length\actualchar \LaTeX{} length (skip) ,
+ printtype = \textit{skip}
+ ]{LaTeXSkip}{lskip}
+\NewDocElement[macrolike = true ,
+ toplevel = false,
+ idxtype = dimen ,
+ idxgroup = LaTeX length\actualchar \LaTeX{} length (dimen) ,
+ printtype = \textit{dimen}
+ ]{LaTeXDimen}{ldimen}
+\NewDocElement[macrolike = true ,
+ toplevel = false,
+ idxtype = box ,
+ idxgroup = LaTeX box\actualchar \LaTeX{} box ,
+ printtype = \textit{box}
+ ]{LaTeXBox}{lbox}
+\NewDocElement[macrolike = true ,
+ toplevel = false,
+ idxtype = bool ,
+ idxgroup = eqnlines bool\actualchar eqnlines bool ,
+ printtype = \textit{bool}
+ ]{eqnlinesBool}{ebool}
+\NewDocElement[macrolike = true ,
+ toplevel = false,
+ idxtype = bool ,
+ idxgroup = LaTeX conditional\actualchar \LaTeX{} conditional ,
+ printtype = \textit{bool}
+ ]{LaTeXConditional}{lcond}
+
+\parskip1ex
+\parindent0pt
+\let\olditemize\itemize
+\def\itemize{\olditemize\parskip0pt}
+
+\begin{document}
+
+\title{The \markpkg{eqnlines} Package}
+\hypersetup{pdftitle={The eqnlines Package}}
+\author{Niklas Beisert\\[2ex]
+ Institut f\"ur Theoretische Physik\\
+ Eidgen\"ossische Technische Hochschule Z\"urich\\
+ Wolfgang-Pauli-Strasse 27, 8093 Z\"urich, Switzerland\\[1ex]
+ \href{mailto:nbeisert at itp.phys.ethz.ch}
+ {\texttt{nbeisert at itp.phys.ethz.ch}}}
+\hypersetup{pdfauthor={Niklas Beisert}}
+\hypersetup{pdfsubject={Manual for the LaTeX2e Package eqnlines}}
+\date{\thedate{}, \theversion{}}
+\maketitle
+
+\begin{center}
+-- preview version --
+\end{center}
+
+\begin{abstract}\noindent
+\markpkg{eqnlines} is a \LaTeXe{} package providing
+a framework for typesetting single- and multi-line equations
+which extends the established equation environments
+of \LaTeX{} and the \markpkg{amsmath} package
+with many options for convenient adjustment of the intended layout.
+In particular, the package adds flexible schemes for numbering,
+horizontal alignment and semi-automatic punctuation, and it improves
+upon the horizontal and vertical spacing options. The extensions can
+be used and adjusted through optional arguments and modifiers to the
+equation environments as well as global settings.
+\end{abstract}
+
+\MakeShortVerb\|
+
+\begingroup
+\parskip0ex
+\tableofcontents
+\endgroup
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Introduction}
+
+Typesetting mathematical equations is an undisputed strength of \TeX{}.
+\LaTeX{} improved the overall management of display equations,
+for instance by providing optional numbering.
+It also added elementary functionality for multi-lined equations
+with alignment. Some of its deficiencies were addressed by
+the multi-line equation environments of the package \ctanpkg{amsmath}
+which have become an established standard for these purposes.
+
+The package \markpkg{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.
+The main additions are as follows:
+%
+\begin{itemize}
+\item
+Equation numbers can be assigned to individual lines
+(as for |align| and |gather|)
+or once for the multi-line equation block
+(as for |multline|).
+In the former case,
+a sub-numbering scheme can be applied (as through |subequations|).
+In the latter case, the position can be assigned to a specific line
+(first/middle/last/chosen).
+Moreover, equation numbers can be turned on and off by commands,
+and they can be triggered by setting a label.
+\item
+The vertical spacing above and below single- and multi-line equations
+of \LaTeX{} and \ctanpkg{amsmath} can be somewhat variable,
+hard to control and even resistive in certain situations.
+The package implements clearer structures controlling the vertical spacing,
+including proper dependency on the text line above
+and ways to adjust the spacing.
+\item
+The framework introduces a scheme which semi-automatically inserts punctuation,
+e.g.\ `.' or `,', at the end of the following (or every) equation environment.
+Punctuation can also be inserted at every alignment column or equation line
+including the possibility to prepend a certain spacing.
+\item
+Next to |\[|\,\ldots|\]| as an alias for the single-line |equation| environment,
+the package uses |\<|\,\ldots|\>| as an alias multi-line equations.
+\item
+The horizontal alignment and indentation of equation lines
+can be adjusted via a scheme or on a line-by-line basis.
+\item
+The alignment marker can be placed
+before or after the equation signs while maintaining proper spacing
+to symbols before and after it.
+This simplifies the construction of continuing equations
+in an aligned context.
+\item
+Equation lines are subject to shrinking of white space
+if the available space does not suffice
+(analogously to single-line equations).
+\item
+Most settings can be controlled via optional arguments and modifiers to the
+equation environment or via global settings.
+This includes switching between different types of equation environments,
+enabling or disabling numbering, adjusting vertical spacing, etc.
+This feature simplifies the adjustment and fine-tuning of equations
+towards the intended layout.
+\item
+Last but not least, the underlying \ctanpkg{amsmath} code,
+originating from the \TeX{} era and early \LaTeX{} years,
+has been redesigned with emphasis
+on clarity, readability, adjustability and maintainability
+(but at the cost of moderately higher resource consumption
+and moderately lower efficiency).
+Nevertheless, it remains \LaTeXe{} code.
+\end{itemize}
+%
+
+The package represents a stand-alone implementation
+of an equations environment
+which is largely compatible with the established \LaTeX{} and \ctanpkg{amsmath}
+environments |equation|, |multline|, |gather|, |align|
+and their variants.
+Hence, the package can be used instead of \ctanpkg{amsmath}
+with no or minor modifications to the \LaTeX{} sources for
+single- and multi-line equations.
+It can also be used alongside \ctanpkg{amsmath}
+including the \ctanpkg{mathtools} extensions
+to make use of the additional maths typesetting features
+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}
+environments can be accessed using the alternate name |equations|.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Usage}
+\label{sec:usage}
+
+% \TODO notice regarding v0.5
+\textbf{Notice regarding package version v0.5:}
+Please note that this package is still in a development and testing stage
+in the present version.
+This mainly applies to the documentation of features and code:
+Currently, the documentation is basic and minimal
+without extensive coverage of all features and settings,
+and it lacks desirable illustrations and examples.
+
+It is likely that some features of the package do not work to full extent,
+and that the package will not cooperate well with other packages.
+Therefore, please report any malfunctions that you may notice.
+
+Therefore, it is likely that internal macros and mechanisms will change,
+It is also conceivable that the public interface
+will change in minor but relevant ways
+in order to accommodate for important adjustments or additional features.
+It is intended that such changes would only require minor adaption
+of document sources that use an early version of this package.
+
+\medskip
+
+To use the \markpkg{eqnlines} package add the command
+%
+\begin{center}
+|\usepackage{eqnlines}|
+\end{center}
+%
+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}.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Equations Environment}
+\label{sec:equations}
+
+\DescribeEnv{equations}
+The package supplies a main maths environment called |equations|
+which accepts a comma-separated list of optional parameters
+`|[|\textit{opts}|]|':
+%
+\begin{center}
+\begin{tabular}{l}
+|\begin{equations}[|\textit{opts}|]|\texttt{\textvisiblespace}
+\\
+\ldots
+\\
+|\end{equations}|
+\end{tabular}
+\end{center}
+%
+Furthermore, the environment accepts some modifiers
+(like the star modifier `|*|' for many other \LaTeX\ macros)
+which will be explained further below.
+
+We note that the equations environment should be started with a white space
+character `\texttt{\textvisiblespace}'
+which provides a clear separation
+from optional arguments `|[|\textit{opts}|]|'
+and/or modifiers which must immediately follow
+the environment declaration |\begin{equations}|.
+
+\DescribeKey{single}
+\DescribeKey{lines}
+\DescribeKey{columns}
+The environment has three principal modes of operation
+which are selected by setting an optional argument as follows:
+%
+\begin{center}
+\begin{tabular}{llll}
+purpose & single-line equation & stacked equation(s) & aligned equations \\
+\hline
+name & |single| & |lines| & |columns| \\
+alt.\ names & |equation|, |eq|, |1|
+ & |gather|, |ga|, |ln|, |~|
+ & |align|, |al|, |col|, |@| \\
+symbolic & |\[|\textvisiblespace\,\ldots|\]|
+ & |\<~|\textvisiblespace\,\ldots|\>|
+ & |\<|\textvisiblespace\,\ldots|\>| \\
+\ctanpkg{amsmath} env. & |equation| & |gather|, |multline| & |align| \\
+\hline
+columns & --- & single & multiple, aligned \\
+alignment & adjustable & adjustable & alternating right/left \\
+parsing & single, direct & two passes & two passes \\
+numbering & on/off & off/single/multiple & off/single/multiple \\
+\end{tabular}
+\end{center}
+%
+The aligned mode more or less encompasses all three modes,
+and the stacked mode with only a single line
+is more or less just a single equation.
+However, the more complex forms also come along with some restrictions,
+hence, it makes sense to use the appropriate mode
+for the intended equation content.
+For instance, a single equation simply reads the equation input once,
+while the multi-line equation environments parse the environment body twice
+which can potentially disrupt some other functionality
+that is included in the body.
+Furthermore, the horizontal adjustment options are very restricted
+in aligned mode, and therefore the aligned form can automatically reduce
+to the stacked form (with right alignment) if only a single column is provided
+(no `|&|'s).
+
+\DescribeInterfaceMacro{\[...\string\]}
+\DescribeInterfaceMacro{\<...\string\>}
+\DescribeKey{\string~}
+The package offers several alternative names for the same mode as well as
+a symbolic short form |\<|\ldots|\>| extending the \LaTeX{}
+display equation form |\[|\ldots|\]| to multi-line equations.
+Here, the tilde `|~|' in |\<~|\textvisiblespace\,\ldots|\>|
+is a modifier character
+which acts as a short form for the optional argument |lines|
+selecting the lines mode.
+\DescribeKey{sqropt}
+\DescribeKey{angopt}
+Both short forms can be customised
+by setting default arguments via the global options
+|sqropt={|\textit{opts}|}| and |angopt={|\textit{opts}|}|.
+Both default arguments are preset to |nonumber|
+which disables equation numbering, see \secref{sec:numbering}.
+
+\DescribeEnv{equation}
+\DescribeEnv{multline}
+\DescribeEnv{gather}
+\DescribeEnv{align}
+The package also supplies or overwrites the \ctanpkg{amsmath}
+environments |equation|, |multline|, |gather|, |align| and |flalign|
+including their starred variants
+but neither the |alignat| alternative forms nor |split|.
+It is possible to define further equation environments \textit{env}
+with a predefined set of options \textit{opts} using:
+%
+\begin{center}
+|\|[|re|]|newenvironment{|\textit{env}|}|%
+|{\eqnaddopt{|\textit{opts}|}\equations}{\endequations}|
+\end{center}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Numbering}
+\label{sec:numbering}
+
+\DescribeKey{numberline}
+The package extends the established interface of \LaTeX{}
+and the \ctanpkg{amsmath} package for labelling equations
+with numbers or with manually assigned tags.
+For multi-line equations, there are two distinct modes of operations:
+individual labelling of the equation lines or
+one overall number/tag for the whole block of equations.
+The modes are selected by an optional argument
+|numberline=|\textit{mode} as follows:
+%
+\begin{center}
+\begin{tabular}{llll}
+name & alt. & description & preset \\
+\hline
+|none| & |n| & & preset off\\
+|all| & |a| & individual lines & preset on\\
+|sub| & |s| & & subequations (a,\,b,\,c,\,\ldots) \\
+\hline
+|first| & |f| & & first line\\
+|last| & |l| & & last line \\
+|middle| & |m| & single number & middle line \\
+|out| & |o| & & last/first line for right/left tags \\
+|in| & |i| & & first/last line for right/left tags \\
+|here| & |h| & & line indicated by |\numberhere| \\
+\end{tabular}
+\end{center}
+%
+\DescribeInterfaceMacro{\nonumber}
+\DescribeInterfaceMacro{\donumber}
+Numbering can be turned on and off
+(for individual lines or for the block as a whole depending on the mode)
+by means of:
+%
+\begin{center}
+|\nonumber|
+\qquad and \qquad
+|\donumber|
+\end{center}
+%
+\DescribeKey{*}
+\DescribeKey{!}
+Alternatively, the numbering can be disabled or enabled for the block using
+modifiers (which must be placed \emph{before} further optional arguments):
+%
+\begin{center}
+|\[*|\textvisiblespace\,\ldots|\]|
+\qquad and \qquad
+|\[!|\textvisiblespace\,\ldots|\]|
+\end{center}
+%
+This allows to define a default behaviour and specify exceptions
+where they may occur.
+The star modifier following directly the environment declaration
+replaces the starred form of environments (|equation*|, etc.).
+
+\DescribeInterfaceMacro{\numberhere}
+\DescribeInterfaceMacro{\numbernext}
+The placement of a single number for an equation block can be adjusted by:
+%
+\begin{center}
+|\numberhere|
+\qquad and \qquad
+|\numbernext|
+\end{center}
+%
+The former macro overrides the position to the present line.
+The latter macro defers the number to the next line,
+e.g.\ if an equation is broken into several lines
+and the last one should receive the number tag.
+
+\DescribeInterfaceMacro{\label}
+\DescribeInterfaceMacro{\tag}
+Equation numbers can receive \LaTeX{} labels as usual
+and they can be turned into manually assigned tags
+using the established macros:
+%
+\begin{center}
+|\label{|\textit{label}|}|
+\qquad and \qquad
+|\tag|[|*|]|{|\textit{tag}|}|
+\end{center}
+%
+Note that a label and a tag will always apply to the
+next number that will be printed, and only a single label
+and/or tag may be specified for it. For example, if the present line
+has no numbering, but the following line does,
+|\label| or |\tag| will apply to the following line.
+The macros |\label| and |\tag|
+can also be instructed to automatically enable numbering
+for the present line or block (|\donumber|).
+By default, numbers are triggered for |\tag|, but not for |\label|
+reflecting the behaviour set forth by \ctanpkg{amsmath}.
+By enabling triggering for |\label|, numbers will be produced
+only if they have a chance of being referenced.
+
+\DescribeKey{label}
+\DescribeKey{tag}
+\DescribeKey{@}
+The equations environment provides an alternative means
+to specify labels and tags within the optional arguments |[|\textit{opts}|]|
+or via the modifier |@{|\textit{label}|}|
+(which may \emph{follow} further optional arguments):
+%
+\begin{center}
+|label={|\textit{label}|}|,
+\qquad
+|tag|[|*|]|={|\textit{tag}|}|,
+\qquad\qquad
+|\[@{|\textit{label}|}|\,\ldots|\]|
+\end{center}
+%
+In particular, in subequations mode (|sub|),
+the optional argument |label| can be used to assign
+a label to the parent number addressing the whole equation block.
+
+\DescribeInterfaceMacro{\raisetag}
+
+\DescribeKey{taglayout}
+\DescribeKey{tagform}
+The typesetting of equation numbers and tags passes through
+two methods defined by \ctanpkg{amsmath},
+one which defines the layout
+and another one which adds a decoration (brackets).
+These two methods can be adjusted via the options:
+%
+\begin{center}
+|taglayout|[|*|]|={|\textit{code}|}|
+\quad and\quad
+|tagform={|\textit{l}|{|\textit{code}|}|\textit{r}|}|
+\quad or\quad
+|tagform*={|\textit{code}|}|
+\end{center}
+%
+Here, \textit{code} is some macro code
+that references the argument `|#1|' containing the
+number or tag, and \textit{l} and \textit{r}
+can be opening and closing brackets for the tag presentation.
+
+\DescribeInterfaceMacro{\eqref}
+The macro |\eqref| is the standard method for referring
+to equation numbers via their label.
+This method also uses the layout defined above.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Horizontal Adjustment}
+\label{sec:adjustment}
+
+\DescribeKey{margin}
+\DescribeKey{mincolsep}
+\DescribeKey{maxcolsep}
+The horizontal alignment of columns is fixed for aligned multi-line equations:
+Each pair of subsequent columns forms a unit which is aligned at the
+intermediate alignment marker `|&|'.
+These columns are distributed evenly over the available horizontal space.
+Here, the outer space left and right of the set of columns can
+is treated on equal footing to the space between the columns
+(option |margins=on|),
+but it can be eliminated so that the outer columns
+are pushed right to the margin (option |margins=off|).
+In addition, a minimum and maximum width can be specified
+for the column separation (|mincolsep=|\textit{dimen}
+and |maxcolsep=|\textit{dimen}).
+By default, no maximum column separation is set (|maxcolsep*|),
+and all horizontal space is used, otherwise a value
+of |2em| ($\equiv$|\qquad|) is suggested with the minimum separation
+set to |1em| ($\equiv$|\quad|) by default.
+
+For stacks of equations including single equations,
+there is just a single alignment column
+whose horizontal alignment can be adjusted via a shape scheme or
+by manually adjusting individual lines.
+A shape scheme determines the horizontal alignment for each line
+and it is specified by the optional argument
+|shape=|\textit{mode} as follows:
+%
+\begin{center}
+\begin{tabular}{llll}
+name & alt. & shape & alignment \\
+\hline
+|default| & |def| & uniform & default\\
+\hline
+|left| & |l| & & left\\
+|center| & |c| & uniform & central \\
+|right| & |r| & & right \\
+\hline
+|first| & |indent|, |rc| & first/rest & first line indented \\
+|hanging| & |outdent|, |lc| & first/rest & first line hanging \\
+|steps| & |lcr| & first/intermediate/last & left/centre\ldots centre/right\\
+\end{tabular}
+\end{center}
+%
+Note that the steps shape comes to use in the \ctanpkg{amsmath}
+environment |multline|. The alignment preset
+can be adjusted for individual lines by the macros:
+%
+\begin{center}
+|\shoveleft|[|*|$\vert$|!|$\vert$|[|\textit{dimen}|]|],
+\qquad
+|\shovecenter|,
+\qquad
+|\shoveright|
+\end{center}
+%
+In contradistinction to \ctanpkg{amsmath},
+these macros do not require to specify the cell contents as their argument
+(but there is no harm in doing so).
+\DescribeKey{indent}
+The macro |\shoveleft| also accepts the modifiers
+`|*|' or `|!|' for indentation or hanging indentation by
+the standard indentation amount (|indent|=|2em|)
+or an optional argument |[|\textit{indent}|]|
+specifying a variable amount of indentation.
+
+\DescribeKey{padding}
+\DescribeKey{padleft}
+\DescribeKey{padright}
+\DescribeKey{padmax}
+Note that (hanging) indentation requires to add some padding around
+the equations block via the optional argument
+|padding|$\vert$|padleft|$\vert$|padright|[|={|\textit{dimen}|}|]
+or |padmax| to extend padding to the whole line.
+Note that |indent*={|\textit{dimen}|}| sets the default indentation amount
+and the left padding at the same time.
+
+\DescribeKey{layout}
+\DescribeKey{center}
+\DescribeKey{left}
+Finally, the overall layout can be adjusted between central and left alignment
+via |layout=center|, |layout=left| or |center|, |left| for short.
+
+\DescribeKey{tagmargin}
+In central alignment mode, there is the option of imposing a tag margin
+|tagmargin={|\textit{dimen}|}|
+which allocates some space to the tag
+such that equation content is centred in the remaining horizontal space.
+
+\DescribeKey{leftmargin}
+\DescribeKey{minleftmargin}
+\DescribeKey{maxleftmargin}
+In left alignment mode, all equations are left aligned to a left margin
+(|leftmargin| initialised to the first level of enumerations and itemisations).
+Depending on the situation, the left margin may be
+reduced or extended to |minleftmargin| or |maxleftmargin|, respectively.
+
+\DescribeKey{marginbadness}
+\DescribeKey{maxbadness}
+Finally, we note that within single and stacked equations,
+very long equations that do not fit the available horizontal space
+are subject to shrinking attempts. In other words,
+\TeX{} will attempt to shrink the glue contained in the equation line
+to make it fit. This shrinking can be controlled by the two parameters
+|marginbadness| and |maxbadness| accepting integer values.
+The former is used for trying to shrink onto certain horizontal margins
+which are otherwise reserved for tags;
+the latter is used for using the maximal horizontal space which also
+raises or lowers the equation tag if needed.
+Small values prevent shrinking and higher values allow for more compression.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Punctuation}
+\label{sec:puctuation}
+
+Extending proper punctuation across equations is a delicate matter,
+and maintaining it while redacting the text
+certainly takes more attention to detail
+than many author are willing to afford.
+A contributing factor is that punctuation marks are harder
+to spot alongside equation context and somewhat out of place anyway.
+
+\DescribeInterfaceMacro{\eqnpunctmain}
+\DescribeInterfaceMacro{\eqnpunct}
+\DescribeKey{punct}
+The package supplies a semi-automatic scheme by which
+equations are terminated by a specific punctuation mark.
+Punctuation marks are set by:
+%
+\begin{center}
+\begin{tabular}{ll}
+|\eqnpunctmain{|\textit{punct}|}| &
+|\eqnlinesset{punct={|\textit{punct}|}}|
+\\
+|\eqnpunct{|\textit{punct}|}| &
+|\eqnaddopt{punct={|\textit{punct}|}}|
+\\
+|\[[punct={|\textit{punct}|}]|\,\ldots|\]|
+\end{tabular}
+\end{center}
+%
+The former two forms set and enable a default punctuation mark;
+the middle two forms set the punctuation mark for the
+next equation environment in line;
+the final form applies to the equation environment only.
+For example, one might declare `|\eqnpunctmain.|' to terminate
+all equations with a period `|.|'.
+The default behaviour can be adjusted to a comma `|,|'
+for an individual equation
+by declaring `|\eqnpunct,|' before the equation
+(i.e.\ at the end of the textual phrase to which the punctuation mark belongs)
+or by using the optional argument |[punct={,}]|.
+Likewise, |\eqnpunct{}| and |[punct={}]| eliminate a preset punctuation.
+
+\DescribeKey{punctsep}
+For convenience, one may also specify a desired space
+(or any other sequence) preceding the punctuation
+by |[punctsep={|\textit{sep}|}]|,
+e.g.\ \textit{sep}=|\,| or \textit{sep}=|\|\texttt{\textvisiblespace}.
+
+\DescribeInterfaceMacro{\eqnpunctcol}
+\DescribeInterfaceMacro{\eqnpunctline}
+\DescribeKey{punctcol}
+\DescribeKey{punctline}
+For multi-line equations, there are two further levels of default punctuation
+for terminating columns and lines
+which are specified via the macros |\eqnpunctcol| and |\eqnpunctline|
+or the optional arguments |punctcol| and |punctline|.
+A punctuation item may also be handed on to the next lower level
+of punctuation via the starred forms |punct*| and |punctline*|.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Math Classes at Alignment}
+\label{sec:classes}
+
+Alignment in multi-line equations breaks
+equations into components before and after the alignment position.
+Unfortunately, this also interrupts \TeX's math spacing mechanism
+which is based on the math classes assigned to the characters,
+and there appears to be no direct way of determining the
+math class to the previous letter.
+Therefore, one has to make some assumptions
+on the letters that will surround the alignment marker `|&|'
+in order to obtain the appropriate spacing also across the alignment.
+
+The \ctanpkg{amsmath} environment |align| assumes that
+the left column ends with an ordinary character.
+This leads to the correct spacing when an equation $a=b+c$
+is broken before the equals relation as |a&=b+c|,
+and also if an equation sequence continues on the next line as |\\&=d-e|.
+However, it is difficult to achieve the right spacing
+if the right-hand side is to be broken into several lines:
+For instance, |\\&|\textvisiblespace|+f|
+aligns the subordinate binary operation with the equals sign
+(which may be undesirable).
+Instead placing a phantom equals sign is an effort
+that somewhat disrupts the readability of the code.
+
+\DescribeKey{class}
+\DescribeKey{ampeq}
+\DescribeKey{eqamp}
+The package implements a more flexible assignment of math classes
+at the alignment. The above default behaviour is invoked by
+the optional argument |class=ampeq| (or |ampeq| for short).
+The optional argument |class=eqamp| (or |eqamp| for short)
+imposes math classes at the alignment
+such that an equation sign should be placed just before the alignment.
+Concretely, it inserts |\mathrel{}| classes just before and after
+the alignment marker. Furthermore, in case of an empty left alignment cell,
+the leading math class is changed to |\mathord{}|
+so that a following binary operator is not interpreted as a unary one.
+
+\DescribeKey{classout}
+\DescribeKey{classin}
+\DescribeKey{classlead}
+Math classes just before and after alignment can be adjusted freely
+by the optional arguments:
+%
+\begin{center}
+|classout={|\textit{class}|}|,
+\qquad
+|classin={|\textit{class}|}|,
+\qquad
+|classlead={|\textit{class}|}|.
+\end{center}
+%
+The parameter |classlead| determines the math class just after the alignment
+if the cell before alignment is empty.
+
+For example, the following two expressions produce identical output:
+%
+\begin{center}
+\begin{tabular}{l}
+|\<[ampeq] a &= b+c \\ &= d-e \\ &\mathrel{}\phantom{=} +f \>|
+\\
+|\<[eqamp] a =& b+c \\ =& d-e \\ & +f \>|
+\end{tabular}{l}
+\end{center}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Vertical Spacing}
+\label{sec:vspace}
+
+Display equations in \TeX{} are considered to be part
+of the surrounding text.
+Hence, the vertical spacing depends on the surrounding text,
+in particular on the width and depth of the last line of text.
+Due to this influence it can be difficult to control
+the spacing accurately.
+The package adds several options to control the vertical spacing,
+and it also implements a uniform behaviour for all types of equations.
+
+The spacing of equations to the surrounding text
+is a combination of several aspects:
+
+First, \TeX{} inserts some interline spacing according to its rules.
+The amount depends on the depth/height of the surrounding text
+and the height/depth of the math content.
+The former typically takes rather uniform values,
+whereas the latter can range wildly with the context
+(plain equations vs.\ fractions and matrices).
+As equations are normally surrounded by a relatively large amount of glue,
+it makes sense to reduce the dependency on the height/depth of math content.
+Therefore, the package makes equation environments
+appear to the surrounding text
+as a line with a fixed height and depth,
+and thus interline glue merely fills some potential gaps of the
+surrounding text.
+\DescribeKey{displayheight}
+\DescribeKey{displaydepth}
+The apparent height and depth are defined by
+|displayheight| and |displaydepth|
+which default to the dimensions of a strut.
+
+Second, the spacing of display equations depends on the width
+of the previous line of text.
+If the math content fits well into the available horizontal space,
+the display equation is called short
+and less glue is needed above the equation.
+The package implements this basic \TeX{} feature
+for all single- and multi-line equation environments.
+\TeX{} also reduces the amount of glue below short equations
+(potentially to make their spacing appear more uniform).
+\DescribeKey{shortmode}
+The package allows to adjust the spacing for short equations
+via the global option |shortmode={|\textit{mode}|}|
+where \textit{mode} takes the values:
+%
+\begin{center}
+\begin{tabular}{lll}
+name & reduced glue \\
+\hline
+|off| & disabled \\
+|above| & above short equations \\
+|belowone| & also below short single-line equations \\
+|belowall| & also below all short single-line equations \\
+\end{tabular}
+\end{center}
+%
+\DescribeKey{short}
+\DescribeKey{long}
+Short and long amounts of glue can also be enforced for
+individual equation environments
+via the optional arguments |short| and |long|
+taking the values |above|, |below| or |both|.
+
+Third, the package provides several means to adjust the
+glue around equations:
+
+\DescribeKey{noskip}
+\DescribeKey{medskip}
+Next to |short| and |long| the spacing above and below
+equation environments can be reduced
+to some other fixed smaller amount via |medskip|
+or removed altogether via |noskip|.
+These keys also take the values |above|, |below| or |both|.
+
+\DescribeKey{...skip}
+\DescribeInterfaceMacro{\vspace}
+\DescribeKey{...space}
+Variable amounts of skip can be set via
+|aboveskip| and |belowskip| or |skip| for both simultaneously.
+In addition, the package extends the |\vspace| mechanism
+of \LaTeX{} to equation bodies where it adds vertical space
+below the next equation line or below the equation environment.
+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:
+%
+\DescribeKey{...skip}
+\begin{center}
+\begin{tabular}{llll}
+above & below & 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 \\
+\end{tabular}
+\end{center}
+
+\DescribeKey{spread}
+\DescribeKey{strut}
+\DescribeKey{struttag}
+Likewise, the spacing between the lines
+of a multi-line equation environment can be adjusted
+via |spread={|\textit{dimen}|}|
+which defaults to |\jot|$\equiv$|3pt|.
+In addition, all equation lines and tags
+are supplied with struts to ensure a minimum height and depth.
+The latter behaviour is controlled by the boolean switches
+|strut| and |struttag|.
+
+\DescribeKey{displaybreak}
+\DescribeInterfaceMacro{\displaybreak}
+\DescribeKey{allowdisplaybreaks}
+Finally, the breaking of multi-line equations across pages
+can be controlled as follows:
+The setting |allowdisplaybreaks|
+taking values |0| (never) through |4| (permissive)
+controls the permittivity of page breaks within multi-line equations.
+The optional argument |displaybreak|
+taking values |0| (do not) through |4| (enforce)
+suggests a break just \emph{above} the equation environment.
+The command |\displatybreak| with values |0| through |4|
+suggests a break below the current line or below the equation environment.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Further Environments}
+\label{sec:further}
+
+The package supplies some additional environments:
+
+\DescribeEnv{equationsbox}
+\DescribeKey{margin}
+\DescribeKey{marginleft}
+\DescribeKey{marginright}
+The package provides a boxed equation environment |equationsbox|
+which can be used within arbitrary math content.
+It works analogously to |equations| including optional arguments
+and modifiers, but it offers a reduced range of functionality
+such as (evidently) no numbering.
+Additional arguments are given by
+|margin|, |marginleft|, |marginright|
+which specify additional margin space
+around the equations box.
+
+\DescribeEnv{subequations}
+\DescribeKey{subeqtemplate}
+The environment |subequations| group equations contained in the body
+with a common primary equation number and an extra level
+of numbering (typically: a,\,b,\,c,\,\ldots).
+The numbering layout can be controlled via |subeqtemplate|.
+For instance, the default behaviour of adding lowercase latin letters
+to the parent equation number (|\theparentequation|)
+is achieved by:
+%
+\begin{center}
+|subeqtemplate={\theparentequation\alph{equation}}|
+\end{center}
+
+
+\DescribeEnv{intertext}
+\DescribeInterfaceMacro{\intertext}
+The environment |intertext| (or equivalently the macro |\intertext|)
+injects a (short) line of text
+into a multi-line equation while preserving the equation alignment
+across the text.
+The intertext environment must replace the
+end of line marker `|\\|' between two lines of the equation
+(to avoid blank lines).
+The environment accepts several of the vertical spacing adjustments
+as an optional argument.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Feature Selection and Package Options}
+\label{sec:features}
+
+\DescribeInterfaceMacro{\eqnlinesset}
+Features and options of general nature can be selected by the commands:
+%
+\begin{center}
+\begin{tabular}{rl}
+&|\usepackage[|\textit{opts}|]{eqnlines}|
+\\
+or&|\PassOptionsToPackage{|\textit{opts}|}{eqnlines}|
+\\
+or&|\eqnlinesset{|\textit{opts}|}|
+\end{tabular}
+\end{center}
+%
+|\PassOptionsToPackage| must be used before |\usepackage|;
+|\eqnlinesset| must be used afterwards.
+\textit{opts} is a comma-separated list of options.
+
+The following few settings can only be specified when loading the package,
+not via |\eqnlinesset|:
+%
+\begin{center}
+\begin{tabular}{lll}
+option & type & description \\
+\hline
+|equation| & bool & provide/overwrite |equation| and |\[|\ldots|\]| \\
+|amsmath| & bool & provide/overwrite \ctanpkg{amsmath}
+ environments and macros \\
+|ang| & bool & provide |\<|\ldots|\>| \\
+\end{tabular}
+\end{center}
+%
+
+If the above settings are 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:
+%
+\begin{center}
+|\eqnlinesprovide{|\textit{features}|}|
+\end{center}
+%
+\textit{features} is a comma-separated list of features:
+%
+\begin{center}
+\begin{tabular}{ll}
+feature & description \\
+\hline
+\textit{env} & provide/overwrite environment \textit{env}:\\
+& |equation|, |gather|, |multline|, |align|, |flalign| \\
+& |multlined|, |gathered|, |aligned|, |subequations| \\
+\textit{env}|=|\textit{name} &
+ provide environment \textit{env} as \textit{name} \\
+|sqr| & provide |\[|\ldots|\]| \\
+|ang| & provide |\<|\ldots|\>| \\
+\textit{cmd} & provide/overwrite macro |\|\textit{cmd}:\\
+& |eqref|, |notag|, |thetag|, |allowdisplaybreaks|, |numberwithin| \\
+\end{tabular}
+\end{center}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\TODO
+%\subsection{List of Options}
+%\label{sec:options}
+
+%list:
+%EBSIGP (equations, box, subequations, intertext, global, package)
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Information}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Copyright}
+\label{sec:copyright}
+
+Copyright \copyright{} 2024--2025 Niklas Beisert
+
+Based on the latex package amsmath:
+Copyright \copyright{}
+1995, 2000, 2013 American Mathematical Society;
+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.3
+of this license or (at your option) any later version.
+The latest version of this license is in
+ \url{https://www.latex-project.org/lppl.txt}
+and version 1.3c or later is part of all distributions of \LaTeX{}
+version 2008 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is Niklas Beisert.
+
+This work consists of the files |README.txt|, |eqnlines.ins| and |eqnlines.dtx|
+as well as the derived files |eqnlines.sty| and |eqnlines.pdf|.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Credits}
+\label{sec:credits}
+
+This package is based on the \LaTeX{} package \ctanpkg{amsmath}
+(initially named \markpkg{amstex})
+which in turn is based on the \TeX{} macro system \ctanpkg{amstex}
+written by Michael Spivak.
+The initial work of porting \ctanpkg{amstex} to \LaTeX{}
+was done in 1988--1989 by Frank Mittelbach and Rainer Sch\"opf.
+In 1994 David M.\ Jones added the support for flush-left layout
+and did extensive improvements to the align family of environments
+and to the equation number handling in general.
+Michael Downes at the AMS served as coordinator
+for the efforts of Mittelbach, Sch\"opf, and Jones,
+and has contributed various bug fixes and additional refinements over time.
+Since 2016, the package has been maintained by the LaTeX Project
+with contributions by the above and David Carlisle.
+
+This package has been forked from \ctanpkg{amsmath}
+in accordance with the LPPL, particularly paragraph 6.
+The original package \ctanpkg{amsmath} is available
+at CTAN within \ctanpkg{latex-amsmath}.
+It uses the basic mechanisms for processing
+numbered multi-line equations as developed in \ctanpkg{amsmath}
+(environments |equation|, |align|, |gather|, |multline|, |gathered|, |aligned|
+and related), as well as code implementing these mechanisms.
+It differs from \ctanpkg{amsmath} in the following aspects:
+%
+\begin{itemize}
+\item
+The implementations of |split| and methods unrelated to multi-line equations
+and equation numbering have been dropped.
+\item
+Code has been restructured, macros have been renamed and extended.
+\item
+Numbering and horizontal adjustment schemes have been unified and extended.
+\item
+Options for math classes surrounding the alignment have been added.
+\item
+A punctuation scheme has been added.
+\item
+Vertical spacing has been redesigned.
+\item
+Optional parameters have been added to environments.
+\item
+Various configuration options and layout settings have been added.
+\item
+Cooperation with \ctanpkg{hyperref}, \ctanpkg{showkeys}
+and \ctanpkg{amsmath} has been included into the package.
+\end{itemize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Files and Installation}
+
+The package consists of the files:
+%
+\begin{center}
+\begin{tabular}{ll}
+ |README.txt| & readme file \\
+ |eqnlines.ins| & installation file \\
+ |eqnlines.dtx| & source file \\
+ |eqnlines.sty| & package file \\
+ |eqnlines-dev.sty| & package file (development version) \\
+ |eqnlines.pdf| & manual
+\end{tabular}
+\end{center}
+%
+The distribution consists of the files
+|README.txt|, |eqnlines.ins| and |eqnlines.dtx|.
+%
+\begin{itemize}
+\item
+Run (pdf)\LaTeX{} on |eqnlines.dtx|
+to compile the manual |eqnlines.pdf| (this file).
+\item
+Run \LaTeX{} on |eqnlines.ins| to create the package |eqnlines.sty|
+and the developers version |eqnlines-dev.sty|.
+Copy the file |eqnlines.sty| to an appropriate directory of your \LaTeX{}
+distribution, e.g.\ \textit{texmf-root}|/tex/latex/eqnlines|.
+\end{itemize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Related CTAN Packages}
+
+The package is related to other packages available at CTAN:
+%
+\begin{itemize}
+\item
+This package uses the package \ctanpkg{keyval}
+to process the options for the package, environments and macros.
+Compatibility with the \ctanpkg{keyval} package
+has been tested with v1.15 (2022/05/29).
+\item
+This package reproduces the math environments functionality
+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
+the math environments of \ctanpkg{amsmath} with a prefix |ams...|
+and overwrite them with its own implementations.
+Alternatively, \markpkg{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.
+\item
+The package \ctanpkg{mathtools}
+is a popular extension of the \ctanpkg{amsmath} package.
+This package incorporates some of the features and improvements
+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}
+is loaded before or after \ctanpkg{mathtools}.
+Some features like adding a box and emphasising
+equations via \ctanpkg{empheq} does not (yet) work.
+\item
+This package cooperates with the package \ctanpkg{hyperref}
+to create anchors and references within the electronic document.
+Compatibility with the \ctanpkg{hyperref} package
+has been tested with v7.01l (2024/11/05).
+\item
+This package supports the display of labels and references
+through the package \ctanpkg{showkeys}.
+Compatibility with the \ctanpkg{showkeys} package
+has been tested with v3.21 (2024/05/23).
+\end{itemize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Feature Suggestions}
+
+The following is a list of features for consideration
+towards future versions of this package.
+Their potential use may range between useful and niche;
+and their difficulty between easy and impossible:
+%
+\begin{itemize}
+\item
+a proper manual
+\item
+complete code documentation
+\item
+sample document
+\item
+pdf tagging
+\unskip\footnote{See \url{https://latex3.github.io/tagging-project/}}
+\end{itemize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Revision History}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\paragraph{v0.5:} 2025/02/25
+
+\begin{itemize}
+\item
+preview version published on CTAN
+\end{itemize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\appendix
+
+\settowidth\MacroIndent{\rmfamily\scriptsize 0000\ }
+
+\DocInput{eqnlines.dtx}
+
+\end{document}
+%</driver>
+% \fi
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \appendix
+% \raggedright
+%\iffalse
+%<*package>
+%\fi
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Implementation}
+%
+% The appendix documents the various components
+% of the present package.
+%
+% The code for the package is based on the \ctanpkg{amsmath} package,
+% see \secref{sec:copyright} and \secref{sec:credits}.
+% It was forked at version v2.17t dated 2024/11/05.
+% Most of the code was substantially redesigned
+% (macros renamed, reshuffled, enhanced),
+% but many of the underlying mechanisms were preserved.
+% The documentation thus contains excerpts
+% from the \ctanpkg{amsmath} package documentation
+% explaining some details of the implementation.
+%
+% Please note that the documentation is completed
+% only for few sections in the present version.
+% Various open issues are remarked.
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{General Support}
+%
+% In the following we describe general purpose supporting routines.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Development Messages}
+%
+% The package offers a version \markpkg{eqnlines-dev}
+% for development and debugging purposes.
+% It outputs extra information on the current location
+% within the code in order to track progress.
+% The extra lines for the development version
+% are indicated as `\textlangle dev\textrangle'
+% in the implementation documentation:
+% \begin{macrocode}
+%<dev>\def\eql at dev#1{\PackageInfo{eqnlines-dev}{#1}}
+%<dev>\def\eql at dev@start#1{\eql at dev{starting \string#1}}
+%<dev>\def\eql at dev@enter#1{\eql at dev{entering \string#1}}
+%<dev>\def\eql at dev@leave#1{\eql at dev{ leaving \string#1}}
+%<dev>\def\eql at dev@enterenv{\eql at dev{entering \@currenvir}}
+%<dev>\def\eql at dev@leaveenv{\eql at dev{ leaving \@currenvir}}
+%<dev>\def\eql at dev@in#1#2{\eql at dev{ \space within \string#1 #2}}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Look-Ahead in Alignment}
+%
+% Scanning for optional arguments |[|\ldots|]| or modifiers such as `|*|'
+% using the \LaTeX{} |\@ifnextchar| mechanism
+% has two challenges within aligned equations:
+% a square bracket or star may well be part of
+% the intended mathematical expression
+% and the look-ahead could trip upon an alignment character `|&|'
+% which inadvertently triggers to enter the next alignment column.
+%
+% \macro{\eql at ifnextchar@loose}
+% \macro{\eql at ifnextchar@tight}
+% To address the first challenge, we can force the special characters to
+% follow immediately the macro invocation.
+% For clarify, we copy \LaTeX's original |\@ifnextchar|
+% in |\kernel at ifnextchar| which skips over spaces as |\eql at ifnextchar@loose|.
+% We replicate the \ctanpkg{amsgen} version |\new at ifnextchar|
+% that does not skip over spaces as |\eql at ifnextchar@loose|.
+% The space before |#1| allows to look-ahead for spaces as well:
+% \begin{macrocode}
+\let\eql at ifnextchar@loose\kernel at ifnextchar
+\long\def\eql at ifnextchar@tight#1#2#3{%
+ \let\reserved at d= #1%
+ \def\reserved at a{#2}%
+ \def\reserved at b{#3}%
+ \futurelet\@let at token\eql at ifnch@tight
+}
+\def\eql at ifnch@tight{%
+ \ifx\@let at token\reserved at d
+ \let\reserved at b\reserved at a
+ \fi
+ \reserved at b
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\begingroup
+ \makeatother
+ \let\tmp=@%
+ \makeatletter
+ \global\let\eql at atxii\tmp
+\endgroup
+% \end{macrocode}
+%
+% \macro{\eql at ifnextgobble@...}
+% \macro{\eql at ifstar@...}
+% \macro{\eql at testopt@...}
+% \macro{\eql at teststaropt@...}
+% We introduce a collection of look-ahead macros
+% which do or do not skip over spaces.
+% The macros |\eql at ifstar@...| and |\eql at testopt@...|
+% replicate the \LaTeX{} counterparts |\@ifstar| and |\@testopt|.
+% The macros |\eql at ifnextgobble@...| work like |\@ifnextchar|,
+% but also gobble the specific character if found;
+% one might define |\eql at ifstar@...| as |\eql at ifnextgobble@...*|.
+% The macros |\eql at teststaropt@...| tests for combinations
+% of `|*|' and optional arguments |[|\ldots|]|:
+% \begin{macrocode}
+\long\def\eql at ifnextgobble@loose#1#2{\eql at ifnextchar@loose#1{\@firstoftwo{#2}}}
+\long\def\eql at ifnextgobble@tight#1#2{\eql at ifnextchar@tight#1{\@firstoftwo{#2}}}
+\long\def\eql at ifstar@loose#1{\eql at ifnextchar@loose*{\@firstoftwo{#1}}}
+\long\def\eql at ifstar@tight#1{\eql at ifnextchar@tight*{\@firstoftwo{#1}}}
+\long\def\eql at ifat@loose#1#2{\eql at ifnextgobble@loose{@}{#1}{%
+ \eql at ifnextgobble@loose\eql at atxii{#1}{#2}}}
+\long\def\eql at ifat@tight#1#2{\eql at ifnextgobble@tight{@}{#1}{%
+ \eql at ifnextgobble@tight\eql at atxii{#1}{#2}}}
+\long\def\eql at testopt@loose#1#2{\eql at ifnextchar@loose[{#1}{#1[{#2}]}}%]
+\long\def\eql at testopt@tight#1#2{\eql at ifnextchar@tight[{#1}{#1[{#2}]}}%]
+\long\def\eql at teststaropt@loose#1#2#3{%
+ \eql at ifstar@loose{\eql at testopt@loose{#1}{#3}}{\eql at testopt@loose{#2}{#3}}}
+\long\def\eql at teststaropt@tight#1#2#3{%
+ \eql at ifstar@tight{\eql at testopt@tight{#1}{#3}}{\eql at testopt@tight{#2}{#3}}}
+% \end{macrocode}
+%
+% \macro{\eql at spbgroup}
+% \macro{\eql at spegroup}
+% \macro{\eql at srbgroup}
+% \macro{\eql at sregroup}
+% The second challenge is addressed by enclosing the look-ahead
+% in spurious groups
+% \unskip\footnote{See
+% \url{https://www.latex-project.org/cgi-bin/ltxbugs2html?pr=latex/3040},\\
+% \url{https://www.latex-project.org/cgi-bin/ltxbugs2html?pr=amslatex/1834} and\\
+% \url{https://tex.stackexchange.com/questions/9897/showcase-of-brace-tricks-egroup-iffalse-fi-etc}.
+% }
+% which protect against triggering `|&|'.
+% The macros |\eql at spbgroup| and |\eql at spegroup| open and close a
+% spurious group.
+% For some reason, the look-ahead mechanism requires further protections
+% by inserting |\relax| at the beginning
+% and by resetting |\@let at token| at the end.
+% These adjustments are included
+% in the macros |\eql at srbgroup| and |\ers at spegroup|:
+% \begin{macrocode}
+\def\eql at spbgroup{\iffalse{\fi\ifnum0=`}\fi}
+\def\eql at spegroup{\ifnum0=`{\fi\iffalse}\fi}
+\def\eql at srbgroup{\relax\iffalse{\fi\ifnum0=`}\fi}
+\def\eql at sregroup{\let\@let at token\relax\ifnum0=`{\fi\iffalse}\fi}
+% \end{macrocode}
+%
+% \macro{\eql at ampprotect}
+% \macro{\eql at ampprotecttwo}
+% The macros |\eql at ampprotect| and |\eql at ampprotecttwo|
+% inject the opening and closing of spurious groups
+% into the look-ahead mechanism:
+% \begin{macrocode}
+\long\def\eql at ampprotect#1#2{\eql at srbgroup#1{\eql at sregroup#2}}
+\long\def\eql at ampprotecttwo#1#2#3{%
+ \eql at srbgroup#1{\eql at sregroup#2}{\eql at sregroup#3}}
+% \end{macrocode}
+%
+% \macro{... at ampsafe}
+% We introduce a collection of `|&|'-safe look-ahead macros:
+% \begin{macrocode}
+\def\eql at ifnextchar@loose at ampsafe#1{%
+ \eql at ampprotecttwo{\eql at ifnextchar@loose#1}}
+\def\eql at ifnextchar@tight at ampsafe#1{%
+ \eql at ampprotecttwo{\eql at ifnextchar@tight#1}}
+\def\eql at ifstar@loose at ampsafe{\eql at ampprotecttwo\eql at ifstar@loose}
+\def\eql at ifstar@tight at ampsafe{\eql at ampprotecttwo\eql at ifstar@tight}
+\def\eql at testopt@loose at ampsafe{\eql at ampprotect\eql at testopt@loose}
+\def\eql at testopt@tight at ampsafe{\eql at ampprotect\eql at testopt@tight}
+\def\eql at teststaropt@loose at ampsafe{\eql at ampprotecttwo\eql at teststaropt@loose}
+\long\def\eql at teststaropt@tight at ampsafe{%
+ \eql at ampprotecttwo\eql at teststaropt@tight}
+% \end{macrocode}
+%
+% \macro{\eql at amproof}
+% \macro{\eql at amprevert}
+% We may want to replace \LaTeX's definitions |\@ifnextchar|,
+% |\@ifstar| and |\@testopt| to respect `|&|' characters
+% within aligned equations.
+% This might make unrelated definitions with optional arguments
+% and starred variants more robust in this context.
+% The macro |\eql at amproof| overwrites the original definitions,
+% and |\eql at amprevert| reverts the changes:
+% \begin{macrocode}
+\let\eql at ifnextchar@org\@ifnextchar
+\let\eql at ifstar@org\@ifstar
+\let\eql at testopt@org\@testopt
+\def\eql at amprevert{%
+ \let\@ifnextchar\eql at ifnextchar@org
+ \let\@testopt\eql at testopt@org
+ \let\@ifstar\eql at ifstar@org
+}
+\def\eql at ampproof{%
+ \let\@ifnextchar\eql at ifnextchar@loose at ampsafe
+ \let\@testopt\eql at testopt@loose at ampsafe
+ \let\@ifstar\eql at ifstar@loose at ampsafe
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Error Messages}
+%
+% \macro{\eql at error}
+% \macro{\eql at warning}
+% Main error and warning message function for the package:
+% \begin{macrocode}
+\def\eql at error#1{\PackageError{eqnlines}{#1}{}}
+\def\eql at warning{\PackageWarning{eqnlines}}
+% \end{macrocode}
+%
+% \macro{\eql at error@nomathmode}
+% \macro{\eql at error@mathmode}
+% Error messages concerning math mode:
+% \begin{macrocode}
+\def\eql at error@nomathmode#1{\eql at error{#1 allowed only in math mode}}
+\def\eql at error@mathmode#1{\eql at error{#1 allowed only in paragraph mode}}
+% \end{macrocode}
+%
+% \macro{\eql at warn@label at unused}
+% \macro{\eql at warn@label at multiple}
+% \macro{\eql at warn@tag at unused}
+% \macro{\eql at warn@tag at multiple}
+% Warning messages concerning unused and multiply declared labels and tags:
+% \begin{macrocode}
+\def\eql at warn@label at unused{\eql at warning{Unused equation \string\label:
+ label `\eql at nextlabel' will be lost}}
+\def\eql at warn@label at multiple#1{\eql at warning{Multiple equation \string\label's:
+ previous label '#1' will be lost}}
+\def\eql at warn@tag at unused{\eql at warning{Unused equation \string\tag:
+ tag declaration will be lost}}
+\def\eql at warn@tag at multiple{\eql at warning{Multiple equation \string\tag's:
+ previous tag declaration will be lost}}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{amsmath Integration}
+%
+% \macro{\eql at amsmath@after}
+% \macro{\eql at amsmath@futurebefore}
+% We need to overwrite certain macros from \ctanpkg{amsmath}.
+% The method |\eql at amsmath@after| executes argument |#1|
+% after loading \ctanpkg{amsmath} is loaded.
+% 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
+% \begin{macrocode}
+\def\eql at amsmath@after#1{\AddToHook{package/amsmath/after}{#1}}
+\def\eql at amsmath@futurebefore#1{%
+ \@ifpackageloaded{amsmath}{}{\AddToHook{package/amsmath/before}{#1}}}
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Parameters and Registers}
+%
+% In the following, we collect parameter and register definitions.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Supporting Definitions}
+%
+% \ebool{\eql at false}
+% \ebool{\eql at true}
+% Rather than the standard \LaTeX{} scheme of
+% |\|\textit{xxx}|false|, |\|\textit{xxx}|true| and |\if|\textit{xxx}
+% for boolean variables \textit{xxx},
+% we use a scheme where |\|\textit{xxx}
+% is either undefined or defined (to an empty macro)
+% and is tested against by the $\varepsilon$-\TeX{}
+% conditional |\ifdefined\|\textit{xxx}.
+% In order to make the scheme more tangible,
+% we define the two expected values for boolean variables:
+% \begin{macrocode}
+\let\eql at false\@undefined
+\let\eql at true\@empty
+% \end{macrocode}
+%
+% \lskip{\eql at regunset@}
+% \macro{\eql at regsetdelayed}
+% Some dimension registers need to be initialised to values
+% which may depend on fonts and styles, e.g.\ |1em|.
+% As |\@mathmargin| of \ctanpkg{amsmath},
+% we use the special value |-1sp| to indicate that this
+% register should be initialised at the end of the preamble,
+% and we define a skip register to hold this value.
+% The macro |\eql at regsetdelayed| performs the delayed initialisation:
+% \begin{macrocode}
+\newskip\eql at regunset@
+\eql at regunset@-1sp\relax
+\def\eql at regsetdelayed#1#2{%
+ #1\eql at regunset@\relax
+ \AtBeginDocument{%
+ \ifdim#1=\eql at regunset@
+ \setlength#1{#2}%
+ \fi
+ }%
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Parameters}
+%
+% \TODO maybe sort parameters into sections
+% \TODO or sort parameters in sections here
+%
+% \ebool{\eql at tagsleft}
+% The boolean parameter |\eql at tagsleft|
+% specifies whether the tags are placed at the left or right margin:
+% \begin{macrocode}
+\let\eql at tagsleft\eql at false
+% \end{macrocode}
+%
+% \ebool{\eql at flushleft}
+% The boolean parameter |\eql at flushleft|
+% specifies whether the layout is flush left or centered:
+% \begin{macrocode}
+\let\eql at flushleft\eql at false
+% \end{macrocode}
+%
+% \ldimen{\eql at flushleftmargin@}
+% \ldimen{\eql at flushleftmarginmin@}
+% \ldimen{\eql at flushleftmarginmax@}
+% The default width of the left margin in flush-left mode
+% is specified by |\eql at flushleftmargin@|.
+% It may be pushed down to |\eql at flushleftmarginmin@|
+% and up to |\eql at flushleftmarginmax@|:
+% \begin{macrocode}
+\newdimen\eql at flushleftmargin@
+\newdimen\eql at flushleftmarginmin@
+\newdimen\eql at flushleftmarginmax@
+\eql at regsetdelayed\eql at flushleftmargin@\leftmargini
+\eql at flushleftmarginmin@\z@
+\eql at flushleftmarginmax@.5\maxdimen
+% \end{macrocode}
+%
+% \ldimen{\eql at tagmargin@}
+% The intended margin width for tags in centered layout
+% is specified by |\eql at tagmargin@|:
+% \begin{macrocode}
+\newdimen\eql at tagmargin@
+\eql at tagmargin@\z@
+% \end{macrocode}
+%
+% \ldimen{\eql at indent@}
+% The currently selected indentation width is speficied by |\eql at indent@|.
+% This dimension register is set to the macro |\eql at indent@val|
+% when entering the equation environments:
+% \begin{macrocode}
+\newdimen\eql at indent@
+\def\eql at indent@val{2em}
+% \end{macrocode}
+%
+% \ldimen{\eql at paddingleft@}
+% \ldimen{\eql at paddingright@}
+% The padding of an equation (column) is specified by
+% |\eql at paddingleft@| and |\eql at paddingright@|.
+% These dimension registers are set to the macros
+% |\eql at paddingleft@val| and |\eql at paddingright@val|, respectively,
+% when entering the equation environments:
+% \begin{macrocode}
+\newdimen\eql at paddingleft@
+\newdimen\eql at paddingright@
+\def\eql at paddingleft@val{0pt}
+\def\eql at paddingright@val{0pt}
+% \end{macrocode}
+%
+% \ebool{\eql at paddingmax}
+% The boolean register |\eql at paddingmax| specifies
+% whether the full line should be used for padding:
+% \begin{macrocode}
+\let\eql at paddingmax\eql at false
+% \end{macrocode}
+%
+% \macro{\eql at box@marginleft}
+% \macro{\eql at box@marginright}
+% The macros |\eql at box@marginleft| and |\eql at box@marginright|
+% specify the margin surrounding equation boxes:
+% \begin{macrocode}
+\def\eql at box@marginleft{\z at skip}
+\def\eql at box@marginright{\z at skip}
+% \end{macrocode}
+%
+% \macro{\eql at box@colsep}
+% The macro |\eql at box@colsep| specifies the intercolumn separation
+% for equation boxes:
+% \begin{macrocode}
+\def\eql at box@colsep{2em}
+% \end{macrocode}
+%
+% \macro{\eql at spread}
+% The extra spread of equation lines is specified by |\eql at spread|:
+% \begin{macrocode}
+\def\eql at spread{\jot}
+% \end{macrocode}
+%
+% \ldimen{\eql at tagfuzz@}
+% The value |\eql at tagfuzz@| specifies the margin of error for
+% comparing whether a tag fits a given equation line.
+% We should not expect rounding errors in the fixed point arithmetic of \TeX,
+% nevertheless:
+% \TODO probably do not need this due to fixed point arithmetic.
+% \begin{macrocode}
+\newdimen\eql at tagfuzz@
+\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:
+% \begin{macrocode}
+\newskip\eql at abovedisplayskip@
+\newskip\eql at belowdisplayskip@
+% \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
+% 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.
+% Value |0| turns this feature off,
+% value |1| reduces the glue above the equation,
+% 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@
+% \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
+% \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
+% \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
+% \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@}
+% \end{macrocode}
+%
+% \lskip{\eql at abovedisplaymedskip@}
+% \lskip{\eql at belowdisplaymedskip@}
+% The surrounding glue for an equation with reduced spacing
+% is given by |\eql at abovedisplaymedskip@| and |\eql at belowdisplaymedskip@|:
+% \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@
+% \end{macrocode}
+%
+% \ldimen{\eql at colsepmin@}
+% \ldimen{\eql at colsepmax@}
+% \macro{\eql at colsepmin@val}
+% \macro{\eql at colsepmax@val}
+% The minimum and maximum intercolumn separatation is specified
+% by |\eql at colsepmin@| and |\eql at colsepmax@|.
+% These dimension registers are set to the macros
+% |\eql at colsepmin@val| and |\eql at colsepmax@val|, respectively,
+% when entering the equation environments
+% to allow font-dependent values including \ctanpkg{calc} evaluations:
+% \begin{macrocode}
+\newdimen\eql at colsepmin@
+\newdimen\eql at colsepmax@
+\def\eql at colsepmin@val{1em}
+\def\eql at colsepmax@val{.5\maxdimen}
+% \end{macrocode}
+%
+% \ldimen{\eql at tagwidthmin@}
+% The minimum tag width is specified by |\eql at tagwidthmin@|:
+% \begin{macrocode}
+\newdimen\eql at tagwidthmin@
+\eql at tagwidthmin@\z@
+% \end{macrocode}
+%
+% \ldimen{\eql at tagsepmin@}
+% The minimum separation between an equation and its tag
+% is given by |\eql at tagsepmin@|.
+% \TeX's built-in value is half a quad in
+% font number 2 (|.5\fontdimen6\textfont\tw@|).
+% As the tag is processed in text mode, we use |0.5em| instead.
+% \TODO may set within environment
+% \begin{macrocode}
+\newdimen\eql at tagsepmin@
+\eql at regsetdelayed\eql at tagsepmin@{.5em}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Registers}
+%
+% \tcounter{\eql at row@}
+% \tcounter{\eql at totalrows@}
+% |\eql at row@| counts the present row (1-based)
+% and |\eql at totalrows@| holds the total number of rows:
+% \begin{macrocode}
+\newcount\eql at row@
+\newcount\eql at totalrows@
+% \end{macrocode}
+%
+% \ldimen{\eql at colsep@}
+% The dimension of the intercolumn separation for align environments
+% is stored in |\eql at colsep@|:
+% \begin{macrocode}
+\newdimen\eql at colsep@
+% \end{macrocode}
+%
+% \ldimen{\eql at display@firstavail@}
+% \macro{\eql at display@firstavail at set}
+% The unused space on the first line of an alignment is stored in
+% |\eql at display@firstavail@| for comparison against
+% |\predisplaysize| and determining short skip mode of display equations.
+% It it convenient to set it via |\eql at display@firstavail at set|
+% provided that we are on the first line:
+% \begin{macrocode}
+\newdimen\eql at display@firstavail@
+\def\eql at display@firstavail at set#1{%
+ \ifnum\eql at row@=\@ne
+ \global\eql at display@firstavail@#1%
+ \fi
+}
+% \end{macrocode}
+%
+% \tcounter{\eql at raisetag@firstlast@}
+% The counter stores whether the tag one first/last line is
+% raised/lowered as |1|/|2| (or |3| for both).
+% This implies a different vskip corresponding to the
+% mostly empty line:
+% \begin{macrocode}
+\newcount\eql at raisetag@firstlast@
+% \end{macrocode}
+%
+% \lbox{\eql at fieldbox@}
+% \lbox{\eql at tagbox@}
+% \ldimen{\eql at fieldwidth@}
+% \ldimen{\eql at tagwidth@}
+% The box |\eql at fieldbox@| holds the present alignment component
+% and |\eql at tagbox@| the tag for the present line.
+% The corresponding dimensions |\eql at fieldwidth@| and |\eql at tagwidth@|
+% hold their widths:
+% \begin{macrocode}
+\newbox\eql at fieldbox@
+\newbox\eql at tagbox@
+\newdimen\eql at fieldwidth@
+\newdimen\eql at tagwidth@
+% \end{macrocode}
+%
+% \ldimen{\eql at line@height@}
+% \ldimen{\eql at line@depth@}
+% The dimension registers |\eql at line@height@| and |\eql at line@depth@| keep
+% track of the height and depth of the present line in an alignment:
+% \begin{macrocode}
+\newdimen\eql at line@height@
+\newdimen\eql at line@depth@
+% \end{macrocode}
+%
+% \lcond{\ifmeasuring@}
+% All display environments get typeset twice -- once during a
+% ``measuring'' phase and then again during a ``production'' phase.
+% We reuse the original \ctanpkg{amsmath} definition |\ifmeasuring@|
+% to determine which case we're in,
+% so we and other packages may take appropriate action.
+% It does not hurt to define this conditional in any case.
+% We should tell \ctanpkg{hyperref} about measuring processes
+% as we're not \ctanpkg{amsmath} and not being catered for:
+% \begin{macrocode}
+\newif\ifmeasuring@
+\AddToHook{package/hyperref/after}{
+ \ifdefined\Hy at ifnotmeasuring
+ \renewcommand\Hy at ifnotmeasuring[1]{\ifmeasuring@\else#1\fi}
+ \fi
+}
+% \end{macrocode}
+%
+% \lcond{\if at display}
+% \ctanpkg{amsmath} defines the conditional |\||if at display|
+% to test whether we're in a display equation
+% including the inner math parts of equation blocks.
+% We provide it in case \ctanpkg{amsmath} is absent,
+% and initialise it:
+% \begin{macrocode}
+\ifdefined\@displaytrue\else
+\everydisplay\expandafter{\the\everydisplay\@displaytrue}
+\fi
+\newif\if at display
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Hooks}
+%
+% \macro{\eql at hook@...}
+% For what it's worth, we define a couple of entry points
+% where one might hook into the equations typesetting framework.
+% The \LaTeX{} hook framewould would be more versatile,
+% but as the purpose of these hooks is rather unclear at the moment,
+% we make this as efficient as it could get:
+% \TODO may add a few more hooks
+% \begin{macrocode}
+\let\eql at hook@blockbefore\@empty
+\let\eql at hook@blockafter\@empty
+\let\eql at hook@blockin\@empty
+\let\eql at hook@blockout\@empty
+\let\eql at hook@linein\@empty
+\let\eql at hook@lineout\@empty
+\let\eql at hook@colin\@empty
+\let\eql at hook@colout\@empty
+\let\eql at hook@eqin\@empty
+\let\eql at hook@eqout\@empty
+\let\eql at hook@innerleft\@empty
+\let\eql at hook@innerright\@empty
+\let\eql at hook@innerlead\@empty
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Punctuation}
+%
+% The equations environments supply an automatic punctuation scheme
+% which allows to define a default punctuation
+% at the end of each column, line and equation block.
+%
+% \macro{\eql at punct@col}
+% \macro{\eql at punct@line}
+% \macro{\eql at punct@block}
+% These macros store the punctuation character for columns, lines and blocks.
+% A value |\relax| indicates that the punctuation should be handed
+% down to the next lower level:
+% \begin{macrocode}
+\let\eql at punct@col\@empty
+\let\eql at punct@line\relax
+\let\eql at punct@block\relax
+% \end{macrocode}
+%
+% \macro{\eql at punct@sep}
+% This macro stores the separation to be applied
+% before the punctuation (unless it is empty):
+% \begin{macrocode}
+\let\eql at punct@sep\relax
+% \end{macrocode}
+%
+% \imacro{\eqnpunctcol}
+% \imacro{\eqnpunctline}
+% \imacro{\eqnpunctmain}
+% \imacro{\eqnpunct}
+% Set the punction for columns, lines and blocks.
+% Note that the macro |\eqnpunct| sets the punctuation for the
+% next equation block (only).
+% Starred versions clear the punctuation for the respectively levels:
+% \begin{macrocode}
+\def\eqnpunctcol{\eql at ifstar@tight\eql at punct@col at setrelax\eql at punct@col at set}
+\def\eql at punct@col at set#1{\def\eql at punct@col{#1}\ignorespaces}
+\def\eql at punct@col at setrelax{\let\eql at punct@col\@empty\ignorespaces}
+\def\eqnpunctline{\eql at ifstar@tight\eql at punct@line at setrelax\eql at punct@line at set}
+\def\eql at punct@line at set#1{\def\eql at punct@line{#1}\ignorespaces}
+\def\eql at punct@line at setrelax{\let\eql at punct@line\relax\ignorespaces}
+\def\eqnpunctmain{\eql at ifstar@tight\eql at punct@main at setrelax\eql at punct@main at set}
+\def\eql at punct@main at set#1{\eqnlinesset{punct={#1}}\ignorespaces}
+\def\eql at punct@main at setrelax{\eqnlinesset{punct*}\ignorespaces}
+\def\eqnpunct{\eql at ifstar@tight\eql at punct@next at setrelax\eql at punct@next at set}
+\def\eql at punct@next at set#1{\eqnaddopt{punct={#1}}\ignorespaces}
+\def\eql at punct@next at setrelax{\eqnaddopt{punct*}\ignorespaces}
+% \end{macrocode}
+%
+% \macro{\eql at punct@apply at col}
+% Output the punctuation for the present column.
+% If non-empty, prepend some separation.
+% Clear the punctuation so that no further
+% column punctuation is output within the current group:
+% \begin{macrocode}
+\def\eql at punct@apply at col{%
+ \ifx\eql at punct@col\@empty\else
+ \eql at punct@sep
+ \eql at punct@col
+ \let\eql at punct@col\@empty
+ \fi
+}
+% \end{macrocode}
+%
+% Output the punctuation currently set for lines unless disabled.
+% Alike |\eql at punct@apply at col| prevent further output
+% of punctuations for lines and columns within the current group:
+% \macro{\eql at punct@apply at line}
+% \begin{macrocode}
+\def\eql at punct@apply at line{%
+ \ifx\eql at punct@line\relax
+% \TODO hand down immediately?
+ \else
+ \ifx\eql at punct@line\@empty\else
+ \eql at punct@sep
+ \eql at punct@line
+ \fi
+ \let\eql at punct@line\relax
+ \let\eql at punct@col\@empty
+ \fi
+}
+% \end{macrocode}
+%
+% \macro{\eql at punct@apply at block}
+% Outputs the punctuation for the current equation block unless disabled
+% in analogy to |\eql at punct@apply at line|:
+% \begin{macrocode}
+\def\eql at punct@apply at block{%
+ \ifx\eql at punct@block\relax
+% \TODO hand down immediately?
+ \else
+ \ifx\eql at punct@block\@empty\else
+ \eql at punct@sep
+ \eql at punct@block
+ \fi
+ \let\eql at punct@block\relax
+ \let\eql at punct@line\relax
+ \let\eql at punct@col\@empty
+ \fi
+}
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Math Classes at Alignment}
+%
+% The following describes the adjustment of math classes
+% surrounding the alignment marker.
+%
+% \macro{\eql at class@innerright at sel@}
+% Select between |\eql at class@innerlead| and |\eql at class@innerright|
+% depending on whether the left part of the aligned column is empty:
+% \begin{macrocode}
+\def\eql at class@innerright at sel@{%
+ \ifdim\eql at fieldwidth@=\z@
+ \eql at class@innerlead
+ \else
+ \eql at class@innerright
+ \fi
+}
+% \end{macrocode}
+%
+% \macro{\eql at class@innerleft at set}
+% \macro{\eql at class@innerright at set}
+% \macro{\eql at class@innerlead at set}
+% Set the left, right and leading math classes.
+% Setting the right math class disables the leading math class,
+% so the leading math class must be specified after the right one:
+% \begin{macrocode}
+\def\eql at class@innerleft at set#1{%
+ \def\eql at class@innerleft{#1}%
+}
+\def\eql at class@innerright at set#1{%
+ \def\eql at class@innerright{#1}%
+ \let\eql at class@innerright at sel\eql at class@innerright
+}
+\def\eql at class@innerlead at set#1{%
+ \def\eql at class@innerlead{#1}%
+ \let\eql at class@innerright at sel\eql at class@innerright at sel@
+}
+% \end{macrocode}
+%
+% \macro{\eql at class@ampeq}
+% \macro{\eql at class@eqamp}
+% We define two standard combinations of math classes
+% intended to be used with `|&=|' (|ampeq|) or `|=&|' (|eqamp|).
+% The default setting is `|&=|' (|ampeq|):
+% \begin{macrocode}
+\def\eql at class@ampeq{%
+ \eql at class@innerleft at set{}%
+ \eql at class@innerright at set{{}}%
+}
+\def\eql at class@eqamp{%
+ \eql at class@innerleft at set{\mathrel{}}%
+ \eql at class@innerright at set{\mathrel{}}%
+ \eql at class@innerlead at set{{}}%
+}
+\eql at class@ampeq
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Equations Box Environment}
+%
+% \TODO describe
+%
+% \TODO fixed width version (works only towards intercolumn stretch)?
+%
+% \macro{\eql at box@cr}
+% \begin{macrocode}
+\protected\def\eql at box@cr{%
+ \eql at ampprotect\eql at testopt@tight\eql at box@cr@\z@
+}
+\def\eql at box@cr@[#1]{%
+ \eql at punct@apply at line
+ \eql at hook@lineout
+ \eql at box@lastfield
+ \cr
+ \noalign{%
+ \setlength\skip@{#1}%
+ \vskip\skip@
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\let\eql at box@box\vcenter
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at box@lastfield at odd{%
+ &\omit
+ \kern-\wd\eql at fieldbox@
+ \box\eql at fieldbox@
+ \hfil
+ &\omit\kern-\eql at colsep@
+}%
+\def\eql at box@lastfield at even{&\omit\kern-\eql at colsep@}
+\def\eql at box@lastfield at lines{&\omit\kern-2\eql at colsep@}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at box@open at align{%
+% \TODO templates
+ \let\eql at box@lastfield\@empty
+ \eql at halign@init{%
+%<dev>\eql at dev{starting new line}%
+}%
+ \tabskip\z at skip
+ \halign\bgroup
+ &%
+ \let\eql at box@lastfield\eql at box@lastfield at odd
+ \global\setbox\eql at fieldbox@\hbox{%
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at class@innerleft
+ \eql at hook@innerleft
+ $%
+ }%
+ \hfil
+ \kern\wd\eql at fieldbox@
+ \tabskip\z at skip
+ &%
+ \eql at fieldwidth@\wd\eql at fieldbox@
+ \kern-\eql at fieldwidth@
+ \box\eql at fieldbox@
+ \let\eql at box@lastfield\eql at box@lastfield at even
+ \llap{\unhbox\eql at fieldbox@}%
+ \hbox{%
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@innerright
+ \eql at class@innerright at sel
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ $%
+ }%
+ \hfil
+ \tabskip\eql at colsep@
+ \crcr
+ \noalign{%
+ \eql at hook@blockbefore
+ }%
+ \eql at hook@blockin
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at box@open at lines{%
+% \TODO templates
+ \let\shoveleft\eql at adjust@shoveleft
+ \let\shovecenter\eql at adjust@shovecenter
+ \let\shoveright\eql at adjust@shoveright
+ \let\eql at box@lastfield\eql at box@lastfield at lines
+ \eql at halign@init{%
+%<dev>\eql at dev{starting line \the\eql at row@}%
+ \global\advance\eql at row@\@ne
+ }%
+ \tabskip\z at skip
+ \halign\bgroup
+ &%
+ \eql at shape@pos@\m at ne
+ \setbox\eql at fieldbox@\hbox{%
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ $%
+ }%
+ \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@
+ \crcr
+ \noalign{%
+ \eql at hook@blockbefore
+ }%
+ \eql at hook@blockin
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at box@close{%
+ \ifvmode\else
+ \global\eql at totalrows@\eql at row@
+ \eql at punct@apply at block
+ \eql at box@cr@[\z at skip]%
+ \fi
+ \crcr
+ \noalign{%
+ \eql at hook@blockafter
+ }%
+ \egroup
+}
+% \end{macrocode}
+%
+% \macro{\eql at box@start}
+% \begin{macrocode}
+\def\eql at box@start{%
+ \relax
+ \ifmmode
+ \let\eql at box@endmath\@empty
+ \else
+ $\let\eql at box@endmath=$%
+ \fi
+ \eql at nextopt@process{equationsbox}%
+ \let\eql at punct@block\eql at punct@main
+ \let\eql at punct@main\relax
+ \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 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@
+ \eql at box@box\bgroup
+ \eql at display@leave
+ \let\\\eql at box@cr
+ \ifdefined\eql at box@mode at lines
+ \expandafter\eql at box@open at lines
+ \else
+ \expandafter\eql at box@open at align
+ \fi
+}
+% \end{macrocode}
+%
+% \macro{\eql at box@end}
+% \begin{macrocode}
+\newcommand{\eql at box@end}{%
+ \eql at box@close
+ \egroup
+ \setlength\skip@\eql at box@marginright
+ \hskip\skip@
+ \eql at stack@restore
+ \eql at box@endmath
+}
+% \end{macrocode}
+%
+% \environment{equationsbox}
+% \begin{macrocode}
+\newenvironment{equationsbox}{%
+%<dev>\eql at dev@enterenv
+ \eql at ampprotect\eql at box@testall\eql at box@start
+}{%
+ \eql at box@end
+%<dev>\eql at dev@leaveenv
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at box@testall{\eql at box@testtilde}
+\def\eql at box@testtilde#1{%
+ \eql at ifnextgobble@tight~%
+ {\eqnaddopt{lines}\eql at box@testopt{#1}}%
+ {\eql at box@testopt{#1}}}
+\def\eql at box@testopt#1{%
+ \eql at ifnextchar@tight[%]
+ {\eql at box@addopt{#1}}%
+ {#1}}
+\def\eql at box@addopt#1[#2]{\eqnaddopt{#2}#1}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at mode@aligned{\let\eql at box@mode at lines\eql at false}
+\def\eql at mode@lined{\let\eql at box@mode at lines\eql at true}
+\eql at mode@aligned
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{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}
+%
+% \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@setmake#1{%
+ \def\maketag@@@##1{\hbox{\m at th\normalfont#1}}%
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at tag@setform@#1{%
+ \def\tagform@##1{\maketag@@@{#1}}%
+}
+\def\eql at tag@setform#1#2#3{%
+ \def\tagform@##1{\maketag@@@{#1\ignorespaces#2\unskip\@@italiccorr#3}}%
+}
+% \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{raise tags}
+%
+% \ldimen{\eql at raisetag@amount@}
+% \begin{macrocode}
+\newdimen\eql at raisetag@amount@
+% \end{macrocode}
+%
+% \macro{\raisetag}
+% \begin{macrocode}
+\def\eql at raisetag@default{%
+ \eql at warning{\string\raisetag\space not allowed here}
+ \@gobble
+}
+% \end{macrocode}
+%
+% \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
+% \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@}%
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Showkeys Integration}
+%
+% \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@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
+ \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@printlabel at right{%
+ \ifx\eql at SK@lab\relax\else
+ \rlap{\kern\marginparsep\eql at SK@lab}%
+ \eql at SK@lab at relax
+ \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
+ \fi
+ }
+ \def\eql at SK@printlabel at line{%
+ \ifx\eql at SK@lab\relax\else
+ \dimen@\prevdepth
+ \nointerlineskip
+ \ifdefined\eql at tagsleft
+ \llap{%
+ \eql at SK@lab
+ \kern\marginparsep
+ }%
+ \eql at SK@lab at relax
+ \else
+ \rlap{%
+ \dimen@\displaywidth
+ \advance\dimen@\marginparsep
+ \kern\dimen@
+ \eql at SK@lab
+ }%
+ \fi
+ \eql at SK@lab at relax
+ \prevdepth\dimen@
+ \fi
+ }
+ \let\eql at label@org\label
+ \def\eql at label@clean{\let\SK@\@gobbletwo\eql at label@org}
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Labels}
+%
+% \TODO describe
+%
+% \begin{macrocode}
+% \TODO implement (via label[] or labelname similar to label/tag)
+\let\eql at nextlabel\@undefined
+\def\eql at labelname@default{[equation]}
+% \end{macrocode}
+%
+% \macro{\eql at label@org}
+% \begin{macrocode}
+\let\eql at label@org\label
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Tags}
+%
+% \TODO describe
+%
+% \begin{macrocode}
+\let\eql at nexttag\@undefined
+% \end{macrocode}
+%
+% \macro{\eql at tag@default}
+% \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}
+%
+% \macro{\eql at tag@gobble}
+% \TODO ifnextchar, gobbletwo?
+% \begin{macrocode}
+\def\eql at tag@gobble@[#1]#2{}
+\def\eql at tag@gobble{%
+ \eql at ampprotecttwo\eql at teststaropt@tight\eql at tag@gobble@\eql at tag@gobble@{}}
+% \end{macrocode}
+%
+% \macro{\eql at nexttag}
+% \macro{\eql at tag@makenext}
+% \macro{\eql at tag@makenext@@}
+% \macro{\eql at tag@makenext@@@}
+% \TODO can amsmath handle also counter refstepcounter in tags?
+%
+% hyperref anchors
+% \begin{macrocode}
+\let\eql at Hy@anchor\@gobble
+\AddToHook{package/hyperref/after}{
+ \def\eql at Hy@anchor#1{%
+ \Hy at raisedlink{\hyper at anchor{#1}}%
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at tag@makenext{%
+ \eql at ampprotecttwo\eql at teststaropt@tight
+ \eql at tag@makenext at star\eql at tag@makenext@\eql at tag@text
+}
+% \end{macrocode}
+%
+% \TODO not sure about |\protected at edef\eql at tag@text| was |\def| only
+% \begin{macrocode}
+\def\eql at tag@makenext at star[#1]#2{%
+ \global\def\eql at nexttag{%
+ \let\eql at tag@tool\maketag@@@
+ \protected at edef\eql at tag@text{#2}%
+ \protected at edef\eql at tag@label{#1}%
+ }%
+}
+\def\eql at tag@makenext@[#1]#2{%
+ \global\def\eql at nexttag{%
+ \let\eql at tag@tool\tagform@
+ \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}%
+ }%
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Anchors}
+%
+% \TODO describe
+%
+% \tcounter{\eql at numbering@refcount@}
+% \begin{macrocode}
+\newcount\eql at numbering@refcount@
+\eql at numbering@refcount@\z@
+% \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 Hy@anchor\eql at label@currentHref
+ \global\edef\eql at label@thepage{\thepage}%
+}
+\def\eql at numbering@setblockanchor{%
+ \let\thepage\eql at label@thepage
+ \let\@currentHref\eql at label@currentHref
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Tag Composition}
+%
+% \TODO describe
+%
+% \macro{\eql at compose@anchor}
+% \macro{\eql at compose@tag}
+% \macro{\eql at compose@label}
+% \begin{macrocode}
+\def\eql at compose@anchor{%
+ \ifdefined\eql at nexttag
+ \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 Hy@anchor\@currentHref
+ \global\let\eql at nexttag\@undefined
+ \else
+ \refstepcounter{equation}%
+ \let\eql at tag@tool\tagform@
+ \edef\eql at tag@text{\theequation}%
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at compose@label{%
+ \ifmeasuring@\else
+ \eql at SK@lab at relax
+ \ifdefined\eql at nextlabel
+ \ifnum
+ \ifnum\eql at numbering@target@<\z@
+ \eql at row@
+ \else
+ \eql at numbering@target@
+ \fi=\eql at row@
+ \eql at compose@label@
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at compose@label@{%
+ \eql at SK@makelabel\eql at nextlabel
+ \begingroup
+ \ifnum\eql at numbering@target@=\eql at row@
+ \eql at numbering@setblockanchor
+ \fi
+ \let\@currentlabelname\eql at labelname@default
+ \expandafter\eql at label@clean\expandafter{\eql at nextlabel}%
+ \global\let\eql at nextlabel\@undefined
+ \endgroup
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at compose@tag{%
+ \eql at tag@tool\eql at tag@text
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at compose@print{%
+ \eql at compose@anchor
+ \eql at compose@label
+ \ifdefined\eql at tagsleft
+ \eql at SK@printlabel at left
+ \eql at compose@tag
+ \else
+ \eql at compose@tag
+ \eql at SK@printlabel at right
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at compose@measure{%
+ \ifdefined\eql at nexttag
+ \eql at nexttag
+ \eql at tag@tool\eql at tag@text
+ \else
+ \stepcounter{equation}%
+ \tagform@\theequation
+ \fi
+ \ifnum\eql at numbering@target@<\z@
+ \global\let\eql at nextlabel\@undefined
+ \global\let\eql at nexttag\@undefined
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at compose@null{%
+ \ifdefined\eql at nexttag\else
+ \stepcounter{equation}%
+ \fi
+ \ifnum\eql at numbering@target@<\z@
+ \global\let\eql at nextlabel\@undefined
+ \global\let\eql at nexttag\@undefined
+ \fi
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Tagbox Methods}
+%
+% \TODO describe
+%
+% \TODO one might still compare width to zero and pretend the tag is absent??
+% \begin{macrocode}
+\def\eql at tagbox@make#1{%
+ \setbox\eql at tagbox@\hbox{\eql at strut@tag\@lign#1}%
+ \eql at tagwidth@\wd\eql at tagbox@
+ \ifdim\eql at tagwidth@<\eql at tagwidthmin@
+ \eql at tagwidth@\eql at tagwidthmin@
+ \fi
+ \advance\eql at tagwidth@\eql at tagsepmin@
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at tagbox@print at right{%
+ \kern-\wd\eql at tagbox@
+ \box\eql at tagbox@
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at tagbox@print at left{%
+ \wd\eql at tagbox@\z@
+ \box\eql at tagbox@
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at tagbox@print at right@raise{%
+ \ifnum\eql at row@=\eql at totalrows@
+ \global\advance\eql at raisetag@firstlast@\tw@
+ \fi
+ \llap{\vtop{%
+ \vskip-\eql at raisetag@amount@
+ \normalbaselines
+ \setbox\@ne\hbox{}%
+ \dp\@ne\eql at line@depth@
+ \box\@ne
+ \box\eql at tagbox@
+ }}%
+}
+\def\eql at tagbox@print at left@raise{%
+ \ifnum\eql at row@=\@ne
+ \global\advance\eql at raisetag@firstlast@\@ne
+ \fi
+ \rlap{\vbox{%
+ \normalbaselines
+ \box\eql at tagbox@
+ \vbox to\eql at line@height@{}%
+ \vskip\eql at raisetag@amount@
+ }}%
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at numbering@printsubeqlabel{%
+ \ifdefined\eql at parentlabel
+ \eql at numbering@makeblockanchor
+ \eql at SK@makelabel\eql at parentlabel
+ \begingroup
+ \def\@currentcounter{equation}%
+ \eql at numbering@setblockanchor
+ \let\@currentlabelname\eql at labelname@default
+ \protected at edef\@currentlabel{\p at equation\theparentequation}%
+ \expandafter\eql at label@clean\expandafter{\eql at parentlabel}%
+ \endgroup
+ \eql at SK@printlabel at line
+ \fi
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Numbering Schemes}
+%
+% \TODO describe
+%
+% \begin{macrocode}
+\def\eql at numbering@tab at first{first}
+\def\eql at numbering@tab at last{last}
+\def\eql at numbering@tab at middle{middle}
+\def\eql at numbering@tab at here{here}
+\def\eql at numbering@tab at in{in}
+\def\eql at numbering@tab at out{out}
+\def\eql at numbering@tab at sub{sub}
+\def\eql at numbering@tab at all{all}
+\def\eql at numbering@tab at none{none}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\let\eql at numbering@tab at f\eql at numbering@tab at first
+\let\eql at numbering@tab at l\eql at numbering@tab at last
+\let\eql at numbering@tab at m\eql at numbering@tab at middle
+\let\eql at numbering@tab at mid\eql at numbering@tab at middle
+\let\eql at numbering@tab at o\eql at numbering@tab at out
+\let\eql at numbering@tab at outside\eql at numbering@tab at out
+\let\eql at numbering@tab at i\eql at numbering@tab at in
+\let\eql at numbering@tab at inside\eql at numbering@tab at in
+\let\eql at numbering@tab at within\eql at numbering@tab at in
+\let\eql at numbering@tab at h\eql at numbering@tab at here
+\let\eql at numbering@tab at s\eql at numbering@tab at sub
+\let\eql at numbering@tab at subeq\eql at numbering@tab at sub
+\let\eql at numbering@tab at subequation\eql at numbering@tab at sub
+\let\eql at numbering@tab at subequations\eql at numbering@tab at sub
+\let\eql at numbering@tab at a\eql at numbering@tab at all
+\let\eql at numbering@tab at n\eql at numbering@tab at none
+\expandafter\let\csname eql at numbering@tab@!\endcsname\eql at numbering@tab at all
+\expandafter\let\csname eql at numbering@tab@*\endcsname\eql at numbering@tab at none
+\expandafter\let\csname eql at numbering@tab at 1\endcsname\eql at numbering@tab at first
+% \end{macrocode}
+%
+% \begin{macrocode}
+\let\eql at numbering@mode\eql at numbering@tab at all
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at numbering@set#1{%
+ \ifcsname eql at numbering@tab@#1\endcsname
+ \expandafter\let\expandafter\eql at numbering@mode
+ \csname eql at numbering@tab@#1\endcsname
+ \else
+ \eql at error{numbering mode `#1' unknown: setting to `all'}%
+ \let\eql at numbering@mode\eql at numbering@tab at all
+ \fi
+}
+% \end{macrocode}
+%
+% \tcounter{\eql at numbering@target@}
+% \begin{macrocode}
+\let\eql at numbering@active\eql at true
+\newcount\eql at numbering@target@
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at numbering@mode at all{%
+ \eql at numbering@target@\m at ne}
+\def\eql at numbering@mode at sub{%
+ \eql at numbering@target@\m at ne
+ \let\eql at numbering@subeq at use\eql at true}
+\def\eql at numbering@mode at none{%
+ \eql at numbering@target@\m at ne
+ \let\eql at numbering@active\eql at false}
+\def\eql at numbering@mode at first{%
+ \eql at numbering@target@\@ne}
+\def\eql at numbering@mode at last{%
+ \eql at numbering@target@\@MM}
+\def\eql at numbering@mode at here{%
+ \eql at numbering@target@\z@}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at numbering@mode at in{%
+ \ifdefined\eql at tagsleft
+ \eql at numbering@mode at last
+ \else
+ \eql at numbering@mode at first
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at numbering@mode at out{%
+ \ifdefined\eql at tagsleft
+ \eql at numbering@mode at first
+ \else
+ \eql at numbering@mode at last
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at numbering@mode at middle{%
+ \eql at numbering@target@\z@
+ \let\eql at numbering@eval at target\eql at numbering@eval at middle}
+\def\eql at numbering@eval at middle{%
+ \ifnum\eql at numbering@target@=\z@
+ \count@\eql at row@
+ \advance\count@\@ne
+ \divide\count@\tw@
+ \global\eql at numbering@target@\count@
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at numbering@eval at mode{%
+ \let\eql at numbering@eval at target\@undefined
+ \let\eql at numbering@subeq at use\eql at false
+ \csname eql at numbering@mode@\eql at numbering@mode\endcsname
+ \ifdefined\eql at numbering@active
+ \let\eql at numbering@eqnswinit\@eqnswtrue
+ \else
+ \let\eql at numbering@eqnswinit\@eqnswfalse
+ \fi
+ \let\eql at numbering@active\eql at false
+}
+% \end{macrocode}
+%
+% \TODO reconsider operation
+% \imacro{\numberhere}
+% \begin{macrocode}
+\def\numberhere{%
+ \ifmeasuring@
+ \ifnum\eql at numbering@target@<\z@\else
+ \global\eql at numbering@target@\eql at row@
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \imacro{\numbernext}
+% \begin{macrocode}
+\def\numbernext{%
+ \ifmeasuring@
+ \ifnum\eql at numbering@target@<\z@\else
+ \ifnum\eql at numbering@target@=\eql at row@
+ \global\advance\eql at numbering@target@\@ne
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Numbering Framework}
+%
+% \TODO describe
+%
+% \begin{macrocode}
+\let\eql at numbering@autolabel\eql at false
+\let\eql at numbering@autotag\eql at true
+\let\eql at numbering@blocklabel\@undefined
+\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
+ \let\eql at incr@eqnum at default\incr at eqnum
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\donumber{%
+ \if at eqnsw\else
+ \global\@eqnswtrue
+ \ifx\print at eqn\@empty
+ \global\let\print at eqn\eql at print@eqnum at default
+ \fi
+ \ifx\incr at eqn\@empty
+ \global\let\incr at eqn\eql at incr@eqnum at default
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at label@warn{%
+ \ifdefined\eql at numbering@autolabel
+ \global\@eqnswtrue
+ \fi
+ \ifdefined\eql at nextlabel
+ \eql at warn@label at multiple\eql at nextlabel
+ \fi
+ \global\edef\eql at nextlabel
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at tag@warn{%
+ \ifdefined\eql at numbering@autotag
+ \global\@eqnswtrue
+ \fi
+ \ifdefined\eql at nexttag
+ \eql at warn@tag at multiple
+ \fi
+ \eql at tag@makenext
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at label@nowarn{%
+ \ifdefined\eql at numbering@autolabel
+ \global\@eqnswtrue
+ \fi
+ \global\edef\eql at nextlabel
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at tag@nowarn{%
+ \ifdefined\eql at numbering@autotag
+ \global\@eqnswtrue
+ \fi
+ \eql at tag@makenext
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at blocklabel@set#1{%
+ \ifdefined\eql at blocklabel
+ \eql at warn@label at multiple\eql at blocklabel
+ \fi
+ \edef\eql at blocklabel{#1}%
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at blocktag@set#1{%
+ \ifdefined\eql at blocktag
+ \eql at warn@tag at multiple
+ \fi
+ \def\eql at blocktag{{#1}}%
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at blocktag@setstar#1{%
+ \ifdefined\eql at blocktag
+ \eql at warn@tag at multiple
+ \fi
+ \def\eql at blocktag{*{#1}}%
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Single-Line}
+%
+% \TODO describe
+%
+% \begin{macrocode}
+\def\eql at numbering@single at init{%
+ \let\label\eql at label@warn
+ \let\tag\eql at tag@warn
+ \let\raisetag\eql at raisetag
+ \eql at numbering@target@\m at ne
+ \let\eql at nextlabel\eql at blocklabel
+ \ifdefined\eql at blocktag
+ \expandafter\eql at tag@makenext\eql at blocktag
+ \else
+ \let\eql at nexttag\@undefined
+ \fi
+ \eql at numbering@eqnswinit
+ \ifdefined\eql at numbering@autolabel
+ \ifdefined\eql at nextlabel
+ \@eqnswtrue
+ \fi
+ \fi
+ \ifdefined\eql at numbering@autotag
+ \ifdefined\eql at nexttag
+ \@eqnswtrue
+ \fi
+ \fi
+ \global\eql at raisetag@amount@\z@
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Multi-Line Measuring Pass}
+%
+% \TODO describe
+%
+% \begin{macrocode}
+\def\eql at numbering@measure at init{%
+ \let\label\eql at label@warn
+ \let\tag\eql at tag@warn
+ \let\raisetag\eql at raisetag
+ \global\let\eql at nextlabel\eql at blocklabel
+ \ifdefined\eql at blocktag
+ \expandafter\eql at tag@makenext\eql at blocktag
+ \else
+ \global\let\eql at nexttag\@undefined
+ \fi
+ \ifnum\eql at numbering@target@<\z@\else
+ \eql at numbering@eqnswinit
+ \ifdefined\eql at numbering@autolabel
+ \ifdefined\eql at nextlabel
+ \@eqnswtrue
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at numbering@measure at line@begin{%
+ \ifnum\eql at numbering@target@<\z@
+ \global\eql at numbering@eqnswinit
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at numbering@measure at eval{%
+ \ifdefined\eql at numbering@eval at target
+ \eql at numbering@eval at target
+ \fi
+ \ifnum\eql at numbering@target@>\eql at row@
+ \global\eql at numbering@target@\eql at row@
+ \fi
+ \ifnum\eql at numbering@target@>\z@
+ \if at eqnsw\else
+ \global\eql at numbering@target@\z@
+ \fi
+ \fi
+ \ifnum\eql at numbering@target@<\@ne
+ \ifdefined\eql at nextlabel
+ \eql at warn@label at unused
+ \global\let\eql at nextlabel\@undefined
+ \fi
+ \ifdefined\eql at nexttag
+ \eql at warn@tag at unused
+ \global\let\eql at nexttag\@undefined
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Multi-Line Print Pass}
+%
+% \TODO describe
+%
+% \begin{macrocode}
+\def\eql at numbering@print at init{%
+ \ifnum\eql at numbering@target@<\z@
+ \let\label\eql at label@nowarn
+ \let\tag\eql at tag@nowarn
+ \let\raisetag\eql at raisetag
+ \let\eql at nextlabel\eql at blocklabel
+ \ifdefined\eql at blocktag
+ \expandafter\eql at tag@makenext\eql at blocktag
+ \else
+ \let\eql at nexttag\@undefined
+ \fi
+ \else
+ \let\label\@gobble
+ \let\tag\eql at tag@gobble
+ \let\raisetag\eql at gobble
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at numbering@print at block@begin{%
+ \ifnum\eql at numbering@target@>\z@
+ \eql at numbering@makeblockanchor
+ \fi
+ \ifdefined\eql at numbering@subeq at use
+ \eql at numbering@printsubeqlabel
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at numbering@print at line@begin{%
+ \ifnum\eql at numbering@target@<\z@
+ \global\eql at numbering@eqnswinit
+ \global\eql at raisetag@amount@\z@
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at numbering@print at line@eval{%
+ \ifnum\eql at numbering@target@<\z@\else
+ \ifnum\eql at numbering@target@=\eql at row@
+ \global\@eqnswtrue
+ \else
+ \global\@eqnswfalse
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Subequations}
+%
+% \TODO describe
+%
+% \begin{macrocode}
+\def\eql at numbering@subeq at init{%
+ \let\eql at save@theequation\theequation
+ \let\eql at save@theHequation\theHequation
+ \eql at subequations@init
+ \let\eql at parentlabel\eql at blocklabel
+ \let\eql at parenttag\eql at blocktag
+ \let\eql at blocklabel\@undefined
+ \let\eql at blocktag\@undefined
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at numbering@subeq at test{%
+ \ifnum\c at equation<\tw@
+ \let\eql at numbering@subeq at use\@ne
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at numbering@subeq at revert{%
+ \let\eql at blocklabel\eql at parentlabel
+ \let\eql at blocktag\eql at parenttag
+ \let\eql at numbering@subeq at use\eql at false
+ \let\theequation\eql at save@theequation
+ \let\theHequation\eql at save@theHequation
+ \eql at subequations@restorecounter
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+% \TODO note must not use setcounter here (when calc is loaded)
+\def\eql at numbering@subeq at close{%
+ \eql at subequations@close
+}
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Display Equations Support}
+%
+% \TODO describe
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Display Breaks}
+%
+% \TODO describe
+%
+% \macro{\interdisplaylinepenalty}
+% \begin{macrocode}
+\interdisplaylinepenalty\@M
+% \end{macrocode}
+%
+% \macro{\eql at getdsp@pen}
+% \TODO isn't this the opposite order than |\@getpen|?!
+% \begin{macrocode}
+\def\eql at getdsp@pen#1{%
+ \ifcase #1\@M \or 9999 \or 6999 \or 2999 \or \z@\fi
+}
+% \end{macrocode}
+%
+% \TODO allow a displaybreak before equations
+% \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
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcount\eql at displaybreak@pen@
+\newcount\eql at displaybreak@prepen@
+% \end{macrocode}
+%
+% \begin{macrocode}
+\protected\def\eql at displaybreak@print{%
+ \eql at ampprotect\eql at testopt@tight\eql at displaybreak@print@{4}%
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at displaybreak@print@[#1]{%
+ \ifnum#1<\z@
+ \global\eql at displaybreak@pen@\@MM
+ \else
+ \global\eql at displaybreak@pen at -\@getpen{#1}\relax
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at displaybreak@pre#1{%
+ \ifnum#1<\z@
+ \global\eql at displaybreak@prepen@\@MM
+ \else
+ \global\eql at displaybreak@prepen at -\@getpen{#1}\relax
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\protected\def\eql at displaybreak@measure{%
+ \eql at ampprotect\eql at testopt@tight\eql at displaybreak@measure@{4}%
+}
+\def\eql at displaybreak@measure@[#1]{}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{General Initialisation}
+%
+% \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@}
+% \TODO add a proper star variant?!
+% \begin{macrocode}
+\newskip\eql at vspaceskip@
+\newskip\eql at abovespace@
+\newskip\eql at belowspace@
+\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@
+}
+% \end{macrocode}
+%
+% \macro{\eql at display@init}
+% \begin{macrocode}
+\def\eql at display@init{%
+ \eql at display@firstavail@\z@
+ \eql at raisetag@firstlast@\z@
+ \let\displaybreak\eql at displaybreak@print
+ \eql at displaybreak@pen@\@MM
+ \eql at vspaceskip@\z at skip
+ \let\eql at vspace@org\vspace
+ \let\vspace\eql at vspace
+}
+% \end{macrocode}
+%
+% \macro{\eql at display@close}
+% \TODO there seems to be an offset of 1em in predisplaysize
+% towards actual content, nice.
+% \TODO must not use setlength or setcounter when calc is loaded
+% \begin{macrocode}
+\def\eql at display@close{%
+ \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
+ \fi
+ \else
+% \TODO should tagskip be allowed to override these?! rather not
+ \ifdim\eql at halign@prevdepth@=\@m\p@
+ \predisplaypenalty\z@
+ \abovedisplayskip\eql at abovedisplaytopskip@
+% \TODO whether to offer this?
+ \belowdisplayskip\eql at belowdisplaytopskip@
+ \else
+ \predisplaypenalty\z@
+ \abovedisplayskip\eql at abovedisplayparskip@
+ \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@
+ \fi
+ \advance\eql at display@firstavail@\displayindent
+ \ifdim\eql at display@firstavail@>\predisplaysize
+ \ifcase\eql at displayshortmode@
+ \or
+ \abovedisplayskip\abovedisplayshortskip
+ \or
+ \abovedisplayskip\abovedisplayshortskip
+ \ifnum\eql at row@=\tw@
+ \belowdisplayskip\belowdisplayshortskip
+ \fi
+ \or
+ \abovedisplayskip\abovedisplayshortskip
+ \belowdisplayskip\belowdisplayshortskip
+ \fi
+ \fi
+ \ifodd\eql at raisetag@firstlast@
+ \abovedisplayskip\eql at abovedisplaytagskip@
+ \fi
+ \ifnum\eql at raisetag@firstlast@>\@ne
+ \belowdisplayskip\eql at belowdisplaytagskip@
+ \fi
+ \ifnum\eql at displaybreak@pen@=\@MM\else
+ \postdisplaypenalty\eql at displaybreak@pen@
+ \fi
+ \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@
+ \count@\prevgraf
+ \advance\count@\eql at row@
+ \advance\count at -\tw@
+ \prevgraf\count@
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at display@leave{%
+ \let\label\eql at label@org
+ \let\tag\eql at tag@default
+ \let\raisetag\eql at raisetag@default
+ \let\displaybreak\eql at displaybreak@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
+ \@displayfalse
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{halign Support}
+%
+% \TODO describe
+%
+% \macro{\eql at strut}
+% \macro{\eql at strutbox@}
+% Next follows a special internal strut which is supposed to match
+% the height and the depth of a normal |\strut| minus
+% |\normallineskiplimit| according to M.\ Spivak.
+% \begin{macrocode}
+\newbox\eql at strutbox@
+\def\eql at strut{\copy\eql at strutbox@}
+\let\eql at strut@field\eql at strut
+\let\eql at strut@tag\eql at strut
+\def\eql at strut@make{%
+ \setbox\eql at strutbox@\hbox{%
+ \@tempdima\normalbaselineskip
+ \advance\@tempdima-\normallineskiplimit
+ \@tempdimb.3\normalbaselineskip
+ \advance\@tempdimb.5\normallineskiplimit
+ \advance\@tempdima-\@tempdimb
+ \vrule\@height\@tempdima\@depth\@tempdimb\@width\z@
+ }
+}
+\AtBeginDocument{\eql at strut@make}
+% \end{macrocode}
+%
+% \TODO describe
+% \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@
+ \ifdefined\spread at equation
+ \let\spread at equation\@empty
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \ldimen{\eql at halign@prevdepth@}
+% \begin{macrocode}
+\newdimen\eql at halign@prevdepth@
+\def\eql at halign@catchprevdepth{%
+ \ifvmode
+ \eql at halign@prevdepth@\prevdepth
+ \nointerlineskip
+ \noindent
+ \else
+ \eql at halign@prevdepth@\maxdimen
+ \fi
+}
+% \end{macrocode}
+%
+% \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
+ \else
+ \vskip\skip@
+ \fi
+ \nointerlineskip
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at halign@after{%
+ \prevdepth\eql at display@depth\relax
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at halign@init#1{%
+ \eql at halign@spread
+ \eql at strut@make
+ \everycr{\noalign{#1}}%
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Stack}
+%
+% \TODO describe
+%
+% \begin{macrocode}
+\def\eql at stack@enable{%
+ \let\eql at stack@save at single\eql at stack@save at single@
+ \let\eql at stack@save at multi\eql at stack@save at multi@
+ \let\eql at stack@save at boxed\eql at stack@save at boxed@
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\let\eql at stack@save at single\eql at stack@enable
+\let\eql at stack@save at multi\eql at stack@enable
+\let\eql at stack@save at boxed\eql at stack@enable
+\let\eql at stack@restore\@empty
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at stack@save at reg#1{\global#1\the#1\relax}
+\def\eql at stack@save at let#1#2{\global\let\noexpand#2\noexpand#1}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at stack@save at single@{%
+ \let\eql at stack@nextlabel\eql at nextlabel
+ \let\eql at stack@nexttag\eql at nexttag
+ \edef\eql at stack@restore{%
+ \global\if at eqnsw\noexpand\@eqnswtrue\else\noexpand\@eqnswfalse\fi
+ \eql at stack@save at let\eql at stack@nextlabel\eql at nextlabel
+ \eql at stack@save at let\eql at stack@nexttag\eql at nexttag
+ \eql at stack@save at reg\eql at displaybreak@pen@
+ \eql at stack@save at reg\eql at vspaceskip@
+ \eql at stack@save at reg\eql at shape@pos@
+ \eql at stack@save at reg\eql at shape@amount@
+ \eql at stack@save at reg\eql at display@firstavail@
+ \eql at stack@save at reg\eql at raisetag@amount@
+ \eql at stack@save at reg\eql at raisetag@firstlast@
+ }%
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at stack@save at multi@{%
+ \let\eql at stack@nextlabel\eql at nextlabel
+ \let\eql at stack@nexttag\eql at nexttag
+ \let\eql at stack@tagwidth at tab\eql at tagwidth@tab
+ \let\eql at stack@fieldlength at tab\eql at fieldlength@tab
+ \let\eql at stack@colwidth at tab\eql at colwidth@tab
+ \let\eql at stack@label at thepage\eql at label@thepage
+ \let\eql at stack@label at currentHref\eql at label@currentHref
+ \edef\eql at stack@restore{%
+ \global\if at eqnsw\noexpand\@eqnswtrue\else\noexpand\@eqnswfalse\fi
+ \eql at stack@save at let\eql at stack@nextlabel\eql at nextlabel
+ \eql at stack@save at let\eql at stack@nexttag\eql at nexttag
+ \eql at stack@save at let\eql at stack@tagwidth at tab\eql at tagwidth@tab
+ \eql at stack@save at let\eql at stack@fieldlength at tab\eql at fieldlength@tab
+ \eql at stack@save at let\eql at stack@colwidth at tab\eql at colwidth@tab
+ \eql at stack@save at let\eql at stack@label at thepage\eql at label@thepage
+ \eql at stack@save at let\eql at stack@label at currentHref\eql at label@currentHref
+ \eql at stack@save at reg\eql at displaybreak@pen@
+ \eql at stack@save at reg\eql at vspaceskip@
+ \eql at stack@save at reg\eql at shape@pos@
+ \eql at stack@save at reg\eql at shape@amount@
+ \eql at stack@save at reg\eql at display@firstavail@
+ \eql at stack@save at reg\eql at raisetag@amount@
+ \eql at stack@save at reg\eql at raisetag@firstlast@
+ \eql at stack@save at reg\eql at column@
+ \eql at stack@save at reg\eql at totalcolumns@
+ \eql at stack@save at reg\eql at line@avail@
+ \eql at stack@save at reg\eql at line@pos@
+ \eql at stack@save at reg\eql at line@width@
+ \eql at stack@save at reg\eql at line@depth@
+ \eql at stack@save at reg\eql at line@height@
+ \eql at stack@save at reg\eql at numbering@target@
+ \eql at stack@save at reg\eql at row@
+ }%
+}
+\def\eql at stack@save at boxed@{%
+ \edef\eql at stack@restore{%
+ \eql at stack@save at reg\eql at row@
+ \eql at stack@save at reg\eql at totalrows@
+ \eql at stack@save at reg\eql at shape@pos@
+ \eql at stack@save at reg\eql at shape@amount@
+ }%
+}
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Horizontal Spacing for Lines}
+%
+% The following code adjusts individual lines of equations
+% for the equation and lines mode
+% according to the selected layout and shape.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Supporting Definitionss}
+%
+% \macro{\inf at bad}
+% The |\inf at bad| constant is for testing overfull boxes:
+% \begin{macrocode}
+\ifdefined\inf at bad\else%
+ \newcount\inf at bad
+ \inf at bad1000000\relax
+\fi
+% \end{macrocode}
+%
+% \macro{\eql at restore@hfuzz}
+% \macro{\eql at save@hfuzz}
+% We need to change the value of |\hfuzz| temporarily.
+% The method |\eql at save@hfuzz| stores the value
+% for recovery through |\eql at restore@hfuzz|:
+% \begin{macrocode}
+\let\eql at restore@hfuzz\@empty
+\def\eql at save@hfuzz{\edef\eql at restore@hfuzz{\hfuzz\the\hfuzz\relax}}
+% \end{macrocode}
+%
+% \ldimen{\eql at shape@pos@}
+% \ldimen{\eql at shape@amount@}
+% The registers |\eql at shape@pos@| and |\eql at shape@amount@|
+% specify the currently selected horizontal alignment
+% (|0| for left, |1| for center, |2| for right)
+% and the indentation amount, respectively:
+% \begin{macrocode}
+\newcount\eql at shape@pos@
+\newdimen\eql at shape@amount@
+% \end{macrocode}
+%
+% \ldimen{\eql at marginleft@}
+% \ldimen{\eql at marginright@}
+% The registers |\eql at marginleft@| and |\eql at marginright@|
+% store the intended left and right margin for the equation lines:
+% \begin{macrocode}
+\newdimen\eql at marginleft@
+\newdimen\eql at marginright@
+% \end{macrocode}
+%
+% \macro{\eql at marginbadness@}
+% \macro{\eql at maxbadness@}
+% The registers |\eql at marginbadness@| and |\eql at maxbadness@|
+% store the allowable badness threshold for shrinking equation lines
+% to the intended margin or to fit into the line at all
+% before the tag is raised or lowered:
+% \begin{macrocode}
+\newcount\eql at marginbadness@
+\newcount\eql at maxbadness@
+\eql at marginbadness@\inf at bad
+\eql at maxbadness@\inf at bad
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Shape Schemes}
+%
+% The horizontal alignment of each line is specified by
+% a shape scheme.
+%
+% \macro{\eql at shape@tab at ...}
+% We select the scheme through a |\csname| selector
+% with the following names:
+% \begin{macrocode}
+\def\eql at shape@tab at default{default}
+\def\eql at shape@tab at left{left}
+\def\eql at shape@tab at center{center}
+\def\eql at shape@tab at right{right}
+\def\eql at shape@tab at first{first}
+\def\eql at shape@tab at hanging{hanging}
+\def\eql at shape@tab at steps{steps}
+% \end{macrocode}
+%
+% For convenience, we add further alias names for the schemes:
+% \begin{macrocode}
+\let\eql at shape@tab at def\eql at shape@tab at default
+\let\eql at shape@tab@\eql at shape@tab at default
+\let\eql at shape@tab at l\eql at shape@tab at left
+\let\eql at shape@tab at c\eql at shape@tab at center
+\let\eql at shape@tab at r\eql at shape@tab at right
+\let\eql at shape@tab at rc\eql at shape@tab at first
+\let\eql at shape@tab at indent\eql at shape@tab at first
+\let\eql at shape@tab at hang\eql at shape@tab at hanging
+\let\eql at shape@tab at lc\eql at shape@tab at hanging
+\let\eql at shape@tab at outdent\eql at shape@tab at hanging
+\let\eql at shape@tab at lcr\eql at shape@tab at steps
+% \end{macrocode}
+%
+% \macro{\eql at shape@mode}
+% The currently selected scheme is stored in |\eql at shape@mode|.
+% It it set to |default|:
+% \begin{macrocode}
+\let\eql at shape@mode\eql at shape@tab at default
+% \end{macrocode}
+%
+% \macro{\eql at shape@set}
+% Set the scheme via the translation table:
+% \begin{macrocode}
+\def\eql at shape@set#1{%
+ \ifcsname eql at shape@tab@#1\endcsname
+ \expandafter\let\expandafter\eql at shape@mode
+ \csname eql at shape@tab@#1\endcsname
+ \else
+ \eql at error{shape `#1' unknown: setting to default}%
+ \let\eql at shape@mode\eql at shape@tab at default
+ \fi
+}
+% \end{macrocode}
+%
+% \macro{\eql at shape@center at ...}
+% \macro{\eql at shape@left at ...}
+% Define the uniform shape schemes |left|, |center|, |right| and |default|
+% for the centered and flush-left layout.
+% The scheme functions determine the desired alignment and indentation
+% for the current row:
+% \begin{macrocode}
+\def\eql at shape@center at left{\eql at shape@pos@\z@\eql at shape@amount@\z@}
+\def\eql at shape@center at center{\eql at shape@pos@\@ne\eql at shape@amount@\z@}
+\def\eql at shape@center at right{\eql at shape@pos@\tw@\eql at shape@amount@\z@}
+\let\eql at shape@center at default\eql at shape@center at center
+\def\eql at shape@left at left{\eql at shape@pos@\z@\eql at shape@amount@\z@}
+\def\eql at shape@left at center{\eql at shape@pos@\@ne\eql at shape@amount@\z@}
+\def\eql at shape@left at right{\eql at shape@pos@\tw@\eql at shape@amount@\z@}
+\let\eql at shape@left at default\eql at shape@left at left
+% \end{macrocode}
+%
+% The |first| scheme implements left alignment with
+% indentation for the first line (unless there is only one line):
+% \begin{macrocode}
+\def\eql at shape@center at first{%
+ \eql at shape@pos@\z@
+ \eql at shape@amount@\z@
+ \ifnum\eql at totalrows@>\@ne
+ \ifnum\eql at row@=\@ne
+ \eql at shape@amount@\eql at indent@
+ \fi
+ \fi
+}
+\def\eql at shape@left at first{%
+ \eql at shape@pos@\z@
+ \eql at shape@amount@\z@
+ \ifnum\eql at totalrows@>\@ne
+ \ifnum\eql at row@=\@ne
+ \eql at shape@amount@\eql at indent@
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% The |hanging| scheme implements left alignment with
+% hanging indentation for the first line (unless there is only one line).
+% In centered layout all but the first line are indented
+% while in flush-left layout the first line has negative indentation:
+% \begin{macrocode}
+\def\eql at shape@center at hanging{%
+ \eql at shape@pos@\z@
+ \eql at shape@amount@\eql at indent@
+ \ifnum\eql at totalrows@>\@ne
+ \ifnum\eql at row@=\@ne
+ \eql at shape@amount@\z@
+ \fi
+ \fi
+}
+\def\eql at shape@left at hanging{%
+ \eql at shape@pos@\z@
+ \eql at shape@amount@\z@
+ \ifnum\eql at totalrows@>\@ne
+ \ifnum\eql at row@=\@ne
+ \eql at shape@amount at -\eql at indent@
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% The |steps| scheme implements singles out the first and last lines
+% which are shifted left and right, respectively.
+% In centered layout the shift operates on the alignment
+% whereas in flush-left layout the shift uses indentation:
+% \begin{macrocode}
+\def\eql at shape@center at steps{%
+ \eql at shape@amount@\z@
+ \eql at shape@pos@\@ne
+ \ifnum\eql at totalrows@>\@ne
+ \ifnum\eql at row@=\@ne
+ \eql at shape@pos@\z@
+ \fi
+ \ifnum\eql at row@=\eql at totalrows@
+ \eql at shape@pos@\tw@
+ \fi
+ \fi
+}
+\def\eql at shape@left at steps{%
+ \eql at shape@pos@\z@
+ \eql at shape@amount@\z@
+ \ifnum\eql at totalrows@>\@ne
+ \ifnum\eql at row@=\@ne
+ \eql at shape@amount at -\eql at indent@
+ \fi
+ \ifnum\eql at row@=\eql at totalrows@
+ \eql at shape@amount@\eql at indent@
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \macro{\eql at shape@sel}
+% \macro{\eql at shape@eval}
+% Select the shape selector function
+% for the currrent scheme |@\eql at shape@mode| and layout
+% and store it in |\eql at shape@eval|:
+% \begin{macrocode}
+\let\eql at shape@eval\@undefined
+\def\eql at shape@sel{%
+ \expandafter\let\expandafter\eql at shape@eval
+ \csname eql at shape%
+ @\ifdefined\eql at flushleft left\else center\fi
+ @\eql at shape@mode\endcsname
+}
+% \end{macrocode}
+%
+% \macro{\eql at adjust@shoveleft}
+% \macro{\eql at adjust@shoveright}
+% \macro{\eql at adjust@shovecenter}
+% Adjust the alignment of the current equation line.
+% For left alignment an optional argument specifies the amount of indentation:
+% \begin{macrocode}
+\def\eql at adjust@shoveleft{%
+ \global\eql at shape@pos@\z@
+ \eql at srbgroup\eql at ifstar@tight
+ {\eql at adjust@shoveleft@[\eql at indent@]}%
+ {\eql at ifnextgobble@tight{!}%
+ {\eql at adjust@shoveleft@[-\eql at indent@]}%
+ {\eql at testopt@tight\eql at adjust@shoveleft@\z@}%
+ }%
+}
+\def\eql at adjust@shoveleft@[#1]{%
+ \eql at sregroup\setlength\dimen@{#1}\global\eql at shape@amount@\dimen@}
+\def\eql at adjust@shovecenter{%
+ \global\eql at shape@pos@\@ne\global\eql at shape@amount@\z@}
+\def\eql at adjust@shoveright{%
+ \global\eql at shape@pos@\tw@\global\eql at shape@amount@\z@}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Adjustment Methods}
+%
+% \macro{\eql at adjust@try}
+% Try to fit the current equation line in the available space.
+% Argument |#1| specifies the amount of reserved space.
+% Unpack the box |\eql at fieldbox@|, replace the previous kerning
+% with the new reserved space, and save the box back into |\eql at fieldbox@|:
+% \begin{macrocode}
+\def\eql at adjust@try#1{%
+ \setbox\eql at fieldbox@\hbox to\displaywidth{%
+ \unhbox\eql at fieldbox@\unkern\kern#1}%
+}
+% \end{macrocode}
+%
+% \macro{\eql at adjust@print}
+% We have found the final adjustment of the current line,
+% so we typeset it with initial and final space adjustments |#1| and |#2|,
+% respectively. Restore the original value for |\hfuzz|:
+% \begin{macrocode}
+\def\eql at adjust@print#1#2{%
+ \eql at restore@hfuzz
+ \hbox to\displaywidth{#1\unhbox\eql at fieldbox@\unkern#2}%
+}
+% \end{macrocode}
+%
+% \macro{\eql at adjust@print at alignleft}
+% \macro{\eql at adjust@print at aligncenter}
+% \macro{\eql at adjust@print at alignright}
+% Fit the current equation line with the selected alignment
+% within a given left and right margins |#1| and |#2|.
+% If we're on the first line,
+% adjust |\eql at display@firstavail@|
+% to the mininum left available space we can guarantee:
+% \begin{macrocode}
+\def\eql at adjust@print at alignleft#1#2{%
+ \ifnum\eql at row@=\@ne
+ \global\eql at display@firstavail@#1%
+ \fi
+ \eql at adjust@print{\kern#1}{\kern#2}%
+}
+\def\eql at adjust@print at alignright#1#2{%
+ \ifnum\eql at row@=\@ne
+ \eql at display@firstavail@\displaywidth
+ \advance\eql at display@firstavail at -\eql at fieldwidth@
+ \global\advance\eql at display@firstavail at -#2%
+ \fi
+ \eql at adjust@print{\kern#1\hfil}{\unskip\kern#2}%
+}
+\def\eql at adjust@print at aligncenter#1#2{%
+ \ifnum\eql at row@=\@ne
+ \eql at display@firstavail@\displaywidth
+ \advance\eql at display@firstavail at -\eql at fieldwidth@
+ \advance\eql at display@firstavail@#1%
+ \advance\eql at display@firstavail at -#2%
+ \global\divide\eql at display@firstavail@\tw@
+ \fi
+ \eql at adjust@print{\kern#1\hfil}{\kern#2}%
+}
+% \end{macrocode}
+%
+% \macro{\eql at adjust@init}
+% Initialise the horizontal adjustment framework.
+% Turn off overfull box messages temporarily -- otherwise there
+% would be unwanted extra ones emitted during our measuring operations.
+% Select the shape scheme:
+% \begin{macrocode}
+\def\eql at adjust@init{%
+ \eql at save@hfuzz
+ \hfuzz\maxdimen
+ \eql at shape@sel
+}
+% \end{macrocode}
+%
+% \macro{\eql at adjust@sel at tag}
+% \macro{\eql at adjust@sel at notag}
+% Select the appropriate adjustment method depending
+% on the selected layout, selected tag placement,
+% current alignment position and on whether a tag is present or not:
+% \begin{macrocode}
+\def\eql at adjust@sel at tag{%
+ \csname eql at adjust%
+ @\ifdefined\eql at flushleft flushleft\else center\fi
+ @\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
+ @\ifcase\eql at shape@pos@ shoveleft\or shovecenter\or shoveright\fi
+ @tag\endcsname
+}
+\def\eql at adjust@sel at notag{%
+ \csname eql at adjust%
+ @\ifdefined\eql at flushleft flushleft\else center\fi
+ @\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
+ @\ifcase\eql at shape@pos@ shoveleft\or shovecenter\or shoveright\fi
+ @notag\endcsname
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Centered Layout}
+%
+% \TODO describe
+%
+% \TODO check all these!!
+% \begin{macrocode}
+\def\eql at adjust@center at tagsright@shovecenter at notag{%
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at fieldwidth@
+ \ifdim\dimen@>\eql at tagmargin@
+ \eql at adjust@print at aligncenter\z@\eql at tagmargin@
+ \else
+ \eql at adjust@print at alignleft\z@\z@
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at adjust@center at tagsright@shovecenter at tag{%
+ \dimen@\displaywidth
+ \ifdim\eql at tagwidth@<\eql at tagmargin@
+ \advance\dimen at -\eql at tagmargin@
+ \else
+ \advance\dimen at -2\eql at tagwidth@
+ \advance\dimen@\eql at tagmargin@
+ \fi
+ \ifdim\eql at fieldwidth@<\dimen@
+ \eql at adjust@print at aligncenter\z@\eql at tagmargin@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \ifdim\eql at tagwidth@<\eql at tagmargin@
+ \eql at adjust@print at alignleft\z@\eql at tagwidth@
+ \else
+ \eql at adjust@print at alignright\z@\eql at tagwidth@
+ \fi
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@center at tagsright@shovecenter at notag
+ \eql at tagbox@print at right@raise
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at adjust@center at tagsleft@shovecenter at notag{%
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at tagmargin@
+ \ifdim\eql at fieldwidth@<\dimen@
+ \eql at adjust@print at aligncenter\eql at tagmargin@\z@
+ \else
+ \eql at adjust@print at alignright\z@\z@
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at adjust@center at tagsleft@shovecenter at tag{%
+ \dimen@\displaywidth
+ \ifdim\eql at tagwidth@<\eql at tagmargin@
+ \advance\dimen at -\eql at tagmargin@
+ \else
+ \advance\dimen at -2\eql at tagwidth@
+ \advance\dimen@\eql at tagmargin@
+ \fi
+ \ifdim\eql at fieldwidth@<\dimen@
+ \eql at tagbox@print at left
+ \eql at adjust@print at aligncenter\eql at tagmargin@\z@
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \ifdim\eql at tagwidth@<\eql at tagmargin@
+ \eql at adjust@print at alignright\eql at tagwidth@\z@
+ \else
+ \eql at adjust@print at alignleft\eql at tagwidth@\z@
+ \fi
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@center at tagsleft@shovecenter at notag
+ \fi
+ \fi
+ \eql at display@firstavail at set\z@
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at adjust@center at tagsright@shoveleft at notag{%
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at marginleft@
+ \advance\dimen at -\eql at shape@amount@
+ \ifdim\eql at fieldwidth@<\dimen@
+ \dimen@\eql at marginleft@
+ \advance\dimen@\eql at shape@amount@
+ \eql at adjust@print at alignleft\dimen@\z@
+ \else
+ \eql at adjust@print at alignright\z@\z@
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at adjust@center at tagsright@shoveleft at tag{%
+ \dimen@\eql at marginleft@
+ \advance\dimen@\eql at shape@amount@
+ \advance\dimen@\eql at tagwidth@
+ \eql at adjust@try\dimen@
+ \ifnum\badness<\eql at marginbadness@
+ \dimen@\eql at marginleft@
+ \advance\dimen@\eql at shape@amount@
+ \eql at adjust@print at alignleft\dimen@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \ifdim\eql at marginleft@>-\eql at shape@amount@
+ \eql at adjust@try\eql at tagwidth@
+ \fi
+ \ifnum\badness<\eql at maxbadness@
+ \eql at adjust@print at alignright\z@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@center at tagsright@shoveleft at notag
+ \eql at tagbox@print at right@raise
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at adjust@center at tagsleft@shoveright at notag{%
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at tagmargin@
+ \advance\dimen at -\eql at marginright@
+ \ifdim\eql at fieldwidth@<\dimen@
+ \eql at adjust@print at alignright\z@\eql at marginright@
+ \else
+ \eql at adjust@print at alignleft\z@\z@
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at adjust@center at tagsleft@shoveright at tag{%
+ \dimen@\eql at marginright@
+ \advance\dimen@\eql at tagwidth@
+ \eql at adjust@try\dimen@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignright\eql at tagwidth@\eql at marginright@
+ \else
+ \ifdim\eql at marginright@>\z@
+ \eql at adjust@try\eql at tagwidth@
+ \fi
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignleft\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@center at tagsleft@shoveright at notag
+ \fi
+ \fi
+ \eql at display@firstavail at set\z@
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at adjust@center at tagsright@shoveright at notag{%
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at tagmargin@
+ \advance\dimen at -\eql at marginright@
+ \ifdim\eql at fieldwidth@<\dimen@
+ \dimen@\eql at tagmargin@
+ \advance\dimen@\eql at marginright@
+ \eql at adjust@print at alignright\z@\dimen@
+ \else
+ \eql at adjust@print at alignleft\z@\z@
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at adjust@center at tagsright@shoveright at tag{%
+ \dimen@\eql at tagmargin@
+ \advance\dimen@\eql at marginright@
+ \ifdim\eql at tagwidth@<\dimen@
+ \eql at adjust@try\dimen@%
+ \ifnum\badness<\eql at marginbadness@
+ \eql at adjust@print at alignright\z@\dimen@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at adjust@print at alignleft\z@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@print at alignleft\z@\z@
+ \eql at tagbox@print at left@raise
+ \fi
+ \fi
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at adjust@print at alignright\z@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@center at tagsright@shoveright at notag
+ \eql at tagbox@print at right@raise
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at adjust@center at tagsleft@shoveleft at notag{%
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at tagmargin@
+ \advance\dimen at -\eql at marginleft@
+ \advance\dimen at -\eql at shape@amount@
+ \ifdim\eql at fieldwidth@<\dimen@
+ \dimen@\eql at tagmargin@
+ \advance\dimen@\eql at marginleft@
+ \advance\dimen@\eql at shape@amount@
+ \eql at adjust@print at alignleft\dimen@\z@
+ \else
+ \eql at adjust@print at alignright\z@\z@
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at adjust@center at tagsleft@shoveleft at tag{%
+ \dimen@\eql at tagmargin@
+ \advance\dimen@\eql at marginleft@
+ \advance\dimen@\eql at shape@amount@
+ \ifdim\eql at tagwidth@<\dimen@
+ \eql at adjust@try\dimen@%
+ \ifnum\badness<\eql at marginbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignleft\dimen@\z@
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignright\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@print at alignright\z@\z@
+ \fi
+ \fi
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignleft\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@center at tagsleft@shoveleft at notag
+ \fi
+ \fi
+ \eql at display@firstavail at set\z@
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Flush-Left Layout}
+%
+% \TODO describe
+%
+% \begin{macrocode}
+\def\eql at adjust@flushleft at shoveleft{%
+ \eql at marginleft@\eql at flushleftmargin@
+ \advance\eql at marginleft@\eql at shape@amount@
+ \ifdim\eql at marginleft@<\eql at flushleftmarginmin@
+ \eql at marginleft@\eql at flushleftmarginmin@
+ \fi
+ \ifdim\eql at marginleft@>\eql at flushleftmarginmax@
+ \eql at marginleft@\eql at flushleftmarginmax@
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO perform checks based on unstretched dimension?!
+% \TODO mention alternatives to fill; emphasis is on
+% good left margin with ragged right
+% (allow space between tag and equation in close case)
+% \begin{macrocode}
+\def\eql at adjust@flushleft at shoveleft@notag{%
+ \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
+ \eql at adjust@try\eql at marginleft@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at adjust@print at alignleft\eql at marginleft@\z@
+ \else
+ \eql at adjust@print at alignleft\eql at flushleftmarginmin@\z@
+ \fi
+ \else
+ \eql at adjust@print at alignleft\eql at marginleft@\z@
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at adjust@flushleft at tagsright@shoveleft at notag{%
+ \eql at adjust@flushleft at shoveleft
+ \eql at adjust@flushleft at shoveleft@notag
+}
+\let\eql at adjust@flushleft at tagsleft@shoveleft at notag
+ \eql at adjust@flushleft at tagsright@shoveleft at notag
+% \end{macrocode}
+%
+% \TODO what is worse, extend into margin or raise tag?
+% this assumes raise tag, but other option might be better
+% \TODO mention alternatives to fill; emphasis is on good left
+% margin with ragged right
+% (allow space between tag and equation in close case)
+% \begin{macrocode}
+\def\eql at adjust@flushleft at tagsright@shoveleft at tag{%
+ \eql at adjust@flushleft at shoveleft
+ \dimen@\eql at marginleft@
+ \advance\dimen@\eql at tagwidth@
+ \eql at adjust@try\dimen@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at adjust@print at alignleft\eql at marginleft@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
+ \dimen@\eql at flushleftmarginmin@
+ \advance\dimen@\eql at tagwidth@
+ \eql at adjust@try\dimen@
+ \fi
+ \ifnum\badness<\eql at maxbadness@
+ \eql at adjust@print at alignleft\eql at flushleftmarginmin@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@flushleft at shoveleft@notag
+ \eql at tagbox@print at right@raise
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at adjust@flushleft at tagsleft@shoveleft at tag{%
+ \eql at adjust@flushleft at shoveleft
+ \ifdim\eql at tagwidth@<\eql at flushleftmarginmin@
+ \eql at tagbox@print at left
+ \eql at adjust@flushleft at notag
+ \else
+ \ifdim\eql at tagwidth@<\eql at marginleft@
+ \eql at adjust@try\eql at marginleft@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignleft\eql at marginleft@\z@
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignleft\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@print at alignleft\eql at flushleftmarginmin@\z@
+ \fi
+ \fi
+ \else
+ \ifdim\eql at tagwidth@>\eql at flushleftmarginmax@
+ \eql at tagbox@print at left@raise
+ \eql at adjust@flushleft at shoveleft@notag
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignleft\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@flushleft at shoveleft@notag
+ \fi
+ \fi
+ \fi
+ \fi
+ \eql at display@firstavail at set\z@
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at adjust@flushleft at shoveright@notag{%
+ \eql at marginleft@\eql at flushleftmargin@
+ \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
+ \eql at adjust@try\eql at marginleft@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at adjust@print at alignright\eql at marginleft@\z@
+ \else
+ \eql at adjust@print at alignright\eql at flushleftmarginmin@\z@
+ \fi
+ \else
+ \eql at adjust@print at alignright\eql at marginleft@\z@
+ \fi
+}
+\let\eql at adjust@flushleft at tagsright@shoveright at notag
+ \eql at adjust@flushleft at shoveright@notag
+\let\eql at adjust@flushleft at tagsleft@shoveright at notag
+ \eql at adjust@flushleft at shoveright@notag
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at adjust@flushleft at tagsright@shoveright at tag{%
+ \dimen@\eql at marginleft@
+ \advance\dimen@\eql at tagwidth@
+ \eql at adjust@try\dimen@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at adjust@print at alignright\eql at marginleft@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
+ \dimen@\eql at flushleftmarginmin@
+ \advance\dimen@\eql at tagwidth@
+ \eql at adjust@try\dimen@
+ \fi
+ \ifnum\badness<\eql at maxbadness@
+ \eql at adjust@print at alignright\eql at flushleftmarginmin@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@flushleft at shoveright@notag
+ \eql at tagbox@print at right@raise
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at adjust@flushleft at tagsleft@shoveright at tag{%
+ \ifdim\eql at tagwidth@<\eql at flushleftmarginmin@
+ \eql at tagbox@print at left
+ \eql at adjust@flushleft at shoveright@notag
+ \else
+ \ifdim\eql at tagwidth@<\eql at marginleft@
+ \eql at adjust@try\eql at marginleft@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignright\eql at marginleft@\z@
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignright\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@print at alignright\eql at flushleftmarginmin@\z@
+ \fi
+ \fi
+ \else
+ \ifdim\eql at tagwidth@>\eql at flushleftmarginmax@
+ \eql at tagbox@print at left@raise
+ \eql at adjust@flushleft at shoveright@notag
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignright\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@flushleft at shoveright@notag
+ \fi
+ \fi
+ \fi
+ \fi
+ \eql at display@firstavail at set\z@
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at adjust@flushleft at shovecenter{%
+ \eql at error{shove center not implemented for left alignment}%
+}
+\let\eql at adjust@flushleft at tagsright@shovecenter at notag
+ \eql at adjust@flushleft at shovecenter
+\let\eql at adjust@flushleft at tagsright@shovecenter at tag
+ \eql at adjust@flushleft at shovecenter
+\let\eql at adjust@flushleft at tagsleft@shovecenter at notag
+ \eql at adjust@flushleft at shovecenter
+\let\eql at adjust@flushleft at tagsleft@shovecenter at tag
+ \eql at adjust@flushleft at shovecenter
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Single-Line Equation}
+%
+% \TODO describe
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Environment}
+%
+% \begin{macrocode}
+\def\eql at single@cr{%
+ \eql at error{Cannot use `\string\\' within display equation.
+ Please switch to equations environment}%
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at single@start{%
+ \eql at numbering@eval at mode
+ \let\eql at numbering@subeq at use\eql at false
+ \eql at stack@save at single
+% \end{macrocode}
+%
+% \TODO make other display environments push these!?
+% \begin{macrocode}
+ \eql at numbering@single at init
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \ifdefined\eql at single@native
+ \let\eql at single@start at sel\eql at single@start at native
+ \let\eql at single@end at sel\eql at single@end at native
+ \let\raisetag\eql at raisetag@default
+ \else
+ \let\eql at single@start at sel\eql at single@start at adjust
+ \let\eql at single@end at sel\eql at single@end at adjust
+ \fi
+ \ifdefined\eql at single@crerror\else
+ \let\\\eql at single@cr
+ \fi
+ \eql at single@start at sel
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at single@end{%
+ \eql at punct@apply at block
+ \eql at hook@eqout
+ \eql at single@end at sel
+ \eql at stack@restore
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Native}
+%
+% \begin{macrocode}
+\def\eql at single@start at native{%
+% \mathopen{}%
+ \eql at hook@eqin
+}%
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at single@end at native{%
+% \mathclose{}%
+ \if at eqnsw
+ \ifdefined\eql at tagsleft
+ \leqno
+ \else
+ \eqno
+ \fi
+ \eql at compose@print
+ \fi
+ \ifnum\eql at displaybreak@pen@=\@MM\else
+ \postdisplaypenalty\eql at displaybreak@pen@
+ \fi
+}%
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Adjustment}
+%
+% \begin{macrocode}
+\def\eql at single@start at adjust{%
+ \eql at totalrows@\@ne
+ \eql at row@\z@
+ \eql at display@init
+ \let\shoveleft\eql at adjust@shoveleft
+ \let\shovecenter\eql at adjust@shovecenter
+ \let\shoveright\eql at adjust@shoveright
+ \ifdefined\eql at flushleft\else
+ \eql at marginleft@\z@
+ \eql at marginright@\z@
+ \fi
+ \eql at adjust@init
+ \eql at shape@eval
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \eql at row@\@ne
+ \setbox\eql at fieldbox@\hbox\bgroup
+ \eql at restore@hfuzz
+ \eql at strut@field
+ $\m at th\displaystyle%$
+ \eql at hook@eqin
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at single@end at adjust{%
+ $%$
+ \hfil
+ \kern\z@
+ \egroup
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \eql at fieldwidth@\wd\eql at fieldbox@
+ \eql at line@height@\ht\eql at fieldbox@
+ \eql at line@depth@\dp\eql at fieldbox@
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \eql at halign@init{}%
+ \halign{##\cr
+ \noalign{\eql at halign@before}%
+ \if at eqnsw
+ \eql at tagbox@make\eql at compose@print
+ \eql at adjust@sel at tag
+ \else
+ \eql at adjust@sel at notag
+ \fi
+ \cr
+ \noalign{\eql at halign@after}%
+ }%
+ \eql at row@\tw@
+ \eql at display@close
+}
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Multi-Line Support}
+%
+% \TODO describe
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Registers}
+%
+% \macro{\eql at column@}
+% \macro{\eql at totalcolumns@}
+% \begin{macrocode}
+\newcount\eql at column@
+\newcount\eql at totalcolumns@
+% \end{macrocode}
+%
+% \ldimen{\eql at totalwidth@}
+% \begin{macrocode}
+\newdimen\eql at totalwidth@
+% \end{macrocode}
+%
+% \ldimen{\eql at line@width@}
+% \ldimen{\eql at line@avail@}
+% \ldimen{\eql at line@pos@}
+% \begin{macrocode}
+\newdimen\eql at line@width@
+\newdimen\eql at line@avail@
+\newdimen\eql at line@pos@
+% \end{macrocode}
+%
+% \macro{\eql at fieldlength@tab}
+% \macro{\eql at fieldlength@save}
+% \macro{\eql at fieldlength@get}
+% \begin{macrocode}
+\let\eql at fieldlength@tab\@empty
+\def\eql at fieldlength@save#1{%
+ \begingroup
+ \let\or\relax
+ \global\edef\eql at fieldlength@tab{%
+ \eql at fieldlength@tab
+ \ifnum#1=\@ne
+ \or
+ \else
+ ,%
+ \fi
+ \the\wd\eql at fieldbox@
+ }%
+ \endgroup
+}
+\def\eql at fieldlength@get#1{%
+ \ifcase\expandafter#1\eql at fieldlength@tab\fi
+}
+% \end{macrocode}
+%
+% \macro{\eql at tagwidth@get}
+% \macro{\eql at tagwidth@save}
+% \begin{macrocode}
+\let\eql at tagwidth@tab\@empty
+\def\eql at tagwidth@get#1{%
+ \ifcase\expandafter#1\eql at tagwidth@tab\fi
+}
+\def\eql at tagwidth@save{%
+ \begingroup
+ \let\or\relax
+ \global\edef\eql at tagwidth@tab{\eql at tagwidth@tab\or\the\eql at tagwidth@}%
+ \endgroup
+}
+\def\eql at tagwidth@savezero{%
+ \begingroup
+ \let\or\relax
+ \global\edef\eql at tagwidth@tab{\the\eql at tagwidth@\eql at tagwidth@tab}%
+ \endgroup
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Measure Support}
+%
+% \TODO describe
+%
+% \begin{macrocode}
+\def\eql at measure@init#1{%
+ \measuring at true
+ \eql at row@\z@
+ \let\displaybreak\eql at displaybreak@measure
+ \tabskip\z at skip
+ \everycr{%
+ \noalign{%
+ \global\advance\eql at row@\@ne
+ #1%
+ }%
+ }%
+}
+% \end{macrocode}
+%
+% \macro{\eql at measure@restorecounters}
+% \macro{\eql at measure@savecounters}
+% \begin{macrocode}
+\let\eql at measure@restorecounters\@empty
+\def\eql at measure@savecounters{%
+ \begingroup
+ \def\@elt##1{%
+ \global\csname c@##1\endcsname\the\csname c@##1\endcsname}%
+ \global\edef\@gtempa{%
+ \cl@@ckpt
+ \let\noexpand\eql at measure@restorecounters\noexpand\@empty
+ }%
+ \endgroup
+ \let\eql at measure@restorecounters\@gtempa
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Print Support}
+%
+% \TODO describe
+%
+% \macro{\eql at print@inithalign}
+% \begin{macrocode}
+\def\eql at print@init#1{%
+ \eql at row@\z@
+ \eql at halign@init{%
+ \global\eql at displaybreak@pen@\@MM
+ \global\advance\eql at row@\@ne
+ #1%
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at print@overfull{%
+ \dimen@\eql at line@width@
+ \advance\dimen at -\hfuzz
+ \ifdim\dimen@>\displaywidth
+ \setbox\z@\hbox to\displaywidth{\hbox to\eql at line@width@{\hfil}}%
+ \wd\z@\z@
+ \ht\z@\eql at line@height@
+ \dp\z@\eql at line@depth@
+ \box\z@
+ \fi
+}
+% \end{macrocode}
+%
+% \macro{\eql at tagbox@print at multi}
+% \begin{macrocode}
+\def\eql at tagbox@print at multi{%
+ \advance\eql at tagwidth@-\eql at tagfuzz@
+ \ifdefined\eql at tagsleft
+ \eql at display@firstavail at set\z@
+ \ifdim\eql at tagwidth@>\eql at line@avail@
+ \eql at tagbox@print at left@raise
+ \else
+ \eql at tagbox@print at left
+ \fi
+ \kern\displaywidth
+ \else
+ \kern\displaywidth
+ \advance\eql at tagwidth@\eql at line@width@
+ \ifdim\eql at tagwidth@>\displaywidth
+ \eql at tagbox@print at right@raise
+ \else
+ \eql at tagbox@print at right
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Line Breaks}
+%
+% \TODO describe
+%
+% \macro{\eql at math@cr}
+% \begin{macrocode}
+\protected\def\eql at math@cr{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \eql at ampprotecttwo\eql at teststaropt@tight
+ {\global\eql at displaybreak@pen@\@M\eql at math@cr@}\eql at math@cr@\z@}
+% \end{macrocode}
+%
+% \macro{\eql at math@cr@}
+% \begin{macrocode}
+\def\eql at math@cr@[#1]{%
+ \eql at math@cr@@@
+ \cr
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \noalign{%
+ \ifnum\eql at displaybreak@pen@=\@MM
+ \penalty\interdisplaylinepenalty
+ \else
+ \penalty\eql at displaybreak@pen@
+ \fi
+ \addtolength\eql at vspaceskip@{#1}%
+ \vskip\eql at vspaceskip@
+ \global\eql at vspaceskip@\z at skip
+ }%
+}
+% \end{macrocode}
+%
+% \macro{\eql at let@cr}
+% \begin{macrocode}
+\def\eql at let@cr#1{%
+ \let\\\eql at math@cr
+ \let\eql at math@cr@@@#1%
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Intertext}
+%
+% \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}}
+% \end{macrocode}
+%
+% \TODO why does it fail in measuring? total width?!
+% determine total width otherwise!?
+% \begin{macrocode}
+\def\eql at intertext@process#1{%
+ \eql at math@cr@@@
+ \cr
+ \ifmeasuring@\else
+ \expandafter\eql at intertext@print{#1}%
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at intertext@print#1{%
+ \noalign{%
+ \eql at halign@after
+ \eql at setkeys{intertext}\eql at intertext@opt
+ \normalbaselines
+ \penalty\postdisplaypenalty
+ \addtolength\eql at vspaceskip@\belowdisplayskip
+ \vskip\eql at vspaceskip@
+ \global\eql at vspaceskip@\z at skip
+ \vbox{%
+ \@parboxrestore
+ \ifdim
+ \ifdim\@totalleftmargin=\z@\linewidth\else-\maxdimen\fi=\columnwidth
+ \else
+ \parshape\@ne
+ \@totalleftmargin\linewidth
+ \fi
+ \noindent
+ \ignorespaces
+ #1%
+ \par
+ }%
+ \penalty\predisplaypenalty
+ \vskip\abovedisplayskip
+ \eql at halign@prevdepth@\z@
+ \eql at halign@before
+ }
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\newenvironment{eql at intertext}{%
+ \eql at testopt@tight\eql at intertext@{}%
+}{%
+ \aftergroup\eql at intertext@after
+ \ignorespacesafterend
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at intertext@env{intertext}
+\def\eql at intertext@[#1]{%
+ \global\def\eql at intertext@opt{#1}%
+ \ifx\@currenvir\eql at intertext@env
+ \expandafter\eql at scan@env\expandafter\eql at intertext@inject
+ \else
+ \expandafter\eql at intertext@process
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at intertext@inject{%
+ \global\edef\eql at intertext@after{%
+ \noexpand\eql at intertext@process{%
+ \ifx\eql at scan@body\eql at scan@body at dump
+ \eql at scan@body at dump
+ \else
+ \noexpand\scantokens{\eql at scan@body at dump}%
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Main}
+%
+% \TODO note that switching from align to lines mode,
+% the width can be incorrect due to different formatting (punctuation only?!).
+% only minor discrpancies expected and lines can adjust
+% \macro{\eql at multi@main}
+% \begin{macrocode}
+\let\eql at multi@mode at lines\eql at false
+\def\eql at multi@main{%
+ \eql at numbering@eval at mode
+ \eql at stack@save at multi
+ \ifdefined\eql at subequations@active
+ \let\eql at numbering@subeq at use\eql at false
+ \fi
+ \ifdefined\eql at numbering@subeq at use
+ \eql at numbering@subeq at init
+ \fi
+ \let\intertext\eql at intertext
+ \let\endintertext\endeql at intertext
+ \let\shoveleft\eql at adjust@shoveleft
+ \let\shovecenter\eql at adjust@shovecenter
+ \let\shoveright\eql at adjust@shoveright
+ \ifdefined\eql at multi@mode at lines
+ \expandafter\eql at lines@measure
+ \else
+ \ifdefined\eql at ampproof@active
+ \eql at ampproof
+ \fi
+ \expandafter\eql at align@measure
+ \fi
+ \ifx\eql at numbering@subeq at use\@ne
+ \eql at numbering@subeq at revert
+ \fi
+ \ifdefined\eql at multi@mode at lines\else
+ \ifdefined\eql at multi@linesfallback
+ \ifnum\eql at totalcolumns@=\@ne
+ \let\eql at multi@mode at lines\eql at true
+ \eql at shape@set{r}%
+% \eql at lines@measure
+ \fi
+ \fi
+ \fi
+ \ifdefined\eql at multi@mode at lines
+ \expandafter\eql at lines@print
+ \else
+ \expandafter\eql at align@print
+ \fi
+ \ifdefined\eql at numbering@subeq at use
+ \eql at numbering@subeq at close
+ \fi
+ \eql at stack@restore
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \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
+}
+\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@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@end\@empty
+}
+\eql at mode@align
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Multi-Line Lines Mode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Measure}
+%
+% \TODO describe
+%
+% \begin{macrocode}
+\def\eql at lines@measure at line@begin{%
+%<dev>\eql at dev{starting line \the\eql at row@}%
+ \eql at numbering@measure at line@begin
+ \eql at hook@linein
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at lines@measure at line@end{%
+ \eql at punct@apply at line
+ \eql at hook@lineout
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at lines@measure at field{%
+ \kern\wd\eql at fieldbox@
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at lines@measure at tag{%
+ \ifnum\eql at numbering@target@<\z@
+ \if at eqnsw
+ \eql at compose@null
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \macro{\eql at lines@measure}
+% \begin{macrocode}
+\def\eql at lines@measure{%
+%<dev>\eql at dev@enter\eql at lines@measure
+ \eql at measure@savecounters
+ \setbox\z@\vbox{%
+ \eql at numbering@measure at init
+ \eql at measure@init\eql at lines@measure at line@begin
+ \eql at let@cr\eql at lines@measure at line@end
+ \halign{%
+ \setbox\eql at fieldbox@\hbox{%
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ $%
+ }%
+ \eql at lines@measure at field
+ \eql at lines@measure at tag
+ \crcr
+ \noalign{%
+ \eql at hook@blockbefore
+ }%
+ \eql at hook@blockin
+ \eql at scan@body
+ \ifvmode\else
+ \eql at punct@apply at block
+ \eql at hook@blockout
+ \eql at lines@measure at line@end
+ \cr
+ \fi
+ \omit
+ \cr
+ \noalign{%
+ \eql at hook@blockafter
+ }%
+ }%
+ \global\advance\eql at row@-\tw@
+ \eql at numbering@measure at eval
+ }%
+ \eql at totalrows@\eql at row@
+ \setbox\z@\vbox{%
+ \unvbox\z@
+ \unpenalty
+ \global\setbox\@ne\lastbox
+ }%
+ \eql at totalwidth@\wd\@ne
+ \ifdefined\eql at numbering@subeq at use
+ \eql at numbering@subeq at test
+ \fi
+ \eql at measure@restorecounters
+%<dev>\eql at dev@leave\eql at lines@measure
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Print}
+%
+% \TODO describe
+%
+% \macro{\eql at lines@math at cr}
+% \begin{macrocode}
+\def\eql at lines@print at line@begin{%
+%<dev>\eql at dev{starting line \the\eql at row@}%
+ \eql at numbering@print at line@begin
+ \eql at hook@linein
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at lines@print at line@end{%
+ \eql at punct@apply at line
+ \eql at hook@lineout
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at lines@print at line@adjust{%
+ \eql at numbering@print at line@eval
+ \eql at fieldwidth@\wd\eql at fieldbox@
+ \eql at line@height@\ht\eql at fieldbox@
+ \eql at line@depth@\dp\eql at fieldbox@
+ \if at eqnsw
+ \eql at tagbox@make\eql at compose@print
+ \eql at adjust@sel at tag
+ \else
+ \eql at adjust@sel at notag
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at lines@print{%
+%<dev>\eql at dev@enter\eql at lines@print
+ \eql at display@init
+ \ifdefined\eql at flushleft
+% \TODO any init needed here? marginleft is used per line!
+ \else
+ \ifdefined\eql at paddingmax
+ \eql at marginleft@\z@
+ \eql at marginright@\z@
+ \else
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at totalwidth@
+ \advance\dimen at -\eql at tagmargin@
+ \divide\dimen@\tw@
+ \eql at marginleft@\dimen@
+ \advance\eql at marginleft@-\eql at paddingleft@
+ \ifdim\eql at marginleft@<\z@
+ \eql at marginleft@\z@
+ \fi
+ \eql at marginright@\dimen@
+ \advance\eql at marginright@-\eql at paddingright@
+ \ifdim\eql at marginright@<\z@
+ \eql at marginright@\z@
+ \fi
+ \fi
+ \fi
+ \eql at adjust@init
+ \eql at numbering@print at init
+ \eql at print@init\eql at lines@print at line@begin
+ \eql at let@cr\eql at lines@print at line@end
+ \tabskip\z at skip
+ \halign{%
+ \eql at shape@eval
+ \setbox\eql at fieldbox@\hbox{%
+ \eql at restore@hfuzz
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ $%
+ \hfil
+ \kern\z@
+ }%
+ \eql at lines@print at line@adjust
+ \crcr
+ \noalign{%
+ \eql at halign@before
+ \eql at numbering@print at block@begin
+ \eql at hook@blockbefore
+ }%
+% \TODO relax? leavevmode?!
+ \eql at hook@blockin
+ \eql at scan@body
+ \ifvmode\else
+ \eql at punct@apply at block
+ \eql at hook@blockout
+ \eql at lines@print at line@end
+ \cr
+ \fi
+ \noalign{%
+ \eql at hook@blockafter
+ \eql at halign@after
+%<dev>\eql at dev@leave\eql at lines@print
+ }%
+ }%
+ \eql at display@close
+}
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Multi-Line Align Mode}
+%
+% \TODO describe
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Registers}
+%
+% \TODO describe
+%
+% \begin{macrocode}
+\let\eql at align@margins\eql at true
+% \end{macrocode}
+%
+% \macro{\eql at align@inter@}
+% \begin{macrocode}
+\newcount\eql at align@inter@
+% \end{macrocode}
+%
+% \macro{\eql at colwidth@tab}
+% \begin{macrocode}
+\let\eql at colwidth@tab\@empty
+% \end{macrocode}
+%
+% \macro{\eql at align@colwidth at get}
+% \begin{macrocode}
+\def\eql at align@colwidth at get#1{%
+ \ifcase\expandafter#1\eql at colwidth@tab\else\z@\fi
+}
+\def\eql at align@colwidth at save{%
+ \begingroup
+ \let\or\relax
+ \global\edef\eql at colwidth@tab{\or\the\wd\thr@@\eql at colwidth@tab}%
+ \endgroup
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{General Processing, Preamble}
+%
+% \TODO describe
+%
+% \macro{\eql at align@add at amp}
+% \macro{\eql at align@completerow}
+% \begin{macrocode}
+\def\eql at align@add at amp#1{\if m#1&\omit\expandafter\eql at align@add at amp\fi}
+\def\eql at align@completerow#1{%
+ \begingroup
+ \count@#1%
+ \advance\count at -\eql at column@
+\advance\count@\@ne
+ \edef\eql at tmp{\endgroup
+ \expandafter\eql at align@add at amp\romannumeral\number\count@ 000q}%
+ \eql at tmp
+}
+% \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@
+ }%
+ \eql at align@print at field
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Print}
+%
+% \TODO describe
+%
+% \begin{macrocode}
+\def\eql at align@print at field{%
+% \end{macrocode}
+% determine available and used space
+% \begin{macrocode}
+ \dimen@\eql at align@colwidth at get\eql at column@\relax
+ \ifdim\wd\eql at fieldbox@>\z@
+ \ifdim\eql at line@width@=\z@
+ \eql at line@avail@\eql at line@pos@
+ \ifodd\eql at column@
+ \advance\eql at line@avail@\dimen@
+ \advance\eql at line@avail at -\wd\eql at fieldbox@
+ \fi
+ \global\eql at line@avail@\eql at line@avail@
+ \fi
+ \eql at line@width@\eql at line@pos@
+ \ifodd\eql at column@
+ \advance\eql at line@width@\dimen@
+ \else
+ \advance\eql at line@width@\wd\eql at fieldbox@
+ \fi
+ \global\eql at line@width@\eql at line@width@
+ \fi
+ \advance\eql at line@pos@\dimen@
+ \ifodd\eql at column@\else
+ \advance\eql at line@pos@\eql at colsep@
+ \fi
+ \global\eql at line@pos@\eql at line@pos@
+% \end{macrocode}
+% update height and depth
+% \begin{macrocode}
+ \ifdim\ht\eql at fieldbox@>\eql at line@height@
+ \global\eql at line@height@\ht\eql at fieldbox@
+ \fi
+ \ifdim\dp\eql at fieldbox@>\eql at line@depth@
+ \global\eql at line@depth@\dp\eql at fieldbox@
+ \fi
+% \end{macrocode}
+% print box
+% enforce given width:
+% hopefully measure was correct, but need a precise width for tag placement
+% \begin{macrocode}
+%
+% \box\eql at fieldbox@
+%
+% \dimen@\eql at align@colwidth at get\eql at column@\relax
+% \advance\dimen at -\wd\eql at fieldbox@
+% \ifodd\eql at column@
+% \kern\dimen@
+% \box\eql at fieldbox@
+% \else
+% \box\eql at fieldbox@
+% \kern\dimen@
+% \fi
+%
+ \dimen@\eql at align@colwidth at get\eql at column@\relax
+ \ifodd\eql at column@
+ \kern\dimen@
+ \else
+ \advance\dimen at -\wd\eql at fieldbox@
+ \box\eql at fieldbox@
+ \kern\dimen@
+ \fi
+%
+}
+% \end{macrocode}
+%
+% \macro{\eql at align@print at line@begin}
+% \begin{macrocode}
+\def\eql at align@print at line@begin{%
+%<dev>\eql at dev{starting line \the\eql at row@}%
+ \global\eql at column@\z@
+ \global\eql at line@pos@\eql at marginleft@
+ \global\eql at line@width@\z@
+ \global\eql at line@avail@\eql at totalwidth@
+ \global\eql at line@height@\z@
+ \global\eql at line@depth@\z@
+ \eql at numbering@print at line@begin
+ \eql at hook@linein
+}
+% \end{macrocode}
+%
+% \macro{\eql at align@print at line@end}
+% \begin{macrocode}
+\def\eql at align@print at line@end{%
+ \eql at punct@apply at line
+ \eql at hook@lineout
+% \TODO add an even column with empty stuff if box processing deferred
+ \ifodd\eql at column@
+ \expandafter\eql at align@print at trailright
+ \fi
+ \eql at align@completerow\eql at totalcolumns@
+ \eql at align@print at line
+}
+% \end{macrocode}
+%
+% \macro{\eql at align@print at line}
+% \begin{macrocode}
+\def\eql at align@print at line{%
+ \dimen@\eql at totalwidth@
+ \advance\dimen@\eql at colsep@
+ \kern-\dimen@
+% \end{macrocode}
+% determine first line available space
+% \begin{macrocode}
+ \eql at display@firstavail at set\eql at line@avail@
+ \eql at print@overfull
+ \eql at numbering@print at line@eval
+ \if at eqnsw
+ \eql at tagbox@make\eql at compose@print
+ \eql at tagbox@print at multi
+ \else
+ \kern\displaywidth
+ \fi
+}
+% \end{macrocode}
+%
+% \macro{\eql at align@print}
+% \begin{macrocode}
+\def\eql at align@print{%
+%<dev>\eql at dev@enter\eql at align@print
+ \eql at align@adjust
+ \eql at display@init
+ \eql at numbering@print at init
+ \eql at print@init\eql at align@print at line@begin
+ \eql at let@cr\eql at align@print at line@end
+ \tabskip\eql at marginleft@
+ \halign{%
+ \span\eql at align@preamble\eql at colsep@\eql at align@print at field\eql at strut@field
+ \crcr
+ \noalign{%
+ \eql at halign@before
+ \eql at numbering@print at block@begin
+ \eql at hook@blockbefore
+ }%
+ \eql at hook@blockin
+ \eql at scan@body
+ \ifvmode\else
+ \eql at punct@apply at block
+ \eql at hook@blockout
+ \eql at align@print at line@end
+ \cr
+ \fi
+ \noalign{%
+ \eql at hook@blockafter
+ \eql at halign@after
+%<dev>\eql at dev@leave\eql at align@print
+ }%
+ }%
+ \eql at display@close
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Measure}
+%
+% \TODO describe
+%
+% \macro{\eql at align@measure at line@begin}
+% \begin{macrocode}
+\def\eql at align@measure at line@begin{%
+%<dev>\eql at dev{starting line \the\eql at row@}%
+ \global\eql at column@\z@
+ \eql at numbering@measure at line@begin
+ \eql at hook@linein
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at align@measure at field{%
+ \eql at fieldlength@save\eql at column@
+ \kern\wd\eql at fieldbox@
+}
+% \end{macrocode}
+%
+% \macro{\eql at align@measure at line@end}
+% \begin{macrocode}
+\def\eql at align@measure at line@end{%
+ \eql at punct@apply at line
+ \eql at hook@lineout
+ &\omit
+ \ifnum\eql at column@>\eql at totalcolumns@
+ \global\eql at totalcolumns@\eql at column@
+ \fi
+ \eql at align@measure at tag
+}
+% \end{macrocode}
+%
+% \macro{\eql at align@measure at tag}
+% \begin{macrocode}
+\def\eql at align@measure at tag{%
+ \ifnum\eql at numbering@target@<\z@
+ \if at eqnsw
+ \eql at tagbox@make\eql at compose@measure
+ \else
+ \eql at tagwidth@\z@
+ \fi
+ \eql at tagwidth@save
+ \fi
+}
+% \end{macrocode}
+%
+% \macro{\eql at align@measure}
+% \begin{macrocode}
+\def\eql at align@measure{%
+%<dev>\eql at dev@enter\eql at align@measure
+ \eql at totalcolumns@\z@
+ \let\eql at tagwidth@tab\@empty
+ \let\eql at fieldlength@tab\@empty
+ \eql at measure@savecounters
+ \setbox\z@\vbox{%
+ \eql at numbering@measure at init
+ \eql at measure@init\eql at align@measure at line@begin
+ \eql at let@cr\eql at align@measure at line@end
+ \halign{%
+ \span\eql at align@preamble\z at skip\eql at align@measure at field\relax
+ \crcr
+ \noalign{%
+ \eql at hook@blockbefore
+ }%
+ \eql at hook@blockin
+ \eql at scan@body
+% \end{macrocode}
+% \TODO test for vmode okay?!
+% \begin{macrocode}
+ \ifvmode\else
+ \eql at punct@apply at block
+ \eql at hook@blockout
+ \eql at align@measure at line@end
+ \cr
+ \fi
+ \noalign{%
+ \eql at hook@blockafter
+ }%
+% \end{macrocode}
+% \TODO should we enforce even columns already here?!
+% \TODO should we guard against no columns at all?!
+% \begin{macrocode}
+ \eql at align@completerow\eql at totalcolumns@
+ \cr
+ }%
+ \global\advance\eql at row@-\tw@
+ \eql at numbering@measure at eval
+ \ifnum\eql at numbering@target@>\z@
+ \eql at tagbox@make\eql at compose@measure
+ \eql at tagwidth@savezero
+ \fi
+ }%
+ \eql at totalrows@\eql at row@
+ \ifdefined\eql at numbering@subeq at use
+ \eql at numbering@subeq at test
+ \fi
+ \eql at measure@restorecounters
+% \eql at totalwidth@\wd\z@
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \setbox\z@\vbox{%
+ \unvbox\z@
+ \unpenalty
+ \global\setbox\@ne\lastbox
+ }%
+% \end{macrocode}
+%
+% \begin{macrocode}
+% \TODO or this one?!
+ \eql at totalwidth@\wd\@ne
+% \end{macrocode}
+%
+% \TODO why not recycle box contents altogether?!
+% \begin{macrocode}
+ \let\eql at colwidth@tab\@empty
+ \loop
+ \setbox\@ne\hbox{%
+ \unhbox\@ne
+ \unskip
+ \global\setbox\thr@@\lastbox
+ }%
+ \ifhbox\thr@@
+ \eql at align@colwidth at save
+ \repeat
+%<dev>\eql at dev@leave\eql at align@measure
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Adjust}
+%
+% \TODO describe
+%
+% \TODO does this respect the margin for numbers in centre mode?
+%
+% \begin{macrocode}
+\def\eql at align@adjust{%
+% \end{macrocode}
+%
+% \TODO shouldn't we do this earlier for access to last column?
+% \begin{macrocode}
+ \ifodd\eql at totalcolumns@
+ \advance\eql at totalcolumns@\@ne
+ \fi
+% \end{macrocode}
+%
+% \TODO should we guard against no columns?!
+% \begin{macrocode}
+ \ifnum\eql at totalcolumns@<\thr@@
+ \let\eql at align@margins\eql at true
+ \fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \eql at align@inter@\eql at totalcolumns@
+ \divide\eql at align@inter@\tw@
+ \advance\eql at align@inter@\m at ne
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \eql at colsep@\displaywidth
+ \advance\eql at colsep@-\eql at totalwidth@
+ \ifdefined\eql at flushleft
+ \advance\eql at colsep@-\eql at flushleftmargin@
+ \fi
+ \count@\eql at align@inter@
+ \ifdefined\eql at align@margins
+ \ifdefined\eql at flushleft
+ \advance\count@\@ne
+ \else
+ \advance\count@\tw@
+ \fi
+ \fi
+ \divide\eql at colsep@\count@
+% \end{macrocode}
+% \TODO here or above, this code does not make much sense
+% if there is a single column. nevertheless
+% it works using the following code.
+% yet it could be cleaner to treat a single column separately
+% (may be some distinctions based on flushleft)
+% \begin{macrocode}
+ \ifdim\eql at colsep@<\eql at colsepmin@
+ \eql at colsep@\eql at colsepmin@
+ \else
+ \ifdim\eql at colsep@>\eql at colsepmax@
+ \eql at colsep@\eql at colsepmax@
+ \fi
+ \fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \ifdefined\eql at flushleft
+ \ifdim\eql at colsep@=\eql at colsepmin@
+ \eql at marginleft@\displaywidth
+ \advance\eql at marginleft@-\eql at totalwidth@
+ \advance\eql at marginleft@-\eql at align@inter@\eql at colsep@
+ \ifdim\eql at marginleft@>\eql at flushleftmargin@
+ \eql at marginleft@\eql at flushleftmargin@
+ \else
+ \ifdim\eql at marginleft@<\eql at flushleftmarginmin@
+ \eql at marginleft@\eql at flushleftmarginmin@
+ \fi
+ \fi
+ \else
+ \eql at marginleft@\eql at flushleftmargin@
+ \fi
+ \else
+ \ifdefined\eql at align@margins
+ \eql at marginleft@\displaywidth
+ \advance\eql at marginleft@-\eql at totalwidth@
+ \advance\eql at marginleft@-\eql at align@inter@\eql at colsep@
+ \ifdim\eql at marginleft@<\eql at tagmargin@
+ \ifdim\ifdefined\eql at tagsleft\eql at marginleft@\else-\p@\fi<\z@
+ \eql at marginleft@\z@
+ \fi
+ \else
+ \advance\eql at marginleft@-\eql at tagmargin@
+ \divide\eql at marginleft@\tw@
+ \fi
+ \else
+ \eql at marginleft@\z@
+ \fi
+ \fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \ifdefined\eql at tagsleft
+ \let\eql at align@adjust at test\eql at align@adjust at test@tagleft
+ \else
+ \let\eql at align@adjust at test\eql at align@adjust at test@tagright
+ \fi
+ \loop\ifnum\eql at row@>\z@
+ \ifnum\eql at numbering@target@<\z@
+ \eql at tagwidth@\eql at tagwidth@get\eql at row@\relax
+ \else
+ \ifnum\eql at numbering@target@=\eql at row@
+ \eql at tagwidth@\eql at tagwidth@get\z@\relax
+ \fi
+ \fi
+ \ifdim\eql at tagwidth@>\z@
+ \eql at align@adjust at width
+ \eql at align@adjust at test
+ \fi
+ \advance\eql at row@\m at ne
+ \repeat
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \advance\eql at totalwidth@\eql at align@inter@\eql at colsep@
+ \advance\eql at totalwidth@\eql at marginleft@
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Calc Space.}
+%
+% \TODO describe
+%
+% \begin{macrocode}
+\def\eql at align@adjust at width{%
+ \eql at line@pos@\z@
+ \eql at column@\z@
+ \eql at line@avail@\eql at totalwidth@
+ \@tempcnta\eql at totalcolumns@
+ \eql at line@width@\z@
+ \@tempcntb\z@
+ \edef\@tempb{\eql at fieldlength@get\eql at row@}%
+ \@for\@tempa:=\@tempb\do
+ \eql at align@adjust at width@col
+ \advance\@tempcnta\m at ne
+ \divide\@tempcnta\tw@
+ \advance\@tempcntb\m at ne
+ \divide\@tempcntb\tw@
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at align@adjust at width@col{%
+ \advance\eql at column@\@ne
+ \@tempdima\@tempa\relax
+ \dimen@\eql at align@colwidth at get\eql at column@\relax
+ \ifdim\@tempdima>\z@
+ \ifdim\eql at line@width@=\z@
+ \eql at line@avail@\eql at line@pos@
+ \@tempcnta\eql at column@
+ \ifodd\eql at column@
+ \advance\eql at line@avail@\dimen@
+ \advance\eql at line@avail at -\@tempdima
+ \fi
+ \fi
+ \eql at line@width@\eql at line@pos@
+ \@tempcntb\eql at column@
+ \ifodd\eql at column@
+ \advance\eql at line@width@\dimen@
+ \else
+ \advance\eql at line@width@\@tempdima
+ \fi
+ \fi
+ \advance\eql at line@pos@\dimen@
+}
+% \end{macrocode}
+
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Placement for right tags.}
+%
+% \TODO describe
+%
+% \macro{\eql at align@adjust at test@r}
+% \begin{macrocode}
+\def\eql at align@adjust at test@tagright{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \@tempdima\eql at line@width@
+ \advance\@tempdima\eql at tagwidth@
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \dimen@\eql at marginleft@
+ \advance\dimen@\@tempdima
+ \advance\dimen@\@tempcntb\eql at colsep@
+ \ifdim\dimen@>\displaywidth
+ \eql at align@adjust at modify@tagright
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at align@adjust at modify@tagright{%
+ \dimen@\eql at colsepmin@
+ \multiply\dimen@\@tempcntb
+ \advance\dimen@\@tempdima
+ \ifdefined\eql at flushleft
+ \advance\dimen@\eql at flushleftmarginmin@
+ \fi
+ \ifdim\dimen@>\displaywidth\else
+% \end{macrocode}
+%
+% \TODO check full length case?
+% are the shifts sufficient in all possible cases?!
+% is the left margin positive?!
+% \begin{macrocode}
+ \ifnum\@tempcntb>\z@
+ \dimen@\displaywidth
+ \advance\dimen at -\@tempdima
+ \count@\@tempcntb
+ \ifdefined\eql at flushleft
+ \advance\dimen at -\eql at marginleft@
+ \else
+ \ifdefined\eql at align@margins
+ \advance\count@\@ne
+ \fi
+ \fi
+ \divide\dimen@\count@
+ \ifdim\dimen@<\eql at colsep@
+ \ifdim\dimen@<\eql at colsepmin@
+ \dimen@\eql at colsepmin@
+ \fi
+ \eql at colsep@\dimen@
+ \fi
+ \fi
+% \end{macrocode}
+%
+% \TODO could this possibly be less than the minimum margin?
+% (we checked above, but under the assumption that
+% |\eql at colsep@| is minimal!)
+% \begin{macrocode}
+ \dimen@\displaywidth
+ \advance\dimen at -\@tempdima
+ \advance\dimen at -\@tempcntb\eql at colsep@
+ \ifdim\dimen@<\eql at marginleft@
+ \eql at marginleft@\dimen@
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Placement for left tags.}
+%
+% \TODO describe
+%
+% \begin{macrocode}
+\def\eql at align@adjust at test@tagleft{%
+ \count@\eql at align@inter@
+ \advance\count at -\@tempcnta
+ \@tempdima-\eql at line@avail@
+ \advance\@tempdima\eql at tagwidth@
+ \dimen@\eql at marginleft@
+ \advance\dimen@\@tempcnta\eql at colsep@
+ \ifdim\dimen@<\@tempdima
+ \eql at align@adjust at modify@tagleft
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at align@adjust at modify@tagleft{%
+% \end{macrocode}
+% \TODO implement a maximum shift (if tag+sep exceeds max, don't adjust)
+% \TODO could this mechanism possibly shift any longer line past the margin?!
+% \begin{macrocode}
+ \ifdefined\eql at flushleft
+ \dimen@\eql at flushleftmarginmax@
+ \else
+ \dimen@\displaywidth
+ \fi
+ \ifdim\dimen@>\eql at tagwidth@
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \dimen@\eql at colsepmin@
+ \multiply\dimen@\count@
+ \advance\dimen@\eql at totalwidth@
+ \advance\dimen@\@tempdima
+ \ifdim\dimen@>\displaywidth\else
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \ifnum\count@>0
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at totalwidth@
+ \advance\dimen at -\@tempdima
+ \ifdefined\eql at align@margins
+ \advance\count@\@ne
+ \fi
+ \divide\dimen@\count@
+ \ifdim\dimen@<\eql at colsep@
+ \ifdim\dimen@<\eql at colsepmin@
+ \dimen@\eql at colsepmin@
+ \fi
+ \advance\dimen at -\eql at colsep@
+ \advance\eql at marginleft@-\eql at align@inter@\dimen@
+ \advance\eql at colsep@\dimen@
+ \fi
+ \fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \dimen at -\@tempcnta\eql at colsep@
+ \advance\dimen@\@tempdima
+ \ifdim\dimen@>\eql at marginleft@
+ \eql at marginleft@\dimen@
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Interface}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Scanning the Environment's Body}
+%
+% The multi-line equatiuon environment must scan its body twice:
+% once to determine how wide the columns are and then to actually
+% typeset them. This means that we must collect all text in this body
+% before calling the environment macros.
+% The mechanism and its description follows \ctanpkg{amsmath} closely.
+%
+% \macro{\eql at scan@reg@}
+% We start by defining a token register to contain the body.
+% \begin{macrocode}
+\newtoks\eql at scan@reg@
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at scan@body at dump{\the\eql at scan@reg@}
+\def\eql at scan@body at rescan{%
+ \expandafter\scantokens\expandafter{\the\eql at scan@reg@}}
+\let\eql at scan@body\eql at scan@body at dump
+% \end{macrocode}
+%
+% \macro{\eql at scan@addto}
+% Then we define a macro to add something (i.e.\ its argument) to the
+% token register |\@envbody|:
+% \begin{macrocode}
+\def\eql at scan@addto#1{\eql at scan@reg@\expandafter{\the\eql at scan@reg@#1}}
+% \end{macrocode}
+%
+% \macro{\eql at scan@env}
+% The macro |\eql at scan@env| starts the scan for the |\end{...}|
+% command of the current environment. It takes a macro name as
+% argument. This macro is supposed to take the whole body of the
+% environment as its argument:
+% \begin{macrocode}
+\def\eql at scan@env#1{%
+%<dev>\eql at dev@enter\eql at scan@env
+ \def\eql at scan@end{#1\expandafter\end\expandafter{\@currenvir}}%
+ \eql at scan@reg@{}\def\eql at scan@stack{b}%
+% \end{macrocode}
+% If we simply called |\eql at scan@env at iterate| directly,
+% the error message for a |\par| token (usually from a blank line)
+% would refer to |\eql at scan@env at iterate| which would not be illuminating.
+% We use a little finesse to get a more intelligible error message:
+% We use the actual
+% 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
+ \eql at scan@iterate
+}
+% \end{macrocode}
+%
+% \macro{\eql at scan@env at count}
+% When adding a piece of the current environment's contents to
+% |\eql at scan@reg@|, we scan it to check for additional |\begin|
+% tokens, and add a `b' to the stack for any that we find.
+% \begin{macrocode}
+\def\eql at scan@env at count#1\begin#2{%
+ \ifx\end#2\else b\expandafter\eql at scan@env at count\fi
+}
+% \end{macrocode}
+%
+% \macro{\eql at scan@env at iterate}
+% |\eql at scan@env at iterate| takes two arguments: the first will consist of
+% all text up to the next |\end| command, the second will be the
+% |\end| command's argument. If there are any extra |\begin|
+% commands in the body text, a marker is pushed onto a stack by the
+% |\push at begins| function. Empty state for this stack means that we
+% have reached the |\end| that matches our original |\begin|.
+% Otherwise we need to include the |\end| and its argument in the
+% material that we are adding to our environment body accumulator:
+% \begin{macrocode}
+\def\eql at scan@env at iterate#1\end#2{%
+ \edef\eql at scan@stack{%
+ \eql at scan@env at count#1\begin\end\expandafter\@gobble\eql at scan@stack}%
+ \ifx\@empty\eql at scan@stack
+ \@checkend{#2}%
+ \eql at scan@addto{#1}%
+ \expandafter\let\eql at scan@iterate\eql at scan@env at org
+%<dev>\eql at dev@leave\eql at scan@env
+ \expandafter\eql at scan@end
+ \else
+ \eql at scan@addto{#1\end{#2}}%
+ \expandafter\eql at scan@iterate
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at scan@env at cancel{%
+ \@namedef{end\@currenvir}{\ignorespacesafterend}%
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{square brackets}
+%
+% \TODO describe
+%
+% \begin{macrocode}
+\def\eql at scan@sqr#1{%
+%<dev>\eql at dev@enter\eql at scan@sqr
+ \def\eql at scan@end{#1\]}%
+ \eql at scan@reg@{}\def\eql at scan@stack{b}%
+ \let\eql at scan@sqr at org\[%\]
+ \let\[\eql at scan@sqr at iterate%\]
+ \[%\]
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at scan@sqr at count#1\[#2{%\]
+ \ifx\]#2\else b\expandafter\eql at scan@sqr at count\fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at scan@sqr at iterate#1\]{%
+ \edef\eql at scan@stack{%
+ \eql at scan@sqr at count#1\[\]\expandafter\@gobble\eql at scan@stack}%
+ \ifx\@empty\eql at scan@stack
+ \let\[\eql at scan@sqr at org%\]
+ \eql at scan@addto{#1}%
+%<dev>\eql at dev@leave\eql at scan@sqr
+ \expandafter\eql at scan@end
+ \else
+ \eql at scan@addto{#1\]}%
+ \expandafter\[%\]
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at scan@sqrang at cancel{\ignorespaces}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{anuglar brackets}
+%
+% \TODO describe
+%
+% \begin{macrocode}
+\def\eql at scan@ang#1{%
+%<dev>\eql at dev@enter\eql at scan@ang
+ \def\eql at scan@end{#1\>}%
+ \eql at scan@reg@{}\def\eql at scan@stack{b}%
+ \let\eql at scan@ang at org\<%\>
+ \let\<\eql at scan@ang at iterate%\>
+ \<%\>
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at scan@ang at count#1\<#2{%\>
+ \ifx\>#2\else b\expandafter\eql at scan@ang at count\fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at scan@ang at iterate#1\>{%
+ \edef\eql at scan@stack{%
+ \eql at scan@ang at count#1\<\>\expandafter\@gobble\eql at scan@stack}%
+ \ifx\@empty\eql at scan@stack
+ \let\<\eql at scan@ang at org%\>
+ \eql at scan@addto{#1}%
+%<dev>\eql at dev@leave\eql at scan@ang
+ \expandafter\eql at scan@end
+ \else
+ \eql at scan@addto{#1\>}%
+ \expandafter\<%\>
+ \fi
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Options Processing}
+%
+% \begin{macrocode}
+\def\eql at equations@testall{\eql at equations@testtilde}
+\def\eql at equations@testtilde#1{%
+ \eql at ifnextgobble@tight~%
+ {\eqnaddopt{lines}\eql at equations@testopt{#1}}%
+ {\eql at equations@testopt{#1}}}
+\def\eql at equations@testopt#1{%
+ \eql at ifnextchar@tight[%]
+ {\eql at equations@addopt{\eql at equations@testexcl{#1}}}%
+ {\eql at equations@testexcl{#1}}}
+\def\eql at equations@addopt#1[#2]{\eqnaddopt{#2}#1}
+\def\eql at equations@testexcl#1{%
+ \eql at ifnextgobble@tight!%
+ {\eqnaddopt{donumber}\eql at equations@testat{#1}}%
+ {\eql at equations@teststar{#1}}}
+\def\eql at equations@teststar#1{%
+ \eql at ifstar@tight%
+ {\eqnaddopt{nonumber}\eql at equations@testat{#1}}%
+ {\eql at equations@testat{#1}}}
+\def\eql at equations@testat#1{%
+ \eql at ifat@tight
+ {\eql at equations@addlabel{#1}}%
+ {#1}}
+\def\eql at equations@addlabel#1#2{\eqnaddopt{label={#2}}#1}
+\def\eql at equations@processopt{%
+ \let\eql at blocklabel\@undefined
+ \let\eql at blocktag\@undefined
+ \let\eql at display@doatend\@empty
+ \eql at abovespace@\z at skip
+ \eql at belowspace@\z at skip
+ \eql at displaybreak@prepen@\@MM
+ \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
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Environments}
+%
+% \environment{equations}
+% \begin{macrocode}
+\newenvironment{equations}{%
+%<dev>\eql at dev@enterenv
+ \ifmmode
+ \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
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at equations@start{%
+ \eql at equations@processopt
+ \ifdefined\eql at equations@mode at single
+ \expandafter\eql at single@start
+ \else
+ \expandafter\eql at scan@env\expandafter\eql at multi@main
+ \fi
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{square and angle brackets}
+%
+% \begin{macrocode}
+\def\eql at equations@sqr at opt{equation,nonumber}
+\protected\def\eql at equations@sqr at open{%
+ \ifmmode
+ \eql at error@mathmode{\string\[...\string\]}%
+ \expandafter\eql at scan@sqr\expandafter\eql at scan@sqrang at cancel
+ \else
+%<dev>\eql at dev@enter{\[...\string\]}%
+ \expandafter\eqnaddopt\expandafter{\eql at equations@sqr at opt}%
+ \eql at halign@catchprevdepth
+ $$%$$
+ \expandafter\eql at ampprotect\expandafter\eql at equations@testall
+ \expandafter\eql at equations@sqr at start
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at equations@ang at opt{align,nonumber}
+\protected\def\eql at equations@ang at open{%
+ \ifmmode
+ \eql at error@mathmode{\string\<...\string\>}%
+ \expandafter\eql at scan@ang\expandafter\eql at scan@sqrang at cancel
+ \else
+%<dev>\eql at dev@enter{\<...\string\>}%
+ \expandafter\eqnaddopt\expandafter{\eql at equations@ang at opt}%
+ \eql at halign@catchprevdepth
+ $$%$$
+ \expandafter\eql at ampprotect\expandafter\eql at equations@testall
+ \expandafter\eql at equations@ang at start
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at equations@sqr at start{%
+ \eql at equations@processopt
+ \ifdefined\eql at equations@mode at single
+ \expandafter\eql at single@start
+ \else
+ \expandafter\eql at scan@sqr\expandafter\eql at multi@main
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eql at equations@ang at start{%
+ \eql at equations@processopt
+ \ifdefined\eql at equations@mode at single
+ \expandafter\eql at single@start
+ \else
+ \expandafter\eql at scan@ang\expandafter\eql at multi@main
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\protected\def\eql at equations@sqr at close{%
+ \eql at equations@end
+ $$%$$
+%<dev>\eql at dev@leave{\[...\string\]}%
+ \ignorespaces
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\protected\def\eql at equations@ang at close{%
+ \eql at equations@end
+ $$%$$
+%<dev>\eql at dev@leave{\<...\string\>}%
+ \ignorespaces
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Independent Routines of amsmath}
+%
+% \macro{\eqref}
+% \ctanpkg{amsmath} defines the macro |\eqref|
+% to refer to equation labels in a proper format
+% We provide it for completeness:
+% \TODO versions of eqref for ranges (optional argument) or lists (,)?
+% \begin{macrocode}
+\DeclareRobustCommand{\eql at eqref}[1]{\textup{\tagform@{\ref{#1}}}}
+% \end{macrocode}
+%
+% \macro{\numberwithin}
+% \ctanpkg{amsmath} defines the macro |\numberwithin|
+% to specify that equations should be numbered within sections.
+% The \LaTeX{} kernel contains a similar command
+% |\counterwithin| (with a slightly extended syntax) that can be used
+% as a drop-in replacement for |\numberwithin|:
+% \begin{macrocode}
+\DeclareRobustCommand{\eql at numberwithin}[3][\arabic]{%
+ \@ifundefined{c@#2}{\@nocounterr{#2}}{%
+ \@ifundefined{c@#3}{\@nocounterr{#3}}{%
+ \ifdefined\HyOrg at addtoreset
+ \HyOrg at addtoreset{#2}{#3}%
+ \else
+ \@addtoreset{#2}{#3}%
+ \fi
+ \expandafter\xdef\csname the#2\endcsname{%
+ \expandafter\noexpand\csname the#3\endcsname.\noexpand#1{#2}}%
+ \ifdefined\theHequation
+ \expandafter\xdef\csname theH#2\endcsname{%
+ \expandafter\noexpand
+ \csname the\@ifundefined{theH#3}{}H#3\endcsname.%
+ \noexpand\arabic{#2}}%
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+%
+% \imacro{\allowdisplaybreaks}
+% \ctanpkg{amsmath} defines the macro |\allowdisplaybreaks|
+% which we also provide for completeness.
+% The package uses the general setup mechanism instead:
+% \begin{macrocode}
+\DeclareRobustCommand{\eql at allowdisplaybreaks}[1][4]{%
+ \eqnlinesset{allowbreaks=#1}%
+}
+% \end{macrocode}
+%
+% \imacro{\notag}
+% \ctanpkg{amsmath} defines the alias |\notag| for |\nonumber|
+% which we also provide for completeness:
+% \begin{macrocode}
+\newcommand{\eql at notag}{\nonumber}
+% \end{macrocode}
+%
+% \imacro{\thetag}
+% \ctanpkg{amsmath} defines |\thetag| to print a tag
+% which we also provide for completeness:
+% \begin{macrocode}
+\newcommand{\eql at thetag}{\leavevmode\tagform@}
+% \end{macrocode}
+%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Options}
+%
+% The package uses the \ctanpkg{keyval} mechanism to parse
+% key-value pairs to specify adjustments to the behaviour
+% of the equations environments:
+% \begin{macrocode}
+\RequirePackage{keyval}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Selection Tools}
+%
+% \macro{\eql at decide@select}
+% Some parameter values take values in a given set,
+% e.g.\ |true| vs.\ |false| or |left| vs.\ |right|.
+% The macro |\eql at decide@select| is a general purpose selector.
+% Arguments |#1| and |#2| describe the category and key
+% which are used only towards error messages.
+% Argument |#3| contains the value and argument |#4|
+% is a list of values and corresponding actions in the format
+% $$
+% |{{{|\textit{val1a}|,|\textit{val1b}|,|\ldots|}{|\textit{act1}|},|
+% |{{|\textit{val2a}|,|\textit{val2b}|,|\ldots|}{|\textit{act2}|},|
+% \ldots|}|.
+% $$
+% If no corresponding value is found in the list,
+% an error message is invoked.
+% Single expansion is applied to the list of values:
+% \begin{macrocode}
+\def\eql at decide@select#1#2#3#4{%
+ \def\@tempa{#3}%
+ \let\@tempd\@undefined
+ \@for\@tempc:=#4\do{%
+ \ifdefined\@tempd\else
+ \edef\@tempb{\noexpand\@tempb:=\expandafter\@firstoftwo\@tempc}%
+ \expandafter\@for\@tempb\do{%
+ \ifx\@tempa\@tempb
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter\@tempd
+ \expandafter\expandafter\expandafter{%
+ \expandafter\@secondoftwo\@tempc}%
+ \fi
+ }%
+ \fi
+ }%
+ \ifdefined\@tempd
+ \@tempd
+ \else
+ \eql at error{undefined value `#3' for option `#2' of `#1'}%
+ \fi
+}
+% \end{macrocode}
+%
+% \macro{\eql at decide@if}
+% We will often have to decide between |true| and |false| or related
+% pairs of values:
+% \begin{macrocode}
+\def\eql at decide@if#1#2#3#4#5{%
+ \eql at decide@select{#1}{#2}{#3}{%
+ {{on,true,yes,enabled,1}{#4}},%
+ {{off,false,no,disabled,0}{#5}}}}
+% \end{macrocode}
+%
+% \macro{\eql at decide@bool}
+% Boolean values frequently need to be stored into conditional registers:
+% \begin{macrocode}
+\def\eql at decide@bool#1#2#3#4{%
+ \eql at decide@if{#1}{#2}{#3}{\let#4\eql at true}{\let#4\eql at false}}
+% \end{macrocode}
+%
+% \macro{\eql at decide@abovebelow}
+% \TODO describe
+% \begin{macrocode}
+\def\eql at decide@abovebelow#1#2#3#4#5{%
+ \eql at decide@select{#1}{#2}{#3}{%
+ {,abovebelow,both,tb}{#4#5},%
+ {above,top,t}{#4},%
+ {below,bottom,b}{#5}}%
+ }
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Declaration Code}
+%
+% \macro{\eql at define@key}
+% For convenience, we define a wrapper for \ctanpkg{keyval}'s |\define at key|
+% which accepts lists of categories and keys.
+% We prepend the prefix |eql@| to all our categories so that it is hidden
+% from the user in error messages:
+% \begin{macrocode}
+\def\eql at define@key#1#2{%
+ \eql at ifnextchar@loose[%]
+ {\eql at definekey@opt{#1}{#2}}%
+ {\eql at definekey@noopt{#1}{#2}}%
+}
+\def\eql at definekey@noopt#1#2#3{\eql at definekey@for{#1}{#2}{{#3}}}
+\def\eql at definekey@opt#1#2[#3]#4{\eql at definekey@for{#1}{#2}{[#3]{#4}}}
+\def\eql at definekey@for#1#2#3{%
+ \def\eql at for@fn##1##2##3{\define at key{eql@##3}{##2}#3}%
+ \edef\eql at for@vara{\noexpand\eql at for@vara:=#1}%
+ \expandafter\@for\eql at for@vara\do{%
+ \edef\eql at for@varb{\noexpand\eql at for@varb:=#2}%
+ \expandafter\@for\eql at for@varb\do{%
+ \edef\eql at for@call##1{%
+ \noexpand\eql at for@fn{##1}{\eql at for@varb}{\eql at for@vara}}%
+ \eql at for@call{##1}%
+ }%
+ }%
+}
+% \end{macrocode}
+%
+% \macro{\eql at setkeys}
+% Our wrapper of \ctanpkg{keyval}'s |\setkeys|
+% 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 tmp{\setkeys{eql@#1}}%
+ \expandafter\eql at tmp\expandafter{#2}%
+}
+% \end{macrocode}
+%
+% \macro{\eql at nextopt}
+% \macro{\eql at nextopt@process}
+% \macro{\eqnaddopt}
+% It can be convenient to add arguments to the following
+% equations environment, e.g.\ towards defining
+% modifier macros:
+% \begin{macrocode}
+\let\eql at nextopt\@empty
+\def\eql at nextopt@process#1{%
+%<dev>\eql at dev@start\eql at nextopt@process
+ \eql at setkeys{#1}\eql at nextopt
+ \global\let\eql at nextopt\@empty
+}
+\newcommand{\eqnaddopt}[1]{%
+ \expandafter\def\expandafter\eql at nextopt\expandafter{\eql at nextopt,#1}}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Options Declarations}
+%
+% \TODO describe
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Modes for Equations Box Environment.}
+%
+% \TODO describe
+% \begin{macrocode}
+\eql at define@key{equationsbox}{gathered,gather,ga,lines,lined,ln,\string~}[]{%
+ \eql at mode@lined}
+\eql at define@key{equationsbox}{aligned,align,al,columns,col,@}[]{%
+ \eql at mode@aligned}
+\eql at define@key{equationsbox}{top,t}[]{\let\eql at box@box\vtop}
+\eql at define@key{equationsbox}{center,c}[]{\let\eql at box@box\vcenter}
+\eql at define@key{equationsbox}{bottom,b}[]{\let\eql at box@box\vbox}
+\eql at define@key{equationsbox}{colsep}{\def\eql at box@colsep{#1}}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Modes for Equations Environment.}
+%
+% \TODO describe
+% \begin{macrocode}
+\eql at define@key{equations}{equation,eq,single,1}[]{\eql at mode@equation}
+\eql at define@key{equations}{gathered,gather,ga,lines,lined,ln,\string~}[]{%
+ \eql at mode@lines}
+\eql at define@key{equations}{aligned,align,al,columns,col,@}[]{%
+ \eql at mode@align}
+\eql at define@key{equations}{native}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at single@native%
+ \ifdefined\eql at single@native\let\eql at flushleft\eql at false\fi}
+\eql at define@key{setup}{native}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at single@native}
+\eql at define@key{setup}{sqropt}[]{%
+ \def\eql at equations@sqr at opt{equation,#1}}
+\eql at define@key{setup}{angopt}[]{%
+ \def\eql at equations@ang at opt{align,#1}}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Vertical Spacing.}
+%
+% \TODO set at end of env only!
+% \TODO describe
+% \begin{macrocode}
+\def\eql at keycat{equations,equationsbox,setup}
+\eql at define@key\eql at keycat{spread}[\jot]{\def\eql at spread{#1}}
+\eql at define@key\eql at keycat{strut}[true]{\eql at decide@if{#3}{#2}{#1}%
+ {\let\eql at strut@field\eql at strut}{\let\eql at strut@field\relax}}
+\eql at define@key\eql at keycat{struttag}[true]{\eql at decide@if{#3}{#2}{#1}%
+ {\let\eql at strut@tag\eql at strut}{\let\eql at strut@tag\relax}}
+% \end{macrocode}
+%
+% \TODO describe
+% \TODO maybe also add pre and post variants? for general setup?
+% \begin{macrocode}
+\eql at define@key{equations}{displaybreak}[4]{\eql at displaybreak@pre{#1}}
+\def\eql at keycat{equations,setup}
+\eql at define@key\eql at keycat{allowbreaks,allowdisplaybreaks}[4]{%
+ \interdisplaylinepenalty\eql at getdsp@pen{#1}\relax}
+\eql at define@key\eql at keycat{displayheight}[\ht\eql at strutbox@]{%
+ \def\eql at display@height{#1}}
+\eql at define@key\eql at keycat{displaydepth}[\dp\eql at strutbox@]{%
+ \def\eql at display@depth{#1}}
+% \end{macrocode}
+%
+% \TODO describe
+% \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}[]{%
+ \eql at decide@abovebelow{#3}{#2}{#1}%
+ {\eql at display@atend{%
+ \abovedisplayskip\abovedisplayshortskip}}%
+ {\eql at display@atend{%
+ \belowdisplayskip\belowdisplayshortskip}}}
+\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}}}
+\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@}}}
+% \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}}
+\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}}
+\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}}
+\eql at define@key{equations}{abovespace}{%
+ \addtolength\eql at abovespace@{#1}}
+\eql at define@key{equations}{belowspace}{%
+ \addtolength\eql at belowspace@{#1}}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\eql at define@key{intertext}{skip}{%
+ \setlength\abovedisplayskip{#1}\belowdisplayskip\abovedisplayskip}
+\eql at define@key{intertext}{aboveskip}{%
+ \setlength\belowdisplayskip{#1}}
+\eql at define@key{intertext}{belowskip}{%
+ \setlength\abovedisplayskip{#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}}
+\eql at define@key{intertext}{short}[]{%
+ \eql at decide@abovebelow{#3}{#2}{#1}%
+ {\belowdisplayskip\belowdisplayshortskip}%
+ {\abovedisplayskip\abovedisplayshortskip}}
+\eql at define@key{intertext}{long}[]{%
+ \eql at decide@abovebelow{#3}{#2}{#1}%
+ {\belowdisplayshortskip\belowdisplayskip}%
+ {\abovedisplayshortskip\abovedisplayskip}}
+\eql at define@key{intertext}{medskip}[]{%
+ \eql at decide@abovebelow{#3}{#2}{#1}%
+ {\belowdisplayskip\eql at belowdisplaymedskip@}%
+ {\abovedisplayskip\eql at abovedisplaymedskip@}}
+% \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}{aboveshortskip}{%
+ \setlength\abovedisplayshortskip{#1}}
+\eql at define@key{setup}{belowshortskip}{%
+ \setlength\belowdisplayshortskip{#1}}
+\eql at define@key{setup}{tagskip}{%
+ \setlength\eql at abovedisplaytagskip@{#1}%
+ \eql at belowdisplaytagskip@\eql at abovedisplaytagskip@}
+\eql at define@key{setup}{abovetagskip}{%
+ \setlength\eql at abovedisplaytagskip@{#1}}
+\eql at define@key{setup}{belowtagskip}{%
+ \setlength\eql at belowdisplaytagskip@{#1}}
+\eql at define@key{setup}{medskip}{%
+ \setlength\eql at abovedisplaymedskip@{#1}%
+ \eql at belowdisplaymedskip@\eql at abovedisplaymedskip@}
+\eql at define@key{setup}{abovemedskip}{%
+ \setlength\eql at abovedisplaymedskip@{#1}}
+\eql at define@key{setup}{abovetopskip}{%
+ \setlength\eql at abovedisplaytopskip@{#1}}
+\eql at define@key{setup}{aboveparskip}{%
+ \setlength\eql at abovedisplayparskip@{#1}}
+\eql at define@key{setup}{abovecontskip}{%
+ \setlength\eql at abovedisplaycontskip@{#1}}
+\eql at define@key{setup}{belowmedskip}{%
+ \setlength\eql at belowdisplaymedskip@{#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@@}}}}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Labels and Tag Declaration.}
+%
+% \TODO describe
+% \begin{macrocode}
+\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}}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Tag Spacing.}
+%
+% \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*}{\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{mintagwidth*}{\settowidth\eql at tagwidthmin@{#1}}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Tag Layout.}
+%
+% \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}{tagform}{\eql at tag@setform#1}
+\eql at define@key{setup}{tagform*}{\eql at tag@setform@{#1}}
+\eql at define@key{setup}{subeqtemplate}{\def\eql at subequations@template{#1}}
+\eql at define@key{setup}{autolabel}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at autolabel}
+\eql at define@key{setup}{autotag}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at autotag}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Equation Numbering.}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at keycat{equations,setup}
+\eql at define@key\eql at keycat{numberline,numline,n}[all]{%
+ \eql at numbering@set{##1}}
+\eql at define@key\eql at keycat{nonumber,nn,*}[]{\let\eql at numbering@active\eql at false}
+\eql at define@key\eql at keycat{donumber,dn,!}[]{\let\eql at numbering@active\eql at true}
+\eql at define@key\eql at keycat{number,num}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at numbering@active}
+\eql at define@key\eql at keycat{tagsleft,leqno}[]{\let\eql at tagsleft\eql at true}
+\eql at define@key\eql at keycat{tagsright,reqno}[]{\let\eql at tagsleft\eql at false}
+\eql at define@key\eql at keycat{tags,eqno}{%
+ \eql at decide@select{#3}{#2}{#1}{%
+ {{right,r}{\let\eql at tagsleft\eql at false}},%
+ {{left,l}{\let\eql at tagsleft\eql at true}}}}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Horizontal Layout.}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at keycat{equations,setup}
+\eql at define@key\eql at keycat{layout}{\eql at decide@select{#3}{#2}{#1}{%
+ {{center,c}{\let\eql at flushleft\eql at false}},%
+ {{left,l}{\let\eql at flushleft\eql at true}}}}
+\eql at define@key\eql at keycat{center}[]{\let\eql at flushleft\eql at false}
+\eql at define@key\eql at keycat{flushleft,left}[]{\let\eql at flushleft\eql at true}
+\eql at define@key\eql at keycat{leftmargin}{%
+ \setlength\eql at flushleftmargin@{#1}}
+\eql at define@key\eql at keycat{minleftmargin}{%
+ \setlength\eql at flushleftmarginmin@{#1}}
+\eql at define@key\eql at keycat{maxleftmargin}{%
+ \setlength\eql at flushleftmarginmax@{#1}}
+\eql at define@key\eql at keycat{maxleftmargin*}[]{%
+ \setlength\eql at flushleftmarginmax@{.5\maxdimen}}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Horizontal Spacing and Columns.}
+%
+% \TODO describe
+% \begin{macrocode}
+\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}
+\eql at define@key\eql at keycat{mincolsep}{\def\eql at colsepmin@val{#1}}
+\eql at define@key\eql at keycat{maxcolsep}{\def\eql at colsepmax@val{#1}}
+\eql at define@key\eql at keycat{maxcolsep*}[]{\def\eql at colsepmax@val{.5\maxdimen}}
+\eql at define@key\eql at keycat{margins}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at align@margins}
+\def\eql at keycat{equationsbox,setup}
+\eql at define@key\eql at keycat{margin}{%
+ \def\eql at box@marginleft{#1}\def\eql at box@marginright{#1}}
+\eql at define@key\eql at keycat{marginleft}{\def\eql at box@marginleft{#1}}
+\eql at define@key\eql at keycat{marginright}{\def\eql at box@marginright{#1}}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Horizontal Shape.}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at keycat{equations,equationsbox,setup}
+\eql at define@key\eql at keycat{shape}[default]{\eql at shape@set{#1}}
+\eql at define@key\eql at keycat{padding,pad}[\eql at indent@val]{%
+ \let\eql at paddingmax\eql at false
+ \def\eql at paddingleft@val{#1}\def\eql at paddingright@val{#1}}
+\eql at define@key\eql at keycat{padleft}[\eql at indent@val]{%
+ \let\eql at paddingmax\eql at false\def\eql at paddingleft@val{#1}}
+\eql at define@key\eql at keycat{padright}[\eql at indent@val]{%
+ \let\eql at paddingmax\eql at false\def\eql at paddingright@val{#1}}
+\eql at define@key\eql at keycat{padmax}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at paddingmax}
+\eql at define@key\eql at keycat{indent}[2em]{%
+ \def\eql at indent@val{#1}}
+\eql at define@key\eql at keycat{indent*}[2em]{%
+ \def\eql at indent@val{#1}\def\eql at paddingleft@val{#1}}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Math Classes at Alignment.}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at keycat{equations,equationsbox,setup}
+\eql at define@key\eql at keycat{classout}{\eql at class@innerleft at set{#1}}
+\eql at define@key\eql at keycat{classin}{\eql at class@innerright at set{#1}}
+\eql at define@key\eql at keycat{classin*}{\eql at class@innerlead at set{#1}}
+\eql at define@key\eql at keycat{ampeq}[]{\eql at class@ampeq}
+\eql at define@key\eql at keycat{eqamp}[]{\eql at class@eqamp}
+\eql at define@key\eql at keycat{class}{\eql at decide@select{#3}{#2}{#1}{%
+ {{ampeq,amprel,eqafter,beforerel}\eql at class@ampeq},%
+ {{eqamp,relamp,eqbefore,afterrel}\eql at class@eqamp}}}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Punctuation.}
+%
+% \TODO describe
+% \begin{macrocode}
+\let\eql at punct@main\relax
+\def\eql at keycat{equations,equationsbox,setup}
+\eql at define@key\eql at keycat{punctsep}[\,]{\def\eql at punct@sep{#1}}
+\eql at define@key\eql at keycat{punct}[.]{\def\eql at punct@main{#1}}
+\eql at define@key\eql at keycat{punctline}[,]{\def\eql at punct@line{#1}}
+\eql at define@key\eql at keycat{punctcol}[,]{\def\eql at punct@col{#1}}
+\eql at define@key\eql at keycat{punct*}[]{\let\eql at punct@main\relax}
+\eql at define@key\eql at keycat{punctline*}[]{\let\eql at punct@line\relax}
+\eql at define@key\eql at keycat{punctcol*}[]{\let\eql at punct@col\relax}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Global Switches.}
+%
+% \TODO describe
+% \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
+\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]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at ampproof@active}
+\eql at define@key{setup}{crerror}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at single@crerror}
+\eql at define@key{equations,setup}{rescan}[true]{%
+ \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}}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \paragraph{Package Options.}
+%
+% \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
+\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 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 define@key{setup}{ang}[true]{%
+ \eql at error@packageoption{#2}%
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@ang}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Component Selection}
+%
+% \TODO describe
+% \begin{macrocode}
+\newenvironment{eql at gathered}
+ {\eqnaddopt{lines}\equationsbox}{\endequationsbox}
+\newenvironment{eql at multlined}
+ {\eqnaddopt{lines,padding,shape=steps}\equationsbox}{\endequationsbox}
+\newenvironment{eql at aligned}
+ {\eqnaddopt{align}\equationsbox}{\endequationsbox}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\newenvironment{eql at equation}
+ {\eqnaddopt{equation}\equations}{\endequations}
+\newenvironment{eql at gather}
+ {\eqnaddopt{lines}\equations}{\endequations}
+\newenvironment{eql at multline}
+ {\eqnaddopt{lines,padmax,shape=steps,numberline=out}\equations}
+ {\endequations}
+\newenvironment{eql at align}
+ {\eqnaddopt{align}\equations}{\endequations}
+\newenvironment{eql at flalign}
+ {\eqnaddopt{align,margins=false}\equations}{\endequations}
+\newenvironment{eql at equation*}
+ {\eqnaddopt{nonumber}\eql at equation}{\endequations}
+\newenvironment{eql at gather*}
+ {\eqnaddopt{nonumber}\eql at gather}{\endequations}
+\newenvironment{eql at multline*}
+ {\eqnaddopt{nonumber}\eql at multline}{\endequations}
+\newenvironment{eql at align*}
+ {\eqnaddopt{nonumber}\eql at align}{\endequations}
+\newenvironment{eql at flalign*}
+ {\eqnaddopt{nonumber}\eql at flalign}{\endequations}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at provide@movecmd#1#2{%
+ \expandafter\let\csname #1\expandafter\endcsname\csname #2\endcsname
+}
+\def\eql at provide@undefinecmd#1{%
+ \expandafter\let\csname #1\endcsname\@undefined
+}
+\def\eql at provide@moveenv#1#2{%
+ \expandafter\let\csname #1\expandafter\endcsname\csname #2\endcsname
+ \expandafter\let\csname end#1\expandafter\endcsname\csname end#2\endcsname
+}
+\def\eql at provide@undefineenv#1{%
+ \expandafter\let\csname #1\endcsname\@undefined
+ \expandafter\let\csname end#1\endcsname\@undefined
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at provide@onlyonce#1#2{%
+ \def\eql at tmp{#2}%
+ \def\@tempa{#1}%
+ \ifx\eql at tmp\@tempa
+ \let\eql at tmp\@undefined
+ \fi
+ \ifx\eql at tmp\@empty
+ \let\eql at tmp\@undefined
+ \fi
+ \def\@tempa{*}%
+ \ifx\eql at tmp\@tempa
+ \def\eql at tmp{#1}%
+ \fi
+ \ifdefined\eql at tmp\else
+ \ifcsname eql at provided@#1\endcsname
+ \def\eql at tmp{#1}%
+ \else
+ \expandafter\let\csname eql at provided@#1\endcsname\eql at true
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at provide@cmdonlyonce#1#2{%
+ \def\eql at tmp{#2}%
+ \edef\@tempb{\expandafter\noexpand\csname#1\endcsname}%
+ \ifx\eql at tmp\@tempb
+ \let\eql at tmp\@undefined
+ \fi
+ \ifx\eql at tmp\@empty
+ \let\eql at tmp\@undefined
+ \fi
+ \def\@tempa{*}%
+ \ifx\eql at tmp\@tempa
+ \let\eql at tmp\@tempb
+ \fi
+ \ifdefined\eql at tmp
+ \edef\eql at tmp{\expandafter\expandafter\expandafter\@gobble
+ \expandafter\string\eql at tmp}%
+ \else
+ \ifcsname eql at provided@#1\endcsname
+ \let\eql at tmp\@tempb
+ \else
+ \expandafter\let\csname eql at provided@#1\endcsname\eql at true
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at provide@cmd#1#2{%
+ \eql at provide@cmdonlyonce{#1}{#2}%
+ \ifdefined\eql at tmp
+ \expandafter\eql at provide@movecmd\expandafter{\eql at tmp}{eql@#1}%
+ \else
+ \eql at amsmath@after{%
+ \eql at provide@movecmd{ams#1}{#1}%
+ \eql at provide@movecmd{#1}{eql@#1}%
+ }%
+ \AddToHook{package/mathtools/after}{%
+ \eql at provide@movecmd{#1}{eql@#1}%
+ }%
+ \eql at provide@movecmd{#1}{eql@#1}%
+ \eql at amsmath@futurebefore{\eql at provide@undefinecmd{#1}}%
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at amsmath@endfix#1#2{%
+ \long\edef\@tempa{\expandafter\noexpand\csname end#2\endcsname}%
+ \long\edef\@tempb{\expandafter\noexpand\csname eql at amsmath@end#2\endcsname}%
+ \expandafter\ifx\csname end#1\endcsname\@tempa
+ \expandafter\let\csname end#1\endcsname\@tempb
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at amsmath@fixends{%
+ \eql at amsmath@after{%
+ \let\eql at amsmath@endmultline\endmultline
+ \eql at amsmath@endfix{multline*}{multline}%
+ \let\eql at amsmath@endgather\endgather
+ \eql at amsmath@endfix{gather*}{gather}%
+ \let\eql at amsmath@endalign\endalign
+ \eql at amsmath@endfix{align*}{align}%
+ \eql at amsmath@endfix{flalign}{align}%
+ \eql at amsmath@endfix{flalign*}{align}%
+ \eql at amsmath@endfix{alignat}{align}%
+ \eql at amsmath@endfix{alignat*}{align}%
+ \eql at amsmath@endfix{xalignat}{align}%
+ \eql at amsmath@endfix{xalignat*}{align}%
+ \eql at amsmath@endfix{xxalignat}{align}%
+ \let\eql at amsmath@endaligned\endaligned
+ \eql at amsmath@endfix{gathered}{aligned}%
+ \eql at amsmath@endfix{alignedat}{aligned}%
+ }
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at provide@env#1#2{%
+ \eql at provide@onlyonce{#1}{#2}%
+ \ifdefined\eql at tmp
+ \expandafter\eql at provide@moveenv\expandafter{\eql at tmp}{eql@#1}%
+ \else
+ \eql at amsmath@after{%
+ \eql at provide@moveenv{ams#1}{#1}%
+ \eql at provide@moveenv{ams#1*}{#1*}%
+ \eql at provide@moveenv{#1}{eql@#1}%
+ \eql at provide@moveenv{#1*}{eql@#1*}%
+ }%
+ \AddToHook{package/mathtools/after}{%
+ \eql at provide@moveenv{#1}{eql@#1}%
+ \eql at provide@moveenv{#1*}{eql@#1*}%
+ }%
+ \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*}}%
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at provide@env at equation#1{%
+ \eql at provide@onlyonce{equation}{#1}%
+ \ifdefined\eql at tmp
+ \expandafter\eql at provide@moveenv\expandafter{\eql at tmp}{eql at equation}%
+ \else
+ \eql at amsmath@after{%
+ \eql at provide@moveenv{amsequation}{equation}%
+ \eql at provide@moveenv{amsequation*}{equation*}%
+ \eql at provide@moveenv{equation}{eql at equation}%
+ \eql at provide@moveenv{equation*}{eql at equation*}%
+ }%
+ \AddToHook{package/hyperref/after}{%
+ \@ifpackageloaded{amsmath}{}{%
+ \let\latexequation\H at equation
+ \let\endlatexequation\H at endequation
+ \eql at provide@moveenv{hyperrefequation}{equation}%
+ \eql at provide@moveenv{equation}{eql at equation}%
+ }%
+ }%
+ \@ifpackageloaded{amsmath}{}{\@ifpackageloaded{hyperref}{}{%
+ \eql at provide@moveenv{latexequation}{equation}%
+ }}%
+ \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*}}%
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at provide@env at multlined#1{%
+ \eql at provide@onlyonce{multlined}{#1}%
+ \ifdefined\eql at tmp
+ \expandafter\eql at provide@moveenv\expandafter{\eql at tmp}{eql at multlined}%
+ \else
+ \AddToHook{package/mathtools/after}{%
+ \eql at provide@moveenv{amsmultlined}{multlined}%
+ \eql at provide@moveenv{multlined}{eql at multlined}%
+ }%
+ \eql at provide@moveenv{multlined}{eql at multlined}%
+ \@ifpackageloaded{mathtools}{}{\AddToHook{package/mathtools/before}{%
+ \eql at provide@undefineenv{multlined}}}%
+ \fi
+}
+% \end{macrocode}
+%
+% \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
+ \expandafter\eql at provide@moveenv
+ \expandafter{\eql at tmp}{eql at subequations}%
+ \else
+ \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]{}%
+ \AddToHook{cmd/subequations/after}[hyperref]{}%
+ \RemoveFromHook{cmd/subequations/before}[hyperref]%
+ \RemoveFromHook{cmd/subequations/after}[hyperref]%
+ \AddToHook{cmd/amssubequations/before}%
+ {%
+ \stepcounter{equation}%
+ \protected at edef\theHparentequation{\theHequation}%
+ \addtocounter{equation}{-1}%
+ }
+ \AddToHook{cmd/amssubequations/after}%
+ {%
+ \def\theHequation{\theHparentequation\alph{equation}}%
+ \ignorespaces
+ }
+ }
+ \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}}%
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at provide@sqr{%
+ \let\[\eql at equations@sqr at open
+ \let\]\eql at equations@sqr at close
+ \eql at amsmath@after{%
+ \let\[\eql at equations@sqr at open
+ \let\]\eql at equations@sqr at close
+ }%
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\def\eql at provide@ang{%
+ \let\<\eql at equations@ang at open
+ \let\>\eql at equations@ang at close
+}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\eql at define@key{provide}{equation}[]{\eql at provide@env at equation{#1}}
+\eql at define@key{provide}{gather}[]{\eql at provide@env{gather}{#1}}
+\eql at define@key{provide}{multline}[]{\eql at provide@env{multline}{#1}}
+\eql at define@key{provide}{align}[]{\eql at provide@env{align}{#1}}
+\eql at define@key{provide}{flalign}[]{\eql at provide@env{flalign}{#1}}
+\eql at define@key{provide}{aligned}[]{\eql at provide@env{aligned}{#1}}
+\eql at define@key{provide}{gathered}[]{\eql at provide@env{gathered}{#1}}
+\eql at define@key{provide}{multlined}[]{\eql at provide@env at multlined{#1}}
+\eql at define@key{provide}{subequations}[]{\eql at provide@env at subequations{#1}}
+\eql at define@key{provide}{sqr}[]{\eql at provide@sqr}
+\eql at define@key{provide}{ang}[]{\eql at provide@ang}
+\eql at define@key{provide}{eqref}[]{\eql at provide@cmd{eqref}{#1}}
+\eql at define@key{provide}{notag}[]{\eql at provide@cmd{notag}{#1}}
+\eql at define@key{provide}{thetag}[]{\eql at provide@cmd{thetag}{#1}}
+\eql at define@key{provide}{allowdisplaybreaks}[]{%
+ \eql at provide@cmd{allowdisplaybreaks}{#1}}
+\eql at define@key{provide}{numberwithin}[]{\eql at provide@cmd{numberwithin}{#1}}
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\newcommand{\eqnlinesprovide}[1]{%
+%<dev>\eql at dev@start\eqnlinesprovide
+ \eql at setkeys{provide}{#1}}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Global and Package Options}
+%
+% Handle global and package options:
+%
+% \macro{\eqnlinesset}
+% The macro |\eqnlinesset| processes global configuration options
+% including the package options:
+% \begin{macrocode}
+\newcommand{\eqnlinesset}[1]{%
+%<dev>\eql at dev@start\eqnlinesset
+ \eql at setkeys{setup}{#1}}
+% \end{macrocode}
+%
+% Disable error message for exclusive package options:
+% \begin{macrocode}
+\let\eql at error@packageoption\@gobble
+% \end{macrocode}
+%
+% Pass undeclared options on to \ctanpkg{keyval} processing:
+% \begin{macrocode}
+\DeclareOption*{\expandafter\eqnlinesset\expandafter{\CurrentOption}}
+% \end{macrocode}
+%
+% Process package options:
+% \begin{macrocode}
+\ProcessOptions
+% \end{macrocode}
+%
+% \macro{\eql at error@packageoption}
+% Enable error message for explusive package options:
+% \begin{macrocode}
+\def\eql at error@packageoption#1{%
+ \eql at error{may only use `#1' as a package option}%
+}
+% \end{macrocode}
+%
+% Provide classes of interfaces:
+% \begin{macrocode}
+\ifcsname tagsleft at true\endcsname\else
+ \expandafter\newif\csname iftagsleft@\endcsname
+\fi
+\ifcsname @fleqntrue\endcsname\else
+ \expandafter\newif\csname if at fleqn\endcsname
+\fi
+\ifdefined\eql at provide@amsmath
+ \let\eql at provide@equation\eql at true
+ \eql at amsmath@after{%
+ \iftagsleft@
+ \eqnlinesset{tagsleft}
+ \else
+ \eqnlinesset{tagsright}
+ \fi
+ \if at fleqn
+ \eqnlinesset{left}
+ \else
+ \eqnlinesset{center}
+ \fi
+ }
+\fi
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\ifdefined\eql at provide@equation
+ \eqnlinesprovide{equation,sqr}
+\fi
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\ifdefined\eql at amsmath@dofixends
+ \eql at amsmath@fixends
+\fi
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\ifdefined\eql at provide@amsmath
+ \eqnlinesprovide{%
+ multline,gather,align,flalign,%
+ multlined,gathered,aligned,%
+ subequations,eqref}
+\fi
+% \end{macrocode}
+%
+% \TODO describe
+% \begin{macrocode}
+\ifdefined\eql at provide@ang
+ \eqnlinesprovide{ang}
+\fi
+% \end{macrocode}
+%
+%\iffalse
+%</package>
+%\fi
+%
+\endinput
Property changes on: branches/branch2024.final/Master/texmf-dist/source/latex/eqnlines/eqnlines.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/source/latex/eqnlines/eqnlines.ins
===================================================================
--- branches/branch2024.final/Master/texmf-dist/source/latex/eqnlines/eqnlines.ins (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/source/latex/eqnlines/eqnlines.ins 2025-02-26 21:14:50 UTC (rev 74313)
@@ -0,0 +1,33 @@
+\def\batchfile{eqnlines.ins}
+\input docstrip.tex
+
+\keepsilent
+\preamble
+
+Copyright (C) 2024-2025 Niklas Beisert
+
+Based on the latex package amsmath:
+Copyright (C) 1995, 2000, 2013 American Mathematical Society.
+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.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
+and version 1.3c or later is part of all distributions of LaTeX
+version 2008 or later.
+
+\endpreamble
+
+% the style and sample files
+\generate{\askforoverwritefalse
+\file{eqnlines.sty}{\from{eqnlines.dtx}{package}}
+\file{eqnlines-dev.sty}{\from{eqnlines.dtx}{package,dev}}
+}
+
+\Msg{***********************************************************************}
+\Msg{* Done. Please copy the file eqnlines.sty to an appropriate directory *}
+\Msg{* of your LaTeX distribution, e.g. texmf-root/tex/latex/eqnlines. *}
+\Msg{***********************************************************************}
+\endinput
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/eqnlines/eqnlines-dev.sty
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/eqnlines/eqnlines-dev.sty (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/eqnlines/eqnlines-dev.sty 2025-02-26 21:14:50 UTC (rev 74313)
@@ -0,0 +1,3840 @@
+%%
+%% This is file `eqnlines-dev.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% eqnlines.dtx (with options: `package,dev')
+%%
+%% Copyright (C) 2024-2025 Niklas Beisert
+%%
+%% Based on the latex package amsmath:
+%% Copyright (C) 1995, 2000, 2013 American Mathematical Society.
+%% 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.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
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008 or later.
+%%
+\NeedsTeXFormat{LaTeX2e}[2020/10/01]
+\ProvidesPackage{eqnlines-dev}[2025/02/25 v0.5 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}}
+\def\eql at dev@leave#1{\eql at dev{ leaving \string#1}}
+\def\eql at dev@enterenv{\eql at dev{entering \@currenvir}}
+\def\eql at dev@leaveenv{\eql at dev{ leaving \@currenvir}}
+\def\eql at dev@in#1#2{\eql at dev{ \space within \string#1 #2}}
+\let\eql at ifnextchar@loose\kernel at ifnextchar
+\long\def\eql at ifnextchar@tight#1#2#3{%
+ \let\reserved at d= #1%
+ \def\reserved at a{#2}%
+ \def\reserved at b{#3}%
+ \futurelet\@let at token\eql at ifnch@tight
+}
+\def\eql at ifnch@tight{%
+ \ifx\@let at token\reserved at d
+ \let\reserved at b\reserved at a
+ \fi
+ \reserved at b
+}
+\begingroup
+ \makeatother
+ \let\tmp=@%
+ \makeatletter
+ \global\let\eql at atxii\tmp
+\endgroup
+\long\def\eql at ifnextgobble@loose#1#2{\eql at ifnextchar@loose#1{\@firstoftwo{#2}}}
+\long\def\eql at ifnextgobble@tight#1#2{\eql at ifnextchar@tight#1{\@firstoftwo{#2}}}
+\long\def\eql at ifstar@loose#1{\eql at ifnextchar@loose*{\@firstoftwo{#1}}}
+\long\def\eql at ifstar@tight#1{\eql at ifnextchar@tight*{\@firstoftwo{#1}}}
+\long\def\eql at ifat@loose#1#2{\eql at ifnextgobble@loose{@}{#1}{%
+ \eql at ifnextgobble@loose\eql at atxii{#1}{#2}}}
+\long\def\eql at ifat@tight#1#2{\eql at ifnextgobble@tight{@}{#1}{%
+ \eql at ifnextgobble@tight\eql at atxii{#1}{#2}}}
+\long\def\eql at testopt@loose#1#2{\eql at ifnextchar@loose[{#1}{#1[{#2}]}}%]
+\long\def\eql at testopt@tight#1#2{\eql at ifnextchar@tight[{#1}{#1[{#2}]}}%]
+\long\def\eql at teststaropt@loose#1#2#3{%
+ \eql at ifstar@loose{\eql at testopt@loose{#1}{#3}}{\eql at testopt@loose{#2}{#3}}}
+\long\def\eql at teststaropt@tight#1#2#3{%
+ \eql at ifstar@tight{\eql at testopt@tight{#1}{#3}}{\eql at testopt@tight{#2}{#3}}}
+\def\eql at spbgroup{\iffalse{\fi\ifnum0=`}\fi}
+\def\eql at spegroup{\ifnum0=`{\fi\iffalse}\fi}
+\def\eql at srbgroup{\relax\iffalse{\fi\ifnum0=`}\fi}
+\def\eql at sregroup{\let\@let at token\relax\ifnum0=`{\fi\iffalse}\fi}
+\long\def\eql at ampprotect#1#2{\eql at srbgroup#1{\eql at sregroup#2}}
+\long\def\eql at ampprotecttwo#1#2#3{%
+ \eql at srbgroup#1{\eql at sregroup#2}{\eql at sregroup#3}}
+\def\eql at ifnextchar@loose at ampsafe#1{%
+ \eql at ampprotecttwo{\eql at ifnextchar@loose#1}}
+\def\eql at ifnextchar@tight at ampsafe#1{%
+ \eql at ampprotecttwo{\eql at ifnextchar@tight#1}}
+\def\eql at ifstar@loose at ampsafe{\eql at ampprotecttwo\eql at ifstar@loose}
+\def\eql at ifstar@tight at ampsafe{\eql at ampprotecttwo\eql at ifstar@tight}
+\def\eql at testopt@loose at ampsafe{\eql at ampprotect\eql at testopt@loose}
+\def\eql at testopt@tight at ampsafe{\eql at ampprotect\eql at testopt@tight}
+\def\eql at teststaropt@loose at ampsafe{\eql at ampprotecttwo\eql at teststaropt@loose}
+\long\def\eql at teststaropt@tight at ampsafe{%
+ \eql at ampprotecttwo\eql at teststaropt@tight}
+\let\eql at ifnextchar@org\@ifnextchar
+\let\eql at ifstar@org\@ifstar
+\let\eql at testopt@org\@testopt
+\def\eql at amprevert{%
+ \let\@ifnextchar\eql at ifnextchar@org
+ \let\@testopt\eql at testopt@org
+ \let\@ifstar\eql at ifstar@org
+}
+\def\eql at ampproof{%
+ \let\@ifnextchar\eql at ifnextchar@loose at ampsafe
+ \let\@testopt\eql at testopt@loose at ampsafe
+ \let\@ifstar\eql at ifstar@loose at ampsafe
+}
+\def\eql at error#1{\PackageError{eqnlines}{#1}{}}
+\def\eql at warning{\PackageWarning{eqnlines}}
+\def\eql at error@nomathmode#1{\eql at error{#1 allowed only in math mode}}
+\def\eql at error@mathmode#1{\eql at error{#1 allowed only in paragraph mode}}
+\def\eql at warn@label at unused{\eql at warning{Unused equation \string\label:
+ label `\eql at nextlabel' will be lost}}
+\def\eql at warn@label at multiple#1{\eql at warning{Multiple equation \string\label's:
+ previous label '#1' will be lost}}
+\def\eql at warn@tag at unused{\eql at warning{Unused equation \string\tag:
+ tag declaration will be lost}}
+\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{%
+ \@ifpackageloaded{amsmath}{}{\AddToHook{package/amsmath/before}{#1}}}
+\let\eql at false\@undefined
+\let\eql at true\@empty
+\newskip\eql at regunset@
+\eql at regunset@-1sp\relax
+\def\eql at regsetdelayed#1#2{%
+ #1\eql at regunset@\relax
+ \AtBeginDocument{%
+ \ifdim#1=\eql at regunset@
+ \setlength#1{#2}%
+ \fi
+ }%
+}
+\let\eql at tagsleft\eql at false
+\let\eql at flushleft\eql at false
+\newdimen\eql at flushleftmargin@
+\newdimen\eql at flushleftmarginmin@
+\newdimen\eql at flushleftmarginmax@
+\eql at regsetdelayed\eql at flushleftmargin@\leftmargini
+\eql at flushleftmarginmin@\z@
+\eql at flushleftmarginmax@.5\maxdimen
+\newdimen\eql at tagmargin@
+\eql at tagmargin@\z@
+\newdimen\eql at indent@
+\def\eql at indent@val{2em}
+\newdimen\eql at paddingleft@
+\newdimen\eql at paddingright@
+\def\eql at paddingleft@val{0pt}
+\def\eql at paddingright@val{0pt}
+\let\eql at paddingmax\eql at false
+\def\eql at box@marginleft{\z at skip}
+\def\eql at box@marginright{\z at skip}
+\def\eql at box@colsep{2em}
+\def\eql at spread{\jot}
+\newdimen\eql at 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@
+\newdimen\eql at colsepmin@
+\newdimen\eql at colsepmax@
+\def\eql at colsepmin@val{1em}
+\def\eql at colsepmax@val{.5\maxdimen}
+\newdimen\eql at tagwidthmin@
+\eql at tagwidthmin@\z@
+\newdimen\eql at tagsepmin@
+\eql at regsetdelayed\eql at tagsepmin@{.5em}
+\newcount\eql at row@
+\newcount\eql at totalrows@
+\newdimen\eql at colsep@
+\newdimen\eql at display@firstavail@
+\def\eql at display@firstavail at set#1{%
+ \ifnum\eql at row@=\@ne
+ \global\eql at display@firstavail@#1%
+ \fi
+}
+\newcount\eql at raisetag@firstlast@
+\newbox\eql at fieldbox@
+\newbox\eql at tagbox@
+\newdimen\eql at fieldwidth@
+\newdimen\eql at tagwidth@
+\newdimen\eql at line@height@
+\newdimen\eql at line@depth@
+\newif\ifmeasuring@
+\AddToHook{package/hyperref/after}{
+ \ifdefined\Hy at ifnotmeasuring
+ \renewcommand\Hy at ifnotmeasuring[1]{\ifmeasuring@\else#1\fi}
+ \fi
+}
+\ifdefined\@displaytrue\else
+\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
+\let\eql at hook@blockout\@empty
+\let\eql at hook@linein\@empty
+\let\eql at hook@lineout\@empty
+\let\eql at hook@colin\@empty
+\let\eql at hook@colout\@empty
+\let\eql at hook@eqin\@empty
+\let\eql at hook@eqout\@empty
+\let\eql at hook@innerleft\@empty
+\let\eql at hook@innerright\@empty
+\let\eql at hook@innerlead\@empty
+\let\eql at punct@col\@empty
+\let\eql at punct@line\relax
+\let\eql at punct@block\relax
+\let\eql at punct@sep\relax
+\def\eqnpunctcol{\eql at ifstar@tight\eql at punct@col at setrelax\eql at punct@col at set}
+\def\eql at punct@col at set#1{\def\eql at punct@col{#1}\ignorespaces}
+\def\eql at punct@col at setrelax{\let\eql at punct@col\@empty\ignorespaces}
+\def\eqnpunctline{\eql at ifstar@tight\eql at punct@line at setrelax\eql at punct@line at set}
+\def\eql at punct@line at set#1{\def\eql at punct@line{#1}\ignorespaces}
+\def\eql at punct@line at setrelax{\let\eql at punct@line\relax\ignorespaces}
+\def\eqnpunctmain{\eql at ifstar@tight\eql at punct@main at setrelax\eql at punct@main at set}
+\def\eql at punct@main at set#1{\eqnlinesset{punct={#1}}\ignorespaces}
+\def\eql at punct@main at setrelax{\eqnlinesset{punct*}\ignorespaces}
+\def\eqnpunct{\eql at ifstar@tight\eql at punct@next at setrelax\eql at punct@next at set}
+\def\eql at punct@next at set#1{\eqnaddopt{punct={#1}}\ignorespaces}
+\def\eql at punct@next at setrelax{\eqnaddopt{punct*}\ignorespaces}
+\def\eql at punct@apply at col{%
+ \ifx\eql at punct@col\@empty\else
+ \eql at punct@sep
+ \eql at punct@col
+ \let\eql at punct@col\@empty
+ \fi
+}
+\def\eql at punct@apply at line{%
+ \ifx\eql at punct@line\relax
+ \else
+ \ifx\eql at punct@line\@empty\else
+ \eql at punct@sep
+ \eql at punct@line
+ \fi
+ \let\eql at punct@line\relax
+ \let\eql at punct@col\@empty
+ \fi
+}
+\def\eql at punct@apply at block{%
+ \ifx\eql at punct@block\relax
+ \else
+ \ifx\eql at punct@block\@empty\else
+ \eql at punct@sep
+ \eql at punct@block
+ \fi
+ \let\eql at punct@block\relax
+ \let\eql at punct@line\relax
+ \let\eql at punct@col\@empty
+ \fi
+}
+\def\eql at class@innerright at sel@{%
+ \ifdim\eql at fieldwidth@=\z@
+ \eql at class@innerlead
+ \else
+ \eql at class@innerright
+ \fi
+}
+\def\eql at class@innerleft at set#1{%
+ \def\eql at class@innerleft{#1}%
+}
+\def\eql at class@innerright at set#1{%
+ \def\eql at class@innerright{#1}%
+ \let\eql at class@innerright at sel\eql at class@innerright
+}
+\def\eql at class@innerlead at set#1{%
+ \def\eql at class@innerlead{#1}%
+ \let\eql at class@innerright at sel\eql at class@innerright at sel@
+}
+\def\eql at class@ampeq{%
+ \eql at class@innerleft at set{}%
+ \eql at class@innerright at set{{}}%
+}
+\def\eql at class@eqamp{%
+ \eql at class@innerleft at set{\mathrel{}}%
+ \eql at class@innerright at set{\mathrel{}}%
+ \eql at class@innerlead at set{{}}%
+}
+\eql at class@ampeq
+\protected\def\eql at box@cr{%
+ \eql at ampprotect\eql at testopt@tight\eql at box@cr@\z@
+}
+\def\eql at box@cr@[#1]{%
+ \eql at punct@apply at line
+ \eql at hook@lineout
+ \eql at box@lastfield
+ \cr
+ \noalign{%
+ \setlength\skip@{#1}%
+ \vskip\skip@
+ }%
+}
+\let\eql at box@box\vcenter
+\def\eql at box@lastfield at odd{%
+ &\omit
+ \kern-\wd\eql at fieldbox@
+ \box\eql at fieldbox@
+ \hfil
+ &\omit\kern-\eql at colsep@
+}%
+\def\eql at box@lastfield at even{&\omit\kern-\eql at colsep@}
+\def\eql at box@lastfield at lines{&\omit\kern-2\eql at colsep@}
+\def\eql at box@open at align{%
+ \let\eql at box@lastfield\@empty
+ \eql at halign@init{%
+\eql at dev{starting new line}%
+}%
+ \tabskip\z at skip
+ \halign\bgroup
+ &%
+ \let\eql at box@lastfield\eql at box@lastfield at odd
+ \global\setbox\eql at fieldbox@\hbox{%
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at class@innerleft
+ \eql at hook@innerleft
+ $%
+ }%
+ \hfil
+ \kern\wd\eql at fieldbox@
+ \tabskip\z at skip
+ &%
+ \eql at fieldwidth@\wd\eql at fieldbox@
+ \kern-\eql at fieldwidth@
+ \box\eql at fieldbox@
+ \let\eql at box@lastfield\eql at box@lastfield at even
+ \llap{\unhbox\eql at fieldbox@}%
+ \hbox{%
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@innerright
+ \eql at class@innerright at sel
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ $%
+ }%
+ \hfil
+ \tabskip\eql at colsep@
+ \crcr
+ \noalign{%
+ \eql at hook@blockbefore
+ }%
+ \eql at hook@blockin
+}
+\def\eql at box@open at lines{%
+ \let\shoveleft\eql at adjust@shoveleft
+ \let\shovecenter\eql at adjust@shovecenter
+ \let\shoveright\eql at adjust@shoveright
+ \let\eql at box@lastfield\eql at box@lastfield at lines
+ \eql at halign@init{%
+\eql at dev{starting line \the\eql at row@}%
+ \global\advance\eql at row@\@ne
+ }%
+ \tabskip\z at skip
+ \halign\bgroup
+ &%
+ \eql at shape@pos@\m at ne
+ \setbox\eql at fieldbox@\hbox{%
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ $%
+ }%
+ \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@
+ \crcr
+ \noalign{%
+ \eql at hook@blockbefore
+ }%
+ \eql at hook@blockin
+}
+\def\eql at box@close{%
+ \ifvmode\else
+ \global\eql at totalrows@\eql at row@
+ \eql at punct@apply at block
+ \eql at box@cr@[\z at skip]%
+ \fi
+ \crcr
+ \noalign{%
+ \eql at hook@blockafter
+ }%
+ \egroup
+}
+\def\eql at box@start{%
+ \relax
+ \ifmmode
+ \let\eql at box@endmath\@empty
+ \else
+ $\let\eql at box@endmath=$%
+ \fi
+ \eql at nextopt@process{equationsbox}%
+ \let\eql at punct@block\eql at punct@main
+ \let\eql at punct@main\relax
+ \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 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@
+ \eql at box@box\bgroup
+ \eql at display@leave
+ \let\\\eql at box@cr
+ \ifdefined\eql at box@mode at lines
+ \expandafter\eql at box@open at lines
+ \else
+ \expandafter\eql at box@open at align
+ \fi
+}
+\newcommand{\eql at box@end}{%
+ \eql at box@close
+ \egroup
+ \setlength\skip@\eql at box@marginright
+ \hskip\skip@
+ \eql at stack@restore
+ \eql at box@endmath
+}
+\newenvironment{equationsbox}{%
+\eql at dev@enterenv
+ \eql at ampprotect\eql at box@testall\eql at box@start
+}{%
+ \eql at box@end
+\eql at dev@leaveenv
+}
+\def\eql at box@testall{\eql at box@testtilde}
+\def\eql at box@testtilde#1{%
+ \eql at ifnextgobble@tight~%
+ {\eqnaddopt{lines}\eql at box@testopt{#1}}%
+ {\eql at box@testopt{#1}}}
+\def\eql at box@testopt#1{%
+ \eql at ifnextchar@tight[%]
+ {\eql at box@addopt{#1}}%
+ {#1}}
+\def\eql at box@addopt#1[#2]{\eqnaddopt{#2}#1}
+\def\eql at mode@aligned{\let\eql at box@mode at lines\eql at false}
+\def\eql at mode@lined{\let\eql at box@mode at lines\eql at true}
+\eql at mode@aligned
+\eql at amsmath@futurebefore{
+ \let\c at parentequation\@undefined
+ \let\theparentequation\@undefined
+}
+\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 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@setform#1#2#3{%
+ \def\tagform@##1{\maketag@@@{#1\ignorespaces#2\unskip\@@italiccorr#3}}%
+}
+
+\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
+\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
+ \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@printlabel at right{%
+ \ifx\eql at SK@lab\relax\else
+ \rlap{\kern\marginparsep\eql at SK@lab}%
+ \eql at SK@lab at relax
+ \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
+ \fi
+ }
+ \def\eql at SK@printlabel at line{%
+ \ifx\eql at SK@lab\relax\else
+ \dimen@\prevdepth
+ \nointerlineskip
+ \ifdefined\eql at tagsleft
+ \llap{%
+ \eql at SK@lab
+ \kern\marginparsep
+ }%
+ \eql at SK@lab at relax
+ \else
+ \rlap{%
+ \dimen@\displaywidth
+ \advance\dimen@\marginparsep
+ \kern\dimen@
+ \eql at SK@lab
+ }%
+ \fi
+ \eql at SK@lab at relax
+ \prevdepth\dimen@
+ \fi
+ }
+ \let\eql at label@org\label
+ \def\eql at label@clean{\let\SK@\@gobbletwo\eql at label@org}
+}
+\let\eql at nextlabel\@undefined
+\def\eql at labelname@default{[equation]}
+\let\eql at label@org\label
+\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{%
+ \eql at ampprotecttwo\eql at teststaropt@tight\eql at tag@gobble@\eql at tag@gobble@{}}
+\let\eql at Hy@anchor\@gobble
+\AddToHook{package/hyperref/after}{
+ \def\eql at Hy@anchor#1{%
+ \Hy at raisedlink{\hyper at anchor{#1}}%
+ }%
+}
+\def\eql at tag@makenext{%
+ \eql at ampprotecttwo\eql at teststaropt@tight
+ \eql at tag@makenext at star\eql at tag@makenext@\eql at tag@text
+}
+\def\eql at tag@makenext at star[#1]#2{%
+ \global\def\eql at nexttag{%
+ \let\eql at tag@tool\maketag@@@
+ \protected at edef\eql at tag@text{#2}%
+ \protected at edef\eql at tag@label{#1}%
+ }%
+}
+\def\eql at tag@makenext@[#1]#2{%
+ \global\def\eql at nexttag{%
+ \let\eql at tag@tool\tagform@
+ \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}%
+ }%
+}
+\newcount\eql at numbering@refcount@
+\eql at numbering@refcount@\z@
+\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 Hy@anchor\eql at label@currentHref
+ \global\edef\eql at label@thepage{\thepage}%
+}
+\def\eql at numbering@setblockanchor{%
+ \let\thepage\eql at label@thepage
+ \let\@currentHref\eql at label@currentHref
+}
+\def\eql at compose@anchor{%
+ \ifdefined\eql at nexttag
+ \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 Hy@anchor\@currentHref
+ \global\let\eql at nexttag\@undefined
+ \else
+ \refstepcounter{equation}%
+ \let\eql at tag@tool\tagform@
+ \edef\eql at tag@text{\theequation}%
+ \fi
+}
+\def\eql at compose@label{%
+ \ifmeasuring@\else
+ \eql at SK@lab at relax
+ \ifdefined\eql at nextlabel
+ \ifnum
+ \ifnum\eql at numbering@target@<\z@
+ \eql at row@
+ \else
+ \eql at numbering@target@
+ \fi=\eql at row@
+ \eql at compose@label@
+ \fi
+ \fi
+ \fi
+}
+\def\eql at compose@label@{%
+ \eql at SK@makelabel\eql at nextlabel
+ \begingroup
+ \ifnum\eql at numbering@target@=\eql at row@
+ \eql at numbering@setblockanchor
+ \fi
+ \let\@currentlabelname\eql at labelname@default
+ \expandafter\eql at label@clean\expandafter{\eql at nextlabel}%
+ \global\let\eql at nextlabel\@undefined
+ \endgroup
+}
+\def\eql at compose@tag{%
+ \eql at tag@tool\eql at tag@text
+}
+\def\eql at compose@print{%
+ \eql at compose@anchor
+ \eql at compose@label
+ \ifdefined\eql at tagsleft
+ \eql at SK@printlabel at left
+ \eql at compose@tag
+ \else
+ \eql at compose@tag
+ \eql at SK@printlabel at right
+ \fi
+}
+\def\eql at compose@measure{%
+ \ifdefined\eql at nexttag
+ \eql at nexttag
+ \eql at tag@tool\eql at tag@text
+ \else
+ \stepcounter{equation}%
+ \tagform@\theequation
+ \fi
+ \ifnum\eql at numbering@target@<\z@
+ \global\let\eql at nextlabel\@undefined
+ \global\let\eql at nexttag\@undefined
+ \fi
+}
+\def\eql at compose@null{%
+ \ifdefined\eql at nexttag\else
+ \stepcounter{equation}%
+ \fi
+ \ifnum\eql at numbering@target@<\z@
+ \global\let\eql at nextlabel\@undefined
+ \global\let\eql at nexttag\@undefined
+ \fi
+}
+\def\eql at tagbox@make#1{%
+ \setbox\eql at tagbox@\hbox{\eql at strut@tag\@lign#1}%
+ \eql at tagwidth@\wd\eql at tagbox@
+ \ifdim\eql at tagwidth@<\eql at tagwidthmin@
+ \eql at tagwidth@\eql at tagwidthmin@
+ \fi
+ \advance\eql at tagwidth@\eql at tagsepmin@
+}
+\def\eql at tagbox@print at right{%
+ \kern-\wd\eql at tagbox@
+ \box\eql at tagbox@
+}
+\def\eql at tagbox@print at left{%
+ \wd\eql at tagbox@\z@
+ \box\eql at tagbox@
+}
+\def\eql at tagbox@print at right@raise{%
+ \ifnum\eql at row@=\eql at totalrows@
+ \global\advance\eql at raisetag@firstlast@\tw@
+ \fi
+ \llap{\vtop{%
+ \vskip-\eql at raisetag@amount@
+ \normalbaselines
+ \setbox\@ne\hbox{}%
+ \dp\@ne\eql at line@depth@
+ \box\@ne
+ \box\eql at tagbox@
+ }}%
+}
+\def\eql at tagbox@print at left@raise{%
+ \ifnum\eql at row@=\@ne
+ \global\advance\eql at raisetag@firstlast@\@ne
+ \fi
+ \rlap{\vbox{%
+ \normalbaselines
+ \box\eql at tagbox@
+ \vbox to\eql at line@height@{}%
+ \vskip\eql at raisetag@amount@
+ }}%
+}
+\def\eql at numbering@printsubeqlabel{%
+ \ifdefined\eql at parentlabel
+ \eql at numbering@makeblockanchor
+ \eql at SK@makelabel\eql at parentlabel
+ \begingroup
+ \def\@currentcounter{equation}%
+ \eql at numbering@setblockanchor
+ \let\@currentlabelname\eql at labelname@default
+ \protected at edef\@currentlabel{\p at equation\theparentequation}%
+ \expandafter\eql at label@clean\expandafter{\eql at parentlabel}%
+ \endgroup
+ \eql at SK@printlabel at line
+ \fi
+}
+\def\eql at numbering@tab at first{first}
+\def\eql at numbering@tab at last{last}
+\def\eql at numbering@tab at middle{middle}
+\def\eql at numbering@tab at here{here}
+\def\eql at numbering@tab at in{in}
+\def\eql at numbering@tab at out{out}
+\def\eql at numbering@tab at sub{sub}
+\def\eql at numbering@tab at all{all}
+\def\eql at numbering@tab at none{none}
+\let\eql at numbering@tab at f\eql at numbering@tab at first
+\let\eql at numbering@tab at l\eql at numbering@tab at last
+\let\eql at numbering@tab at m\eql at numbering@tab at middle
+\let\eql at numbering@tab at mid\eql at numbering@tab at middle
+\let\eql at numbering@tab at o\eql at numbering@tab at out
+\let\eql at numbering@tab at outside\eql at numbering@tab at out
+\let\eql at numbering@tab at i\eql at numbering@tab at in
+\let\eql at numbering@tab at inside\eql at numbering@tab at in
+\let\eql at numbering@tab at within\eql at numbering@tab at in
+\let\eql at numbering@tab at h\eql at numbering@tab at here
+\let\eql at numbering@tab at s\eql at numbering@tab at sub
+\let\eql at numbering@tab at subeq\eql at numbering@tab at sub
+\let\eql at numbering@tab at subequation\eql at numbering@tab at sub
+\let\eql at numbering@tab at subequations\eql at numbering@tab at sub
+\let\eql at numbering@tab at a\eql at numbering@tab at all
+\let\eql at numbering@tab at n\eql at numbering@tab at none
+\expandafter\let\csname eql at numbering@tab@!\endcsname\eql at numbering@tab at all
+\expandafter\let\csname eql at numbering@tab@*\endcsname\eql at numbering@tab at none
+\expandafter\let\csname eql at numbering@tab at 1\endcsname\eql at numbering@tab at first
+\let\eql at numbering@mode\eql at numbering@tab at all
+\def\eql at numbering@set#1{%
+ \ifcsname eql at numbering@tab@#1\endcsname
+ \expandafter\let\expandafter\eql at numbering@mode
+ \csname eql at numbering@tab@#1\endcsname
+ \else
+ \eql at error{numbering mode `#1' unknown: setting to `all'}%
+ \let\eql at numbering@mode\eql at numbering@tab at all
+ \fi
+}
+\let\eql at numbering@active\eql at true
+\newcount\eql at numbering@target@
+\def\eql at numbering@mode at all{%
+ \eql at numbering@target@\m at ne}
+\def\eql at numbering@mode at sub{%
+ \eql at numbering@target@\m at ne
+ \let\eql at numbering@subeq at use\eql at true}
+\def\eql at numbering@mode at none{%
+ \eql at numbering@target@\m at ne
+ \let\eql at numbering@active\eql at false}
+\def\eql at numbering@mode at first{%
+ \eql at numbering@target@\@ne}
+\def\eql at numbering@mode at last{%
+ \eql at numbering@target@\@MM}
+\def\eql at numbering@mode at here{%
+ \eql at numbering@target@\z@}
+\def\eql at numbering@mode at in{%
+ \ifdefined\eql at tagsleft
+ \eql at numbering@mode at last
+ \else
+ \eql at numbering@mode at first
+ \fi
+}
+\def\eql at numbering@mode at out{%
+ \ifdefined\eql at tagsleft
+ \eql at numbering@mode at first
+ \else
+ \eql at numbering@mode at last
+ \fi
+}
+\def\eql at numbering@mode at middle{%
+ \eql at numbering@target@\z@
+ \let\eql at numbering@eval at target\eql at numbering@eval at middle}
+\def\eql at numbering@eval at middle{%
+ \ifnum\eql at numbering@target@=\z@
+ \count@\eql at row@
+ \advance\count@\@ne
+ \divide\count@\tw@
+ \global\eql at numbering@target@\count@
+ \fi
+}
+\def\eql at numbering@eval at mode{%
+ \let\eql at numbering@eval at target\@undefined
+ \let\eql at numbering@subeq at use\eql at false
+ \csname eql at numbering@mode@\eql at numbering@mode\endcsname
+ \ifdefined\eql at numbering@active
+ \let\eql at numbering@eqnswinit\@eqnswtrue
+ \else
+ \let\eql at numbering@eqnswinit\@eqnswfalse
+ \fi
+ \let\eql at numbering@active\eql at false
+}
+\def\numberhere{%
+ \ifmeasuring@
+ \ifnum\eql at numbering@target@<\z@\else
+ \global\eql at numbering@target@\eql at row@
+ \fi
+ \fi
+}
+\def\numbernext{%
+ \ifmeasuring@
+ \ifnum\eql at numbering@target@<\z@\else
+ \ifnum\eql at numbering@target@=\eql at row@
+ \global\advance\eql at numbering@target@\@ne
+ \fi
+ \fi
+ \fi
+}
+\let\eql at numbering@autolabel\eql at false
+\let\eql at numbering@autotag\eql at true
+\let\eql at numbering@blocklabel\@undefined
+\let\eql at numbering@blocktag\@undefined
+\eql at amsmath@after{
+ \let\eql at print@eqnum at default\print at eqnum
+ \let\eql at incr@eqnum at default\incr at eqnum
+}
+\def\donumber{%
+ \if at eqnsw\else
+ \global\@eqnswtrue
+ \ifx\print at eqn\@empty
+ \global\let\print at eqn\eql at print@eqnum at default
+ \fi
+ \ifx\incr at eqn\@empty
+ \global\let\incr at eqn\eql at incr@eqnum at default
+ \fi
+ \fi
+}
+\def\eql at label@warn{%
+ \ifdefined\eql at numbering@autolabel
+ \global\@eqnswtrue
+ \fi
+ \ifdefined\eql at nextlabel
+ \eql at warn@label at multiple\eql at nextlabel
+ \fi
+ \global\edef\eql at nextlabel
+}
+\def\eql at tag@warn{%
+ \ifdefined\eql at numbering@autotag
+ \global\@eqnswtrue
+ \fi
+ \ifdefined\eql at nexttag
+ \eql at warn@tag at multiple
+ \fi
+ \eql at tag@makenext
+}
+\def\eql at label@nowarn{%
+ \ifdefined\eql at numbering@autolabel
+ \global\@eqnswtrue
+ \fi
+ \global\edef\eql at nextlabel
+}
+\def\eql at tag@nowarn{%
+ \ifdefined\eql at numbering@autotag
+ \global\@eqnswtrue
+ \fi
+ \eql at tag@makenext
+}
+\def\eql at blocklabel@set#1{%
+ \ifdefined\eql at blocklabel
+ \eql at warn@label at multiple\eql at blocklabel
+ \fi
+ \edef\eql at blocklabel{#1}%
+}
+\def\eql at blocktag@set#1{%
+ \ifdefined\eql at blocktag
+ \eql at warn@tag at multiple
+ \fi
+ \def\eql at blocktag{{#1}}%
+}
+\def\eql at blocktag@setstar#1{%
+ \ifdefined\eql at blocktag
+ \eql at warn@tag at multiple
+ \fi
+ \def\eql at blocktag{*{#1}}%
+}
+\def\eql at numbering@single at init{%
+ \let\label\eql at label@warn
+ \let\tag\eql at tag@warn
+ \let\raisetag\eql at raisetag
+ \eql at numbering@target@\m at ne
+ \let\eql at nextlabel\eql at blocklabel
+ \ifdefined\eql at blocktag
+ \expandafter\eql at tag@makenext\eql at blocktag
+ \else
+ \let\eql at nexttag\@undefined
+ \fi
+ \eql at numbering@eqnswinit
+ \ifdefined\eql at numbering@autolabel
+ \ifdefined\eql at nextlabel
+ \@eqnswtrue
+ \fi
+ \fi
+ \ifdefined\eql at numbering@autotag
+ \ifdefined\eql at nexttag
+ \@eqnswtrue
+ \fi
+ \fi
+ \global\eql at raisetag@amount@\z@
+}
+\def\eql at numbering@measure at init{%
+ \let\label\eql at label@warn
+ \let\tag\eql at tag@warn
+ \let\raisetag\eql at raisetag
+ \global\let\eql at nextlabel\eql at blocklabel
+ \ifdefined\eql at blocktag
+ \expandafter\eql at tag@makenext\eql at blocktag
+ \else
+ \global\let\eql at nexttag\@undefined
+ \fi
+ \ifnum\eql at numbering@target@<\z@\else
+ \eql at numbering@eqnswinit
+ \ifdefined\eql at numbering@autolabel
+ \ifdefined\eql at nextlabel
+ \@eqnswtrue
+ \fi
+ \fi
+ \fi
+}
+\def\eql at numbering@measure at line@begin{%
+ \ifnum\eql at numbering@target@<\z@
+ \global\eql at numbering@eqnswinit
+ \fi
+}
+\def\eql at numbering@measure at eval{%
+ \ifdefined\eql at numbering@eval at target
+ \eql at numbering@eval at target
+ \fi
+ \ifnum\eql at numbering@target@>\eql at row@
+ \global\eql at numbering@target@\eql at row@
+ \fi
+ \ifnum\eql at numbering@target@>\z@
+ \if at eqnsw\else
+ \global\eql at numbering@target@\z@
+ \fi
+ \fi
+ \ifnum\eql at numbering@target@<\@ne
+ \ifdefined\eql at nextlabel
+ \eql at warn@label at unused
+ \global\let\eql at nextlabel\@undefined
+ \fi
+ \ifdefined\eql at nexttag
+ \eql at warn@tag at unused
+ \global\let\eql at nexttag\@undefined
+ \fi
+ \fi
+}
+\def\eql at numbering@print at init{%
+ \ifnum\eql at numbering@target@<\z@
+ \let\label\eql at label@nowarn
+ \let\tag\eql at tag@nowarn
+ \let\raisetag\eql at raisetag
+ \let\eql at nextlabel\eql at blocklabel
+ \ifdefined\eql at blocktag
+ \expandafter\eql at tag@makenext\eql at blocktag
+ \else
+ \let\eql at nexttag\@undefined
+ \fi
+ \else
+ \let\label\@gobble
+ \let\tag\eql at tag@gobble
+ \let\raisetag\eql at gobble
+ \fi
+}
+\def\eql at numbering@print at block@begin{%
+ \ifnum\eql at numbering@target@>\z@
+ \eql at numbering@makeblockanchor
+ \fi
+ \ifdefined\eql at numbering@subeq at use
+ \eql at numbering@printsubeqlabel
+ \fi
+}
+\def\eql at numbering@print at line@begin{%
+ \ifnum\eql at numbering@target@<\z@
+ \global\eql at numbering@eqnswinit
+ \global\eql at raisetag@amount@\z@
+ \fi
+}
+\def\eql at numbering@print at line@eval{%
+ \ifnum\eql at numbering@target@<\z@\else
+ \ifnum\eql at numbering@target@=\eql at row@
+ \global\@eqnswtrue
+ \else
+ \global\@eqnswfalse
+ \fi
+ \fi
+}
+\def\eql at numbering@subeq at init{%
+ \let\eql at save@theequation\theequation
+ \let\eql at save@theHequation\theHequation
+ \eql at subequations@init
+ \let\eql at parentlabel\eql at blocklabel
+ \let\eql at parenttag\eql at blocktag
+ \let\eql at blocklabel\@undefined
+ \let\eql at blocktag\@undefined
+}
+\def\eql at numbering@subeq at test{%
+ \ifnum\c at equation<\tw@
+ \let\eql at numbering@subeq at use\@ne
+ \fi
+}
+\def\eql at numbering@subeq at revert{%
+ \let\eql at blocklabel\eql at parentlabel
+ \let\eql at blocktag\eql at parenttag
+ \let\eql at numbering@subeq at use\eql at false
+ \let\theequation\eql at save@theequation
+ \let\theHequation\eql at save@theHequation
+ \eql at subequations@restorecounter
+}
+\def\eql at numbering@subeq at close{%
+ \eql at subequations@close
+}
+\interdisplaylinepenalty\@M
+\def\eql at getdsp@pen#1{%
+ \ifcase #1\@M \or 9999 \or 6999 \or 2999 \or \z@\fi
+}
+\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
+\newcount\eql at displaybreak@pen@
+\newcount\eql at displaybreak@prepen@
+\protected\def\eql at displaybreak@print{%
+ \eql at ampprotect\eql at testopt@tight\eql at displaybreak@print@{4}%
+}
+\def\eql at displaybreak@print@[#1]{%
+ \ifnum#1<\z@
+ \global\eql at displaybreak@pen@\@MM
+ \else
+ \global\eql at displaybreak@pen at -\@getpen{#1}\relax
+ \fi
+}
+\def\eql at displaybreak@pre#1{%
+ \ifnum#1<\z@
+ \global\eql at displaybreak@prepen@\@MM
+ \else
+ \global\eql at displaybreak@prepen at -\@getpen{#1}\relax
+ \fi
+}
+\protected\def\eql at displaybreak@measure{%
+ \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@
+\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@
+}
+\def\eql at display@init{%
+ \eql at display@firstavail@\z@
+ \eql at raisetag@firstlast@\z@
+ \let\displaybreak\eql at displaybreak@print
+ \eql at displaybreak@pen@\@MM
+ \eql at vspaceskip@\z at skip
+ \let\eql at vspace@org\vspace
+ \let\vspace\eql at vspace
+}
+\def\eql at display@close{%
+ \ifdim\eql at halign@prevdepth@=\maxdimen
+ \ifdim\predisplaysize=-\maxdimen
+ \abovedisplayskip\eql at abovedisplaycontskip@
+ \predisplaysize\maxdimen
+ \abovedisplayshortskip\abovedisplayskip
+ \belowdisplayshortskip\belowdisplayskip
+ \fi
+ \else
+ \ifdim\eql at halign@prevdepth@=\@m\p@
+ \predisplaypenalty\z@
+ \abovedisplayskip\eql at abovedisplaytopskip@
+ \belowdisplayskip\eql at belowdisplaytopskip@
+ \else
+ \predisplaypenalty\z@
+ \abovedisplayskip\eql at abovedisplayparskip@
+ \fi
+ \predisplaysize\maxdimen
+ \abovedisplayshortskip\abovedisplayskip
+ \belowdisplayshortskip\belowdisplayskip
+ \fi
+ \eql at display@doatend
+ \ifdim\eql at display@firstavail@<\z@
+ \eql at display@firstavail@\z@
+ \fi
+ \advance\eql at display@firstavail@\displayindent
+ \ifdim\eql at display@firstavail@>\predisplaysize
+ \ifcase\eql at displayshortmode@
+ \or
+ \abovedisplayskip\abovedisplayshortskip
+ \or
+ \abovedisplayskip\abovedisplayshortskip
+ \ifnum\eql at row@=\tw@
+ \belowdisplayskip\belowdisplayshortskip
+ \fi
+ \or
+ \abovedisplayskip\abovedisplayshortskip
+ \belowdisplayskip\belowdisplayshortskip
+ \fi
+ \fi
+ \ifodd\eql at raisetag@firstlast@
+ \abovedisplayskip\eql at abovedisplaytagskip@
+ \fi
+ \ifnum\eql at raisetag@firstlast@>\@ne
+ \belowdisplayskip\eql at belowdisplaytagskip@
+ \fi
+ \ifnum\eql at displaybreak@pen@=\@MM\else
+ \postdisplaypenalty\eql at displaybreak@pen@
+ \fi
+ \ifnum\eql at displaybreak@prepen@=\@MM\else
+ \predisplaypenalty\eql at displaybreak@prepen@
+ \fi
+ \advance\abovedisplayskip\eql at abovespace@
+ \advance\belowdisplayskip\eql at belowspace@
+ \advance\belowdisplayskip\eql at vspaceskip@
+ \count@\prevgraf
+ \advance\count@\eql at row@
+ \advance\count at -\tw@
+ \prevgraf\count@
+}
+\def\eql at display@leave{%
+ \let\label\eql at label@org
+ \let\tag\eql at tag@default
+ \let\raisetag\eql at raisetag@default
+ \let\displaybreak\eql at displaybreak@default
+ \let\vspace\eql at vspace@org
+}
+\expandafter\def\expandafter\@arrayparboxrestore\expandafter{%
+ \@arrayparboxrestore
+ \eql at display@leave
+ \eql at amprevert
+ \@displayfalse
+}
+\newbox\eql at strutbox@
+\def\eql at strut{\copy\eql at strutbox@}
+\let\eql at strut@field\eql at strut
+\let\eql at strut@tag\eql at strut
+\def\eql at strut@make{%
+ \setbox\eql at strutbox@\hbox{%
+ \@tempdima\normalbaselineskip
+ \advance\@tempdima-\normallineskiplimit
+ \@tempdimb.3\normalbaselineskip
+ \advance\@tempdimb.5\normallineskiplimit
+ \advance\@tempdima-\@tempdimb
+ \vrule\@height\@tempdima\@depth\@tempdimb\@width\z@
+ }
+}
+\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@
+ \ifdefined\spread at equation
+ \let\spread at equation\@empty
+ \fi
+ \fi
+}
+\newdimen\eql at halign@prevdepth@
+\def\eql at halign@catchprevdepth{%
+ \ifvmode
+ \eql at halign@prevdepth@\prevdepth
+ \nointerlineskip
+ \noindent
+ \else
+ \eql at halign@prevdepth@\maxdimen
+ \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
+ \else
+ \vskip\skip@
+ \fi
+ \nointerlineskip
+ \fi
+}
+\def\eql at halign@after{%
+ \prevdepth\eql at display@depth\relax
+}
+\def\eql at halign@init#1{%
+ \eql at halign@spread
+ \eql at strut@make
+ \everycr{\noalign{#1}}%
+}
+\def\eql at stack@enable{%
+ \let\eql at stack@save at single\eql at stack@save at single@
+ \let\eql at stack@save at multi\eql at stack@save at multi@
+ \let\eql at stack@save at boxed\eql at stack@save at boxed@
+}
+\let\eql at stack@save at single\eql at stack@enable
+\let\eql at stack@save at multi\eql at stack@enable
+\let\eql at stack@save at boxed\eql at stack@enable
+\let\eql at stack@restore\@empty
+\def\eql at stack@save at reg#1{\global#1\the#1\relax}
+\def\eql at stack@save at let#1#2{\global\let\noexpand#2\noexpand#1}
+\def\eql at stack@save at single@{%
+ \let\eql at stack@nextlabel\eql at nextlabel
+ \let\eql at stack@nexttag\eql at nexttag
+ \edef\eql at stack@restore{%
+ \global\if at eqnsw\noexpand\@eqnswtrue\else\noexpand\@eqnswfalse\fi
+ \eql at stack@save at let\eql at stack@nextlabel\eql at nextlabel
+ \eql at stack@save at let\eql at stack@nexttag\eql at nexttag
+ \eql at stack@save at reg\eql at displaybreak@pen@
+ \eql at stack@save at reg\eql at vspaceskip@
+ \eql at stack@save at reg\eql at shape@pos@
+ \eql at stack@save at reg\eql at shape@amount@
+ \eql at stack@save at reg\eql at display@firstavail@
+ \eql at stack@save at reg\eql at raisetag@amount@
+ \eql at stack@save at reg\eql at raisetag@firstlast@
+ }%
+}
+\def\eql at stack@save at multi@{%
+ \let\eql at stack@nextlabel\eql at nextlabel
+ \let\eql at stack@nexttag\eql at nexttag
+ \let\eql at stack@tagwidth at tab\eql at tagwidth@tab
+ \let\eql at stack@fieldlength at tab\eql at fieldlength@tab
+ \let\eql at stack@colwidth at tab\eql at colwidth@tab
+ \let\eql at stack@label at thepage\eql at label@thepage
+ \let\eql at stack@label at currentHref\eql at label@currentHref
+ \edef\eql at stack@restore{%
+ \global\if at eqnsw\noexpand\@eqnswtrue\else\noexpand\@eqnswfalse\fi
+ \eql at stack@save at let\eql at stack@nextlabel\eql at nextlabel
+ \eql at stack@save at let\eql at stack@nexttag\eql at nexttag
+ \eql at stack@save at let\eql at stack@tagwidth at tab\eql at tagwidth@tab
+ \eql at stack@save at let\eql at stack@fieldlength at tab\eql at fieldlength@tab
+ \eql at stack@save at let\eql at stack@colwidth at tab\eql at colwidth@tab
+ \eql at stack@save at let\eql at stack@label at thepage\eql at label@thepage
+ \eql at stack@save at let\eql at stack@label at currentHref\eql at label@currentHref
+ \eql at stack@save at reg\eql at displaybreak@pen@
+ \eql at stack@save at reg\eql at vspaceskip@
+ \eql at stack@save at reg\eql at shape@pos@
+ \eql at stack@save at reg\eql at shape@amount@
+ \eql at stack@save at reg\eql at display@firstavail@
+ \eql at stack@save at reg\eql at raisetag@amount@
+ \eql at stack@save at reg\eql at raisetag@firstlast@
+ \eql at stack@save at reg\eql at column@
+ \eql at stack@save at reg\eql at totalcolumns@
+ \eql at stack@save at reg\eql at line@avail@
+ \eql at stack@save at reg\eql at line@pos@
+ \eql at stack@save at reg\eql at line@width@
+ \eql at stack@save at reg\eql at line@depth@
+ \eql at stack@save at reg\eql at line@height@
+ \eql at stack@save at reg\eql at numbering@target@
+ \eql at stack@save at reg\eql at row@
+ }%
+}
+\def\eql at stack@save at boxed@{%
+ \edef\eql at stack@restore{%
+ \eql at stack@save at reg\eql at row@
+ \eql at stack@save at reg\eql at totalrows@
+ \eql at stack@save at reg\eql at shape@pos@
+ \eql at stack@save at reg\eql at shape@amount@
+ }%
+}
+\ifdefined\inf at bad\else%
+ \newcount\inf at bad
+ \inf at bad1000000\relax
+\fi
+\let\eql at restore@hfuzz\@empty
+\def\eql at save@hfuzz{\edef\eql at restore@hfuzz{\hfuzz\the\hfuzz\relax}}
+\newcount\eql at shape@pos@
+\newdimen\eql at shape@amount@
+\newdimen\eql at marginleft@
+\newdimen\eql at marginright@
+\newcount\eql at marginbadness@
+\newcount\eql at maxbadness@
+\eql at marginbadness@\inf at bad
+\eql at maxbadness@\inf at bad
+\def\eql at shape@tab at default{default}
+\def\eql at shape@tab at left{left}
+\def\eql at shape@tab at center{center}
+\def\eql at shape@tab at right{right}
+\def\eql at shape@tab at first{first}
+\def\eql at shape@tab at hanging{hanging}
+\def\eql at shape@tab at steps{steps}
+\let\eql at shape@tab at def\eql at shape@tab at default
+\let\eql at shape@tab@\eql at shape@tab at default
+\let\eql at shape@tab at l\eql at shape@tab at left
+\let\eql at shape@tab at c\eql at shape@tab at center
+\let\eql at shape@tab at r\eql at shape@tab at right
+\let\eql at shape@tab at rc\eql at shape@tab at first
+\let\eql at shape@tab at indent\eql at shape@tab at first
+\let\eql at shape@tab at hang\eql at shape@tab at hanging
+\let\eql at shape@tab at lc\eql at shape@tab at hanging
+\let\eql at shape@tab at outdent\eql at shape@tab at hanging
+\let\eql at shape@tab at lcr\eql at shape@tab at steps
+\let\eql at shape@mode\eql at shape@tab at default
+\def\eql at shape@set#1{%
+ \ifcsname eql at shape@tab@#1\endcsname
+ \expandafter\let\expandafter\eql at shape@mode
+ \csname eql at shape@tab@#1\endcsname
+ \else
+ \eql at error{shape `#1' unknown: setting to default}%
+ \let\eql at shape@mode\eql at shape@tab at default
+ \fi
+}
+\def\eql at shape@center at left{\eql at shape@pos@\z@\eql at shape@amount@\z@}
+\def\eql at shape@center at center{\eql at shape@pos@\@ne\eql at shape@amount@\z@}
+\def\eql at shape@center at right{\eql at shape@pos@\tw@\eql at shape@amount@\z@}
+\let\eql at shape@center at default\eql at shape@center at center
+\def\eql at shape@left at left{\eql at shape@pos@\z@\eql at shape@amount@\z@}
+\def\eql at shape@left at center{\eql at shape@pos@\@ne\eql at shape@amount@\z@}
+\def\eql at shape@left at right{\eql at shape@pos@\tw@\eql at shape@amount@\z@}
+\let\eql at shape@left at default\eql at shape@left at left
+\def\eql at shape@center at first{%
+ \eql at shape@pos@\z@
+ \eql at shape@amount@\z@
+ \ifnum\eql at totalrows@>\@ne
+ \ifnum\eql at row@=\@ne
+ \eql at shape@amount@\eql at indent@
+ \fi
+ \fi
+}
+\def\eql at shape@left at first{%
+ \eql at shape@pos@\z@
+ \eql at shape@amount@\z@
+ \ifnum\eql at totalrows@>\@ne
+ \ifnum\eql at row@=\@ne
+ \eql at shape@amount@\eql at indent@
+ \fi
+ \fi
+}
+\def\eql at shape@center at hanging{%
+ \eql at shape@pos@\z@
+ \eql at shape@amount@\eql at indent@
+ \ifnum\eql at totalrows@>\@ne
+ \ifnum\eql at row@=\@ne
+ \eql at shape@amount@\z@
+ \fi
+ \fi
+}
+\def\eql at shape@left at hanging{%
+ \eql at shape@pos@\z@
+ \eql at shape@amount@\z@
+ \ifnum\eql at totalrows@>\@ne
+ \ifnum\eql at row@=\@ne
+ \eql at shape@amount at -\eql at indent@
+ \fi
+ \fi
+}
+\def\eql at shape@center at steps{%
+ \eql at shape@amount@\z@
+ \eql at shape@pos@\@ne
+ \ifnum\eql at totalrows@>\@ne
+ \ifnum\eql at row@=\@ne
+ \eql at shape@pos@\z@
+ \fi
+ \ifnum\eql at row@=\eql at totalrows@
+ \eql at shape@pos@\tw@
+ \fi
+ \fi
+}
+\def\eql at shape@left at steps{%
+ \eql at shape@pos@\z@
+ \eql at shape@amount@\z@
+ \ifnum\eql at totalrows@>\@ne
+ \ifnum\eql at row@=\@ne
+ \eql at shape@amount at -\eql at indent@
+ \fi
+ \ifnum\eql at row@=\eql at totalrows@
+ \eql at shape@amount@\eql at indent@
+ \fi
+ \fi
+}
+\let\eql at shape@eval\@undefined
+\def\eql at shape@sel{%
+ \expandafter\let\expandafter\eql at shape@eval
+ \csname eql at shape%
+ @\ifdefined\eql at flushleft left\else center\fi
+ @\eql at shape@mode\endcsname
+}
+\def\eql at adjust@shoveleft{%
+ \global\eql at shape@pos@\z@
+ \eql at srbgroup\eql at ifstar@tight
+ {\eql at adjust@shoveleft@[\eql at indent@]}%
+ {\eql at ifnextgobble@tight{!}%
+ {\eql at adjust@shoveleft@[-\eql at indent@]}%
+ {\eql at testopt@tight\eql at adjust@shoveleft@\z@}%
+ }%
+}
+\def\eql at adjust@shoveleft@[#1]{%
+ \eql at sregroup\setlength\dimen@{#1}\global\eql at shape@amount@\dimen@}
+\def\eql at adjust@shovecenter{%
+ \global\eql at shape@pos@\@ne\global\eql at shape@amount@\z@}
+\def\eql at adjust@shoveright{%
+ \global\eql at shape@pos@\tw@\global\eql at shape@amount@\z@}
+\def\eql at adjust@try#1{%
+ \setbox\eql at fieldbox@\hbox to\displaywidth{%
+ \unhbox\eql at fieldbox@\unkern\kern#1}%
+}
+\def\eql at adjust@print#1#2{%
+ \eql at restore@hfuzz
+ \hbox to\displaywidth{#1\unhbox\eql at fieldbox@\unkern#2}%
+}
+\def\eql at adjust@print at alignleft#1#2{%
+ \ifnum\eql at row@=\@ne
+ \global\eql at display@firstavail@#1%
+ \fi
+ \eql at adjust@print{\kern#1}{\kern#2}%
+}
+\def\eql at adjust@print at alignright#1#2{%
+ \ifnum\eql at row@=\@ne
+ \eql at display@firstavail@\displaywidth
+ \advance\eql at display@firstavail at -\eql at fieldwidth@
+ \global\advance\eql at display@firstavail at -#2%
+ \fi
+ \eql at adjust@print{\kern#1\hfil}{\unskip\kern#2}%
+}
+\def\eql at adjust@print at aligncenter#1#2{%
+ \ifnum\eql at row@=\@ne
+ \eql at display@firstavail@\displaywidth
+ \advance\eql at display@firstavail at -\eql at fieldwidth@
+ \advance\eql at display@firstavail@#1%
+ \advance\eql at display@firstavail at -#2%
+ \global\divide\eql at display@firstavail@\tw@
+ \fi
+ \eql at adjust@print{\kern#1\hfil}{\kern#2}%
+}
+\def\eql at adjust@init{%
+ \eql at save@hfuzz
+ \hfuzz\maxdimen
+ \eql at shape@sel
+}
+\def\eql at adjust@sel at tag{%
+ \csname eql at adjust%
+ @\ifdefined\eql at flushleft flushleft\else center\fi
+ @\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
+ @\ifcase\eql at shape@pos@ shoveleft\or shovecenter\or shoveright\fi
+ @tag\endcsname
+}
+\def\eql at adjust@sel at notag{%
+ \csname eql at adjust%
+ @\ifdefined\eql at flushleft flushleft\else center\fi
+ @\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
+ @\ifcase\eql at shape@pos@ shoveleft\or shovecenter\or shoveright\fi
+ @notag\endcsname
+}
+\def\eql at adjust@center at tagsright@shovecenter at notag{%
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at fieldwidth@
+ \ifdim\dimen@>\eql at tagmargin@
+ \eql at adjust@print at aligncenter\z@\eql at tagmargin@
+ \else
+ \eql at adjust@print at alignleft\z@\z@
+ \fi
+}
+\def\eql at adjust@center at tagsright@shovecenter at tag{%
+ \dimen@\displaywidth
+ \ifdim\eql at tagwidth@<\eql at tagmargin@
+ \advance\dimen at -\eql at tagmargin@
+ \else
+ \advance\dimen at -2\eql at tagwidth@
+ \advance\dimen@\eql at tagmargin@
+ \fi
+ \ifdim\eql at fieldwidth@<\dimen@
+ \eql at adjust@print at aligncenter\z@\eql at tagmargin@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \ifdim\eql at tagwidth@<\eql at tagmargin@
+ \eql at adjust@print at alignleft\z@\eql at tagwidth@
+ \else
+ \eql at adjust@print at alignright\z@\eql at tagwidth@
+ \fi
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@center at tagsright@shovecenter at notag
+ \eql at tagbox@print at right@raise
+ \fi
+ \fi
+}
+\def\eql at adjust@center at tagsleft@shovecenter at notag{%
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at tagmargin@
+ \ifdim\eql at fieldwidth@<\dimen@
+ \eql at adjust@print at aligncenter\eql at tagmargin@\z@
+ \else
+ \eql at adjust@print at alignright\z@\z@
+ \fi
+}
+\def\eql at adjust@center at tagsleft@shovecenter at tag{%
+ \dimen@\displaywidth
+ \ifdim\eql at tagwidth@<\eql at tagmargin@
+ \advance\dimen at -\eql at tagmargin@
+ \else
+ \advance\dimen at -2\eql at tagwidth@
+ \advance\dimen@\eql at tagmargin@
+ \fi
+ \ifdim\eql at fieldwidth@<\dimen@
+ \eql at tagbox@print at left
+ \eql at adjust@print at aligncenter\eql at tagmargin@\z@
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \ifdim\eql at tagwidth@<\eql at tagmargin@
+ \eql at adjust@print at alignright\eql at tagwidth@\z@
+ \else
+ \eql at adjust@print at alignleft\eql at tagwidth@\z@
+ \fi
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@center at tagsleft@shovecenter at notag
+ \fi
+ \fi
+ \eql at display@firstavail at set\z@
+}
+\def\eql at adjust@center at tagsright@shoveleft at notag{%
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at marginleft@
+ \advance\dimen at -\eql at shape@amount@
+ \ifdim\eql at fieldwidth@<\dimen@
+ \dimen@\eql at marginleft@
+ \advance\dimen@\eql at shape@amount@
+ \eql at adjust@print at alignleft\dimen@\z@
+ \else
+ \eql at adjust@print at alignright\z@\z@
+ \fi
+}
+\def\eql at adjust@center at tagsright@shoveleft at tag{%
+ \dimen@\eql at marginleft@
+ \advance\dimen@\eql at shape@amount@
+ \advance\dimen@\eql at tagwidth@
+ \eql at adjust@try\dimen@
+ \ifnum\badness<\eql at marginbadness@
+ \dimen@\eql at marginleft@
+ \advance\dimen@\eql at shape@amount@
+ \eql at adjust@print at alignleft\dimen@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \ifdim\eql at marginleft@>-\eql at shape@amount@
+ \eql at adjust@try\eql at tagwidth@
+ \fi
+ \ifnum\badness<\eql at maxbadness@
+ \eql at adjust@print at alignright\z@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@center at tagsright@shoveleft at notag
+ \eql at tagbox@print at right@raise
+ \fi
+ \fi
+}
+\def\eql at adjust@center at tagsleft@shoveright at notag{%
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at tagmargin@
+ \advance\dimen at -\eql at marginright@
+ \ifdim\eql at fieldwidth@<\dimen@
+ \eql at adjust@print at alignright\z@\eql at marginright@
+ \else
+ \eql at adjust@print at alignleft\z@\z@
+ \fi
+}
+\def\eql at adjust@center at tagsleft@shoveright at tag{%
+ \dimen@\eql at marginright@
+ \advance\dimen@\eql at tagwidth@
+ \eql at adjust@try\dimen@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignright\eql at tagwidth@\eql at marginright@
+ \else
+ \ifdim\eql at marginright@>\z@
+ \eql at adjust@try\eql at tagwidth@
+ \fi
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignleft\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@center at tagsleft@shoveright at notag
+ \fi
+ \fi
+ \eql at display@firstavail at set\z@
+}
+\def\eql at adjust@center at tagsright@shoveright at notag{%
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at tagmargin@
+ \advance\dimen at -\eql at marginright@
+ \ifdim\eql at fieldwidth@<\dimen@
+ \dimen@\eql at tagmargin@
+ \advance\dimen@\eql at marginright@
+ \eql at adjust@print at alignright\z@\dimen@
+ \else
+ \eql at adjust@print at alignleft\z@\z@
+ \fi
+}
+\def\eql at adjust@center at tagsright@shoveright at tag{%
+ \dimen@\eql at tagmargin@
+ \advance\dimen@\eql at marginright@
+ \ifdim\eql at tagwidth@<\dimen@
+ \eql at adjust@try\dimen@%
+ \ifnum\badness<\eql at marginbadness@
+ \eql at adjust@print at alignright\z@\dimen@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at adjust@print at alignleft\z@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@print at alignleft\z@\z@
+ \eql at tagbox@print at left@raise
+ \fi
+ \fi
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at adjust@print at alignright\z@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@center at tagsright@shoveright at notag
+ \eql at tagbox@print at right@raise
+ \fi
+ \fi
+}
+\def\eql at adjust@center at tagsleft@shoveleft at notag{%
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at tagmargin@
+ \advance\dimen at -\eql at marginleft@
+ \advance\dimen at -\eql at shape@amount@
+ \ifdim\eql at fieldwidth@<\dimen@
+ \dimen@\eql at tagmargin@
+ \advance\dimen@\eql at marginleft@
+ \advance\dimen@\eql at shape@amount@
+ \eql at adjust@print at alignleft\dimen@\z@
+ \else
+ \eql at adjust@print at alignright\z@\z@
+ \fi
+}
+\def\eql at adjust@center at tagsleft@shoveleft at tag{%
+ \dimen@\eql at tagmargin@
+ \advance\dimen@\eql at marginleft@
+ \advance\dimen@\eql at shape@amount@
+ \ifdim\eql at tagwidth@<\dimen@
+ \eql at adjust@try\dimen@%
+ \ifnum\badness<\eql at marginbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignleft\dimen@\z@
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignright\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@print at alignright\z@\z@
+ \fi
+ \fi
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignleft\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@center at tagsleft@shoveleft at notag
+ \fi
+ \fi
+ \eql at display@firstavail at set\z@
+}
+\def\eql at adjust@flushleft at shoveleft{%
+ \eql at marginleft@\eql at flushleftmargin@
+ \advance\eql at marginleft@\eql at shape@amount@
+ \ifdim\eql at marginleft@<\eql at flushleftmarginmin@
+ \eql at marginleft@\eql at flushleftmarginmin@
+ \fi
+ \ifdim\eql at marginleft@>\eql at flushleftmarginmax@
+ \eql at marginleft@\eql at flushleftmarginmax@
+ \fi
+}
+\def\eql at adjust@flushleft at shoveleft@notag{%
+ \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
+ \eql at adjust@try\eql at marginleft@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at adjust@print at alignleft\eql at marginleft@\z@
+ \else
+ \eql at adjust@print at alignleft\eql at flushleftmarginmin@\z@
+ \fi
+ \else
+ \eql at adjust@print at alignleft\eql at marginleft@\z@
+ \fi
+}
+\def\eql at adjust@flushleft at tagsright@shoveleft at notag{%
+ \eql at adjust@flushleft at shoveleft
+ \eql at adjust@flushleft at shoveleft@notag
+}
+\let\eql at adjust@flushleft at tagsleft@shoveleft at notag
+ \eql at adjust@flushleft at tagsright@shoveleft at notag
+\def\eql at adjust@flushleft at tagsright@shoveleft at tag{%
+ \eql at adjust@flushleft at shoveleft
+ \dimen@\eql at marginleft@
+ \advance\dimen@\eql at tagwidth@
+ \eql at adjust@try\dimen@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at adjust@print at alignleft\eql at marginleft@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
+ \dimen@\eql at flushleftmarginmin@
+ \advance\dimen@\eql at tagwidth@
+ \eql at adjust@try\dimen@
+ \fi
+ \ifnum\badness<\eql at maxbadness@
+ \eql at adjust@print at alignleft\eql at flushleftmarginmin@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@flushleft at shoveleft@notag
+ \eql at tagbox@print at right@raise
+ \fi
+ \fi
+}
+\def\eql at adjust@flushleft at tagsleft@shoveleft at tag{%
+ \eql at adjust@flushleft at shoveleft
+ \ifdim\eql at tagwidth@<\eql at flushleftmarginmin@
+ \eql at tagbox@print at left
+ \eql at adjust@flushleft at notag
+ \else
+ \ifdim\eql at tagwidth@<\eql at marginleft@
+ \eql at adjust@try\eql at marginleft@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignleft\eql at marginleft@\z@
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignleft\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@print at alignleft\eql at flushleftmarginmin@\z@
+ \fi
+ \fi
+ \else
+ \ifdim\eql at tagwidth@>\eql at flushleftmarginmax@
+ \eql at tagbox@print at left@raise
+ \eql at adjust@flushleft at shoveleft@notag
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignleft\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@flushleft at shoveleft@notag
+ \fi
+ \fi
+ \fi
+ \fi
+ \eql at display@firstavail at set\z@
+}
+\def\eql at adjust@flushleft at shoveright@notag{%
+ \eql at marginleft@\eql at flushleftmargin@
+ \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
+ \eql at adjust@try\eql at marginleft@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at adjust@print at alignright\eql at marginleft@\z@
+ \else
+ \eql at adjust@print at alignright\eql at flushleftmarginmin@\z@
+ \fi
+ \else
+ \eql at adjust@print at alignright\eql at marginleft@\z@
+ \fi
+}
+\let\eql at adjust@flushleft at tagsright@shoveright at notag
+ \eql at adjust@flushleft at shoveright@notag
+\let\eql at adjust@flushleft at tagsleft@shoveright at notag
+ \eql at adjust@flushleft at shoveright@notag
+\def\eql at adjust@flushleft at tagsright@shoveright at tag{%
+ \dimen@\eql at marginleft@
+ \advance\dimen@\eql at tagwidth@
+ \eql at adjust@try\dimen@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at adjust@print at alignright\eql at marginleft@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
+ \dimen@\eql at flushleftmarginmin@
+ \advance\dimen@\eql at tagwidth@
+ \eql at adjust@try\dimen@
+ \fi
+ \ifnum\badness<\eql at maxbadness@
+ \eql at adjust@print at alignright\eql at flushleftmarginmin@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@flushleft at shoveright@notag
+ \eql at tagbox@print at right@raise
+ \fi
+ \fi
+}
+\def\eql at adjust@flushleft at tagsleft@shoveright at tag{%
+ \ifdim\eql at tagwidth@<\eql at flushleftmarginmin@
+ \eql at tagbox@print at left
+ \eql at adjust@flushleft at shoveright@notag
+ \else
+ \ifdim\eql at tagwidth@<\eql at marginleft@
+ \eql at adjust@try\eql at marginleft@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignright\eql at marginleft@\z@
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignright\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@print at alignright\eql at flushleftmarginmin@\z@
+ \fi
+ \fi
+ \else
+ \ifdim\eql at tagwidth@>\eql at flushleftmarginmax@
+ \eql at tagbox@print at left@raise
+ \eql at adjust@flushleft at shoveright@notag
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignright\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@flushleft at shoveright@notag
+ \fi
+ \fi
+ \fi
+ \fi
+ \eql at display@firstavail at set\z@
+}
+\def\eql at adjust@flushleft at shovecenter{%
+ \eql at error{shove center not implemented for left alignment}%
+}
+\let\eql at adjust@flushleft at tagsright@shovecenter at notag
+ \eql at adjust@flushleft at shovecenter
+\let\eql at adjust@flushleft at tagsright@shovecenter at tag
+ \eql at adjust@flushleft at shovecenter
+\let\eql at adjust@flushleft at tagsleft@shovecenter at notag
+ \eql at adjust@flushleft at shovecenter
+\let\eql at adjust@flushleft at tagsleft@shovecenter at tag
+ \eql at adjust@flushleft at shovecenter
+\def\eql at single@cr{%
+ \eql at error{Cannot use `\string\\' within display equation.
+ Please switch to equations environment}%
+}
+\def\eql at single@start{%
+ \eql at numbering@eval at mode
+ \let\eql at numbering@subeq at use\eql at false
+ \eql at stack@save at single
+ \eql at numbering@single at init
+ \ifdefined\eql at single@native
+ \let\eql at single@start at sel\eql at single@start at native
+ \let\eql at single@end at sel\eql at single@end at native
+ \let\raisetag\eql at raisetag@default
+ \else
+ \let\eql at single@start at sel\eql at single@start at adjust
+ \let\eql at single@end at sel\eql at single@end at adjust
+ \fi
+ \ifdefined\eql at single@crerror\else
+ \let\\\eql at single@cr
+ \fi
+ \eql at single@start at sel
+}
+\def\eql at single@end{%
+ \eql at punct@apply at block
+ \eql at hook@eqout
+ \eql at single@end at sel
+ \eql at stack@restore
+}
+\def\eql at single@start at native{%
+ \eql at hook@eqin
+}%
+\def\eql at single@end at native{%
+ \if at eqnsw
+ \ifdefined\eql at tagsleft
+ \leqno
+ \else
+ \eqno
+ \fi
+ \eql at compose@print
+ \fi
+ \ifnum\eql at displaybreak@pen@=\@MM\else
+ \postdisplaypenalty\eql at displaybreak@pen@
+ \fi
+}%
+\def\eql at single@start at adjust{%
+ \eql at totalrows@\@ne
+ \eql at row@\z@
+ \eql at display@init
+ \let\shoveleft\eql at adjust@shoveleft
+ \let\shovecenter\eql at adjust@shovecenter
+ \let\shoveright\eql at adjust@shoveright
+ \ifdefined\eql at flushleft\else
+ \eql at marginleft@\z@
+ \eql at marginright@\z@
+ \fi
+ \eql at adjust@init
+ \eql at shape@eval
+ \eql at row@\@ne
+ \setbox\eql at fieldbox@\hbox\bgroup
+ \eql at restore@hfuzz
+ \eql at strut@field
+ $\m at th\displaystyle%$
+ \eql at hook@eqin
+}
+\def\eql at single@end at adjust{%
+ $%$
+ \hfil
+ \kern\z@
+ \egroup
+ \eql at fieldwidth@\wd\eql at fieldbox@
+ \eql at line@height@\ht\eql at fieldbox@
+ \eql at line@depth@\dp\eql at fieldbox@
+ \eql at halign@init{}%
+ \halign{##\cr
+ \noalign{\eql at halign@before}%
+ \if at eqnsw
+ \eql at tagbox@make\eql at compose@print
+ \eql at adjust@sel at tag
+ \else
+ \eql at adjust@sel at notag
+ \fi
+ \cr
+ \noalign{\eql at halign@after}%
+ }%
+ \eql at row@\tw@
+ \eql at display@close
+}
+\newcount\eql at column@
+\newcount\eql at totalcolumns@
+\newdimen\eql at totalwidth@
+\newdimen\eql at line@width@
+\newdimen\eql at line@avail@
+\newdimen\eql at line@pos@
+\let\eql at fieldlength@tab\@empty
+\def\eql at fieldlength@save#1{%
+ \begingroup
+ \let\or\relax
+ \global\edef\eql at fieldlength@tab{%
+ \eql at fieldlength@tab
+ \ifnum#1=\@ne
+ \or
+ \else
+ ,%
+ \fi
+ \the\wd\eql at fieldbox@
+ }%
+ \endgroup
+}
+\def\eql at fieldlength@get#1{%
+ \ifcase\expandafter#1\eql at fieldlength@tab\fi
+}
+\let\eql at tagwidth@tab\@empty
+\def\eql at tagwidth@get#1{%
+ \ifcase\expandafter#1\eql at tagwidth@tab\fi
+}
+\def\eql at tagwidth@save{%
+ \begingroup
+ \let\or\relax
+ \global\edef\eql at tagwidth@tab{\eql at tagwidth@tab\or\the\eql at tagwidth@}%
+ \endgroup
+}
+\def\eql at tagwidth@savezero{%
+ \begingroup
+ \let\or\relax
+ \global\edef\eql at tagwidth@tab{\the\eql at tagwidth@\eql at tagwidth@tab}%
+ \endgroup
+}
+\def\eql at measure@init#1{%
+ \measuring at true
+ \eql at row@\z@
+ \let\displaybreak\eql at displaybreak@measure
+ \tabskip\z at skip
+ \everycr{%
+ \noalign{%
+ \global\advance\eql at row@\@ne
+ #1%
+ }%
+ }%
+}
+\let\eql at measure@restorecounters\@empty
+\def\eql at measure@savecounters{%
+ \begingroup
+ \def\@elt##1{%
+ \global\csname c@##1\endcsname\the\csname c@##1\endcsname}%
+ \global\edef\@gtempa{%
+ \cl@@ckpt
+ \let\noexpand\eql at measure@restorecounters\noexpand\@empty
+ }%
+ \endgroup
+ \let\eql at measure@restorecounters\@gtempa
+}
+\def\eql at print@init#1{%
+ \eql at row@\z@
+ \eql at halign@init{%
+ \global\eql at displaybreak@pen@\@MM
+ \global\advance\eql at row@\@ne
+ #1%
+ }%
+}
+\def\eql at print@overfull{%
+ \dimen@\eql at line@width@
+ \advance\dimen at -\hfuzz
+ \ifdim\dimen@>\displaywidth
+ \setbox\z@\hbox to\displaywidth{\hbox to\eql at line@width@{\hfil}}%
+ \wd\z@\z@
+ \ht\z@\eql at line@height@
+ \dp\z@\eql at line@depth@
+ \box\z@
+ \fi
+}
+\def\eql at tagbox@print at multi{%
+ \advance\eql at tagwidth@-\eql at tagfuzz@
+ \ifdefined\eql at tagsleft
+ \eql at display@firstavail at set\z@
+ \ifdim\eql at tagwidth@>\eql at line@avail@
+ \eql at tagbox@print at left@raise
+ \else
+ \eql at tagbox@print at left
+ \fi
+ \kern\displaywidth
+ \else
+ \kern\displaywidth
+ \advance\eql at tagwidth@\eql at line@width@
+ \ifdim\eql at tagwidth@>\displaywidth
+ \eql at tagbox@print at right@raise
+ \else
+ \eql at tagbox@print at right
+ \fi
+ \fi
+}
+\protected\def\eql at math@cr{%
+ \eql at ampprotecttwo\eql at teststaropt@tight
+ {\global\eql at displaybreak@pen@\@M\eql at math@cr@}\eql at math@cr@\z@}
+\def\eql at math@cr@[#1]{%
+ \eql at math@cr@@@
+ \cr
+ \noalign{%
+ \ifnum\eql at displaybreak@pen@=\@MM
+ \penalty\interdisplaylinepenalty
+ \else
+ \penalty\eql at displaybreak@pen@
+ \fi
+ \addtolength\eql at vspaceskip@{#1}%
+ \vskip\eql at vspaceskip@
+ \global\eql at vspaceskip@\z at skip
+ }%
+}
+\def\eql at let@cr#1{%
+ \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{%
+ \eql at math@cr@@@
+ \cr
+ \ifmeasuring@\else
+ \expandafter\eql at intertext@print{#1}%
+ \fi
+}
+\def\eql at intertext@print#1{%
+ \noalign{%
+ \eql at halign@after
+ \eql at setkeys{intertext}\eql at intertext@opt
+ \normalbaselines
+ \penalty\postdisplaypenalty
+ \addtolength\eql at vspaceskip@\belowdisplayskip
+ \vskip\eql at vspaceskip@
+ \global\eql at vspaceskip@\z at skip
+ \vbox{%
+ \@parboxrestore
+ \ifdim
+ \ifdim\@totalleftmargin=\z@\linewidth\else-\maxdimen\fi=\columnwidth
+ \else
+ \parshape\@ne
+ \@totalleftmargin\linewidth
+ \fi
+ \noindent
+ \ignorespaces
+ #1%
+ \par
+ }%
+ \penalty\predisplaypenalty
+ \vskip\abovedisplayskip
+ \eql at halign@prevdepth@\z@
+ \eql at halign@before
+ }
+}
+\newenvironment{eql at intertext}{%
+ \eql at testopt@tight\eql at intertext@{}%
+}{%
+ \aftergroup\eql at intertext@after
+ \ignorespacesafterend
+}
+\def\eql at intertext@env{intertext}
+\def\eql at intertext@[#1]{%
+ \global\def\eql at intertext@opt{#1}%
+ \ifx\@currenvir\eql at intertext@env
+ \expandafter\eql at scan@env\expandafter\eql at intertext@inject
+ \else
+ \expandafter\eql at intertext@process
+ \fi
+}
+\def\eql at intertext@inject{%
+ \global\edef\eql at intertext@after{%
+ \noexpand\eql at intertext@process{%
+ \ifx\eql at scan@body\eql at scan@body at dump
+ \eql at scan@body at dump
+ \else
+ \noexpand\scantokens{\eql at scan@body at dump}%
+ \fi
+ }%
+ }%
+}
+\let\eql at multi@mode at lines\eql at false
+\def\eql at multi@main{%
+ \eql at numbering@eval at mode
+ \eql at stack@save at multi
+ \ifdefined\eql at subequations@active
+ \let\eql at numbering@subeq at use\eql at false
+ \fi
+ \ifdefined\eql at numbering@subeq at use
+ \eql at numbering@subeq at init
+ \fi
+ \let\intertext\eql at intertext
+ \let\endintertext\endeql at intertext
+ \let\shoveleft\eql at adjust@shoveleft
+ \let\shovecenter\eql at adjust@shovecenter
+ \let\shoveright\eql at adjust@shoveright
+ \ifdefined\eql at multi@mode at lines
+ \expandafter\eql at lines@measure
+ \else
+ \ifdefined\eql at ampproof@active
+ \eql at ampproof
+ \fi
+ \expandafter\eql at align@measure
+ \fi
+ \ifx\eql at numbering@subeq at use\@ne
+ \eql at numbering@subeq at revert
+ \fi
+ \ifdefined\eql at multi@mode at lines\else
+ \ifdefined\eql at multi@linesfallback
+ \ifnum\eql at totalcolumns@=\@ne
+ \let\eql at multi@mode at lines\eql at true
+ \eql at shape@set{r}%
+ \fi
+ \fi
+ \fi
+ \ifdefined\eql at multi@mode at lines
+ \expandafter\eql at lines@print
+ \else
+ \expandafter\eql at align@print
+ \fi
+ \ifdefined\eql at numbering@subeq at use
+ \eql at numbering@subeq at close
+ \fi
+ \eql at stack@restore
+}
+\def\eql at mode@equation{%
+ \let\eql at equations@mode at single\eql at true
+ \let\eql at equations@end\eql at single@end
+}
+\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@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@end\@empty
+}
+\eql at mode@align
+\def\eql at lines@measure at line@begin{%
+\eql at dev{starting line \the\eql at row@}%
+ \eql at numbering@measure at line@begin
+ \eql at hook@linein
+}
+\def\eql at lines@measure at line@end{%
+ \eql at punct@apply at line
+ \eql at hook@lineout
+}
+\def\eql at lines@measure at field{%
+ \kern\wd\eql at fieldbox@
+}
+\def\eql at lines@measure at tag{%
+ \ifnum\eql at numbering@target@<\z@
+ \if at eqnsw
+ \eql at compose@null
+ \fi
+ \fi
+}
+\def\eql at lines@measure{%
+\eql at dev@enter\eql at lines@measure
+ \eql at measure@savecounters
+ \setbox\z@\vbox{%
+ \eql at numbering@measure at init
+ \eql at measure@init\eql at lines@measure at line@begin
+ \eql at let@cr\eql at lines@measure at line@end
+ \halign{%
+ \setbox\eql at fieldbox@\hbox{%
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ $%
+ }%
+ \eql at lines@measure at field
+ \eql at lines@measure at tag
+ \crcr
+ \noalign{%
+ \eql at hook@blockbefore
+ }%
+ \eql at hook@blockin
+ \eql at scan@body
+ \ifvmode\else
+ \eql at punct@apply at block
+ \eql at hook@blockout
+ \eql at lines@measure at line@end
+ \cr
+ \fi
+ \omit
+ \cr
+ \noalign{%
+ \eql at hook@blockafter
+ }%
+ }%
+ \global\advance\eql at row@-\tw@
+ \eql at numbering@measure at eval
+ }%
+ \eql at totalrows@\eql at row@
+ \setbox\z@\vbox{%
+ \unvbox\z@
+ \unpenalty
+ \global\setbox\@ne\lastbox
+ }%
+ \eql at totalwidth@\wd\@ne
+ \ifdefined\eql at numbering@subeq at use
+ \eql at numbering@subeq at test
+ \fi
+ \eql at measure@restorecounters
+\eql at dev@leave\eql at lines@measure
+}
+\def\eql at lines@print at line@begin{%
+\eql at dev{starting line \the\eql at row@}%
+ \eql at numbering@print at line@begin
+ \eql at hook@linein
+}
+\def\eql at lines@print at line@end{%
+ \eql at punct@apply at line
+ \eql at hook@lineout
+}
+\def\eql at lines@print at line@adjust{%
+ \eql at numbering@print at line@eval
+ \eql at fieldwidth@\wd\eql at fieldbox@
+ \eql at line@height@\ht\eql at fieldbox@
+ \eql at line@depth@\dp\eql at fieldbox@
+ \if at eqnsw
+ \eql at tagbox@make\eql at compose@print
+ \eql at adjust@sel at tag
+ \else
+ \eql at adjust@sel at notag
+ \fi
+}
+\def\eql at lines@print{%
+\eql at dev@enter\eql at lines@print
+ \eql at display@init
+ \ifdefined\eql at flushleft
+ \else
+ \ifdefined\eql at paddingmax
+ \eql at marginleft@\z@
+ \eql at marginright@\z@
+ \else
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at totalwidth@
+ \advance\dimen at -\eql at tagmargin@
+ \divide\dimen@\tw@
+ \eql at marginleft@\dimen@
+ \advance\eql at marginleft@-\eql at paddingleft@
+ \ifdim\eql at marginleft@<\z@
+ \eql at marginleft@\z@
+ \fi
+ \eql at marginright@\dimen@
+ \advance\eql at marginright@-\eql at paddingright@
+ \ifdim\eql at marginright@<\z@
+ \eql at marginright@\z@
+ \fi
+ \fi
+ \fi
+ \eql at adjust@init
+ \eql at numbering@print at init
+ \eql at print@init\eql at lines@print at line@begin
+ \eql at let@cr\eql at lines@print at line@end
+ \tabskip\z at skip
+ \halign{%
+ \eql at shape@eval
+ \setbox\eql at fieldbox@\hbox{%
+ \eql at restore@hfuzz
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ $%
+ \hfil
+ \kern\z@
+ }%
+ \eql at lines@print at line@adjust
+ \crcr
+ \noalign{%
+ \eql at halign@before
+ \eql at numbering@print at block@begin
+ \eql at hook@blockbefore
+ }%
+ \eql at hook@blockin
+ \eql at scan@body
+ \ifvmode\else
+ \eql at punct@apply at block
+ \eql at hook@blockout
+ \eql at lines@print at line@end
+ \cr
+ \fi
+ \noalign{%
+ \eql at hook@blockafter
+ \eql at halign@after
+\eql at dev@leave\eql at lines@print
+ }%
+ }%
+ \eql at display@close
+}
+\let\eql at align@margins\eql at true
+\newcount\eql at align@inter@
+\let\eql at colwidth@tab\@empty
+\def\eql at align@colwidth at get#1{%
+ \ifcase\expandafter#1\eql at colwidth@tab\else\z@\fi
+}
+\def\eql at align@colwidth at save{%
+ \begingroup
+ \let\or\relax
+ \global\edef\eql at colwidth@tab{\or\the\wd\thr@@\eql at colwidth@tab}%
+ \endgroup
+}
+\def\eql at align@add at amp#1{\if m#1&\omit\expandafter\eql at align@add at amp\fi}
+\def\eql at align@completerow#1{%
+ \begingroup
+ \count@#1%
+ \advance\count at -\eql at column@
+\advance\count@\@ne
+ \edef\eql at tmp{\endgroup
+ \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@
+ }%
+ \eql at align@print at field
+}
+\def\eql at align@print at field{%
+ \dimen@\eql at align@colwidth at get\eql at column@\relax
+ \ifdim\wd\eql at fieldbox@>\z@
+ \ifdim\eql at line@width@=\z@
+ \eql at line@avail@\eql at line@pos@
+ \ifodd\eql at column@
+ \advance\eql at line@avail@\dimen@
+ \advance\eql at line@avail at -\wd\eql at fieldbox@
+ \fi
+ \global\eql at line@avail@\eql at line@avail@
+ \fi
+ \eql at line@width@\eql at line@pos@
+ \ifodd\eql at column@
+ \advance\eql at line@width@\dimen@
+ \else
+ \advance\eql at line@width@\wd\eql at fieldbox@
+ \fi
+ \global\eql at line@width@\eql at line@width@
+ \fi
+ \advance\eql at line@pos@\dimen@
+ \ifodd\eql at column@\else
+ \advance\eql at line@pos@\eql at colsep@
+ \fi
+ \global\eql at line@pos@\eql at line@pos@
+ \ifdim\ht\eql at fieldbox@>\eql at line@height@
+ \global\eql at line@height@\ht\eql at fieldbox@
+ \fi
+ \ifdim\dp\eql at fieldbox@>\eql at line@depth@
+ \global\eql at line@depth@\dp\eql at fieldbox@
+ \fi
+ \dimen@\eql at align@colwidth at get\eql at column@\relax
+ \ifodd\eql at column@
+ \kern\dimen@
+ \else
+ \advance\dimen at -\wd\eql at fieldbox@
+ \box\eql at fieldbox@
+ \kern\dimen@
+ \fi
+}
+\def\eql at align@print at line@begin{%
+\eql at dev{starting line \the\eql at row@}%
+ \global\eql at column@\z@
+ \global\eql at line@pos@\eql at marginleft@
+ \global\eql at line@width@\z@
+ \global\eql at line@avail@\eql at totalwidth@
+ \global\eql at line@height@\z@
+ \global\eql at line@depth@\z@
+ \eql at numbering@print at line@begin
+ \eql at hook@linein
+}
+\def\eql at align@print at line@end{%
+ \eql at punct@apply at line
+ \eql at hook@lineout
+ \ifodd\eql at column@
+ \expandafter\eql at align@print at trailright
+ \fi
+ \eql at align@completerow\eql at totalcolumns@
+ \eql at align@print at line
+}
+\def\eql at align@print at line{%
+ \dimen@\eql at totalwidth@
+ \advance\dimen@\eql at colsep@
+ \kern-\dimen@
+ \eql at display@firstavail at set\eql at line@avail@
+ \eql at print@overfull
+ \eql at numbering@print at line@eval
+ \if at eqnsw
+ \eql at tagbox@make\eql at compose@print
+ \eql at tagbox@print at multi
+ \else
+ \kern\displaywidth
+ \fi
+}
+\def\eql at align@print{%
+\eql at dev@enter\eql at align@print
+ \eql at align@adjust
+ \eql at display@init
+ \eql at numbering@print at init
+ \eql at print@init\eql at align@print at line@begin
+ \eql at let@cr\eql at align@print at line@end
+ \tabskip\eql at marginleft@
+ \halign{%
+ \span\eql at align@preamble\eql at colsep@\eql at align@print at field\eql at strut@field
+ \crcr
+ \noalign{%
+ \eql at halign@before
+ \eql at numbering@print at block@begin
+ \eql at hook@blockbefore
+ }%
+ \eql at hook@blockin
+ \eql at scan@body
+ \ifvmode\else
+ \eql at punct@apply at block
+ \eql at hook@blockout
+ \eql at align@print at line@end
+ \cr
+ \fi
+ \noalign{%
+ \eql at hook@blockafter
+ \eql at halign@after
+\eql at dev@leave\eql at align@print
+ }%
+ }%
+ \eql at display@close
+}
+\def\eql at align@measure at line@begin{%
+\eql at dev{starting line \the\eql at row@}%
+ \global\eql at column@\z@
+ \eql at numbering@measure at line@begin
+ \eql at hook@linein
+}
+\def\eql at align@measure at field{%
+ \eql at fieldlength@save\eql at column@
+ \kern\wd\eql at fieldbox@
+}
+\def\eql at align@measure at line@end{%
+ \eql at punct@apply at line
+ \eql at hook@lineout
+ &\omit
+ \ifnum\eql at column@>\eql at totalcolumns@
+ \global\eql at totalcolumns@\eql at column@
+ \fi
+ \eql at align@measure at tag
+}
+\def\eql at align@measure at tag{%
+ \ifnum\eql at numbering@target@<\z@
+ \if at eqnsw
+ \eql at tagbox@make\eql at compose@measure
+ \else
+ \eql at tagwidth@\z@
+ \fi
+ \eql at tagwidth@save
+ \fi
+}
+\def\eql at align@measure{%
+\eql at dev@enter\eql at align@measure
+ \eql at totalcolumns@\z@
+ \let\eql at tagwidth@tab\@empty
+ \let\eql at fieldlength@tab\@empty
+ \eql at measure@savecounters
+ \setbox\z@\vbox{%
+ \eql at numbering@measure at init
+ \eql at measure@init\eql at align@measure at line@begin
+ \eql at let@cr\eql at align@measure at line@end
+ \halign{%
+ \span\eql at align@preamble\z at skip\eql at align@measure at field\relax
+ \crcr
+ \noalign{%
+ \eql at hook@blockbefore
+ }%
+ \eql at hook@blockin
+ \eql at scan@body
+ \ifvmode\else
+ \eql at punct@apply at block
+ \eql at hook@blockout
+ \eql at align@measure at line@end
+ \cr
+ \fi
+ \noalign{%
+ \eql at hook@blockafter
+ }%
+ \eql at align@completerow\eql at totalcolumns@
+ \cr
+ }%
+ \global\advance\eql at row@-\tw@
+ \eql at numbering@measure at eval
+ \ifnum\eql at numbering@target@>\z@
+ \eql at tagbox@make\eql at compose@measure
+ \eql at tagwidth@savezero
+ \fi
+ }%
+ \eql at totalrows@\eql at row@
+ \ifdefined\eql at numbering@subeq at use
+ \eql at numbering@subeq at test
+ \fi
+ \eql at measure@restorecounters
+ \setbox\z@\vbox{%
+ \unvbox\z@
+ \unpenalty
+ \global\setbox\@ne\lastbox
+ }%
+ \eql at totalwidth@\wd\@ne
+ \let\eql at colwidth@tab\@empty
+ \loop
+ \setbox\@ne\hbox{%
+ \unhbox\@ne
+ \unskip
+ \global\setbox\thr@@\lastbox
+ }%
+ \ifhbox\thr@@
+ \eql at align@colwidth at save
+ \repeat
+\eql at dev@leave\eql at align@measure
+}
+\def\eql at align@adjust{%
+ \ifodd\eql at totalcolumns@
+ \advance\eql at totalcolumns@\@ne
+ \fi
+ \ifnum\eql at totalcolumns@<\thr@@
+ \let\eql at align@margins\eql at true
+ \fi
+ \eql at align@inter@\eql at totalcolumns@
+ \divide\eql at align@inter@\tw@
+ \advance\eql at align@inter@\m at ne
+ \eql at colsep@\displaywidth
+ \advance\eql at colsep@-\eql at totalwidth@
+ \ifdefined\eql at flushleft
+ \advance\eql at colsep@-\eql at flushleftmargin@
+ \fi
+ \count@\eql at align@inter@
+ \ifdefined\eql at align@margins
+ \ifdefined\eql at flushleft
+ \advance\count@\@ne
+ \else
+ \advance\count@\tw@
+ \fi
+ \fi
+ \divide\eql at colsep@\count@
+ \ifdim\eql at colsep@<\eql at colsepmin@
+ \eql at colsep@\eql at colsepmin@
+ \else
+ \ifdim\eql at colsep@>\eql at colsepmax@
+ \eql at colsep@\eql at colsepmax@
+ \fi
+ \fi
+ \ifdefined\eql at flushleft
+ \ifdim\eql at colsep@=\eql at colsepmin@
+ \eql at marginleft@\displaywidth
+ \advance\eql at marginleft@-\eql at totalwidth@
+ \advance\eql at marginleft@-\eql at align@inter@\eql at colsep@
+ \ifdim\eql at marginleft@>\eql at flushleftmargin@
+ \eql at marginleft@\eql at flushleftmargin@
+ \else
+ \ifdim\eql at marginleft@<\eql at flushleftmarginmin@
+ \eql at marginleft@\eql at flushleftmarginmin@
+ \fi
+ \fi
+ \else
+ \eql at marginleft@\eql at flushleftmargin@
+ \fi
+ \else
+ \ifdefined\eql at align@margins
+ \eql at marginleft@\displaywidth
+ \advance\eql at marginleft@-\eql at totalwidth@
+ \advance\eql at marginleft@-\eql at align@inter@\eql at colsep@
+ \ifdim\eql at marginleft@<\eql at tagmargin@
+ \ifdim\ifdefined\eql at tagsleft\eql at marginleft@\else-\p@\fi<\z@
+ \eql at marginleft@\z@
+ \fi
+ \else
+ \advance\eql at marginleft@-\eql at tagmargin@
+ \divide\eql at marginleft@\tw@
+ \fi
+ \else
+ \eql at marginleft@\z@
+ \fi
+ \fi
+ \ifdefined\eql at tagsleft
+ \let\eql at align@adjust at test\eql at align@adjust at test@tagleft
+ \else
+ \let\eql at align@adjust at test\eql at align@adjust at test@tagright
+ \fi
+ \loop\ifnum\eql at row@>\z@
+ \ifnum\eql at numbering@target@<\z@
+ \eql at tagwidth@\eql at tagwidth@get\eql at row@\relax
+ \else
+ \ifnum\eql at numbering@target@=\eql at row@
+ \eql at tagwidth@\eql at tagwidth@get\z@\relax
+ \fi
+ \fi
+ \ifdim\eql at tagwidth@>\z@
+ \eql at align@adjust at width
+ \eql at align@adjust at test
+ \fi
+ \advance\eql at row@\m at ne
+ \repeat
+ \advance\eql at totalwidth@\eql at align@inter@\eql at colsep@
+ \advance\eql at totalwidth@\eql at marginleft@
+}
+\def\eql at align@adjust at width{%
+ \eql at line@pos@\z@
+ \eql at column@\z@
+ \eql at line@avail@\eql at totalwidth@
+ \@tempcnta\eql at totalcolumns@
+ \eql at line@width@\z@
+ \@tempcntb\z@
+ \edef\@tempb{\eql at fieldlength@get\eql at row@}%
+ \@for\@tempa:=\@tempb\do
+ \eql at align@adjust at width@col
+ \advance\@tempcnta\m at ne
+ \divide\@tempcnta\tw@
+ \advance\@tempcntb\m at ne
+ \divide\@tempcntb\tw@
+}
+\def\eql at align@adjust at width@col{%
+ \advance\eql at column@\@ne
+ \@tempdima\@tempa\relax
+ \dimen@\eql at align@colwidth at get\eql at column@\relax
+ \ifdim\@tempdima>\z@
+ \ifdim\eql at line@width@=\z@
+ \eql at line@avail@\eql at line@pos@
+ \@tempcnta\eql at column@
+ \ifodd\eql at column@
+ \advance\eql at line@avail@\dimen@
+ \advance\eql at line@avail at -\@tempdima
+ \fi
+ \fi
+ \eql at line@width@\eql at line@pos@
+ \@tempcntb\eql at column@
+ \ifodd\eql at column@
+ \advance\eql at line@width@\dimen@
+ \else
+ \advance\eql at line@width@\@tempdima
+ \fi
+ \fi
+ \advance\eql at line@pos@\dimen@
+}
+
+\def\eql at align@adjust at test@tagright{%
+ \@tempdima\eql at line@width@
+ \advance\@tempdima\eql at tagwidth@
+ \dimen@\eql at marginleft@
+ \advance\dimen@\@tempdima
+ \advance\dimen@\@tempcntb\eql at colsep@
+ \ifdim\dimen@>\displaywidth
+ \eql at align@adjust at modify@tagright
+ \fi
+}
+\def\eql at align@adjust at modify@tagright{%
+ \dimen@\eql at colsepmin@
+ \multiply\dimen@\@tempcntb
+ \advance\dimen@\@tempdima
+ \ifdefined\eql at flushleft
+ \advance\dimen@\eql at flushleftmarginmin@
+ \fi
+ \ifdim\dimen@>\displaywidth\else
+ \ifnum\@tempcntb>\z@
+ \dimen@\displaywidth
+ \advance\dimen at -\@tempdima
+ \count@\@tempcntb
+ \ifdefined\eql at flushleft
+ \advance\dimen at -\eql at marginleft@
+ \else
+ \ifdefined\eql at align@margins
+ \advance\count@\@ne
+ \fi
+ \fi
+ \divide\dimen@\count@
+ \ifdim\dimen@<\eql at colsep@
+ \ifdim\dimen@<\eql at colsepmin@
+ \dimen@\eql at colsepmin@
+ \fi
+ \eql at colsep@\dimen@
+ \fi
+ \fi
+ \dimen@\displaywidth
+ \advance\dimen at -\@tempdima
+ \advance\dimen at -\@tempcntb\eql at colsep@
+ \ifdim\dimen@<\eql at marginleft@
+ \eql at marginleft@\dimen@
+ \fi
+ \fi
+}
+\def\eql at align@adjust at test@tagleft{%
+ \count@\eql at align@inter@
+ \advance\count at -\@tempcnta
+ \@tempdima-\eql at line@avail@
+ \advance\@tempdima\eql at tagwidth@
+ \dimen@\eql at marginleft@
+ \advance\dimen@\@tempcnta\eql at colsep@
+ \ifdim\dimen@<\@tempdima
+ \eql at align@adjust at modify@tagleft
+ \fi
+}
+\def\eql at align@adjust at modify@tagleft{%
+ \ifdefined\eql at flushleft
+ \dimen@\eql at flushleftmarginmax@
+ \else
+ \dimen@\displaywidth
+ \fi
+ \ifdim\dimen@>\eql at tagwidth@
+ \dimen@\eql at colsepmin@
+ \multiply\dimen@\count@
+ \advance\dimen@\eql at totalwidth@
+ \advance\dimen@\@tempdima
+ \ifdim\dimen@>\displaywidth\else
+ \ifnum\count@>0
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at totalwidth@
+ \advance\dimen at -\@tempdima
+ \ifdefined\eql at align@margins
+ \advance\count@\@ne
+ \fi
+ \divide\dimen@\count@
+ \ifdim\dimen@<\eql at colsep@
+ \ifdim\dimen@<\eql at colsepmin@
+ \dimen@\eql at colsepmin@
+ \fi
+ \advance\dimen at -\eql at colsep@
+ \advance\eql at marginleft@-\eql at align@inter@\dimen@
+ \advance\eql at colsep@\dimen@
+ \fi
+ \fi
+ \dimen at -\@tempcnta\eql at colsep@
+ \advance\dimen@\@tempdima
+ \ifdim\dimen@>\eql at marginleft@
+ \eql at marginleft@\dimen@
+ \fi
+ \fi
+ \fi
+}
+\newtoks\eql at scan@reg@
+\def\eql at scan@body at dump{\the\eql at scan@reg@}
+\def\eql at scan@body at rescan{%
+ \expandafter\scantokens\expandafter{\the\eql at scan@reg@}}
+\let\eql at scan@body\eql at scan@body at dump
+\def\eql at scan@addto#1{\eql at scan@reg@\expandafter{\the\eql at scan@reg@#1}}
+\def\eql at scan@env#1{%
+\eql at dev@enter\eql at scan@env
+ \def\eql at scan@end{#1\expandafter\end\expandafter{\@currenvir}}%
+ \eql at scan@reg@{}\def\eql at scan@stack{b}%
+ \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
+ \eql at scan@iterate
+}
+\def\eql at scan@env at count#1\begin#2{%
+ \ifx\end#2\else b\expandafter\eql at scan@env at count\fi
+}
+\def\eql at scan@env at iterate#1\end#2{%
+ \edef\eql at scan@stack{%
+ \eql at scan@env at count#1\begin\end\expandafter\@gobble\eql at scan@stack}%
+ \ifx\@empty\eql at scan@stack
+ \@checkend{#2}%
+ \eql at scan@addto{#1}%
+ \expandafter\let\eql at scan@iterate\eql at scan@env at org
+\eql at dev@leave\eql at scan@env
+ \expandafter\eql at scan@end
+ \else
+ \eql at scan@addto{#1\end{#2}}%
+ \expandafter\eql at scan@iterate
+ \fi
+}
+\def\eql at scan@env at cancel{%
+ \@namedef{end\@currenvir}{\ignorespacesafterend}%
+}
+\def\eql at scan@sqr#1{%
+\eql at dev@enter\eql at scan@sqr
+ \def\eql at scan@end{#1\]}%
+ \eql at scan@reg@{}\def\eql at scan@stack{b}%
+ \let\eql at scan@sqr at org\[%\]
+ \let\[\eql at scan@sqr at iterate%\]
+ \[%\]
+}
+\def\eql at scan@sqr at count#1\[#2{%\]
+ \ifx\]#2\else b\expandafter\eql at scan@sqr at count\fi
+}
+\def\eql at scan@sqr at iterate#1\]{%
+ \edef\eql at scan@stack{%
+ \eql at scan@sqr at count#1\[\]\expandafter\@gobble\eql at scan@stack}%
+ \ifx\@empty\eql at scan@stack
+ \let\[\eql at scan@sqr at org%\]
+ \eql at scan@addto{#1}%
+\eql at dev@leave\eql at scan@sqr
+ \expandafter\eql at scan@end
+ \else
+ \eql at scan@addto{#1\]}%
+ \expandafter\[%\]
+ \fi
+}
+\def\eql at scan@sqrang at cancel{\ignorespaces}
+\def\eql at scan@ang#1{%
+\eql at dev@enter\eql at scan@ang
+ \def\eql at scan@end{#1\>}%
+ \eql at scan@reg@{}\def\eql at scan@stack{b}%
+ \let\eql at scan@ang at org\<%\>
+ \let\<\eql at scan@ang at iterate%\>
+ \<%\>
+}
+\def\eql at scan@ang at count#1\<#2{%\>
+ \ifx\>#2\else b\expandafter\eql at scan@ang at count\fi
+}
+\def\eql at scan@ang at iterate#1\>{%
+ \edef\eql at scan@stack{%
+ \eql at scan@ang at count#1\<\>\expandafter\@gobble\eql at scan@stack}%
+ \ifx\@empty\eql at scan@stack
+ \let\<\eql at scan@ang at org%\>
+ \eql at scan@addto{#1}%
+\eql at dev@leave\eql at scan@ang
+ \expandafter\eql at scan@end
+ \else
+ \eql at scan@addto{#1\>}%
+ \expandafter\<%\>
+ \fi
+}
+\def\eql at equations@testall{\eql at equations@testtilde}
+\def\eql at equations@testtilde#1{%
+ \eql at ifnextgobble@tight~%
+ {\eqnaddopt{lines}\eql at equations@testopt{#1}}%
+ {\eql at equations@testopt{#1}}}
+\def\eql at equations@testopt#1{%
+ \eql at ifnextchar@tight[%]
+ {\eql at equations@addopt{\eql at equations@testexcl{#1}}}%
+ {\eql at equations@testexcl{#1}}}
+\def\eql at equations@addopt#1[#2]{\eqnaddopt{#2}#1}
+\def\eql at equations@testexcl#1{%
+ \eql at ifnextgobble@tight!%
+ {\eqnaddopt{donumber}\eql at equations@testat{#1}}%
+ {\eql at equations@teststar{#1}}}
+\def\eql at equations@teststar#1{%
+ \eql at ifstar@tight%
+ {\eqnaddopt{nonumber}\eql at equations@testat{#1}}%
+ {\eql at equations@testat{#1}}}
+\def\eql at equations@testat#1{%
+ \eql at ifat@tight
+ {\eql at equations@addlabel{#1}}%
+ {#1}}
+\def\eql at equations@addlabel#1#2{\eqnaddopt{label={#2}}#1}
+\def\eql at equations@processopt{%
+ \let\eql at blocklabel\@undefined
+ \let\eql at blocktag\@undefined
+ \let\eql at display@doatend\@empty
+ \eql at abovespace@\z at skip
+ \eql at belowspace@\z at skip
+ \eql at displaybreak@prepen@\@MM
+ \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
+}
+\newenvironment{equations}{%
+\eql at dev@enterenv
+ \ifmmode
+ \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
+ \expandafter\eql at single@start
+ \else
+ \expandafter\eql at scan@env\expandafter\eql at multi@main
+ \fi
+}
+\def\eql at equations@sqr at opt{equation,nonumber}
+\protected\def\eql at equations@sqr at open{%
+ \ifmmode
+ \eql at error@mathmode{\string\[...\string\]}%
+ \expandafter\eql at scan@sqr\expandafter\eql at scan@sqrang at cancel
+ \else
+\eql at dev@enter{\[...\string\]}%
+ \expandafter\eqnaddopt\expandafter{\eql at equations@sqr at opt}%
+ \eql at halign@catchprevdepth
+ $$%$$
+ \expandafter\eql at ampprotect\expandafter\eql at equations@testall
+ \expandafter\eql at equations@sqr at start
+ \fi
+}
+\def\eql at equations@ang at opt{align,nonumber}
+\protected\def\eql at equations@ang at open{%
+ \ifmmode
+ \eql at error@mathmode{\string\<...\string\>}%
+ \expandafter\eql at scan@ang\expandafter\eql at scan@sqrang at cancel
+ \else
+\eql at dev@enter{\<...\string\>}%
+ \expandafter\eqnaddopt\expandafter{\eql at equations@ang at opt}%
+ \eql at halign@catchprevdepth
+ $$%$$
+ \expandafter\eql at ampprotect\expandafter\eql at equations@testall
+ \expandafter\eql at equations@ang at start
+ \fi
+}
+\def\eql at equations@sqr at start{%
+ \eql at equations@processopt
+ \ifdefined\eql at equations@mode at single
+ \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
+ \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\]}%
+ \ignorespaces
+}
+\protected\def\eql at equations@ang at close{%
+ \eql at equations@end
+ $$%$$
+\eql at dev@leave{\<...\string\>}%
+ \ignorespaces
+}
+\DeclareRobustCommand{\eql at eqref}[1]{\textup{\tagform@{\ref{#1}}}}
+\DeclareRobustCommand{\eql at numberwithin}[3][\arabic]{%
+ \@ifundefined{c@#2}{\@nocounterr{#2}}{%
+ \@ifundefined{c@#3}{\@nocounterr{#3}}{%
+ \ifdefined\HyOrg at addtoreset
+ \HyOrg at addtoreset{#2}{#3}%
+ \else
+ \@addtoreset{#2}{#3}%
+ \fi
+ \expandafter\xdef\csname the#2\endcsname{%
+ \expandafter\noexpand\csname the#3\endcsname.\noexpand#1{#2}}%
+ \ifdefined\theHequation
+ \expandafter\xdef\csname theH#2\endcsname{%
+ \expandafter\noexpand
+ \csname the\@ifundefined{theH#3}{}H#3\endcsname.%
+ \noexpand\arabic{#2}}%
+ \fi
+ }%
+ }%
+}
+\DeclareRobustCommand{\eql at allowdisplaybreaks}[1][4]{%
+ \eqnlinesset{allowbreaks=#1}%
+}
+\newcommand{\eql at notag}{\nonumber}
+\newcommand{\eql at thetag}{\leavevmode\tagform@}
+\RequirePackage{keyval}
+\def\eql at decide@select#1#2#3#4{%
+ \def\@tempa{#3}%
+ \let\@tempd\@undefined
+ \@for\@tempc:=#4\do{%
+ \ifdefined\@tempd\else
+ \edef\@tempb{\noexpand\@tempb:=\expandafter\@firstoftwo\@tempc}%
+ \expandafter\@for\@tempb\do{%
+ \ifx\@tempa\@tempb
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter\@tempd
+ \expandafter\expandafter\expandafter{%
+ \expandafter\@secondoftwo\@tempc}%
+ \fi
+ }%
+ \fi
+ }%
+ \ifdefined\@tempd
+ \@tempd
+ \else
+ \eql at error{undefined value `#3' for option `#2' of `#1'}%
+ \fi
+}
+\def\eql at decide@if#1#2#3#4#5{%
+ \eql at decide@select{#1}{#2}{#3}{%
+ {{on,true,yes,enabled,1}{#4}},%
+ {{off,false,no,disabled,0}{#5}}}}
+\def\eql at decide@bool#1#2#3#4{%
+ \eql at decide@if{#1}{#2}{#3}{\let#4\eql at true}{\let#4\eql at false}}
+\def\eql at decide@abovebelow#1#2#3#4#5{%
+ \eql at decide@select{#1}{#2}{#3}{%
+ {,abovebelow,both,tb}{#4#5},%
+ {above,top,t}{#4},%
+ {below,bottom,b}{#5}}%
+ }
+\def\eql at define@key#1#2{%
+ \eql at ifnextchar@loose[%]
+ {\eql at definekey@opt{#1}{#2}}%
+ {\eql at definekey@noopt{#1}{#2}}%
+}
+\def\eql at definekey@noopt#1#2#3{\eql at definekey@for{#1}{#2}{{#3}}}
+\def\eql at definekey@opt#1#2[#3]#4{\eql at definekey@for{#1}{#2}{[#3]{#4}}}
+\def\eql at definekey@for#1#2#3{%
+ \def\eql at for@fn##1##2##3{\define at key{eql@##3}{##2}#3}%
+ \edef\eql at for@vara{\noexpand\eql at for@vara:=#1}%
+ \expandafter\@for\eql at for@vara\do{%
+ \edef\eql at for@varb{\noexpand\eql at for@varb:=#2}%
+ \expandafter\@for\eql at for@varb\do{%
+ \edef\eql at for@call##1{%
+ \noexpand\eql at for@fn{##1}{\eql at for@varb}{\eql at for@vara}}%
+ \eql at for@call{##1}%
+ }%
+ }%
+}
+\def\eql at setkeys#1#2{
+ \def\eql at tmp{\setkeys{eql@#1}}%
+ \expandafter\eql at tmp\expandafter{#2}%
+}
+\let\eql at nextopt\@empty
+\def\eql at nextopt@process#1{%
+\eql at dev@start\eql at nextopt@process
+ \eql at setkeys{#1}\eql at nextopt
+ \global\let\eql at nextopt\@empty
+}
+\newcommand{\eqnaddopt}[1]{%
+ \expandafter\def\expandafter\eql at nextopt\expandafter{\eql at nextopt,#1}}
+\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,@}[]{%
+ \eql at mode@aligned}
+\eql at define@key{equationsbox}{top,t}[]{\let\eql at box@box\vtop}
+\eql at define@key{equationsbox}{center,c}[]{\let\eql at box@box\vcenter}
+\eql at define@key{equationsbox}{bottom,b}[]{\let\eql at box@box\vbox}
+\eql at define@key{equationsbox}{colsep}{\def\eql at box@colsep{#1}}
+\eql at define@key{equations}{equation,eq,single,1}[]{\eql at mode@equation}
+\eql at define@key{equations}{gathered,gather,ga,lines,lined,ln,\string~}[]{%
+ \eql at mode@lines}
+\eql at define@key{equations}{aligned,align,al,columns,col,@}[]{%
+ \eql at mode@align}
+\eql at define@key{equations}{native}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at single@native%
+ \ifdefined\eql at single@native\let\eql at flushleft\eql at false\fi}
+\eql at define@key{setup}{native}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at single@native}
+\eql at define@key{setup}{sqropt}[]{%
+ \def\eql at equations@sqr at opt{equation,#1}}
+\eql at define@key{setup}{angopt}[]{%
+ \def\eql at equations@ang at opt{align,#1}}
+\def\eql at keycat{equations,equationsbox,setup}
+\eql at define@key\eql at keycat{spread}[\jot]{\def\eql at spread{#1}}
+\eql at define@key\eql at keycat{strut}[true]{\eql at decide@if{#3}{#2}{#1}%
+ {\let\eql at strut@field\eql at strut}{\let\eql at strut@field\relax}}
+\eql at define@key\eql at keycat{struttag}[true]{\eql at decide@if{#3}{#2}{#1}%
+ {\let\eql at strut@tag\eql at strut}{\let\eql at strut@tag\relax}}
+\eql at define@key{equations}{displaybreak}[4]{\eql at displaybreak@pre{#1}}
+\def\eql at keycat{equations,setup}
+\eql at define@key\eql at keycat{allowbreaks,allowdisplaybreaks}[4]{%
+ \interdisplaylinepenalty\eql at getdsp@pen{#1}\relax}
+\eql at define@key\eql at keycat{displayheight}[\ht\eql at strutbox@]{%
+ \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{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}[]{%
+ \eql at decide@abovebelow{#3}{#2}{#1}%
+ {\eql at display@atend{%
+ \abovedisplayskip\abovedisplayshortskip}}%
+ {\eql at display@atend{%
+ \belowdisplayskip\belowdisplayshortskip}}}
+\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}}}
+\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@}}}
+\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}}
+\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}}
+\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}}
+\eql at define@key{equations}{abovespace}{%
+ \addtolength\eql at abovespace@{#1}}
+\eql at define@key{equations}{belowspace}{%
+ \addtolength\eql at belowspace@{#1}}
+\eql at define@key{intertext}{skip}{%
+ \setlength\abovedisplayskip{#1}\belowdisplayskip\abovedisplayskip}
+\eql at define@key{intertext}{aboveskip}{%
+ \setlength\belowdisplayskip{#1}}
+\eql at define@key{intertext}{belowskip}{%
+ \setlength\abovedisplayskip{#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}}
+\eql at define@key{intertext}{short}[]{%
+ \eql at decide@abovebelow{#3}{#2}{#1}%
+ {\belowdisplayskip\belowdisplayshortskip}%
+ {\abovedisplayskip\abovedisplayshortskip}}
+\eql at define@key{intertext}{long}[]{%
+ \eql at decide@abovebelow{#3}{#2}{#1}%
+ {\belowdisplayshortskip\belowdisplayskip}%
+ {\abovedisplayshortskip\abovedisplayskip}}
+\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}}
+\eql at define@key{setup}{aboveshortskip}{%
+ \setlength\abovedisplayshortskip{#1}}
+\eql at define@key{setup}{belowshortskip}{%
+ \setlength\belowdisplayshortskip{#1}}
+\eql at define@key{setup}{tagskip}{%
+ \setlength\eql at abovedisplaytagskip@{#1}%
+ \eql at belowdisplaytagskip@\eql at abovedisplaytagskip@}
+\eql at define@key{setup}{abovetagskip}{%
+ \setlength\eql at abovedisplaytagskip@{#1}}
+\eql at define@key{setup}{belowtagskip}{%
+ \setlength\eql at belowdisplaytagskip@{#1}}
+\eql at define@key{setup}{medskip}{%
+ \setlength\eql at abovedisplaymedskip@{#1}%
+ \eql at belowdisplaymedskip@\eql at abovedisplaymedskip@}
+\eql at define@key{setup}{abovemedskip}{%
+ \setlength\eql at abovedisplaymedskip@{#1}}
+\eql at define@key{setup}{abovetopskip}{%
+ \setlength\eql at abovedisplaytopskip@{#1}}
+\eql at define@key{setup}{aboveparskip}{%
+ \setlength\eql at abovedisplayparskip@{#1}}
+\eql at define@key{setup}{abovecontskip}{%
+ \setlength\eql at abovedisplaycontskip@{#1}}
+\eql at define@key{setup}{belowmedskip}{%
+ \setlength\eql at belowdisplaymedskip@{#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@@}}}}
+\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*}{\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{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}{tagform}{\eql at tag@setform#1}
+\eql at define@key{setup}{tagform*}{\eql at tag@setform@{#1}}
+\eql at define@key{setup}{subeqtemplate}{\def\eql at subequations@template{#1}}
+\eql at define@key{setup}{autolabel}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at autolabel}
+\eql at define@key{setup}{autotag}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at autotag}
+\def\eql at keycat{equations,setup}
+\eql at define@key\eql at keycat{numberline,numline,n}[all]{%
+ \eql at numbering@set{##1}}
+\eql at define@key\eql at keycat{nonumber,nn,*}[]{\let\eql at numbering@active\eql at false}
+\eql at define@key\eql at keycat{donumber,dn,!}[]{\let\eql at numbering@active\eql at true}
+\eql at define@key\eql at keycat{number,num}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at numbering@active}
+\eql at define@key\eql at keycat{tagsleft,leqno}[]{\let\eql at tagsleft\eql at true}
+\eql at define@key\eql at keycat{tagsright,reqno}[]{\let\eql at tagsleft\eql at false}
+\eql at define@key\eql at keycat{tags,eqno}{%
+ \eql at decide@select{#3}{#2}{#1}{%
+ {{right,r}{\let\eql at tagsleft\eql at false}},%
+ {{left,l}{\let\eql at tagsleft\eql at true}}}}
+\def\eql at keycat{equations,setup}
+\eql at define@key\eql at keycat{layout}{\eql at decide@select{#3}{#2}{#1}{%
+ {{center,c}{\let\eql at flushleft\eql at false}},%
+ {{left,l}{\let\eql at flushleft\eql at true}}}}
+\eql at define@key\eql at keycat{center}[]{\let\eql at flushleft\eql at false}
+\eql at define@key\eql at keycat{flushleft,left}[]{\let\eql at flushleft\eql at true}
+\eql at define@key\eql at keycat{leftmargin}{%
+ \setlength\eql at flushleftmargin@{#1}}
+\eql at define@key\eql at keycat{minleftmargin}{%
+ \setlength\eql at flushleftmarginmin@{#1}}
+\eql at define@key\eql at keycat{maxleftmargin}{%
+ \setlength\eql at flushleftmarginmax@{#1}}
+\eql at define@key\eql at keycat{maxleftmargin*}[]{%
+ \setlength\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}
+\eql at define@key\eql at keycat{mincolsep}{\def\eql at colsepmin@val{#1}}
+\eql at define@key\eql at keycat{maxcolsep}{\def\eql at colsepmax@val{#1}}
+\eql at define@key\eql at keycat{maxcolsep*}[]{\def\eql at colsepmax@val{.5\maxdimen}}
+\eql at define@key\eql at keycat{margins}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at align@margins}
+\def\eql at keycat{equationsbox,setup}
+\eql at define@key\eql at keycat{margin}{%
+ \def\eql at box@marginleft{#1}\def\eql at box@marginright{#1}}
+\eql at define@key\eql at keycat{marginleft}{\def\eql at box@marginleft{#1}}
+\eql at define@key\eql at keycat{marginright}{\def\eql at box@marginright{#1}}
+\def\eql at keycat{equations,equationsbox,setup}
+\eql at define@key\eql at keycat{shape}[default]{\eql at shape@set{#1}}
+\eql at define@key\eql at keycat{padding,pad}[\eql at indent@val]{%
+ \let\eql at paddingmax\eql at false
+ \def\eql at paddingleft@val{#1}\def\eql at paddingright@val{#1}}
+\eql at define@key\eql at keycat{padleft}[\eql at indent@val]{%
+ \let\eql at paddingmax\eql at false\def\eql at paddingleft@val{#1}}
+\eql at define@key\eql at keycat{padright}[\eql at indent@val]{%
+ \let\eql at paddingmax\eql at false\def\eql at paddingright@val{#1}}
+\eql at define@key\eql at keycat{padmax}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at paddingmax}
+\eql at define@key\eql at keycat{indent}[2em]{%
+ \def\eql at indent@val{#1}}
+\eql at define@key\eql at keycat{indent*}[2em]{%
+ \def\eql at indent@val{#1}\def\eql at paddingleft@val{#1}}
+\def\eql at keycat{equations,equationsbox,setup}
+\eql at define@key\eql at keycat{classout}{\eql at class@innerleft at set{#1}}
+\eql at define@key\eql at keycat{classin}{\eql at class@innerright at set{#1}}
+\eql at define@key\eql at keycat{classin*}{\eql at class@innerlead at set{#1}}
+\eql at define@key\eql at keycat{ampeq}[]{\eql at class@ampeq}
+\eql at define@key\eql at keycat{eqamp}[]{\eql at class@eqamp}
+\eql at define@key\eql at keycat{class}{\eql at decide@select{#3}{#2}{#1}{%
+ {{ampeq,amprel,eqafter,beforerel}\eql at class@ampeq},%
+ {{eqamp,relamp,eqbefore,afterrel}\eql at class@eqamp}}}
+\let\eql at punct@main\relax
+\def\eql at keycat{equations,equationsbox,setup}
+\eql at define@key\eql at keycat{punctsep}[\,]{\def\eql at punct@sep{#1}}
+\eql at define@key\eql at keycat{punct}[.]{\def\eql at punct@main{#1}}
+\eql at define@key\eql at keycat{punctline}[,]{\def\eql at punct@line{#1}}
+\eql at define@key\eql at keycat{punctcol}[,]{\def\eql at punct@col{#1}}
+\eql at define@key\eql at keycat{punct*}[]{\let\eql at punct@main\relax}
+\eql at define@key\eql at keycat{punctline*}[]{\let\eql at punct@line\relax}
+\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
+\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]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at ampproof@active}
+\eql at define@key{setup}{crerror}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at single@crerror}
+\eql at define@key{equations,setup}{rescan}[true]{%
+ \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}{equation}[true]{%
+ \eql at error@packageoption{#2}%
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@equation}
+\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 define@key{setup}{ang}[true]{%
+ \eql at error@packageoption{#2}%
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@ang}
+\newenvironment{eql at gathered}
+ {\eqnaddopt{lines}\equationsbox}{\endequationsbox}
+\newenvironment{eql at multlined}
+ {\eqnaddopt{lines,padding,shape=steps}\equationsbox}{\endequationsbox}
+\newenvironment{eql at aligned}
+ {\eqnaddopt{align}\equationsbox}{\endequationsbox}
+\newenvironment{eql at equation}
+ {\eqnaddopt{equation}\equations}{\endequations}
+\newenvironment{eql at gather}
+ {\eqnaddopt{lines}\equations}{\endequations}
+\newenvironment{eql at multline}
+ {\eqnaddopt{lines,padmax,shape=steps,numberline=out}\equations}
+ {\endequations}
+\newenvironment{eql at align}
+ {\eqnaddopt{align}\equations}{\endequations}
+\newenvironment{eql at flalign}
+ {\eqnaddopt{align,margins=false}\equations}{\endequations}
+\newenvironment{eql at equation*}
+ {\eqnaddopt{nonumber}\eql at equation}{\endequations}
+\newenvironment{eql at gather*}
+ {\eqnaddopt{nonumber}\eql at gather}{\endequations}
+\newenvironment{eql at multline*}
+ {\eqnaddopt{nonumber}\eql at multline}{\endequations}
+\newenvironment{eql at align*}
+ {\eqnaddopt{nonumber}\eql at align}{\endequations}
+\newenvironment{eql at flalign*}
+ {\eqnaddopt{nonumber}\eql at flalign}{\endequations}
+\def\eql at provide@movecmd#1#2{%
+ \expandafter\let\csname #1\expandafter\endcsname\csname #2\endcsname
+}
+\def\eql at provide@undefinecmd#1{%
+ \expandafter\let\csname #1\endcsname\@undefined
+}
+\def\eql at provide@moveenv#1#2{%
+ \expandafter\let\csname #1\expandafter\endcsname\csname #2\endcsname
+ \expandafter\let\csname end#1\expandafter\endcsname\csname end#2\endcsname
+}
+\def\eql at provide@undefineenv#1{%
+ \expandafter\let\csname #1\endcsname\@undefined
+ \expandafter\let\csname end#1\endcsname\@undefined
+}
+\def\eql at provide@onlyonce#1#2{%
+ \def\eql at tmp{#2}%
+ \def\@tempa{#1}%
+ \ifx\eql at tmp\@tempa
+ \let\eql at tmp\@undefined
+ \fi
+ \ifx\eql at tmp\@empty
+ \let\eql at tmp\@undefined
+ \fi
+ \def\@tempa{*}%
+ \ifx\eql at tmp\@tempa
+ \def\eql at tmp{#1}%
+ \fi
+ \ifdefined\eql at tmp\else
+ \ifcsname eql at provided@#1\endcsname
+ \def\eql at tmp{#1}%
+ \else
+ \expandafter\let\csname eql at provided@#1\endcsname\eql at true
+ \fi
+ \fi
+}
+\def\eql at provide@cmdonlyonce#1#2{%
+ \def\eql at tmp{#2}%
+ \edef\@tempb{\expandafter\noexpand\csname#1\endcsname}%
+ \ifx\eql at tmp\@tempb
+ \let\eql at tmp\@undefined
+ \fi
+ \ifx\eql at tmp\@empty
+ \let\eql at tmp\@undefined
+ \fi
+ \def\@tempa{*}%
+ \ifx\eql at tmp\@tempa
+ \let\eql at tmp\@tempb
+ \fi
+ \ifdefined\eql at tmp
+ \edef\eql at tmp{\expandafter\expandafter\expandafter\@gobble
+ \expandafter\string\eql at tmp}%
+ \else
+ \ifcsname eql at provided@#1\endcsname
+ \let\eql at tmp\@tempb
+ \else
+ \expandafter\let\csname eql at provided@#1\endcsname\eql at true
+ \fi
+ \fi
+}
+\def\eql at provide@cmd#1#2{%
+ \eql at provide@cmdonlyonce{#1}{#2}%
+ \ifdefined\eql at tmp
+ \expandafter\eql at provide@movecmd\expandafter{\eql at tmp}{eql@#1}%
+ \else
+ \eql at amsmath@after{%
+ \eql at provide@movecmd{ams#1}{#1}%
+ \eql at provide@movecmd{#1}{eql@#1}%
+ }%
+ \AddToHook{package/mathtools/after}{%
+ \eql at provide@movecmd{#1}{eql@#1}%
+ }%
+ \eql at provide@movecmd{#1}{eql@#1}%
+ \eql at amsmath@futurebefore{\eql at provide@undefinecmd{#1}}%
+ \fi
+}
+\def\eql at amsmath@endfix#1#2{%
+ \long\edef\@tempa{\expandafter\noexpand\csname end#2\endcsname}%
+ \long\edef\@tempb{\expandafter\noexpand\csname eql at amsmath@end#2\endcsname}%
+ \expandafter\ifx\csname end#1\endcsname\@tempa
+ \expandafter\let\csname end#1\endcsname\@tempb
+ \fi
+}
+\def\eql at amsmath@fixends{%
+ \eql at amsmath@after{%
+ \let\eql at amsmath@endmultline\endmultline
+ \eql at amsmath@endfix{multline*}{multline}%
+ \let\eql at amsmath@endgather\endgather
+ \eql at amsmath@endfix{gather*}{gather}%
+ \let\eql at amsmath@endalign\endalign
+ \eql at amsmath@endfix{align*}{align}%
+ \eql at amsmath@endfix{flalign}{align}%
+ \eql at amsmath@endfix{flalign*}{align}%
+ \eql at amsmath@endfix{alignat}{align}%
+ \eql at amsmath@endfix{alignat*}{align}%
+ \eql at amsmath@endfix{xalignat}{align}%
+ \eql at amsmath@endfix{xalignat*}{align}%
+ \eql at amsmath@endfix{xxalignat}{align}%
+ \let\eql at amsmath@endaligned\endaligned
+ \eql at amsmath@endfix{gathered}{aligned}%
+ \eql at amsmath@endfix{alignedat}{aligned}%
+ }
+}
+\def\eql at provide@env#1#2{%
+ \eql at provide@onlyonce{#1}{#2}%
+ \ifdefined\eql at tmp
+ \expandafter\eql at provide@moveenv\expandafter{\eql at tmp}{eql@#1}%
+ \else
+ \eql at amsmath@after{%
+ \eql at provide@moveenv{ams#1}{#1}%
+ \eql at provide@moveenv{ams#1*}{#1*}%
+ \eql at provide@moveenv{#1}{eql@#1}%
+ \eql at provide@moveenv{#1*}{eql@#1*}%
+ }%
+ \AddToHook{package/mathtools/after}{%
+ \eql at provide@moveenv{#1}{eql@#1}%
+ \eql at provide@moveenv{#1*}{eql@#1*}%
+ }%
+ \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*}}%
+ \fi
+}
+\def\eql at provide@env at equation#1{%
+ \eql at provide@onlyonce{equation}{#1}%
+ \ifdefined\eql at tmp
+ \expandafter\eql at provide@moveenv\expandafter{\eql at tmp}{eql at equation}%
+ \else
+ \eql at amsmath@after{%
+ \eql at provide@moveenv{amsequation}{equation}%
+ \eql at provide@moveenv{amsequation*}{equation*}%
+ \eql at provide@moveenv{equation}{eql at equation}%
+ \eql at provide@moveenv{equation*}{eql at equation*}%
+ }%
+ \AddToHook{package/hyperref/after}{%
+ \@ifpackageloaded{amsmath}{}{%
+ \let\latexequation\H at equation
+ \let\endlatexequation\H at endequation
+ \eql at provide@moveenv{hyperrefequation}{equation}%
+ \eql at provide@moveenv{equation}{eql at equation}%
+ }%
+ }%
+ \@ifpackageloaded{amsmath}{}{\@ifpackageloaded{hyperref}{}{%
+ \eql at provide@moveenv{latexequation}{equation}%
+ }}%
+ \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*}}%
+ \fi
+}
+\def\eql at provide@env at multlined#1{%
+ \eql at provide@onlyonce{multlined}{#1}%
+ \ifdefined\eql at tmp
+ \expandafter\eql at provide@moveenv\expandafter{\eql at tmp}{eql at multlined}%
+ \else
+ \AddToHook{package/mathtools/after}{%
+ \eql at provide@moveenv{amsmultlined}{multlined}%
+ \eql at provide@moveenv{multlined}{eql at multlined}%
+ }%
+ \eql at provide@moveenv{multlined}{eql at multlined}%
+ \@ifpackageloaded{mathtools}{}{\AddToHook{package/mathtools/before}{%
+ \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
+ \expandafter\eql at provide@moveenv
+ \expandafter{\eql at tmp}{eql at subequations}%
+ \else
+ \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]{}%
+ \AddToHook{cmd/subequations/after}[hyperref]{}%
+ \RemoveFromHook{cmd/subequations/before}[hyperref]%
+ \RemoveFromHook{cmd/subequations/after}[hyperref]%
+ \AddToHook{cmd/amssubequations/before}%
+ {%
+ \stepcounter{equation}%
+ \protected at edef\theHparentequation{\theHequation}%
+ \addtocounter{equation}{-1}%
+ }
+ \AddToHook{cmd/amssubequations/after}%
+ {%
+ \def\theHequation{\theHparentequation\alph{equation}}%
+ \ignorespaces
+ }
+ }
+ \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}}%
+ \fi
+}
+\def\eql at provide@sqr{%
+ \let\[\eql at equations@sqr at open
+ \let\]\eql at equations@sqr at close
+ \eql at amsmath@after{%
+ \let\[\eql at equations@sqr at open
+ \let\]\eql at equations@sqr at close
+ }%
+}
+\def\eql at provide@ang{%
+ \let\<\eql at equations@ang at open
+ \let\>\eql at equations@ang at close
+}
+\eql at define@key{provide}{equation}[]{\eql at provide@env at equation{#1}}
+\eql at define@key{provide}{gather}[]{\eql at provide@env{gather}{#1}}
+\eql at define@key{provide}{multline}[]{\eql at provide@env{multline}{#1}}
+\eql at define@key{provide}{align}[]{\eql at provide@env{align}{#1}}
+\eql at define@key{provide}{flalign}[]{\eql at provide@env{flalign}{#1}}
+\eql at define@key{provide}{aligned}[]{\eql at provide@env{aligned}{#1}}
+\eql at define@key{provide}{gathered}[]{\eql at provide@env{gathered}{#1}}
+\eql at define@key{provide}{multlined}[]{\eql at provide@env at multlined{#1}}
+\eql at define@key{provide}{subequations}[]{\eql at provide@env at subequations{#1}}
+\eql at define@key{provide}{sqr}[]{\eql at provide@sqr}
+\eql at define@key{provide}{ang}[]{\eql at provide@ang}
+\eql at define@key{provide}{eqref}[]{\eql at provide@cmd{eqref}{#1}}
+\eql at define@key{provide}{notag}[]{\eql at provide@cmd{notag}{#1}}
+\eql at define@key{provide}{thetag}[]{\eql at provide@cmd{thetag}{#1}}
+\eql at define@key{provide}{allowdisplaybreaks}[]{%
+ \eql at provide@cmd{allowdisplaybreaks}{#1}}
+\eql at define@key{provide}{numberwithin}[]{\eql at provide@cmd{numberwithin}{#1}}
+\newcommand{\eqnlinesprovide}[1]{%
+\eql at dev@start\eqnlinesprovide
+ \eql at setkeys{provide}{#1}}
+\newcommand{\eqnlinesset}[1]{%
+\eql at dev@start\eqnlinesset
+ \eql at setkeys{setup}{#1}}
+\let\eql at error@packageoption\@gobble
+\DeclareOption*{\expandafter\eqnlinesset\expandafter{\CurrentOption}}
+\ProcessOptions
+\def\eql at error@packageoption#1{%
+ \eql at error{may only use `#1' as a package option}%
+}
+\ifcsname tagsleft at true\endcsname\else
+ \expandafter\newif\csname iftagsleft@\endcsname
+\fi
+\ifcsname @fleqntrue\endcsname\else
+ \expandafter\newif\csname if at fleqn\endcsname
+\fi
+\ifdefined\eql at provide@amsmath
+ \let\eql at provide@equation\eql at true
+ \eql at amsmath@after{%
+ \iftagsleft@
+ \eqnlinesset{tagsleft}
+ \else
+ \eqnlinesset{tagsright}
+ \fi
+ \if at fleqn
+ \eqnlinesset{left}
+ \else
+ \eqnlinesset{center}
+ \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
+ \eqnlinesprovide{%
+ multline,gather,align,flalign,%
+ multlined,gathered,aligned,%
+ subequations,eqref}
+\fi
+\ifdefined\eql at provide@ang
+ \eqnlinesprovide{ang}
+\fi
+\endinput
+%%
+%% End of file `eqnlines-dev.sty'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/eqnlines/eqnlines-dev.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/eqnlines/eqnlines.sty
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/eqnlines/eqnlines.sty (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/eqnlines/eqnlines.sty 2025-02-26 21:14:50 UTC (rev 74313)
@@ -0,0 +1,3800 @@
+%%
+%% This is file `eqnlines.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% eqnlines.dtx (with options: `package')
+%%
+%% Copyright (C) 2024-2025 Niklas Beisert
+%%
+%% Based on the latex package amsmath:
+%% Copyright (C) 1995, 2000, 2013 American Mathematical Society.
+%% 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.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
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008 or later.
+%%
+\NeedsTeXFormat{LaTeX2e}[2020/10/01]
+\ProvidesPackage{eqnlines}[2025/02/25 v0.5 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%
+ \def\reserved at a{#2}%
+ \def\reserved at b{#3}%
+ \futurelet\@let at token\eql at ifnch@tight
+}
+\def\eql at ifnch@tight{%
+ \ifx\@let at token\reserved at d
+ \let\reserved at b\reserved at a
+ \fi
+ \reserved at b
+}
+\begingroup
+ \makeatother
+ \let\tmp=@%
+ \makeatletter
+ \global\let\eql at atxii\tmp
+\endgroup
+\long\def\eql at ifnextgobble@loose#1#2{\eql at ifnextchar@loose#1{\@firstoftwo{#2}}}
+\long\def\eql at ifnextgobble@tight#1#2{\eql at ifnextchar@tight#1{\@firstoftwo{#2}}}
+\long\def\eql at ifstar@loose#1{\eql at ifnextchar@loose*{\@firstoftwo{#1}}}
+\long\def\eql at ifstar@tight#1{\eql at ifnextchar@tight*{\@firstoftwo{#1}}}
+\long\def\eql at ifat@loose#1#2{\eql at ifnextgobble@loose{@}{#1}{%
+ \eql at ifnextgobble@loose\eql at atxii{#1}{#2}}}
+\long\def\eql at ifat@tight#1#2{\eql at ifnextgobble@tight{@}{#1}{%
+ \eql at ifnextgobble@tight\eql at atxii{#1}{#2}}}
+\long\def\eql at testopt@loose#1#2{\eql at ifnextchar@loose[{#1}{#1[{#2}]}}%]
+\long\def\eql at testopt@tight#1#2{\eql at ifnextchar@tight[{#1}{#1[{#2}]}}%]
+\long\def\eql at teststaropt@loose#1#2#3{%
+ \eql at ifstar@loose{\eql at testopt@loose{#1}{#3}}{\eql at testopt@loose{#2}{#3}}}
+\long\def\eql at teststaropt@tight#1#2#3{%
+ \eql at ifstar@tight{\eql at testopt@tight{#1}{#3}}{\eql at testopt@tight{#2}{#3}}}
+\def\eql at spbgroup{\iffalse{\fi\ifnum0=`}\fi}
+\def\eql at spegroup{\ifnum0=`{\fi\iffalse}\fi}
+\def\eql at srbgroup{\relax\iffalse{\fi\ifnum0=`}\fi}
+\def\eql at sregroup{\let\@let at token\relax\ifnum0=`{\fi\iffalse}\fi}
+\long\def\eql at ampprotect#1#2{\eql at srbgroup#1{\eql at sregroup#2}}
+\long\def\eql at ampprotecttwo#1#2#3{%
+ \eql at srbgroup#1{\eql at sregroup#2}{\eql at sregroup#3}}
+\def\eql at ifnextchar@loose at ampsafe#1{%
+ \eql at ampprotecttwo{\eql at ifnextchar@loose#1}}
+\def\eql at ifnextchar@tight at ampsafe#1{%
+ \eql at ampprotecttwo{\eql at ifnextchar@tight#1}}
+\def\eql at ifstar@loose at ampsafe{\eql at ampprotecttwo\eql at ifstar@loose}
+\def\eql at ifstar@tight at ampsafe{\eql at ampprotecttwo\eql at ifstar@tight}
+\def\eql at testopt@loose at ampsafe{\eql at ampprotect\eql at testopt@loose}
+\def\eql at testopt@tight at ampsafe{\eql at ampprotect\eql at testopt@tight}
+\def\eql at teststaropt@loose at ampsafe{\eql at ampprotecttwo\eql at teststaropt@loose}
+\long\def\eql at teststaropt@tight at ampsafe{%
+ \eql at ampprotecttwo\eql at teststaropt@tight}
+\let\eql at ifnextchar@org\@ifnextchar
+\let\eql at ifstar@org\@ifstar
+\let\eql at testopt@org\@testopt
+\def\eql at amprevert{%
+ \let\@ifnextchar\eql at ifnextchar@org
+ \let\@testopt\eql at testopt@org
+ \let\@ifstar\eql at ifstar@org
+}
+\def\eql at ampproof{%
+ \let\@ifnextchar\eql at ifnextchar@loose at ampsafe
+ \let\@testopt\eql at testopt@loose at ampsafe
+ \let\@ifstar\eql at ifstar@loose at ampsafe
+}
+\def\eql at error#1{\PackageError{eqnlines}{#1}{}}
+\def\eql at warning{\PackageWarning{eqnlines}}
+\def\eql at error@nomathmode#1{\eql at error{#1 allowed only in math mode}}
+\def\eql at error@mathmode#1{\eql at error{#1 allowed only in paragraph mode}}
+\def\eql at warn@label at unused{\eql at warning{Unused equation \string\label:
+ label `\eql at nextlabel' will be lost}}
+\def\eql at warn@label at multiple#1{\eql at warning{Multiple equation \string\label's:
+ previous label '#1' will be lost}}
+\def\eql at warn@tag at unused{\eql at warning{Unused equation \string\tag:
+ tag declaration will be lost}}
+\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{%
+ \@ifpackageloaded{amsmath}{}{\AddToHook{package/amsmath/before}{#1}}}
+\let\eql at false\@undefined
+\let\eql at true\@empty
+\newskip\eql at regunset@
+\eql at regunset@-1sp\relax
+\def\eql at regsetdelayed#1#2{%
+ #1\eql at regunset@\relax
+ \AtBeginDocument{%
+ \ifdim#1=\eql at regunset@
+ \setlength#1{#2}%
+ \fi
+ }%
+}
+\let\eql at tagsleft\eql at false
+\let\eql at flushleft\eql at false
+\newdimen\eql at flushleftmargin@
+\newdimen\eql at flushleftmarginmin@
+\newdimen\eql at flushleftmarginmax@
+\eql at regsetdelayed\eql at flushleftmargin@\leftmargini
+\eql at flushleftmarginmin@\z@
+\eql at flushleftmarginmax@.5\maxdimen
+\newdimen\eql at tagmargin@
+\eql at tagmargin@\z@
+\newdimen\eql at indent@
+\def\eql at indent@val{2em}
+\newdimen\eql at paddingleft@
+\newdimen\eql at paddingright@
+\def\eql at paddingleft@val{0pt}
+\def\eql at paddingright@val{0pt}
+\let\eql at paddingmax\eql at false
+\def\eql at box@marginleft{\z at skip}
+\def\eql at box@marginright{\z at skip}
+\def\eql at box@colsep{2em}
+\def\eql at spread{\jot}
+\newdimen\eql at 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@
+\newdimen\eql at colsepmin@
+\newdimen\eql at colsepmax@
+\def\eql at colsepmin@val{1em}
+\def\eql at colsepmax@val{.5\maxdimen}
+\newdimen\eql at tagwidthmin@
+\eql at tagwidthmin@\z@
+\newdimen\eql at tagsepmin@
+\eql at regsetdelayed\eql at tagsepmin@{.5em}
+\newcount\eql at row@
+\newcount\eql at totalrows@
+\newdimen\eql at colsep@
+\newdimen\eql at display@firstavail@
+\def\eql at display@firstavail at set#1{%
+ \ifnum\eql at row@=\@ne
+ \global\eql at display@firstavail@#1%
+ \fi
+}
+\newcount\eql at raisetag@firstlast@
+\newbox\eql at fieldbox@
+\newbox\eql at tagbox@
+\newdimen\eql at fieldwidth@
+\newdimen\eql at tagwidth@
+\newdimen\eql at line@height@
+\newdimen\eql at line@depth@
+\newif\ifmeasuring@
+\AddToHook{package/hyperref/after}{
+ \ifdefined\Hy at ifnotmeasuring
+ \renewcommand\Hy at ifnotmeasuring[1]{\ifmeasuring@\else#1\fi}
+ \fi
+}
+\ifdefined\@displaytrue\else
+\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
+\let\eql at hook@blockout\@empty
+\let\eql at hook@linein\@empty
+\let\eql at hook@lineout\@empty
+\let\eql at hook@colin\@empty
+\let\eql at hook@colout\@empty
+\let\eql at hook@eqin\@empty
+\let\eql at hook@eqout\@empty
+\let\eql at hook@innerleft\@empty
+\let\eql at hook@innerright\@empty
+\let\eql at hook@innerlead\@empty
+\let\eql at punct@col\@empty
+\let\eql at punct@line\relax
+\let\eql at punct@block\relax
+\let\eql at punct@sep\relax
+\def\eqnpunctcol{\eql at ifstar@tight\eql at punct@col at setrelax\eql at punct@col at set}
+\def\eql at punct@col at set#1{\def\eql at punct@col{#1}\ignorespaces}
+\def\eql at punct@col at setrelax{\let\eql at punct@col\@empty\ignorespaces}
+\def\eqnpunctline{\eql at ifstar@tight\eql at punct@line at setrelax\eql at punct@line at set}
+\def\eql at punct@line at set#1{\def\eql at punct@line{#1}\ignorespaces}
+\def\eql at punct@line at setrelax{\let\eql at punct@line\relax\ignorespaces}
+\def\eqnpunctmain{\eql at ifstar@tight\eql at punct@main at setrelax\eql at punct@main at set}
+\def\eql at punct@main at set#1{\eqnlinesset{punct={#1}}\ignorespaces}
+\def\eql at punct@main at setrelax{\eqnlinesset{punct*}\ignorespaces}
+\def\eqnpunct{\eql at ifstar@tight\eql at punct@next at setrelax\eql at punct@next at set}
+\def\eql at punct@next at set#1{\eqnaddopt{punct={#1}}\ignorespaces}
+\def\eql at punct@next at setrelax{\eqnaddopt{punct*}\ignorespaces}
+\def\eql at punct@apply at col{%
+ \ifx\eql at punct@col\@empty\else
+ \eql at punct@sep
+ \eql at punct@col
+ \let\eql at punct@col\@empty
+ \fi
+}
+\def\eql at punct@apply at line{%
+ \ifx\eql at punct@line\relax
+ \else
+ \ifx\eql at punct@line\@empty\else
+ \eql at punct@sep
+ \eql at punct@line
+ \fi
+ \let\eql at punct@line\relax
+ \let\eql at punct@col\@empty
+ \fi
+}
+\def\eql at punct@apply at block{%
+ \ifx\eql at punct@block\relax
+ \else
+ \ifx\eql at punct@block\@empty\else
+ \eql at punct@sep
+ \eql at punct@block
+ \fi
+ \let\eql at punct@block\relax
+ \let\eql at punct@line\relax
+ \let\eql at punct@col\@empty
+ \fi
+}
+\def\eql at class@innerright at sel@{%
+ \ifdim\eql at fieldwidth@=\z@
+ \eql at class@innerlead
+ \else
+ \eql at class@innerright
+ \fi
+}
+\def\eql at class@innerleft at set#1{%
+ \def\eql at class@innerleft{#1}%
+}
+\def\eql at class@innerright at set#1{%
+ \def\eql at class@innerright{#1}%
+ \let\eql at class@innerright at sel\eql at class@innerright
+}
+\def\eql at class@innerlead at set#1{%
+ \def\eql at class@innerlead{#1}%
+ \let\eql at class@innerright at sel\eql at class@innerright at sel@
+}
+\def\eql at class@ampeq{%
+ \eql at class@innerleft at set{}%
+ \eql at class@innerright at set{{}}%
+}
+\def\eql at class@eqamp{%
+ \eql at class@innerleft at set{\mathrel{}}%
+ \eql at class@innerright at set{\mathrel{}}%
+ \eql at class@innerlead at set{{}}%
+}
+\eql at class@ampeq
+\protected\def\eql at box@cr{%
+ \eql at ampprotect\eql at testopt@tight\eql at box@cr@\z@
+}
+\def\eql at box@cr@[#1]{%
+ \eql at punct@apply at line
+ \eql at hook@lineout
+ \eql at box@lastfield
+ \cr
+ \noalign{%
+ \setlength\skip@{#1}%
+ \vskip\skip@
+ }%
+}
+\let\eql at box@box\vcenter
+\def\eql at box@lastfield at odd{%
+ &\omit
+ \kern-\wd\eql at fieldbox@
+ \box\eql at fieldbox@
+ \hfil
+ &\omit\kern-\eql at colsep@
+}%
+\def\eql at box@lastfield at even{&\omit\kern-\eql at colsep@}
+\def\eql at box@lastfield at lines{&\omit\kern-2\eql at colsep@}
+\def\eql at box@open at align{%
+ \let\eql at box@lastfield\@empty
+ \eql at halign@init{%
+}%
+ \tabskip\z at skip
+ \halign\bgroup
+ &%
+ \let\eql at box@lastfield\eql at box@lastfield at odd
+ \global\setbox\eql at fieldbox@\hbox{%
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at class@innerleft
+ \eql at hook@innerleft
+ $%
+ }%
+ \hfil
+ \kern\wd\eql at fieldbox@
+ \tabskip\z at skip
+ &%
+ \eql at fieldwidth@\wd\eql at fieldbox@
+ \kern-\eql at fieldwidth@
+ \box\eql at fieldbox@
+ \let\eql at box@lastfield\eql at box@lastfield at even
+ \llap{\unhbox\eql at fieldbox@}%
+ \hbox{%
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@innerright
+ \eql at class@innerright at sel
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ $%
+ }%
+ \hfil
+ \tabskip\eql at colsep@
+ \crcr
+ \noalign{%
+ \eql at hook@blockbefore
+ }%
+ \eql at hook@blockin
+}
+\def\eql at box@open at lines{%
+ \let\shoveleft\eql at adjust@shoveleft
+ \let\shovecenter\eql at adjust@shovecenter
+ \let\shoveright\eql at adjust@shoveright
+ \let\eql at box@lastfield\eql at box@lastfield at lines
+ \eql at halign@init{%
+ \global\advance\eql at row@\@ne
+ }%
+ \tabskip\z at skip
+ \halign\bgroup
+ &%
+ \eql at shape@pos@\m at ne
+ \setbox\eql at fieldbox@\hbox{%
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ $%
+ }%
+ \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@
+ \crcr
+ \noalign{%
+ \eql at hook@blockbefore
+ }%
+ \eql at hook@blockin
+}
+\def\eql at box@close{%
+ \ifvmode\else
+ \global\eql at totalrows@\eql at row@
+ \eql at punct@apply at block
+ \eql at box@cr@[\z at skip]%
+ \fi
+ \crcr
+ \noalign{%
+ \eql at hook@blockafter
+ }%
+ \egroup
+}
+\def\eql at box@start{%
+ \relax
+ \ifmmode
+ \let\eql at box@endmath\@empty
+ \else
+ $\let\eql at box@endmath=$%
+ \fi
+ \eql at nextopt@process{equationsbox}%
+ \let\eql at punct@block\eql at punct@main
+ \let\eql at punct@main\relax
+ \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 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@
+ \eql at box@box\bgroup
+ \eql at display@leave
+ \let\\\eql at box@cr
+ \ifdefined\eql at box@mode at lines
+ \expandafter\eql at box@open at lines
+ \else
+ \expandafter\eql at box@open at align
+ \fi
+}
+\newcommand{\eql at box@end}{%
+ \eql at box@close
+ \egroup
+ \setlength\skip@\eql at box@marginright
+ \hskip\skip@
+ \eql at stack@restore
+ \eql at box@endmath
+}
+\newenvironment{equationsbox}{%
+ \eql at ampprotect\eql at box@testall\eql at box@start
+}{%
+ \eql at box@end
+}
+\def\eql at box@testall{\eql at box@testtilde}
+\def\eql at box@testtilde#1{%
+ \eql at ifnextgobble@tight~%
+ {\eqnaddopt{lines}\eql at box@testopt{#1}}%
+ {\eql at box@testopt{#1}}}
+\def\eql at box@testopt#1{%
+ \eql at ifnextchar@tight[%]
+ {\eql at box@addopt{#1}}%
+ {#1}}
+\def\eql at box@addopt#1[#2]{\eqnaddopt{#2}#1}
+\def\eql at mode@aligned{\let\eql at box@mode at lines\eql at false}
+\def\eql at mode@lined{\let\eql at box@mode at lines\eql at true}
+\eql at mode@aligned
+\eql at amsmath@futurebefore{
+ \let\c at parentequation\@undefined
+ \let\theparentequation\@undefined
+}
+\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 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@setform#1#2#3{%
+ \def\tagform@##1{\maketag@@@{#1\ignorespaces#2\unskip\@@italiccorr#3}}%
+}
+
+\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
+\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
+ \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@printlabel at right{%
+ \ifx\eql at SK@lab\relax\else
+ \rlap{\kern\marginparsep\eql at SK@lab}%
+ \eql at SK@lab at relax
+ \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
+ \fi
+ }
+ \def\eql at SK@printlabel at line{%
+ \ifx\eql at SK@lab\relax\else
+ \dimen@\prevdepth
+ \nointerlineskip
+ \ifdefined\eql at tagsleft
+ \llap{%
+ \eql at SK@lab
+ \kern\marginparsep
+ }%
+ \eql at SK@lab at relax
+ \else
+ \rlap{%
+ \dimen@\displaywidth
+ \advance\dimen@\marginparsep
+ \kern\dimen@
+ \eql at SK@lab
+ }%
+ \fi
+ \eql at SK@lab at relax
+ \prevdepth\dimen@
+ \fi
+ }
+ \let\eql at label@org\label
+ \def\eql at label@clean{\let\SK@\@gobbletwo\eql at label@org}
+}
+\let\eql at nextlabel\@undefined
+\def\eql at labelname@default{[equation]}
+\let\eql at label@org\label
+\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{%
+ \eql at ampprotecttwo\eql at teststaropt@tight\eql at tag@gobble@\eql at tag@gobble@{}}
+\let\eql at Hy@anchor\@gobble
+\AddToHook{package/hyperref/after}{
+ \def\eql at Hy@anchor#1{%
+ \Hy at raisedlink{\hyper at anchor{#1}}%
+ }%
+}
+\def\eql at tag@makenext{%
+ \eql at ampprotecttwo\eql at teststaropt@tight
+ \eql at tag@makenext at star\eql at tag@makenext@\eql at tag@text
+}
+\def\eql at tag@makenext at star[#1]#2{%
+ \global\def\eql at nexttag{%
+ \let\eql at tag@tool\maketag@@@
+ \protected at edef\eql at tag@text{#2}%
+ \protected at edef\eql at tag@label{#1}%
+ }%
+}
+\def\eql at tag@makenext@[#1]#2{%
+ \global\def\eql at nexttag{%
+ \let\eql at tag@tool\tagform@
+ \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}%
+ }%
+}
+\newcount\eql at numbering@refcount@
+\eql at numbering@refcount@\z@
+\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 Hy@anchor\eql at label@currentHref
+ \global\edef\eql at label@thepage{\thepage}%
+}
+\def\eql at numbering@setblockanchor{%
+ \let\thepage\eql at label@thepage
+ \let\@currentHref\eql at label@currentHref
+}
+\def\eql at compose@anchor{%
+ \ifdefined\eql at nexttag
+ \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 Hy@anchor\@currentHref
+ \global\let\eql at nexttag\@undefined
+ \else
+ \refstepcounter{equation}%
+ \let\eql at tag@tool\tagform@
+ \edef\eql at tag@text{\theequation}%
+ \fi
+}
+\def\eql at compose@label{%
+ \ifmeasuring@\else
+ \eql at SK@lab at relax
+ \ifdefined\eql at nextlabel
+ \ifnum
+ \ifnum\eql at numbering@target@<\z@
+ \eql at row@
+ \else
+ \eql at numbering@target@
+ \fi=\eql at row@
+ \eql at compose@label@
+ \fi
+ \fi
+ \fi
+}
+\def\eql at compose@label@{%
+ \eql at SK@makelabel\eql at nextlabel
+ \begingroup
+ \ifnum\eql at numbering@target@=\eql at row@
+ \eql at numbering@setblockanchor
+ \fi
+ \let\@currentlabelname\eql at labelname@default
+ \expandafter\eql at label@clean\expandafter{\eql at nextlabel}%
+ \global\let\eql at nextlabel\@undefined
+ \endgroup
+}
+\def\eql at compose@tag{%
+ \eql at tag@tool\eql at tag@text
+}
+\def\eql at compose@print{%
+ \eql at compose@anchor
+ \eql at compose@label
+ \ifdefined\eql at tagsleft
+ \eql at SK@printlabel at left
+ \eql at compose@tag
+ \else
+ \eql at compose@tag
+ \eql at SK@printlabel at right
+ \fi
+}
+\def\eql at compose@measure{%
+ \ifdefined\eql at nexttag
+ \eql at nexttag
+ \eql at tag@tool\eql at tag@text
+ \else
+ \stepcounter{equation}%
+ \tagform@\theequation
+ \fi
+ \ifnum\eql at numbering@target@<\z@
+ \global\let\eql at nextlabel\@undefined
+ \global\let\eql at nexttag\@undefined
+ \fi
+}
+\def\eql at compose@null{%
+ \ifdefined\eql at nexttag\else
+ \stepcounter{equation}%
+ \fi
+ \ifnum\eql at numbering@target@<\z@
+ \global\let\eql at nextlabel\@undefined
+ \global\let\eql at nexttag\@undefined
+ \fi
+}
+\def\eql at tagbox@make#1{%
+ \setbox\eql at tagbox@\hbox{\eql at strut@tag\@lign#1}%
+ \eql at tagwidth@\wd\eql at tagbox@
+ \ifdim\eql at tagwidth@<\eql at tagwidthmin@
+ \eql at tagwidth@\eql at tagwidthmin@
+ \fi
+ \advance\eql at tagwidth@\eql at tagsepmin@
+}
+\def\eql at tagbox@print at right{%
+ \kern-\wd\eql at tagbox@
+ \box\eql at tagbox@
+}
+\def\eql at tagbox@print at left{%
+ \wd\eql at tagbox@\z@
+ \box\eql at tagbox@
+}
+\def\eql at tagbox@print at right@raise{%
+ \ifnum\eql at row@=\eql at totalrows@
+ \global\advance\eql at raisetag@firstlast@\tw@
+ \fi
+ \llap{\vtop{%
+ \vskip-\eql at raisetag@amount@
+ \normalbaselines
+ \setbox\@ne\hbox{}%
+ \dp\@ne\eql at line@depth@
+ \box\@ne
+ \box\eql at tagbox@
+ }}%
+}
+\def\eql at tagbox@print at left@raise{%
+ \ifnum\eql at row@=\@ne
+ \global\advance\eql at raisetag@firstlast@\@ne
+ \fi
+ \rlap{\vbox{%
+ \normalbaselines
+ \box\eql at tagbox@
+ \vbox to\eql at line@height@{}%
+ \vskip\eql at raisetag@amount@
+ }}%
+}
+\def\eql at numbering@printsubeqlabel{%
+ \ifdefined\eql at parentlabel
+ \eql at numbering@makeblockanchor
+ \eql at SK@makelabel\eql at parentlabel
+ \begingroup
+ \def\@currentcounter{equation}%
+ \eql at numbering@setblockanchor
+ \let\@currentlabelname\eql at labelname@default
+ \protected at edef\@currentlabel{\p at equation\theparentequation}%
+ \expandafter\eql at label@clean\expandafter{\eql at parentlabel}%
+ \endgroup
+ \eql at SK@printlabel at line
+ \fi
+}
+\def\eql at numbering@tab at first{first}
+\def\eql at numbering@tab at last{last}
+\def\eql at numbering@tab at middle{middle}
+\def\eql at numbering@tab at here{here}
+\def\eql at numbering@tab at in{in}
+\def\eql at numbering@tab at out{out}
+\def\eql at numbering@tab at sub{sub}
+\def\eql at numbering@tab at all{all}
+\def\eql at numbering@tab at none{none}
+\let\eql at numbering@tab at f\eql at numbering@tab at first
+\let\eql at numbering@tab at l\eql at numbering@tab at last
+\let\eql at numbering@tab at m\eql at numbering@tab at middle
+\let\eql at numbering@tab at mid\eql at numbering@tab at middle
+\let\eql at numbering@tab at o\eql at numbering@tab at out
+\let\eql at numbering@tab at outside\eql at numbering@tab at out
+\let\eql at numbering@tab at i\eql at numbering@tab at in
+\let\eql at numbering@tab at inside\eql at numbering@tab at in
+\let\eql at numbering@tab at within\eql at numbering@tab at in
+\let\eql at numbering@tab at h\eql at numbering@tab at here
+\let\eql at numbering@tab at s\eql at numbering@tab at sub
+\let\eql at numbering@tab at subeq\eql at numbering@tab at sub
+\let\eql at numbering@tab at subequation\eql at numbering@tab at sub
+\let\eql at numbering@tab at subequations\eql at numbering@tab at sub
+\let\eql at numbering@tab at a\eql at numbering@tab at all
+\let\eql at numbering@tab at n\eql at numbering@tab at none
+\expandafter\let\csname eql at numbering@tab@!\endcsname\eql at numbering@tab at all
+\expandafter\let\csname eql at numbering@tab@*\endcsname\eql at numbering@tab at none
+\expandafter\let\csname eql at numbering@tab at 1\endcsname\eql at numbering@tab at first
+\let\eql at numbering@mode\eql at numbering@tab at all
+\def\eql at numbering@set#1{%
+ \ifcsname eql at numbering@tab@#1\endcsname
+ \expandafter\let\expandafter\eql at numbering@mode
+ \csname eql at numbering@tab@#1\endcsname
+ \else
+ \eql at error{numbering mode `#1' unknown: setting to `all'}%
+ \let\eql at numbering@mode\eql at numbering@tab at all
+ \fi
+}
+\let\eql at numbering@active\eql at true
+\newcount\eql at numbering@target@
+\def\eql at numbering@mode at all{%
+ \eql at numbering@target@\m at ne}
+\def\eql at numbering@mode at sub{%
+ \eql at numbering@target@\m at ne
+ \let\eql at numbering@subeq at use\eql at true}
+\def\eql at numbering@mode at none{%
+ \eql at numbering@target@\m at ne
+ \let\eql at numbering@active\eql at false}
+\def\eql at numbering@mode at first{%
+ \eql at numbering@target@\@ne}
+\def\eql at numbering@mode at last{%
+ \eql at numbering@target@\@MM}
+\def\eql at numbering@mode at here{%
+ \eql at numbering@target@\z@}
+\def\eql at numbering@mode at in{%
+ \ifdefined\eql at tagsleft
+ \eql at numbering@mode at last
+ \else
+ \eql at numbering@mode at first
+ \fi
+}
+\def\eql at numbering@mode at out{%
+ \ifdefined\eql at tagsleft
+ \eql at numbering@mode at first
+ \else
+ \eql at numbering@mode at last
+ \fi
+}
+\def\eql at numbering@mode at middle{%
+ \eql at numbering@target@\z@
+ \let\eql at numbering@eval at target\eql at numbering@eval at middle}
+\def\eql at numbering@eval at middle{%
+ \ifnum\eql at numbering@target@=\z@
+ \count@\eql at row@
+ \advance\count@\@ne
+ \divide\count@\tw@
+ \global\eql at numbering@target@\count@
+ \fi
+}
+\def\eql at numbering@eval at mode{%
+ \let\eql at numbering@eval at target\@undefined
+ \let\eql at numbering@subeq at use\eql at false
+ \csname eql at numbering@mode@\eql at numbering@mode\endcsname
+ \ifdefined\eql at numbering@active
+ \let\eql at numbering@eqnswinit\@eqnswtrue
+ \else
+ \let\eql at numbering@eqnswinit\@eqnswfalse
+ \fi
+ \let\eql at numbering@active\eql at false
+}
+\def\numberhere{%
+ \ifmeasuring@
+ \ifnum\eql at numbering@target@<\z@\else
+ \global\eql at numbering@target@\eql at row@
+ \fi
+ \fi
+}
+\def\numbernext{%
+ \ifmeasuring@
+ \ifnum\eql at numbering@target@<\z@\else
+ \ifnum\eql at numbering@target@=\eql at row@
+ \global\advance\eql at numbering@target@\@ne
+ \fi
+ \fi
+ \fi
+}
+\let\eql at numbering@autolabel\eql at false
+\let\eql at numbering@autotag\eql at true
+\let\eql at numbering@blocklabel\@undefined
+\let\eql at numbering@blocktag\@undefined
+\eql at amsmath@after{
+ \let\eql at print@eqnum at default\print at eqnum
+ \let\eql at incr@eqnum at default\incr at eqnum
+}
+\def\donumber{%
+ \if at eqnsw\else
+ \global\@eqnswtrue
+ \ifx\print at eqn\@empty
+ \global\let\print at eqn\eql at print@eqnum at default
+ \fi
+ \ifx\incr at eqn\@empty
+ \global\let\incr at eqn\eql at incr@eqnum at default
+ \fi
+ \fi
+}
+\def\eql at label@warn{%
+ \ifdefined\eql at numbering@autolabel
+ \global\@eqnswtrue
+ \fi
+ \ifdefined\eql at nextlabel
+ \eql at warn@label at multiple\eql at nextlabel
+ \fi
+ \global\edef\eql at nextlabel
+}
+\def\eql at tag@warn{%
+ \ifdefined\eql at numbering@autotag
+ \global\@eqnswtrue
+ \fi
+ \ifdefined\eql at nexttag
+ \eql at warn@tag at multiple
+ \fi
+ \eql at tag@makenext
+}
+\def\eql at label@nowarn{%
+ \ifdefined\eql at numbering@autolabel
+ \global\@eqnswtrue
+ \fi
+ \global\edef\eql at nextlabel
+}
+\def\eql at tag@nowarn{%
+ \ifdefined\eql at numbering@autotag
+ \global\@eqnswtrue
+ \fi
+ \eql at tag@makenext
+}
+\def\eql at blocklabel@set#1{%
+ \ifdefined\eql at blocklabel
+ \eql at warn@label at multiple\eql at blocklabel
+ \fi
+ \edef\eql at blocklabel{#1}%
+}
+\def\eql at blocktag@set#1{%
+ \ifdefined\eql at blocktag
+ \eql at warn@tag at multiple
+ \fi
+ \def\eql at blocktag{{#1}}%
+}
+\def\eql at blocktag@setstar#1{%
+ \ifdefined\eql at blocktag
+ \eql at warn@tag at multiple
+ \fi
+ \def\eql at blocktag{*{#1}}%
+}
+\def\eql at numbering@single at init{%
+ \let\label\eql at label@warn
+ \let\tag\eql at tag@warn
+ \let\raisetag\eql at raisetag
+ \eql at numbering@target@\m at ne
+ \let\eql at nextlabel\eql at blocklabel
+ \ifdefined\eql at blocktag
+ \expandafter\eql at tag@makenext\eql at blocktag
+ \else
+ \let\eql at nexttag\@undefined
+ \fi
+ \eql at numbering@eqnswinit
+ \ifdefined\eql at numbering@autolabel
+ \ifdefined\eql at nextlabel
+ \@eqnswtrue
+ \fi
+ \fi
+ \ifdefined\eql at numbering@autotag
+ \ifdefined\eql at nexttag
+ \@eqnswtrue
+ \fi
+ \fi
+ \global\eql at raisetag@amount@\z@
+}
+\def\eql at numbering@measure at init{%
+ \let\label\eql at label@warn
+ \let\tag\eql at tag@warn
+ \let\raisetag\eql at raisetag
+ \global\let\eql at nextlabel\eql at blocklabel
+ \ifdefined\eql at blocktag
+ \expandafter\eql at tag@makenext\eql at blocktag
+ \else
+ \global\let\eql at nexttag\@undefined
+ \fi
+ \ifnum\eql at numbering@target@<\z@\else
+ \eql at numbering@eqnswinit
+ \ifdefined\eql at numbering@autolabel
+ \ifdefined\eql at nextlabel
+ \@eqnswtrue
+ \fi
+ \fi
+ \fi
+}
+\def\eql at numbering@measure at line@begin{%
+ \ifnum\eql at numbering@target@<\z@
+ \global\eql at numbering@eqnswinit
+ \fi
+}
+\def\eql at numbering@measure at eval{%
+ \ifdefined\eql at numbering@eval at target
+ \eql at numbering@eval at target
+ \fi
+ \ifnum\eql at numbering@target@>\eql at row@
+ \global\eql at numbering@target@\eql at row@
+ \fi
+ \ifnum\eql at numbering@target@>\z@
+ \if at eqnsw\else
+ \global\eql at numbering@target@\z@
+ \fi
+ \fi
+ \ifnum\eql at numbering@target@<\@ne
+ \ifdefined\eql at nextlabel
+ \eql at warn@label at unused
+ \global\let\eql at nextlabel\@undefined
+ \fi
+ \ifdefined\eql at nexttag
+ \eql at warn@tag at unused
+ \global\let\eql at nexttag\@undefined
+ \fi
+ \fi
+}
+\def\eql at numbering@print at init{%
+ \ifnum\eql at numbering@target@<\z@
+ \let\label\eql at label@nowarn
+ \let\tag\eql at tag@nowarn
+ \let\raisetag\eql at raisetag
+ \let\eql at nextlabel\eql at blocklabel
+ \ifdefined\eql at blocktag
+ \expandafter\eql at tag@makenext\eql at blocktag
+ \else
+ \let\eql at nexttag\@undefined
+ \fi
+ \else
+ \let\label\@gobble
+ \let\tag\eql at tag@gobble
+ \let\raisetag\eql at gobble
+ \fi
+}
+\def\eql at numbering@print at block@begin{%
+ \ifnum\eql at numbering@target@>\z@
+ \eql at numbering@makeblockanchor
+ \fi
+ \ifdefined\eql at numbering@subeq at use
+ \eql at numbering@printsubeqlabel
+ \fi
+}
+\def\eql at numbering@print at line@begin{%
+ \ifnum\eql at numbering@target@<\z@
+ \global\eql at numbering@eqnswinit
+ \global\eql at raisetag@amount@\z@
+ \fi
+}
+\def\eql at numbering@print at line@eval{%
+ \ifnum\eql at numbering@target@<\z@\else
+ \ifnum\eql at numbering@target@=\eql at row@
+ \global\@eqnswtrue
+ \else
+ \global\@eqnswfalse
+ \fi
+ \fi
+}
+\def\eql at numbering@subeq at init{%
+ \let\eql at save@theequation\theequation
+ \let\eql at save@theHequation\theHequation
+ \eql at subequations@init
+ \let\eql at parentlabel\eql at blocklabel
+ \let\eql at parenttag\eql at blocktag
+ \let\eql at blocklabel\@undefined
+ \let\eql at blocktag\@undefined
+}
+\def\eql at numbering@subeq at test{%
+ \ifnum\c at equation<\tw@
+ \let\eql at numbering@subeq at use\@ne
+ \fi
+}
+\def\eql at numbering@subeq at revert{%
+ \let\eql at blocklabel\eql at parentlabel
+ \let\eql at blocktag\eql at parenttag
+ \let\eql at numbering@subeq at use\eql at false
+ \let\theequation\eql at save@theequation
+ \let\theHequation\eql at save@theHequation
+ \eql at subequations@restorecounter
+}
+\def\eql at numbering@subeq at close{%
+ \eql at subequations@close
+}
+\interdisplaylinepenalty\@M
+\def\eql at getdsp@pen#1{%
+ \ifcase #1\@M \or 9999 \or 6999 \or 2999 \or \z@\fi
+}
+\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
+\newcount\eql at displaybreak@pen@
+\newcount\eql at displaybreak@prepen@
+\protected\def\eql at displaybreak@print{%
+ \eql at ampprotect\eql at testopt@tight\eql at displaybreak@print@{4}%
+}
+\def\eql at displaybreak@print@[#1]{%
+ \ifnum#1<\z@
+ \global\eql at displaybreak@pen@\@MM
+ \else
+ \global\eql at displaybreak@pen at -\@getpen{#1}\relax
+ \fi
+}
+\def\eql at displaybreak@pre#1{%
+ \ifnum#1<\z@
+ \global\eql at displaybreak@prepen@\@MM
+ \else
+ \global\eql at displaybreak@prepen at -\@getpen{#1}\relax
+ \fi
+}
+\protected\def\eql at displaybreak@measure{%
+ \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@
+\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@
+}
+\def\eql at display@init{%
+ \eql at display@firstavail@\z@
+ \eql at raisetag@firstlast@\z@
+ \let\displaybreak\eql at displaybreak@print
+ \eql at displaybreak@pen@\@MM
+ \eql at vspaceskip@\z at skip
+ \let\eql at vspace@org\vspace
+ \let\vspace\eql at vspace
+}
+\def\eql at display@close{%
+ \ifdim\eql at halign@prevdepth@=\maxdimen
+ \ifdim\predisplaysize=-\maxdimen
+ \abovedisplayskip\eql at abovedisplaycontskip@
+ \predisplaysize\maxdimen
+ \abovedisplayshortskip\abovedisplayskip
+ \belowdisplayshortskip\belowdisplayskip
+ \fi
+ \else
+ \ifdim\eql at halign@prevdepth@=\@m\p@
+ \predisplaypenalty\z@
+ \abovedisplayskip\eql at abovedisplaytopskip@
+ \belowdisplayskip\eql at belowdisplaytopskip@
+ \else
+ \predisplaypenalty\z@
+ \abovedisplayskip\eql at abovedisplayparskip@
+ \fi
+ \predisplaysize\maxdimen
+ \abovedisplayshortskip\abovedisplayskip
+ \belowdisplayshortskip\belowdisplayskip
+ \fi
+ \eql at display@doatend
+ \ifdim\eql at display@firstavail@<\z@
+ \eql at display@firstavail@\z@
+ \fi
+ \advance\eql at display@firstavail@\displayindent
+ \ifdim\eql at display@firstavail@>\predisplaysize
+ \ifcase\eql at displayshortmode@
+ \or
+ \abovedisplayskip\abovedisplayshortskip
+ \or
+ \abovedisplayskip\abovedisplayshortskip
+ \ifnum\eql at row@=\tw@
+ \belowdisplayskip\belowdisplayshortskip
+ \fi
+ \or
+ \abovedisplayskip\abovedisplayshortskip
+ \belowdisplayskip\belowdisplayshortskip
+ \fi
+ \fi
+ \ifodd\eql at raisetag@firstlast@
+ \abovedisplayskip\eql at abovedisplaytagskip@
+ \fi
+ \ifnum\eql at raisetag@firstlast@>\@ne
+ \belowdisplayskip\eql at belowdisplaytagskip@
+ \fi
+ \ifnum\eql at displaybreak@pen@=\@MM\else
+ \postdisplaypenalty\eql at displaybreak@pen@
+ \fi
+ \ifnum\eql at displaybreak@prepen@=\@MM\else
+ \predisplaypenalty\eql at displaybreak@prepen@
+ \fi
+ \advance\abovedisplayskip\eql at abovespace@
+ \advance\belowdisplayskip\eql at belowspace@
+ \advance\belowdisplayskip\eql at vspaceskip@
+ \count@\prevgraf
+ \advance\count@\eql at row@
+ \advance\count at -\tw@
+ \prevgraf\count@
+}
+\def\eql at display@leave{%
+ \let\label\eql at label@org
+ \let\tag\eql at tag@default
+ \let\raisetag\eql at raisetag@default
+ \let\displaybreak\eql at displaybreak@default
+ \let\vspace\eql at vspace@org
+}
+\expandafter\def\expandafter\@arrayparboxrestore\expandafter{%
+ \@arrayparboxrestore
+ \eql at display@leave
+ \eql at amprevert
+ \@displayfalse
+}
+\newbox\eql at strutbox@
+\def\eql at strut{\copy\eql at strutbox@}
+\let\eql at strut@field\eql at strut
+\let\eql at strut@tag\eql at strut
+\def\eql at strut@make{%
+ \setbox\eql at strutbox@\hbox{%
+ \@tempdima\normalbaselineskip
+ \advance\@tempdima-\normallineskiplimit
+ \@tempdimb.3\normalbaselineskip
+ \advance\@tempdimb.5\normallineskiplimit
+ \advance\@tempdima-\@tempdimb
+ \vrule\@height\@tempdima\@depth\@tempdimb\@width\z@
+ }
+}
+\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@
+ \ifdefined\spread at equation
+ \let\spread at equation\@empty
+ \fi
+ \fi
+}
+\newdimen\eql at halign@prevdepth@
+\def\eql at halign@catchprevdepth{%
+ \ifvmode
+ \eql at halign@prevdepth@\prevdepth
+ \nointerlineskip
+ \noindent
+ \else
+ \eql at halign@prevdepth@\maxdimen
+ \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
+ \else
+ \vskip\skip@
+ \fi
+ \nointerlineskip
+ \fi
+}
+\def\eql at halign@after{%
+ \prevdepth\eql at display@depth\relax
+}
+\def\eql at halign@init#1{%
+ \eql at halign@spread
+ \eql at strut@make
+ \everycr{\noalign{#1}}%
+}
+\def\eql at stack@enable{%
+ \let\eql at stack@save at single\eql at stack@save at single@
+ \let\eql at stack@save at multi\eql at stack@save at multi@
+ \let\eql at stack@save at boxed\eql at stack@save at boxed@
+}
+\let\eql at stack@save at single\eql at stack@enable
+\let\eql at stack@save at multi\eql at stack@enable
+\let\eql at stack@save at boxed\eql at stack@enable
+\let\eql at stack@restore\@empty
+\def\eql at stack@save at reg#1{\global#1\the#1\relax}
+\def\eql at stack@save at let#1#2{\global\let\noexpand#2\noexpand#1}
+\def\eql at stack@save at single@{%
+ \let\eql at stack@nextlabel\eql at nextlabel
+ \let\eql at stack@nexttag\eql at nexttag
+ \edef\eql at stack@restore{%
+ \global\if at eqnsw\noexpand\@eqnswtrue\else\noexpand\@eqnswfalse\fi
+ \eql at stack@save at let\eql at stack@nextlabel\eql at nextlabel
+ \eql at stack@save at let\eql at stack@nexttag\eql at nexttag
+ \eql at stack@save at reg\eql at displaybreak@pen@
+ \eql at stack@save at reg\eql at vspaceskip@
+ \eql at stack@save at reg\eql at shape@pos@
+ \eql at stack@save at reg\eql at shape@amount@
+ \eql at stack@save at reg\eql at display@firstavail@
+ \eql at stack@save at reg\eql at raisetag@amount@
+ \eql at stack@save at reg\eql at raisetag@firstlast@
+ }%
+}
+\def\eql at stack@save at multi@{%
+ \let\eql at stack@nextlabel\eql at nextlabel
+ \let\eql at stack@nexttag\eql at nexttag
+ \let\eql at stack@tagwidth at tab\eql at tagwidth@tab
+ \let\eql at stack@fieldlength at tab\eql at fieldlength@tab
+ \let\eql at stack@colwidth at tab\eql at colwidth@tab
+ \let\eql at stack@label at thepage\eql at label@thepage
+ \let\eql at stack@label at currentHref\eql at label@currentHref
+ \edef\eql at stack@restore{%
+ \global\if at eqnsw\noexpand\@eqnswtrue\else\noexpand\@eqnswfalse\fi
+ \eql at stack@save at let\eql at stack@nextlabel\eql at nextlabel
+ \eql at stack@save at let\eql at stack@nexttag\eql at nexttag
+ \eql at stack@save at let\eql at stack@tagwidth at tab\eql at tagwidth@tab
+ \eql at stack@save at let\eql at stack@fieldlength at tab\eql at fieldlength@tab
+ \eql at stack@save at let\eql at stack@colwidth at tab\eql at colwidth@tab
+ \eql at stack@save at let\eql at stack@label at thepage\eql at label@thepage
+ \eql at stack@save at let\eql at stack@label at currentHref\eql at label@currentHref
+ \eql at stack@save at reg\eql at displaybreak@pen@
+ \eql at stack@save at reg\eql at vspaceskip@
+ \eql at stack@save at reg\eql at shape@pos@
+ \eql at stack@save at reg\eql at shape@amount@
+ \eql at stack@save at reg\eql at display@firstavail@
+ \eql at stack@save at reg\eql at raisetag@amount@
+ \eql at stack@save at reg\eql at raisetag@firstlast@
+ \eql at stack@save at reg\eql at column@
+ \eql at stack@save at reg\eql at totalcolumns@
+ \eql at stack@save at reg\eql at line@avail@
+ \eql at stack@save at reg\eql at line@pos@
+ \eql at stack@save at reg\eql at line@width@
+ \eql at stack@save at reg\eql at line@depth@
+ \eql at stack@save at reg\eql at line@height@
+ \eql at stack@save at reg\eql at numbering@target@
+ \eql at stack@save at reg\eql at row@
+ }%
+}
+\def\eql at stack@save at boxed@{%
+ \edef\eql at stack@restore{%
+ \eql at stack@save at reg\eql at row@
+ \eql at stack@save at reg\eql at totalrows@
+ \eql at stack@save at reg\eql at shape@pos@
+ \eql at stack@save at reg\eql at shape@amount@
+ }%
+}
+\ifdefined\inf at bad\else%
+ \newcount\inf at bad
+ \inf at bad1000000\relax
+\fi
+\let\eql at restore@hfuzz\@empty
+\def\eql at save@hfuzz{\edef\eql at restore@hfuzz{\hfuzz\the\hfuzz\relax}}
+\newcount\eql at shape@pos@
+\newdimen\eql at shape@amount@
+\newdimen\eql at marginleft@
+\newdimen\eql at marginright@
+\newcount\eql at marginbadness@
+\newcount\eql at maxbadness@
+\eql at marginbadness@\inf at bad
+\eql at maxbadness@\inf at bad
+\def\eql at shape@tab at default{default}
+\def\eql at shape@tab at left{left}
+\def\eql at shape@tab at center{center}
+\def\eql at shape@tab at right{right}
+\def\eql at shape@tab at first{first}
+\def\eql at shape@tab at hanging{hanging}
+\def\eql at shape@tab at steps{steps}
+\let\eql at shape@tab at def\eql at shape@tab at default
+\let\eql at shape@tab@\eql at shape@tab at default
+\let\eql at shape@tab at l\eql at shape@tab at left
+\let\eql at shape@tab at c\eql at shape@tab at center
+\let\eql at shape@tab at r\eql at shape@tab at right
+\let\eql at shape@tab at rc\eql at shape@tab at first
+\let\eql at shape@tab at indent\eql at shape@tab at first
+\let\eql at shape@tab at hang\eql at shape@tab at hanging
+\let\eql at shape@tab at lc\eql at shape@tab at hanging
+\let\eql at shape@tab at outdent\eql at shape@tab at hanging
+\let\eql at shape@tab at lcr\eql at shape@tab at steps
+\let\eql at shape@mode\eql at shape@tab at default
+\def\eql at shape@set#1{%
+ \ifcsname eql at shape@tab@#1\endcsname
+ \expandafter\let\expandafter\eql at shape@mode
+ \csname eql at shape@tab@#1\endcsname
+ \else
+ \eql at error{shape `#1' unknown: setting to default}%
+ \let\eql at shape@mode\eql at shape@tab at default
+ \fi
+}
+\def\eql at shape@center at left{\eql at shape@pos@\z@\eql at shape@amount@\z@}
+\def\eql at shape@center at center{\eql at shape@pos@\@ne\eql at shape@amount@\z@}
+\def\eql at shape@center at right{\eql at shape@pos@\tw@\eql at shape@amount@\z@}
+\let\eql at shape@center at default\eql at shape@center at center
+\def\eql at shape@left at left{\eql at shape@pos@\z@\eql at shape@amount@\z@}
+\def\eql at shape@left at center{\eql at shape@pos@\@ne\eql at shape@amount@\z@}
+\def\eql at shape@left at right{\eql at shape@pos@\tw@\eql at shape@amount@\z@}
+\let\eql at shape@left at default\eql at shape@left at left
+\def\eql at shape@center at first{%
+ \eql at shape@pos@\z@
+ \eql at shape@amount@\z@
+ \ifnum\eql at totalrows@>\@ne
+ \ifnum\eql at row@=\@ne
+ \eql at shape@amount@\eql at indent@
+ \fi
+ \fi
+}
+\def\eql at shape@left at first{%
+ \eql at shape@pos@\z@
+ \eql at shape@amount@\z@
+ \ifnum\eql at totalrows@>\@ne
+ \ifnum\eql at row@=\@ne
+ \eql at shape@amount@\eql at indent@
+ \fi
+ \fi
+}
+\def\eql at shape@center at hanging{%
+ \eql at shape@pos@\z@
+ \eql at shape@amount@\eql at indent@
+ \ifnum\eql at totalrows@>\@ne
+ \ifnum\eql at row@=\@ne
+ \eql at shape@amount@\z@
+ \fi
+ \fi
+}
+\def\eql at shape@left at hanging{%
+ \eql at shape@pos@\z@
+ \eql at shape@amount@\z@
+ \ifnum\eql at totalrows@>\@ne
+ \ifnum\eql at row@=\@ne
+ \eql at shape@amount at -\eql at indent@
+ \fi
+ \fi
+}
+\def\eql at shape@center at steps{%
+ \eql at shape@amount@\z@
+ \eql at shape@pos@\@ne
+ \ifnum\eql at totalrows@>\@ne
+ \ifnum\eql at row@=\@ne
+ \eql at shape@pos@\z@
+ \fi
+ \ifnum\eql at row@=\eql at totalrows@
+ \eql at shape@pos@\tw@
+ \fi
+ \fi
+}
+\def\eql at shape@left at steps{%
+ \eql at shape@pos@\z@
+ \eql at shape@amount@\z@
+ \ifnum\eql at totalrows@>\@ne
+ \ifnum\eql at row@=\@ne
+ \eql at shape@amount at -\eql at indent@
+ \fi
+ \ifnum\eql at row@=\eql at totalrows@
+ \eql at shape@amount@\eql at indent@
+ \fi
+ \fi
+}
+\let\eql at shape@eval\@undefined
+\def\eql at shape@sel{%
+ \expandafter\let\expandafter\eql at shape@eval
+ \csname eql at shape%
+ @\ifdefined\eql at flushleft left\else center\fi
+ @\eql at shape@mode\endcsname
+}
+\def\eql at adjust@shoveleft{%
+ \global\eql at shape@pos@\z@
+ \eql at srbgroup\eql at ifstar@tight
+ {\eql at adjust@shoveleft@[\eql at indent@]}%
+ {\eql at ifnextgobble@tight{!}%
+ {\eql at adjust@shoveleft@[-\eql at indent@]}%
+ {\eql at testopt@tight\eql at adjust@shoveleft@\z@}%
+ }%
+}
+\def\eql at adjust@shoveleft@[#1]{%
+ \eql at sregroup\setlength\dimen@{#1}\global\eql at shape@amount@\dimen@}
+\def\eql at adjust@shovecenter{%
+ \global\eql at shape@pos@\@ne\global\eql at shape@amount@\z@}
+\def\eql at adjust@shoveright{%
+ \global\eql at shape@pos@\tw@\global\eql at shape@amount@\z@}
+\def\eql at adjust@try#1{%
+ \setbox\eql at fieldbox@\hbox to\displaywidth{%
+ \unhbox\eql at fieldbox@\unkern\kern#1}%
+}
+\def\eql at adjust@print#1#2{%
+ \eql at restore@hfuzz
+ \hbox to\displaywidth{#1\unhbox\eql at fieldbox@\unkern#2}%
+}
+\def\eql at adjust@print at alignleft#1#2{%
+ \ifnum\eql at row@=\@ne
+ \global\eql at display@firstavail@#1%
+ \fi
+ \eql at adjust@print{\kern#1}{\kern#2}%
+}
+\def\eql at adjust@print at alignright#1#2{%
+ \ifnum\eql at row@=\@ne
+ \eql at display@firstavail@\displaywidth
+ \advance\eql at display@firstavail at -\eql at fieldwidth@
+ \global\advance\eql at display@firstavail at -#2%
+ \fi
+ \eql at adjust@print{\kern#1\hfil}{\unskip\kern#2}%
+}
+\def\eql at adjust@print at aligncenter#1#2{%
+ \ifnum\eql at row@=\@ne
+ \eql at display@firstavail@\displaywidth
+ \advance\eql at display@firstavail at -\eql at fieldwidth@
+ \advance\eql at display@firstavail@#1%
+ \advance\eql at display@firstavail at -#2%
+ \global\divide\eql at display@firstavail@\tw@
+ \fi
+ \eql at adjust@print{\kern#1\hfil}{\kern#2}%
+}
+\def\eql at adjust@init{%
+ \eql at save@hfuzz
+ \hfuzz\maxdimen
+ \eql at shape@sel
+}
+\def\eql at adjust@sel at tag{%
+ \csname eql at adjust%
+ @\ifdefined\eql at flushleft flushleft\else center\fi
+ @\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
+ @\ifcase\eql at shape@pos@ shoveleft\or shovecenter\or shoveright\fi
+ @tag\endcsname
+}
+\def\eql at adjust@sel at notag{%
+ \csname eql at adjust%
+ @\ifdefined\eql at flushleft flushleft\else center\fi
+ @\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
+ @\ifcase\eql at shape@pos@ shoveleft\or shovecenter\or shoveright\fi
+ @notag\endcsname
+}
+\def\eql at adjust@center at tagsright@shovecenter at notag{%
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at fieldwidth@
+ \ifdim\dimen@>\eql at tagmargin@
+ \eql at adjust@print at aligncenter\z@\eql at tagmargin@
+ \else
+ \eql at adjust@print at alignleft\z@\z@
+ \fi
+}
+\def\eql at adjust@center at tagsright@shovecenter at tag{%
+ \dimen@\displaywidth
+ \ifdim\eql at tagwidth@<\eql at tagmargin@
+ \advance\dimen at -\eql at tagmargin@
+ \else
+ \advance\dimen at -2\eql at tagwidth@
+ \advance\dimen@\eql at tagmargin@
+ \fi
+ \ifdim\eql at fieldwidth@<\dimen@
+ \eql at adjust@print at aligncenter\z@\eql at tagmargin@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \ifdim\eql at tagwidth@<\eql at tagmargin@
+ \eql at adjust@print at alignleft\z@\eql at tagwidth@
+ \else
+ \eql at adjust@print at alignright\z@\eql at tagwidth@
+ \fi
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@center at tagsright@shovecenter at notag
+ \eql at tagbox@print at right@raise
+ \fi
+ \fi
+}
+\def\eql at adjust@center at tagsleft@shovecenter at notag{%
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at tagmargin@
+ \ifdim\eql at fieldwidth@<\dimen@
+ \eql at adjust@print at aligncenter\eql at tagmargin@\z@
+ \else
+ \eql at adjust@print at alignright\z@\z@
+ \fi
+}
+\def\eql at adjust@center at tagsleft@shovecenter at tag{%
+ \dimen@\displaywidth
+ \ifdim\eql at tagwidth@<\eql at tagmargin@
+ \advance\dimen at -\eql at tagmargin@
+ \else
+ \advance\dimen at -2\eql at tagwidth@
+ \advance\dimen@\eql at tagmargin@
+ \fi
+ \ifdim\eql at fieldwidth@<\dimen@
+ \eql at tagbox@print at left
+ \eql at adjust@print at aligncenter\eql at tagmargin@\z@
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \ifdim\eql at tagwidth@<\eql at tagmargin@
+ \eql at adjust@print at alignright\eql at tagwidth@\z@
+ \else
+ \eql at adjust@print at alignleft\eql at tagwidth@\z@
+ \fi
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@center at tagsleft@shovecenter at notag
+ \fi
+ \fi
+ \eql at display@firstavail at set\z@
+}
+\def\eql at adjust@center at tagsright@shoveleft at notag{%
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at marginleft@
+ \advance\dimen at -\eql at shape@amount@
+ \ifdim\eql at fieldwidth@<\dimen@
+ \dimen@\eql at marginleft@
+ \advance\dimen@\eql at shape@amount@
+ \eql at adjust@print at alignleft\dimen@\z@
+ \else
+ \eql at adjust@print at alignright\z@\z@
+ \fi
+}
+\def\eql at adjust@center at tagsright@shoveleft at tag{%
+ \dimen@\eql at marginleft@
+ \advance\dimen@\eql at shape@amount@
+ \advance\dimen@\eql at tagwidth@
+ \eql at adjust@try\dimen@
+ \ifnum\badness<\eql at marginbadness@
+ \dimen@\eql at marginleft@
+ \advance\dimen@\eql at shape@amount@
+ \eql at adjust@print at alignleft\dimen@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \ifdim\eql at marginleft@>-\eql at shape@amount@
+ \eql at adjust@try\eql at tagwidth@
+ \fi
+ \ifnum\badness<\eql at maxbadness@
+ \eql at adjust@print at alignright\z@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@center at tagsright@shoveleft at notag
+ \eql at tagbox@print at right@raise
+ \fi
+ \fi
+}
+\def\eql at adjust@center at tagsleft@shoveright at notag{%
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at tagmargin@
+ \advance\dimen at -\eql at marginright@
+ \ifdim\eql at fieldwidth@<\dimen@
+ \eql at adjust@print at alignright\z@\eql at marginright@
+ \else
+ \eql at adjust@print at alignleft\z@\z@
+ \fi
+}
+\def\eql at adjust@center at tagsleft@shoveright at tag{%
+ \dimen@\eql at marginright@
+ \advance\dimen@\eql at tagwidth@
+ \eql at adjust@try\dimen@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignright\eql at tagwidth@\eql at marginright@
+ \else
+ \ifdim\eql at marginright@>\z@
+ \eql at adjust@try\eql at tagwidth@
+ \fi
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignleft\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@center at tagsleft@shoveright at notag
+ \fi
+ \fi
+ \eql at display@firstavail at set\z@
+}
+\def\eql at adjust@center at tagsright@shoveright at notag{%
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at tagmargin@
+ \advance\dimen at -\eql at marginright@
+ \ifdim\eql at fieldwidth@<\dimen@
+ \dimen@\eql at tagmargin@
+ \advance\dimen@\eql at marginright@
+ \eql at adjust@print at alignright\z@\dimen@
+ \else
+ \eql at adjust@print at alignleft\z@\z@
+ \fi
+}
+\def\eql at adjust@center at tagsright@shoveright at tag{%
+ \dimen@\eql at tagmargin@
+ \advance\dimen@\eql at marginright@
+ \ifdim\eql at tagwidth@<\dimen@
+ \eql at adjust@try\dimen@%
+ \ifnum\badness<\eql at marginbadness@
+ \eql at adjust@print at alignright\z@\dimen@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at adjust@print at alignleft\z@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@print at alignleft\z@\z@
+ \eql at tagbox@print at left@raise
+ \fi
+ \fi
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at adjust@print at alignright\z@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@center at tagsright@shoveright at notag
+ \eql at tagbox@print at right@raise
+ \fi
+ \fi
+}
+\def\eql at adjust@center at tagsleft@shoveleft at notag{%
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at tagmargin@
+ \advance\dimen at -\eql at marginleft@
+ \advance\dimen at -\eql at shape@amount@
+ \ifdim\eql at fieldwidth@<\dimen@
+ \dimen@\eql at tagmargin@
+ \advance\dimen@\eql at marginleft@
+ \advance\dimen@\eql at shape@amount@
+ \eql at adjust@print at alignleft\dimen@\z@
+ \else
+ \eql at adjust@print at alignright\z@\z@
+ \fi
+}
+\def\eql at adjust@center at tagsleft@shoveleft at tag{%
+ \dimen@\eql at tagmargin@
+ \advance\dimen@\eql at marginleft@
+ \advance\dimen@\eql at shape@amount@
+ \ifdim\eql at tagwidth@<\dimen@
+ \eql at adjust@try\dimen@%
+ \ifnum\badness<\eql at marginbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignleft\dimen@\z@
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignright\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@print at alignright\z@\z@
+ \fi
+ \fi
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignleft\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@center at tagsleft@shoveleft at notag
+ \fi
+ \fi
+ \eql at display@firstavail at set\z@
+}
+\def\eql at adjust@flushleft at shoveleft{%
+ \eql at marginleft@\eql at flushleftmargin@
+ \advance\eql at marginleft@\eql at shape@amount@
+ \ifdim\eql at marginleft@<\eql at flushleftmarginmin@
+ \eql at marginleft@\eql at flushleftmarginmin@
+ \fi
+ \ifdim\eql at marginleft@>\eql at flushleftmarginmax@
+ \eql at marginleft@\eql at flushleftmarginmax@
+ \fi
+}
+\def\eql at adjust@flushleft at shoveleft@notag{%
+ \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
+ \eql at adjust@try\eql at marginleft@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at adjust@print at alignleft\eql at marginleft@\z@
+ \else
+ \eql at adjust@print at alignleft\eql at flushleftmarginmin@\z@
+ \fi
+ \else
+ \eql at adjust@print at alignleft\eql at marginleft@\z@
+ \fi
+}
+\def\eql at adjust@flushleft at tagsright@shoveleft at notag{%
+ \eql at adjust@flushleft at shoveleft
+ \eql at adjust@flushleft at shoveleft@notag
+}
+\let\eql at adjust@flushleft at tagsleft@shoveleft at notag
+ \eql at adjust@flushleft at tagsright@shoveleft at notag
+\def\eql at adjust@flushleft at tagsright@shoveleft at tag{%
+ \eql at adjust@flushleft at shoveleft
+ \dimen@\eql at marginleft@
+ \advance\dimen@\eql at tagwidth@
+ \eql at adjust@try\dimen@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at adjust@print at alignleft\eql at marginleft@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
+ \dimen@\eql at flushleftmarginmin@
+ \advance\dimen@\eql at tagwidth@
+ \eql at adjust@try\dimen@
+ \fi
+ \ifnum\badness<\eql at maxbadness@
+ \eql at adjust@print at alignleft\eql at flushleftmarginmin@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@flushleft at shoveleft@notag
+ \eql at tagbox@print at right@raise
+ \fi
+ \fi
+}
+\def\eql at adjust@flushleft at tagsleft@shoveleft at tag{%
+ \eql at adjust@flushleft at shoveleft
+ \ifdim\eql at tagwidth@<\eql at flushleftmarginmin@
+ \eql at tagbox@print at left
+ \eql at adjust@flushleft at notag
+ \else
+ \ifdim\eql at tagwidth@<\eql at marginleft@
+ \eql at adjust@try\eql at marginleft@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignleft\eql at marginleft@\z@
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignleft\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@print at alignleft\eql at flushleftmarginmin@\z@
+ \fi
+ \fi
+ \else
+ \ifdim\eql at tagwidth@>\eql at flushleftmarginmax@
+ \eql at tagbox@print at left@raise
+ \eql at adjust@flushleft at shoveleft@notag
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignleft\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@flushleft at shoveleft@notag
+ \fi
+ \fi
+ \fi
+ \fi
+ \eql at display@firstavail at set\z@
+}
+\def\eql at adjust@flushleft at shoveright@notag{%
+ \eql at marginleft@\eql at flushleftmargin@
+ \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
+ \eql at adjust@try\eql at marginleft@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at adjust@print at alignright\eql at marginleft@\z@
+ \else
+ \eql at adjust@print at alignright\eql at flushleftmarginmin@\z@
+ \fi
+ \else
+ \eql at adjust@print at alignright\eql at marginleft@\z@
+ \fi
+}
+\let\eql at adjust@flushleft at tagsright@shoveright at notag
+ \eql at adjust@flushleft at shoveright@notag
+\let\eql at adjust@flushleft at tagsleft@shoveright at notag
+ \eql at adjust@flushleft at shoveright@notag
+\def\eql at adjust@flushleft at tagsright@shoveright at tag{%
+ \dimen@\eql at marginleft@
+ \advance\dimen@\eql at tagwidth@
+ \eql at adjust@try\dimen@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at adjust@print at alignright\eql at marginleft@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \ifdim\eql at flushleftmarginmin@<\eql at marginleft@
+ \dimen@\eql at flushleftmarginmin@
+ \advance\dimen@\eql at tagwidth@
+ \eql at adjust@try\dimen@
+ \fi
+ \ifnum\badness<\eql at maxbadness@
+ \eql at adjust@print at alignright\eql at flushleftmarginmin@\eql at tagwidth@
+ \eql at tagbox@print at right
+ \else
+ \eql at adjust@flushleft at shoveright@notag
+ \eql at tagbox@print at right@raise
+ \fi
+ \fi
+}
+\def\eql at adjust@flushleft at tagsleft@shoveright at tag{%
+ \ifdim\eql at tagwidth@<\eql at flushleftmarginmin@
+ \eql at tagbox@print at left
+ \eql at adjust@flushleft at shoveright@notag
+ \else
+ \ifdim\eql at tagwidth@<\eql at marginleft@
+ \eql at adjust@try\eql at marginleft@
+ \ifnum\badness<\eql at marginbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignright\eql at marginleft@\z@
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignright\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@print at alignright\eql at flushleftmarginmin@\z@
+ \fi
+ \fi
+ \else
+ \ifdim\eql at tagwidth@>\eql at flushleftmarginmax@
+ \eql at tagbox@print at left@raise
+ \eql at adjust@flushleft at shoveright@notag
+ \else
+ \eql at adjust@try\eql at tagwidth@
+ \ifnum\badness<\eql at maxbadness@
+ \eql at tagbox@print at left
+ \eql at adjust@print at alignright\eql at tagwidth@\z@
+ \else
+ \eql at tagbox@print at left@raise
+ \eql at adjust@flushleft at shoveright@notag
+ \fi
+ \fi
+ \fi
+ \fi
+ \eql at display@firstavail at set\z@
+}
+\def\eql at adjust@flushleft at shovecenter{%
+ \eql at error{shove center not implemented for left alignment}%
+}
+\let\eql at adjust@flushleft at tagsright@shovecenter at notag
+ \eql at adjust@flushleft at shovecenter
+\let\eql at adjust@flushleft at tagsright@shovecenter at tag
+ \eql at adjust@flushleft at shovecenter
+\let\eql at adjust@flushleft at tagsleft@shovecenter at notag
+ \eql at adjust@flushleft at shovecenter
+\let\eql at adjust@flushleft at tagsleft@shovecenter at tag
+ \eql at adjust@flushleft at shovecenter
+\def\eql at single@cr{%
+ \eql at error{Cannot use `\string\\' within display equation.
+ Please switch to equations environment}%
+}
+\def\eql at single@start{%
+ \eql at numbering@eval at mode
+ \let\eql at numbering@subeq at use\eql at false
+ \eql at stack@save at single
+ \eql at numbering@single at init
+ \ifdefined\eql at single@native
+ \let\eql at single@start at sel\eql at single@start at native
+ \let\eql at single@end at sel\eql at single@end at native
+ \let\raisetag\eql at raisetag@default
+ \else
+ \let\eql at single@start at sel\eql at single@start at adjust
+ \let\eql at single@end at sel\eql at single@end at adjust
+ \fi
+ \ifdefined\eql at single@crerror\else
+ \let\\\eql at single@cr
+ \fi
+ \eql at single@start at sel
+}
+\def\eql at single@end{%
+ \eql at punct@apply at block
+ \eql at hook@eqout
+ \eql at single@end at sel
+ \eql at stack@restore
+}
+\def\eql at single@start at native{%
+ \eql at hook@eqin
+}%
+\def\eql at single@end at native{%
+ \if at eqnsw
+ \ifdefined\eql at tagsleft
+ \leqno
+ \else
+ \eqno
+ \fi
+ \eql at compose@print
+ \fi
+ \ifnum\eql at displaybreak@pen@=\@MM\else
+ \postdisplaypenalty\eql at displaybreak@pen@
+ \fi
+}%
+\def\eql at single@start at adjust{%
+ \eql at totalrows@\@ne
+ \eql at row@\z@
+ \eql at display@init
+ \let\shoveleft\eql at adjust@shoveleft
+ \let\shovecenter\eql at adjust@shovecenter
+ \let\shoveright\eql at adjust@shoveright
+ \ifdefined\eql at flushleft\else
+ \eql at marginleft@\z@
+ \eql at marginright@\z@
+ \fi
+ \eql at adjust@init
+ \eql at shape@eval
+ \eql at row@\@ne
+ \setbox\eql at fieldbox@\hbox\bgroup
+ \eql at restore@hfuzz
+ \eql at strut@field
+ $\m at th\displaystyle%$
+ \eql at hook@eqin
+}
+\def\eql at single@end at adjust{%
+ $%$
+ \hfil
+ \kern\z@
+ \egroup
+ \eql at fieldwidth@\wd\eql at fieldbox@
+ \eql at line@height@\ht\eql at fieldbox@
+ \eql at line@depth@\dp\eql at fieldbox@
+ \eql at halign@init{}%
+ \halign{##\cr
+ \noalign{\eql at halign@before}%
+ \if at eqnsw
+ \eql at tagbox@make\eql at compose@print
+ \eql at adjust@sel at tag
+ \else
+ \eql at adjust@sel at notag
+ \fi
+ \cr
+ \noalign{\eql at halign@after}%
+ }%
+ \eql at row@\tw@
+ \eql at display@close
+}
+\newcount\eql at column@
+\newcount\eql at totalcolumns@
+\newdimen\eql at totalwidth@
+\newdimen\eql at line@width@
+\newdimen\eql at line@avail@
+\newdimen\eql at line@pos@
+\let\eql at fieldlength@tab\@empty
+\def\eql at fieldlength@save#1{%
+ \begingroup
+ \let\or\relax
+ \global\edef\eql at fieldlength@tab{%
+ \eql at fieldlength@tab
+ \ifnum#1=\@ne
+ \or
+ \else
+ ,%
+ \fi
+ \the\wd\eql at fieldbox@
+ }%
+ \endgroup
+}
+\def\eql at fieldlength@get#1{%
+ \ifcase\expandafter#1\eql at fieldlength@tab\fi
+}
+\let\eql at tagwidth@tab\@empty
+\def\eql at tagwidth@get#1{%
+ \ifcase\expandafter#1\eql at tagwidth@tab\fi
+}
+\def\eql at tagwidth@save{%
+ \begingroup
+ \let\or\relax
+ \global\edef\eql at tagwidth@tab{\eql at tagwidth@tab\or\the\eql at tagwidth@}%
+ \endgroup
+}
+\def\eql at tagwidth@savezero{%
+ \begingroup
+ \let\or\relax
+ \global\edef\eql at tagwidth@tab{\the\eql at tagwidth@\eql at tagwidth@tab}%
+ \endgroup
+}
+\def\eql at measure@init#1{%
+ \measuring at true
+ \eql at row@\z@
+ \let\displaybreak\eql at displaybreak@measure
+ \tabskip\z at skip
+ \everycr{%
+ \noalign{%
+ \global\advance\eql at row@\@ne
+ #1%
+ }%
+ }%
+}
+\let\eql at measure@restorecounters\@empty
+\def\eql at measure@savecounters{%
+ \begingroup
+ \def\@elt##1{%
+ \global\csname c@##1\endcsname\the\csname c@##1\endcsname}%
+ \global\edef\@gtempa{%
+ \cl@@ckpt
+ \let\noexpand\eql at measure@restorecounters\noexpand\@empty
+ }%
+ \endgroup
+ \let\eql at measure@restorecounters\@gtempa
+}
+\def\eql at print@init#1{%
+ \eql at row@\z@
+ \eql at halign@init{%
+ \global\eql at displaybreak@pen@\@MM
+ \global\advance\eql at row@\@ne
+ #1%
+ }%
+}
+\def\eql at print@overfull{%
+ \dimen@\eql at line@width@
+ \advance\dimen at -\hfuzz
+ \ifdim\dimen@>\displaywidth
+ \setbox\z@\hbox to\displaywidth{\hbox to\eql at line@width@{\hfil}}%
+ \wd\z@\z@
+ \ht\z@\eql at line@height@
+ \dp\z@\eql at line@depth@
+ \box\z@
+ \fi
+}
+\def\eql at tagbox@print at multi{%
+ \advance\eql at tagwidth@-\eql at tagfuzz@
+ \ifdefined\eql at tagsleft
+ \eql at display@firstavail at set\z@
+ \ifdim\eql at tagwidth@>\eql at line@avail@
+ \eql at tagbox@print at left@raise
+ \else
+ \eql at tagbox@print at left
+ \fi
+ \kern\displaywidth
+ \else
+ \kern\displaywidth
+ \advance\eql at tagwidth@\eql at line@width@
+ \ifdim\eql at tagwidth@>\displaywidth
+ \eql at tagbox@print at right@raise
+ \else
+ \eql at tagbox@print at right
+ \fi
+ \fi
+}
+\protected\def\eql at math@cr{%
+ \eql at ampprotecttwo\eql at teststaropt@tight
+ {\global\eql at displaybreak@pen@\@M\eql at math@cr@}\eql at math@cr@\z@}
+\def\eql at math@cr@[#1]{%
+ \eql at math@cr@@@
+ \cr
+ \noalign{%
+ \ifnum\eql at displaybreak@pen@=\@MM
+ \penalty\interdisplaylinepenalty
+ \else
+ \penalty\eql at displaybreak@pen@
+ \fi
+ \addtolength\eql at vspaceskip@{#1}%
+ \vskip\eql at vspaceskip@
+ \global\eql at vspaceskip@\z at skip
+ }%
+}
+\def\eql at let@cr#1{%
+ \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{%
+ \eql at math@cr@@@
+ \cr
+ \ifmeasuring@\else
+ \expandafter\eql at intertext@print{#1}%
+ \fi
+}
+\def\eql at intertext@print#1{%
+ \noalign{%
+ \eql at halign@after
+ \eql at setkeys{intertext}\eql at intertext@opt
+ \normalbaselines
+ \penalty\postdisplaypenalty
+ \addtolength\eql at vspaceskip@\belowdisplayskip
+ \vskip\eql at vspaceskip@
+ \global\eql at vspaceskip@\z at skip
+ \vbox{%
+ \@parboxrestore
+ \ifdim
+ \ifdim\@totalleftmargin=\z@\linewidth\else-\maxdimen\fi=\columnwidth
+ \else
+ \parshape\@ne
+ \@totalleftmargin\linewidth
+ \fi
+ \noindent
+ \ignorespaces
+ #1%
+ \par
+ }%
+ \penalty\predisplaypenalty
+ \vskip\abovedisplayskip
+ \eql at halign@prevdepth@\z@
+ \eql at halign@before
+ }
+}
+\newenvironment{eql at intertext}{%
+ \eql at testopt@tight\eql at intertext@{}%
+}{%
+ \aftergroup\eql at intertext@after
+ \ignorespacesafterend
+}
+\def\eql at intertext@env{intertext}
+\def\eql at intertext@[#1]{%
+ \global\def\eql at intertext@opt{#1}%
+ \ifx\@currenvir\eql at intertext@env
+ \expandafter\eql at scan@env\expandafter\eql at intertext@inject
+ \else
+ \expandafter\eql at intertext@process
+ \fi
+}
+\def\eql at intertext@inject{%
+ \global\edef\eql at intertext@after{%
+ \noexpand\eql at intertext@process{%
+ \ifx\eql at scan@body\eql at scan@body at dump
+ \eql at scan@body at dump
+ \else
+ \noexpand\scantokens{\eql at scan@body at dump}%
+ \fi
+ }%
+ }%
+}
+\let\eql at multi@mode at lines\eql at false
+\def\eql at multi@main{%
+ \eql at numbering@eval at mode
+ \eql at stack@save at multi
+ \ifdefined\eql at subequations@active
+ \let\eql at numbering@subeq at use\eql at false
+ \fi
+ \ifdefined\eql at numbering@subeq at use
+ \eql at numbering@subeq at init
+ \fi
+ \let\intertext\eql at intertext
+ \let\endintertext\endeql at intertext
+ \let\shoveleft\eql at adjust@shoveleft
+ \let\shovecenter\eql at adjust@shovecenter
+ \let\shoveright\eql at adjust@shoveright
+ \ifdefined\eql at multi@mode at lines
+ \expandafter\eql at lines@measure
+ \else
+ \ifdefined\eql at ampproof@active
+ \eql at ampproof
+ \fi
+ \expandafter\eql at align@measure
+ \fi
+ \ifx\eql at numbering@subeq at use\@ne
+ \eql at numbering@subeq at revert
+ \fi
+ \ifdefined\eql at multi@mode at lines\else
+ \ifdefined\eql at multi@linesfallback
+ \ifnum\eql at totalcolumns@=\@ne
+ \let\eql at multi@mode at lines\eql at true
+ \eql at shape@set{r}%
+ \fi
+ \fi
+ \fi
+ \ifdefined\eql at multi@mode at lines
+ \expandafter\eql at lines@print
+ \else
+ \expandafter\eql at align@print
+ \fi
+ \ifdefined\eql at numbering@subeq at use
+ \eql at numbering@subeq at close
+ \fi
+ \eql at stack@restore
+}
+\def\eql at mode@equation{%
+ \let\eql at equations@mode at single\eql at true
+ \let\eql at equations@end\eql at single@end
+}
+\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@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@end\@empty
+}
+\eql at mode@align
+\def\eql at lines@measure at line@begin{%
+ \eql at numbering@measure at line@begin
+ \eql at hook@linein
+}
+\def\eql at lines@measure at line@end{%
+ \eql at punct@apply at line
+ \eql at hook@lineout
+}
+\def\eql at lines@measure at field{%
+ \kern\wd\eql at fieldbox@
+}
+\def\eql at lines@measure at tag{%
+ \ifnum\eql at numbering@target@<\z@
+ \if at eqnsw
+ \eql at compose@null
+ \fi
+ \fi
+}
+\def\eql at lines@measure{%
+ \eql at measure@savecounters
+ \setbox\z@\vbox{%
+ \eql at numbering@measure at init
+ \eql at measure@init\eql at lines@measure at line@begin
+ \eql at let@cr\eql at lines@measure at line@end
+ \halign{%
+ \setbox\eql at fieldbox@\hbox{%
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ $%
+ }%
+ \eql at lines@measure at field
+ \eql at lines@measure at tag
+ \crcr
+ \noalign{%
+ \eql at hook@blockbefore
+ }%
+ \eql at hook@blockin
+ \eql at scan@body
+ \ifvmode\else
+ \eql at punct@apply at block
+ \eql at hook@blockout
+ \eql at lines@measure at line@end
+ \cr
+ \fi
+ \omit
+ \cr
+ \noalign{%
+ \eql at hook@blockafter
+ }%
+ }%
+ \global\advance\eql at row@-\tw@
+ \eql at numbering@measure at eval
+ }%
+ \eql at totalrows@\eql at row@
+ \setbox\z@\vbox{%
+ \unvbox\z@
+ \unpenalty
+ \global\setbox\@ne\lastbox
+ }%
+ \eql at totalwidth@\wd\@ne
+ \ifdefined\eql at numbering@subeq at use
+ \eql at numbering@subeq at test
+ \fi
+ \eql at measure@restorecounters
+}
+\def\eql at lines@print at line@begin{%
+ \eql at numbering@print at line@begin
+ \eql at hook@linein
+}
+\def\eql at lines@print at line@end{%
+ \eql at punct@apply at line
+ \eql at hook@lineout
+}
+\def\eql at lines@print at line@adjust{%
+ \eql at numbering@print at line@eval
+ \eql at fieldwidth@\wd\eql at fieldbox@
+ \eql at line@height@\ht\eql at fieldbox@
+ \eql at line@depth@\dp\eql at fieldbox@
+ \if at eqnsw
+ \eql at tagbox@make\eql at compose@print
+ \eql at adjust@sel at tag
+ \else
+ \eql at adjust@sel at notag
+ \fi
+}
+\def\eql at lines@print{%
+ \eql at display@init
+ \ifdefined\eql at flushleft
+ \else
+ \ifdefined\eql at paddingmax
+ \eql at marginleft@\z@
+ \eql at marginright@\z@
+ \else
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at totalwidth@
+ \advance\dimen at -\eql at tagmargin@
+ \divide\dimen@\tw@
+ \eql at marginleft@\dimen@
+ \advance\eql at marginleft@-\eql at paddingleft@
+ \ifdim\eql at marginleft@<\z@
+ \eql at marginleft@\z@
+ \fi
+ \eql at marginright@\dimen@
+ \advance\eql at marginright@-\eql at paddingright@
+ \ifdim\eql at marginright@<\z@
+ \eql at marginright@\z@
+ \fi
+ \fi
+ \fi
+ \eql at adjust@init
+ \eql at numbering@print at init
+ \eql at print@init\eql at lines@print at line@begin
+ \eql at let@cr\eql at lines@print at line@end
+ \tabskip\z at skip
+ \halign{%
+ \eql at shape@eval
+ \setbox\eql at fieldbox@\hbox{%
+ \eql at restore@hfuzz
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ $%
+ \hfil
+ \kern\z@
+ }%
+ \eql at lines@print at line@adjust
+ \crcr
+ \noalign{%
+ \eql at halign@before
+ \eql at numbering@print at block@begin
+ \eql at hook@blockbefore
+ }%
+ \eql at hook@blockin
+ \eql at scan@body
+ \ifvmode\else
+ \eql at punct@apply at block
+ \eql at hook@blockout
+ \eql at lines@print at line@end
+ \cr
+ \fi
+ \noalign{%
+ \eql at hook@blockafter
+ \eql at halign@after
+ }%
+ }%
+ \eql at display@close
+}
+\let\eql at align@margins\eql at true
+\newcount\eql at align@inter@
+\let\eql at colwidth@tab\@empty
+\def\eql at align@colwidth at get#1{%
+ \ifcase\expandafter#1\eql at colwidth@tab\else\z@\fi
+}
+\def\eql at align@colwidth at save{%
+ \begingroup
+ \let\or\relax
+ \global\edef\eql at colwidth@tab{\or\the\wd\thr@@\eql at colwidth@tab}%
+ \endgroup
+}
+\def\eql at align@add at amp#1{\if m#1&\omit\expandafter\eql at align@add at amp\fi}
+\def\eql at align@completerow#1{%
+ \begingroup
+ \count@#1%
+ \advance\count at -\eql at column@
+\advance\count@\@ne
+ \edef\eql at tmp{\endgroup
+ \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@
+ }%
+ \eql at align@print at field
+}
+\def\eql at align@print at field{%
+ \dimen@\eql at align@colwidth at get\eql at column@\relax
+ \ifdim\wd\eql at fieldbox@>\z@
+ \ifdim\eql at line@width@=\z@
+ \eql at line@avail@\eql at line@pos@
+ \ifodd\eql at column@
+ \advance\eql at line@avail@\dimen@
+ \advance\eql at line@avail at -\wd\eql at fieldbox@
+ \fi
+ \global\eql at line@avail@\eql at line@avail@
+ \fi
+ \eql at line@width@\eql at line@pos@
+ \ifodd\eql at column@
+ \advance\eql at line@width@\dimen@
+ \else
+ \advance\eql at line@width@\wd\eql at fieldbox@
+ \fi
+ \global\eql at line@width@\eql at line@width@
+ \fi
+ \advance\eql at line@pos@\dimen@
+ \ifodd\eql at column@\else
+ \advance\eql at line@pos@\eql at colsep@
+ \fi
+ \global\eql at line@pos@\eql at line@pos@
+ \ifdim\ht\eql at fieldbox@>\eql at line@height@
+ \global\eql at line@height@\ht\eql at fieldbox@
+ \fi
+ \ifdim\dp\eql at fieldbox@>\eql at line@depth@
+ \global\eql at line@depth@\dp\eql at fieldbox@
+ \fi
+ \dimen@\eql at align@colwidth at get\eql at column@\relax
+ \ifodd\eql at column@
+ \kern\dimen@
+ \else
+ \advance\dimen at -\wd\eql at fieldbox@
+ \box\eql at fieldbox@
+ \kern\dimen@
+ \fi
+}
+\def\eql at align@print at line@begin{%
+ \global\eql at column@\z@
+ \global\eql at line@pos@\eql at marginleft@
+ \global\eql at line@width@\z@
+ \global\eql at line@avail@\eql at totalwidth@
+ \global\eql at line@height@\z@
+ \global\eql at line@depth@\z@
+ \eql at numbering@print at line@begin
+ \eql at hook@linein
+}
+\def\eql at align@print at line@end{%
+ \eql at punct@apply at line
+ \eql at hook@lineout
+ \ifodd\eql at column@
+ \expandafter\eql at align@print at trailright
+ \fi
+ \eql at align@completerow\eql at totalcolumns@
+ \eql at align@print at line
+}
+\def\eql at align@print at line{%
+ \dimen@\eql at totalwidth@
+ \advance\dimen@\eql at colsep@
+ \kern-\dimen@
+ \eql at display@firstavail at set\eql at line@avail@
+ \eql at print@overfull
+ \eql at numbering@print at line@eval
+ \if at eqnsw
+ \eql at tagbox@make\eql at compose@print
+ \eql at tagbox@print at multi
+ \else
+ \kern\displaywidth
+ \fi
+}
+\def\eql at align@print{%
+ \eql at align@adjust
+ \eql at display@init
+ \eql at numbering@print at init
+ \eql at print@init\eql at align@print at line@begin
+ \eql at let@cr\eql at align@print at line@end
+ \tabskip\eql at marginleft@
+ \halign{%
+ \span\eql at align@preamble\eql at colsep@\eql at align@print at field\eql at strut@field
+ \crcr
+ \noalign{%
+ \eql at halign@before
+ \eql at numbering@print at block@begin
+ \eql at hook@blockbefore
+ }%
+ \eql at hook@blockin
+ \eql at scan@body
+ \ifvmode\else
+ \eql at punct@apply at block
+ \eql at hook@blockout
+ \eql at align@print at line@end
+ \cr
+ \fi
+ \noalign{%
+ \eql at hook@blockafter
+ \eql at halign@after
+ }%
+ }%
+ \eql at display@close
+}
+\def\eql at align@measure at line@begin{%
+ \global\eql at column@\z@
+ \eql at numbering@measure at line@begin
+ \eql at hook@linein
+}
+\def\eql at align@measure at field{%
+ \eql at fieldlength@save\eql at column@
+ \kern\wd\eql at fieldbox@
+}
+\def\eql at align@measure at line@end{%
+ \eql at punct@apply at line
+ \eql at hook@lineout
+ &\omit
+ \ifnum\eql at column@>\eql at totalcolumns@
+ \global\eql at totalcolumns@\eql at column@
+ \fi
+ \eql at align@measure at tag
+}
+\def\eql at align@measure at tag{%
+ \ifnum\eql at numbering@target@<\z@
+ \if at eqnsw
+ \eql at tagbox@make\eql at compose@measure
+ \else
+ \eql at tagwidth@\z@
+ \fi
+ \eql at tagwidth@save
+ \fi
+}
+\def\eql at align@measure{%
+ \eql at totalcolumns@\z@
+ \let\eql at tagwidth@tab\@empty
+ \let\eql at fieldlength@tab\@empty
+ \eql at measure@savecounters
+ \setbox\z@\vbox{%
+ \eql at numbering@measure at init
+ \eql at measure@init\eql at align@measure at line@begin
+ \eql at let@cr\eql at align@measure at line@end
+ \halign{%
+ \span\eql at align@preamble\z at skip\eql at align@measure at field\relax
+ \crcr
+ \noalign{%
+ \eql at hook@blockbefore
+ }%
+ \eql at hook@blockin
+ \eql at scan@body
+ \ifvmode\else
+ \eql at punct@apply at block
+ \eql at hook@blockout
+ \eql at align@measure at line@end
+ \cr
+ \fi
+ \noalign{%
+ \eql at hook@blockafter
+ }%
+ \eql at align@completerow\eql at totalcolumns@
+ \cr
+ }%
+ \global\advance\eql at row@-\tw@
+ \eql at numbering@measure at eval
+ \ifnum\eql at numbering@target@>\z@
+ \eql at tagbox@make\eql at compose@measure
+ \eql at tagwidth@savezero
+ \fi
+ }%
+ \eql at totalrows@\eql at row@
+ \ifdefined\eql at numbering@subeq at use
+ \eql at numbering@subeq at test
+ \fi
+ \eql at measure@restorecounters
+ \setbox\z@\vbox{%
+ \unvbox\z@
+ \unpenalty
+ \global\setbox\@ne\lastbox
+ }%
+ \eql at totalwidth@\wd\@ne
+ \let\eql at colwidth@tab\@empty
+ \loop
+ \setbox\@ne\hbox{%
+ \unhbox\@ne
+ \unskip
+ \global\setbox\thr@@\lastbox
+ }%
+ \ifhbox\thr@@
+ \eql at align@colwidth at save
+ \repeat
+}
+\def\eql at align@adjust{%
+ \ifodd\eql at totalcolumns@
+ \advance\eql at totalcolumns@\@ne
+ \fi
+ \ifnum\eql at totalcolumns@<\thr@@
+ \let\eql at align@margins\eql at true
+ \fi
+ \eql at align@inter@\eql at totalcolumns@
+ \divide\eql at align@inter@\tw@
+ \advance\eql at align@inter@\m at ne
+ \eql at colsep@\displaywidth
+ \advance\eql at colsep@-\eql at totalwidth@
+ \ifdefined\eql at flushleft
+ \advance\eql at colsep@-\eql at flushleftmargin@
+ \fi
+ \count@\eql at align@inter@
+ \ifdefined\eql at align@margins
+ \ifdefined\eql at flushleft
+ \advance\count@\@ne
+ \else
+ \advance\count@\tw@
+ \fi
+ \fi
+ \divide\eql at colsep@\count@
+ \ifdim\eql at colsep@<\eql at colsepmin@
+ \eql at colsep@\eql at colsepmin@
+ \else
+ \ifdim\eql at colsep@>\eql at colsepmax@
+ \eql at colsep@\eql at colsepmax@
+ \fi
+ \fi
+ \ifdefined\eql at flushleft
+ \ifdim\eql at colsep@=\eql at colsepmin@
+ \eql at marginleft@\displaywidth
+ \advance\eql at marginleft@-\eql at totalwidth@
+ \advance\eql at marginleft@-\eql at align@inter@\eql at colsep@
+ \ifdim\eql at marginleft@>\eql at flushleftmargin@
+ \eql at marginleft@\eql at flushleftmargin@
+ \else
+ \ifdim\eql at marginleft@<\eql at flushleftmarginmin@
+ \eql at marginleft@\eql at flushleftmarginmin@
+ \fi
+ \fi
+ \else
+ \eql at marginleft@\eql at flushleftmargin@
+ \fi
+ \else
+ \ifdefined\eql at align@margins
+ \eql at marginleft@\displaywidth
+ \advance\eql at marginleft@-\eql at totalwidth@
+ \advance\eql at marginleft@-\eql at align@inter@\eql at colsep@
+ \ifdim\eql at marginleft@<\eql at tagmargin@
+ \ifdim\ifdefined\eql at tagsleft\eql at marginleft@\else-\p@\fi<\z@
+ \eql at marginleft@\z@
+ \fi
+ \else
+ \advance\eql at marginleft@-\eql at tagmargin@
+ \divide\eql at marginleft@\tw@
+ \fi
+ \else
+ \eql at marginleft@\z@
+ \fi
+ \fi
+ \ifdefined\eql at tagsleft
+ \let\eql at align@adjust at test\eql at align@adjust at test@tagleft
+ \else
+ \let\eql at align@adjust at test\eql at align@adjust at test@tagright
+ \fi
+ \loop\ifnum\eql at row@>\z@
+ \ifnum\eql at numbering@target@<\z@
+ \eql at tagwidth@\eql at tagwidth@get\eql at row@\relax
+ \else
+ \ifnum\eql at numbering@target@=\eql at row@
+ \eql at tagwidth@\eql at tagwidth@get\z@\relax
+ \fi
+ \fi
+ \ifdim\eql at tagwidth@>\z@
+ \eql at align@adjust at width
+ \eql at align@adjust at test
+ \fi
+ \advance\eql at row@\m at ne
+ \repeat
+ \advance\eql at totalwidth@\eql at align@inter@\eql at colsep@
+ \advance\eql at totalwidth@\eql at marginleft@
+}
+\def\eql at align@adjust at width{%
+ \eql at line@pos@\z@
+ \eql at column@\z@
+ \eql at line@avail@\eql at totalwidth@
+ \@tempcnta\eql at totalcolumns@
+ \eql at line@width@\z@
+ \@tempcntb\z@
+ \edef\@tempb{\eql at fieldlength@get\eql at row@}%
+ \@for\@tempa:=\@tempb\do
+ \eql at align@adjust at width@col
+ \advance\@tempcnta\m at ne
+ \divide\@tempcnta\tw@
+ \advance\@tempcntb\m at ne
+ \divide\@tempcntb\tw@
+}
+\def\eql at align@adjust at width@col{%
+ \advance\eql at column@\@ne
+ \@tempdima\@tempa\relax
+ \dimen@\eql at align@colwidth at get\eql at column@\relax
+ \ifdim\@tempdima>\z@
+ \ifdim\eql at line@width@=\z@
+ \eql at line@avail@\eql at line@pos@
+ \@tempcnta\eql at column@
+ \ifodd\eql at column@
+ \advance\eql at line@avail@\dimen@
+ \advance\eql at line@avail at -\@tempdima
+ \fi
+ \fi
+ \eql at line@width@\eql at line@pos@
+ \@tempcntb\eql at column@
+ \ifodd\eql at column@
+ \advance\eql at line@width@\dimen@
+ \else
+ \advance\eql at line@width@\@tempdima
+ \fi
+ \fi
+ \advance\eql at line@pos@\dimen@
+}
+
+\def\eql at align@adjust at test@tagright{%
+ \@tempdima\eql at line@width@
+ \advance\@tempdima\eql at tagwidth@
+ \dimen@\eql at marginleft@
+ \advance\dimen@\@tempdima
+ \advance\dimen@\@tempcntb\eql at colsep@
+ \ifdim\dimen@>\displaywidth
+ \eql at align@adjust at modify@tagright
+ \fi
+}
+\def\eql at align@adjust at modify@tagright{%
+ \dimen@\eql at colsepmin@
+ \multiply\dimen@\@tempcntb
+ \advance\dimen@\@tempdima
+ \ifdefined\eql at flushleft
+ \advance\dimen@\eql at flushleftmarginmin@
+ \fi
+ \ifdim\dimen@>\displaywidth\else
+ \ifnum\@tempcntb>\z@
+ \dimen@\displaywidth
+ \advance\dimen at -\@tempdima
+ \count@\@tempcntb
+ \ifdefined\eql at flushleft
+ \advance\dimen at -\eql at marginleft@
+ \else
+ \ifdefined\eql at align@margins
+ \advance\count@\@ne
+ \fi
+ \fi
+ \divide\dimen@\count@
+ \ifdim\dimen@<\eql at colsep@
+ \ifdim\dimen@<\eql at colsepmin@
+ \dimen@\eql at colsepmin@
+ \fi
+ \eql at colsep@\dimen@
+ \fi
+ \fi
+ \dimen@\displaywidth
+ \advance\dimen at -\@tempdima
+ \advance\dimen at -\@tempcntb\eql at colsep@
+ \ifdim\dimen@<\eql at marginleft@
+ \eql at marginleft@\dimen@
+ \fi
+ \fi
+}
+\def\eql at align@adjust at test@tagleft{%
+ \count@\eql at align@inter@
+ \advance\count at -\@tempcnta
+ \@tempdima-\eql at line@avail@
+ \advance\@tempdima\eql at tagwidth@
+ \dimen@\eql at marginleft@
+ \advance\dimen@\@tempcnta\eql at colsep@
+ \ifdim\dimen@<\@tempdima
+ \eql at align@adjust at modify@tagleft
+ \fi
+}
+\def\eql at align@adjust at modify@tagleft{%
+ \ifdefined\eql at flushleft
+ \dimen@\eql at flushleftmarginmax@
+ \else
+ \dimen@\displaywidth
+ \fi
+ \ifdim\dimen@>\eql at tagwidth@
+ \dimen@\eql at colsepmin@
+ \multiply\dimen@\count@
+ \advance\dimen@\eql at totalwidth@
+ \advance\dimen@\@tempdima
+ \ifdim\dimen@>\displaywidth\else
+ \ifnum\count@>0
+ \dimen@\displaywidth
+ \advance\dimen at -\eql at totalwidth@
+ \advance\dimen at -\@tempdima
+ \ifdefined\eql at align@margins
+ \advance\count@\@ne
+ \fi
+ \divide\dimen@\count@
+ \ifdim\dimen@<\eql at colsep@
+ \ifdim\dimen@<\eql at colsepmin@
+ \dimen@\eql at colsepmin@
+ \fi
+ \advance\dimen at -\eql at colsep@
+ \advance\eql at marginleft@-\eql at align@inter@\dimen@
+ \advance\eql at colsep@\dimen@
+ \fi
+ \fi
+ \dimen at -\@tempcnta\eql at colsep@
+ \advance\dimen@\@tempdima
+ \ifdim\dimen@>\eql at marginleft@
+ \eql at marginleft@\dimen@
+ \fi
+ \fi
+ \fi
+}
+\newtoks\eql at scan@reg@
+\def\eql at scan@body at dump{\the\eql at scan@reg@}
+\def\eql at scan@body at rescan{%
+ \expandafter\scantokens\expandafter{\the\eql at scan@reg@}}
+\let\eql at scan@body\eql at scan@body at dump
+\def\eql at scan@addto#1{\eql at scan@reg@\expandafter{\the\eql at scan@reg@#1}}
+\def\eql at scan@env#1{%
+ \def\eql at scan@end{#1\expandafter\end\expandafter{\@currenvir}}%
+ \eql at scan@reg@{}\def\eql at scan@stack{b}%
+ \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
+ \eql at scan@iterate
+}
+\def\eql at scan@env at count#1\begin#2{%
+ \ifx\end#2\else b\expandafter\eql at scan@env at count\fi
+}
+\def\eql at scan@env at iterate#1\end#2{%
+ \edef\eql at scan@stack{%
+ \eql at scan@env at count#1\begin\end\expandafter\@gobble\eql at scan@stack}%
+ \ifx\@empty\eql at scan@stack
+ \@checkend{#2}%
+ \eql at scan@addto{#1}%
+ \expandafter\let\eql at scan@iterate\eql at scan@env at org
+ \expandafter\eql at scan@end
+ \else
+ \eql at scan@addto{#1\end{#2}}%
+ \expandafter\eql at scan@iterate
+ \fi
+}
+\def\eql at scan@env at cancel{%
+ \@namedef{end\@currenvir}{\ignorespacesafterend}%
+}
+\def\eql at scan@sqr#1{%
+ \def\eql at scan@end{#1\]}%
+ \eql at scan@reg@{}\def\eql at scan@stack{b}%
+ \let\eql at scan@sqr at org\[%\]
+ \let\[\eql at scan@sqr at iterate%\]
+ \[%\]
+}
+\def\eql at scan@sqr at count#1\[#2{%\]
+ \ifx\]#2\else b\expandafter\eql at scan@sqr at count\fi
+}
+\def\eql at scan@sqr at iterate#1\]{%
+ \edef\eql at scan@stack{%
+ \eql at scan@sqr at count#1\[\]\expandafter\@gobble\eql at scan@stack}%
+ \ifx\@empty\eql at scan@stack
+ \let\[\eql at scan@sqr at org%\]
+ \eql at scan@addto{#1}%
+ \expandafter\eql at scan@end
+ \else
+ \eql at scan@addto{#1\]}%
+ \expandafter\[%\]
+ \fi
+}
+\def\eql at scan@sqrang at cancel{\ignorespaces}
+\def\eql at scan@ang#1{%
+ \def\eql at scan@end{#1\>}%
+ \eql at scan@reg@{}\def\eql at scan@stack{b}%
+ \let\eql at scan@ang at org\<%\>
+ \let\<\eql at scan@ang at iterate%\>
+ \<%\>
+}
+\def\eql at scan@ang at count#1\<#2{%\>
+ \ifx\>#2\else b\expandafter\eql at scan@ang at count\fi
+}
+\def\eql at scan@ang at iterate#1\>{%
+ \edef\eql at scan@stack{%
+ \eql at scan@ang at count#1\<\>\expandafter\@gobble\eql at scan@stack}%
+ \ifx\@empty\eql at scan@stack
+ \let\<\eql at scan@ang at org%\>
+ \eql at scan@addto{#1}%
+ \expandafter\eql at scan@end
+ \else
+ \eql at scan@addto{#1\>}%
+ \expandafter\<%\>
+ \fi
+}
+\def\eql at equations@testall{\eql at equations@testtilde}
+\def\eql at equations@testtilde#1{%
+ \eql at ifnextgobble@tight~%
+ {\eqnaddopt{lines}\eql at equations@testopt{#1}}%
+ {\eql at equations@testopt{#1}}}
+\def\eql at equations@testopt#1{%
+ \eql at ifnextchar@tight[%]
+ {\eql at equations@addopt{\eql at equations@testexcl{#1}}}%
+ {\eql at equations@testexcl{#1}}}
+\def\eql at equations@addopt#1[#2]{\eqnaddopt{#2}#1}
+\def\eql at equations@testexcl#1{%
+ \eql at ifnextgobble@tight!%
+ {\eqnaddopt{donumber}\eql at equations@testat{#1}}%
+ {\eql at equations@teststar{#1}}}
+\def\eql at equations@teststar#1{%
+ \eql at ifstar@tight%
+ {\eqnaddopt{nonumber}\eql at equations@testat{#1}}%
+ {\eql at equations@testat{#1}}}
+\def\eql at equations@testat#1{%
+ \eql at ifat@tight
+ {\eql at equations@addlabel{#1}}%
+ {#1}}
+\def\eql at equations@addlabel#1#2{\eqnaddopt{label={#2}}#1}
+\def\eql at equations@processopt{%
+ \let\eql at blocklabel\@undefined
+ \let\eql at blocktag\@undefined
+ \let\eql at display@doatend\@empty
+ \eql at abovespace@\z at skip
+ \eql at belowspace@\z at skip
+ \eql at displaybreak@prepen@\@MM
+ \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
+}
+\newenvironment{equations}{%
+ \ifmmode
+ \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
+ \expandafter\eql at single@start
+ \else
+ \expandafter\eql at scan@env\expandafter\eql at multi@main
+ \fi
+}
+\def\eql at equations@sqr at opt{equation,nonumber}
+\protected\def\eql at equations@sqr at open{%
+ \ifmmode
+ \eql at error@mathmode{\string\[...\string\]}%
+ \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
+ $$%$$
+ \expandafter\eql at ampprotect\expandafter\eql at equations@testall
+ \expandafter\eql at equations@sqr at start
+ \fi
+}
+\def\eql at equations@ang at opt{align,nonumber}
+\protected\def\eql at equations@ang at open{%
+ \ifmmode
+ \eql at error@mathmode{\string\<...\string\>}%
+ \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
+ $$%$$
+ \expandafter\eql at ampprotect\expandafter\eql at equations@testall
+ \expandafter\eql at equations@ang at start
+ \fi
+}
+\def\eql at equations@sqr at start{%
+ \eql at equations@processopt
+ \ifdefined\eql at equations@mode at single
+ \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
+ \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
+ $$%$$
+ \ignorespaces
+}
+\protected\def\eql at equations@ang at close{%
+ \eql at equations@end
+ $$%$$
+ \ignorespaces
+}
+\DeclareRobustCommand{\eql at eqref}[1]{\textup{\tagform@{\ref{#1}}}}
+\DeclareRobustCommand{\eql at numberwithin}[3][\arabic]{%
+ \@ifundefined{c@#2}{\@nocounterr{#2}}{%
+ \@ifundefined{c@#3}{\@nocounterr{#3}}{%
+ \ifdefined\HyOrg at addtoreset
+ \HyOrg at addtoreset{#2}{#3}%
+ \else
+ \@addtoreset{#2}{#3}%
+ \fi
+ \expandafter\xdef\csname the#2\endcsname{%
+ \expandafter\noexpand\csname the#3\endcsname.\noexpand#1{#2}}%
+ \ifdefined\theHequation
+ \expandafter\xdef\csname theH#2\endcsname{%
+ \expandafter\noexpand
+ \csname the\@ifundefined{theH#3}{}H#3\endcsname.%
+ \noexpand\arabic{#2}}%
+ \fi
+ }%
+ }%
+}
+\DeclareRobustCommand{\eql at allowdisplaybreaks}[1][4]{%
+ \eqnlinesset{allowbreaks=#1}%
+}
+\newcommand{\eql at notag}{\nonumber}
+\newcommand{\eql at thetag}{\leavevmode\tagform@}
+\RequirePackage{keyval}
+\def\eql at decide@select#1#2#3#4{%
+ \def\@tempa{#3}%
+ \let\@tempd\@undefined
+ \@for\@tempc:=#4\do{%
+ \ifdefined\@tempd\else
+ \edef\@tempb{\noexpand\@tempb:=\expandafter\@firstoftwo\@tempc}%
+ \expandafter\@for\@tempb\do{%
+ \ifx\@tempa\@tempb
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter\@tempd
+ \expandafter\expandafter\expandafter{%
+ \expandafter\@secondoftwo\@tempc}%
+ \fi
+ }%
+ \fi
+ }%
+ \ifdefined\@tempd
+ \@tempd
+ \else
+ \eql at error{undefined value `#3' for option `#2' of `#1'}%
+ \fi
+}
+\def\eql at decide@if#1#2#3#4#5{%
+ \eql at decide@select{#1}{#2}{#3}{%
+ {{on,true,yes,enabled,1}{#4}},%
+ {{off,false,no,disabled,0}{#5}}}}
+\def\eql at decide@bool#1#2#3#4{%
+ \eql at decide@if{#1}{#2}{#3}{\let#4\eql at true}{\let#4\eql at false}}
+\def\eql at decide@abovebelow#1#2#3#4#5{%
+ \eql at decide@select{#1}{#2}{#3}{%
+ {,abovebelow,both,tb}{#4#5},%
+ {above,top,t}{#4},%
+ {below,bottom,b}{#5}}%
+ }
+\def\eql at define@key#1#2{%
+ \eql at ifnextchar@loose[%]
+ {\eql at definekey@opt{#1}{#2}}%
+ {\eql at definekey@noopt{#1}{#2}}%
+}
+\def\eql at definekey@noopt#1#2#3{\eql at definekey@for{#1}{#2}{{#3}}}
+\def\eql at definekey@opt#1#2[#3]#4{\eql at definekey@for{#1}{#2}{[#3]{#4}}}
+\def\eql at definekey@for#1#2#3{%
+ \def\eql at for@fn##1##2##3{\define at key{eql@##3}{##2}#3}%
+ \edef\eql at for@vara{\noexpand\eql at for@vara:=#1}%
+ \expandafter\@for\eql at for@vara\do{%
+ \edef\eql at for@varb{\noexpand\eql at for@varb:=#2}%
+ \expandafter\@for\eql at for@varb\do{%
+ \edef\eql at for@call##1{%
+ \noexpand\eql at for@fn{##1}{\eql at for@varb}{\eql at for@vara}}%
+ \eql at for@call{##1}%
+ }%
+ }%
+}
+\def\eql at setkeys#1#2{
+ \def\eql at tmp{\setkeys{eql@#1}}%
+ \expandafter\eql at tmp\expandafter{#2}%
+}
+\let\eql at nextopt\@empty
+\def\eql at nextopt@process#1{%
+ \eql at setkeys{#1}\eql at nextopt
+ \global\let\eql at nextopt\@empty
+}
+\newcommand{\eqnaddopt}[1]{%
+ \expandafter\def\expandafter\eql at nextopt\expandafter{\eql at nextopt,#1}}
+\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,@}[]{%
+ \eql at mode@aligned}
+\eql at define@key{equationsbox}{top,t}[]{\let\eql at box@box\vtop}
+\eql at define@key{equationsbox}{center,c}[]{\let\eql at box@box\vcenter}
+\eql at define@key{equationsbox}{bottom,b}[]{\let\eql at box@box\vbox}
+\eql at define@key{equationsbox}{colsep}{\def\eql at box@colsep{#1}}
+\eql at define@key{equations}{equation,eq,single,1}[]{\eql at mode@equation}
+\eql at define@key{equations}{gathered,gather,ga,lines,lined,ln,\string~}[]{%
+ \eql at mode@lines}
+\eql at define@key{equations}{aligned,align,al,columns,col,@}[]{%
+ \eql at mode@align}
+\eql at define@key{equations}{native}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at single@native%
+ \ifdefined\eql at single@native\let\eql at flushleft\eql at false\fi}
+\eql at define@key{setup}{native}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at single@native}
+\eql at define@key{setup}{sqropt}[]{%
+ \def\eql at equations@sqr at opt{equation,#1}}
+\eql at define@key{setup}{angopt}[]{%
+ \def\eql at equations@ang at opt{align,#1}}
+\def\eql at keycat{equations,equationsbox,setup}
+\eql at define@key\eql at keycat{spread}[\jot]{\def\eql at spread{#1}}
+\eql at define@key\eql at keycat{strut}[true]{\eql at decide@if{#3}{#2}{#1}%
+ {\let\eql at strut@field\eql at strut}{\let\eql at strut@field\relax}}
+\eql at define@key\eql at keycat{struttag}[true]{\eql at decide@if{#3}{#2}{#1}%
+ {\let\eql at strut@tag\eql at strut}{\let\eql at strut@tag\relax}}
+\eql at define@key{equations}{displaybreak}[4]{\eql at displaybreak@pre{#1}}
+\def\eql at keycat{equations,setup}
+\eql at define@key\eql at keycat{allowbreaks,allowdisplaybreaks}[4]{%
+ \interdisplaylinepenalty\eql at getdsp@pen{#1}\relax}
+\eql at define@key\eql at keycat{displayheight}[\ht\eql at strutbox@]{%
+ \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{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}[]{%
+ \eql at decide@abovebelow{#3}{#2}{#1}%
+ {\eql at display@atend{%
+ \abovedisplayskip\abovedisplayshortskip}}%
+ {\eql at display@atend{%
+ \belowdisplayskip\belowdisplayshortskip}}}
+\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}}}
+\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@}}}
+\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}}
+\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}}
+\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}}
+\eql at define@key{equations}{abovespace}{%
+ \addtolength\eql at abovespace@{#1}}
+\eql at define@key{equations}{belowspace}{%
+ \addtolength\eql at belowspace@{#1}}
+\eql at define@key{intertext}{skip}{%
+ \setlength\abovedisplayskip{#1}\belowdisplayskip\abovedisplayskip}
+\eql at define@key{intertext}{aboveskip}{%
+ \setlength\belowdisplayskip{#1}}
+\eql at define@key{intertext}{belowskip}{%
+ \setlength\abovedisplayskip{#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}}
+\eql at define@key{intertext}{short}[]{%
+ \eql at decide@abovebelow{#3}{#2}{#1}%
+ {\belowdisplayskip\belowdisplayshortskip}%
+ {\abovedisplayskip\abovedisplayshortskip}}
+\eql at define@key{intertext}{long}[]{%
+ \eql at decide@abovebelow{#3}{#2}{#1}%
+ {\belowdisplayshortskip\belowdisplayskip}%
+ {\abovedisplayshortskip\abovedisplayskip}}
+\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}}
+\eql at define@key{setup}{aboveshortskip}{%
+ \setlength\abovedisplayshortskip{#1}}
+\eql at define@key{setup}{belowshortskip}{%
+ \setlength\belowdisplayshortskip{#1}}
+\eql at define@key{setup}{tagskip}{%
+ \setlength\eql at abovedisplaytagskip@{#1}%
+ \eql at belowdisplaytagskip@\eql at abovedisplaytagskip@}
+\eql at define@key{setup}{abovetagskip}{%
+ \setlength\eql at abovedisplaytagskip@{#1}}
+\eql at define@key{setup}{belowtagskip}{%
+ \setlength\eql at belowdisplaytagskip@{#1}}
+\eql at define@key{setup}{medskip}{%
+ \setlength\eql at abovedisplaymedskip@{#1}%
+ \eql at belowdisplaymedskip@\eql at abovedisplaymedskip@}
+\eql at define@key{setup}{abovemedskip}{%
+ \setlength\eql at abovedisplaymedskip@{#1}}
+\eql at define@key{setup}{abovetopskip}{%
+ \setlength\eql at abovedisplaytopskip@{#1}}
+\eql at define@key{setup}{aboveparskip}{%
+ \setlength\eql at abovedisplayparskip@{#1}}
+\eql at define@key{setup}{abovecontskip}{%
+ \setlength\eql at abovedisplaycontskip@{#1}}
+\eql at define@key{setup}{belowmedskip}{%
+ \setlength\eql at belowdisplaymedskip@{#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@@}}}}
+\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*}{\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{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}{tagform}{\eql at tag@setform#1}
+\eql at define@key{setup}{tagform*}{\eql at tag@setform@{#1}}
+\eql at define@key{setup}{subeqtemplate}{\def\eql at subequations@template{#1}}
+\eql at define@key{setup}{autolabel}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at autolabel}
+\eql at define@key{setup}{autotag}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at autotag}
+\def\eql at keycat{equations,setup}
+\eql at define@key\eql at keycat{numberline,numline,n}[all]{%
+ \eql at numbering@set{##1}}
+\eql at define@key\eql at keycat{nonumber,nn,*}[]{\let\eql at numbering@active\eql at false}
+\eql at define@key\eql at keycat{donumber,dn,!}[]{\let\eql at numbering@active\eql at true}
+\eql at define@key\eql at keycat{number,num}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at numbering@active}
+\eql at define@key\eql at keycat{tagsleft,leqno}[]{\let\eql at tagsleft\eql at true}
+\eql at define@key\eql at keycat{tagsright,reqno}[]{\let\eql at tagsleft\eql at false}
+\eql at define@key\eql at keycat{tags,eqno}{%
+ \eql at decide@select{#3}{#2}{#1}{%
+ {{right,r}{\let\eql at tagsleft\eql at false}},%
+ {{left,l}{\let\eql at tagsleft\eql at true}}}}
+\def\eql at keycat{equations,setup}
+\eql at define@key\eql at keycat{layout}{\eql at decide@select{#3}{#2}{#1}{%
+ {{center,c}{\let\eql at flushleft\eql at false}},%
+ {{left,l}{\let\eql at flushleft\eql at true}}}}
+\eql at define@key\eql at keycat{center}[]{\let\eql at flushleft\eql at false}
+\eql at define@key\eql at keycat{flushleft,left}[]{\let\eql at flushleft\eql at true}
+\eql at define@key\eql at keycat{leftmargin}{%
+ \setlength\eql at flushleftmargin@{#1}}
+\eql at define@key\eql at keycat{minleftmargin}{%
+ \setlength\eql at flushleftmarginmin@{#1}}
+\eql at define@key\eql at keycat{maxleftmargin}{%
+ \setlength\eql at flushleftmarginmax@{#1}}
+\eql at define@key\eql at keycat{maxleftmargin*}[]{%
+ \setlength\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}
+\eql at define@key\eql at keycat{mincolsep}{\def\eql at colsepmin@val{#1}}
+\eql at define@key\eql at keycat{maxcolsep}{\def\eql at colsepmax@val{#1}}
+\eql at define@key\eql at keycat{maxcolsep*}[]{\def\eql at colsepmax@val{.5\maxdimen}}
+\eql at define@key\eql at keycat{margins}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at align@margins}
+\def\eql at keycat{equationsbox,setup}
+\eql at define@key\eql at keycat{margin}{%
+ \def\eql at box@marginleft{#1}\def\eql at box@marginright{#1}}
+\eql at define@key\eql at keycat{marginleft}{\def\eql at box@marginleft{#1}}
+\eql at define@key\eql at keycat{marginright}{\def\eql at box@marginright{#1}}
+\def\eql at keycat{equations,equationsbox,setup}
+\eql at define@key\eql at keycat{shape}[default]{\eql at shape@set{#1}}
+\eql at define@key\eql at keycat{padding,pad}[\eql at indent@val]{%
+ \let\eql at paddingmax\eql at false
+ \def\eql at paddingleft@val{#1}\def\eql at paddingright@val{#1}}
+\eql at define@key\eql at keycat{padleft}[\eql at indent@val]{%
+ \let\eql at paddingmax\eql at false\def\eql at paddingleft@val{#1}}
+\eql at define@key\eql at keycat{padright}[\eql at indent@val]{%
+ \let\eql at paddingmax\eql at false\def\eql at paddingright@val{#1}}
+\eql at define@key\eql at keycat{padmax}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at paddingmax}
+\eql at define@key\eql at keycat{indent}[2em]{%
+ \def\eql at indent@val{#1}}
+\eql at define@key\eql at keycat{indent*}[2em]{%
+ \def\eql at indent@val{#1}\def\eql at paddingleft@val{#1}}
+\def\eql at keycat{equations,equationsbox,setup}
+\eql at define@key\eql at keycat{classout}{\eql at class@innerleft at set{#1}}
+\eql at define@key\eql at keycat{classin}{\eql at class@innerright at set{#1}}
+\eql at define@key\eql at keycat{classin*}{\eql at class@innerlead at set{#1}}
+\eql at define@key\eql at keycat{ampeq}[]{\eql at class@ampeq}
+\eql at define@key\eql at keycat{eqamp}[]{\eql at class@eqamp}
+\eql at define@key\eql at keycat{class}{\eql at decide@select{#3}{#2}{#1}{%
+ {{ampeq,amprel,eqafter,beforerel}\eql at class@ampeq},%
+ {{eqamp,relamp,eqbefore,afterrel}\eql at class@eqamp}}}
+\let\eql at punct@main\relax
+\def\eql at keycat{equations,equationsbox,setup}
+\eql at define@key\eql at keycat{punctsep}[\,]{\def\eql at punct@sep{#1}}
+\eql at define@key\eql at keycat{punct}[.]{\def\eql at punct@main{#1}}
+\eql at define@key\eql at keycat{punctline}[,]{\def\eql at punct@line{#1}}
+\eql at define@key\eql at keycat{punctcol}[,]{\def\eql at punct@col{#1}}
+\eql at define@key\eql at keycat{punct*}[]{\let\eql at punct@main\relax}
+\eql at define@key\eql at keycat{punctline*}[]{\let\eql at punct@line\relax}
+\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
+\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]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at ampproof@active}
+\eql at define@key{setup}{crerror}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at single@crerror}
+\eql at define@key{equations,setup}{rescan}[true]{%
+ \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}{equation}[true]{%
+ \eql at error@packageoption{#2}%
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@equation}
+\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 define@key{setup}{ang}[true]{%
+ \eql at error@packageoption{#2}%
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@ang}
+\newenvironment{eql at gathered}
+ {\eqnaddopt{lines}\equationsbox}{\endequationsbox}
+\newenvironment{eql at multlined}
+ {\eqnaddopt{lines,padding,shape=steps}\equationsbox}{\endequationsbox}
+\newenvironment{eql at aligned}
+ {\eqnaddopt{align}\equationsbox}{\endequationsbox}
+\newenvironment{eql at equation}
+ {\eqnaddopt{equation}\equations}{\endequations}
+\newenvironment{eql at gather}
+ {\eqnaddopt{lines}\equations}{\endequations}
+\newenvironment{eql at multline}
+ {\eqnaddopt{lines,padmax,shape=steps,numberline=out}\equations}
+ {\endequations}
+\newenvironment{eql at align}
+ {\eqnaddopt{align}\equations}{\endequations}
+\newenvironment{eql at flalign}
+ {\eqnaddopt{align,margins=false}\equations}{\endequations}
+\newenvironment{eql at equation*}
+ {\eqnaddopt{nonumber}\eql at equation}{\endequations}
+\newenvironment{eql at gather*}
+ {\eqnaddopt{nonumber}\eql at gather}{\endequations}
+\newenvironment{eql at multline*}
+ {\eqnaddopt{nonumber}\eql at multline}{\endequations}
+\newenvironment{eql at align*}
+ {\eqnaddopt{nonumber}\eql at align}{\endequations}
+\newenvironment{eql at flalign*}
+ {\eqnaddopt{nonumber}\eql at flalign}{\endequations}
+\def\eql at provide@movecmd#1#2{%
+ \expandafter\let\csname #1\expandafter\endcsname\csname #2\endcsname
+}
+\def\eql at provide@undefinecmd#1{%
+ \expandafter\let\csname #1\endcsname\@undefined
+}
+\def\eql at provide@moveenv#1#2{%
+ \expandafter\let\csname #1\expandafter\endcsname\csname #2\endcsname
+ \expandafter\let\csname end#1\expandafter\endcsname\csname end#2\endcsname
+}
+\def\eql at provide@undefineenv#1{%
+ \expandafter\let\csname #1\endcsname\@undefined
+ \expandafter\let\csname end#1\endcsname\@undefined
+}
+\def\eql at provide@onlyonce#1#2{%
+ \def\eql at tmp{#2}%
+ \def\@tempa{#1}%
+ \ifx\eql at tmp\@tempa
+ \let\eql at tmp\@undefined
+ \fi
+ \ifx\eql at tmp\@empty
+ \let\eql at tmp\@undefined
+ \fi
+ \def\@tempa{*}%
+ \ifx\eql at tmp\@tempa
+ \def\eql at tmp{#1}%
+ \fi
+ \ifdefined\eql at tmp\else
+ \ifcsname eql at provided@#1\endcsname
+ \def\eql at tmp{#1}%
+ \else
+ \expandafter\let\csname eql at provided@#1\endcsname\eql at true
+ \fi
+ \fi
+}
+\def\eql at provide@cmdonlyonce#1#2{%
+ \def\eql at tmp{#2}%
+ \edef\@tempb{\expandafter\noexpand\csname#1\endcsname}%
+ \ifx\eql at tmp\@tempb
+ \let\eql at tmp\@undefined
+ \fi
+ \ifx\eql at tmp\@empty
+ \let\eql at tmp\@undefined
+ \fi
+ \def\@tempa{*}%
+ \ifx\eql at tmp\@tempa
+ \let\eql at tmp\@tempb
+ \fi
+ \ifdefined\eql at tmp
+ \edef\eql at tmp{\expandafter\expandafter\expandafter\@gobble
+ \expandafter\string\eql at tmp}%
+ \else
+ \ifcsname eql at provided@#1\endcsname
+ \let\eql at tmp\@tempb
+ \else
+ \expandafter\let\csname eql at provided@#1\endcsname\eql at true
+ \fi
+ \fi
+}
+\def\eql at provide@cmd#1#2{%
+ \eql at provide@cmdonlyonce{#1}{#2}%
+ \ifdefined\eql at tmp
+ \expandafter\eql at provide@movecmd\expandafter{\eql at tmp}{eql@#1}%
+ \else
+ \eql at amsmath@after{%
+ \eql at provide@movecmd{ams#1}{#1}%
+ \eql at provide@movecmd{#1}{eql@#1}%
+ }%
+ \AddToHook{package/mathtools/after}{%
+ \eql at provide@movecmd{#1}{eql@#1}%
+ }%
+ \eql at provide@movecmd{#1}{eql@#1}%
+ \eql at amsmath@futurebefore{\eql at provide@undefinecmd{#1}}%
+ \fi
+}
+\def\eql at amsmath@endfix#1#2{%
+ \long\edef\@tempa{\expandafter\noexpand\csname end#2\endcsname}%
+ \long\edef\@tempb{\expandafter\noexpand\csname eql at amsmath@end#2\endcsname}%
+ \expandafter\ifx\csname end#1\endcsname\@tempa
+ \expandafter\let\csname end#1\endcsname\@tempb
+ \fi
+}
+\def\eql at amsmath@fixends{%
+ \eql at amsmath@after{%
+ \let\eql at amsmath@endmultline\endmultline
+ \eql at amsmath@endfix{multline*}{multline}%
+ \let\eql at amsmath@endgather\endgather
+ \eql at amsmath@endfix{gather*}{gather}%
+ \let\eql at amsmath@endalign\endalign
+ \eql at amsmath@endfix{align*}{align}%
+ \eql at amsmath@endfix{flalign}{align}%
+ \eql at amsmath@endfix{flalign*}{align}%
+ \eql at amsmath@endfix{alignat}{align}%
+ \eql at amsmath@endfix{alignat*}{align}%
+ \eql at amsmath@endfix{xalignat}{align}%
+ \eql at amsmath@endfix{xalignat*}{align}%
+ \eql at amsmath@endfix{xxalignat}{align}%
+ \let\eql at amsmath@endaligned\endaligned
+ \eql at amsmath@endfix{gathered}{aligned}%
+ \eql at amsmath@endfix{alignedat}{aligned}%
+ }
+}
+\def\eql at provide@env#1#2{%
+ \eql at provide@onlyonce{#1}{#2}%
+ \ifdefined\eql at tmp
+ \expandafter\eql at provide@moveenv\expandafter{\eql at tmp}{eql@#1}%
+ \else
+ \eql at amsmath@after{%
+ \eql at provide@moveenv{ams#1}{#1}%
+ \eql at provide@moveenv{ams#1*}{#1*}%
+ \eql at provide@moveenv{#1}{eql@#1}%
+ \eql at provide@moveenv{#1*}{eql@#1*}%
+ }%
+ \AddToHook{package/mathtools/after}{%
+ \eql at provide@moveenv{#1}{eql@#1}%
+ \eql at provide@moveenv{#1*}{eql@#1*}%
+ }%
+ \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*}}%
+ \fi
+}
+\def\eql at provide@env at equation#1{%
+ \eql at provide@onlyonce{equation}{#1}%
+ \ifdefined\eql at tmp
+ \expandafter\eql at provide@moveenv\expandafter{\eql at tmp}{eql at equation}%
+ \else
+ \eql at amsmath@after{%
+ \eql at provide@moveenv{amsequation}{equation}%
+ \eql at provide@moveenv{amsequation*}{equation*}%
+ \eql at provide@moveenv{equation}{eql at equation}%
+ \eql at provide@moveenv{equation*}{eql at equation*}%
+ }%
+ \AddToHook{package/hyperref/after}{%
+ \@ifpackageloaded{amsmath}{}{%
+ \let\latexequation\H at equation
+ \let\endlatexequation\H at endequation
+ \eql at provide@moveenv{hyperrefequation}{equation}%
+ \eql at provide@moveenv{equation}{eql at equation}%
+ }%
+ }%
+ \@ifpackageloaded{amsmath}{}{\@ifpackageloaded{hyperref}{}{%
+ \eql at provide@moveenv{latexequation}{equation}%
+ }}%
+ \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*}}%
+ \fi
+}
+\def\eql at provide@env at multlined#1{%
+ \eql at provide@onlyonce{multlined}{#1}%
+ \ifdefined\eql at tmp
+ \expandafter\eql at provide@moveenv\expandafter{\eql at tmp}{eql at multlined}%
+ \else
+ \AddToHook{package/mathtools/after}{%
+ \eql at provide@moveenv{amsmultlined}{multlined}%
+ \eql at provide@moveenv{multlined}{eql at multlined}%
+ }%
+ \eql at provide@moveenv{multlined}{eql at multlined}%
+ \@ifpackageloaded{mathtools}{}{\AddToHook{package/mathtools/before}{%
+ \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
+ \expandafter\eql at provide@moveenv
+ \expandafter{\eql at tmp}{eql at subequations}%
+ \else
+ \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]{}%
+ \AddToHook{cmd/subequations/after}[hyperref]{}%
+ \RemoveFromHook{cmd/subequations/before}[hyperref]%
+ \RemoveFromHook{cmd/subequations/after}[hyperref]%
+ \AddToHook{cmd/amssubequations/before}%
+ {%
+ \stepcounter{equation}%
+ \protected at edef\theHparentequation{\theHequation}%
+ \addtocounter{equation}{-1}%
+ }
+ \AddToHook{cmd/amssubequations/after}%
+ {%
+ \def\theHequation{\theHparentequation\alph{equation}}%
+ \ignorespaces
+ }
+ }
+ \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}}%
+ \fi
+}
+\def\eql at provide@sqr{%
+ \let\[\eql at equations@sqr at open
+ \let\]\eql at equations@sqr at close
+ \eql at amsmath@after{%
+ \let\[\eql at equations@sqr at open
+ \let\]\eql at equations@sqr at close
+ }%
+}
+\def\eql at provide@ang{%
+ \let\<\eql at equations@ang at open
+ \let\>\eql at equations@ang at close
+}
+\eql at define@key{provide}{equation}[]{\eql at provide@env at equation{#1}}
+\eql at define@key{provide}{gather}[]{\eql at provide@env{gather}{#1}}
+\eql at define@key{provide}{multline}[]{\eql at provide@env{multline}{#1}}
+\eql at define@key{provide}{align}[]{\eql at provide@env{align}{#1}}
+\eql at define@key{provide}{flalign}[]{\eql at provide@env{flalign}{#1}}
+\eql at define@key{provide}{aligned}[]{\eql at provide@env{aligned}{#1}}
+\eql at define@key{provide}{gathered}[]{\eql at provide@env{gathered}{#1}}
+\eql at define@key{provide}{multlined}[]{\eql at provide@env at multlined{#1}}
+\eql at define@key{provide}{subequations}[]{\eql at provide@env at subequations{#1}}
+\eql at define@key{provide}{sqr}[]{\eql at provide@sqr}
+\eql at define@key{provide}{ang}[]{\eql at provide@ang}
+\eql at define@key{provide}{eqref}[]{\eql at provide@cmd{eqref}{#1}}
+\eql at define@key{provide}{notag}[]{\eql at provide@cmd{notag}{#1}}
+\eql at define@key{provide}{thetag}[]{\eql at provide@cmd{thetag}{#1}}
+\eql at define@key{provide}{allowdisplaybreaks}[]{%
+ \eql at provide@cmd{allowdisplaybreaks}{#1}}
+\eql at define@key{provide}{numberwithin}[]{\eql at provide@cmd{numberwithin}{#1}}
+\newcommand{\eqnlinesprovide}[1]{%
+ \eql at setkeys{provide}{#1}}
+\newcommand{\eqnlinesset}[1]{%
+ \eql at setkeys{setup}{#1}}
+\let\eql at error@packageoption\@gobble
+\DeclareOption*{\expandafter\eqnlinesset\expandafter{\CurrentOption}}
+\ProcessOptions
+\def\eql at error@packageoption#1{%
+ \eql at error{may only use `#1' as a package option}%
+}
+\ifcsname tagsleft at true\endcsname\else
+ \expandafter\newif\csname iftagsleft@\endcsname
+\fi
+\ifcsname @fleqntrue\endcsname\else
+ \expandafter\newif\csname if at fleqn\endcsname
+\fi
+\ifdefined\eql at provide@amsmath
+ \let\eql at provide@equation\eql at true
+ \eql at amsmath@after{%
+ \iftagsleft@
+ \eqnlinesset{tagsleft}
+ \else
+ \eqnlinesset{tagsright}
+ \fi
+ \if at fleqn
+ \eqnlinesset{left}
+ \else
+ \eqnlinesset{center}
+ \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
+ \eqnlinesprovide{%
+ multline,gather,align,flalign,%
+ multlined,gathered,aligned,%
+ subequations,eqref}
+\fi
+\ifdefined\eql at provide@ang
+ \eqnlinesprovide{ang}
+\fi
+\endinput
+%%
+%% End of file `eqnlines.sty'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/eqnlines/eqnlines.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2024.final/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc
===================================================================
--- branches/branch2024.final/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc 2025-02-26 21:14:21 UTC (rev 74312)
+++ branches/branch2024.final/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc 2025-02-26 21:14:50 UTC (rev 74313)
@@ -97,6 +97,7 @@
depend eolang
depend eqexpl
depend eqnarray
+depend eqnlines
depend eqnnumwarn
depend euclidean-lattice
depend euclideangeometry
Added: branches/branch2024.final/Master/tlpkg/tlpsrc/eqnlines.tlpsrc
===================================================================
More information about the tex-live-commits
mailing list.