texlive[74571] Master/texmf-dist: eqnlines (11mar25)
commits+karl at tug.org
commits+karl at tug.org
Tue Mar 11 21:06:49 CET 2025
Revision: 74571
https://tug.org/svn/texlive?view=revision&revision=74571
Author: karl
Date: 2025-03-11 21:06:49 +0100 (Tue, 11 Mar 2025)
Log Message:
-----------
eqnlines (11mar25)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/eqnlines/README.txt
trunk/Master/texmf-dist/doc/latex/eqnlines/eqnlines.pdf
trunk/Master/texmf-dist/source/latex/eqnlines/eqnlines.dtx
trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines-dev.sty
trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines.sty
Modified: trunk/Master/texmf-dist/doc/latex/eqnlines/README.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/eqnlines/README.txt 2025-03-11 20:06:37 UTC (rev 74570)
+++ trunk/Master/texmf-dist/doc/latex/eqnlines/README.txt 2025-03-11 20:06:49 UTC (rev 74571)
@@ -1,4 +1,4 @@
-eqnlines v0.5
+eqnlines v0.6
Copyright 2024-2025 Niklas Beisert
Based on the latex package amsmath:
Modified: trunk/Master/texmf-dist/doc/latex/eqnlines/eqnlines.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/source/latex/eqnlines/eqnlines.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/eqnlines/eqnlines.dtx 2025-03-11 20:06:37 UTC (rev 74570)
+++ trunk/Master/texmf-dist/source/latex/eqnlines/eqnlines.dtx 2025-03-11 20:06:49 UTC (rev 74571)
@@ -8,7 +8,7 @@
% Copyright (C) 2016-2024 LaTeX Project and American Mathematical Society.
%
% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3c
+% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
% https://www.latex-project.org/lppl.txt
@@ -23,10 +23,10 @@
% and the derived files eqnlines.sty.
%
%<package|sample>\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-%<package&!dev>\ProvidesPackage{eqnlines}[2025/02/25 v0.5 Single- and multi-line equations]
-%<package&dev>\ProvidesPackage{eqnlines-dev}[2025/02/25 v0.5 Single- and multi-line equations (development)]
+%<package&!dev>\ProvidesPackage{eqnlines}[2025/03/11 v0.6 Single- and multi-line equations]
+%<package&dev>\ProvidesPackage{eqnlines-dev}[2025/03/11 v0.6 Single- and multi-line equations (development)]
%<*driver>
-\def\thedate#1{2025/02/25}\def\theversion#1{v0.5}
+\def\thedate#1{2025/03/11}\def\theversion#1{v0.6}
\ProvidesFile{eqnlines.dtx}[\thedate{} \theversion{} eqnlines reference manual file]
\PassOptionsToClass{10pt,a4paper}{article}
\documentclass{ltxdoc}
@@ -35,7 +35,6 @@
\usepackage[hyperindex=false]{hyperref}
\usepackage{hyperxmp}
\usepackage[usenames]{color}
-\usepackage{amssymb}
\AddToHook{begindocument/before}{\hypersetup{colorlinks=false}}
\hypersetup{urlbordercolor={.5 1 1}}
@@ -154,7 +153,8 @@
{\texttt{nbeisert at itp.phys.ethz.ch}}}
\hypersetup{pdfauthor={Niklas Beisert}}
\hypersetup{pdfsubject={Manual for the LaTeX2e Package eqnlines}}
-\date{\thedate{}, \theversion{}}
+\date{\thedate{}, \theversion{}\\[1ex]
+\url{https://ctan.org/pkg/eqnlines}}
\maketitle
\begin{center}
@@ -194,7 +194,7 @@
the multi-line equation environments of the package \ctanpkg{amsmath}
which have become an established standard for these purposes.
-The package \markpkg{eqnlines} builds upon and extends
+The package \ctanpkg{eqnlines} builds upon and extends
the functionality of the \LaTeX{} and \ctanpkg{amsmath}
equation environments with some new features
as well as convenient options to adjust the layout where needed.
@@ -272,7 +272,7 @@
provided by these packages.
In the latter case,
the equation environments of \LaTeX{} and \ctanpkg{amsmath}
-are either replaced or left in place while the \markpkg{eqnlines}
+are either replaced or left in place while the \ctanpkg{eqnlines}
environments can be accessed using the alternate name |equations|.
@@ -303,7 +303,7 @@
\medskip
-To use the \markpkg{eqnlines} package add the command
+To use the \ctanpkg{eqnlines} package add the command
%
\begin{center}
|\usepackage{eqnlines}|
@@ -312,7 +312,7 @@
to the preamble of the \LaTeX{} document.
To use unrelated features of the \ctanpkg{amsmath} package
or of the \ctanpkg{mathtools} extension,
-it makes sense to load these packages \emph{before} \markpkg{eqnlines}.
+it makes sense to load these packages \emph{before} \ctanpkg{eqnlines}.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Equations Environment}
@@ -336,6 +336,8 @@
Furthermore, the environment accepts some modifiers
(like the star modifier `|*|' for many other \LaTeX\ macros)
which will be explained further below.
+These follow the scheme |{ !t~ !t* !t! !o !e{@} }|
+according to the syntax of |\NewDocumentCommand|.
We note that the equations environment should be started with a white space
character `\texttt{\textvisiblespace}'
@@ -542,8 +544,7 @@
\DescribeKey{taglayout}
\DescribeKey{tagform}
-The typesetting of equation numbers and tags passes through
-two methods defined by \ctanpkg{amsmath},
+The typesetting of equation numbers and tags passes through two macros,
one which defines the layout
and another one which adds a decoration (brackets).
These two methods can be adjusted via the options:
@@ -887,6 +888,15 @@
or removed altogether via |noskip|.
These keys also take the values |above|, |below| or |both|.
+\DescribeKey{par}
+The key |par| controls to whether
+the equations environment end in horizontal mode (value |cont|)
+or in vertical mode (value |par|, default)
+with a dedicated amount of glue |belowparskip|.
+An environment can also end in vertical mode
+without interline skip (value |top|)
+and with glue |belowtopskip|.
+
\DescribeKey{...skip}
\DescribeInterfaceMacro{\vspace}
\DescribeKey{...space}
@@ -898,23 +908,45 @@
Additional glue can be added above or below equation environments
by means of the options |abovespace| and |belowspace|.
-The package also maintains several global vertical space settings:
+The package also maintains several global vertical space settings
+|above|\textit{pos}|skip| and |below|\textit{pos}|skip|
+(sometimes \textit{pos}|skip| for both):
%
\DescribeKey{...skip}
\begin{center}
-\begin{tabular}{llll}
-above & below & both & description \\
+\begin{tabular}{lll}
+\ldots\textit{pos}|skip| & both & description \\
\hline
-|aboveskip| & |belowskip| & |skip| & standard amount of glue \\
-|aboveshortskip| & |belowshortskip| & -- & reduced glue for short equations \\
-|abovemedskip| & |belowmedskip| & |medskip| & medium amount of glue \\
-|abovetagskip| & |belowtagskip| & |tagskip|
- & glue for outer raised/lowered tags \\
-|abovetopskip| & -- & -- & glue at top of vertical list \\
-|aboveparskip| & -- & -- & glue when starting a paragraph \\
-|abovecontskip| & -- & -- & glue when started from empty paragraph \\
+|...long...| & |skip| & standard amount of glue \\
+|...short...| & -- & reduced glue for short equations \\
+|...cont...| & -- & glue when issued from an empty |\noindent| paragraph \\
+|...par...| & -- & glue when starting a paragraph (in vertical mode)\\
+|...top...| & -- & glue when issued at the top of vertical list \\
+|...med...| & |medskip| & medium amount of glue \\\hline
+|...tag...| & |tagskip| & glue for outer raised/lowered tags \\
+|...medtag...| & |medtagskip| & glue for outer raised/lowered tags with med \\
+|...partag...| & -- & glue for outer raised/lowered tags with par \\
\end{tabular}
\end{center}
+%
+\DescribeKey{...mode}
+The situations |cont|, |par| and |top| use the respective glue |above...skip|
+above the equations.
+By default they use |belowlongskip| below the equations, but this setting
+may be adjusted by the global option \textit{pos}|mode|
+with the values:
+%
+\begin{center}
+\begin{tabular}{lll}
+name & reduced glue \\
+\hline
+|long| & regular amount below equations \\
+|short| & short amount below equations \\
+|cont| & |cont| amount below equations \\
+|par| & end the paragraph (only |parmode| and |topmode|) \\
+|top| & end the paragraph without interline skip (|topmode| only) \\
+\end{tabular}
+\end{center}
\DescribeKey{spread}
\DescribeKey{strut}
@@ -990,11 +1022,11 @@
as an optional argument.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\subsection{Feature Selection and Package Options}
-\label{sec:features}
+\subsection{General Options}
+\label{sec:auxiliary}
\DescribeInterfaceMacro{\eqnlinesset}
-Features and options of general nature can be selected by the commands:
+Options of general nature can be selected by the commands:
%
\begin{center}
\begin{tabular}{rl}
@@ -1010,6 +1042,26 @@
|\eqnlinesset| must be used afterwards.
\textit{opts} is a comma-separated list of options.
+The package supplies the following general settings:
+\begin{center}
+\begin{tabular}{ll}
+option & description \\
+\hline
+|defaults=classic|
+ & mimic classic \LaTeX/\ctanpkg{amsmath} (layout and dimensions) \\
+|defaults=eqnlines|
+ & \ctanpkg{eqnlines} layout with fontsize-relative dimensions \\
+|rescan| & rescan environment body to allow special commands (e.g.\ |\verb|) \\
+|linesfallback| & single column in align mode reverts to lines mode \\
+|ampproof| & equip optional argument parsing with protection for |&| \\
+|crerror| & invoke an error when `|\\|' is used in a single equation \\
+\end{tabular}
+\end{center}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{Feature Selection and Package Options}
+\label{sec:features}
+
The following few settings can only be specified when loading the package,
not via |\eqnlinesset|:
%
@@ -1025,7 +1077,7 @@
\end{center}
%
-If the above settings are disabled, the package will only supply
+If the above settings are explicitly disabled, the package will only supply
the general purpose environment |equations| and its boxed cousin |equationsbox|.
In that case, the specific equation environments and other features
can be activated by the command:
@@ -1049,6 +1101,8 @@
|ang| & provide |\<|\ldots|\>| \\
\textit{cmd} & provide/overwrite macro |\|\textit{cmd}:\\
& |eqref|, |notag|, |thetag|, |allowdisplaybreaks|, |numberwithin| \\
+|tagform| & provide/overwrite macro |\tagform@|\\
+|maketag| & provide/overwrite macro |\maketag@@@|\\
\end{tabular}
\end{center}
@@ -1189,11 +1243,11 @@
of the package \ctanpkg{amsmath}.
The present code is based on \ctanpkg{amsmath} v2.17t (2024/11/05).
Compatibility with the \ctanpkg{amsmath} package is maintained
-whether \markpkg{eqnlines} is loaded before or after \ctanpkg{amsmath}.
-By default, \markpkg{eqnlines} will rename
+whether \ctanpkg{eqnlines} is loaded before or after \ctanpkg{amsmath}.
+By default, \ctanpkg{eqnlines} will rename
the math environments of \ctanpkg{amsmath} with a prefix |ams...|
and overwrite them with its own implementations.
-Alternatively, \markpkg{eqnlines} may assign individual names
+Alternatively, \ctanpkg{eqnlines} may assign individual names
to the maths environments and preserve the ones of \ctanpkg{amsmath}.
The other features provided by \ctanpkg{amsmath}
can be used.
@@ -1204,7 +1258,7 @@
provided by the \ctanpkg{mathtools} package.
Compatibility with the \ctanpkg{mathtools} package
has been tested with v1.31 (2024/10/04),
-and it is maintained whether \markpkg{eqnlines}
+and it is maintained whether \ctanpkg{eqnlines}
is loaded before or after \ctanpkg{mathtools}.
Some features like adding a box and emphasising
equations via \ctanpkg{empheq} does not (yet) work.
@@ -1235,9 +1289,6 @@
complete code documentation
\item
sample document
-\item
-pdf tagging
-\unskip\footnote{See \url{https://latex3.github.io/tagging-project/}}
\end{itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1244,6 +1295,25 @@
\subsection{Revision History}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\paragraph{v0.6:} 2025/03/11
+
+\begin{itemize}
+\item
+preliminary pdf tagging support
+(\url{https://latex3.github.io/tagging-project/})
+\item
+classic \LaTeX/\ctanpkg{amsmath} vs.\ \ctanpkg{eqnlines} presets
+\item
+changed vertical spacing schemes and added further options
+\item
+supplied dimensions processed by |\glueexpr|
+\item
+more independent of \ctanpkg{amsmath} structures
+\item
+internal reorganisations
+\end{itemize}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\paragraph{v0.5:} 2025/02/25
\begin{itemize}
@@ -1516,7 +1586,9 @@
% \subsection{amsmath Integration}
%
% \macro{\eql at amsmath@after}
-% \macro{\eql at amsmath@futurebefore}
+% \macro{\eql at amsmath@before}
+% \macro{\eql at amsmath@undefine}
+% \macro{\eql at amsmath@let}
% We need to overwrite certain macros from \ctanpkg{amsmath}.
% The method |\eql at amsmath@after| executes argument |#1|
% after loading \ctanpkg{amsmath} is loaded.
@@ -1523,13 +1595,17 @@
% It also runs the code if \ctanpkg{amsmath} has already been loaded.
% Furthermore, loading \ctanpkg{amsmath} requires
% certain macros to be undefined. To this end
-% |\eql at amsmath@futurebefore| will execute argument |#1|
-% before any future loading of \ctanpkg{amsmath}:
-% \TODO might use |\@for| for undefine
+% |\eql at amsmath@before| will execute argument |#1|
+% before any future loading of \ctanpkg{amsmath}.
+% |\eql at amsmath@undefine| undefines a macro
+% in this way and |\eql at amsmath@let| overwrites
+% a macro of |\ctanpkg{amsmath}|:
% \begin{macrocode}
\def\eql at amsmath@after#1{\AddToHook{package/amsmath/after}{#1}}
-\def\eql at amsmath@futurebefore#1{%
+\def\eql at amsmath@before#1{%
\@ifpackageloaded{amsmath}{}{\AddToHook{package/amsmath/before}{#1}}}
+\def\eql at amsmath@undefine#1{\eql at amsmath@before{\let#1\@undefined}}
+\def\eql at amsmath@let#1#2{\eql at amsmath@undefine#1\let#1#2}
% \end{macrocode}
%
%
@@ -1574,7 +1650,7 @@
#1\eql at regunset@\relax
\AtBeginDocument{%
\ifdim#1=\eql at regunset@
- \setlength#1{#2}%
+ #1\glueexpr#2\relax
\fi
}%
}
@@ -1674,6 +1750,7 @@
% The extra spread of equation lines is specified by |\eql at spread|:
% \begin{macrocode}
\def\eql at spread{\jot}
+\newdimen\eql at spread@amount@
% \end{macrocode}
%
% \ldimen{\eql at tagfuzz@}
@@ -1687,28 +1764,19 @@
\eql at tagfuzz@16sp\relax
% \end{macrocode}
%
-% \lskip{\eql at abovedisplayskip@}
-% \lskip{\eql at belowdisplayskip@}
-% We need two registers |\eql at abovedisplayskip@| and
-% |\eql at belowdisplayskip@| to feed values
-% to the final adjustment section after the end of |\halign|
-% where |\setlength| of \ctanpkg{calc} would fail:
+% \macro{\eql at display@height}
+% \macro{\eql at display@depth}
+% An equation will appear to the surrounding text
+% with a fixed apparent height and depth specified
+% by |\eql at display@height| and |\eql at display@depth|, respectively.
+% By default it appears as a strut for equations:
% \begin{macrocode}
-\newskip\eql at abovedisplayskip@
-\newskip\eql at belowdisplayskip@
+\def\eql at display@height{\ht\eql at strutbox@}
+\def\eql at display@depth{\dp\eql at strutbox@}
% \end{macrocode}
%
-% \lskip{\eql at abovedisplaytagskip@}
-% \lskip{\eql at belowdisplaytagskip@}
-% \begin{macrocode}
-\newskip\eql at abovedisplaytagskip@
-\newskip\eql at belowdisplaytagskip@
-\eql at abovedisplaytagskip@\z at skip
-\eql at belowdisplaytagskip@\z at skip
-% \end{macrocode}
-%
-% \tcounter{\eql at displayshortmode@}
-% The setting |\eql at displayshortmode@| specifies
+% \tcounter{\eql at skip@mode at short@}
+% The setting |\eql at skip@mode at short@| specifies
% when a reduced amount of glue should be used around equations
% in case the text line above the equation fits in the space
% that is left available in the first equation line.
@@ -1717,58 +1785,80 @@
% value |2| furthermore reduces the glue below a single equation line and
% value |3| also reduces the glue below multi-line equations:
% \begin{macrocode}
-\newcount\eql at displayshortmode@
-\eql at displayshortmode@\tw@
+\newcount\eql at skip@mode at short@
+\eql at skip@mode at short@\tw@
% \end{macrocode}
%
-% \lskip{\eql at abovedisplaycontskip@}
-% The glue when an equation is at the top of a horizontal list
-% is specified by |\eql at abovedisplaycontskip@|:
% \begin{macrocode}
-\newskip\eql at abovedisplaycontskip@
-\eql at regsetdelayed\eql at abovedisplaycontskip@\abovedisplayshortskip
+\newcount\eql at skip@mode at cont@
+\eql at skip@mode at cont@\z@
% \end{macrocode}
%
-% \lskip{\eql at abovedisplaytopskip@}
-% \lskip{\eql at belowdisplaytopskip@}
-% The glue when an equation is at the top of a vertical list
-% is specified by |\eql at abovedisplaytopskip@|
-% and |\eql at belowdisplaytopskip@|:
% \begin{macrocode}
-\newskip\eql at abovedisplaytopskip@
-\newskip\eql at belowdisplaytopskip@
-\eql at abovedisplaytopskip@\z at skip
-\eql at regsetdelayed\eql at belowdisplaytopskip@\belowdisplayskip
+\newcount\eql at skip@mode at par@
+\eql at skip@mode at par@\z@
% \end{macrocode}
%
-% \lskip{\eql at abovedisplayparskip@}
-% The glue when an equation starts a paragraph
-% is specified by |\eql at abovedisplaytopskip@|:
% \begin{macrocode}
-\newskip\eql at abovedisplayparskip@
-\eql at regsetdelayed\eql at abovedisplayparskip@\abovedisplayskip
+\newcount\eql at skip@mode at top@
+\eql at skip@mode at top@\z@
% \end{macrocode}
%
-% \macro{\eql at display@height}
-% \macro{\eql at display@depth}
-% An equation will appear to the surrounding text
-% with a fixed apparent height and depth specified
-% by |\eql at display@height| and |\eql at display@depth|, respectively.
-% By default it appears as a strut for equations:
% \begin{macrocode}
-\def\eql at display@height{\ht\eql at strutbox@}
-\def\eql at display@depth{\dp\eql at strutbox@}
+\newcount\eql at skip@mode at leave@
+\let\eql at skip@force at leave\@undefined
% \end{macrocode}
%
-% \lskip{\eql at abovedisplaymedskip@}
-% \lskip{\eql at belowdisplaymedskip@}
+% \macro{\eql at skip@force at above}
+% \macro{\eql at skip@force at below}
+% \tcounter{\eql at skip@mode at above@}
+% \tcounter{\eql at skip@mode at below@}
+% 0: short, 1: long, 2: cont, 3: par, 4: top, 5: no, 6: med, 7: custom
+% \begin{macrocode}
+\newcount\eql at skip@mode at above@
+\newcount\eql at skip@mode at below@
+\let\eql at skip@force at above\@undefined
+\let\eql at skip@force at below\@undefined
+\let\eql at skip@custom at above\@undefined
+\let\eql at skip@custom at below\@undefined
+% \end{macrocode}
+%
+% \macro{\eql at skip@cont at above}
+% The glue when an equation is at the top of a horizontal list
+% is specified by |\eql at skip@cont at above|:
+% \macro{\eql at skip@top at above}
+% \macro{\eql at skip@top at below}
+% The glue when an equation is at the top of a vertical list
+% is specified by |\eql at skip@top at above|
+% and |\eql at skip@top at below|:
+% \macro{\eql at skip@par at above}
+% The glue when an equation starts a paragraph
+% is specified by |\eql at skip@par at above|:
+% \macro{\eql at skip@med at above}
+% \macro{\eql at skip@med at below}
% The surrounding glue for an equation with reduced spacing
-% is given by |\eql at abovedisplaymedskip@| and |\eql at belowdisplaymedskip@|:
+% is given by |\eql at skip@med at above| and |\eql at skip@med at below|:
+%
% \begin{macrocode}
-\newskip\eql at abovedisplaymedskip@
-\newskip\eql at belowdisplaymedskip@
-\eql at regsetdelayed\eql at abovedisplaymedskip@\belowdisplayshortskip
-\eql at regsetdelayed\eql at belowdisplaymedskip@\eql at belowdisplaymedskip@
+\def\eql at skip@long at above{\abovedisplayskip}
+\def\eql at skip@long at below{\belowdisplayskip}
+\def\eql at skip@short at above{\abovedisplayshortskip}
+\def\eql at skip@short at below{\belowdisplayshortskip}
+\def\eql at skip@cont at above{\eql at skip@short at above}
+\def\eql at skip@cont at below{\eql at skip@short at below}
+% \TODO: parabove plus parskip?
+\def\eql at skip@par at above{\eql at skip@long at above}
+\def\eql at skip@par at below{\eql at skip@long at below}
+\def\eql at skip@top at above{\eql at skip@long at above}
+\def\eql at skip@top at below{\eql at skip@long at below}
+\def\eql at skip@med at above{\abovedisplayskip/2}
+\def\eql at skip@med at below{\belowdisplayskip/2}
+\def\eql at skip@tag at above{\z at skip}
+\def\eql at skip@tag at below{\z at skip}
+\def\eql at skip@partag at above{\z at skip}
+\def\eql at skip@partag at below{\z at skip}
+\def\eql at skip@medtag at above{\z at skip}
+\def\eql at skip@medtag at below{\z at skip}
% \end{macrocode}
%
% \ldimen{\eql at colsepmin@}
@@ -1885,7 +1975,10 @@
% We should tell \ctanpkg{hyperref} about measuring processes
% as we're not \ctanpkg{amsmath} and not being catered for:
% \begin{macrocode}
-\newif\ifmeasuring@
+% \newif\ifmeasuring@
+\ifdefined\measuring at true\else
+ \expandafter\newif\csname ifmeasuring@\endcsname
+\fi
\AddToHook{package/hyperref/after}{
\ifdefined\Hy at ifnotmeasuring
\renewcommand\Hy at ifnotmeasuring[1]{\ifmeasuring@\else#1\fi}
@@ -1900,10 +1993,11 @@
% We provide it in case \ctanpkg{amsmath} is absent,
% and initialise it:
% \begin{macrocode}
+% \newif\if at display
\ifdefined\@displaytrue\else
-\everydisplay\expandafter{\the\everydisplay\@displaytrue}
+ \expandafter\newif\csname if at display\endcsname
+ \everydisplay\expandafter{\the\everydisplay\@displaytrue}
\fi
-\newif\if at display
% \end{macrocode}
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1934,7 +2028,76 @@
%
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Tagging Support}
+%
+% \begin{macrocode}
+\let\eql at tagging@on\eql at false
+\IfFormatAtLeastTF{2025-06-01}{%
+ \csname tag_if_active:T\endcsname{\let\eql at tagging@on\eql at true}}{}
+\ifdefined\eql at tagging@on
+ \def\eql at tagging@mathsave{%
+ \UseTaggingSocket{math/luamml/save/nNn}{{}\displaystyle{mtd}}}
+ \def\eql at tagging@mathaddlast{%
+ \UseTaggingSocket{math/luamml/mtable/finalizecol}{last}}
+ \def\eql at tagging@tagbegin{%
+ \UseTaggingSocket{math/display/tag/begin}}
+ \def\eql at tagging@tagend{%
+ \UseTaggingSocket{math/display/tag/end}}
+ \def\eql at tagging@tagsave{%
+ \UseTaggingSocket{math/luamml/mtable/tag/save}}
+ \def\eql at tagging@tagaddbox{%
+ \setbox\z@\copy\eql at tagbox@%
+ \UseTaggingSocket{math/luamml/mtable/tag/set}}
+ \def\eql at tagging@tablesaveinner{%
+ \UseExpandableTaggingSocket{math/luamml/mtable/innertable/save}}
+ \def\eql at tagging@tableaddinner{%
+ \UseTaggingSocket{math/luamml/mtable/innertable/finalize}}
+ \def\eql at tagging@tablesavelines{%
+ \UseExpandableTaggingSocket{math/luamml/mtable/finalize}{gather}}
+ \def\eql at tagging@tablesavealign{%
+ \UseExpandableTaggingSocket{math/luamml/mtable/finalize}{align}}
+ \def\eql at tagging@alignleft{%
+ \UseTaggingSocket{math/luamml/mtable/aligncol}{left}}
+ \def\eql at tagging@aligncenter{%
+ \UseTaggingSocket{math/luamml/mtable/aligncol}{center}}
+ \def\eql at tagging@alignright{%
+ \UseTaggingSocket{math/luamml/mtable/aligncol}{right}}
+ \let\eql at single@doscan\eql at true
+ \let\eql at scan@body\eql at scan@body at rescan
+ \ExplSyntaxOn
+ \def\eql at tagging@start{%
+ \bool_if:NF\l__math_collected_bool{%
+ \toks@\expandafter{\eql at tagging@opt}%
+ \edef\eql at tmp{{\@currenvir}{[\the\toks@] \the\eql at scan@reg@}}%
+ \expandafter\__math_process:nn\eql at tmp
+ \@kernel at math@registered at begin
+ \bool_set_true:N\l__math_collected_bool
+ }%
+ }
+ \def\eql at tagging@end{}
+ \ExplSyntaxOff
+\else
+ \def\eql at tagging@mathsave{}
+ \def\eql at tagging@mathaddlast{}
+ \def\eql at tagging@tagbegin{}
+ \def\eql at tagging@tagend{}
+ \def\eql at tagging@tagsave{}
+ \def\eql at tagging@tagaddbox{}
+ \def\eql at tagging@tablesaveinner{}
+ \def\eql at tagging@tableaddinner{}
+ \def\eql at tagging@tablesavelines{}
+ \def\eql at tagging@tablesavealign{}
+ \def\eql at tagging@alignleft{}
+ \def\eql at tagging@aligncenter{}
+ \def\eql at tagging@alignright{}
+ \def\eql at tagging@start{}
+ \def\eql at tagging@end{}
+\fi
+% \end{macrocode}
+%
+%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \section{Punctuation}
%
% The equations environments supply an automatic punctuation scheme
@@ -2115,8 +2278,7 @@
\eql at box@lastfield
\cr
\noalign{%
- \setlength\skip@{#1}%
- \vskip\skip@
+ \vskip\glueexpr#1\relax
}%
}
% \end{macrocode}
@@ -2143,10 +2305,10 @@
\let\eql at box@lastfield\@empty
\eql at halign@init{%
%<dev>\eql at dev{starting new line}%
-}%
+ }%
\tabskip\z at skip
\halign\bgroup
- &%
+ &%
\let\eql at box@lastfield\eql at box@lastfield at odd
\global\setbox\eql at fieldbox@\hbox{%
\eql at strut@field
@@ -2156,12 +2318,14 @@
##%
\eql at class@innerleft
\eql at hook@innerleft
+ \eql at tagging@mathsave
$%
+ \eql at tagging@mathaddlast
}%
\hfil
\kern\wd\eql at fieldbox@
\tabskip\z at skip
- &%
+ &%
\eql at fieldwidth@\wd\eql at fieldbox@
\kern-\eql at fieldwidth@
\box\eql at fieldbox@
@@ -2176,10 +2340,12 @@
##%
\eql at punct@apply at col
\eql at hook@colout
+ \eql at tagging@mathsave
$%
+ \eql at tagging@mathaddlast
}%
\hfil
- \tabskip\eql at colsep@
+ \tabskip\eql at colsep@\relax
\crcr
\noalign{%
\eql at hook@blockbefore
@@ -2202,44 +2368,49 @@
\tabskip\z at skip
\halign\bgroup
&%
- \eql at shape@pos@\m at ne
- \setbox\eql at fieldbox@\hbox{%
- \eql at strut@field
- \@lign
- $\m at th\displaystyle
- \eql at hook@colin
- ##%
- \eql at punct@apply at col
- \eql at hook@colout
- $%
- }%
- \ifnum\eql at shape@pos@=\m at ne
- \eql at shape@eval
- \fi
- \ifcase\eql at shape@pos@
- \kern\eql at shape@amount@
- \box\eql at fieldbox@
- \skip@\@flushglue
- \advance\skip@\eql at paddingleft@\relax
- \advance\skip@\eql at paddingright@\relax
- \advance\skip at -\eql at shape@amount@\relax
- \hskip\skip@
- \or
- \skip@\@flushglue
- \advance\skip@\eql at paddingleft@\relax
- \hskip\skip@
- \box\eql at fieldbox@
- \skip@\@flushglue
- \advance\skip@\eql at paddingright@\relax
- \hskip\skip@
- \or
- \skip@\@flushglue
- \advance\skip@\eql at paddingleft@\relax
- \advance\skip@\eql at paddingright@\relax
- \hskip\skip@
- \box\eql at fieldbox@
- \fi
- \tabskip\eql at colsep@
+ \eql at shape@pos@\m at ne
+ \setbox\eql at fieldbox@\hbox{%
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ \eql at tagging@mathsave
+ $%
+ \eql at tagging@mathaddlast
+ }%
+ \ifnum\eql at shape@pos@=\m at ne
+ \eql at shape@eval
+ \fi
+ \ifcase\eql at shape@pos@
+ \kern\eql at shape@amount@
+ \box\eql at fieldbox@
+ \skip@\@flushglue
+ \advance\skip@\eql at paddingleft@\relax
+ \advance\skip@\eql at paddingright@\relax
+ \advance\skip at -\eql at shape@amount@\relax
+ \hskip\skip@
+ \eql at tagging@alignleft
+ \or
+ \skip@\@flushglue
+ \advance\skip@\eql at paddingleft@\relax
+ \hskip\skip@
+ \box\eql at fieldbox@
+ \skip@\@flushglue
+ \advance\skip@\eql at paddingright@\relax
+ \hskip\skip@
+ \eql at tagging@aligncenter
+ \or
+ \skip@\@flushglue
+ \advance\skip@\eql at paddingleft@\relax
+ \advance\skip@\eql at paddingright@\relax
+ \hskip\skip@
+ \box\eql at fieldbox@
+ \eql at tagging@alignright
+ \fi
+ \tabskip\eql at colsep@\relax
\crcr
\noalign{%
\eql at hook@blockbefore
@@ -2259,6 +2430,7 @@
\noalign{%
\eql at hook@blockafter
}%
+ \eql at tagging@tablesaveinner
\egroup
}
% \end{macrocode}
@@ -2275,17 +2447,16 @@
\eql at nextopt@process{equationsbox}%
\let\eql at punct@block\eql at punct@main
\let\eql at punct@main\relax
- \setlength\eql at colsep@\eql at box@colsep
- \setlength\eql at paddingleft@\eql at paddingleft@val
- \setlength\eql at paddingright@\eql at paddingright@val
- \setlength\eql at indent@\eql at indent@val
+ \eql at colsep@\glueexpr\eql at box@colsep\relax
+ \eql at paddingleft@\glueexpr\eql at paddingleft@val\relax
+ \eql at paddingright@\glueexpr\eql at paddingright@val\relax
+ \eql at indent@\glueexpr\eql at indent@val\relax
\eql at stack@save at boxed
\let\eql at flushleft\eql at false
\eql at row@\z@
\eql at totalrows@\@M
\eql at shape@sel
- \setlength\skip@\eql at box@marginleft
- \hskip\skip@
+ \hskip\glueexpr\eql at box@marginleft\relax
\eql at box@box\bgroup
\eql at display@leave
\let\\\eql at box@cr
@@ -2302,8 +2473,8 @@
\newcommand{\eql at box@end}{%
\eql at box@close
\egroup
- \setlength\skip@\eql at box@marginright
- \hskip\skip@
+ \eql at tagging@tableaddinner
+ \hskip\glueexpr\eql at box@marginright\relax
\eql at stack@restore
\eql at box@endmath
}
@@ -2342,210 +2513,21 @@
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \section{Subequation Numbering}
-%
-% We replicate the \ctanpkg{amsmath} functionality to
-% number a block of equations with a common number and
-% a sub-numbering.
-%
-% \lcounter{parentequation}
-% We define a counter to store the main equation number
-% while in subequation mode.
-% It makes sense to share this definition
-% with \ctanpkg{amsmath} as |parentequation|,
-% and we need to undefine it when \ctanpkg{amsmath}
-% is loaded at a later stage:
-% \begin{macrocode}
-\eql at amsmath@futurebefore{
- \let\c at parentequation\@undefined
- \let\theparentequation\@undefined
-}
-\ifdefined\c at parentequation\else
-\newcounter{parentequation}
-\fi
-% \end{macrocode}
-%
-% \macro{\eql at subequations@template}
-% We store a template which will installed as |\theequation|
-% in subequations mode:
-% \TODO need to protect something?!
-% \begin{macrocode}
-\def\eql at subequations@template{\theparentequation\alph{equation}}
-% \end{macrocode}
-%
-% \macro{\eql at subequations@active}
-% A boolean register which tells whether subequations are in use
-% and thus must not be invoked again:
-% \begin{macrocode}
-\let\eql at subequations@active\eql at false
-% \end{macrocode}
-%
-% \macro{\eql at subequations@init}
-% Low-level initialise the subequations mode.
-% Store the equation counter in |\eql at subequations@restorecounter|
-% for the case that no equation numbers will be used.
-% Step the equation counter, copy it to |parentequation|
-% and initialise |\theparentequation|
-% (and its \ctanpkg{hyperref} counterpart)
-% with the expanded current value of |\theequation|;
-% fill with tag data instead if a tag has been specified.
-% Reset the equation counter and use the template
-% for |\thequation|:
-% \begin{macrocode}
-\def\eql at subequations@init{%
- \edef\eql at subequations@restorecounter{%
- \global\c at equation\the\c at equation\relax}%
- \ifdefined\eql at blocktag
- \expandafter\eql at tag@makenext\eql at blocktag
- \eql at nexttag
- \global\advance\eql at numbering@refcount@\@ne
- \protected at edef\theHparentequation{eql-\the\eql at numbering@refcount@}%
- \protected at edef\theparentequation{\eql at tag@text}%
- \else
- \advance\c at equation\@ne
- \protected at edef\theparentequation{\theequation}%
- \ifdefined\theHequation
- \protected at edef\theHparentequation{\theHequation}%
- \fi
- \fi
- \global\c at parentequation\c at equation
- \global\c at equation\z@
- \let\theequation\eql at subequations@template
- \def\theHequation{\theHparentequation.\arabic{equation}}%
-}
-% \end{macrocode}
-%
-% \macro{\eql at subequations@close}
-% Low-level close the subequations mode.
-% If no number has been used, return to the original equation counter,
-% otherwise use the value stored in |parentequation|.
-% Note that we cannot use |\setcounter| here because the
-% \ctanpkg{calc} version would involve actions which are not
-% allowed after |\halign| within a display equation:
-% \begin{macrocode}
-\def\eql at subequations@close{%
- \ifnum\c at equation=\z@
- \eql at subequations@restorecounter
- \else
- \global\c at equation\c at parentequation
- \fi
-}
-% \end{macrocode}
-%
-% \macro{\eql at subequations@start}
-% Start the subequations environment with optional parameters in |#1|.
-% Enter subequations mode and set an anchor for subsequent |\label|'s.
-% Manually print the \ctanpkg{showkeys} tag:
-% \TODO join with other similar anchor routines |\eql at numbering@printsubeqlabel|
-% \begin{macrocode}
-\def\eql at subequations@start{%
- \let\eql at blocktag\@undefined
- \let\eql at blocklabel\@undefined
- \eql at nextopt@process{subequations}%
- \eql at subequations@init
- \global\advance\eql at numbering@refcount@\@ne
- \edef\eql at subequations@currentHref{equation.eql-\the\eql at numbering@refcount@}%
- \eql at Hy@anchor\eql at subequations@currentHref
- \edef\eql at subequations@thepage{\thepage}%
- \def\@currentcounter{equation}%
- \let\@currentHref\eql at subequations@currentHref
- \protected at edef\@currentlabel{\p at equation\theparentequation}%
- \let\@currentlabelname\eql at labelname@default
- \let\eql at subequations@active\eql at true
- \ifdefined\eql at blocklabel
- \ifdefined\eql at SK
- \SK@\SK@@label\eql at blocklabel
- \fi
- \fi
- \ignorespaces
-}
-% \end{macrocode}
-%
-% \macro{\eql at subequations@end}
-% End the subequations environment.
-% Issue the label if one has been specified and
-% an equation number has actually been used.
-% Then close subequations mode:
-% \begin{macrocode}
-\def\eql at subequations@end{%
- \ifnum\c at equation>\z@
- \ifdefined\eql at blocklabel
- \begingroup
- \def\@currentcounter{equation}%
- \let\thepage\eql at subequations@thepage
- \let\@currentHref\eql at subequations@currentHref
-% \TODO how about tag* ?! also within equations!
- \protected at edef\@currentlabel{\p at equation\theparentequation}%
- \let\@currentlabelname\eql at labelname@default
- \expandafter\eql at label@clean\expandafter{\eql at blocklabel}%
- \endgroup
- \fi
- \fi
- \eql at subequations@close
- \ignorespacesafterend
-}
-% \end{macrocode}
-%
-% \environment{subequations}
-% The subequations environment tests for optional parameters
-% and passes on to the start and end routines:
-% \begin{macrocode}
-\newenvironment{eql at subequations}{%
-%<dev>\eql at dev@enterenv
- \eql at subequations@testall\eql at subequations@start%
-}{%
- \eql at subequations@end
-%<dev>\eql at dev@leaveenv
-}
-% \end{macrocode}
-%
-% \TODO describe
-% \begin{macrocode}
-\def\eql at subequations@testall{\eql at subequations@testopt}
-\def\eql at subequations@testopt#1{%
- \eql at ifnextchar@tight[%]
- {\eql at subequations@addopt{\eql at subequations@testat{#1}}}%
- {\eql at subequations@testat{#1}}}
-\def\eql at subequations@addopt#1[#2]{\eqnaddopt{#2}#1}
-\def\eql at subequations@testat#1{%
- \eql at ifat@tight%
- {\eql at subequations@addlabel{#1}}%
- {#1}}
-\def\eql at subequations@addlabel#1#2{\eqnaddopt{label={#2}}#1}
-% \end{macrocode}
-%
-%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \section{Equation Numbering}
%
% \TODO describe
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \subsection{Macros Shared with Amsmath}
+% \subsection{Tag Formatting}
%
% \TODO describe
%
-% \macro{\maketag@@@}
% \begin{macrocode}
-\ifdefined\maketag@@@\else
-\def\maketag@@@#1{\hbox{\m at th\normalfont#1}}
-\fi
-% \end{macrocode}
-%
-% \macro{\tagform@}
-% \begin{macrocode}
-\ifdefined\tagform@\else
-\def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}
-\fi
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\eql at tag@setmake@#1{%
- \def\maketag@@@##1{\hbox{\m at th\normalfont#1}}%
+\def\eql at tag@setbox@#1{%
+ \def\eql at tag@box##1{#1}%
}
-\def\eql at tag@setmake#1{%
- \def\maketag@@@##1{\hbox{\m at th\normalfont#1}}%
+\def\eql at tag@setbox#1{%
+ \def\eql at tag@box##1{\hbox{\m at th\normalfont#1}}%
}
% \end{macrocode}
%
@@ -2552,15 +2534,21 @@
% \TODO describe
% \begin{macrocode}
\def\eql at tag@setform@#1{%
- \def\tagform@##1{\maketag@@@{#1}}%
+ \def\eql at tag@form##1{#1}%
}
\def\eql at tag@setform#1#2#3{%
- \def\tagform@##1{\maketag@@@{#1\ignorespaces#2\unskip\@@italiccorr#3}}%
+ \def\eql at tag@form##1{#1\ignorespaces#2\unskip\@@italiccorr#3}%
}
% \end{macrocode}
-
+%
+% \begin{macrocode}
+\eql at tag@setbox{#1}
+\eql at tag@setform({#1})
+\def\eql at tag@boxedform#1{\eql at tag@box{\eql at tag@form{#1}}}
+% \end{macrocode}
+%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \paragraph{raise tags}
+% \paragraph{Raise Tags}
%
% \ldimen{\eql at raisetag@amount@}
% \begin{macrocode}
@@ -2577,14 +2565,12 @@
%
% \TODO describe
% \begin{macrocode}
-\eql at amsmath@after{\let\eql at raisetag@default\raisetag}
-\eql at amsmath@futurebefore{\let\raisetag\@undefined}
-\let\raisetag\eql at raisetag@default
+\eql at amsmath@let\raisetag\eql at raisetag@default
% \end{macrocode}
%
% \TODO maybe introduce a star form to enforce raise?
% \begin{macrocode}
-\def\eql at raisetag#1{\setlength\dimen@{#1}\global\eql at raisetag@amount@\dimen@}%
+\def\eql at raisetag#1{\global\eql at raisetag@amount@\glueexpr#1\relax}%
% \end{macrocode}
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2593,33 +2579,33 @@
% \TODO describe
%
% \begin{macrocode}
-\let\eql at SK\@undefined
-\let\eql at SK@lab at relax\@empty
-\let\eql at SK@makelabel\@gobble
+\let\eql at SK@loaded\eql at false
+\let\eql at SK@label\@gobble
+\let\eql at SK@clearlabel\@empty
+\let\eql at SK@setlabel\@gobble
\let\eql at SK@printlabel at right\@empty
\let\eql at SK@printlabel at left\@empty
\let\eql at SK@printlabel at line\@empty
\def\eql at label@clean{\eql at label@org}
\AddToHook{package/showkeys/after}{
- \let\eql at SK\@empty
- \def\eql at SK@lab at relax{\let\eql at SK@lab\relax}
- \eql at SK@lab at relax
+ \let\eql at SK@loaded\eql at true
+ \def\eql at SK@label#1{\SK@\SK@@label#1}
+ \def\eql at SK@clearlabel{\let\eql at SK@lab\relax}
+ \eql at SK@clearlabel
\def\eql at SK@@label#1>#2\SK@{%
\def\eql at SK@lab{\smash{\SK at labelcolor\showkeyslabelformat{#2}}}%
}
- \def\eql at SK@makelabel#1{%
- \SK@\eql at SK@@label#1%
- }
+ \def\eql at SK@setlabel#1{\SK@\eql at SK@@label#1}
\def\eql at SK@printlabel at right{%
\ifx\eql at SK@lab\relax\else
\rlap{\kern\marginparsep\eql at SK@lab}%
- \eql at SK@lab at relax
+ \eql at SK@clearlabel
\fi
}
\def\eql at SK@printlabel at left{%
\ifx\eql at SK@lab\relax\else
\llap{\eql at SK@lab\kern\marginparsep}%
- \eql at SK@lab at relax
+ \eql at SK@clearlabel
\fi
}
\def\eql at SK@printlabel at line{%
@@ -2631,7 +2617,7 @@
\eql at SK@lab
\kern\marginparsep
}%
- \eql at SK@lab at relax
+ \eql at SK@clearlabel
\else
\rlap{%
\dimen@\displaywidth
@@ -2640,7 +2626,7 @@
\eql at SK@lab
}%
\fi
- \eql at SK@lab at relax
+ \eql at SK@clearlabel
\prevdepth\dimen@
\fi
}
@@ -2678,9 +2664,6 @@
% \begin{macrocode}
\def\eql at tag@default{%
\eql at error{\string\tag\space not allowed here}{}\eql at tag@gobble}
-\eql at amsmath@after{
- \let\eql at tag@default\tag
-}
\let\tag\eql at tag@default
% \end{macrocode}
%
@@ -2719,7 +2702,7 @@
% \begin{macrocode}
\def\eql at tag@makenext at star[#1]#2{%
\global\def\eql at nexttag{%
- \let\eql at tag@tool\maketag@@@
+ \let\eql at tag@tool\@firstofone
\protected at edef\eql at tag@text{#2}%
\protected at edef\eql at tag@label{#1}%
}%
@@ -2726,7 +2709,7 @@
}
\def\eql at tag@makenext@[#1]#2{%
\global\def\eql at nexttag{%
- \let\eql at tag@tool\tagform@
+ \let\eql at tag@tool\eql at tag@form
\protected at edef\eql at tag@text{#2}%
\protected at edef\eql at tag@label{#1}%
\protected at edef\eql at tag@label{\p at equation\eql at tag@label}%
@@ -2743,13 +2726,15 @@
% \begin{macrocode}
\newcount\eql at numbering@refcount@
\eql at numbering@refcount@\z@
+\def\eql at numbering@ref{equation.eql-\the\eql at numbering@refcount@}
+\def\eql at numbering@refstep{\global\advance\eql at numbering@refcount@\@ne}
% \end{macrocode}
%
% \TODO describe
% \begin{macrocode}
\def\eql at numbering@makeblockanchor{%
- \global\advance\eql at numbering@refcount@\@ne
- \global\edef\eql at label@currentHref{equation.eql-\the\eql at numbering@refcount@}%
+ \eql at numbering@refstep
+ \global\edef\eql at label@currentHref{\eql at numbering@ref}%
\eql at Hy@anchor\eql at label@currentHref
\global\edef\eql at label@thepage{\thepage}%
}
@@ -2773,13 +2758,13 @@
\eql at nexttag
\def\@currentcounter{equation}%
\let\@currentlabel\eql at tag@label
- \global\advance\eql at numbering@refcount@\@ne
- \edef\@currentHref{equation.eql-\the\eql at numbering@refcount@}%
+ \eql at numbering@refstep
+ \edef\@currentHref{\eql at numbering@ref}%
\eql at Hy@anchor\@currentHref
\global\let\eql at nexttag\@undefined
\else
\refstepcounter{equation}%
- \let\eql at tag@tool\tagform@
+ \let\eql at tag@tool\eql at tag@form
\edef\eql at tag@text{\theequation}%
\fi
}
@@ -2788,7 +2773,7 @@
% \begin{macrocode}
\def\eql at compose@label{%
\ifmeasuring@\else
- \eql at SK@lab at relax
+ \eql at SK@clearlabel
\ifdefined\eql at nextlabel
\ifnum
\ifnum\eql at numbering@target@<\z@
@@ -2806,7 +2791,7 @@
% \TODO describe
% \begin{macrocode}
\def\eql at compose@label@{%
- \eql at SK@makelabel\eql at nextlabel
+ \eql at SK@setlabel\eql at nextlabel
\begingroup
\ifnum\eql at numbering@target@=\eql at row@
\eql at numbering@setblockanchor
@@ -2821,7 +2806,12 @@
% \TODO describe
% \begin{macrocode}
\def\eql at compose@tag{%
- \eql at tag@tool\eql at tag@text
+ \eql at tagging@tagbegin
+ \eql at tag@box{%
+ \eql at tag@tool\eql at tag@text
+ \eql at tagging@tagsave
+ }%
+ \eql at tagging@tagend
}
% \end{macrocode}
%
@@ -2845,10 +2835,10 @@
\def\eql at compose@measure{%
\ifdefined\eql at nexttag
\eql at nexttag
- \eql at tag@tool\eql at tag@text
+ \eql at tag@box{\eql at tag@tool\eql at tag@text}%
\else
\stepcounter{equation}%
- \tagform@\theequation
+ \eql at tag@box{\eql at tag@form\theequation}%
\fi
\ifnum\eql at numbering@target@<\z@
\global\let\eql at nextlabel\@undefined
@@ -2936,7 +2926,7 @@
\def\eql at numbering@printsubeqlabel{%
\ifdefined\eql at parentlabel
\eql at numbering@makeblockanchor
- \eql at SK@makelabel\eql at parentlabel
+ \eql at SK@setlabel\eql at parentlabel
\begingroup
\def\@currentcounter{equation}%
\eql at numbering@setblockanchor
@@ -3118,7 +3108,6 @@
\let\eql at numbering@blocktag\@undefined
% \end{macrocode}
%
-% \TODO where does this belong?
% \begin{macrocode}
\eql at amsmath@after{
\let\eql at print@eqnum at default\print at eqnum
@@ -3372,11 +3361,189 @@
}
% \end{macrocode}
%
+%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% \subsection{Subequations}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \section{Subequation Numbering}
%
+% We replicate the \ctanpkg{amsmath} functionality to
+% number a block of equations with a common number and
+% a sub-numbering.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Definitions}
+%
+% \lcounter{parentequation}
+% We define a counter to store the main equation number
+% while in subequation mode.
+% It makes sense to share this definition
+% with \ctanpkg{amsmath} as |parentequation|,
+% and we need to undefine it when \ctanpkg{amsmath}
+% is loaded at a later stage:
+% \begin{macrocode}
+\eql at amsmath@undefine\c at parentequation
+\eql at amsmath@undefine\theparentequation
+\ifdefined\c at parentequation\else
+\newcounter{parentequation}
+\fi
+% \end{macrocode}
+%
+% \macro{\eql at subequations@template}
+% We store a template which will installed as |\theequation|
+% in subequations mode:
+% \TODO need to protect something?!
+% \begin{macrocode}
+\def\eql at subequations@template{\theparentequation\alph{equation}}
+% \end{macrocode}
+%
+% \macro{\eql at subequations@active}
+% A boolean register which tells whether subequations are in use
+% and thus must not be invoked again:
+% \begin{macrocode}
+\let\eql at subequations@active\eql at false
+% \end{macrocode}
+%
+% \macro{\eql at subequations@init}
+% Low-level initialise the subequations mode.
+% Store the equation counter in |\eql at subequations@restorecounter|
+% for the case that no equation numbers will be used.
+% Step the equation counter, copy it to |parentequation|
+% and initialise |\theparentequation|
+% (and its \ctanpkg{hyperref} counterpart)
+% with the expanded current value of |\theequation|;
+% fill with tag data instead if a tag has been specified.
+% Reset the equation counter and use the template
+% for |\thequation|:
+% \begin{macrocode}
+\def\eql at subequations@init{%
+ \edef\eql at subequations@restorecounter{%
+ \global\c at equation\the\c at equation\relax}%
+ \ifdefined\eql at blocktag
+ \expandafter\eql at tag@makenext\eql at blocktag
+ \eql at nexttag
+ \eql at numbering@refstep
+ \protected at edef\theHparentequation{\eql at numbering@ref}%
+ \protected at edef\theparentequation{\eql at tag@text}%
+ \else
+ \advance\c at equation\@ne
+ \protected at edef\theparentequation{\theequation}%
+ \ifdefined\theHequation
+ \protected at edef\theHparentequation{\theHequation}%
+ \fi
+ \fi
+ \global\c at parentequation\c at equation
+ \global\c at equation\z@
+ \let\theequation\eql at subequations@template
+ \def\theHequation{\theHparentequation.\arabic{equation}}%
+}
+% \end{macrocode}
+%
+% \macro{\eql at subequations@close}
+% Low-level close the subequations mode.
+% If no number has been used, return to the original equation counter,
+% otherwise use the value stored in |parentequation|.
+% Note that we cannot use |\setcounter| here because the
+% \ctanpkg{calc} version would involve actions which are not
+% allowed after |\halign| within a display equation:
+% \begin{macrocode}
+\def\eql at subequations@close{%
+ \ifnum\c at equation=\z@
+ \eql at subequations@restorecounter
+ \else
+ \global\c at equation\c at parentequation
+ \fi
+}
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Environment}
+%
+% \macro{\eql at subequations@start}
+% Start the subequations environment with optional parameters in |#1|.
+% Enter subequations mode and set an anchor for subsequent |\label|'s.
+% Manually print the \ctanpkg{showkeys} tag:
+% \TODO join with other similar anchor routines |\eql at numbering@printsubeqlabel|
+% \begin{macrocode}
+\def\eql at subequations@start{%
+ \let\eql at blocktag\@undefined
+ \let\eql at blocklabel\@undefined
+ \eql at nextopt@process{subequations}%
+ \eql at subequations@init
+ \eql at numbering@refstep
+ \edef\eql at subequations@currentHref{\eql at numbering@ref}%
+ \eql at Hy@anchor\eql at subequations@currentHref
+ \edef\eql at subequations@thepage{\thepage}%
+ \def\@currentcounter{equation}%
+ \let\@currentHref\eql at subequations@currentHref
+ \protected at edef\@currentlabel{\p at equation\theparentequation}%
+ \let\@currentlabelname\eql at labelname@default
+ \let\eql at subequations@active\eql at true
+ \ifdefined\eql at blocklabel
+ \eql at SK@label\eql at blocklabel
+ \fi
+ \ignorespaces
+}
+% \end{macrocode}
+%
+% \macro{\eql at subequations@end}
+% End the subequations environment.
+% Issue the label if one has been specified and
+% an equation number has actually been used.
+% Then close subequations mode:
+% \begin{macrocode}
+\def\eql at subequations@end{%
+ \ifnum\c at equation>\z@
+ \ifdefined\eql at blocklabel
+ \begingroup
+ \def\@currentcounter{equation}%
+ \let\thepage\eql at subequations@thepage
+ \let\@currentHref\eql at subequations@currentHref
+% \TODO how about tag* ?! also within equations!
+ \protected at edef\@currentlabel{\p at equation\theparentequation}%
+ \let\@currentlabelname\eql at labelname@default
+ \expandafter\eql at label@clean\expandafter{\eql at blocklabel}%
+ \endgroup
+ \fi
+ \fi
+ \eql at subequations@close
+ \ignorespacesafterend
+}
+% \end{macrocode}
+%
+% \environment{subequations}
+% The subequations environment tests for optional parameters
+% and passes on to the start and end routines:
+% \begin{macrocode}
+\newenvironment{eql at subequations}{%
+%<dev>\eql at dev@enterenv
+ \eql at subequations@testall\eql at subequations@start%
+}{%
+ \eql at subequations@end
+%<dev>\eql at dev@leaveenv
+}
+% \end{macrocode}
+%
% \TODO describe
+% \begin{macrocode}
+\def\eql at subequations@testall{\eql at subequations@testopt}
+\def\eql at subequations@testopt#1{%
+ \eql at ifnextchar@tight[%]
+ {\eql at subequations@addopt{\eql at subequations@testat{#1}}}%
+ {\eql at subequations@testat{#1}}}
+\def\eql at subequations@addopt#1[#2]{\eqnaddopt{#2}#1}
+\def\eql at subequations@testat#1{%
+ \eql at ifat@tight%
+ {\eql at subequations@addlabel{#1}}%
+ {#1}}
+\def\eql at subequations@addlabel#1#2{\eqnaddopt{label={#2}}#1}
+% \end{macrocode}
%
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Subequation Scheme}
+%
+% \TODO describe
+%
% \begin{macrocode}
\def\eql at numbering@subeq at init{%
\let\eql at save@theequation\theequation
@@ -3447,9 +3614,8 @@
% \begin{macrocode}
\DeclareRobustCommand{\eql at displaybreak@default}[1][4]{%
\eql at warning{Invalid use of \string\displaybreak}{}}
-\eql at amsmath@futurebefore{\let\displaybreak\@undefined}
\eql at amsmath@after{\let\eql at displaybreak@default\displaybreak}
-\let\displaybreak\eql at displaybreak@default
+\eql at amsmath@let\displaybreak\eql at displaybreak@default
% \end{macrocode}
%
% \begin{macrocode}
@@ -3498,14 +3664,6 @@
%
% \TODO describe
%
-% \macro{\eql at display@atend}
-% \begin{macrocode}
-\def\eql at display@atend#1{%
- \expandafter\def\expandafter\eql at display@doatend\expandafter
- {\eql at display@doatend#1}%
-}
-% \end{macrocode}
-%
% \lskip{\eql at vspaceskip@}
% \lskip{\eql at abovespace@}
% \lskip{\eql at belowspace@}
@@ -3517,9 +3675,7 @@
\let\eql at vspace@org\vspace
\def\eql at vspace{\eql at ifstar@loose\eql at vspace@\eql at vspace@}
\def\eql at vspace@#1{%
- \setlength\skip@{#1}%
- \global\advance\eql at vspaceskip@\skip@
-}
+ \global\advance\eql at vspaceskip@\glueexpr#1\relax}
% \end{macrocode}
%
% \macro{\eql at display@init}
@@ -3541,55 +3697,141 @@
% \TODO must not use setlength or setcounter when calc is loaded
% \begin{macrocode}
\def\eql at display@close{%
+ \ifdim\eql at display@firstavail@<\z@
+ \eql at display@firstavail@\z@
+ \fi
+ \eql at skip@mode at leave@\z@
\ifdim\eql at halign@prevdepth@=\maxdimen
\ifdim\predisplaysize=-\maxdimen
-% \TODO hbox was clear (noindent)
- \abovedisplayskip\eql at abovedisplaycontskip@
-% \TODO whether to enable or disable short
- \predisplaysize\maxdimen
- \abovedisplayshortskip\abovedisplayskip
- \belowdisplayshortskip\belowdisplayskip
+ \eql at skip@mode at above@\tw@
+ \eql at skip@mode at below@\eql at skip@mode at cont@
+ \else
+ \eql at skip@mode at above@\z@
+ \eql at skip@mode at below@\z@
+ \advance\eql at display@firstavail@\displayindent
+ \ifdim\eql at display@firstavail@>\predisplaysize
+% \TODO: process this here or in below ifcase for short?
+ \ifcase\eql at skip@mode at short@
+ \or
+ \eql at skip@mode at above@\@ne
+ \or
+ \eql at skip@mode at above@\@ne
+ \ifnum\eql at row@=\tw@
+ \eql at skip@mode at below@\@ne
+ \fi
+ \or
+ \eql at skip@mode at above@\@ne
+ \eql at skip@mode at below@\@ne
+ \fi
+ \fi
\fi
\else
-% \TODO should tagskip be allowed to override these?! rather not
- \ifdim\eql at halign@prevdepth@=\@m\p@
+ \ifdim\eql at halign@prevdepth@=-\@m\p@
+ \eql at skip@mode at above@4\relax
+ \eql at skip@mode at below@\eql at skip@mode at top@
+ \eql at skip@mode at leave@\z@
\predisplaypenalty\z@
- \abovedisplayskip\eql at abovedisplaytopskip@
-% \TODO whether to offer this?
- \belowdisplayskip\eql at belowdisplaytopskip@
+ \ifcase\eql at skip@mode at top@
+ \or
+ \or
+ \or
+ \eql at skip@mode at leave@\@ne
+ \or
+ \postdisplaypenalty\z@
+ \eql at skip@mode at leave@\tw@
+ \fi
\else
+ \eql at skip@mode at above@\thr@@
+ \eql at skip@mode at below@\eql at skip@mode at par@
+ \eql at skip@mode at leave@\z@
\predisplaypenalty\z@
- \abovedisplayskip\eql at abovedisplayparskip@
+ \ifnum\eql at skip@mode at par@=\thr@@
+ \eql at skip@mode at leave@\@ne
+ \fi
\fi
-% \TODO whether to enable or disable short
- \predisplaysize\maxdimen
- \abovedisplayshortskip\abovedisplayskip
- \belowdisplayshortskip\belowdisplayskip
\fi
- \eql at display@doatend
- \ifdim\eql at display@firstavail@<\z@
- \eql at display@firstavail@\z@
+ \ifdefined\eql at skip@force at above
+ \eql at skip@mode at above@\eql at skip@force at above\relax
\fi
- \advance\eql at display@firstavail@\displayindent
- \ifdim\eql at display@firstavail@>\predisplaysize
- \ifcase\eql at displayshortmode@
+ \ifdefined\eql at skip@force at below
+ \eql at skip@mode at below@\eql at skip@force at below\relax
+ \fi
+ \ifdefined\eql at skip@force at leave
+ \eql at skip@mode at leave@\eql at skip@force at leave\relax
+ \fi
+ \ifodd\eql at raisetag@firstlast@
+ \ifcase\eql at skip@mode at above@
+ \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
\or
- \abovedisplayskip\abovedisplayshortskip
+ \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
\or
- \abovedisplayskip\abovedisplayshortskip
- \ifnum\eql at row@=\tw@
- \belowdisplayskip\belowdisplayshortskip
- \fi
+ \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
\or
- \abovedisplayskip\abovedisplayshortskip
- \belowdisplayskip\belowdisplayshortskip
+ \abovedisplayskip\glueexpr\eql at skip@partag at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@partag at above\relax
+ \or
+ \abovedisplayskip\z at skip
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@medtag at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@custom at above\relax
\fi
+ \else
+ \ifcase\eql at skip@mode at above@
+ \abovedisplayskip\glueexpr\eql at skip@long at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@short at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@cont at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@par at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@top at above\relax
+ \or
+ \abovedisplayskip\z at skip
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@medtag at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@custom at above\relax
+ \fi
\fi
- \ifodd\eql at raisetag@firstlast@
- \abovedisplayskip\eql at abovedisplaytagskip@
- \fi
\ifnum\eql at raisetag@firstlast@>\@ne
- \belowdisplayskip\eql at belowdisplaytagskip@
+ \ifcase\eql at skip@mode at below@
+ \belowdisplayskip\glueexpr\eql at skip@tag at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@tag at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@tag at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@partag at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@partag at below\relax
+ \or
+ \belowdisplayskip\z at skip
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@medtag at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@custom at below\relax
+ \fi
+ \else
+ \ifcase\eql at skip@mode at below@
+ \belowdisplayskip\glueexpr\eql at skip@long at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@short at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@cont at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@par at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@top at below\relax
+ \or
+ \belowdisplayskip\z at skip
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@medtag at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@custom at below\relax
+ \fi
\fi
\ifnum\eql at displaybreak@pen@=\@MM\else
\postdisplaypenalty\eql at displaybreak@pen@
@@ -3597,14 +3839,16 @@
\ifnum\eql at displaybreak@prepen@=\@MM\else
\predisplaypenalty\eql at displaybreak@prepen@
\fi
-% \TODO here or above?
\advance\abovedisplayskip\eql at abovespace@
\advance\belowdisplayskip\eql at belowspace@
\advance\belowdisplayskip\eql at vspaceskip@
+ \abovedisplayshortskip\abovedisplayskip
+ \belowdisplayshortskip\belowdisplayskip
\count@\prevgraf
\advance\count@\eql at row@
\advance\count at -\tw@
\prevgraf\count@
+ \global\eql at skip@mode at leave@\eql at skip@mode at leave@
}
% \end{macrocode}
%
@@ -3614,13 +3858,15 @@
\let\tag\eql at tag@default
\let\raisetag\eql at raisetag@default
\let\displaybreak\eql at displaybreak@default
+ \let\intertext\eql at intertext@default
\let\vspace\eql at vspace@org
}
\expandafter\def\expandafter\@arrayparboxrestore\expandafter{%
\@arrayparboxrestore
\eql at display@leave
-% \TODO should we always revert to originals? or only if switch is set
- \eql at amprevert
+ \ifdefined\eql at ampproof@active
+ \eql at amprevert
+ \fi
\@displayfalse
}
% \end{macrocode}
@@ -3654,16 +3900,14 @@
% \end{macrocode}
%
% \TODO describe
+% \TODO note on \string\spread at equation
% \begin{macrocode}
\def\eql at halign@spread{%
- \dimen@\eql at spread\relax
- \advance\dimen@\normalbaselineskip
- \ifdim\dimen@>\baselineskip
- \normalbaselines
- \dimen@\eql at spread\relax
- \advance\dimen@\normalbaselineskip
- \advance\dimen at -\baselineskip
- \openup\dimen@
+ \eql at spread@amount@\glueexpr\eql at spread\relax
+ \advance\eql at spread@amount@\normalbaselineskip
+ \advance\eql at spread@amount at -\baselineskip
+ \ifdim\eql at spread@amount@>\z@
+ \openup\eql at spread@amount@
\ifdefined\spread at equation
\let\spread at equation\@empty
\fi
@@ -3686,20 +3930,37 @@
% \end{macrocode}
%
% \begin{macrocode}
+\def\eql at halign@leave{%
+ \ifcase\eql at skip@mode at leave@
+ \or
+ \endgraf
+ \or
+ \endgraf
+ \prevdepth-\@m\p@
+ \fi
+}
+% \end{macrocode}
+%
+% \TODO: how about penalty here? not for entry into display
+% \begin{macrocode}
\def\eql at halign@before{%
\ifdim\eql at halign@prevdepth@=\maxdimen\else
\prevdepth\eql at halign@prevdepth@
\fi
\ifdim\prevdepth=-\@m\p@\else
- \skip@\normalbaselineskip
- \advance\skip at -\eql at display@height\relax
- \advance\skip at -\prevdepth\relax
- \ifdim\skip@<\normallineskiplimit
- \vskip\normallineskip
+ \ifdefined\eql at display@height
+ \skip@\baselineskip
+ \advance\skip at -\glueexpr\eql at display@height\relax
+ \advance\skip at -\prevdepth\relax
+ \ifdim\skip@<\lineskiplimit
+ \skip@\lineskip
+ \fi
+ \advance\skip at -\eql at spread@amount@\relax
+ \vskip\skip@
+ \nointerlineskip
\else
- \vskip\skip@
+ \vskip-\eql at spread@amount@\relax
\fi
- \nointerlineskip
\fi
}
% \end{macrocode}
@@ -3707,7 +3968,9 @@
% \TODO describe
% \begin{macrocode}
\def\eql at halign@after{%
- \prevdepth\eql at display@depth\relax
+ \ifdefined\eql at display@depth
+ \prevdepth\glueexpr\eql at display@depth\relax
+ \fi
}
% \end{macrocode}
%
@@ -4060,7 +4323,7 @@
}%
}
\def\eql at adjust@shoveleft@[#1]{%
- \eql at sregroup\setlength\dimen@{#1}\global\eql at shape@amount@\dimen@}
+ \eql at sregroup\global\eql at shape@amount@\glueexpr#1\relax}
\def\eql at adjust@shovecenter{%
\global\eql at shape@pos@\@ne\global\eql at shape@amount@\z@}
\def\eql at adjust@shoveright{%
@@ -4089,7 +4352,12 @@
% \begin{macrocode}
\def\eql at adjust@print#1#2{%
\eql at restore@hfuzz
- \hbox to\displaywidth{#1\unhbox\eql at fieldbox@\unkern#2}%
+ \hbox to\displaywidth{%
+ #1%
+ \unhbox\eql at fieldbox@\unkern
+ #2%
+ \eql at tagging@mathaddlast
+ }%
}
% \end{macrocode}
%
@@ -4148,6 +4416,14 @@
% current alignment position and on whether a tag is present or not:
% \begin{macrocode}
\def\eql at adjust@sel at tag{%
+ \eql at tagging@tagaddbox
+ \ifcase\eql at shape@pos@
+ \eql at tagging@alignleft
+ \or
+ \eql at tagging@aligncenter
+ \or
+ \eql at tagging@alignright
+ \fi
\csname eql at adjust%
@\ifdefined\eql at flushleft flushleft\else center\fi
@\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
@@ -4155,6 +4431,14 @@
@tag\endcsname
}
\def\eql at adjust@sel at notag{%
+ \eql at tagging@tagaddbox
+ \ifcase\eql at shape@pos@
+ \eql at tagging@alignleft
+ \or
+ \eql at tagging@aligncenter
+ \or
+ \eql at tagging@alignright
+ \fi
\csname eql at adjust%
@\ifdefined\eql at flushleft flushleft\else center\fi
@\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
@@ -4682,6 +4966,9 @@
% \TODO describe
% \begin{macrocode}
\def\eql at single@start{%
+ \eql at halign@catchprevdepth
+ \eql at tagging@start
+ $$%$$
\eql at numbering@eval at mode
\let\eql at numbering@subeq at use\eql at false
\eql at stack@save at single
@@ -4714,9 +5001,21 @@
\eql at hook@eqout
\eql at single@end at sel
\eql at stack@restore
+ $$%$$
+ \eql at tagging@end
+ \eql at halign@leave
}
% \end{macrocode}
%
+% \TODO: try to feed in tagging after catchprevdepth
+% \begin{macrocode}
+\def\eql at single@main{%
+ \expandafter\eql at single@start
+ \eql at scan@body
+ \eql at single@end
+}
+% \end{macrocode}
+%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \subsection{Native}
%
@@ -4776,6 +5075,7 @@
%
% \begin{macrocode}
\def\eql at single@end at adjust{%
+ \eql at tagging@mathsave
$%$
\hfil
\kern\z@
@@ -4800,6 +5100,7 @@
\fi
\cr
\noalign{\eql at halign@after}%
+ \eql at tagging@tablesavelines
}%
\eql at row@\tw@
\eql at display@close
@@ -5002,7 +5303,7 @@
\else
\penalty\eql at displaybreak@pen@
\fi
- \addtolength\eql at vspaceskip@{#1}%
+ \advance\eql at vspaceskip@\glueexpr#1\relax%
\vskip\eql at vspaceskip@
\global\eql at vspaceskip@\z at skip
}%
@@ -5022,37 +5323,58 @@
%
% \TODO describe
%
-% \begin{macrocode}
-\eql at amsmath@futurebefore{\let\intertext\@undefined}
-% \end{macrocode}
% \TODO revert in everymath?
-% \macro{\intertext}
-% \macro{\eql at intertext@}
% \begin{macrocode}
-\providecommand{\intertext}{\eql at error{Invalid use of \string\intertext}}
+\def\eql at intertext@default{\eql at error{Invalid use of \string\intertext}}
+\eql at amsmath@let\intertext\eql at intertext@default
% \end{macrocode}
%
% \TODO why does it fail in measuring? total width?!
% determine total width otherwise!?
% \begin{macrocode}
-\def\eql at intertext@process#1{%
+\def\eql at intertext@process{%
\eql at math@cr@@@
\cr
- \ifmeasuring@\else
- \expandafter\eql at intertext@print{#1}%
+ \ifmeasuring@
+ \expandafter\@gobble
+ \else
+ \expandafter\eql at intertext@print
\fi
}
% \end{macrocode}
%
% \TODO describe
+% \TODO prevgraf
+% \TODO prevdepth
+% \TODO does this have to be in a vbox?
+% \TODO vskip and penalty opposite order
+% \TODO can we handle short?
% \begin{macrocode}
\def\eql at intertext@print#1{%
\noalign{%
\eql at halign@after
+ \let\eql at skip@force at below\z@
+ \let\eql at skip@force at above\z@
\eql at setkeys{intertext}\eql at intertext@opt
- \normalbaselines
+ \openup-\eql at spread@amount@
\penalty\postdisplaypenalty
- \addtolength\eql at vspaceskip@\belowdisplayskip
+ \ifcase\eql at skip@force at below\relax
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@long at below\relax
+ \or
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@short at below\relax
+ \or
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@cont at below\relax
+ \or
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@par at below\relax
+ \or
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@top at below\relax
+ \or
+ \advance\eql at vspaceskip@\z at skip
+ \or
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@med at below\relax
+ \or
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@custom at below\relax
+ \fi
\vskip\eql at vspaceskip@
\global\eql at vspaceskip@\z at skip
\vbox{%
@@ -5069,7 +5391,24 @@
\par
}%
\penalty\predisplaypenalty
- \vskip\abovedisplayskip
+ \ifcase\eql at skip@force at above\relax
+ \vskip\glueexpr\eql at skip@long at above\relax
+ \or
+ \vskip\glueexpr\eql at skip@short at above\relax
+ \or
+ \vskip\glueexpr\eql at skip@cont at above\relax
+ \or
+ \vskip\glueexpr\eql at skip@par at above\relax
+ \or
+ \vskip\glueexpr\eql at skip@top at above\relax
+ \or
+ \vskip\z at skip
+ \or
+ \vskip\glueexpr\eql at skip@med at above\relax
+ \or
+ \vskip\glueexpr\eql at skip@custom at above\relax
+ \fi
+% \eql at halign@prevdepth@\maxdimen
\eql at halign@prevdepth@\z@
\eql at halign@before
}
@@ -5124,6 +5463,9 @@
% \begin{macrocode}
\let\eql at multi@mode at lines\eql at false
\def\eql at multi@main{%
+ \eql at halign@catchprevdepth
+ \eql at tagging@start
+ $$%$$
\eql at numbering@eval at mode
\eql at stack@save at multi
\ifdefined\eql at subequations@active
@@ -5166,6 +5508,9 @@
\eql at numbering@subeq at close
\fi
\eql at stack@restore
+ $$%$$
+ \eql at tagging@end
+ \eql at halign@leave
}
% \end{macrocode}
%
@@ -5173,16 +5518,24 @@
% \begin{macrocode}
\def\eql at mode@equation{%
\let\eql at equations@mode at single\eql at true
- \let\eql at equations@end\eql at single@end
+ \ifdefined\eql at single@doscan
+ \let\eql at equations@main\eql at single@main
+ \let\eql at equations@end\@empty
+ \else
+ \let\eql at equations@main\@undefined
+ \let\eql at equations@end\eql at single@end
+ \fi
}
\def\eql at mode@align{%
\let\eql at equations@mode at single\eql at false
\let\eql at multi@mode at lines\eql at false
+ \let\eql at equations@main\eql at multi@main
\let\eql at equations@end\@empty
}
\def\eql at mode@lines{%
\let\eql at equations@mode at single\eql at false
\let\eql at multi@mode at lines\eql at true
+ \let\eql at equations@main\eql at multi@main
\let\eql at equations@end\@empty
}
\eql at mode@align
@@ -5344,12 +5697,12 @@
\advance\dimen at -\eql at tagmargin@
\divide\dimen@\tw@
\eql at marginleft@\dimen@
- \advance\eql at marginleft@-\eql at paddingleft@
+ \advance\eql at marginleft@-\glueexpr\eql at paddingleft@val\relax
\ifdim\eql at marginleft@<\z@
\eql at marginleft@\z@
\fi
\eql at marginright@\dimen@
- \advance\eql at marginright@-\eql at paddingright@
+ \advance\eql at marginright@-\glueexpr\eql at paddingright@val\relax
\ifdim\eql at marginright@<\z@
\eql at marginright@\z@
\fi
@@ -5371,6 +5724,7 @@
##%
\eql at punct@apply at col
\eql at hook@colout
+ \eql at tagging@mathsave
$%
\hfil
\kern\z@
@@ -5396,6 +5750,7 @@
\eql at halign@after
%<dev>\eql at dev@leave\eql at lines@print
}%
+ \eql at tagging@tablesavelines
}%
\eql at display@close
}
@@ -5460,53 +5815,12 @@
}
% \end{macrocode}
%
-% \macro{\eql at align@preamble}
% \begin{macrocode}
-\def\eql at align@preamble#1#2#3{%
- &%
- \global\advance\eql at column@\@ne
- \hfil
- \global\setbox\eql at fieldbox@\hbox{%
- #3%
- \@lign
- $\m at th\displaystyle
- \eql at hook@colin
- ##%
- \eql at class@innerleft
- \eql at hook@innerleft
- $%
- }%
- \global\eql at fieldwidth@\wd\eql at fieldbox@
- #2%
- \tabskip\z at skip
- &%
- \global\advance\eql at column@\@ne
- \setbox\eql at fieldbox@\hbox{%
-% \TODO temp
-\kern-\wd\eql at fieldbox@
-\box\eql at fieldbox@
- #3%
- \@lign
- $\m at th\displaystyle
- \eql at hook@innerright
- \eql at class@innerright at sel
- ##%
- \eql at punct@apply at col
- \eql at hook@colout
- $%
- }%
- #2%
- \hfil
- \tabskip#1%
-}
-% \end{macrocode}
-%
-% \begin{macrocode}
\def\eql at align@print at trailright{%
&\omit
\global\advance\eql at column@\@ne
\setbox\eql at fieldbox@\hbox{%
-\kern-\wd\eql at fieldbox@\box\eql at fieldbox@
+ \kern-\wd\eql at fieldbox@\box\eql at fieldbox@
}%
\eql at align@print at field
}
@@ -5627,8 +5941,10 @@
\eql at numbering@print at line@eval
\if at eqnsw
\eql at tagbox@make\eql at compose@print
+ \eql at tagging@tagaddbox
\eql at tagbox@print at multi
\else
+ \eql at tagging@tagaddbox
\kern\displaywidth
\fi
}
@@ -5645,7 +5961,45 @@
\eql at let@cr\eql at align@print at line@end
\tabskip\eql at marginleft@
\halign{%
- \span\eql at align@preamble\eql at colsep@\eql at align@print at field\eql at strut@field
+ &%
+ \global\advance\eql at column@\@ne
+ \hfil
+ \global\setbox\eql at fieldbox@\hbox{%
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at class@innerleft
+ \eql at hook@innerleft
+ \eql at tagging@mathsave
+ $%
+ \eql at tagging@mathaddlast
+ }%
+ \global\eql at fieldwidth@\wd\eql at fieldbox@
+ \eql at align@print at field
+ \tabskip\z at skip
+ &%
+ \global\advance\eql at column@\@ne
+ \setbox\eql at fieldbox@\hbox{%
+% \TODO printing left field in right field
+ \kern-\wd\eql at fieldbox@
+ \box\eql at fieldbox@
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@innerright
+ \eql at class@innerright at sel
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ \eql at tagging@mathsave
+ $%
+ \eql at tagging@mathaddlast
+ }%
+ \eql at align@print at field
+ \hfil
+ \tabskip\eql at colsep@\relax
\crcr
\noalign{%
\eql at halign@before
@@ -5665,6 +6019,7 @@
\eql at halign@after
%<dev>\eql at dev@leave\eql at align@print
}%
+ \eql at tagging@tablesavealign
}%
\eql at display@close
}
@@ -5731,8 +6086,36 @@
\eql at numbering@measure at init
\eql at measure@init\eql at align@measure at line@begin
\eql at let@cr\eql at align@measure at line@end
+ \tabskip\z at skip
\halign{%
- \span\eql at align@preamble\z at skip\eql at align@measure at field\relax
+ &%
+ \global\advance\eql at column@\@ne
+ \hfil
+ \global\setbox\eql at fieldbox@\hbox{%
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at class@innerleft
+ \eql at hook@innerleft
+ $%
+ }%
+ \global\eql at fieldwidth@\wd\eql at fieldbox@
+ \eql at align@measure at field
+ &%
+ \global\advance\eql at column@\@ne
+ \setbox\eql at fieldbox@\hbox{%
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@innerright
+ \eql at class@innerright at sel
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ $%
+ }%
+ \eql at align@measure at field
+ \hfil
\crcr
\noalign{%
\eql at hook@blockbefore
@@ -5813,6 +6196,11 @@
\def\eql at align@adjust{%
% \end{macrocode}
%
+% \begin{macrocode}
+ \eql at colsepmin@\glueexpr\eql at colsepmin@val\relax
+ \eql at colsepmax@\glueexpr\eql at colsepmax@val\relax
+% \end{macrocode}
+%
% \TODO shouldn't we do this earlier for access to last column?
% \begin{macrocode}
\ifodd\eql at totalcolumns@
@@ -6179,7 +6567,6 @@
% environment name as the name of the temporary function that is
% |\let| to |\eql at scan@env at iterate|:
% \begin{macrocode}
-% \begingroup
\edef\eql at scan@iterate{\expandafter\noexpand\csname\@currenvir\endcsname}%
\expandafter\let\expandafter\eql at scan@env at org\eql at scan@iterate
\expandafter\let\eql at scan@iterate\eql at scan@env at iterate
@@ -6271,7 +6658,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\def\eql at scan@sqrang at cancel{\ignorespaces}
+\def\eql at scan@sqrang at cancel{\expandafter\ignorespaces\@gobble}
% \end{macrocode}
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -6344,7 +6731,9 @@
\def\eql at equations@processopt{%
\let\eql at blocklabel\@undefined
\let\eql at blocktag\@undefined
- \let\eql at display@doatend\@empty
+ \let\eql at skip@force at above\@undefined
+ \let\eql at skip@force at below\@undefined
+ \let\eql at skip@force at leave\@undefined
\eql at abovespace@\z at skip
\eql at belowspace@\z at skip
\eql at displaybreak@prepen@\@MM
@@ -6351,11 +6740,7 @@
\eql at nextopt@process{equations}%
\let\eql at punct@block\eql at punct@main
\let\eql at punct@main\relax
- \setlength\eql at paddingleft@\eql at paddingleft@val
- \setlength\eql at paddingright@\eql at paddingright@val
- \setlength\eql at indent@\eql at indent@val
- \setlength\eql at colsepmin@\eql at colsepmin@val
- \setlength\eql at colsepmax@\eql at colsepmax@val
+ \eql at indent@\glueexpr\eql at indent@val\relax
}
% \end{macrocode}
%
@@ -6370,14 +6755,11 @@
\eql at error@mathmode{\string\begin{\@currenvir}}%
\expandafter\eql at scan@env\expandafter\eql at scan@env at cancel
\else
- \eql at halign@catchprevdepth
- $$%$$
\expandafter\eql at ampprotect\expandafter\eql at equations@testall
\expandafter\eql at equations@start
\fi
}{%
\eql at equations@end
- $$%$$
\ignorespacesafterend
%<dev>\eql at dev@leaveenv
}
@@ -6386,10 +6768,10 @@
% \begin{macrocode}
\def\eql at equations@start{%
\eql at equations@processopt
- \ifdefined\eql at equations@mode at single
+ \ifdefined\eql at equations@main
+ \expandafter\eql at scan@env\expandafter\eql at equations@main
+ \else
\expandafter\eql at single@start
- \else
- \expandafter\eql at scan@env\expandafter\eql at multi@main
\fi
}
% \end{macrocode}
@@ -6398,6 +6780,7 @@
% \paragraph{square and angle brackets}
%
% \begin{macrocode}
+\newenvironment{equations at sqr}{}{}
\def\eql at equations@sqr at opt{equation,nonumber}
\protected\def\eql at equations@sqr at open{%
\ifmmode
@@ -6406,8 +6789,7 @@
\else
%<dev>\eql at dev@enter{\[...\string\]}%
\expandafter\eqnaddopt\expandafter{\eql at equations@sqr at opt}%
- \eql at halign@catchprevdepth
- $$%$$
+ \begin{equations at sqr}%
\expandafter\eql at ampprotect\expandafter\eql at equations@testall
\expandafter\eql at equations@sqr at start
\fi
@@ -6415,6 +6797,7 @@
% \end{macrocode}
%
% \begin{macrocode}
+\newenvironment{equations at ang}{}{}
\def\eql at equations@ang at opt{align,nonumber}
\protected\def\eql at equations@ang at open{%
\ifmmode
@@ -6423,8 +6806,7 @@
\else
%<dev>\eql at dev@enter{\<...\string\>}%
\expandafter\eqnaddopt\expandafter{\eql at equations@ang at opt}%
- \eql at halign@catchprevdepth
- $$%$$
+ \begin{equations at ang}%
\expandafter\eql at ampprotect\expandafter\eql at equations@testall
\expandafter\eql at equations@ang at start
\fi
@@ -6434,10 +6816,10 @@
% \begin{macrocode}
\def\eql at equations@sqr at start{%
\eql at equations@processopt
- \ifdefined\eql at equations@mode at single
+ \ifdefined\eql at equations@main
+ \expandafter\eql at scan@sqr\expandafter\eql at equations@main
+ \else
\expandafter\eql at single@start
- \else
- \expandafter\eql at scan@sqr\expandafter\eql at multi@main
\fi
}
% \end{macrocode}
@@ -6445,10 +6827,10 @@
% \begin{macrocode}
\def\eql at equations@ang at start{%
\eql at equations@processopt
- \ifdefined\eql at equations@mode at single
+ \ifdefined\eql at equations@main
+ \expandafter\eql at scan@ang\expandafter\eql at equations@main
+ \else
\expandafter\eql at single@start
- \else
- \expandafter\eql at scan@ang\expandafter\eql at multi@main
\fi
}
% \end{macrocode}
@@ -6456,8 +6838,8 @@
% \begin{macrocode}
\protected\def\eql at equations@sqr at close{%
\eql at equations@end
- $$%$$
%<dev>\eql at dev@leave{\[...\string\]}%
+ \end{equations at sqr}%
\ignorespaces
}
% \end{macrocode}
@@ -6465,8 +6847,8 @@
% \begin{macrocode}
\protected\def\eql at equations@ang at close{%
\eql at equations@end
- $$%$$
%<dev>\eql at dev@leave{\<...\string\>}%
+ \end{equations at ang}%
\ignorespaces
}
% \end{macrocode}
@@ -6480,7 +6862,7 @@
% We provide it for completeness:
% \TODO versions of eqref for ranges (optional argument) or lists (,)?
% \begin{macrocode}
-\DeclareRobustCommand{\eql at eqref}[1]{\textup{\tagform@{\ref{#1}}}}
+\DeclareRobustCommand{\eql at eqref}[1]{\textup{\eql at tag@boxedform{\ref{#1}}}}
% \end{macrocode}
%
% \macro{\numberwithin}
@@ -6532,7 +6914,7 @@
% \ctanpkg{amsmath} defines |\thetag| to print a tag
% which we also provide for completeness:
% \begin{macrocode}
-\newcommand{\eql at thetag}{\leavevmode\tagform@}
+\newcommand{\eql at thetag}{\leavevmode\eql at tag@boxedform}
% \end{macrocode}
%
%
@@ -6654,7 +7036,7 @@
% prepends the prefix |eql@| to the category,
% and it expands the list argument once:
% \begin{macrocode}
-\def\eql at setkeys#1#2{
+\def\eql at setkeys#1#2{%
\def\eql at tmp{\setkeys{eql@#1}}%
\expandafter\eql at tmp\expandafter{#2}%
}
@@ -6671,6 +7053,7 @@
\def\eql at nextopt@process#1{%
%<dev>\eql at dev@start\eql at nextopt@process
\eql at setkeys{#1}\eql at nextopt
+ \let\eql at tagging@opt\eql at nextopt
\global\let\eql at nextopt\@empty
}
\newcommand{\eqnaddopt}[1]{%
@@ -6678,6 +7061,76 @@
% \end{macrocode}
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \subsection{Parameter Sets}
+%
+% \TODO: par at above plus parskip?
+% \begin{macrocode}
+\def\eql at defaults@classic{%
+ \def\eql at colsepmax@val{.5\maxdimen}%
+ \def\eql at spread{\jot}%
+ \let\eql at display@height\@undefined
+ \let\eql at display@depth\@undefined
+ \eql at skip@mode at short@\tw@
+ \eql at skip@mode at cont@\@ne
+ \eql at skip@mode at par@\z@
+ \eql at skip@mode at top@\z@
+ \def\eql at skip@long at above{\abovedisplayskip}%
+ \def\eql at skip@long at below{\belowdisplayskip}%
+ \def\eql at skip@short at above{\abovedisplayshortskip}%
+ \def\eql at skip@short at below{\belowdisplayshortskip}%
+ \def\eql at skip@cont at above{\eql at skip@short at above}%
+ \def\eql at skip@cont at below{\eql at skip@short at below}%
+ \def\eql at skip@par at above{\eql at skip@long at above}%
+ \def\eql at skip@par at below{\eql at skip@long at below}%
+ \def\eql at skip@top at above{\eql at skip@long at above}%
+ \def\eql at skip@top at below{\eql at skip@long at below}%
+ \def\eql at skip@med at above{\abovedisplayskip/2}%
+ \def\eql at skip@med at below{\belowdisplayskip/2}%
+ \def\eql at skip@medtag at above{\z at skip}%
+ \def\eql at skip@medtag at below{\z at skip}%
+ \def\eql at skip@tag at above{\z at skip}%
+ \def\eql at skip@tag at below{\z at skip}%
+}
+% \end{macrocode}
+%
+% values based on 10pt vs 12pt
+% \begin{macrocode}
+\def\eql at defaults@eqnlines{%
+ \def\eql at colsepmax@val{2em}%
+ \def\eql at spread{0.2\normalbaselineskip}%
+ \def\eql at display@height{\ht\eql at strutbox@}%
+ \def\eql at display@depth{\dp\eql at strutbox@}%
+ \eql at skip@mode at short@\@ne
+ \eql at skip@mode at cont@\z@
+ \eql at skip@mode at par@\z@
+ \eql at skip@mode at top@\z@
+ \def\eql at skip@long at above{0.75\normalbaselineskip
+ \@plus0.25\normalbaselineskip\@minus0.4\normalbaselineskip}%
+ \let\eql at skip@long at below\eql at skip@long at above
+ \def\eql at skip@short at above{0.0\normalbaselineskip
+ \@plus0.2\normalbaselineskip}%
+ \def\eql at skip@short at below{0.0\normalbaselineskip
+ \@plus0.25\normalbaselineskip}%
+ \def\eql at skip@med at above{0.375\normalbaselineskip
+ \@plus0.225\normalbaselineskip\@minus0.2\normalbaselineskip}%
+ \let\eql at skip@med at below\eql at skip@med at above
+ \def\eql at skip@cont at above{\z at skip}%
+ \def\eql at skip@cont at below{\eql at skip@long at below}%
+ \def\eql at skip@par at above{\eql at skip@long at above}%
+ \def\eql at skip@par at below{\eql at skip@long at below}%
+ \def\eql at skip@top at above{\z at skip}%
+ \def\eql at skip@top at below{\z at skip}%
+ \def\eql at skip@tag at above{\z at skip}%
+ \def\eql at skip@tag at below{\z at skip}%
+ \def\eql at skip@partag at above{\z at skip}%
+ \def\eql at skip@partag at below{\z at skip}%
+ \def\eql at skip@medtag at above{\z at skip}%
+ \def\eql at skip@medtag at below{\z at skip}%
+}
+\eql at defaults@eqnlines
+% \end{macrocode}
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \subsection{Options Declarations}
%
% \TODO describe
@@ -6712,6 +7165,8 @@
\ifdefined\eql at single@native\let\eql at flushleft\eql at false\fi}
\eql at define@key{setup}{native}[true]{%
\eql at decide@bool{#3}{#2}{#1}\eql at single@native}
+\eql at define@key{setup}{scanequation}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at single@doscan}
\eql at define@key{setup}{sqropt}[]{%
\def\eql at equations@sqr at opt{equation,#1}}
\eql at define@key{setup}{angopt}[]{%
@@ -6743,134 +7198,177 @@
\def\eql at display@height{#1}}
\eql at define@key\eql at keycat{displaydepth}[\dp\eql at strutbox@]{%
\def\eql at display@depth{#1}}
+\eql at define@key\eql at keycat{displayheight*}[]{%
+ \let\eql at display@height\@undefined}
+\eql at define@key\eql at keycat{displaydepth*}[]{%
+ \let\eql at display@depth\@undefined}
% \end{macrocode}
%
% \TODO describe
+% \TODO short should just apply to above?! or as far as short would apply...
% \begin{macrocode}
\eql at define@key{equations}{noskip}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\eql at display@atend{%
- \abovedisplayskip\z at skip
- \abovedisplayshortskip\z at skip
- \eql at abovedisplaytagskip@\z at skip}}%
- {\eql at display@atend{%
- \belowdisplayskip\z at skip
- \belowdisplayshortskip\z at skip
- \eql at belowdisplaytagskip@\z at skip}}}
-\eql at define@key{equations}{short}[]{%
+ {\def\eql at skip@force at above{5}}%
+ {\def\eql at skip@force at below{5}}}
+\eql at define@key{equations}{short}[above]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\eql at display@atend{%
- \abovedisplayskip\abovedisplayshortskip}}%
- {\eql at display@atend{%
- \belowdisplayskip\belowdisplayshortskip}}}
+ {\def\eql at skip@force at above{1}}%
+ {\def\eql at skip@force at below{1}}}
\eql at define@key{equations}{long}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\eql at display@atend{%
- \abovedisplayshortskip\abovedisplayskip}}%
- {\eql at display@atend{%
- \belowdisplayshortskip\belowdisplayskip}}}
+ {\def\eql at skip@force at above{0}}%
+ {\def\eql at skip@force at below{0}}}
\eql at define@key{equations}{medskip}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\eql at display@atend{%
- \abovedisplayskip\eql at abovedisplaymedskip@}}%
- {\eql at display@atend{%
- \belowdisplayskip\eql at belowdisplaymedskip@}}}
+ {\def\eql at skip@force at above{6}}%
+ {\def\eql at skip@force at below{6}}}
+\eql at define@key{equations}{par}[par]{%
+ \eql at decide@select{#3}{#2}{#1}{%
+ {{default,}{\let\eql at skip@force at leave\@undefined}},%
+ {{cont,hmode}{\let\eql at skip@force at leave\z@}},%
+ {{par,vmode}{\let\eql at skip@force at leave\@ne
+ \ifdefined\eql at skip@force at below\else
+ \def\eql at skip@force at below{3}%
+ \fi}},%
+ {{top}{\let\eql at skip@force at leave\tw@
+ \ifdefined\eql at skip@force at below\else
+ \def\eql at skip@force at below{4}
+ \fi}}}}
% \end{macrocode}
%
% \TODO describe
% \begin{macrocode}
\eql at define@key{equations}{skip}{%
- \setlength\eql at abovedisplayskip@{#1}%
- \eql at belowdisplayskip@\eql at abovedisplayskip@%
- \eql at display@atend{%
- \abovedisplayskip\eql at abovedisplayskip@
- \abovedisplayshortskip\abovedisplayskip
- \eql at abovedisplaytagskip@\abovedisplayskip
- \belowdisplayskip\abovedisplayskip
- \belowdisplayshortskip\belowdisplayskip
- \eql at belowdisplaytagskip@\belowdisplayskip}}
+ \def\eql at skip@force at above{7}%
+ \def\eql at skip@custom at above{#1}%
+ \let\eql at skip@force at below\eql at skip@force at above
+ \let\eql at skip@custom at below\eql at skip@custom at above}
\eql at define@key{equations}{aboveskip}{%
- \setlength\eql at abovedisplayskip@{#1}%
- \eql at display@atend{%
- \abovedisplayskip\eql at abovedisplayskip@
- \abovedisplayshortskip\abovedisplayskip
- \eql at abovedisplaytagskip@\abovedisplayskip}}
+ \def\eql at skip@force at above{7}%
+ \def\eql at skip@custom at above{#1}}
\eql at define@key{equations}{belowskip}{%
- \setlength\eql at belowdisplayskip@{#1}%
- \eql at display@atend{%
- \belowdisplayskip\eql at belowdisplayskip@
- \belowdisplayshortskip\belowdisplayskip%
- \eql at belowdisplaytagskip@\belowdisplayskip}}
+ \def\eql at skip@force at below{7}%
+ \def\eql at skip@custom at below{#1}}
\eql at define@key{equations}{abovespace}{%
- \addtolength\eql at abovespace@{#1}}
+ \advance\eql at abovespace@\glueexpr#1\relax}
\eql at define@key{equations}{belowspace}{%
- \addtolength\eql at belowspace@{#1}}
+ \advance\eql at belowspace@\glueexpr#1\relax}
% \end{macrocode}
%
% \TODO describe
% \begin{macrocode}
\eql at define@key{intertext}{skip}{%
- \setlength\abovedisplayskip{#1}\belowdisplayskip\abovedisplayskip}
+ \def\eql at skip@force at above{7}%
+ \def\eql at skip@custom at above{#1}%
+ \let\eql at skip@force at below\eql at skip@force at above
+ \let\eql at skip@custom at below\eql at skip@custom at above}
\eql at define@key{intertext}{aboveskip}{%
- \setlength\belowdisplayskip{#1}}
+ \def\eql at skip@force at below{7}%
+ \def\eql at skip@custom at below{#1}}
\eql at define@key{intertext}{belowskip}{%
- \setlength\abovedisplayskip{#1}}
+ \def\eql at skip@force at above{7}%
+ \def\eql at skip@custom at above{#1}}
\eql at define@key{intertext}{noskip}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\belowdisplayskip\z at skip\belowdisplayshortskip\z at skip}%
- {\abovedisplayskip\z at skip\abovedisplayshortskip\z at skip}}
+ {\def\eql at skip@force at below{5}}%
+ {\def\eql at skip@force at above{5}}}
\eql at define@key{intertext}{short}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\belowdisplayskip\belowdisplayshortskip}%
- {\abovedisplayskip\abovedisplayshortskip}}
+ {\def\eql at skip@force at below{1}}%
+ {\def\eql at skip@force at above{1}}}
\eql at define@key{intertext}{long}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\belowdisplayshortskip\belowdisplayskip}%
- {\abovedisplayshortskip\abovedisplayskip}}
+ {\def\eql at skip@force at below{0}}%
+ {\def\eql at skip@force at above{0}}}
\eql at define@key{intertext}{medskip}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\belowdisplayskip\eql at belowdisplaymedskip@}%
- {\abovedisplayskip\eql at abovedisplaymedskip@}}
+ {\def\eql at skip@force at below{6}}%
+ {\def\eql at skip@force at above{6}}}
% \end{macrocode}
%
% \TODO describe
% \begin{macrocode}
-\eql at define@key{setup}{skip}{%
- \setlength\abovedisplayskip{#1}\belowdisplayskip\abovedisplayskip}
-\eql at define@key{setup}{aboveskip}{%
- \setlength\abovedisplayskip{#1}}
-\eql at define@key{setup}{belowskip}{%
- \setlength\belowdisplayskip{#1}}
+\eql at define@key{setup}{skip,longskip}{%
+ \abovedisplayskip\glueexpr#1\relax
+ \belowdisplayskip\abovedisplayskip
+ \def\eql at skip@long at above{#1}%
+ \let\eql at skip@long at below\eql at skip@long at above}
+\eql at define@key{setup}{aboveskip,abovelongskip}{%
+ \abovedisplayskip\glueexpr#1\relax
+ \def\eql at skip@long at above{#1}}
+\eql at define@key{setup}{belowskip,belowlongskip}{%
+ \belowdisplayskip\glueexpr#1\relax
+ \def\eql at skip@long at below{#1}}
\eql at define@key{setup}{aboveshortskip}{%
- \setlength\abovedisplayshortskip{#1}}
+ \abovedisplayshortskip\glueexpr#1\relax
+ \def\eql at skip@short at above{#1}}
\eql at define@key{setup}{belowshortskip}{%
- \setlength\belowdisplayshortskip{#1}}
+ \belowdisplayshortskip\glueexpr#1\relax
+ \def\eql at skip@short at below{#1}}
\eql at define@key{setup}{tagskip}{%
- \setlength\eql at abovedisplaytagskip@{#1}%
- \eql at belowdisplaytagskip@\eql at abovedisplaytagskip@}
+ \def\eql at skip@tag at above{#1}%
+ \let\eql at skip@tag at below\eql at skip@tag at above}
\eql at define@key{setup}{abovetagskip}{%
- \setlength\eql at abovedisplaytagskip@{#1}}
+ \def\eql at skip@tag at above{#1}}
\eql at define@key{setup}{belowtagskip}{%
- \setlength\eql at belowdisplaytagskip@{#1}}
+ \def\eql at skip@tag at below{#1}}
\eql at define@key{setup}{medskip}{%
- \setlength\eql at abovedisplaymedskip@{#1}%
- \eql at belowdisplaymedskip@\eql at abovedisplaymedskip@}
+ \def\eql at skip@med at above{#1}%
+ \let\eql at skip@med at below\eql at skip@med at above}
\eql at define@key{setup}{abovemedskip}{%
- \setlength\eql at abovedisplaymedskip@{#1}}
+ \def\eql at skip@med at above{#1}}
+\eql at define@key{setup}{belowmedskip}{%
+ \def\eql at skip@med at below{#1}}
+\eql at define@key{setup}{medtagskip}{%
+ \def\eql at skip@medtag at above{#1}%
+ \let\eql at skip@medtag at below\eql at skip@medtag at above}
+\eql at define@key{setup}{abovemedtagskip}{%
+ \def\eql at skip@medtag at above{#1}}
+\eql at define@key{setup}{belowmedtagskip}{%
+ \def\eql at skip@medtag at below{#1}}
\eql at define@key{setup}{abovetopskip}{%
- \setlength\eql at abovedisplaytopskip@{#1}}
+ \def\eql at skip@top at above{#1}}
+\eql at define@key{setup}{belowtopskip}{%
+ \def\eql at skip@top at below{#1}}
\eql at define@key{setup}{aboveparskip}{%
- \setlength\eql at abovedisplayparskip@{#1}}
+ \def\eql at skip@par at above{#1}}
+\eql at define@key{setup}{belowparskip}{%
+ \def\eql at skip@par at below{#1}}
+\eql at define@key{setup}{abovepartagskip}{%
+ \def\eql at skip@partag at above{#1}}
+\eql at define@key{setup}{belowpartagskip}{%
+ \def\eql at skip@partag at below{#1}}
\eql at define@key{setup}{abovecontskip}{%
- \setlength\eql at abovedisplaycontskip@{#1}}
-\eql at define@key{setup}{belowmedskip}{%
- \setlength\eql at belowdisplaymedskip@{#1}}
+ \def\eql at skip@cont at above{#1}}
+\eql at define@key{setup}{abovecontskip*}[]{%
+ \def\eql at skip@cont at above{\eql at spread-\eql at skip@long at below}}
+\eql at define@key{setup}{belowcontskip}{%
+ \def\eql at skip@cont at below{#1}}
\eql at define@key{setup}{shortmode}{%
\eql at decide@select{#3}{#2}{#1}{%
- {{off,never,no}{\eql at displayshortmode@\z@}},%
- {{above,neverbelow,notbelow,belowoff}{\eql at displayshortmode@\@ne}},%
- {{belowone,belowsingle}{\eql at displayshortmode@\tw@}},%
- {{belowall,always,on}{\eql at displayshortmode@\thr@@}}}}
+ {{off,never,no}{\eql at skip@mode at short@\z@}},%
+ {{above,neverbelow,notbelow,belowoff}{\eql at skip@mode at short@\@ne}},%
+ {{belowone,belowsingle}{\eql at skip@mode at short@\tw@}},%
+ {{belowall,always,on}{\eql at skip@mode at short@\thr@@}}}}
+\eql at define@key{setup}{belowcontmode}{%
+ \eql at decide@select{#3}{#2}{#1}{%
+ {{long}{\eql at skip@mode at cont@\z@}},%
+ {{short}{\eql at skip@mode at cont@\@ne}},%
+ {{cont}{\eql at skip@mode at cont@\tw@}}}}
+\eql at define@key{setup}{belowparmode}{%
+ \eql at decide@select{#3}{#2}{#1}{%
+ {{long}{\eql at skip@mode at par@\z@}},%
+ {{short}{\eql at skip@mode at par@\@ne}},%
+ {{cont}{\eql at skip@mode at par@\tw@}},%
+ {{par}{\eql at skip@mode at par@\thr@@}}}}
+\eql at define@key{setup}{belowtopmode}{%
+ \eql at decide@select{#3}{#2}{#1}{%
+ {{long}{\eql at skip@mode at top@\z@}},%
+ {{short}{\eql at skip@mode at top@\@ne}},%
+ {{cont}{\eql at skip@mode at top@\tw@}},%
+ {{par}{\eql at skip@mode at top@\thre@@}},%
+ {{top}{\eql at skip@mode at top@4\relax}}}}
% \end{macrocode}
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -6890,10 +7388,10 @@
% \TODO describe
% \begin{macrocode}
\def\eql at keycat{equations,setup}
-\eql at define@key\eql at keycat{tagmargin}{\setlength\eql at tagmargin@{#1}}
+\eql at define@key\eql at keycat{tagmargin}{\eql at tagmargin@\glueexpr#1\relax}
\eql at define@key\eql at keycat{tagmargin*}{\settowidth\eql at tagmargin@{#1}}
-\eql at define@key\eql at keycat{mintagsep}{\setlength\eql at tagsepmin@{#1}}
-\eql at define@key\eql at keycat{mintagwidth}{\setlength\eql at tagwidthmin@{#1}}
+\eql at define@key\eql at keycat{mintagsep}{\eql at tagsepmin@\glueexpr#1\relax}
+\eql at define@key\eql at keycat{mintagwidth}{\eql at tagwidthmin@\glueexpr#1\relax}
\eql at define@key\eql at keycat{mintagwidth*}{\settowidth\eql at tagwidthmin@{#1}}
% \end{macrocode}
%
@@ -6902,8 +7400,8 @@
%
% \TODO describe
% \begin{macrocode}
-\eql at define@key{setup}{taglayout}{\eql at tag@setmake{#1}}
-\eql at define@key{setup}{taglayout*}{\eql at tag@setmake@{#1}}
+\eql at define@key{setup}{taglayout}{\eql at tag@setbox{#1}}
+\eql at define@key{setup}{taglayout*}{\eql at tag@setbox@{#1}}
\eql at define@key{setup}{tagform}{\eql at tag@setform#1}
\eql at define@key{setup}{tagform*}{\eql at tag@setform@{#1}}
\eql at define@key{setup}{subeqtemplate}{\def\eql at subequations@template{#1}}
@@ -6945,13 +7443,13 @@
\eql at define@key\eql at keycat{center}[]{\let\eql at flushleft\eql at false}
\eql at define@key\eql at keycat{flushleft,left}[]{\let\eql at flushleft\eql at true}
\eql at define@key\eql at keycat{leftmargin}{%
- \setlength\eql at flushleftmargin@{#1}}
+ \eql at flushleftmargin@\glueexpr#1\relax}
\eql at define@key\eql at keycat{minleftmargin}{%
- \setlength\eql at flushleftmarginmin@{#1}}
+ \eql at flushleftmarginmin@\glueexpr#1\relax}
\eql at define@key\eql at keycat{maxleftmargin}{%
- \setlength\eql at flushleftmarginmax@{#1}}
+ \eql at flushleftmarginmax@\glueexpr#1\relax}
\eql at define@key\eql at keycat{maxleftmargin*}[]{%
- \setlength\eql at flushleftmarginmax@{.5\maxdimen}}
+ \eql at flushleftmarginmax@.5\maxdimen}
% \end{macrocode}
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -7035,7 +7533,7 @@
% \begin{macrocode}
\let\eql at multi@linesfallback\eql at true
\let\eql at single@crerror\eql at true
-\let\eql at ampproof@active\eql at true
+\let\eql at ampproof@active\eql at false
\eql at define@key{setup}{linesfallback}[true]{%
\eql at decide@bool{#3}{#2}{#1}\eql at multi@linesfallback}
\eql at define@key{setup}{ampproof}[true]{%
@@ -7046,6 +7544,10 @@
\eql at decide@if{#3}{#2}{#1}%
{\let\eql at scan@body\eql at scan@body at rescan}%
{\let\eql at scan@body\eql at scan@body at dump}}
+\eql at define@key{setup}{defaults}{%
+ \eql at decide@select{#3}{#2}{#1}{%
+ {{classic}{\eql at defaults@classic}},%
+ {{eqnlines}{\eql at defaults@eqnlines}}}}
% \end{macrocode}
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -7053,22 +7555,26 @@
%
% \TODO describe
% \begin{macrocode}
-\let\eql at provide@amsmath\eql at true
-\let\eql at provide@equation\eql at true
-\let\eql at provide@ang\eql at true
-\let\eql at amsmath@dofixends\eql at true
+\let\eql at provide@opt at equation\eql at true
+\let\eql at provide@opt at amsmathends\eql at true
+\let\eql at provide@opt at amsmath\eql at true
+\let\eql at provide@opt at ang\eql at true
+\let\eql at provide@opt at eqref\eql at true
\eql at define@key{setup}{equation}[true]{%
\eql at error@packageoption{#2}%
- \eql at decide@bool{#3}{#2}{#1}\eql at provide@equation}
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at equation}
+\eql at define@key{setup}{amsmathends}[true]{%
+ \eql at error@packageoption{#2}%
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at amsmathends}
\eql at define@key{setup}{amsmath}[true]{%
\eql at error@packageoption{#2}%
- \eql at decide@bool{#3}{#2}{#1}\eql at provide@amsmath}
-\eql at define@key{setup}{amsmathends}[true]{%
- \eql at error@packageoption{#2}%
- \eql at decide@bool{#3}{#2}{#1}\eql at amsmath@dofixends}
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at amsmath}
\eql at define@key{setup}{ang}[true]{%
\eql at error@packageoption{#2}%
- \eql at decide@bool{#3}{#2}{#1}\eql at provide@ang}
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at ang}
+\eql at define@key{setup}{eqref}[true]{%
+ \eql at error@packageoption{#2}%
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at eqref}
% \end{macrocode}
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -7195,7 +7701,7 @@
\eql at provide@movecmd{#1}{eql@#1}%
}%
\eql at provide@movecmd{#1}{eql@#1}%
- \eql at amsmath@futurebefore{\eql at provide@undefinecmd{#1}}%
+ \eql at amsmath@before{\eql at provide@undefinecmd{#1}}%
\fi
}
% \end{macrocode}
@@ -7254,8 +7760,8 @@
}%
\eql at provide@moveenv{#1}{eql@#1}%
\eql at provide@moveenv{#1*}{eql@#1*}%
- \eql at amsmath@futurebefore{\eql at provide@undefineenv{#1}}%
- \eql at amsmath@futurebefore{\eql at provide@undefineenv{#1*}}%
+ \eql at amsmath@before{\eql at provide@undefineenv{#1}}%
+ \eql at amsmath@before{\eql at provide@undefineenv{#1*}}%
\fi
}
% \end{macrocode}
@@ -7286,7 +7792,13 @@
}}%
\eql at provide@moveenv{equation}{eql at equation}%
\eql at provide@moveenv{equation*}{eql at equation*}%
- \eql at amsmath@futurebefore{\eql at provide@undefineenv{equation*}}%
+ \eql at amsmath@before{\eql at provide@undefineenv{equation*}}%
+ \ifdefined\eql at tagging@on
+ \AddToHook{begindocument/end}{%
+ \eql at provide@moveenv{equation}{eql at equation}%
+ \eql at provide@moveenv{equation*}{eql at equation*}%
+ }%
+ \fi
\fi
}
% \end{macrocode}
@@ -7311,18 +7823,6 @@
%
% \TODO describe
% \begin{macrocode}
-\def\eql at provide@env at subequations@reinstall{%
- \global\let\subequations\eql at subequations
- \let\@tempa\UseHook
- \let\@tempb\UseHookWithArguments
- \def\UseHook{\let\UseHook\@tempa\let\UseHookWithArguments\@tempb%
- \expandafter\subequations\@gobble}%
- \def\UseHookWithArguments{\expandafter\UseHook\@gobble}%
-}
-% \end{macrocode}
-%
-% \TODO describe
-% \begin{macrocode}
\def\eql at provide@env at subequations#1{%
\eql at provide@onlyonce{subequations}{#1}%
\ifdefined\eql at tmp
@@ -7332,7 +7832,6 @@
\eql at amsmath@after{%
\eql at provide@moveenv{amssubequations}{subequations}%
\eql at provide@moveenv{subequations}{eql at subequations}%
- \let\subequations\eql at provide@env at subequations@reinstall
}%
\AddToHook{package/hyperref/after}{%
\AddToHook{cmd/subequations/before}[hyperref]{}%
@@ -7344,17 +7843,18 @@
\stepcounter{equation}%
\protected at edef\theHparentequation{\theHequation}%
\addtocounter{equation}{-1}%
- }
+ }%
\AddToHook{cmd/amssubequations/after}%
{%
\def\theHequation{\theHparentequation\alph{equation}}%
\ignorespaces
- }
- }
+ }%
+ \AddToHook{begindocument/end}{%
+ \eql at provide@moveenv{subequations}{eql at subequations}%
+ }%
+ }%
\eql at provide@moveenv{subequations}{eql at subequations}%
- \AddToHook{cmd/subequations/after}{}%
- \let\subequations\eql at provide@env at subequations@reinstall
- \eql at amsmath@futurebefore{\eql at provide@undefineenv{subequations}}%
+ \eql at amsmath@before{\eql at provide@undefineenv{subequations}}%
\fi
}
% \end{macrocode}
@@ -7368,6 +7868,12 @@
\let\[\eql at equations@sqr at open
\let\]\eql at equations@sqr at close
}%
+ \ifdefined\eql at tagging@on
+ \AddToHook{begindocument/end}{%
+ \let\[\eql at equations@sqr at open
+ \let\]\eql at equations@sqr at close
+ }%
+ \fi
}
% \end{macrocode}
%
@@ -7398,6 +7904,10 @@
\eql at define@key{provide}{allowdisplaybreaks}[]{%
\eql at provide@cmd{allowdisplaybreaks}{#1}}
\eql at define@key{provide}{numberwithin}[]{\eql at provide@cmd{numberwithin}{#1}}
+\eql at define@key{provide}{tagform}[]{%
+ \def\tagform@##1{\maketag@@@{\eql at tag@form{#1}}}}
+\eql at define@key{provide}{maketag}[]{%
+ \def\maketag@@@##1{\eql at tag@box{##1}}}
% \end{macrocode}
%
% \TODO describe
@@ -7446,14 +7956,14 @@
%
% Provide classes of interfaces:
% \begin{macrocode}
-\ifcsname tagsleft at true\endcsname\else
+\ifdefined\tagsleft at true\else
\expandafter\newif\csname iftagsleft@\endcsname
\fi
-\ifcsname @fleqntrue\endcsname\else
+\ifdefined\@fleqntrue\else
\expandafter\newif\csname if at fleqn\endcsname
\fi
-\ifdefined\eql at provide@amsmath
- \let\eql at provide@equation\eql at true
+\ifdefined\eql at provide@opt at amsmath
+ \let\eql at provide@opt at equation\eql at true
\eql at amsmath@after{%
\iftagsleft@
\eqnlinesset{tagsleft}
@@ -7471,35 +7981,34 @@
%
% \TODO describe
% \begin{macrocode}
-\ifdefined\eql at provide@equation
- \eqnlinesprovide{equation,sqr}
-\fi
+\ifdefined\eql at provide@opt at equation\eqnlinesprovide{equation,sqr}\fi
% \end{macrocode}
%
% \TODO describe
% \begin{macrocode}
-\ifdefined\eql at amsmath@dofixends
- \eql at amsmath@fixends
-\fi
+\ifdefined\eql at provide@opt at amsmathends\eql at amsmath@fixends\fi
% \end{macrocode}
%
% \TODO describe
% \begin{macrocode}
-\ifdefined\eql at provide@amsmath
+\ifdefined\eql at provide@opt at amsmath
\eqnlinesprovide{%
multline,gather,align,flalign,%
multlined,gathered,aligned,%
- subequations,eqref}
+ subequations}
\fi
% \end{macrocode}
%
% \TODO describe
% \begin{macrocode}
-\ifdefined\eql at provide@ang
- \eqnlinesprovide{ang}
-\fi
+\ifdefined\eql at provide@opt at ang\eqnlinesprovide{ang}\fi
% \end{macrocode}
%
+% \TODO describe
+% \begin{macrocode}
+\ifdefined\eql at provide@opt at eqref\eqnlinesprovide{eqref}\fi
+% \end{macrocode}
+%
%\iffalse
%</package>
%\fi
Modified: trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines-dev.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines-dev.sty 2025-03-11 20:06:37 UTC (rev 74570)
+++ trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines-dev.sty 2025-03-11 20:06:49 UTC (rev 74571)
@@ -21,7 +21,7 @@
%% version 2008 or later.
%%
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesPackage{eqnlines-dev}[2025/02/25 v0.5 Single- and multi-line equations (development)]
+\ProvidesPackage{eqnlines-dev}[2025/03/11 v0.6 Single- and multi-line equations (development)]
\def\eql at dev#1{\PackageInfo{eqnlines-dev}{#1}}
\def\eql at dev@start#1{\eql at dev{starting \string#1}}
\def\eql at dev@enter#1{\eql at dev{entering \string#1}}
@@ -106,8 +106,10 @@
\def\eql at warn@tag at multiple{\eql at warning{Multiple equation \string\tag's:
previous tag declaration will be lost}}
\def\eql at amsmath@after#1{\AddToHook{package/amsmath/after}{#1}}
-\def\eql at amsmath@futurebefore#1{%
+\def\eql at amsmath@before#1{%
\@ifpackageloaded{amsmath}{}{\AddToHook{package/amsmath/before}{#1}}}
+\def\eql at amsmath@undefine#1{\eql at amsmath@before{\let#1\@undefined}}
+\def\eql at amsmath@let#1#2{\eql at amsmath@undefine#1\let#1#2}
\let\eql at false\@undefined
\let\eql at true\@empty
\newskip\eql at regunset@
@@ -116,7 +118,7 @@
#1\eql at regunset@\relax
\AtBeginDocument{%
\ifdim#1=\eql at regunset@
- \setlength#1{#2}%
+ #1\glueexpr#2\relax
\fi
}%
}
@@ -141,30 +143,45 @@
\def\eql at box@marginright{\z at skip}
\def\eql at box@colsep{2em}
\def\eql at spread{\jot}
+\newdimen\eql at spread@amount@
\newdimen\eql at tagfuzz@
\eql at tagfuzz@16sp\relax
-\newskip\eql at abovedisplayskip@
-\newskip\eql at belowdisplayskip@
-\newskip\eql at abovedisplaytagskip@
-\newskip\eql at belowdisplaytagskip@
-\eql at abovedisplaytagskip@\z at skip
-\eql at belowdisplaytagskip@\z at skip
-\newcount\eql at displayshortmode@
-\eql at displayshortmode@\tw@
-\newskip\eql at abovedisplaycontskip@
-\eql at regsetdelayed\eql at abovedisplaycontskip@\abovedisplayshortskip
-\newskip\eql at abovedisplaytopskip@
-\newskip\eql at belowdisplaytopskip@
-\eql at abovedisplaytopskip@\z at skip
-\eql at regsetdelayed\eql at belowdisplaytopskip@\belowdisplayskip
-\newskip\eql at abovedisplayparskip@
-\eql at regsetdelayed\eql at abovedisplayparskip@\abovedisplayskip
\def\eql at display@height{\ht\eql at strutbox@}
\def\eql at display@depth{\dp\eql at strutbox@}
-\newskip\eql at abovedisplaymedskip@
-\newskip\eql at belowdisplaymedskip@
-\eql at regsetdelayed\eql at abovedisplaymedskip@\belowdisplayshortskip
-\eql at regsetdelayed\eql at belowdisplaymedskip@\eql at belowdisplaymedskip@
+\newcount\eql at skip@mode at short@
+\eql at skip@mode at short@\tw@
+\newcount\eql at skip@mode at cont@
+\eql at skip@mode at cont@\z@
+\newcount\eql at skip@mode at par@
+\eql at skip@mode at par@\z@
+\newcount\eql at skip@mode at top@
+\eql at skip@mode at top@\z@
+\newcount\eql at skip@mode at leave@
+\let\eql at skip@force at leave\@undefined
+\newcount\eql at skip@mode at above@
+\newcount\eql at skip@mode at below@
+\let\eql at skip@force at above\@undefined
+\let\eql at skip@force at below\@undefined
+\let\eql at skip@custom at above\@undefined
+\let\eql at skip@custom at below\@undefined
+\def\eql at skip@long at above{\abovedisplayskip}
+\def\eql at skip@long at below{\belowdisplayskip}
+\def\eql at skip@short at above{\abovedisplayshortskip}
+\def\eql at skip@short at below{\belowdisplayshortskip}
+\def\eql at skip@cont at above{\eql at skip@short at above}
+\def\eql at skip@cont at below{\eql at skip@short at below}
+\def\eql at skip@par at above{\eql at skip@long at above}
+\def\eql at skip@par at below{\eql at skip@long at below}
+\def\eql at skip@top at above{\eql at skip@long at above}
+\def\eql at skip@top at below{\eql at skip@long at below}
+\def\eql at skip@med at above{\abovedisplayskip/2}
+\def\eql at skip@med at below{\belowdisplayskip/2}
+\def\eql at skip@tag at above{\z at skip}
+\def\eql at skip@tag at below{\z at skip}
+\def\eql at skip@partag at above{\z at skip}
+\def\eql at skip@partag at below{\z at skip}
+\def\eql at skip@medtag at above{\z at skip}
+\def\eql at skip@medtag at below{\z at skip}
\newdimen\eql at colsepmin@
\newdimen\eql at colsepmax@
\def\eql at colsepmin@val{1em}
@@ -189,7 +206,9 @@
\newdimen\eql at tagwidth@
\newdimen\eql at line@height@
\newdimen\eql at line@depth@
-\newif\ifmeasuring@
+\ifdefined\measuring at true\else
+ \expandafter\newif\csname ifmeasuring@\endcsname
+\fi
\AddToHook{package/hyperref/after}{
\ifdefined\Hy at ifnotmeasuring
\renewcommand\Hy at ifnotmeasuring[1]{\ifmeasuring@\else#1\fi}
@@ -196,9 +215,9 @@
\fi
}
\ifdefined\@displaytrue\else
-\everydisplay\expandafter{\the\everydisplay\@displaytrue}
+ \expandafter\newif\csname if at display\endcsname
+ \everydisplay\expandafter{\the\everydisplay\@displaytrue}
\fi
-\newif\if at display
\let\eql at hook@blockbefore\@empty
\let\eql at hook@blockafter\@empty
\let\eql at hook@blockin\@empty
@@ -212,6 +231,68 @@
\let\eql at hook@innerleft\@empty
\let\eql at hook@innerright\@empty
\let\eql at hook@innerlead\@empty
+\let\eql at tagging@on\eql at false
+\IfFormatAtLeastTF{2025-06-01}{%
+ \csname tag_if_active:T\endcsname{\let\eql at tagging@on\eql at true}}{}
+\ifdefined\eql at tagging@on
+ \def\eql at tagging@mathsave{%
+ \UseTaggingSocket{math/luamml/save/nNn}{{}\displaystyle{mtd}}}
+ \def\eql at tagging@mathaddlast{%
+ \UseTaggingSocket{math/luamml/mtable/finalizecol}{last}}
+ \def\eql at tagging@tagbegin{%
+ \UseTaggingSocket{math/display/tag/begin}}
+ \def\eql at tagging@tagend{%
+ \UseTaggingSocket{math/display/tag/end}}
+ \def\eql at tagging@tagsave{%
+ \UseTaggingSocket{math/luamml/mtable/tag/save}}
+ \def\eql at tagging@tagaddbox{%
+ \setbox\z@\copy\eql at tagbox@%
+ \UseTaggingSocket{math/luamml/mtable/tag/set}}
+ \def\eql at tagging@tablesaveinner{%
+ \UseExpandableTaggingSocket{math/luamml/mtable/innertable/save}}
+ \def\eql at tagging@tableaddinner{%
+ \UseTaggingSocket{math/luamml/mtable/innertable/finalize}}
+ \def\eql at tagging@tablesavelines{%
+ \UseExpandableTaggingSocket{math/luamml/mtable/finalize}{gather}}
+ \def\eql at tagging@tablesavealign{%
+ \UseExpandableTaggingSocket{math/luamml/mtable/finalize}{align}}
+ \def\eql at tagging@alignleft{%
+ \UseTaggingSocket{math/luamml/mtable/aligncol}{left}}
+ \def\eql at tagging@aligncenter{%
+ \UseTaggingSocket{math/luamml/mtable/aligncol}{center}}
+ \def\eql at tagging@alignright{%
+ \UseTaggingSocket{math/luamml/mtable/aligncol}{right}}
+ \let\eql at single@doscan\eql at true
+ \let\eql at scan@body\eql at scan@body at rescan
+ \ExplSyntaxOn
+ \def\eql at tagging@start{%
+ \bool_if:NF\l__math_collected_bool{%
+ \toks@\expandafter{\eql at tagging@opt}%
+ \edef\eql at tmp{{\@currenvir}{[\the\toks@] \the\eql at scan@reg@}}%
+ \expandafter\__math_process:nn\eql at tmp
+ \@kernel at math@registered at begin
+ \bool_set_true:N\l__math_collected_bool
+ }%
+ }
+ \def\eql at tagging@end{}
+ \ExplSyntaxOff
+\else
+ \def\eql at tagging@mathsave{}
+ \def\eql at tagging@mathaddlast{}
+ \def\eql at tagging@tagbegin{}
+ \def\eql at tagging@tagend{}
+ \def\eql at tagging@tagsave{}
+ \def\eql at tagging@tagaddbox{}
+ \def\eql at tagging@tablesaveinner{}
+ \def\eql at tagging@tableaddinner{}
+ \def\eql at tagging@tablesavelines{}
+ \def\eql at tagging@tablesavealign{}
+ \def\eql at tagging@alignleft{}
+ \def\eql at tagging@aligncenter{}
+ \def\eql at tagging@alignright{}
+ \def\eql at tagging@start{}
+ \def\eql at tagging@end{}
+\fi
\let\eql at punct@col\@empty
\let\eql at punct@line\relax
\let\eql at punct@block\relax
@@ -295,8 +376,7 @@
\eql at box@lastfield
\cr
\noalign{%
- \setlength\skip@{#1}%
- \vskip\skip@
+ \vskip\glueexpr#1\relax
}%
}
\let\eql at box@box\vcenter
@@ -313,10 +393,10 @@
\let\eql at box@lastfield\@empty
\eql at halign@init{%
\eql at dev{starting new line}%
-}%
+ }%
\tabskip\z at skip
\halign\bgroup
- &%
+ &%
\let\eql at box@lastfield\eql at box@lastfield at odd
\global\setbox\eql at fieldbox@\hbox{%
\eql at strut@field
@@ -326,12 +406,14 @@
##%
\eql at class@innerleft
\eql at hook@innerleft
+ \eql at tagging@mathsave
$%
+ \eql at tagging@mathaddlast
}%
\hfil
\kern\wd\eql at fieldbox@
\tabskip\z at skip
- &%
+ &%
\eql at fieldwidth@\wd\eql at fieldbox@
\kern-\eql at fieldwidth@
\box\eql at fieldbox@
@@ -346,10 +428,12 @@
##%
\eql at punct@apply at col
\eql at hook@colout
+ \eql at tagging@mathsave
$%
+ \eql at tagging@mathaddlast
}%
\hfil
- \tabskip\eql at colsep@
+ \tabskip\eql at colsep@\relax
\crcr
\noalign{%
\eql at hook@blockbefore
@@ -368,44 +452,49 @@
\tabskip\z at skip
\halign\bgroup
&%
- \eql at shape@pos@\m at ne
- \setbox\eql at fieldbox@\hbox{%
- \eql at strut@field
- \@lign
- $\m at th\displaystyle
- \eql at hook@colin
- ##%
- \eql at punct@apply at col
- \eql at hook@colout
- $%
- }%
- \ifnum\eql at shape@pos@=\m at ne
- \eql at shape@eval
- \fi
- \ifcase\eql at shape@pos@
- \kern\eql at shape@amount@
- \box\eql at fieldbox@
- \skip@\@flushglue
- \advance\skip@\eql at paddingleft@\relax
- \advance\skip@\eql at paddingright@\relax
- \advance\skip at -\eql at shape@amount@\relax
- \hskip\skip@
- \or
- \skip@\@flushglue
- \advance\skip@\eql at paddingleft@\relax
- \hskip\skip@
- \box\eql at fieldbox@
- \skip@\@flushglue
- \advance\skip@\eql at paddingright@\relax
- \hskip\skip@
- \or
- \skip@\@flushglue
- \advance\skip@\eql at paddingleft@\relax
- \advance\skip@\eql at paddingright@\relax
- \hskip\skip@
- \box\eql at fieldbox@
- \fi
- \tabskip\eql at colsep@
+ \eql at shape@pos@\m at ne
+ \setbox\eql at fieldbox@\hbox{%
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ \eql at tagging@mathsave
+ $%
+ \eql at tagging@mathaddlast
+ }%
+ \ifnum\eql at shape@pos@=\m at ne
+ \eql at shape@eval
+ \fi
+ \ifcase\eql at shape@pos@
+ \kern\eql at shape@amount@
+ \box\eql at fieldbox@
+ \skip@\@flushglue
+ \advance\skip@\eql at paddingleft@\relax
+ \advance\skip@\eql at paddingright@\relax
+ \advance\skip at -\eql at shape@amount@\relax
+ \hskip\skip@
+ \eql at tagging@alignleft
+ \or
+ \skip@\@flushglue
+ \advance\skip@\eql at paddingleft@\relax
+ \hskip\skip@
+ \box\eql at fieldbox@
+ \skip@\@flushglue
+ \advance\skip@\eql at paddingright@\relax
+ \hskip\skip@
+ \eql at tagging@aligncenter
+ \or
+ \skip@\@flushglue
+ \advance\skip@\eql at paddingleft@\relax
+ \advance\skip@\eql at paddingright@\relax
+ \hskip\skip@
+ \box\eql at fieldbox@
+ \eql at tagging@alignright
+ \fi
+ \tabskip\eql at colsep@\relax
\crcr
\noalign{%
\eql at hook@blockbefore
@@ -422,6 +511,7 @@
\noalign{%
\eql at hook@blockafter
}%
+ \eql at tagging@tablesaveinner
\egroup
}
\def\eql at box@start{%
@@ -434,17 +524,16 @@
\eql at nextopt@process{equationsbox}%
\let\eql at punct@block\eql at punct@main
\let\eql at punct@main\relax
- \setlength\eql at colsep@\eql at box@colsep
- \setlength\eql at paddingleft@\eql at paddingleft@val
- \setlength\eql at paddingright@\eql at paddingright@val
- \setlength\eql at indent@\eql at indent@val
+ \eql at colsep@\glueexpr\eql at box@colsep\relax
+ \eql at paddingleft@\glueexpr\eql at paddingleft@val\relax
+ \eql at paddingright@\glueexpr\eql at paddingright@val\relax
+ \eql at indent@\glueexpr\eql at indent@val\relax
\eql at stack@save at boxed
\let\eql at flushleft\eql at false
\eql at row@\z@
\eql at totalrows@\@M
\eql at shape@sel
- \setlength\skip@\eql at box@marginleft
- \hskip\skip@
+ \hskip\glueexpr\eql at box@marginleft\relax
\eql at box@box\bgroup
\eql at display@leave
\let\\\eql at box@cr
@@ -457,8 +546,8 @@
\newcommand{\eql at box@end}{%
\eql at box@close
\egroup
- \setlength\skip@\eql at box@marginright
- \hskip\skip@
+ \eql at tagging@tableaddinner
+ \hskip\glueexpr\eql at box@marginright\relax
\eql at stack@restore
\eql at box@endmath
}
@@ -482,153 +571,55 @@
\def\eql at mode@aligned{\let\eql at box@mode at lines\eql at false}
\def\eql at mode@lined{\let\eql at box@mode at lines\eql at true}
\eql at mode@aligned
-\eql at amsmath@futurebefore{
- \let\c at parentequation\@undefined
- \let\theparentequation\@undefined
+\def\eql at tag@setbox@#1{%
+ \def\eql at tag@box##1{#1}%
}
-\ifdefined\c at parentequation\else
-\newcounter{parentequation}
-\fi
-\def\eql at subequations@template{\theparentequation\alph{equation}}
-\let\eql at subequations@active\eql at false
-\def\eql at subequations@init{%
- \edef\eql at subequations@restorecounter{%
- \global\c at equation\the\c at equation\relax}%
- \ifdefined\eql at blocktag
- \expandafter\eql at tag@makenext\eql at blocktag
- \eql at nexttag
- \global\advance\eql at numbering@refcount@\@ne
- \protected at edef\theHparentequation{eql-\the\eql at numbering@refcount@}%
- \protected at edef\theparentequation{\eql at tag@text}%
- \else
- \advance\c at equation\@ne
- \protected at edef\theparentequation{\theequation}%
- \ifdefined\theHequation
- \protected at edef\theHparentequation{\theHequation}%
- \fi
- \fi
- \global\c at parentequation\c at equation
- \global\c at equation\z@
- \let\theequation\eql at subequations@template
- \def\theHequation{\theHparentequation.\arabic{equation}}%
+\def\eql at tag@setbox#1{%
+ \def\eql at tag@box##1{\hbox{\m at th\normalfont#1}}%
}
-\def\eql at subequations@close{%
- \ifnum\c at equation=\z@
- \eql at subequations@restorecounter
- \else
- \global\c at equation\c at parentequation
- \fi
-}
-\def\eql at subequations@start{%
- \let\eql at blocktag\@undefined
- \let\eql at blocklabel\@undefined
- \eql at nextopt@process{subequations}%
- \eql at subequations@init
- \global\advance\eql at numbering@refcount@\@ne
- \edef\eql at subequations@currentHref{equation.eql-\the\eql at numbering@refcount@}%
- \eql at Hy@anchor\eql at subequations@currentHref
- \edef\eql at subequations@thepage{\thepage}%
- \def\@currentcounter{equation}%
- \let\@currentHref\eql at subequations@currentHref
- \protected at edef\@currentlabel{\p at equation\theparentequation}%
- \let\@currentlabelname\eql at labelname@default
- \let\eql at subequations@active\eql at true
- \ifdefined\eql at blocklabel
- \ifdefined\eql at SK
- \SK@\SK@@label\eql at blocklabel
- \fi
- \fi
- \ignorespaces
-}
-\def\eql at subequations@end{%
- \ifnum\c at equation>\z@
- \ifdefined\eql at blocklabel
- \begingroup
- \def\@currentcounter{equation}%
- \let\thepage\eql at subequations@thepage
- \let\@currentHref\eql at subequations@currentHref
- \protected at edef\@currentlabel{\p at equation\theparentequation}%
- \let\@currentlabelname\eql at labelname@default
- \expandafter\eql at label@clean\expandafter{\eql at blocklabel}%
- \endgroup
- \fi
- \fi
- \eql at subequations@close
- \ignorespacesafterend
-}
-\newenvironment{eql at subequations}{%
-\eql at dev@enterenv
- \eql at subequations@testall\eql at subequations@start%
-}{%
- \eql at subequations@end
-\eql at dev@leaveenv
-}
-\def\eql at subequations@testall{\eql at subequations@testopt}
-\def\eql at subequations@testopt#1{%
- \eql at ifnextchar@tight[%]
- {\eql at subequations@addopt{\eql at subequations@testat{#1}}}%
- {\eql at subequations@testat{#1}}}
-\def\eql at subequations@addopt#1[#2]{\eqnaddopt{#2}#1}
-\def\eql at subequations@testat#1{%
- \eql at ifat@tight%
- {\eql at subequations@addlabel{#1}}%
- {#1}}
-\def\eql at subequations@addlabel#1#2{\eqnaddopt{label={#2}}#1}
-\ifdefined\maketag@@@\else
-\def\maketag@@@#1{\hbox{\m at th\normalfont#1}}
-\fi
-\ifdefined\tagform@\else
-\def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}
-\fi
-\def\eql at tag@setmake@#1{%
- \def\maketag@@@##1{\hbox{\m at th\normalfont#1}}%
-}
-\def\eql at tag@setmake#1{%
- \def\maketag@@@##1{\hbox{\m at th\normalfont#1}}%
-}
\def\eql at tag@setform@#1{%
- \def\tagform@##1{\maketag@@@{#1}}%
+ \def\eql at tag@form##1{#1}%
}
\def\eql at tag@setform#1#2#3{%
- \def\tagform@##1{\maketag@@@{#1\ignorespaces#2\unskip\@@italiccorr#3}}%
+ \def\eql at tag@form##1{#1\ignorespaces#2\unskip\@@italiccorr#3}%
}
-
+\eql at tag@setbox{#1}
+\eql at tag@setform({#1})
+\def\eql at tag@boxedform#1{\eql at tag@box{\eql at tag@form{#1}}}
\newdimen\eql at raisetag@amount@
\def\eql at raisetag@default{%
\eql at warning{\string\raisetag\space not allowed here}
\@gobble
}
-\eql at amsmath@after{\let\eql at raisetag@default\raisetag}
-\eql at amsmath@futurebefore{\let\raisetag\@undefined}
-\let\raisetag\eql at raisetag@default
-\def\eql at raisetag#1{\setlength\dimen@{#1}\global\eql at raisetag@amount@\dimen@}%
-\let\eql at SK\@undefined
-\let\eql at SK@lab at relax\@empty
-\let\eql at SK@makelabel\@gobble
+\eql at amsmath@let\raisetag\eql at raisetag@default
+\def\eql at raisetag#1{\global\eql at raisetag@amount@\glueexpr#1\relax}%
+\let\eql at SK@loaded\eql at false
+\let\eql at SK@label\@gobble
+\let\eql at SK@clearlabel\@empty
+\let\eql at SK@setlabel\@gobble
\let\eql at SK@printlabel at right\@empty
\let\eql at SK@printlabel at left\@empty
\let\eql at SK@printlabel at line\@empty
\def\eql at label@clean{\eql at label@org}
\AddToHook{package/showkeys/after}{
- \let\eql at SK\@empty
- \def\eql at SK@lab at relax{\let\eql at SK@lab\relax}
- \eql at SK@lab at relax
+ \let\eql at SK@loaded\eql at true
+ \def\eql at SK@label#1{\SK@\SK@@label#1}
+ \def\eql at SK@clearlabel{\let\eql at SK@lab\relax}
+ \eql at SK@clearlabel
\def\eql at SK@@label#1>#2\SK@{%
\def\eql at SK@lab{\smash{\SK at labelcolor\showkeyslabelformat{#2}}}%
}
- \def\eql at SK@makelabel#1{%
- \SK@\eql at SK@@label#1%
- }
+ \def\eql at SK@setlabel#1{\SK@\eql at SK@@label#1}
\def\eql at SK@printlabel at right{%
\ifx\eql at SK@lab\relax\else
\rlap{\kern\marginparsep\eql at SK@lab}%
- \eql at SK@lab at relax
+ \eql at SK@clearlabel
\fi
}
\def\eql at SK@printlabel at left{%
\ifx\eql at SK@lab\relax\else
\llap{\eql at SK@lab\kern\marginparsep}%
- \eql at SK@lab at relax
+ \eql at SK@clearlabel
\fi
}
\def\eql at SK@printlabel at line{%
@@ -640,7 +631,7 @@
\eql at SK@lab
\kern\marginparsep
}%
- \eql at SK@lab at relax
+ \eql at SK@clearlabel
\else
\rlap{%
\dimen@\displaywidth
@@ -649,7 +640,7 @@
\eql at SK@lab
}%
\fi
- \eql at SK@lab at relax
+ \eql at SK@clearlabel
\prevdepth\dimen@
\fi
}
@@ -662,9 +653,6 @@
\let\eql at nexttag\@undefined
\def\eql at tag@default{%
\eql at error{\string\tag\space not allowed here}{}\eql at tag@gobble}
-\eql at amsmath@after{
- \let\eql at tag@default\tag
-}
\let\tag\eql at tag@default
\def\eql at tag@gobble@[#1]#2{}
\def\eql at tag@gobble{%
@@ -681,7 +669,7 @@
}
\def\eql at tag@makenext at star[#1]#2{%
\global\def\eql at nexttag{%
- \let\eql at tag@tool\maketag@@@
+ \let\eql at tag@tool\@firstofone
\protected at edef\eql at tag@text{#2}%
\protected at edef\eql at tag@label{#1}%
}%
@@ -688,7 +676,7 @@
}
\def\eql at tag@makenext@[#1]#2{%
\global\def\eql at nexttag{%
- \let\eql at tag@tool\tagform@
+ \let\eql at tag@tool\eql at tag@form
\protected at edef\eql at tag@text{#2}%
\protected at edef\eql at tag@label{#1}%
\protected at edef\eql at tag@label{\p at equation\eql at tag@label}%
@@ -696,9 +684,11 @@
}
\newcount\eql at numbering@refcount@
\eql at numbering@refcount@\z@
+\def\eql at numbering@ref{equation.eql-\the\eql at numbering@refcount@}
+\def\eql at numbering@refstep{\global\advance\eql at numbering@refcount@\@ne}
\def\eql at numbering@makeblockanchor{%
- \global\advance\eql at numbering@refcount@\@ne
- \global\edef\eql at label@currentHref{equation.eql-\the\eql at numbering@refcount@}%
+ \eql at numbering@refstep
+ \global\edef\eql at label@currentHref{\eql at numbering@ref}%
\eql at Hy@anchor\eql at label@currentHref
\global\edef\eql at label@thepage{\thepage}%
}
@@ -711,19 +701,19 @@
\eql at nexttag
\def\@currentcounter{equation}%
\let\@currentlabel\eql at tag@label
- \global\advance\eql at numbering@refcount@\@ne
- \edef\@currentHref{equation.eql-\the\eql at numbering@refcount@}%
+ \eql at numbering@refstep
+ \edef\@currentHref{\eql at numbering@ref}%
\eql at Hy@anchor\@currentHref
\global\let\eql at nexttag\@undefined
\else
\refstepcounter{equation}%
- \let\eql at tag@tool\tagform@
+ \let\eql at tag@tool\eql at tag@form
\edef\eql at tag@text{\theequation}%
\fi
}
\def\eql at compose@label{%
\ifmeasuring@\else
- \eql at SK@lab at relax
+ \eql at SK@clearlabel
\ifdefined\eql at nextlabel
\ifnum
\ifnum\eql at numbering@target@<\z@
@@ -737,7 +727,7 @@
\fi
}
\def\eql at compose@label@{%
- \eql at SK@makelabel\eql at nextlabel
+ \eql at SK@setlabel\eql at nextlabel
\begingroup
\ifnum\eql at numbering@target@=\eql at row@
\eql at numbering@setblockanchor
@@ -748,7 +738,12 @@
\endgroup
}
\def\eql at compose@tag{%
- \eql at tag@tool\eql at tag@text
+ \eql at tagging@tagbegin
+ \eql at tag@box{%
+ \eql at tag@tool\eql at tag@text
+ \eql at tagging@tagsave
+ }%
+ \eql at tagging@tagend
}
\def\eql at compose@print{%
\eql at compose@anchor
@@ -764,10 +759,10 @@
\def\eql at compose@measure{%
\ifdefined\eql at nexttag
\eql at nexttag
- \eql at tag@tool\eql at tag@text
+ \eql at tag@box{\eql at tag@tool\eql at tag@text}%
\else
\stepcounter{equation}%
- \tagform@\theequation
+ \eql at tag@box{\eql at tag@form\theequation}%
\fi
\ifnum\eql at numbering@target@<\z@
\global\let\eql at nextlabel\@undefined
@@ -826,7 +821,7 @@
\def\eql at numbering@printsubeqlabel{%
\ifdefined\eql at parentlabel
\eql at numbering@makeblockanchor
- \eql at SK@makelabel\eql at parentlabel
+ \eql at SK@setlabel\eql at parentlabel
\begingroup
\def\@currentcounter{equation}%
\eql at numbering@setblockanchor
@@ -1121,6 +1116,94 @@
\fi
\fi
}
+\eql at amsmath@undefine\c at parentequation
+\eql at amsmath@undefine\theparentequation
+\ifdefined\c at parentequation\else
+\newcounter{parentequation}
+\fi
+\def\eql at subequations@template{\theparentequation\alph{equation}}
+\let\eql at subequations@active\eql at false
+\def\eql at subequations@init{%
+ \edef\eql at subequations@restorecounter{%
+ \global\c at equation\the\c at equation\relax}%
+ \ifdefined\eql at blocktag
+ \expandafter\eql at tag@makenext\eql at blocktag
+ \eql at nexttag
+ \eql at numbering@refstep
+ \protected at edef\theHparentequation{\eql at numbering@ref}%
+ \protected at edef\theparentequation{\eql at tag@text}%
+ \else
+ \advance\c at equation\@ne
+ \protected at edef\theparentequation{\theequation}%
+ \ifdefined\theHequation
+ \protected at edef\theHparentequation{\theHequation}%
+ \fi
+ \fi
+ \global\c at parentequation\c at equation
+ \global\c at equation\z@
+ \let\theequation\eql at subequations@template
+ \def\theHequation{\theHparentequation.\arabic{equation}}%
+}
+\def\eql at subequations@close{%
+ \ifnum\c at equation=\z@
+ \eql at subequations@restorecounter
+ \else
+ \global\c at equation\c at parentequation
+ \fi
+}
+\def\eql at subequations@start{%
+ \let\eql at blocktag\@undefined
+ \let\eql at blocklabel\@undefined
+ \eql at nextopt@process{subequations}%
+ \eql at subequations@init
+ \eql at numbering@refstep
+ \edef\eql at subequations@currentHref{\eql at numbering@ref}%
+ \eql at Hy@anchor\eql at subequations@currentHref
+ \edef\eql at subequations@thepage{\thepage}%
+ \def\@currentcounter{equation}%
+ \let\@currentHref\eql at subequations@currentHref
+ \protected at edef\@currentlabel{\p at equation\theparentequation}%
+ \let\@currentlabelname\eql at labelname@default
+ \let\eql at subequations@active\eql at true
+ \ifdefined\eql at blocklabel
+ \eql at SK@label\eql at blocklabel
+ \fi
+ \ignorespaces
+}
+\def\eql at subequations@end{%
+ \ifnum\c at equation>\z@
+ \ifdefined\eql at blocklabel
+ \begingroup
+ \def\@currentcounter{equation}%
+ \let\thepage\eql at subequations@thepage
+ \let\@currentHref\eql at subequations@currentHref
+ \protected at edef\@currentlabel{\p at equation\theparentequation}%
+ \let\@currentlabelname\eql at labelname@default
+ \expandafter\eql at label@clean\expandafter{\eql at blocklabel}%
+ \endgroup
+ \fi
+ \fi
+ \eql at subequations@close
+ \ignorespacesafterend
+}
+\newenvironment{eql at subequations}{%
+\eql at dev@enterenv
+ \eql at subequations@testall\eql at subequations@start%
+}{%
+ \eql at subequations@end
+\eql at dev@leaveenv
+}
+\def\eql at subequations@testall{\eql at subequations@testopt}
+\def\eql at subequations@testopt#1{%
+ \eql at ifnextchar@tight[%]
+ {\eql at subequations@addopt{\eql at subequations@testat{#1}}}%
+ {\eql at subequations@testat{#1}}}
+\def\eql at subequations@addopt#1[#2]{\eqnaddopt{#2}#1}
+\def\eql at subequations@testat#1{%
+ \eql at ifat@tight%
+ {\eql at subequations@addlabel{#1}}%
+ {#1}}
+\def\eql at subequations@addlabel#1#2{\eqnaddopt{label={#2}}#1}
\def\eql at numbering@subeq at init{%
\let\eql at save@theequation\theequation
\let\eql at save@theHequation\theHequation
@@ -1152,9 +1235,8 @@
}
\DeclareRobustCommand{\eql at displaybreak@default}[1][4]{%
\eql at warning{Invalid use of \string\displaybreak}{}}
-\eql at amsmath@futurebefore{\let\displaybreak\@undefined}
\eql at amsmath@after{\let\eql at displaybreak@default\displaybreak}
-\let\displaybreak\eql at displaybreak@default
+\eql at amsmath@let\displaybreak\eql at displaybreak@default
\newcount\eql at displaybreak@pen@
\newcount\eql at displaybreak@prepen@
\protected\def\eql at displaybreak@print{%
@@ -1178,10 +1260,6 @@
\eql at ampprotect\eql at testopt@tight\eql at displaybreak@measure@{4}%
}
\def\eql at displaybreak@measure@[#1]{}
-\def\eql at display@atend#1{%
- \expandafter\def\expandafter\eql at display@doatend\expandafter
- {\eql at display@doatend#1}%
-}
\newskip\eql at vspaceskip@
\newskip\eql at abovespace@
\newskip\eql at belowspace@
@@ -1188,9 +1266,7 @@
\let\eql at vspace@org\vspace
\def\eql at vspace{\eql at ifstar@loose\eql at vspace@\eql at vspace@}
\def\eql at vspace@#1{%
- \setlength\skip@{#1}%
- \global\advance\eql at vspaceskip@\skip@
-}
+ \global\advance\eql at vspaceskip@\glueexpr#1\relax}
\def\eql at display@init{%
\eql at display@firstavail@\z@
\eql at raisetag@firstlast@\z@
@@ -1201,50 +1277,140 @@
\let\vspace\eql at vspace
}
\def\eql at display@close{%
+ \ifdim\eql at display@firstavail@<\z@
+ \eql at display@firstavail@\z@
+ \fi
+ \eql at skip@mode at leave@\z@
\ifdim\eql at halign@prevdepth@=\maxdimen
\ifdim\predisplaysize=-\maxdimen
- \abovedisplayskip\eql at abovedisplaycontskip@
- \predisplaysize\maxdimen
- \abovedisplayshortskip\abovedisplayskip
- \belowdisplayshortskip\belowdisplayskip
+ \eql at skip@mode at above@\tw@
+ \eql at skip@mode at below@\eql at skip@mode at cont@
+ \else
+ \eql at skip@mode at above@\z@
+ \eql at skip@mode at below@\z@
+ \advance\eql at display@firstavail@\displayindent
+ \ifdim\eql at display@firstavail@>\predisplaysize
+ \ifcase\eql at skip@mode at short@
+ \or
+ \eql at skip@mode at above@\@ne
+ \or
+ \eql at skip@mode at above@\@ne
+ \ifnum\eql at row@=\tw@
+ \eql at skip@mode at below@\@ne
+ \fi
+ \or
+ \eql at skip@mode at above@\@ne
+ \eql at skip@mode at below@\@ne
+ \fi
+ \fi
\fi
\else
- \ifdim\eql at halign@prevdepth@=\@m\p@
+ \ifdim\eql at halign@prevdepth@=-\@m\p@
+ \eql at skip@mode at above@4\relax
+ \eql at skip@mode at below@\eql at skip@mode at top@
+ \eql at skip@mode at leave@\z@
\predisplaypenalty\z@
- \abovedisplayskip\eql at abovedisplaytopskip@
- \belowdisplayskip\eql at belowdisplaytopskip@
+ \ifcase\eql at skip@mode at top@
+ \or
+ \or
+ \or
+ \eql at skip@mode at leave@\@ne
+ \or
+ \postdisplaypenalty\z@
+ \eql at skip@mode at leave@\tw@
+ \fi
\else
+ \eql at skip@mode at above@\thr@@
+ \eql at skip@mode at below@\eql at skip@mode at par@
+ \eql at skip@mode at leave@\z@
\predisplaypenalty\z@
- \abovedisplayskip\eql at abovedisplayparskip@
+ \ifnum\eql at skip@mode at par@=\thr@@
+ \eql at skip@mode at leave@\@ne
+ \fi
\fi
- \predisplaysize\maxdimen
- \abovedisplayshortskip\abovedisplayskip
- \belowdisplayshortskip\belowdisplayskip
\fi
- \eql at display@doatend
- \ifdim\eql at display@firstavail@<\z@
- \eql at display@firstavail@\z@
+ \ifdefined\eql at skip@force at above
+ \eql at skip@mode at above@\eql at skip@force at above\relax
\fi
- \advance\eql at display@firstavail@\displayindent
- \ifdim\eql at display@firstavail@>\predisplaysize
- \ifcase\eql at displayshortmode@
+ \ifdefined\eql at skip@force at below
+ \eql at skip@mode at below@\eql at skip@force at below\relax
+ \fi
+ \ifdefined\eql at skip@force at leave
+ \eql at skip@mode at leave@\eql at skip@force at leave\relax
+ \fi
+ \ifodd\eql at raisetag@firstlast@
+ \ifcase\eql at skip@mode at above@
+ \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
\or
- \abovedisplayskip\abovedisplayshortskip
+ \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
\or
- \abovedisplayskip\abovedisplayshortskip
- \ifnum\eql at row@=\tw@
- \belowdisplayskip\belowdisplayshortskip
- \fi
+ \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
\or
- \abovedisplayskip\abovedisplayshortskip
- \belowdisplayskip\belowdisplayshortskip
+ \abovedisplayskip\glueexpr\eql at skip@partag at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@partag at above\relax
+ \or
+ \abovedisplayskip\z at skip
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@medtag at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@custom at above\relax
\fi
+ \else
+ \ifcase\eql at skip@mode at above@
+ \abovedisplayskip\glueexpr\eql at skip@long at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@short at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@cont at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@par at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@top at above\relax
+ \or
+ \abovedisplayskip\z at skip
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@medtag at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@custom at above\relax
+ \fi
\fi
- \ifodd\eql at raisetag@firstlast@
- \abovedisplayskip\eql at abovedisplaytagskip@
- \fi
\ifnum\eql at raisetag@firstlast@>\@ne
- \belowdisplayskip\eql at belowdisplaytagskip@
+ \ifcase\eql at skip@mode at below@
+ \belowdisplayskip\glueexpr\eql at skip@tag at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@tag at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@tag at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@partag at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@partag at below\relax
+ \or
+ \belowdisplayskip\z at skip
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@medtag at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@custom at below\relax
+ \fi
+ \else
+ \ifcase\eql at skip@mode at below@
+ \belowdisplayskip\glueexpr\eql at skip@long at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@short at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@cont at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@par at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@top at below\relax
+ \or
+ \belowdisplayskip\z at skip
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@medtag at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@custom at below\relax
+ \fi
\fi
\ifnum\eql at displaybreak@pen@=\@MM\else
\postdisplaypenalty\eql at displaybreak@pen@
@@ -1255,10 +1421,13 @@
\advance\abovedisplayskip\eql at abovespace@
\advance\belowdisplayskip\eql at belowspace@
\advance\belowdisplayskip\eql at vspaceskip@
+ \abovedisplayshortskip\abovedisplayskip
+ \belowdisplayshortskip\belowdisplayskip
\count@\prevgraf
\advance\count@\eql at row@
\advance\count at -\tw@
\prevgraf\count@
+ \global\eql at skip@mode at leave@\eql at skip@mode at leave@
}
\def\eql at display@leave{%
\let\label\eql at label@org
@@ -1265,12 +1434,15 @@
\let\tag\eql at tag@default
\let\raisetag\eql at raisetag@default
\let\displaybreak\eql at displaybreak@default
+ \let\intertext\eql at intertext@default
\let\vspace\eql at vspace@org
}
\expandafter\def\expandafter\@arrayparboxrestore\expandafter{%
\@arrayparboxrestore
\eql at display@leave
- \eql at amprevert
+ \ifdefined\eql at ampproof@active
+ \eql at amprevert
+ \fi
\@displayfalse
}
\newbox\eql at strutbox@
@@ -1289,14 +1461,11 @@
}
\AtBeginDocument{\eql at strut@make}
\def\eql at halign@spread{%
- \dimen@\eql at spread\relax
- \advance\dimen@\normalbaselineskip
- \ifdim\dimen@>\baselineskip
- \normalbaselines
- \dimen@\eql at spread\relax
- \advance\dimen@\normalbaselineskip
- \advance\dimen at -\baselineskip
- \openup\dimen@
+ \eql at spread@amount@\glueexpr\eql at spread\relax
+ \advance\eql at spread@amount@\normalbaselineskip
+ \advance\eql at spread@amount at -\baselineskip
+ \ifdim\eql at spread@amount@>\z@
+ \openup\eql at spread@amount@
\ifdefined\spread at equation
\let\spread at equation\@empty
\fi
@@ -1312,24 +1481,39 @@
\eql at halign@prevdepth@\maxdimen
\fi
}
+\def\eql at halign@leave{%
+ \ifcase\eql at skip@mode at leave@
+ \or
+ \endgraf
+ \or
+ \endgraf
+ \prevdepth-\@m\p@
+ \fi
+}
\def\eql at halign@before{%
\ifdim\eql at halign@prevdepth@=\maxdimen\else
\prevdepth\eql at halign@prevdepth@
\fi
\ifdim\prevdepth=-\@m\p@\else
- \skip@\normalbaselineskip
- \advance\skip at -\eql at display@height\relax
- \advance\skip at -\prevdepth\relax
- \ifdim\skip@<\normallineskiplimit
- \vskip\normallineskip
+ \ifdefined\eql at display@height
+ \skip@\baselineskip
+ \advance\skip at -\glueexpr\eql at display@height\relax
+ \advance\skip at -\prevdepth\relax
+ \ifdim\skip@<\lineskiplimit
+ \skip@\lineskip
+ \fi
+ \advance\skip at -\eql at spread@amount@\relax
+ \vskip\skip@
+ \nointerlineskip
\else
- \vskip\skip@
+ \vskip-\eql at spread@amount@\relax
\fi
- \nointerlineskip
\fi
}
\def\eql at halign@after{%
- \prevdepth\eql at display@depth\relax
+ \ifdefined\eql at display@depth
+ \prevdepth\glueexpr\eql at display@depth\relax
+ \fi
}
\def\eql at halign@init#1{%
\eql at halign@spread
@@ -1533,7 +1717,7 @@
}%
}
\def\eql at adjust@shoveleft@[#1]{%
- \eql at sregroup\setlength\dimen@{#1}\global\eql at shape@amount@\dimen@}
+ \eql at sregroup\global\eql at shape@amount@\glueexpr#1\relax}
\def\eql at adjust@shovecenter{%
\global\eql at shape@pos@\@ne\global\eql at shape@amount@\z@}
\def\eql at adjust@shoveright{%
@@ -1544,7 +1728,12 @@
}
\def\eql at adjust@print#1#2{%
\eql at restore@hfuzz
- \hbox to\displaywidth{#1\unhbox\eql at fieldbox@\unkern#2}%
+ \hbox to\displaywidth{%
+ #1%
+ \unhbox\eql at fieldbox@\unkern
+ #2%
+ \eql at tagging@mathaddlast
+ }%
}
\def\eql at adjust@print at alignleft#1#2{%
\ifnum\eql at row@=\@ne
@@ -1576,6 +1765,14 @@
\eql at shape@sel
}
\def\eql at adjust@sel at tag{%
+ \eql at tagging@tagaddbox
+ \ifcase\eql at shape@pos@
+ \eql at tagging@alignleft
+ \or
+ \eql at tagging@aligncenter
+ \or
+ \eql at tagging@alignright
+ \fi
\csname eql at adjust%
@\ifdefined\eql at flushleft flushleft\else center\fi
@\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
@@ -1583,6 +1780,14 @@
@tag\endcsname
}
\def\eql at adjust@sel at notag{%
+ \eql at tagging@tagaddbox
+ \ifcase\eql at shape@pos@
+ \eql at tagging@alignleft
+ \or
+ \eql at tagging@aligncenter
+ \or
+ \eql at tagging@alignright
+ \fi
\csname eql at adjust%
@\ifdefined\eql at flushleft flushleft\else center\fi
@\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
@@ -1995,6 +2200,9 @@
Please switch to equations environment}%
}
\def\eql at single@start{%
+ \eql at halign@catchprevdepth
+ \eql at tagging@start
+ $$%$$
\eql at numbering@eval at mode
\let\eql at numbering@subeq at use\eql at false
\eql at stack@save at single
@@ -2017,7 +2225,15 @@
\eql at hook@eqout
\eql at single@end at sel
\eql at stack@restore
+ $$%$$
+ \eql at tagging@end
+ \eql at halign@leave
}
+\def\eql at single@main{%
+ \expandafter\eql at single@start
+ \eql at scan@body
+ \eql at single@end
+}
\def\eql at single@start at native{%
\eql at hook@eqin
}%
@@ -2055,6 +2271,7 @@
\eql at hook@eqin
}
\def\eql at single@end at adjust{%
+ \eql at tagging@mathsave
$%$
\hfil
\kern\z@
@@ -2073,6 +2290,7 @@
\fi
\cr
\noalign{\eql at halign@after}%
+ \eql at tagging@tablesavelines
}%
\eql at row@\tw@
\eql at display@close
@@ -2192,7 +2410,7 @@
\else
\penalty\eql at displaybreak@pen@
\fi
- \addtolength\eql at vspaceskip@{#1}%
+ \advance\eql at vspaceskip@\glueexpr#1\relax%
\vskip\eql at vspaceskip@
\global\eql at vspaceskip@\z at skip
}%
@@ -2201,22 +2419,42 @@
\let\\\eql at math@cr
\let\eql at math@cr@@@#1%
}
-\eql at amsmath@futurebefore{\let\intertext\@undefined}
-\providecommand{\intertext}{\eql at error{Invalid use of \string\intertext}}
-\def\eql at intertext@process#1{%
+\def\eql at intertext@default{\eql at error{Invalid use of \string\intertext}}
+\eql at amsmath@let\intertext\eql at intertext@default
+\def\eql at intertext@process{%
\eql at math@cr@@@
\cr
- \ifmeasuring@\else
- \expandafter\eql at intertext@print{#1}%
+ \ifmeasuring@
+ \expandafter\@gobble
+ \else
+ \expandafter\eql at intertext@print
\fi
}
\def\eql at intertext@print#1{%
\noalign{%
\eql at halign@after
+ \let\eql at skip@force at below\z@
+ \let\eql at skip@force at above\z@
\eql at setkeys{intertext}\eql at intertext@opt
- \normalbaselines
+ \openup-\eql at spread@amount@
\penalty\postdisplaypenalty
- \addtolength\eql at vspaceskip@\belowdisplayskip
+ \ifcase\eql at skip@force at below\relax
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@long at below\relax
+ \or
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@short at below\relax
+ \or
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@cont at below\relax
+ \or
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@par at below\relax
+ \or
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@top at below\relax
+ \or
+ \advance\eql at vspaceskip@\z at skip
+ \or
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@med at below\relax
+ \or
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@custom at below\relax
+ \fi
\vskip\eql at vspaceskip@
\global\eql at vspaceskip@\z at skip
\vbox{%
@@ -2233,7 +2471,23 @@
\par
}%
\penalty\predisplaypenalty
- \vskip\abovedisplayskip
+ \ifcase\eql at skip@force at above\relax
+ \vskip\glueexpr\eql at skip@long at above\relax
+ \or
+ \vskip\glueexpr\eql at skip@short at above\relax
+ \or
+ \vskip\glueexpr\eql at skip@cont at above\relax
+ \or
+ \vskip\glueexpr\eql at skip@par at above\relax
+ \or
+ \vskip\glueexpr\eql at skip@top at above\relax
+ \or
+ \vskip\z at skip
+ \or
+ \vskip\glueexpr\eql at skip@med at above\relax
+ \or
+ \vskip\glueexpr\eql at skip@custom at above\relax
+ \fi
\eql at halign@prevdepth@\z@
\eql at halign@before
}
@@ -2266,6 +2520,9 @@
}
\let\eql at multi@mode at lines\eql at false
\def\eql at multi@main{%
+ \eql at halign@catchprevdepth
+ \eql at tagging@start
+ $$%$$
\eql at numbering@eval at mode
\eql at stack@save at multi
\ifdefined\eql at subequations@active
@@ -2307,19 +2564,30 @@
\eql at numbering@subeq at close
\fi
\eql at stack@restore
+ $$%$$
+ \eql at tagging@end
+ \eql at halign@leave
}
\def\eql at mode@equation{%
\let\eql at equations@mode at single\eql at true
- \let\eql at equations@end\eql at single@end
+ \ifdefined\eql at single@doscan
+ \let\eql at equations@main\eql at single@main
+ \let\eql at equations@end\@empty
+ \else
+ \let\eql at equations@main\@undefined
+ \let\eql at equations@end\eql at single@end
+ \fi
}
\def\eql at mode@align{%
\let\eql at equations@mode at single\eql at false
\let\eql at multi@mode at lines\eql at false
+ \let\eql at equations@main\eql at multi@main
\let\eql at equations@end\@empty
}
\def\eql at mode@lines{%
\let\eql at equations@mode at single\eql at false
\let\eql at multi@mode at lines\eql at true
+ \let\eql at equations@main\eql at multi@main
\let\eql at equations@end\@empty
}
\eql at mode@align
@@ -2430,12 +2698,12 @@
\advance\dimen at -\eql at tagmargin@
\divide\dimen@\tw@
\eql at marginleft@\dimen@
- \advance\eql at marginleft@-\eql at paddingleft@
+ \advance\eql at marginleft@-\glueexpr\eql at paddingleft@val\relax
\ifdim\eql at marginleft@<\z@
\eql at marginleft@\z@
\fi
\eql at marginright@\dimen@
- \advance\eql at marginright@-\eql at paddingright@
+ \advance\eql at marginright@-\glueexpr\eql at paddingright@val\relax
\ifdim\eql at marginright@<\z@
\eql at marginright@\z@
\fi
@@ -2457,6 +2725,7 @@
##%
\eql at punct@apply at col
\eql at hook@colout
+ \eql at tagging@mathsave
$%
\hfil
\kern\z@
@@ -2481,6 +2750,7 @@
\eql at halign@after
\eql at dev@leave\eql at lines@print
}%
+ \eql at tagging@tablesavelines
}%
\eql at display@close
}
@@ -2506,47 +2776,11 @@
\expandafter\eql at align@add at amp\romannumeral\number\count@ 000q}%
\eql at tmp
}
-\def\eql at align@preamble#1#2#3{%
- &%
- \global\advance\eql at column@\@ne
- \hfil
- \global\setbox\eql at fieldbox@\hbox{%
- #3%
- \@lign
- $\m at th\displaystyle
- \eql at hook@colin
- ##%
- \eql at class@innerleft
- \eql at hook@innerleft
- $%
- }%
- \global\eql at fieldwidth@\wd\eql at fieldbox@
- #2%
- \tabskip\z at skip
- &%
- \global\advance\eql at column@\@ne
- \setbox\eql at fieldbox@\hbox{%
-\kern-\wd\eql at fieldbox@
-\box\eql at fieldbox@
- #3%
- \@lign
- $\m at th\displaystyle
- \eql at hook@innerright
- \eql at class@innerright at sel
- ##%
- \eql at punct@apply at col
- \eql at hook@colout
- $%
- }%
- #2%
- \hfil
- \tabskip#1%
-}
\def\eql at align@print at trailright{%
&\omit
\global\advance\eql at column@\@ne
\setbox\eql at fieldbox@\hbox{%
-\kern-\wd\eql at fieldbox@\box\eql at fieldbox@
+ \kern-\wd\eql at fieldbox@\box\eql at fieldbox@
}%
\eql at align@print at field
}
@@ -2618,8 +2852,10 @@
\eql at numbering@print at line@eval
\if at eqnsw
\eql at tagbox@make\eql at compose@print
+ \eql at tagging@tagaddbox
\eql at tagbox@print at multi
\else
+ \eql at tagging@tagaddbox
\kern\displaywidth
\fi
}
@@ -2632,7 +2868,44 @@
\eql at let@cr\eql at align@print at line@end
\tabskip\eql at marginleft@
\halign{%
- \span\eql at align@preamble\eql at colsep@\eql at align@print at field\eql at strut@field
+ &%
+ \global\advance\eql at column@\@ne
+ \hfil
+ \global\setbox\eql at fieldbox@\hbox{%
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at class@innerleft
+ \eql at hook@innerleft
+ \eql at tagging@mathsave
+ $%
+ \eql at tagging@mathaddlast
+ }%
+ \global\eql at fieldwidth@\wd\eql at fieldbox@
+ \eql at align@print at field
+ \tabskip\z at skip
+ &%
+ \global\advance\eql at column@\@ne
+ \setbox\eql at fieldbox@\hbox{%
+ \kern-\wd\eql at fieldbox@
+ \box\eql at fieldbox@
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@innerright
+ \eql at class@innerright at sel
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ \eql at tagging@mathsave
+ $%
+ \eql at tagging@mathaddlast
+ }%
+ \eql at align@print at field
+ \hfil
+ \tabskip\eql at colsep@\relax
\crcr
\noalign{%
\eql at halign@before
@@ -2652,6 +2925,7 @@
\eql at halign@after
\eql at dev@leave\eql at align@print
}%
+ \eql at tagging@tablesavealign
}%
\eql at display@close
}
@@ -2694,8 +2968,36 @@
\eql at numbering@measure at init
\eql at measure@init\eql at align@measure at line@begin
\eql at let@cr\eql at align@measure at line@end
+ \tabskip\z at skip
\halign{%
- \span\eql at align@preamble\z at skip\eql at align@measure at field\relax
+ &%
+ \global\advance\eql at column@\@ne
+ \hfil
+ \global\setbox\eql at fieldbox@\hbox{%
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at class@innerleft
+ \eql at hook@innerleft
+ $%
+ }%
+ \global\eql at fieldwidth@\wd\eql at fieldbox@
+ \eql at align@measure at field
+ &%
+ \global\advance\eql at column@\@ne
+ \setbox\eql at fieldbox@\hbox{%
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@innerright
+ \eql at class@innerright at sel
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ $%
+ }%
+ \eql at align@measure at field
+ \hfil
\crcr
\noalign{%
\eql at hook@blockbefore
@@ -2745,6 +3047,8 @@
\eql at dev@leave\eql at align@measure
}
\def\eql at align@adjust{%
+ \eql at colsepmin@\glueexpr\eql at colsepmin@val\relax
+ \eql at colsepmax@\glueexpr\eql at colsepmax@val\relax
\ifodd\eql at totalcolumns@
\advance\eql at totalcolumns@\@ne
\fi
@@ -3020,7 +3324,7 @@
\expandafter\[%\]
\fi
}
-\def\eql at scan@sqrang at cancel{\ignorespaces}
+\def\eql at scan@sqrang at cancel{\expandafter\ignorespaces\@gobble}
\def\eql at scan@ang#1{%
\eql at dev@enter\eql at scan@ang
\def\eql at scan@end{#1\>}%
@@ -3071,7 +3375,9 @@
\def\eql at equations@processopt{%
\let\eql at blocklabel\@undefined
\let\eql at blocktag\@undefined
- \let\eql at display@doatend\@empty
+ \let\eql at skip@force at above\@undefined
+ \let\eql at skip@force at below\@undefined
+ \let\eql at skip@force at leave\@undefined
\eql at abovespace@\z at skip
\eql at belowspace@\z at skip
\eql at displaybreak@prepen@\@MM
@@ -3078,11 +3384,7 @@
\eql at nextopt@process{equations}%
\let\eql at punct@block\eql at punct@main
\let\eql at punct@main\relax
- \setlength\eql at paddingleft@\eql at paddingleft@val
- \setlength\eql at paddingright@\eql at paddingright@val
- \setlength\eql at indent@\eql at indent@val
- \setlength\eql at colsepmin@\eql at colsepmin@val
- \setlength\eql at colsepmax@\eql at colsepmax@val
+ \eql at indent@\glueexpr\eql at indent@val\relax
}
\newenvironment{equations}{%
\eql at dev@enterenv
@@ -3090,25 +3392,23 @@
\eql at error@mathmode{\string\begin{\@currenvir}}%
\expandafter\eql at scan@env\expandafter\eql at scan@env at cancel
\else
- \eql at halign@catchprevdepth
- $$%$$
\expandafter\eql at ampprotect\expandafter\eql at equations@testall
\expandafter\eql at equations@start
\fi
}{%
\eql at equations@end
- $$%$$
\ignorespacesafterend
\eql at dev@leaveenv
}
\def\eql at equations@start{%
\eql at equations@processopt
- \ifdefined\eql at equations@mode at single
+ \ifdefined\eql at equations@main
+ \expandafter\eql at scan@env\expandafter\eql at equations@main
+ \else
\expandafter\eql at single@start
- \else
- \expandafter\eql at scan@env\expandafter\eql at multi@main
\fi
}
+\newenvironment{equations at sqr}{}{}
\def\eql at equations@sqr at opt{equation,nonumber}
\protected\def\eql at equations@sqr at open{%
\ifmmode
@@ -3117,12 +3417,12 @@
\else
\eql at dev@enter{\[...\string\]}%
\expandafter\eqnaddopt\expandafter{\eql at equations@sqr at opt}%
- \eql at halign@catchprevdepth
- $$%$$
+ \begin{equations at sqr}%
\expandafter\eql at ampprotect\expandafter\eql at equations@testall
\expandafter\eql at equations@sqr at start
\fi
}
+\newenvironment{equations at ang}{}{}
\def\eql at equations@ang at opt{align,nonumber}
\protected\def\eql at equations@ang at open{%
\ifmmode
@@ -3131,8 +3431,7 @@
\else
\eql at dev@enter{\<...\string\>}%
\expandafter\eqnaddopt\expandafter{\eql at equations@ang at opt}%
- \eql at halign@catchprevdepth
- $$%$$
+ \begin{equations at ang}%
\expandafter\eql at ampprotect\expandafter\eql at equations@testall
\expandafter\eql at equations@ang at start
\fi
@@ -3139,33 +3438,33 @@
}
\def\eql at equations@sqr at start{%
\eql at equations@processopt
- \ifdefined\eql at equations@mode at single
+ \ifdefined\eql at equations@main
+ \expandafter\eql at scan@sqr\expandafter\eql at equations@main
+ \else
\expandafter\eql at single@start
- \else
- \expandafter\eql at scan@sqr\expandafter\eql at multi@main
\fi
}
\def\eql at equations@ang at start{%
\eql at equations@processopt
- \ifdefined\eql at equations@mode at single
+ \ifdefined\eql at equations@main
+ \expandafter\eql at scan@ang\expandafter\eql at equations@main
+ \else
\expandafter\eql at single@start
- \else
- \expandafter\eql at scan@ang\expandafter\eql at multi@main
\fi
}
\protected\def\eql at equations@sqr at close{%
\eql at equations@end
- $$%$$
\eql at dev@leave{\[...\string\]}%
+ \end{equations at sqr}%
\ignorespaces
}
\protected\def\eql at equations@ang at close{%
\eql at equations@end
- $$%$$
\eql at dev@leave{\<...\string\>}%
+ \end{equations at ang}%
\ignorespaces
}
-\DeclareRobustCommand{\eql at eqref}[1]{\textup{\tagform@{\ref{#1}}}}
+\DeclareRobustCommand{\eql at eqref}[1]{\textup{\eql at tag@boxedform{\ref{#1}}}}
\DeclareRobustCommand{\eql at numberwithin}[3][\arabic]{%
\@ifundefined{c@#2}{\@nocounterr{#2}}{%
\@ifundefined{c@#3}{\@nocounterr{#3}}{%
@@ -3189,7 +3488,7 @@
\eqnlinesset{allowbreaks=#1}%
}
\newcommand{\eql at notag}{\nonumber}
-\newcommand{\eql at thetag}{\leavevmode\tagform@}
+\newcommand{\eql at thetag}{\leavevmode\eql at tag@boxedform}
\RequirePackage{keyval}
\def\eql at decide@select#1#2#3#4{%
\def\@tempa{#3}%
@@ -3244,7 +3543,7 @@
}%
}%
}
-\def\eql at setkeys#1#2{
+\def\eql at setkeys#1#2{%
\def\eql at tmp{\setkeys{eql@#1}}%
\expandafter\eql at tmp\expandafter{#2}%
}
@@ -3252,10 +3551,70 @@
\def\eql at nextopt@process#1{%
\eql at dev@start\eql at nextopt@process
\eql at setkeys{#1}\eql at nextopt
+ \let\eql at tagging@opt\eql at nextopt
\global\let\eql at nextopt\@empty
}
\newcommand{\eqnaddopt}[1]{%
\expandafter\def\expandafter\eql at nextopt\expandafter{\eql at nextopt,#1}}
+\def\eql at defaults@classic{%
+ \def\eql at colsepmax@val{.5\maxdimen}%
+ \def\eql at spread{\jot}%
+ \let\eql at display@height\@undefined
+ \let\eql at display@depth\@undefined
+ \eql at skip@mode at short@\tw@
+ \eql at skip@mode at cont@\@ne
+ \eql at skip@mode at par@\z@
+ \eql at skip@mode at top@\z@
+ \def\eql at skip@long at above{\abovedisplayskip}%
+ \def\eql at skip@long at below{\belowdisplayskip}%
+ \def\eql at skip@short at above{\abovedisplayshortskip}%
+ \def\eql at skip@short at below{\belowdisplayshortskip}%
+ \def\eql at skip@cont at above{\eql at skip@short at above}%
+ \def\eql at skip@cont at below{\eql at skip@short at below}%
+ \def\eql at skip@par at above{\eql at skip@long at above}%
+ \def\eql at skip@par at below{\eql at skip@long at below}%
+ \def\eql at skip@top at above{\eql at skip@long at above}%
+ \def\eql at skip@top at below{\eql at skip@long at below}%
+ \def\eql at skip@med at above{\abovedisplayskip/2}%
+ \def\eql at skip@med at below{\belowdisplayskip/2}%
+ \def\eql at skip@medtag at above{\z at skip}%
+ \def\eql at skip@medtag at below{\z at skip}%
+ \def\eql at skip@tag at above{\z at skip}%
+ \def\eql at skip@tag at below{\z at skip}%
+}
+\def\eql at defaults@eqnlines{%
+ \def\eql at colsepmax@val{2em}%
+ \def\eql at spread{0.2\normalbaselineskip}%
+ \def\eql at display@height{\ht\eql at strutbox@}%
+ \def\eql at display@depth{\dp\eql at strutbox@}%
+ \eql at skip@mode at short@\@ne
+ \eql at skip@mode at cont@\z@
+ \eql at skip@mode at par@\z@
+ \eql at skip@mode at top@\z@
+ \def\eql at skip@long at above{0.75\normalbaselineskip
+ \@plus0.25\normalbaselineskip\@minus0.4\normalbaselineskip}%
+ \let\eql at skip@long at below\eql at skip@long at above
+ \def\eql at skip@short at above{0.0\normalbaselineskip
+ \@plus0.2\normalbaselineskip}%
+ \def\eql at skip@short at below{0.0\normalbaselineskip
+ \@plus0.25\normalbaselineskip}%
+ \def\eql at skip@med at above{0.375\normalbaselineskip
+ \@plus0.225\normalbaselineskip\@minus0.2\normalbaselineskip}%
+ \let\eql at skip@med at below\eql at skip@med at above
+ \def\eql at skip@cont at above{\z at skip}%
+ \def\eql at skip@cont at below{\eql at skip@long at below}%
+ \def\eql at skip@par at above{\eql at skip@long at above}%
+ \def\eql at skip@par at below{\eql at skip@long at below}%
+ \def\eql at skip@top at above{\z at skip}%
+ \def\eql at skip@top at below{\z at skip}%
+ \def\eql at skip@tag at above{\z at skip}%
+ \def\eql at skip@tag at below{\z at skip}%
+ \def\eql at skip@partag at above{\z at skip}%
+ \def\eql at skip@partag at below{\z at skip}%
+ \def\eql at skip@medtag at above{\z at skip}%
+ \def\eql at skip@medtag at below{\z at skip}%
+}
+\eql at defaults@eqnlines
\eql at define@key{equationsbox}{gathered,gather,ga,lines,lined,ln,\string~}[]{%
\eql at mode@lined}
\eql at define@key{equationsbox}{aligned,align,al,columns,col,@}[]{%
@@ -3274,6 +3633,8 @@
\ifdefined\eql at single@native\let\eql at flushleft\eql at false\fi}
\eql at define@key{setup}{native}[true]{%
\eql at decide@bool{#3}{#2}{#1}\eql at single@native}
+\eql at define@key{setup}{scanequation}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at single@doscan}
\eql at define@key{setup}{sqropt}[]{%
\def\eql at equations@sqr at opt{equation,#1}}
\eql at define@key{setup}{angopt}[]{%
@@ -3292,130 +3653,172 @@
\def\eql at display@height{#1}}
\eql at define@key\eql at keycat{displaydepth}[\dp\eql at strutbox@]{%
\def\eql at display@depth{#1}}
+\eql at define@key\eql at keycat{displayheight*}[]{%
+ \let\eql at display@height\@undefined}
+\eql at define@key\eql at keycat{displaydepth*}[]{%
+ \let\eql at display@depth\@undefined}
\eql at define@key{equations}{noskip}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\eql at display@atend{%
- \abovedisplayskip\z at skip
- \abovedisplayshortskip\z at skip
- \eql at abovedisplaytagskip@\z at skip}}%
- {\eql at display@atend{%
- \belowdisplayskip\z at skip
- \belowdisplayshortskip\z at skip
- \eql at belowdisplaytagskip@\z at skip}}}
-\eql at define@key{equations}{short}[]{%
+ {\def\eql at skip@force at above{5}}%
+ {\def\eql at skip@force at below{5}}}
+\eql at define@key{equations}{short}[above]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\eql at display@atend{%
- \abovedisplayskip\abovedisplayshortskip}}%
- {\eql at display@atend{%
- \belowdisplayskip\belowdisplayshortskip}}}
+ {\def\eql at skip@force at above{1}}%
+ {\def\eql at skip@force at below{1}}}
\eql at define@key{equations}{long}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\eql at display@atend{%
- \abovedisplayshortskip\abovedisplayskip}}%
- {\eql at display@atend{%
- \belowdisplayshortskip\belowdisplayskip}}}
+ {\def\eql at skip@force at above{0}}%
+ {\def\eql at skip@force at below{0}}}
\eql at define@key{equations}{medskip}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\eql at display@atend{%
- \abovedisplayskip\eql at abovedisplaymedskip@}}%
- {\eql at display@atend{%
- \belowdisplayskip\eql at belowdisplaymedskip@}}}
+ {\def\eql at skip@force at above{6}}%
+ {\def\eql at skip@force at below{6}}}
+\eql at define@key{equations}{par}[par]{%
+ \eql at decide@select{#3}{#2}{#1}{%
+ {{default,}{\let\eql at skip@force at leave\@undefined}},%
+ {{cont,hmode}{\let\eql at skip@force at leave\z@}},%
+ {{par,vmode}{\let\eql at skip@force at leave\@ne
+ \ifdefined\eql at skip@force at below\else
+ \def\eql at skip@force at below{3}%
+ \fi}},%
+ {{top}{\let\eql at skip@force at leave\tw@
+ \ifdefined\eql at skip@force at below\else
+ \def\eql at skip@force at below{4}
+ \fi}}}}
\eql at define@key{equations}{skip}{%
- \setlength\eql at abovedisplayskip@{#1}%
- \eql at belowdisplayskip@\eql at abovedisplayskip@%
- \eql at display@atend{%
- \abovedisplayskip\eql at abovedisplayskip@
- \abovedisplayshortskip\abovedisplayskip
- \eql at abovedisplaytagskip@\abovedisplayskip
- \belowdisplayskip\abovedisplayskip
- \belowdisplayshortskip\belowdisplayskip
- \eql at belowdisplaytagskip@\belowdisplayskip}}
+ \def\eql at skip@force at above{7}%
+ \def\eql at skip@custom at above{#1}%
+ \let\eql at skip@force at below\eql at skip@force at above
+ \let\eql at skip@custom at below\eql at skip@custom at above}
\eql at define@key{equations}{aboveskip}{%
- \setlength\eql at abovedisplayskip@{#1}%
- \eql at display@atend{%
- \abovedisplayskip\eql at abovedisplayskip@
- \abovedisplayshortskip\abovedisplayskip
- \eql at abovedisplaytagskip@\abovedisplayskip}}
+ \def\eql at skip@force at above{7}%
+ \def\eql at skip@custom at above{#1}}
\eql at define@key{equations}{belowskip}{%
- \setlength\eql at belowdisplayskip@{#1}%
- \eql at display@atend{%
- \belowdisplayskip\eql at belowdisplayskip@
- \belowdisplayshortskip\belowdisplayskip%
- \eql at belowdisplaytagskip@\belowdisplayskip}}
+ \def\eql at skip@force at below{7}%
+ \def\eql at skip@custom at below{#1}}
\eql at define@key{equations}{abovespace}{%
- \addtolength\eql at abovespace@{#1}}
+ \advance\eql at abovespace@\glueexpr#1\relax}
\eql at define@key{equations}{belowspace}{%
- \addtolength\eql at belowspace@{#1}}
+ \advance\eql at belowspace@\glueexpr#1\relax}
\eql at define@key{intertext}{skip}{%
- \setlength\abovedisplayskip{#1}\belowdisplayskip\abovedisplayskip}
+ \def\eql at skip@force at above{7}%
+ \def\eql at skip@custom at above{#1}%
+ \let\eql at skip@force at below\eql at skip@force at above
+ \let\eql at skip@custom at below\eql at skip@custom at above}
\eql at define@key{intertext}{aboveskip}{%
- \setlength\belowdisplayskip{#1}}
+ \def\eql at skip@force at below{7}%
+ \def\eql at skip@custom at below{#1}}
\eql at define@key{intertext}{belowskip}{%
- \setlength\abovedisplayskip{#1}}
+ \def\eql at skip@force at above{7}%
+ \def\eql at skip@custom at above{#1}}
\eql at define@key{intertext}{noskip}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\belowdisplayskip\z at skip\belowdisplayshortskip\z at skip}%
- {\abovedisplayskip\z at skip\abovedisplayshortskip\z at skip}}
+ {\def\eql at skip@force at below{5}}%
+ {\def\eql at skip@force at above{5}}}
\eql at define@key{intertext}{short}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\belowdisplayskip\belowdisplayshortskip}%
- {\abovedisplayskip\abovedisplayshortskip}}
+ {\def\eql at skip@force at below{1}}%
+ {\def\eql at skip@force at above{1}}}
\eql at define@key{intertext}{long}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\belowdisplayshortskip\belowdisplayskip}%
- {\abovedisplayshortskip\abovedisplayskip}}
+ {\def\eql at skip@force at below{0}}%
+ {\def\eql at skip@force at above{0}}}
\eql at define@key{intertext}{medskip}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\belowdisplayskip\eql at belowdisplaymedskip@}%
- {\abovedisplayskip\eql at abovedisplaymedskip@}}
-\eql at define@key{setup}{skip}{%
- \setlength\abovedisplayskip{#1}\belowdisplayskip\abovedisplayskip}
-\eql at define@key{setup}{aboveskip}{%
- \setlength\abovedisplayskip{#1}}
-\eql at define@key{setup}{belowskip}{%
- \setlength\belowdisplayskip{#1}}
+ {\def\eql at skip@force at below{6}}%
+ {\def\eql at skip@force at above{6}}}
+\eql at define@key{setup}{skip,longskip}{%
+ \abovedisplayskip\glueexpr#1\relax
+ \belowdisplayskip\abovedisplayskip
+ \def\eql at skip@long at above{#1}%
+ \let\eql at skip@long at below\eql at skip@long at above}
+\eql at define@key{setup}{aboveskip,abovelongskip}{%
+ \abovedisplayskip\glueexpr#1\relax
+ \def\eql at skip@long at above{#1}}
+\eql at define@key{setup}{belowskip,belowlongskip}{%
+ \belowdisplayskip\glueexpr#1\relax
+ \def\eql at skip@long at below{#1}}
\eql at define@key{setup}{aboveshortskip}{%
- \setlength\abovedisplayshortskip{#1}}
+ \abovedisplayshortskip\glueexpr#1\relax
+ \def\eql at skip@short at above{#1}}
\eql at define@key{setup}{belowshortskip}{%
- \setlength\belowdisplayshortskip{#1}}
+ \belowdisplayshortskip\glueexpr#1\relax
+ \def\eql at skip@short at below{#1}}
\eql at define@key{setup}{tagskip}{%
- \setlength\eql at abovedisplaytagskip@{#1}%
- \eql at belowdisplaytagskip@\eql at abovedisplaytagskip@}
+ \def\eql at skip@tag at above{#1}%
+ \let\eql at skip@tag at below\eql at skip@tag at above}
\eql at define@key{setup}{abovetagskip}{%
- \setlength\eql at abovedisplaytagskip@{#1}}
+ \def\eql at skip@tag at above{#1}}
\eql at define@key{setup}{belowtagskip}{%
- \setlength\eql at belowdisplaytagskip@{#1}}
+ \def\eql at skip@tag at below{#1}}
\eql at define@key{setup}{medskip}{%
- \setlength\eql at abovedisplaymedskip@{#1}%
- \eql at belowdisplaymedskip@\eql at abovedisplaymedskip@}
+ \def\eql at skip@med at above{#1}%
+ \let\eql at skip@med at below\eql at skip@med at above}
\eql at define@key{setup}{abovemedskip}{%
- \setlength\eql at abovedisplaymedskip@{#1}}
+ \def\eql at skip@med at above{#1}}
+\eql at define@key{setup}{belowmedskip}{%
+ \def\eql at skip@med at below{#1}}
+\eql at define@key{setup}{medtagskip}{%
+ \def\eql at skip@medtag at above{#1}%
+ \let\eql at skip@medtag at below\eql at skip@medtag at above}
+\eql at define@key{setup}{abovemedtagskip}{%
+ \def\eql at skip@medtag at above{#1}}
+\eql at define@key{setup}{belowmedtagskip}{%
+ \def\eql at skip@medtag at below{#1}}
\eql at define@key{setup}{abovetopskip}{%
- \setlength\eql at abovedisplaytopskip@{#1}}
+ \def\eql at skip@top at above{#1}}
+\eql at define@key{setup}{belowtopskip}{%
+ \def\eql at skip@top at below{#1}}
\eql at define@key{setup}{aboveparskip}{%
- \setlength\eql at abovedisplayparskip@{#1}}
+ \def\eql at skip@par at above{#1}}
+\eql at define@key{setup}{belowparskip}{%
+ \def\eql at skip@par at below{#1}}
+\eql at define@key{setup}{abovepartagskip}{%
+ \def\eql at skip@partag at above{#1}}
+\eql at define@key{setup}{belowpartagskip}{%
+ \def\eql at skip@partag at below{#1}}
\eql at define@key{setup}{abovecontskip}{%
- \setlength\eql at abovedisplaycontskip@{#1}}
-\eql at define@key{setup}{belowmedskip}{%
- \setlength\eql at belowdisplaymedskip@{#1}}
+ \def\eql at skip@cont at above{#1}}
+\eql at define@key{setup}{abovecontskip*}[]{%
+ \def\eql at skip@cont at above{\eql at spread-\eql at skip@long at below}}
+\eql at define@key{setup}{belowcontskip}{%
+ \def\eql at skip@cont at below{#1}}
\eql at define@key{setup}{shortmode}{%
\eql at decide@select{#3}{#2}{#1}{%
- {{off,never,no}{\eql at displayshortmode@\z@}},%
- {{above,neverbelow,notbelow,belowoff}{\eql at displayshortmode@\@ne}},%
- {{belowone,belowsingle}{\eql at displayshortmode@\tw@}},%
- {{belowall,always,on}{\eql at displayshortmode@\thr@@}}}}
+ {{off,never,no}{\eql at skip@mode at short@\z@}},%
+ {{above,neverbelow,notbelow,belowoff}{\eql at skip@mode at short@\@ne}},%
+ {{belowone,belowsingle}{\eql at skip@mode at short@\tw@}},%
+ {{belowall,always,on}{\eql at skip@mode at short@\thr@@}}}}
+\eql at define@key{setup}{belowcontmode}{%
+ \eql at decide@select{#3}{#2}{#1}{%
+ {{long}{\eql at skip@mode at cont@\z@}},%
+ {{short}{\eql at skip@mode at cont@\@ne}},%
+ {{cont}{\eql at skip@mode at cont@\tw@}}}}
+\eql at define@key{setup}{belowparmode}{%
+ \eql at decide@select{#3}{#2}{#1}{%
+ {{long}{\eql at skip@mode at par@\z@}},%
+ {{short}{\eql at skip@mode at par@\@ne}},%
+ {{cont}{\eql at skip@mode at par@\tw@}},%
+ {{par}{\eql at skip@mode at par@\thr@@}}}}
+\eql at define@key{setup}{belowtopmode}{%
+ \eql at decide@select{#3}{#2}{#1}{%
+ {{long}{\eql at skip@mode at top@\z@}},%
+ {{short}{\eql at skip@mode at top@\@ne}},%
+ {{cont}{\eql at skip@mode at top@\tw@}},%
+ {{par}{\eql at skip@mode at top@\thre@@}},%
+ {{top}{\eql at skip@mode at top@4\relax}}}}
\def\eql at keycat{equations,subequations}
\eql at define@key\eql at keycat{label}{\eql at blocklabel@set{#1}}
\eql at define@key\eql at keycat{tag}{\eql at blocktag@set{#1}}
\eql at define@key\eql at keycat{tag*}{\eql at blocktag@setstar{#1}}
\def\eql at keycat{equations,setup}
-\eql at define@key\eql at keycat{tagmargin}{\setlength\eql at tagmargin@{#1}}
+\eql at define@key\eql at keycat{tagmargin}{\eql at tagmargin@\glueexpr#1\relax}
\eql at define@key\eql at keycat{tagmargin*}{\settowidth\eql at tagmargin@{#1}}
-\eql at define@key\eql at keycat{mintagsep}{\setlength\eql at tagsepmin@{#1}}
-\eql at define@key\eql at keycat{mintagwidth}{\setlength\eql at tagwidthmin@{#1}}
+\eql at define@key\eql at keycat{mintagsep}{\eql at tagsepmin@\glueexpr#1\relax}
+\eql at define@key\eql at keycat{mintagwidth}{\eql at tagwidthmin@\glueexpr#1\relax}
\eql at define@key\eql at keycat{mintagwidth*}{\settowidth\eql at tagwidthmin@{#1}}
-\eql at define@key{setup}{taglayout}{\eql at tag@setmake{#1}}
-\eql at define@key{setup}{taglayout*}{\eql at tag@setmake@{#1}}
+\eql at define@key{setup}{taglayout}{\eql at tag@setbox{#1}}
+\eql at define@key{setup}{taglayout*}{\eql at tag@setbox@{#1}}
\eql at define@key{setup}{tagform}{\eql at tag@setform#1}
\eql at define@key{setup}{tagform*}{\eql at tag@setform@{#1}}
\eql at define@key{setup}{subeqtemplate}{\def\eql at subequations@template{#1}}
@@ -3443,13 +3846,13 @@
\eql at define@key\eql at keycat{center}[]{\let\eql at flushleft\eql at false}
\eql at define@key\eql at keycat{flushleft,left}[]{\let\eql at flushleft\eql at true}
\eql at define@key\eql at keycat{leftmargin}{%
- \setlength\eql at flushleftmargin@{#1}}
+ \eql at flushleftmargin@\glueexpr#1\relax}
\eql at define@key\eql at keycat{minleftmargin}{%
- \setlength\eql at flushleftmarginmin@{#1}}
+ \eql at flushleftmarginmin@\glueexpr#1\relax}
\eql at define@key\eql at keycat{maxleftmargin}{%
- \setlength\eql at flushleftmarginmax@{#1}}
+ \eql at flushleftmarginmax@\glueexpr#1\relax}
\eql at define@key\eql at keycat{maxleftmargin*}[]{%
- \setlength\eql at flushleftmarginmax@{.5\maxdimen}}
+ \eql at flushleftmarginmax@.5\maxdimen}
\def\eql at keycat{equations,setup}
\eql at define@key\eql at keycat{marginbadness}{\eql at marginbadness@#1\relax}
\eql at define@key\eql at keycat{maxbadness}{\eql at maxbadness@#1\relax}
@@ -3498,7 +3901,7 @@
\eql at define@key\eql at keycat{punctcol*}[]{\let\eql at punct@col\relax}
\let\eql at multi@linesfallback\eql at true
\let\eql at single@crerror\eql at true
-\let\eql at ampproof@active\eql at true
+\let\eql at ampproof@active\eql at false
\eql at define@key{setup}{linesfallback}[true]{%
\eql at decide@bool{#3}{#2}{#1}\eql at multi@linesfallback}
\eql at define@key{setup}{ampproof}[true]{%
@@ -3509,22 +3912,30 @@
\eql at decide@if{#3}{#2}{#1}%
{\let\eql at scan@body\eql at scan@body at rescan}%
{\let\eql at scan@body\eql at scan@body at dump}}
-\let\eql at provide@amsmath\eql at true
-\let\eql at provide@equation\eql at true
-\let\eql at provide@ang\eql at true
-\let\eql at amsmath@dofixends\eql at true
+\eql at define@key{setup}{defaults}{%
+ \eql at decide@select{#3}{#2}{#1}{%
+ {{classic}{\eql at defaults@classic}},%
+ {{eqnlines}{\eql at defaults@eqnlines}}}}
+\let\eql at provide@opt at equation\eql at true
+\let\eql at provide@opt at amsmathends\eql at true
+\let\eql at provide@opt at amsmath\eql at true
+\let\eql at provide@opt at ang\eql at true
+\let\eql at provide@opt at eqref\eql at true
\eql at define@key{setup}{equation}[true]{%
\eql at error@packageoption{#2}%
- \eql at decide@bool{#3}{#2}{#1}\eql at provide@equation}
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at equation}
+\eql at define@key{setup}{amsmathends}[true]{%
+ \eql at error@packageoption{#2}%
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at amsmathends}
\eql at define@key{setup}{amsmath}[true]{%
\eql at error@packageoption{#2}%
- \eql at decide@bool{#3}{#2}{#1}\eql at provide@amsmath}
-\eql at define@key{setup}{amsmathends}[true]{%
- \eql at error@packageoption{#2}%
- \eql at decide@bool{#3}{#2}{#1}\eql at amsmath@dofixends}
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at amsmath}
\eql at define@key{setup}{ang}[true]{%
\eql at error@packageoption{#2}%
- \eql at decide@bool{#3}{#2}{#1}\eql at provide@ang}
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at ang}
+\eql at define@key{setup}{eqref}[true]{%
+ \eql at error@packageoption{#2}%
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at eqref}
\newenvironment{eql at gathered}
{\eqnaddopt{lines}\equationsbox}{\endequationsbox}
\newenvironment{eql at multlined}
@@ -3624,7 +4035,7 @@
\eql at provide@movecmd{#1}{eql@#1}%
}%
\eql at provide@movecmd{#1}{eql@#1}%
- \eql at amsmath@futurebefore{\eql at provide@undefinecmd{#1}}%
+ \eql at amsmath@before{\eql at provide@undefinecmd{#1}}%
\fi
}
\def\eql at amsmath@endfix#1#2{%
@@ -3671,8 +4082,8 @@
}%
\eql at provide@moveenv{#1}{eql@#1}%
\eql at provide@moveenv{#1*}{eql@#1*}%
- \eql at amsmath@futurebefore{\eql at provide@undefineenv{#1}}%
- \eql at amsmath@futurebefore{\eql at provide@undefineenv{#1*}}%
+ \eql at amsmath@before{\eql at provide@undefineenv{#1}}%
+ \eql at amsmath@before{\eql at provide@undefineenv{#1*}}%
\fi
}
\def\eql at provide@env at equation#1{%
@@ -3699,7 +4110,13 @@
}}%
\eql at provide@moveenv{equation}{eql at equation}%
\eql at provide@moveenv{equation*}{eql at equation*}%
- \eql at amsmath@futurebefore{\eql at provide@undefineenv{equation*}}%
+ \eql at amsmath@before{\eql at provide@undefineenv{equation*}}%
+ \ifdefined\eql at tagging@on
+ \AddToHook{begindocument/end}{%
+ \eql at provide@moveenv{equation}{eql at equation}%
+ \eql at provide@moveenv{equation*}{eql at equation*}%
+ }%
+ \fi
\fi
}
\def\eql at provide@env at multlined#1{%
@@ -3716,14 +4133,6 @@
\eql at provide@undefineenv{multlined}}}%
\fi
}
-\def\eql at provide@env at subequations@reinstall{%
- \global\let\subequations\eql at subequations
- \let\@tempa\UseHook
- \let\@tempb\UseHookWithArguments
- \def\UseHook{\let\UseHook\@tempa\let\UseHookWithArguments\@tempb%
- \expandafter\subequations\@gobble}%
- \def\UseHookWithArguments{\expandafter\UseHook\@gobble}%
-}
\def\eql at provide@env at subequations#1{%
\eql at provide@onlyonce{subequations}{#1}%
\ifdefined\eql at tmp
@@ -3733,7 +4142,6 @@
\eql at amsmath@after{%
\eql at provide@moveenv{amssubequations}{subequations}%
\eql at provide@moveenv{subequations}{eql at subequations}%
- \let\subequations\eql at provide@env at subequations@reinstall
}%
\AddToHook{package/hyperref/after}{%
\AddToHook{cmd/subequations/before}[hyperref]{}%
@@ -3745,17 +4153,18 @@
\stepcounter{equation}%
\protected at edef\theHparentequation{\theHequation}%
\addtocounter{equation}{-1}%
- }
+ }%
\AddToHook{cmd/amssubequations/after}%
{%
\def\theHequation{\theHparentequation\alph{equation}}%
\ignorespaces
- }
- }
+ }%
+ \AddToHook{begindocument/end}{%
+ \eql at provide@moveenv{subequations}{eql at subequations}%
+ }%
+ }%
\eql at provide@moveenv{subequations}{eql at subequations}%
- \AddToHook{cmd/subequations/after}{}%
- \let\subequations\eql at provide@env at subequations@reinstall
- \eql at amsmath@futurebefore{\eql at provide@undefineenv{subequations}}%
+ \eql at amsmath@before{\eql at provide@undefineenv{subequations}}%
\fi
}
\def\eql at provide@sqr{%
@@ -3765,6 +4174,12 @@
\let\[\eql at equations@sqr at open
\let\]\eql at equations@sqr at close
}%
+ \ifdefined\eql at tagging@on
+ \AddToHook{begindocument/end}{%
+ \let\[\eql at equations@sqr at open
+ \let\]\eql at equations@sqr at close
+ }%
+ \fi
}
\def\eql at provide@ang{%
\let\<\eql at equations@ang at open
@@ -3787,6 +4202,10 @@
\eql at define@key{provide}{allowdisplaybreaks}[]{%
\eql at provide@cmd{allowdisplaybreaks}{#1}}
\eql at define@key{provide}{numberwithin}[]{\eql at provide@cmd{numberwithin}{#1}}
+\eql at define@key{provide}{tagform}[]{%
+ \def\tagform@##1{\maketag@@@{\eql at tag@form{#1}}}}
+\eql at define@key{provide}{maketag}[]{%
+ \def\maketag@@@##1{\eql at tag@box{##1}}}
\newcommand{\eqnlinesprovide}[1]{%
\eql at dev@start\eqnlinesprovide
\eql at setkeys{provide}{#1}}
@@ -3799,14 +4218,14 @@
\def\eql at error@packageoption#1{%
\eql at error{may only use `#1' as a package option}%
}
-\ifcsname tagsleft at true\endcsname\else
+\ifdefined\tagsleft at true\else
\expandafter\newif\csname iftagsleft@\endcsname
\fi
-\ifcsname @fleqntrue\endcsname\else
+\ifdefined\@fleqntrue\else
\expandafter\newif\csname if at fleqn\endcsname
\fi
-\ifdefined\eql at provide@amsmath
- \let\eql at provide@equation\eql at true
+\ifdefined\eql at provide@opt at amsmath
+ \let\eql at provide@opt at equation\eql at true
\eql at amsmath@after{%
\iftagsleft@
\eqnlinesset{tagsleft}
@@ -3820,21 +4239,16 @@
\fi
}
\fi
-\ifdefined\eql at provide@equation
- \eqnlinesprovide{equation,sqr}
-\fi
-\ifdefined\eql at amsmath@dofixends
- \eql at amsmath@fixends
-\fi
-\ifdefined\eql at provide@amsmath
+\ifdefined\eql at provide@opt at equation\eqnlinesprovide{equation,sqr}\fi
+\ifdefined\eql at provide@opt at amsmathends\eql at amsmath@fixends\fi
+\ifdefined\eql at provide@opt at amsmath
\eqnlinesprovide{%
multline,gather,align,flalign,%
multlined,gathered,aligned,%
- subequations,eqref}
+ subequations}
\fi
-\ifdefined\eql at provide@ang
- \eqnlinesprovide{ang}
-\fi
+\ifdefined\eql at provide@opt at ang\eqnlinesprovide{ang}\fi
+\ifdefined\eql at provide@opt at eqref\eqnlinesprovide{eqref}\fi
\endinput
%%
%% End of file `eqnlines-dev.sty'.
Modified: trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines.sty 2025-03-11 20:06:37 UTC (rev 74570)
+++ trunk/Master/texmf-dist/tex/latex/eqnlines/eqnlines.sty 2025-03-11 20:06:49 UTC (rev 74571)
@@ -21,7 +21,7 @@
%% version 2008 or later.
%%
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesPackage{eqnlines}[2025/02/25 v0.5 Single- and multi-line equations]
+\ProvidesPackage{eqnlines}[2025/03/11 v0.6 Single- and multi-line equations]
\let\eql at ifnextchar@loose\kernel at ifnextchar
\long\def\eql at ifnextchar@tight#1#2#3{%
\let\reserved at d= #1%
@@ -99,8 +99,10 @@
\def\eql at warn@tag at multiple{\eql at warning{Multiple equation \string\tag's:
previous tag declaration will be lost}}
\def\eql at amsmath@after#1{\AddToHook{package/amsmath/after}{#1}}
-\def\eql at amsmath@futurebefore#1{%
+\def\eql at amsmath@before#1{%
\@ifpackageloaded{amsmath}{}{\AddToHook{package/amsmath/before}{#1}}}
+\def\eql at amsmath@undefine#1{\eql at amsmath@before{\let#1\@undefined}}
+\def\eql at amsmath@let#1#2{\eql at amsmath@undefine#1\let#1#2}
\let\eql at false\@undefined
\let\eql at true\@empty
\newskip\eql at regunset@
@@ -109,7 +111,7 @@
#1\eql at regunset@\relax
\AtBeginDocument{%
\ifdim#1=\eql at regunset@
- \setlength#1{#2}%
+ #1\glueexpr#2\relax
\fi
}%
}
@@ -134,30 +136,45 @@
\def\eql at box@marginright{\z at skip}
\def\eql at box@colsep{2em}
\def\eql at spread{\jot}
+\newdimen\eql at spread@amount@
\newdimen\eql at tagfuzz@
\eql at tagfuzz@16sp\relax
-\newskip\eql at abovedisplayskip@
-\newskip\eql at belowdisplayskip@
-\newskip\eql at abovedisplaytagskip@
-\newskip\eql at belowdisplaytagskip@
-\eql at abovedisplaytagskip@\z at skip
-\eql at belowdisplaytagskip@\z at skip
-\newcount\eql at displayshortmode@
-\eql at displayshortmode@\tw@
-\newskip\eql at abovedisplaycontskip@
-\eql at regsetdelayed\eql at abovedisplaycontskip@\abovedisplayshortskip
-\newskip\eql at abovedisplaytopskip@
-\newskip\eql at belowdisplaytopskip@
-\eql at abovedisplaytopskip@\z at skip
-\eql at regsetdelayed\eql at belowdisplaytopskip@\belowdisplayskip
-\newskip\eql at abovedisplayparskip@
-\eql at regsetdelayed\eql at abovedisplayparskip@\abovedisplayskip
\def\eql at display@height{\ht\eql at strutbox@}
\def\eql at display@depth{\dp\eql at strutbox@}
-\newskip\eql at abovedisplaymedskip@
-\newskip\eql at belowdisplaymedskip@
-\eql at regsetdelayed\eql at abovedisplaymedskip@\belowdisplayshortskip
-\eql at regsetdelayed\eql at belowdisplaymedskip@\eql at belowdisplaymedskip@
+\newcount\eql at skip@mode at short@
+\eql at skip@mode at short@\tw@
+\newcount\eql at skip@mode at cont@
+\eql at skip@mode at cont@\z@
+\newcount\eql at skip@mode at par@
+\eql at skip@mode at par@\z@
+\newcount\eql at skip@mode at top@
+\eql at skip@mode at top@\z@
+\newcount\eql at skip@mode at leave@
+\let\eql at skip@force at leave\@undefined
+\newcount\eql at skip@mode at above@
+\newcount\eql at skip@mode at below@
+\let\eql at skip@force at above\@undefined
+\let\eql at skip@force at below\@undefined
+\let\eql at skip@custom at above\@undefined
+\let\eql at skip@custom at below\@undefined
+\def\eql at skip@long at above{\abovedisplayskip}
+\def\eql at skip@long at below{\belowdisplayskip}
+\def\eql at skip@short at above{\abovedisplayshortskip}
+\def\eql at skip@short at below{\belowdisplayshortskip}
+\def\eql at skip@cont at above{\eql at skip@short at above}
+\def\eql at skip@cont at below{\eql at skip@short at below}
+\def\eql at skip@par at above{\eql at skip@long at above}
+\def\eql at skip@par at below{\eql at skip@long at below}
+\def\eql at skip@top at above{\eql at skip@long at above}
+\def\eql at skip@top at below{\eql at skip@long at below}
+\def\eql at skip@med at above{\abovedisplayskip/2}
+\def\eql at skip@med at below{\belowdisplayskip/2}
+\def\eql at skip@tag at above{\z at skip}
+\def\eql at skip@tag at below{\z at skip}
+\def\eql at skip@partag at above{\z at skip}
+\def\eql at skip@partag at below{\z at skip}
+\def\eql at skip@medtag at above{\z at skip}
+\def\eql at skip@medtag at below{\z at skip}
\newdimen\eql at colsepmin@
\newdimen\eql at colsepmax@
\def\eql at colsepmin@val{1em}
@@ -182,7 +199,9 @@
\newdimen\eql at tagwidth@
\newdimen\eql at line@height@
\newdimen\eql at line@depth@
-\newif\ifmeasuring@
+\ifdefined\measuring at true\else
+ \expandafter\newif\csname ifmeasuring@\endcsname
+\fi
\AddToHook{package/hyperref/after}{
\ifdefined\Hy at ifnotmeasuring
\renewcommand\Hy at ifnotmeasuring[1]{\ifmeasuring@\else#1\fi}
@@ -189,9 +208,9 @@
\fi
}
\ifdefined\@displaytrue\else
-\everydisplay\expandafter{\the\everydisplay\@displaytrue}
+ \expandafter\newif\csname if at display\endcsname
+ \everydisplay\expandafter{\the\everydisplay\@displaytrue}
\fi
-\newif\if at display
\let\eql at hook@blockbefore\@empty
\let\eql at hook@blockafter\@empty
\let\eql at hook@blockin\@empty
@@ -205,6 +224,68 @@
\let\eql at hook@innerleft\@empty
\let\eql at hook@innerright\@empty
\let\eql at hook@innerlead\@empty
+\let\eql at tagging@on\eql at false
+\IfFormatAtLeastTF{2025-06-01}{%
+ \csname tag_if_active:T\endcsname{\let\eql at tagging@on\eql at true}}{}
+\ifdefined\eql at tagging@on
+ \def\eql at tagging@mathsave{%
+ \UseTaggingSocket{math/luamml/save/nNn}{{}\displaystyle{mtd}}}
+ \def\eql at tagging@mathaddlast{%
+ \UseTaggingSocket{math/luamml/mtable/finalizecol}{last}}
+ \def\eql at tagging@tagbegin{%
+ \UseTaggingSocket{math/display/tag/begin}}
+ \def\eql at tagging@tagend{%
+ \UseTaggingSocket{math/display/tag/end}}
+ \def\eql at tagging@tagsave{%
+ \UseTaggingSocket{math/luamml/mtable/tag/save}}
+ \def\eql at tagging@tagaddbox{%
+ \setbox\z@\copy\eql at tagbox@%
+ \UseTaggingSocket{math/luamml/mtable/tag/set}}
+ \def\eql at tagging@tablesaveinner{%
+ \UseExpandableTaggingSocket{math/luamml/mtable/innertable/save}}
+ \def\eql at tagging@tableaddinner{%
+ \UseTaggingSocket{math/luamml/mtable/innertable/finalize}}
+ \def\eql at tagging@tablesavelines{%
+ \UseExpandableTaggingSocket{math/luamml/mtable/finalize}{gather}}
+ \def\eql at tagging@tablesavealign{%
+ \UseExpandableTaggingSocket{math/luamml/mtable/finalize}{align}}
+ \def\eql at tagging@alignleft{%
+ \UseTaggingSocket{math/luamml/mtable/aligncol}{left}}
+ \def\eql at tagging@aligncenter{%
+ \UseTaggingSocket{math/luamml/mtable/aligncol}{center}}
+ \def\eql at tagging@alignright{%
+ \UseTaggingSocket{math/luamml/mtable/aligncol}{right}}
+ \let\eql at single@doscan\eql at true
+ \let\eql at scan@body\eql at scan@body at rescan
+ \ExplSyntaxOn
+ \def\eql at tagging@start{%
+ \bool_if:NF\l__math_collected_bool{%
+ \toks@\expandafter{\eql at tagging@opt}%
+ \edef\eql at tmp{{\@currenvir}{[\the\toks@] \the\eql at scan@reg@}}%
+ \expandafter\__math_process:nn\eql at tmp
+ \@kernel at math@registered at begin
+ \bool_set_true:N\l__math_collected_bool
+ }%
+ }
+ \def\eql at tagging@end{}
+ \ExplSyntaxOff
+\else
+ \def\eql at tagging@mathsave{}
+ \def\eql at tagging@mathaddlast{}
+ \def\eql at tagging@tagbegin{}
+ \def\eql at tagging@tagend{}
+ \def\eql at tagging@tagsave{}
+ \def\eql at tagging@tagaddbox{}
+ \def\eql at tagging@tablesaveinner{}
+ \def\eql at tagging@tableaddinner{}
+ \def\eql at tagging@tablesavelines{}
+ \def\eql at tagging@tablesavealign{}
+ \def\eql at tagging@alignleft{}
+ \def\eql at tagging@aligncenter{}
+ \def\eql at tagging@alignright{}
+ \def\eql at tagging@start{}
+ \def\eql at tagging@end{}
+\fi
\let\eql at punct@col\@empty
\let\eql at punct@line\relax
\let\eql at punct@block\relax
@@ -288,8 +369,7 @@
\eql at box@lastfield
\cr
\noalign{%
- \setlength\skip@{#1}%
- \vskip\skip@
+ \vskip\glueexpr#1\relax
}%
}
\let\eql at box@box\vcenter
@@ -305,10 +385,10 @@
\def\eql at box@open at align{%
\let\eql at box@lastfield\@empty
\eql at halign@init{%
-}%
+ }%
\tabskip\z at skip
\halign\bgroup
- &%
+ &%
\let\eql at box@lastfield\eql at box@lastfield at odd
\global\setbox\eql at fieldbox@\hbox{%
\eql at strut@field
@@ -318,12 +398,14 @@
##%
\eql at class@innerleft
\eql at hook@innerleft
+ \eql at tagging@mathsave
$%
+ \eql at tagging@mathaddlast
}%
\hfil
\kern\wd\eql at fieldbox@
\tabskip\z at skip
- &%
+ &%
\eql at fieldwidth@\wd\eql at fieldbox@
\kern-\eql at fieldwidth@
\box\eql at fieldbox@
@@ -338,10 +420,12 @@
##%
\eql at punct@apply at col
\eql at hook@colout
+ \eql at tagging@mathsave
$%
+ \eql at tagging@mathaddlast
}%
\hfil
- \tabskip\eql at colsep@
+ \tabskip\eql at colsep@\relax
\crcr
\noalign{%
\eql at hook@blockbefore
@@ -359,44 +443,49 @@
\tabskip\z at skip
\halign\bgroup
&%
- \eql at shape@pos@\m at ne
- \setbox\eql at fieldbox@\hbox{%
- \eql at strut@field
- \@lign
- $\m at th\displaystyle
- \eql at hook@colin
- ##%
- \eql at punct@apply at col
- \eql at hook@colout
- $%
- }%
- \ifnum\eql at shape@pos@=\m at ne
- \eql at shape@eval
- \fi
- \ifcase\eql at shape@pos@
- \kern\eql at shape@amount@
- \box\eql at fieldbox@
- \skip@\@flushglue
- \advance\skip@\eql at paddingleft@\relax
- \advance\skip@\eql at paddingright@\relax
- \advance\skip at -\eql at shape@amount@\relax
- \hskip\skip@
- \or
- \skip@\@flushglue
- \advance\skip@\eql at paddingleft@\relax
- \hskip\skip@
- \box\eql at fieldbox@
- \skip@\@flushglue
- \advance\skip@\eql at paddingright@\relax
- \hskip\skip@
- \or
- \skip@\@flushglue
- \advance\skip@\eql at paddingleft@\relax
- \advance\skip@\eql at paddingright@\relax
- \hskip\skip@
- \box\eql at fieldbox@
- \fi
- \tabskip\eql at colsep@
+ \eql at shape@pos@\m at ne
+ \setbox\eql at fieldbox@\hbox{%
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ \eql at tagging@mathsave
+ $%
+ \eql at tagging@mathaddlast
+ }%
+ \ifnum\eql at shape@pos@=\m at ne
+ \eql at shape@eval
+ \fi
+ \ifcase\eql at shape@pos@
+ \kern\eql at shape@amount@
+ \box\eql at fieldbox@
+ \skip@\@flushglue
+ \advance\skip@\eql at paddingleft@\relax
+ \advance\skip@\eql at paddingright@\relax
+ \advance\skip at -\eql at shape@amount@\relax
+ \hskip\skip@
+ \eql at tagging@alignleft
+ \or
+ \skip@\@flushglue
+ \advance\skip@\eql at paddingleft@\relax
+ \hskip\skip@
+ \box\eql at fieldbox@
+ \skip@\@flushglue
+ \advance\skip@\eql at paddingright@\relax
+ \hskip\skip@
+ \eql at tagging@aligncenter
+ \or
+ \skip@\@flushglue
+ \advance\skip@\eql at paddingleft@\relax
+ \advance\skip@\eql at paddingright@\relax
+ \hskip\skip@
+ \box\eql at fieldbox@
+ \eql at tagging@alignright
+ \fi
+ \tabskip\eql at colsep@\relax
\crcr
\noalign{%
\eql at hook@blockbefore
@@ -413,6 +502,7 @@
\noalign{%
\eql at hook@blockafter
}%
+ \eql at tagging@tablesaveinner
\egroup
}
\def\eql at box@start{%
@@ -425,17 +515,16 @@
\eql at nextopt@process{equationsbox}%
\let\eql at punct@block\eql at punct@main
\let\eql at punct@main\relax
- \setlength\eql at colsep@\eql at box@colsep
- \setlength\eql at paddingleft@\eql at paddingleft@val
- \setlength\eql at paddingright@\eql at paddingright@val
- \setlength\eql at indent@\eql at indent@val
+ \eql at colsep@\glueexpr\eql at box@colsep\relax
+ \eql at paddingleft@\glueexpr\eql at paddingleft@val\relax
+ \eql at paddingright@\glueexpr\eql at paddingright@val\relax
+ \eql at indent@\glueexpr\eql at indent@val\relax
\eql at stack@save at boxed
\let\eql at flushleft\eql at false
\eql at row@\z@
\eql at totalrows@\@M
\eql at shape@sel
- \setlength\skip@\eql at box@marginleft
- \hskip\skip@
+ \hskip\glueexpr\eql at box@marginleft\relax
\eql at box@box\bgroup
\eql at display@leave
\let\\\eql at box@cr
@@ -448,8 +537,8 @@
\newcommand{\eql at box@end}{%
\eql at box@close
\egroup
- \setlength\skip@\eql at box@marginright
- \hskip\skip@
+ \eql at tagging@tableaddinner
+ \hskip\glueexpr\eql at box@marginright\relax
\eql at stack@restore
\eql at box@endmath
}
@@ -471,151 +560,55 @@
\def\eql at mode@aligned{\let\eql at box@mode at lines\eql at false}
\def\eql at mode@lined{\let\eql at box@mode at lines\eql at true}
\eql at mode@aligned
-\eql at amsmath@futurebefore{
- \let\c at parentequation\@undefined
- \let\theparentequation\@undefined
+\def\eql at tag@setbox@#1{%
+ \def\eql at tag@box##1{#1}%
}
-\ifdefined\c at parentequation\else
-\newcounter{parentequation}
-\fi
-\def\eql at subequations@template{\theparentequation\alph{equation}}
-\let\eql at subequations@active\eql at false
-\def\eql at subequations@init{%
- \edef\eql at subequations@restorecounter{%
- \global\c at equation\the\c at equation\relax}%
- \ifdefined\eql at blocktag
- \expandafter\eql at tag@makenext\eql at blocktag
- \eql at nexttag
- \global\advance\eql at numbering@refcount@\@ne
- \protected at edef\theHparentequation{eql-\the\eql at numbering@refcount@}%
- \protected at edef\theparentequation{\eql at tag@text}%
- \else
- \advance\c at equation\@ne
- \protected at edef\theparentequation{\theequation}%
- \ifdefined\theHequation
- \protected at edef\theHparentequation{\theHequation}%
- \fi
- \fi
- \global\c at parentequation\c at equation
- \global\c at equation\z@
- \let\theequation\eql at subequations@template
- \def\theHequation{\theHparentequation.\arabic{equation}}%
+\def\eql at tag@setbox#1{%
+ \def\eql at tag@box##1{\hbox{\m at th\normalfont#1}}%
}
-\def\eql at subequations@close{%
- \ifnum\c at equation=\z@
- \eql at subequations@restorecounter
- \else
- \global\c at equation\c at parentequation
- \fi
-}
-\def\eql at subequations@start{%
- \let\eql at blocktag\@undefined
- \let\eql at blocklabel\@undefined
- \eql at nextopt@process{subequations}%
- \eql at subequations@init
- \global\advance\eql at numbering@refcount@\@ne
- \edef\eql at subequations@currentHref{equation.eql-\the\eql at numbering@refcount@}%
- \eql at Hy@anchor\eql at subequations@currentHref
- \edef\eql at subequations@thepage{\thepage}%
- \def\@currentcounter{equation}%
- \let\@currentHref\eql at subequations@currentHref
- \protected at edef\@currentlabel{\p at equation\theparentequation}%
- \let\@currentlabelname\eql at labelname@default
- \let\eql at subequations@active\eql at true
- \ifdefined\eql at blocklabel
- \ifdefined\eql at SK
- \SK@\SK@@label\eql at blocklabel
- \fi
- \fi
- \ignorespaces
-}
-\def\eql at subequations@end{%
- \ifnum\c at equation>\z@
- \ifdefined\eql at blocklabel
- \begingroup
- \def\@currentcounter{equation}%
- \let\thepage\eql at subequations@thepage
- \let\@currentHref\eql at subequations@currentHref
- \protected at edef\@currentlabel{\p at equation\theparentequation}%
- \let\@currentlabelname\eql at labelname@default
- \expandafter\eql at label@clean\expandafter{\eql at blocklabel}%
- \endgroup
- \fi
- \fi
- \eql at subequations@close
- \ignorespacesafterend
-}
-\newenvironment{eql at subequations}{%
- \eql at subequations@testall\eql at subequations@start%
-}{%
- \eql at subequations@end
-}
-\def\eql at subequations@testall{\eql at subequations@testopt}
-\def\eql at subequations@testopt#1{%
- \eql at ifnextchar@tight[%]
- {\eql at subequations@addopt{\eql at subequations@testat{#1}}}%
- {\eql at subequations@testat{#1}}}
-\def\eql at subequations@addopt#1[#2]{\eqnaddopt{#2}#1}
-\def\eql at subequations@testat#1{%
- \eql at ifat@tight%
- {\eql at subequations@addlabel{#1}}%
- {#1}}
-\def\eql at subequations@addlabel#1#2{\eqnaddopt{label={#2}}#1}
-\ifdefined\maketag@@@\else
-\def\maketag@@@#1{\hbox{\m at th\normalfont#1}}
-\fi
-\ifdefined\tagform@\else
-\def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}
-\fi
-\def\eql at tag@setmake@#1{%
- \def\maketag@@@##1{\hbox{\m at th\normalfont#1}}%
-}
-\def\eql at tag@setmake#1{%
- \def\maketag@@@##1{\hbox{\m at th\normalfont#1}}%
-}
\def\eql at tag@setform@#1{%
- \def\tagform@##1{\maketag@@@{#1}}%
+ \def\eql at tag@form##1{#1}%
}
\def\eql at tag@setform#1#2#3{%
- \def\tagform@##1{\maketag@@@{#1\ignorespaces#2\unskip\@@italiccorr#3}}%
+ \def\eql at tag@form##1{#1\ignorespaces#2\unskip\@@italiccorr#3}%
}
-
+\eql at tag@setbox{#1}
+\eql at tag@setform({#1})
+\def\eql at tag@boxedform#1{\eql at tag@box{\eql at tag@form{#1}}}
\newdimen\eql at raisetag@amount@
\def\eql at raisetag@default{%
\eql at warning{\string\raisetag\space not allowed here}
\@gobble
}
-\eql at amsmath@after{\let\eql at raisetag@default\raisetag}
-\eql at amsmath@futurebefore{\let\raisetag\@undefined}
-\let\raisetag\eql at raisetag@default
-\def\eql at raisetag#1{\setlength\dimen@{#1}\global\eql at raisetag@amount@\dimen@}%
-\let\eql at SK\@undefined
-\let\eql at SK@lab at relax\@empty
-\let\eql at SK@makelabel\@gobble
+\eql at amsmath@let\raisetag\eql at raisetag@default
+\def\eql at raisetag#1{\global\eql at raisetag@amount@\glueexpr#1\relax}%
+\let\eql at SK@loaded\eql at false
+\let\eql at SK@label\@gobble
+\let\eql at SK@clearlabel\@empty
+\let\eql at SK@setlabel\@gobble
\let\eql at SK@printlabel at right\@empty
\let\eql at SK@printlabel at left\@empty
\let\eql at SK@printlabel at line\@empty
\def\eql at label@clean{\eql at label@org}
\AddToHook{package/showkeys/after}{
- \let\eql at SK\@empty
- \def\eql at SK@lab at relax{\let\eql at SK@lab\relax}
- \eql at SK@lab at relax
+ \let\eql at SK@loaded\eql at true
+ \def\eql at SK@label#1{\SK@\SK@@label#1}
+ \def\eql at SK@clearlabel{\let\eql at SK@lab\relax}
+ \eql at SK@clearlabel
\def\eql at SK@@label#1>#2\SK@{%
\def\eql at SK@lab{\smash{\SK at labelcolor\showkeyslabelformat{#2}}}%
}
- \def\eql at SK@makelabel#1{%
- \SK@\eql at SK@@label#1%
- }
+ \def\eql at SK@setlabel#1{\SK@\eql at SK@@label#1}
\def\eql at SK@printlabel at right{%
\ifx\eql at SK@lab\relax\else
\rlap{\kern\marginparsep\eql at SK@lab}%
- \eql at SK@lab at relax
+ \eql at SK@clearlabel
\fi
}
\def\eql at SK@printlabel at left{%
\ifx\eql at SK@lab\relax\else
\llap{\eql at SK@lab\kern\marginparsep}%
- \eql at SK@lab at relax
+ \eql at SK@clearlabel
\fi
}
\def\eql at SK@printlabel at line{%
@@ -627,7 +620,7 @@
\eql at SK@lab
\kern\marginparsep
}%
- \eql at SK@lab at relax
+ \eql at SK@clearlabel
\else
\rlap{%
\dimen@\displaywidth
@@ -636,7 +629,7 @@
\eql at SK@lab
}%
\fi
- \eql at SK@lab at relax
+ \eql at SK@clearlabel
\prevdepth\dimen@
\fi
}
@@ -649,9 +642,6 @@
\let\eql at nexttag\@undefined
\def\eql at tag@default{%
\eql at error{\string\tag\space not allowed here}{}\eql at tag@gobble}
-\eql at amsmath@after{
- \let\eql at tag@default\tag
-}
\let\tag\eql at tag@default
\def\eql at tag@gobble@[#1]#2{}
\def\eql at tag@gobble{%
@@ -668,7 +658,7 @@
}
\def\eql at tag@makenext at star[#1]#2{%
\global\def\eql at nexttag{%
- \let\eql at tag@tool\maketag@@@
+ \let\eql at tag@tool\@firstofone
\protected at edef\eql at tag@text{#2}%
\protected at edef\eql at tag@label{#1}%
}%
@@ -675,7 +665,7 @@
}
\def\eql at tag@makenext@[#1]#2{%
\global\def\eql at nexttag{%
- \let\eql at tag@tool\tagform@
+ \let\eql at tag@tool\eql at tag@form
\protected at edef\eql at tag@text{#2}%
\protected at edef\eql at tag@label{#1}%
\protected at edef\eql at tag@label{\p at equation\eql at tag@label}%
@@ -683,9 +673,11 @@
}
\newcount\eql at numbering@refcount@
\eql at numbering@refcount@\z@
+\def\eql at numbering@ref{equation.eql-\the\eql at numbering@refcount@}
+\def\eql at numbering@refstep{\global\advance\eql at numbering@refcount@\@ne}
\def\eql at numbering@makeblockanchor{%
- \global\advance\eql at numbering@refcount@\@ne
- \global\edef\eql at label@currentHref{equation.eql-\the\eql at numbering@refcount@}%
+ \eql at numbering@refstep
+ \global\edef\eql at label@currentHref{\eql at numbering@ref}%
\eql at Hy@anchor\eql at label@currentHref
\global\edef\eql at label@thepage{\thepage}%
}
@@ -698,19 +690,19 @@
\eql at nexttag
\def\@currentcounter{equation}%
\let\@currentlabel\eql at tag@label
- \global\advance\eql at numbering@refcount@\@ne
- \edef\@currentHref{equation.eql-\the\eql at numbering@refcount@}%
+ \eql at numbering@refstep
+ \edef\@currentHref{\eql at numbering@ref}%
\eql at Hy@anchor\@currentHref
\global\let\eql at nexttag\@undefined
\else
\refstepcounter{equation}%
- \let\eql at tag@tool\tagform@
+ \let\eql at tag@tool\eql at tag@form
\edef\eql at tag@text{\theequation}%
\fi
}
\def\eql at compose@label{%
\ifmeasuring@\else
- \eql at SK@lab at relax
+ \eql at SK@clearlabel
\ifdefined\eql at nextlabel
\ifnum
\ifnum\eql at numbering@target@<\z@
@@ -724,7 +716,7 @@
\fi
}
\def\eql at compose@label@{%
- \eql at SK@makelabel\eql at nextlabel
+ \eql at SK@setlabel\eql at nextlabel
\begingroup
\ifnum\eql at numbering@target@=\eql at row@
\eql at numbering@setblockanchor
@@ -735,7 +727,12 @@
\endgroup
}
\def\eql at compose@tag{%
- \eql at tag@tool\eql at tag@text
+ \eql at tagging@tagbegin
+ \eql at tag@box{%
+ \eql at tag@tool\eql at tag@text
+ \eql at tagging@tagsave
+ }%
+ \eql at tagging@tagend
}
\def\eql at compose@print{%
\eql at compose@anchor
@@ -751,10 +748,10 @@
\def\eql at compose@measure{%
\ifdefined\eql at nexttag
\eql at nexttag
- \eql at tag@tool\eql at tag@text
+ \eql at tag@box{\eql at tag@tool\eql at tag@text}%
\else
\stepcounter{equation}%
- \tagform@\theequation
+ \eql at tag@box{\eql at tag@form\theequation}%
\fi
\ifnum\eql at numbering@target@<\z@
\global\let\eql at nextlabel\@undefined
@@ -813,7 +810,7 @@
\def\eql at numbering@printsubeqlabel{%
\ifdefined\eql at parentlabel
\eql at numbering@makeblockanchor
- \eql at SK@makelabel\eql at parentlabel
+ \eql at SK@setlabel\eql at parentlabel
\begingroup
\def\@currentcounter{equation}%
\eql at numbering@setblockanchor
@@ -1108,6 +1105,92 @@
\fi
\fi
}
+\eql at amsmath@undefine\c at parentequation
+\eql at amsmath@undefine\theparentequation
+\ifdefined\c at parentequation\else
+\newcounter{parentequation}
+\fi
+\def\eql at subequations@template{\theparentequation\alph{equation}}
+\let\eql at subequations@active\eql at false
+\def\eql at subequations@init{%
+ \edef\eql at subequations@restorecounter{%
+ \global\c at equation\the\c at equation\relax}%
+ \ifdefined\eql at blocktag
+ \expandafter\eql at tag@makenext\eql at blocktag
+ \eql at nexttag
+ \eql at numbering@refstep
+ \protected at edef\theHparentequation{\eql at numbering@ref}%
+ \protected at edef\theparentequation{\eql at tag@text}%
+ \else
+ \advance\c at equation\@ne
+ \protected at edef\theparentequation{\theequation}%
+ \ifdefined\theHequation
+ \protected at edef\theHparentequation{\theHequation}%
+ \fi
+ \fi
+ \global\c at parentequation\c at equation
+ \global\c at equation\z@
+ \let\theequation\eql at subequations@template
+ \def\theHequation{\theHparentequation.\arabic{equation}}%
+}
+\def\eql at subequations@close{%
+ \ifnum\c at equation=\z@
+ \eql at subequations@restorecounter
+ \else
+ \global\c at equation\c at parentequation
+ \fi
+}
+\def\eql at subequations@start{%
+ \let\eql at blocktag\@undefined
+ \let\eql at blocklabel\@undefined
+ \eql at nextopt@process{subequations}%
+ \eql at subequations@init
+ \eql at numbering@refstep
+ \edef\eql at subequations@currentHref{\eql at numbering@ref}%
+ \eql at Hy@anchor\eql at subequations@currentHref
+ \edef\eql at subequations@thepage{\thepage}%
+ \def\@currentcounter{equation}%
+ \let\@currentHref\eql at subequations@currentHref
+ \protected at edef\@currentlabel{\p at equation\theparentequation}%
+ \let\@currentlabelname\eql at labelname@default
+ \let\eql at subequations@active\eql at true
+ \ifdefined\eql at blocklabel
+ \eql at SK@label\eql at blocklabel
+ \fi
+ \ignorespaces
+}
+\def\eql at subequations@end{%
+ \ifnum\c at equation>\z@
+ \ifdefined\eql at blocklabel
+ \begingroup
+ \def\@currentcounter{equation}%
+ \let\thepage\eql at subequations@thepage
+ \let\@currentHref\eql at subequations@currentHref
+ \protected at edef\@currentlabel{\p at equation\theparentequation}%
+ \let\@currentlabelname\eql at labelname@default
+ \expandafter\eql at label@clean\expandafter{\eql at blocklabel}%
+ \endgroup
+ \fi
+ \fi
+ \eql at subequations@close
+ \ignorespacesafterend
+}
+\newenvironment{eql at subequations}{%
+ \eql at subequations@testall\eql at subequations@start%
+}{%
+ \eql at subequations@end
+}
+\def\eql at subequations@testall{\eql at subequations@testopt}
+\def\eql at subequations@testopt#1{%
+ \eql at ifnextchar@tight[%]
+ {\eql at subequations@addopt{\eql at subequations@testat{#1}}}%
+ {\eql at subequations@testat{#1}}}
+\def\eql at subequations@addopt#1[#2]{\eqnaddopt{#2}#1}
+\def\eql at subequations@testat#1{%
+ \eql at ifat@tight%
+ {\eql at subequations@addlabel{#1}}%
+ {#1}}
+\def\eql at subequations@addlabel#1#2{\eqnaddopt{label={#2}}#1}
\def\eql at numbering@subeq at init{%
\let\eql at save@theequation\theequation
\let\eql at save@theHequation\theHequation
@@ -1139,9 +1222,8 @@
}
\DeclareRobustCommand{\eql at displaybreak@default}[1][4]{%
\eql at warning{Invalid use of \string\displaybreak}{}}
-\eql at amsmath@futurebefore{\let\displaybreak\@undefined}
\eql at amsmath@after{\let\eql at displaybreak@default\displaybreak}
-\let\displaybreak\eql at displaybreak@default
+\eql at amsmath@let\displaybreak\eql at displaybreak@default
\newcount\eql at displaybreak@pen@
\newcount\eql at displaybreak@prepen@
\protected\def\eql at displaybreak@print{%
@@ -1165,10 +1247,6 @@
\eql at ampprotect\eql at testopt@tight\eql at displaybreak@measure@{4}%
}
\def\eql at displaybreak@measure@[#1]{}
-\def\eql at display@atend#1{%
- \expandafter\def\expandafter\eql at display@doatend\expandafter
- {\eql at display@doatend#1}%
-}
\newskip\eql at vspaceskip@
\newskip\eql at abovespace@
\newskip\eql at belowspace@
@@ -1175,9 +1253,7 @@
\let\eql at vspace@org\vspace
\def\eql at vspace{\eql at ifstar@loose\eql at vspace@\eql at vspace@}
\def\eql at vspace@#1{%
- \setlength\skip@{#1}%
- \global\advance\eql at vspaceskip@\skip@
-}
+ \global\advance\eql at vspaceskip@\glueexpr#1\relax}
\def\eql at display@init{%
\eql at display@firstavail@\z@
\eql at raisetag@firstlast@\z@
@@ -1188,50 +1264,140 @@
\let\vspace\eql at vspace
}
\def\eql at display@close{%
+ \ifdim\eql at display@firstavail@<\z@
+ \eql at display@firstavail@\z@
+ \fi
+ \eql at skip@mode at leave@\z@
\ifdim\eql at halign@prevdepth@=\maxdimen
\ifdim\predisplaysize=-\maxdimen
- \abovedisplayskip\eql at abovedisplaycontskip@
- \predisplaysize\maxdimen
- \abovedisplayshortskip\abovedisplayskip
- \belowdisplayshortskip\belowdisplayskip
+ \eql at skip@mode at above@\tw@
+ \eql at skip@mode at below@\eql at skip@mode at cont@
+ \else
+ \eql at skip@mode at above@\z@
+ \eql at skip@mode at below@\z@
+ \advance\eql at display@firstavail@\displayindent
+ \ifdim\eql at display@firstavail@>\predisplaysize
+ \ifcase\eql at skip@mode at short@
+ \or
+ \eql at skip@mode at above@\@ne
+ \or
+ \eql at skip@mode at above@\@ne
+ \ifnum\eql at row@=\tw@
+ \eql at skip@mode at below@\@ne
+ \fi
+ \or
+ \eql at skip@mode at above@\@ne
+ \eql at skip@mode at below@\@ne
+ \fi
+ \fi
\fi
\else
- \ifdim\eql at halign@prevdepth@=\@m\p@
+ \ifdim\eql at halign@prevdepth@=-\@m\p@
+ \eql at skip@mode at above@4\relax
+ \eql at skip@mode at below@\eql at skip@mode at top@
+ \eql at skip@mode at leave@\z@
\predisplaypenalty\z@
- \abovedisplayskip\eql at abovedisplaytopskip@
- \belowdisplayskip\eql at belowdisplaytopskip@
+ \ifcase\eql at skip@mode at top@
+ \or
+ \or
+ \or
+ \eql at skip@mode at leave@\@ne
+ \or
+ \postdisplaypenalty\z@
+ \eql at skip@mode at leave@\tw@
+ \fi
\else
+ \eql at skip@mode at above@\thr@@
+ \eql at skip@mode at below@\eql at skip@mode at par@
+ \eql at skip@mode at leave@\z@
\predisplaypenalty\z@
- \abovedisplayskip\eql at abovedisplayparskip@
+ \ifnum\eql at skip@mode at par@=\thr@@
+ \eql at skip@mode at leave@\@ne
+ \fi
\fi
- \predisplaysize\maxdimen
- \abovedisplayshortskip\abovedisplayskip
- \belowdisplayshortskip\belowdisplayskip
\fi
- \eql at display@doatend
- \ifdim\eql at display@firstavail@<\z@
- \eql at display@firstavail@\z@
+ \ifdefined\eql at skip@force at above
+ \eql at skip@mode at above@\eql at skip@force at above\relax
\fi
- \advance\eql at display@firstavail@\displayindent
- \ifdim\eql at display@firstavail@>\predisplaysize
- \ifcase\eql at displayshortmode@
+ \ifdefined\eql at skip@force at below
+ \eql at skip@mode at below@\eql at skip@force at below\relax
+ \fi
+ \ifdefined\eql at skip@force at leave
+ \eql at skip@mode at leave@\eql at skip@force at leave\relax
+ \fi
+ \ifodd\eql at raisetag@firstlast@
+ \ifcase\eql at skip@mode at above@
+ \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
\or
- \abovedisplayskip\abovedisplayshortskip
+ \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
\or
- \abovedisplayskip\abovedisplayshortskip
- \ifnum\eql at row@=\tw@
- \belowdisplayskip\belowdisplayshortskip
- \fi
+ \abovedisplayskip\glueexpr\eql at skip@tag at above\relax
\or
- \abovedisplayskip\abovedisplayshortskip
- \belowdisplayskip\belowdisplayshortskip
+ \abovedisplayskip\glueexpr\eql at skip@partag at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@partag at above\relax
+ \or
+ \abovedisplayskip\z at skip
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@medtag at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@custom at above\relax
\fi
+ \else
+ \ifcase\eql at skip@mode at above@
+ \abovedisplayskip\glueexpr\eql at skip@long at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@short at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@cont at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@par at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@top at above\relax
+ \or
+ \abovedisplayskip\z at skip
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@medtag at above\relax
+ \or
+ \abovedisplayskip\glueexpr\eql at skip@custom at above\relax
+ \fi
\fi
- \ifodd\eql at raisetag@firstlast@
- \abovedisplayskip\eql at abovedisplaytagskip@
- \fi
\ifnum\eql at raisetag@firstlast@>\@ne
- \belowdisplayskip\eql at belowdisplaytagskip@
+ \ifcase\eql at skip@mode at below@
+ \belowdisplayskip\glueexpr\eql at skip@tag at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@tag at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@tag at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@partag at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@partag at below\relax
+ \or
+ \belowdisplayskip\z at skip
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@medtag at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@custom at below\relax
+ \fi
+ \else
+ \ifcase\eql at skip@mode at below@
+ \belowdisplayskip\glueexpr\eql at skip@long at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@short at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@cont at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@par at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@top at below\relax
+ \or
+ \belowdisplayskip\z at skip
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@medtag at below\relax
+ \or
+ \belowdisplayskip\glueexpr\eql at skip@custom at below\relax
+ \fi
\fi
\ifnum\eql at displaybreak@pen@=\@MM\else
\postdisplaypenalty\eql at displaybreak@pen@
@@ -1242,10 +1408,13 @@
\advance\abovedisplayskip\eql at abovespace@
\advance\belowdisplayskip\eql at belowspace@
\advance\belowdisplayskip\eql at vspaceskip@
+ \abovedisplayshortskip\abovedisplayskip
+ \belowdisplayshortskip\belowdisplayskip
\count@\prevgraf
\advance\count@\eql at row@
\advance\count at -\tw@
\prevgraf\count@
+ \global\eql at skip@mode at leave@\eql at skip@mode at leave@
}
\def\eql at display@leave{%
\let\label\eql at label@org
@@ -1252,12 +1421,15 @@
\let\tag\eql at tag@default
\let\raisetag\eql at raisetag@default
\let\displaybreak\eql at displaybreak@default
+ \let\intertext\eql at intertext@default
\let\vspace\eql at vspace@org
}
\expandafter\def\expandafter\@arrayparboxrestore\expandafter{%
\@arrayparboxrestore
\eql at display@leave
- \eql at amprevert
+ \ifdefined\eql at ampproof@active
+ \eql at amprevert
+ \fi
\@displayfalse
}
\newbox\eql at strutbox@
@@ -1276,14 +1448,11 @@
}
\AtBeginDocument{\eql at strut@make}
\def\eql at halign@spread{%
- \dimen@\eql at spread\relax
- \advance\dimen@\normalbaselineskip
- \ifdim\dimen@>\baselineskip
- \normalbaselines
- \dimen@\eql at spread\relax
- \advance\dimen@\normalbaselineskip
- \advance\dimen at -\baselineskip
- \openup\dimen@
+ \eql at spread@amount@\glueexpr\eql at spread\relax
+ \advance\eql at spread@amount@\normalbaselineskip
+ \advance\eql at spread@amount at -\baselineskip
+ \ifdim\eql at spread@amount@>\z@
+ \openup\eql at spread@amount@
\ifdefined\spread at equation
\let\spread at equation\@empty
\fi
@@ -1299,24 +1468,39 @@
\eql at halign@prevdepth@\maxdimen
\fi
}
+\def\eql at halign@leave{%
+ \ifcase\eql at skip@mode at leave@
+ \or
+ \endgraf
+ \or
+ \endgraf
+ \prevdepth-\@m\p@
+ \fi
+}
\def\eql at halign@before{%
\ifdim\eql at halign@prevdepth@=\maxdimen\else
\prevdepth\eql at halign@prevdepth@
\fi
\ifdim\prevdepth=-\@m\p@\else
- \skip@\normalbaselineskip
- \advance\skip at -\eql at display@height\relax
- \advance\skip at -\prevdepth\relax
- \ifdim\skip@<\normallineskiplimit
- \vskip\normallineskip
+ \ifdefined\eql at display@height
+ \skip@\baselineskip
+ \advance\skip at -\glueexpr\eql at display@height\relax
+ \advance\skip at -\prevdepth\relax
+ \ifdim\skip@<\lineskiplimit
+ \skip@\lineskip
+ \fi
+ \advance\skip at -\eql at spread@amount@\relax
+ \vskip\skip@
+ \nointerlineskip
\else
- \vskip\skip@
+ \vskip-\eql at spread@amount@\relax
\fi
- \nointerlineskip
\fi
}
\def\eql at halign@after{%
- \prevdepth\eql at display@depth\relax
+ \ifdefined\eql at display@depth
+ \prevdepth\glueexpr\eql at display@depth\relax
+ \fi
}
\def\eql at halign@init#1{%
\eql at halign@spread
@@ -1520,7 +1704,7 @@
}%
}
\def\eql at adjust@shoveleft@[#1]{%
- \eql at sregroup\setlength\dimen@{#1}\global\eql at shape@amount@\dimen@}
+ \eql at sregroup\global\eql at shape@amount@\glueexpr#1\relax}
\def\eql at adjust@shovecenter{%
\global\eql at shape@pos@\@ne\global\eql at shape@amount@\z@}
\def\eql at adjust@shoveright{%
@@ -1531,7 +1715,12 @@
}
\def\eql at adjust@print#1#2{%
\eql at restore@hfuzz
- \hbox to\displaywidth{#1\unhbox\eql at fieldbox@\unkern#2}%
+ \hbox to\displaywidth{%
+ #1%
+ \unhbox\eql at fieldbox@\unkern
+ #2%
+ \eql at tagging@mathaddlast
+ }%
}
\def\eql at adjust@print at alignleft#1#2{%
\ifnum\eql at row@=\@ne
@@ -1563,6 +1752,14 @@
\eql at shape@sel
}
\def\eql at adjust@sel at tag{%
+ \eql at tagging@tagaddbox
+ \ifcase\eql at shape@pos@
+ \eql at tagging@alignleft
+ \or
+ \eql at tagging@aligncenter
+ \or
+ \eql at tagging@alignright
+ \fi
\csname eql at adjust%
@\ifdefined\eql at flushleft flushleft\else center\fi
@\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
@@ -1570,6 +1767,14 @@
@tag\endcsname
}
\def\eql at adjust@sel at notag{%
+ \eql at tagging@tagaddbox
+ \ifcase\eql at shape@pos@
+ \eql at tagging@alignleft
+ \or
+ \eql at tagging@aligncenter
+ \or
+ \eql at tagging@alignright
+ \fi
\csname eql at adjust%
@\ifdefined\eql at flushleft flushleft\else center\fi
@\ifdefined\eql at tagsleft tagsleft\else tagsright\fi
@@ -1982,6 +2187,9 @@
Please switch to equations environment}%
}
\def\eql at single@start{%
+ \eql at halign@catchprevdepth
+ \eql at tagging@start
+ $$%$$
\eql at numbering@eval at mode
\let\eql at numbering@subeq at use\eql at false
\eql at stack@save at single
@@ -2004,7 +2212,15 @@
\eql at hook@eqout
\eql at single@end at sel
\eql at stack@restore
+ $$%$$
+ \eql at tagging@end
+ \eql at halign@leave
}
+\def\eql at single@main{%
+ \expandafter\eql at single@start
+ \eql at scan@body
+ \eql at single@end
+}
\def\eql at single@start at native{%
\eql at hook@eqin
}%
@@ -2042,6 +2258,7 @@
\eql at hook@eqin
}
\def\eql at single@end at adjust{%
+ \eql at tagging@mathsave
$%$
\hfil
\kern\z@
@@ -2060,6 +2277,7 @@
\fi
\cr
\noalign{\eql at halign@after}%
+ \eql at tagging@tablesavelines
}%
\eql at row@\tw@
\eql at display@close
@@ -2179,7 +2397,7 @@
\else
\penalty\eql at displaybreak@pen@
\fi
- \addtolength\eql at vspaceskip@{#1}%
+ \advance\eql at vspaceskip@\glueexpr#1\relax%
\vskip\eql at vspaceskip@
\global\eql at vspaceskip@\z at skip
}%
@@ -2188,22 +2406,42 @@
\let\\\eql at math@cr
\let\eql at math@cr@@@#1%
}
-\eql at amsmath@futurebefore{\let\intertext\@undefined}
-\providecommand{\intertext}{\eql at error{Invalid use of \string\intertext}}
-\def\eql at intertext@process#1{%
+\def\eql at intertext@default{\eql at error{Invalid use of \string\intertext}}
+\eql at amsmath@let\intertext\eql at intertext@default
+\def\eql at intertext@process{%
\eql at math@cr@@@
\cr
- \ifmeasuring@\else
- \expandafter\eql at intertext@print{#1}%
+ \ifmeasuring@
+ \expandafter\@gobble
+ \else
+ \expandafter\eql at intertext@print
\fi
}
\def\eql at intertext@print#1{%
\noalign{%
\eql at halign@after
+ \let\eql at skip@force at below\z@
+ \let\eql at skip@force at above\z@
\eql at setkeys{intertext}\eql at intertext@opt
- \normalbaselines
+ \openup-\eql at spread@amount@
\penalty\postdisplaypenalty
- \addtolength\eql at vspaceskip@\belowdisplayskip
+ \ifcase\eql at skip@force at below\relax
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@long at below\relax
+ \or
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@short at below\relax
+ \or
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@cont at below\relax
+ \or
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@par at below\relax
+ \or
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@top at below\relax
+ \or
+ \advance\eql at vspaceskip@\z at skip
+ \or
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@med at below\relax
+ \or
+ \advance\eql at vspaceskip@\glueexpr\eql at skip@custom at below\relax
+ \fi
\vskip\eql at vspaceskip@
\global\eql at vspaceskip@\z at skip
\vbox{%
@@ -2220,7 +2458,23 @@
\par
}%
\penalty\predisplaypenalty
- \vskip\abovedisplayskip
+ \ifcase\eql at skip@force at above\relax
+ \vskip\glueexpr\eql at skip@long at above\relax
+ \or
+ \vskip\glueexpr\eql at skip@short at above\relax
+ \or
+ \vskip\glueexpr\eql at skip@cont at above\relax
+ \or
+ \vskip\glueexpr\eql at skip@par at above\relax
+ \or
+ \vskip\glueexpr\eql at skip@top at above\relax
+ \or
+ \vskip\z at skip
+ \or
+ \vskip\glueexpr\eql at skip@med at above\relax
+ \or
+ \vskip\glueexpr\eql at skip@custom at above\relax
+ \fi
\eql at halign@prevdepth@\z@
\eql at halign@before
}
@@ -2253,6 +2507,9 @@
}
\let\eql at multi@mode at lines\eql at false
\def\eql at multi@main{%
+ \eql at halign@catchprevdepth
+ \eql at tagging@start
+ $$%$$
\eql at numbering@eval at mode
\eql at stack@save at multi
\ifdefined\eql at subequations@active
@@ -2294,19 +2551,30 @@
\eql at numbering@subeq at close
\fi
\eql at stack@restore
+ $$%$$
+ \eql at tagging@end
+ \eql at halign@leave
}
\def\eql at mode@equation{%
\let\eql at equations@mode at single\eql at true
- \let\eql at equations@end\eql at single@end
+ \ifdefined\eql at single@doscan
+ \let\eql at equations@main\eql at single@main
+ \let\eql at equations@end\@empty
+ \else
+ \let\eql at equations@main\@undefined
+ \let\eql at equations@end\eql at single@end
+ \fi
}
\def\eql at mode@align{%
\let\eql at equations@mode at single\eql at false
\let\eql at multi@mode at lines\eql at false
+ \let\eql at equations@main\eql at multi@main
\let\eql at equations@end\@empty
}
\def\eql at mode@lines{%
\let\eql at equations@mode at single\eql at false
\let\eql at multi@mode at lines\eql at true
+ \let\eql at equations@main\eql at multi@main
\let\eql at equations@end\@empty
}
\eql at mode@align
@@ -2412,12 +2680,12 @@
\advance\dimen at -\eql at tagmargin@
\divide\dimen@\tw@
\eql at marginleft@\dimen@
- \advance\eql at marginleft@-\eql at paddingleft@
+ \advance\eql at marginleft@-\glueexpr\eql at paddingleft@val\relax
\ifdim\eql at marginleft@<\z@
\eql at marginleft@\z@
\fi
\eql at marginright@\dimen@
- \advance\eql at marginright@-\eql at paddingright@
+ \advance\eql at marginright@-\glueexpr\eql at paddingright@val\relax
\ifdim\eql at marginright@<\z@
\eql at marginright@\z@
\fi
@@ -2439,6 +2707,7 @@
##%
\eql at punct@apply at col
\eql at hook@colout
+ \eql at tagging@mathsave
$%
\hfil
\kern\z@
@@ -2462,6 +2731,7 @@
\eql at hook@blockafter
\eql at halign@after
}%
+ \eql at tagging@tablesavelines
}%
\eql at display@close
}
@@ -2487,47 +2757,11 @@
\expandafter\eql at align@add at amp\romannumeral\number\count@ 000q}%
\eql at tmp
}
-\def\eql at align@preamble#1#2#3{%
- &%
- \global\advance\eql at column@\@ne
- \hfil
- \global\setbox\eql at fieldbox@\hbox{%
- #3%
- \@lign
- $\m at th\displaystyle
- \eql at hook@colin
- ##%
- \eql at class@innerleft
- \eql at hook@innerleft
- $%
- }%
- \global\eql at fieldwidth@\wd\eql at fieldbox@
- #2%
- \tabskip\z at skip
- &%
- \global\advance\eql at column@\@ne
- \setbox\eql at fieldbox@\hbox{%
-\kern-\wd\eql at fieldbox@
-\box\eql at fieldbox@
- #3%
- \@lign
- $\m at th\displaystyle
- \eql at hook@innerright
- \eql at class@innerright at sel
- ##%
- \eql at punct@apply at col
- \eql at hook@colout
- $%
- }%
- #2%
- \hfil
- \tabskip#1%
-}
\def\eql at align@print at trailright{%
&\omit
\global\advance\eql at column@\@ne
\setbox\eql at fieldbox@\hbox{%
-\kern-\wd\eql at fieldbox@\box\eql at fieldbox@
+ \kern-\wd\eql at fieldbox@\box\eql at fieldbox@
}%
\eql at align@print at field
}
@@ -2598,8 +2832,10 @@
\eql at numbering@print at line@eval
\if at eqnsw
\eql at tagbox@make\eql at compose@print
+ \eql at tagging@tagaddbox
\eql at tagbox@print at multi
\else
+ \eql at tagging@tagaddbox
\kern\displaywidth
\fi
}
@@ -2611,7 +2847,44 @@
\eql at let@cr\eql at align@print at line@end
\tabskip\eql at marginleft@
\halign{%
- \span\eql at align@preamble\eql at colsep@\eql at align@print at field\eql at strut@field
+ &%
+ \global\advance\eql at column@\@ne
+ \hfil
+ \global\setbox\eql at fieldbox@\hbox{%
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at class@innerleft
+ \eql at hook@innerleft
+ \eql at tagging@mathsave
+ $%
+ \eql at tagging@mathaddlast
+ }%
+ \global\eql at fieldwidth@\wd\eql at fieldbox@
+ \eql at align@print at field
+ \tabskip\z at skip
+ &%
+ \global\advance\eql at column@\@ne
+ \setbox\eql at fieldbox@\hbox{%
+ \kern-\wd\eql at fieldbox@
+ \box\eql at fieldbox@
+ \eql at strut@field
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@innerright
+ \eql at class@innerright at sel
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ \eql at tagging@mathsave
+ $%
+ \eql at tagging@mathaddlast
+ }%
+ \eql at align@print at field
+ \hfil
+ \tabskip\eql at colsep@\relax
\crcr
\noalign{%
\eql at halign@before
@@ -2630,6 +2903,7 @@
\eql at hook@blockafter
\eql at halign@after
}%
+ \eql at tagging@tablesavealign
}%
\eql at display@close
}
@@ -2670,8 +2944,36 @@
\eql at numbering@measure at init
\eql at measure@init\eql at align@measure at line@begin
\eql at let@cr\eql at align@measure at line@end
+ \tabskip\z at skip
\halign{%
- \span\eql at align@preamble\z at skip\eql at align@measure at field\relax
+ &%
+ \global\advance\eql at column@\@ne
+ \hfil
+ \global\setbox\eql at fieldbox@\hbox{%
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@colin
+ ##%
+ \eql at class@innerleft
+ \eql at hook@innerleft
+ $%
+ }%
+ \global\eql at fieldwidth@\wd\eql at fieldbox@
+ \eql at align@measure at field
+ &%
+ \global\advance\eql at column@\@ne
+ \setbox\eql at fieldbox@\hbox{%
+ \@lign
+ $\m at th\displaystyle
+ \eql at hook@innerright
+ \eql at class@innerright at sel
+ ##%
+ \eql at punct@apply at col
+ \eql at hook@colout
+ $%
+ }%
+ \eql at align@measure at field
+ \hfil
\crcr
\noalign{%
\eql at hook@blockbefore
@@ -2720,6 +3022,8 @@
\repeat
}
\def\eql at align@adjust{%
+ \eql at colsepmin@\glueexpr\eql at colsepmin@val\relax
+ \eql at colsepmax@\glueexpr\eql at colsepmax@val\relax
\ifodd\eql at totalcolumns@
\advance\eql at totalcolumns@\@ne
\fi
@@ -2991,7 +3295,7 @@
\expandafter\[%\]
\fi
}
-\def\eql at scan@sqrang at cancel{\ignorespaces}
+\def\eql at scan@sqrang at cancel{\expandafter\ignorespaces\@gobble}
\def\eql at scan@ang#1{%
\def\eql at scan@end{#1\>}%
\eql at scan@reg@{}\def\eql at scan@stack{b}%
@@ -3040,7 +3344,9 @@
\def\eql at equations@processopt{%
\let\eql at blocklabel\@undefined
\let\eql at blocktag\@undefined
- \let\eql at display@doatend\@empty
+ \let\eql at skip@force at above\@undefined
+ \let\eql at skip@force at below\@undefined
+ \let\eql at skip@force at leave\@undefined
\eql at abovespace@\z at skip
\eql at belowspace@\z at skip
\eql at displaybreak@prepen@\@MM
@@ -3047,11 +3353,7 @@
\eql at nextopt@process{equations}%
\let\eql at punct@block\eql at punct@main
\let\eql at punct@main\relax
- \setlength\eql at paddingleft@\eql at paddingleft@val
- \setlength\eql at paddingright@\eql at paddingright@val
- \setlength\eql at indent@\eql at indent@val
- \setlength\eql at colsepmin@\eql at colsepmin@val
- \setlength\eql at colsepmax@\eql at colsepmax@val
+ \eql at indent@\glueexpr\eql at indent@val\relax
}
\newenvironment{equations}{%
\ifmmode
@@ -3058,24 +3360,22 @@
\eql at error@mathmode{\string\begin{\@currenvir}}%
\expandafter\eql at scan@env\expandafter\eql at scan@env at cancel
\else
- \eql at halign@catchprevdepth
- $$%$$
\expandafter\eql at ampprotect\expandafter\eql at equations@testall
\expandafter\eql at equations@start
\fi
}{%
\eql at equations@end
- $$%$$
\ignorespacesafterend
}
\def\eql at equations@start{%
\eql at equations@processopt
- \ifdefined\eql at equations@mode at single
+ \ifdefined\eql at equations@main
+ \expandafter\eql at scan@env\expandafter\eql at equations@main
+ \else
\expandafter\eql at single@start
- \else
- \expandafter\eql at scan@env\expandafter\eql at multi@main
\fi
}
+\newenvironment{equations at sqr}{}{}
\def\eql at equations@sqr at opt{equation,nonumber}
\protected\def\eql at equations@sqr at open{%
\ifmmode
@@ -3083,12 +3383,12 @@
\expandafter\eql at scan@sqr\expandafter\eql at scan@sqrang at cancel
\else
\expandafter\eqnaddopt\expandafter{\eql at equations@sqr at opt}%
- \eql at halign@catchprevdepth
- $$%$$
+ \begin{equations at sqr}%
\expandafter\eql at ampprotect\expandafter\eql at equations@testall
\expandafter\eql at equations@sqr at start
\fi
}
+\newenvironment{equations at ang}{}{}
\def\eql at equations@ang at opt{align,nonumber}
\protected\def\eql at equations@ang at open{%
\ifmmode
@@ -3096,8 +3396,7 @@
\expandafter\eql at scan@ang\expandafter\eql at scan@sqrang at cancel
\else
\expandafter\eqnaddopt\expandafter{\eql at equations@ang at opt}%
- \eql at halign@catchprevdepth
- $$%$$
+ \begin{equations at ang}%
\expandafter\eql at ampprotect\expandafter\eql at equations@testall
\expandafter\eql at equations@ang at start
\fi
@@ -3104,31 +3403,31 @@
}
\def\eql at equations@sqr at start{%
\eql at equations@processopt
- \ifdefined\eql at equations@mode at single
+ \ifdefined\eql at equations@main
+ \expandafter\eql at scan@sqr\expandafter\eql at equations@main
+ \else
\expandafter\eql at single@start
- \else
- \expandafter\eql at scan@sqr\expandafter\eql at multi@main
\fi
}
\def\eql at equations@ang at start{%
\eql at equations@processopt
- \ifdefined\eql at equations@mode at single
+ \ifdefined\eql at equations@main
+ \expandafter\eql at scan@ang\expandafter\eql at equations@main
+ \else
\expandafter\eql at single@start
- \else
- \expandafter\eql at scan@ang\expandafter\eql at multi@main
\fi
}
\protected\def\eql at equations@sqr at close{%
\eql at equations@end
- $$%$$
+ \end{equations at sqr}%
\ignorespaces
}
\protected\def\eql at equations@ang at close{%
\eql at equations@end
- $$%$$
+ \end{equations at ang}%
\ignorespaces
}
-\DeclareRobustCommand{\eql at eqref}[1]{\textup{\tagform@{\ref{#1}}}}
+\DeclareRobustCommand{\eql at eqref}[1]{\textup{\eql at tag@boxedform{\ref{#1}}}}
\DeclareRobustCommand{\eql at numberwithin}[3][\arabic]{%
\@ifundefined{c@#2}{\@nocounterr{#2}}{%
\@ifundefined{c@#3}{\@nocounterr{#3}}{%
@@ -3152,7 +3451,7 @@
\eqnlinesset{allowbreaks=#1}%
}
\newcommand{\eql at notag}{\nonumber}
-\newcommand{\eql at thetag}{\leavevmode\tagform@}
+\newcommand{\eql at thetag}{\leavevmode\eql at tag@boxedform}
\RequirePackage{keyval}
\def\eql at decide@select#1#2#3#4{%
\def\@tempa{#3}%
@@ -3207,7 +3506,7 @@
}%
}%
}
-\def\eql at setkeys#1#2{
+\def\eql at setkeys#1#2{%
\def\eql at tmp{\setkeys{eql@#1}}%
\expandafter\eql at tmp\expandafter{#2}%
}
@@ -3214,10 +3513,70 @@
\let\eql at nextopt\@empty
\def\eql at nextopt@process#1{%
\eql at setkeys{#1}\eql at nextopt
+ \let\eql at tagging@opt\eql at nextopt
\global\let\eql at nextopt\@empty
}
\newcommand{\eqnaddopt}[1]{%
\expandafter\def\expandafter\eql at nextopt\expandafter{\eql at nextopt,#1}}
+\def\eql at defaults@classic{%
+ \def\eql at colsepmax@val{.5\maxdimen}%
+ \def\eql at spread{\jot}%
+ \let\eql at display@height\@undefined
+ \let\eql at display@depth\@undefined
+ \eql at skip@mode at short@\tw@
+ \eql at skip@mode at cont@\@ne
+ \eql at skip@mode at par@\z@
+ \eql at skip@mode at top@\z@
+ \def\eql at skip@long at above{\abovedisplayskip}%
+ \def\eql at skip@long at below{\belowdisplayskip}%
+ \def\eql at skip@short at above{\abovedisplayshortskip}%
+ \def\eql at skip@short at below{\belowdisplayshortskip}%
+ \def\eql at skip@cont at above{\eql at skip@short at above}%
+ \def\eql at skip@cont at below{\eql at skip@short at below}%
+ \def\eql at skip@par at above{\eql at skip@long at above}%
+ \def\eql at skip@par at below{\eql at skip@long at below}%
+ \def\eql at skip@top at above{\eql at skip@long at above}%
+ \def\eql at skip@top at below{\eql at skip@long at below}%
+ \def\eql at skip@med at above{\abovedisplayskip/2}%
+ \def\eql at skip@med at below{\belowdisplayskip/2}%
+ \def\eql at skip@medtag at above{\z at skip}%
+ \def\eql at skip@medtag at below{\z at skip}%
+ \def\eql at skip@tag at above{\z at skip}%
+ \def\eql at skip@tag at below{\z at skip}%
+}
+\def\eql at defaults@eqnlines{%
+ \def\eql at colsepmax@val{2em}%
+ \def\eql at spread{0.2\normalbaselineskip}%
+ \def\eql at display@height{\ht\eql at strutbox@}%
+ \def\eql at display@depth{\dp\eql at strutbox@}%
+ \eql at skip@mode at short@\@ne
+ \eql at skip@mode at cont@\z@
+ \eql at skip@mode at par@\z@
+ \eql at skip@mode at top@\z@
+ \def\eql at skip@long at above{0.75\normalbaselineskip
+ \@plus0.25\normalbaselineskip\@minus0.4\normalbaselineskip}%
+ \let\eql at skip@long at below\eql at skip@long at above
+ \def\eql at skip@short at above{0.0\normalbaselineskip
+ \@plus0.2\normalbaselineskip}%
+ \def\eql at skip@short at below{0.0\normalbaselineskip
+ \@plus0.25\normalbaselineskip}%
+ \def\eql at skip@med at above{0.375\normalbaselineskip
+ \@plus0.225\normalbaselineskip\@minus0.2\normalbaselineskip}%
+ \let\eql at skip@med at below\eql at skip@med at above
+ \def\eql at skip@cont at above{\z at skip}%
+ \def\eql at skip@cont at below{\eql at skip@long at below}%
+ \def\eql at skip@par at above{\eql at skip@long at above}%
+ \def\eql at skip@par at below{\eql at skip@long at below}%
+ \def\eql at skip@top at above{\z at skip}%
+ \def\eql at skip@top at below{\z at skip}%
+ \def\eql at skip@tag at above{\z at skip}%
+ \def\eql at skip@tag at below{\z at skip}%
+ \def\eql at skip@partag at above{\z at skip}%
+ \def\eql at skip@partag at below{\z at skip}%
+ \def\eql at skip@medtag at above{\z at skip}%
+ \def\eql at skip@medtag at below{\z at skip}%
+}
+\eql at defaults@eqnlines
\eql at define@key{equationsbox}{gathered,gather,ga,lines,lined,ln,\string~}[]{%
\eql at mode@lined}
\eql at define@key{equationsbox}{aligned,align,al,columns,col,@}[]{%
@@ -3236,6 +3595,8 @@
\ifdefined\eql at single@native\let\eql at flushleft\eql at false\fi}
\eql at define@key{setup}{native}[true]{%
\eql at decide@bool{#3}{#2}{#1}\eql at single@native}
+\eql at define@key{setup}{scanequation}[true]{%
+ \eql at decide@bool{#3}{#2}{#1}\eql at single@doscan}
\eql at define@key{setup}{sqropt}[]{%
\def\eql at equations@sqr at opt{equation,#1}}
\eql at define@key{setup}{angopt}[]{%
@@ -3254,130 +3615,172 @@
\def\eql at display@height{#1}}
\eql at define@key\eql at keycat{displaydepth}[\dp\eql at strutbox@]{%
\def\eql at display@depth{#1}}
+\eql at define@key\eql at keycat{displayheight*}[]{%
+ \let\eql at display@height\@undefined}
+\eql at define@key\eql at keycat{displaydepth*}[]{%
+ \let\eql at display@depth\@undefined}
\eql at define@key{equations}{noskip}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\eql at display@atend{%
- \abovedisplayskip\z at skip
- \abovedisplayshortskip\z at skip
- \eql at abovedisplaytagskip@\z at skip}}%
- {\eql at display@atend{%
- \belowdisplayskip\z at skip
- \belowdisplayshortskip\z at skip
- \eql at belowdisplaytagskip@\z at skip}}}
-\eql at define@key{equations}{short}[]{%
+ {\def\eql at skip@force at above{5}}%
+ {\def\eql at skip@force at below{5}}}
+\eql at define@key{equations}{short}[above]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\eql at display@atend{%
- \abovedisplayskip\abovedisplayshortskip}}%
- {\eql at display@atend{%
- \belowdisplayskip\belowdisplayshortskip}}}
+ {\def\eql at skip@force at above{1}}%
+ {\def\eql at skip@force at below{1}}}
\eql at define@key{equations}{long}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\eql at display@atend{%
- \abovedisplayshortskip\abovedisplayskip}}%
- {\eql at display@atend{%
- \belowdisplayshortskip\belowdisplayskip}}}
+ {\def\eql at skip@force at above{0}}%
+ {\def\eql at skip@force at below{0}}}
\eql at define@key{equations}{medskip}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\eql at display@atend{%
- \abovedisplayskip\eql at abovedisplaymedskip@}}%
- {\eql at display@atend{%
- \belowdisplayskip\eql at belowdisplaymedskip@}}}
+ {\def\eql at skip@force at above{6}}%
+ {\def\eql at skip@force at below{6}}}
+\eql at define@key{equations}{par}[par]{%
+ \eql at decide@select{#3}{#2}{#1}{%
+ {{default,}{\let\eql at skip@force at leave\@undefined}},%
+ {{cont,hmode}{\let\eql at skip@force at leave\z@}},%
+ {{par,vmode}{\let\eql at skip@force at leave\@ne
+ \ifdefined\eql at skip@force at below\else
+ \def\eql at skip@force at below{3}%
+ \fi}},%
+ {{top}{\let\eql at skip@force at leave\tw@
+ \ifdefined\eql at skip@force at below\else
+ \def\eql at skip@force at below{4}
+ \fi}}}}
\eql at define@key{equations}{skip}{%
- \setlength\eql at abovedisplayskip@{#1}%
- \eql at belowdisplayskip@\eql at abovedisplayskip@%
- \eql at display@atend{%
- \abovedisplayskip\eql at abovedisplayskip@
- \abovedisplayshortskip\abovedisplayskip
- \eql at abovedisplaytagskip@\abovedisplayskip
- \belowdisplayskip\abovedisplayskip
- \belowdisplayshortskip\belowdisplayskip
- \eql at belowdisplaytagskip@\belowdisplayskip}}
+ \def\eql at skip@force at above{7}%
+ \def\eql at skip@custom at above{#1}%
+ \let\eql at skip@force at below\eql at skip@force at above
+ \let\eql at skip@custom at below\eql at skip@custom at above}
\eql at define@key{equations}{aboveskip}{%
- \setlength\eql at abovedisplayskip@{#1}%
- \eql at display@atend{%
- \abovedisplayskip\eql at abovedisplayskip@
- \abovedisplayshortskip\abovedisplayskip
- \eql at abovedisplaytagskip@\abovedisplayskip}}
+ \def\eql at skip@force at above{7}%
+ \def\eql at skip@custom at above{#1}}
\eql at define@key{equations}{belowskip}{%
- \setlength\eql at belowdisplayskip@{#1}%
- \eql at display@atend{%
- \belowdisplayskip\eql at belowdisplayskip@
- \belowdisplayshortskip\belowdisplayskip%
- \eql at belowdisplaytagskip@\belowdisplayskip}}
+ \def\eql at skip@force at below{7}%
+ \def\eql at skip@custom at below{#1}}
\eql at define@key{equations}{abovespace}{%
- \addtolength\eql at abovespace@{#1}}
+ \advance\eql at abovespace@\glueexpr#1\relax}
\eql at define@key{equations}{belowspace}{%
- \addtolength\eql at belowspace@{#1}}
+ \advance\eql at belowspace@\glueexpr#1\relax}
\eql at define@key{intertext}{skip}{%
- \setlength\abovedisplayskip{#1}\belowdisplayskip\abovedisplayskip}
+ \def\eql at skip@force at above{7}%
+ \def\eql at skip@custom at above{#1}%
+ \let\eql at skip@force at below\eql at skip@force at above
+ \let\eql at skip@custom at below\eql at skip@custom at above}
\eql at define@key{intertext}{aboveskip}{%
- \setlength\belowdisplayskip{#1}}
+ \def\eql at skip@force at below{7}%
+ \def\eql at skip@custom at below{#1}}
\eql at define@key{intertext}{belowskip}{%
- \setlength\abovedisplayskip{#1}}
+ \def\eql at skip@force at above{7}%
+ \def\eql at skip@custom at above{#1}}
\eql at define@key{intertext}{noskip}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\belowdisplayskip\z at skip\belowdisplayshortskip\z at skip}%
- {\abovedisplayskip\z at skip\abovedisplayshortskip\z at skip}}
+ {\def\eql at skip@force at below{5}}%
+ {\def\eql at skip@force at above{5}}}
\eql at define@key{intertext}{short}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\belowdisplayskip\belowdisplayshortskip}%
- {\abovedisplayskip\abovedisplayshortskip}}
+ {\def\eql at skip@force at below{1}}%
+ {\def\eql at skip@force at above{1}}}
\eql at define@key{intertext}{long}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\belowdisplayshortskip\belowdisplayskip}%
- {\abovedisplayshortskip\abovedisplayskip}}
+ {\def\eql at skip@force at below{0}}%
+ {\def\eql at skip@force at above{0}}}
\eql at define@key{intertext}{medskip}[]{%
\eql at decide@abovebelow{#3}{#2}{#1}%
- {\belowdisplayskip\eql at belowdisplaymedskip@}%
- {\abovedisplayskip\eql at abovedisplaymedskip@}}
-\eql at define@key{setup}{skip}{%
- \setlength\abovedisplayskip{#1}\belowdisplayskip\abovedisplayskip}
-\eql at define@key{setup}{aboveskip}{%
- \setlength\abovedisplayskip{#1}}
-\eql at define@key{setup}{belowskip}{%
- \setlength\belowdisplayskip{#1}}
+ {\def\eql at skip@force at below{6}}%
+ {\def\eql at skip@force at above{6}}}
+\eql at define@key{setup}{skip,longskip}{%
+ \abovedisplayskip\glueexpr#1\relax
+ \belowdisplayskip\abovedisplayskip
+ \def\eql at skip@long at above{#1}%
+ \let\eql at skip@long at below\eql at skip@long at above}
+\eql at define@key{setup}{aboveskip,abovelongskip}{%
+ \abovedisplayskip\glueexpr#1\relax
+ \def\eql at skip@long at above{#1}}
+\eql at define@key{setup}{belowskip,belowlongskip}{%
+ \belowdisplayskip\glueexpr#1\relax
+ \def\eql at skip@long at below{#1}}
\eql at define@key{setup}{aboveshortskip}{%
- \setlength\abovedisplayshortskip{#1}}
+ \abovedisplayshortskip\glueexpr#1\relax
+ \def\eql at skip@short at above{#1}}
\eql at define@key{setup}{belowshortskip}{%
- \setlength\belowdisplayshortskip{#1}}
+ \belowdisplayshortskip\glueexpr#1\relax
+ \def\eql at skip@short at below{#1}}
\eql at define@key{setup}{tagskip}{%
- \setlength\eql at abovedisplaytagskip@{#1}%
- \eql at belowdisplaytagskip@\eql at abovedisplaytagskip@}
+ \def\eql at skip@tag at above{#1}%
+ \let\eql at skip@tag at below\eql at skip@tag at above}
\eql at define@key{setup}{abovetagskip}{%
- \setlength\eql at abovedisplaytagskip@{#1}}
+ \def\eql at skip@tag at above{#1}}
\eql at define@key{setup}{belowtagskip}{%
- \setlength\eql at belowdisplaytagskip@{#1}}
+ \def\eql at skip@tag at below{#1}}
\eql at define@key{setup}{medskip}{%
- \setlength\eql at abovedisplaymedskip@{#1}%
- \eql at belowdisplaymedskip@\eql at abovedisplaymedskip@}
+ \def\eql at skip@med at above{#1}%
+ \let\eql at skip@med at below\eql at skip@med at above}
\eql at define@key{setup}{abovemedskip}{%
- \setlength\eql at abovedisplaymedskip@{#1}}
+ \def\eql at skip@med at above{#1}}
+\eql at define@key{setup}{belowmedskip}{%
+ \def\eql at skip@med at below{#1}}
+\eql at define@key{setup}{medtagskip}{%
+ \def\eql at skip@medtag at above{#1}%
+ \let\eql at skip@medtag at below\eql at skip@medtag at above}
+\eql at define@key{setup}{abovemedtagskip}{%
+ \def\eql at skip@medtag at above{#1}}
+\eql at define@key{setup}{belowmedtagskip}{%
+ \def\eql at skip@medtag at below{#1}}
\eql at define@key{setup}{abovetopskip}{%
- \setlength\eql at abovedisplaytopskip@{#1}}
+ \def\eql at skip@top at above{#1}}
+\eql at define@key{setup}{belowtopskip}{%
+ \def\eql at skip@top at below{#1}}
\eql at define@key{setup}{aboveparskip}{%
- \setlength\eql at abovedisplayparskip@{#1}}
+ \def\eql at skip@par at above{#1}}
+\eql at define@key{setup}{belowparskip}{%
+ \def\eql at skip@par at below{#1}}
+\eql at define@key{setup}{abovepartagskip}{%
+ \def\eql at skip@partag at above{#1}}
+\eql at define@key{setup}{belowpartagskip}{%
+ \def\eql at skip@partag at below{#1}}
\eql at define@key{setup}{abovecontskip}{%
- \setlength\eql at abovedisplaycontskip@{#1}}
-\eql at define@key{setup}{belowmedskip}{%
- \setlength\eql at belowdisplaymedskip@{#1}}
+ \def\eql at skip@cont at above{#1}}
+\eql at define@key{setup}{abovecontskip*}[]{%
+ \def\eql at skip@cont at above{\eql at spread-\eql at skip@long at below}}
+\eql at define@key{setup}{belowcontskip}{%
+ \def\eql at skip@cont at below{#1}}
\eql at define@key{setup}{shortmode}{%
\eql at decide@select{#3}{#2}{#1}{%
- {{off,never,no}{\eql at displayshortmode@\z@}},%
- {{above,neverbelow,notbelow,belowoff}{\eql at displayshortmode@\@ne}},%
- {{belowone,belowsingle}{\eql at displayshortmode@\tw@}},%
- {{belowall,always,on}{\eql at displayshortmode@\thr@@}}}}
+ {{off,never,no}{\eql at skip@mode at short@\z@}},%
+ {{above,neverbelow,notbelow,belowoff}{\eql at skip@mode at short@\@ne}},%
+ {{belowone,belowsingle}{\eql at skip@mode at short@\tw@}},%
+ {{belowall,always,on}{\eql at skip@mode at short@\thr@@}}}}
+\eql at define@key{setup}{belowcontmode}{%
+ \eql at decide@select{#3}{#2}{#1}{%
+ {{long}{\eql at skip@mode at cont@\z@}},%
+ {{short}{\eql at skip@mode at cont@\@ne}},%
+ {{cont}{\eql at skip@mode at cont@\tw@}}}}
+\eql at define@key{setup}{belowparmode}{%
+ \eql at decide@select{#3}{#2}{#1}{%
+ {{long}{\eql at skip@mode at par@\z@}},%
+ {{short}{\eql at skip@mode at par@\@ne}},%
+ {{cont}{\eql at skip@mode at par@\tw@}},%
+ {{par}{\eql at skip@mode at par@\thr@@}}}}
+\eql at define@key{setup}{belowtopmode}{%
+ \eql at decide@select{#3}{#2}{#1}{%
+ {{long}{\eql at skip@mode at top@\z@}},%
+ {{short}{\eql at skip@mode at top@\@ne}},%
+ {{cont}{\eql at skip@mode at top@\tw@}},%
+ {{par}{\eql at skip@mode at top@\thre@@}},%
+ {{top}{\eql at skip@mode at top@4\relax}}}}
\def\eql at keycat{equations,subequations}
\eql at define@key\eql at keycat{label}{\eql at blocklabel@set{#1}}
\eql at define@key\eql at keycat{tag}{\eql at blocktag@set{#1}}
\eql at define@key\eql at keycat{tag*}{\eql at blocktag@setstar{#1}}
\def\eql at keycat{equations,setup}
-\eql at define@key\eql at keycat{tagmargin}{\setlength\eql at tagmargin@{#1}}
+\eql at define@key\eql at keycat{tagmargin}{\eql at tagmargin@\glueexpr#1\relax}
\eql at define@key\eql at keycat{tagmargin*}{\settowidth\eql at tagmargin@{#1}}
-\eql at define@key\eql at keycat{mintagsep}{\setlength\eql at tagsepmin@{#1}}
-\eql at define@key\eql at keycat{mintagwidth}{\setlength\eql at tagwidthmin@{#1}}
+\eql at define@key\eql at keycat{mintagsep}{\eql at tagsepmin@\glueexpr#1\relax}
+\eql at define@key\eql at keycat{mintagwidth}{\eql at tagwidthmin@\glueexpr#1\relax}
\eql at define@key\eql at keycat{mintagwidth*}{\settowidth\eql at tagwidthmin@{#1}}
-\eql at define@key{setup}{taglayout}{\eql at tag@setmake{#1}}
-\eql at define@key{setup}{taglayout*}{\eql at tag@setmake@{#1}}
+\eql at define@key{setup}{taglayout}{\eql at tag@setbox{#1}}
+\eql at define@key{setup}{taglayout*}{\eql at tag@setbox@{#1}}
\eql at define@key{setup}{tagform}{\eql at tag@setform#1}
\eql at define@key{setup}{tagform*}{\eql at tag@setform@{#1}}
\eql at define@key{setup}{subeqtemplate}{\def\eql at subequations@template{#1}}
@@ -3405,13 +3808,13 @@
\eql at define@key\eql at keycat{center}[]{\let\eql at flushleft\eql at false}
\eql at define@key\eql at keycat{flushleft,left}[]{\let\eql at flushleft\eql at true}
\eql at define@key\eql at keycat{leftmargin}{%
- \setlength\eql at flushleftmargin@{#1}}
+ \eql at flushleftmargin@\glueexpr#1\relax}
\eql at define@key\eql at keycat{minleftmargin}{%
- \setlength\eql at flushleftmarginmin@{#1}}
+ \eql at flushleftmarginmin@\glueexpr#1\relax}
\eql at define@key\eql at keycat{maxleftmargin}{%
- \setlength\eql at flushleftmarginmax@{#1}}
+ \eql at flushleftmarginmax@\glueexpr#1\relax}
\eql at define@key\eql at keycat{maxleftmargin*}[]{%
- \setlength\eql at flushleftmarginmax@{.5\maxdimen}}
+ \eql at flushleftmarginmax@.5\maxdimen}
\def\eql at keycat{equations,setup}
\eql at define@key\eql at keycat{marginbadness}{\eql at marginbadness@#1\relax}
\eql at define@key\eql at keycat{maxbadness}{\eql at maxbadness@#1\relax}
@@ -3460,7 +3863,7 @@
\eql at define@key\eql at keycat{punctcol*}[]{\let\eql at punct@col\relax}
\let\eql at multi@linesfallback\eql at true
\let\eql at single@crerror\eql at true
-\let\eql at ampproof@active\eql at true
+\let\eql at ampproof@active\eql at false
\eql at define@key{setup}{linesfallback}[true]{%
\eql at decide@bool{#3}{#2}{#1}\eql at multi@linesfallback}
\eql at define@key{setup}{ampproof}[true]{%
@@ -3471,22 +3874,30 @@
\eql at decide@if{#3}{#2}{#1}%
{\let\eql at scan@body\eql at scan@body at rescan}%
{\let\eql at scan@body\eql at scan@body at dump}}
-\let\eql at provide@amsmath\eql at true
-\let\eql at provide@equation\eql at true
-\let\eql at provide@ang\eql at true
-\let\eql at amsmath@dofixends\eql at true
+\eql at define@key{setup}{defaults}{%
+ \eql at decide@select{#3}{#2}{#1}{%
+ {{classic}{\eql at defaults@classic}},%
+ {{eqnlines}{\eql at defaults@eqnlines}}}}
+\let\eql at provide@opt at equation\eql at true
+\let\eql at provide@opt at amsmathends\eql at true
+\let\eql at provide@opt at amsmath\eql at true
+\let\eql at provide@opt at ang\eql at true
+\let\eql at provide@opt at eqref\eql at true
\eql at define@key{setup}{equation}[true]{%
\eql at error@packageoption{#2}%
- \eql at decide@bool{#3}{#2}{#1}\eql at provide@equation}
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at equation}
+\eql at define@key{setup}{amsmathends}[true]{%
+ \eql at error@packageoption{#2}%
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at amsmathends}
\eql at define@key{setup}{amsmath}[true]{%
\eql at error@packageoption{#2}%
- \eql at decide@bool{#3}{#2}{#1}\eql at provide@amsmath}
-\eql at define@key{setup}{amsmathends}[true]{%
- \eql at error@packageoption{#2}%
- \eql at decide@bool{#3}{#2}{#1}\eql at amsmath@dofixends}
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at amsmath}
\eql at define@key{setup}{ang}[true]{%
\eql at error@packageoption{#2}%
- \eql at decide@bool{#3}{#2}{#1}\eql at provide@ang}
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at ang}
+\eql at define@key{setup}{eqref}[true]{%
+ \eql at error@packageoption{#2}%
+ \eql at decide@bool{#3}{#2}{#1}\eql at provide@opt at eqref}
\newenvironment{eql at gathered}
{\eqnaddopt{lines}\equationsbox}{\endequationsbox}
\newenvironment{eql at multlined}
@@ -3586,7 +3997,7 @@
\eql at provide@movecmd{#1}{eql@#1}%
}%
\eql at provide@movecmd{#1}{eql@#1}%
- \eql at amsmath@futurebefore{\eql at provide@undefinecmd{#1}}%
+ \eql at amsmath@before{\eql at provide@undefinecmd{#1}}%
\fi
}
\def\eql at amsmath@endfix#1#2{%
@@ -3633,8 +4044,8 @@
}%
\eql at provide@moveenv{#1}{eql@#1}%
\eql at provide@moveenv{#1*}{eql@#1*}%
- \eql at amsmath@futurebefore{\eql at provide@undefineenv{#1}}%
- \eql at amsmath@futurebefore{\eql at provide@undefineenv{#1*}}%
+ \eql at amsmath@before{\eql at provide@undefineenv{#1}}%
+ \eql at amsmath@before{\eql at provide@undefineenv{#1*}}%
\fi
}
\def\eql at provide@env at equation#1{%
@@ -3661,7 +4072,13 @@
}}%
\eql at provide@moveenv{equation}{eql at equation}%
\eql at provide@moveenv{equation*}{eql at equation*}%
- \eql at amsmath@futurebefore{\eql at provide@undefineenv{equation*}}%
+ \eql at amsmath@before{\eql at provide@undefineenv{equation*}}%
+ \ifdefined\eql at tagging@on
+ \AddToHook{begindocument/end}{%
+ \eql at provide@moveenv{equation}{eql at equation}%
+ \eql at provide@moveenv{equation*}{eql at equation*}%
+ }%
+ \fi
\fi
}
\def\eql at provide@env at multlined#1{%
@@ -3678,14 +4095,6 @@
\eql at provide@undefineenv{multlined}}}%
\fi
}
-\def\eql at provide@env at subequations@reinstall{%
- \global\let\subequations\eql at subequations
- \let\@tempa\UseHook
- \let\@tempb\UseHookWithArguments
- \def\UseHook{\let\UseHook\@tempa\let\UseHookWithArguments\@tempb%
- \expandafter\subequations\@gobble}%
- \def\UseHookWithArguments{\expandafter\UseHook\@gobble}%
-}
\def\eql at provide@env at subequations#1{%
\eql at provide@onlyonce{subequations}{#1}%
\ifdefined\eql at tmp
@@ -3695,7 +4104,6 @@
\eql at amsmath@after{%
\eql at provide@moveenv{amssubequations}{subequations}%
\eql at provide@moveenv{subequations}{eql at subequations}%
- \let\subequations\eql at provide@env at subequations@reinstall
}%
\AddToHook{package/hyperref/after}{%
\AddToHook{cmd/subequations/before}[hyperref]{}%
@@ -3707,17 +4115,18 @@
\stepcounter{equation}%
\protected at edef\theHparentequation{\theHequation}%
\addtocounter{equation}{-1}%
- }
+ }%
\AddToHook{cmd/amssubequations/after}%
{%
\def\theHequation{\theHparentequation\alph{equation}}%
\ignorespaces
- }
- }
+ }%
+ \AddToHook{begindocument/end}{%
+ \eql at provide@moveenv{subequations}{eql at subequations}%
+ }%
+ }%
\eql at provide@moveenv{subequations}{eql at subequations}%
- \AddToHook{cmd/subequations/after}{}%
- \let\subequations\eql at provide@env at subequations@reinstall
- \eql at amsmath@futurebefore{\eql at provide@undefineenv{subequations}}%
+ \eql at amsmath@before{\eql at provide@undefineenv{subequations}}%
\fi
}
\def\eql at provide@sqr{%
@@ -3727,6 +4136,12 @@
\let\[\eql at equations@sqr at open
\let\]\eql at equations@sqr at close
}%
+ \ifdefined\eql at tagging@on
+ \AddToHook{begindocument/end}{%
+ \let\[\eql at equations@sqr at open
+ \let\]\eql at equations@sqr at close
+ }%
+ \fi
}
\def\eql at provide@ang{%
\let\<\eql at equations@ang at open
@@ -3749,6 +4164,10 @@
\eql at define@key{provide}{allowdisplaybreaks}[]{%
\eql at provide@cmd{allowdisplaybreaks}{#1}}
\eql at define@key{provide}{numberwithin}[]{\eql at provide@cmd{numberwithin}{#1}}
+\eql at define@key{provide}{tagform}[]{%
+ \def\tagform@##1{\maketag@@@{\eql at tag@form{#1}}}}
+\eql at define@key{provide}{maketag}[]{%
+ \def\maketag@@@##1{\eql at tag@box{##1}}}
\newcommand{\eqnlinesprovide}[1]{%
\eql at setkeys{provide}{#1}}
\newcommand{\eqnlinesset}[1]{%
@@ -3759,14 +4178,14 @@
\def\eql at error@packageoption#1{%
\eql at error{may only use `#1' as a package option}%
}
-\ifcsname tagsleft at true\endcsname\else
+\ifdefined\tagsleft at true\else
\expandafter\newif\csname iftagsleft@\endcsname
\fi
-\ifcsname @fleqntrue\endcsname\else
+\ifdefined\@fleqntrue\else
\expandafter\newif\csname if at fleqn\endcsname
\fi
-\ifdefined\eql at provide@amsmath
- \let\eql at provide@equation\eql at true
+\ifdefined\eql at provide@opt at amsmath
+ \let\eql at provide@opt at equation\eql at true
\eql at amsmath@after{%
\iftagsleft@
\eqnlinesset{tagsleft}
@@ -3780,21 +4199,16 @@
\fi
}
\fi
-\ifdefined\eql at provide@equation
- \eqnlinesprovide{equation,sqr}
-\fi
-\ifdefined\eql at amsmath@dofixends
- \eql at amsmath@fixends
-\fi
-\ifdefined\eql at provide@amsmath
+\ifdefined\eql at provide@opt at equation\eqnlinesprovide{equation,sqr}\fi
+\ifdefined\eql at provide@opt at amsmathends\eql at amsmath@fixends\fi
+\ifdefined\eql at provide@opt at amsmath
\eqnlinesprovide{%
multline,gather,align,flalign,%
multlined,gathered,aligned,%
- subequations,eqref}
+ subequations}
\fi
-\ifdefined\eql at provide@ang
- \eqnlinesprovide{ang}
-\fi
+\ifdefined\eql at provide@opt at ang\eqnlinesprovide{ang}\fi
+\ifdefined\eql at provide@opt at eqref\eqnlinesprovide{eqref}\fi
\endinput
%%
%% End of file `eqnlines.sty'.
More information about the tex-live-commits
mailing list.