From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Mon, 2 Sep 2019 13:46:59 +0900
Subject: Initial commit

---
 macros/lamstex/inputs/alignat.tex | 103 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 103 insertions(+)
 create mode 100644 macros/lamstex/inputs/alignat.tex

(limited to 'macros/lamstex/inputs/alignat.tex')

diff --git a/macros/lamstex/inputs/alignat.tex b/macros/lamstex/inputs/alignat.tex
new file mode 100644
index 0000000000..4e23304c68
--- /dev/null
+++ b/macros/lamstex/inputs/alignat.tex
@@ -0,0 +1,103 @@
+\catcode`\@=11
+\def\alignedat#1{\null\,\vcenter\bgroup\doat@{#1}\vspace@\Let@
+ \ifinany@\else\openup\jot\fi\ialign\bgroup\span\preamble@@\crcr}
+\def\doat@#1{\toks@{\hfil\strut@$\m@th
+ \displaystyle{\the\hashtoks@}$&$\m@th\displaystyle
+ {{}\the\hashtoks@}$\hfil}%
+ \atcount@#1\relax\advance\atcount@\m@ne
+ \loop\ifnum\atcount@>\z@\toks@=\expandafter{\the\toks@&\hfil$\m@th
+ \displaystyle{\the\hashtoks@}$&$\m@th
+ \displaystyle{{}\the\hashtoks@}$\hfil}\advance\atcount@\m@ne\repeat
+ \edef\preamble@{\the\toks@}\edef\preamble@@{\preamble@}}
+\let\endalignedat\endaligned
+\def\alignat{\RIfMIfI@\DN@{\onlydmatherr@\alignat}\else
+ \DN@{\csname alignat \endcsname}\fi\else
+ \DN@{\onlydmatherr@\alignat}\fi\next@}
+\expandafter\def\csname alignat \endcsname#1#2\endalignat
+ {\inany@true\xat@false
+ \def\tag{\global\tag@true
+  \count@#1\relax\multiply\count@\tw@\advance\count@\m@ne
+  \gdef\tag@{&}%
+  \loop\ifnum\count@>\and@\xdef\tag@{&\omit\tag@}%
+  \advance\count@\m@ne\repeat
+  \tag@\relax}%
+ \vspace@\allowdisplaybreak@\displaybreak@\intertext@
+ \displ@y@\measuring@true\tag@CC\tag@C
+ \setbox\savealignat@\hbox{\noset@\unlabel@$\m@th\displaystyle\Let@
+  \attag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}%
+ \measuring@false
+ \Let@\attag@{#1}\tag@C\tag@CC
+ \tabskip\centering@\halign to\displaywidth
+  {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}}
+\Invalid@\endalignat
+\def\xalignat{\RIfMIfI@
+ \DN@{\onlydmatherr@\xalignat}\else
+ \DN@{\csname xalignat \endcsname}\fi\else
+ \DN@{\onlydmatherr@\xalignat}\fi\next@}
+\expandafter\def\csname xalignat \endcsname#1#2\endxalignat
+ {\inany@true\xat@true
+ \def\tag{\global\tag@true
+  \count@#1\relax\multiply\count@\tw@\advance\count@\m@ne
+  \gdef\tag@{&}%
+  \loop\ifnum\count@>\and@\xdef\tag@{&\omit\tag@}%
+  \advance\count@\m@ne\repeat
+  \tag@\relax}%
+ \vspace@\allowdisplaybreak@\displaybreak@\intertext@
+ \displ@y@\measuring@true\tag@CC\tag@C
+ \setbox\savealignat@\hbox{\noset@\unlabel@$\m@th\displaystyle\Let@
+  \attag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}%
+ \measuring@false\Let@\attag@{#1}\tag@C\tag@CC
+ \tabskip\centering@\halign to\displaywidth
+ {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}}
+\def\attag@#1{\let\Maketag@\maketag@\let\TAG@\Tag@
+ \let\Prepost@\prepost@\let\Reprepost@\reprepost@
+ \let\Tag@\relax\let\maketag@\relax
+ \let\prepost@\relax\let\reprepost@\relax
+ \ifmeasuring@
+  \def\llap@##1{\setboxz@h{##1}\hbox to\tw@\wdz@{}}%
+  \def\rlap@##1{\setboxz@h{##1}\hbox to\tw@\wdz@{}}%
+ \else\let\llap@\llap\let\rlap@\rlap\fi
+ \toks@{\hfil\strut@
+  $\m@th\displaystyle{\@lign\the\hashtoks@\prepost@}$%
+  \tabskip\z@skip\global\advance\and@\@ne&
+  $\m@th\displaystyle{{}\@lign\the\hashtoks@\prepost@}$\hfil
+  \ifxat@\tabskip\centering@\fi\global\advance\and@\@ne}%
+ \iftagsleft@
+  \toks@@{\tabskip\centering@&\Tag@\kern-\displaywidth
+   \rlap@{\@lign\reprepost@\maketag@\the\hashtoks@\maketag@}%
+   \global\advance\and@\@ne\tabskip\displaywidth}\else
+  \toks@@{\tabskip\centering@&\Tag@\llap@{\@lign\reprepost@\maketag@
+   \the\hashtoks@\maketag@}\global\advance\and@\@ne\tabskip\z@skip}\fi
+ \atcount@#1\relax\advance\atcount@\m@ne
+ \loop\ifnum\atcount@>\z@
+  \toks@\expandafter{\the\toks@&\hfil$\m@th\displaystyle{\@lign
+  \the\hashtoks@\prepost@}$\global\advance\and@\@ne
+  \tabskip\z@skip
+  &$\m@th\displaystyle{{}\@lign\the\hashtoks@\prepost@}$\hfil\ifxat@
+  \tabskip\centering@\fi\global\advance\and@\@ne}\advance\atcount@\m@ne
+ \repeat
+ \edef\preamble@{\the\toks@\the\toks@@}%
+ \edef\preamble@@{\preamble@}%
+ \let\maketag@\Maketag@\let\Tag@\TAG@
+ \let\prepost@\Prepost@\let\reprepost@\Reprepost@}
+\Invalid@\endxalignat
+\def\xxalignat{\RIfMIfI@
+ \DN@{\onlydmatherr@\xxalignat}\else\DN@{\csname xxalignat
+  \endcsname}\fi\else
+ \DN@{\onlydmatherr@\xxalignat}\fi\next@}
+\expandafter\def\csname xxalignat \endcsname#1#2\endxxalignat{\inany@true
+ \vspace@\allowdisplaybreak@\displaybreak@\intertext@
+ \displ@y\setbox\savealignat@\hbox{$\m@th\displaystyle\Let@
+ \xxattag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}%
+ \Let@\xxattag@{#1}\tabskip\z@skip\halign to\displaywidth
+ {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}}
+\def\xxattag@#1{\toks@{\tabskip\z@skip\hfil\strut@
+ $\m@th\displaystyle{\the\hashtoks@}$&%
+ $\m@th\displaystyle{{}\the\hashtoks@}$\hfil\tabskip\centering@&}%
+ \atcount@#1\relax\advance\atcount@\m@ne\loop\ifnum\atcount@>\z@
+ \toks@=\expandafter{\the\toks@&\hfil$\m@th\displaystyle{\the\hashtoks@}$%
+  \tabskip\z@skip&$\m@th\displaystyle{{}\the\hashtoks@}$\hfil
+  \tabskip\centering@}\advance\atcount@\m@ne\repeat
+ \edef\preamble@{\the\toks@\tabskip\z@skip}\edef\preamble@@{\preamble@}}
+\Invalid@\endxxalignat
+\catcode`\@=\active
-- 
cgit v1.2.3

