summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/mdwtools/mathenv.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/mdwtools/mathenv.sty
Initial commit
Diffstat (limited to 'macros/latex/contrib/mdwtools/mathenv.sty')
-rw-r--r--macros/latex/contrib/mdwtools/mathenv.sty449
1 files changed, 449 insertions, 0 deletions
diff --git a/macros/latex/contrib/mdwtools/mathenv.sty b/macros/latex/contrib/mdwtools/mathenv.sty
new file mode 100644
index 0000000000..469dadc017
--- /dev/null
+++ b/macros/latex/contrib/mdwtools/mathenv.sty
@@ -0,0 +1,449 @@
+%%
+%% This is file `mathenv.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% mdwtab.dtx (with options: `mathenv')
+%%
+%% IMPORTANT NOTICE
+%%
+%% mdwtab package -- another rewrite of the tabular environment, etc.
+%% Copyright (c) 1996 Mark Wooding
+%%
+%% This program is free software; you can redistribute it and/or modify
+%% it under the terms of the GNU General Public License as published by
+%% the Free Software Foundation; either version 2 of the License, or
+%% (at your option) any later version.
+%%
+%% This program is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with this program; if not, write to the Free Software
+%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{mathenv}
+ [1998/04/28 1.9 Various maths environments]
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+%%
+\newif\if@fleqn
+\newif\if@leqno
+\DeclareOption{fleqn}{\@fleqntrue}
+\DeclareOption{leqno}{\@leqnotrue}
+\ProcessOptions
+\RequirePackage{mdwtab}
+\newif\if@eqalast
+\newskip\eqaopenskip
+\newskip\eqacloseskip
+\newskip\eqacolskip
+\newskip\eqainskip
+\newskip\splitleft
+\newskip\splitright
+\AtBeginDocument{%
+ \eqacloseskip\@centering%
+ \eqacolskip1.5em\@plus\@m\p@
+ \eqainskip\z@%
+ \if@fleqn%
+ \eqaopenskip\mathindent%
+ \splitleft\mathindent\relax%
+ \splitright\mathindent\@minus\mathindent\relax%
+ \else%
+ \eqaopenskip\@centering%
+ \splitleft2.5em\@minus2.5em%
+ \splitright\splitleft%
+ \fi%
+ \relax%
+}
+\def\dsp@startouter{%
+ \let\dsp@end\dsp@endouter%
+ $$%
+}
+\def\dsp@endouter{$$}
+\def\dsp@startinner{%
+ \let\dsp@end\dsp@endinner%
+ \if@fleqn\kern-\mathindent\fi%
+ \if@leqno\vtop\else\vtop\fi\bgroup%
+}
+\def\dsp@endinner{\egroup}
+\def\dsp@start{%
+ \ifmmode%
+ \ifinner\mth@err@mdsp\fi%
+ \expandafter\dsp@startinner%
+ \else%
+ \ifhmode\ifinner\mth@err@hdsp\fi\fi%
+ \expandafter\dsp@startouter%
+ \fi%
+}
+\def\dsp@tabpause{%
+ \def\tab@startpause%
+ {\penalty\postdisplaypenalty\vskip\belowdisplayskip}%
+ \def\tab@endpause%
+ {\penalty\predisplaypenalty\vskip\abovedisplayskip}%
+}
+\let\eqastyle\displaystyle
+\def\eqnarray{%
+ \eqnarray@i\eqa@eqcount%
+}
+\@namedef{eqnarray*}{\eqnarray@i{}}
+\def\eqnarray@i#1{\@ifnextchar[{\eqnarray@ii{#1}}{\eqnarray@ii{#1}[rcl]}}
+\def\eqnarray@ii#1[#2]{%
+ \stepcounter{equation}%
+ \def\@currentlabel{\p@equation\theequation}%
+ \let\eqa@oldnumber\eqa@number%
+ \def\eqa@defnumber{#1}%
+ \global\let\eqa@number\eqa@defnumber%
+ \@eqalastfalse%
+ \m@th%
+ \colset{eqnarray}%
+ \tab@initread%
+ \def\tab@tabtext{&\tabskip\z@skip}%
+ \tab@preamble{\tabskip\z@skip}%
+ \tab@readpreamble{#2@{\tabskip\eqacloseskip}}%
+ \dsp@tabpause%
+ \col@sep.5\eqainskip%
+ \everycr{}%
+ \let\\\@eqncr%
+ \dsp@start%
+ \tabskip\eqaopenskip%
+ \halign to\displaywidth\expandafter\bgroup%
+ \the\tab@preamble%
+ &&\eqa@lastcol\hb@xt@\z@{\hss##}\tabskip\z@\cr%
+}
+\def\endeqnarray{%
+ \eqa@eqnum%
+ \egroup%
+ \dsp@end%
+ \global\let\eqa@number\eqa@oldnumber%
+ \global\@ignoretrue%
+ \global\advance\c@equation\m@ne%
+}
+\expandafter\let\csname endeqnarray*\endcsname\endeqnarray
+\colpush{eqnarray}
+\coldef r{\tabcoltype{\hfil$\eqastyle}{{}$}}
+\coldef c{\tabcoltype{\hfil$\eqastyle{}}{{}$\hfil}}
+\coldef l{\tabcoltype{$\eqastyle{}}{$\hfil}}
+\coldef x{\tabcoltype{\if@fleqn\else\hfil\fi$\eqastyle}{$\hfil}}
+\collet T [tabular]T
+\coldef L{\tabcoltype{\hb@xt@2em\bgroup$\eqastyle}{$\hss\egroup}}
+\coldef :{\tabspctype{\tabskip\eqacolskip}}
+\coldef q{\tabspctype{\quad}}
+\collet > [tabular]>
+\collet < [tabular]<
+\collet * [tabular]*
+\collet @ [tabular]@
+\colpop
+\def\@eqncr{\tab@cr\eqacr@i\interdisplaylinepenalty\@M}%
+\def\eqacr@i#1#2{%
+ \eqa@eqnum%
+ \noalign{\penalty#2\vskip\jot\vskip#1}%
+}
+\if@leqno
+ \def\eqa@eqpos#1{%
+ \hb@xt@.01\p@{}\rlap{\normalfont\normalcolor\hskip-\displaywidth#1}%
+ }
+\else
+ \def\eqa@eqpos#1{\normalfont\normalcolor#1}
+\fi
+\def\eqa@eqnum{%
+ \global\let\eqa@lastcol\@eqalasttrue%
+ \eqa@eqnum@i%
+}
+\def\eqa@eqnum@i{%
+ \relax%
+ \if@eqalast%
+ \expandafter\eqa@eqnum@ii%
+ \else%
+ \expandafter\eqa@eqnum@iii%
+ \fi%
+}
+\def\eqa@eqnum@ii{%
+ \eqa@eqpos\eqa@number%
+ \global\let\eqa@number\eqa@defnumber%
+ \global\let\eqa@lastcol\eqa@@lastcol%
+ \cr%
+}
+\def\eqa@eqnum@iii{&\eqa@eqnum@i}
+\def\eqa@@lastcol{\mth@err@number\setbox\z@}
+\let\eqa@lastcol\eqa@@lastcol
+\newcommand\eqnumber[1][\eqa@eqcount]{\gdef\eqa@number{#1}}
+\def\eqa@eqcount{(\theequation)\global\advance\c@equation\@ne}
+\def\nonumber{\global\let\eqa@number\@empty}
+\def\eqnalign{\@ifnextchar[\eqnalign@i{\eqnalign@i[rcl]}}
+\def\eqnalign@i[#1]{%
+ \@ifnextchar[{\eqnalign@ii{#1}}{\eqnalign@ii{#1}[c]}%
+}
+\def\eqnalign@ii#1[#2]{%
+ \let\\\eqn@cr%
+ \colset{eqnarray}%
+ \tab@initread%
+ \def\tab@tabtext{&\tabskip\z@skip}%
+ \tabskip\z@skip%
+ \col@sep.5\eqainskip%
+ \tab@readpreamble{#1}%
+ \everycr{}%
+ \if#2t\vtop\else%
+ \if#2b\vbox\else%
+ \vcenter%
+ \fi%
+ \fi%
+ \bgroup%
+ \halign\expandafter\bgroup\the\tab@preamble\cr%
+}
+\def\endeqnalign{%
+ \crcr%
+ \egroup%
+ \egroup%
+}
+\def\eqn@cr{\tab@cr\eqn@cr@i{}{}}
+\def\eqn@cr@i#1{\cr\noalign{\vskip\jot\vskip#1}\@gobble}
+\def\eqlines{\eqnarray[x]}
+\let\endeqlines\endeqnarray
+\expandafter\edef\csname eqlines*\endcsname{%
+ \expandafter\noexpand\csname eqnarray*\endcsname[x]%
+}
+\expandafter\let\csname endeqlines*\expandafter\endcsname
+ \csname endeqnarray*\endcsname
+\def\spliteqn{%
+ \let\eqa@oldnumber\eqa@number%
+ \global\let\eqa@number\eqa@eqcount%
+ \spliteqn@i%
+}
+\@namedef{spliteqn*}{%
+ \let\eqa@oldnumber\eqa@number%
+ \gdef\eqa@number{}%
+ \spliteqn@i%
+}
+\def\endspliteqn{%
+ \hfilneg\seq@lastcr%
+ \egroup%
+ \dsp@end%
+ \global\let\eqa@number\eqa@oldnumber%
+ \global\advance\c@equation\m@ne%
+}
+\expandafter\let\csname endspliteqn*\endcsname\endspliteqn
+\def\spliteqn@i{%
+ \stepcounter{equation}%
+ \def\@currentlabel{\p@equation\theequation}%
+ \if@leqno%
+ \global\let\seq@docr\seq@eqnocr%
+ \else%
+ \global\let\seq@docr\seq@cr%
+ \fi%
+ \global\let\seq@lastcr\seq@eqnocr%
+ \dsp@start%
+ \dsp@tabpause%
+ \def\\{\seq@docr}%
+ \seq@dosplit%
+ {\hb@xt@\displaywidth{%
+ \hskip\splitleft\hfil$\displaystyle##$%
+ \hfil\hskip\splitright}}%
+ {\hfilneg}%
+}
+\def\subsplit{%
+ \let\\\seq@cr%
+ \vcenter\bgroup%
+ \seq@dosplit{\hfil\qquad$##$\qquad\hfil}{\hfilneg\hskip-2em}%
+}
+\def\endsubsplit{%
+ \hfilneg\hskip-2em\cr%
+ \egroup\egroup%
+}
+\def\seq@dosplit#1#2{%
+ \halign\bgroup%
+ #1&&\mth@err@number\setbox\z@\hbox{##}\cr%
+ #2\relax%
+}
+\def\seq@eqnocr{%
+ &\omit%
+ \hb@xt@\z@{\hss\eqa@eqpos\eqa@number}%
+ \global\let\seq@docr\seq@cr%
+ \global\let\seq@lastcr\seq@cr%
+ \seq@cr%
+}
+\def\seq@cr{\tab@cr\seq@cr@i\interdisplaylinepenalty\@M}
+\def\seq@cr@i#1#2{\cr\noalign{\penalty#2\vskip\jot\vskip#1}}
+\def\genmatrix#1#2#3#4#5{%
+ \let\mat@style#1%
+ \ifx#2\scriptstyle%
+ \let\mat@font\scriptfont%
+ \else\ifx#2\scriptscriptstyle%
+ \let\mat@font\scriptscriptfont%
+ \else%
+ \let\mat@font\textfont%
+ \fi\fi%
+ \ifx\mat@style\scriptstyle%
+ \let\mat@textsize\scriptsize%
+ \else\ifx\mat@style\scriptscriptstyle%
+ \let\mat@textsize\scriptscriptsize%
+ \else%
+ \let\mat@textsize\relax%
+ \fi\fi%
+ \def\mat@left{\bgroup\mat@style\left#4#3\vcenter\bgroup}%
+ \toks@{\egroup#3\right#5\egroup}%
+ \@tempswatrue%
+ \ifx\mat@style\displaystyle\else\ifx\mat@style\textstyle\else%
+ \@tempswafalse%
+ \setbox\z@\hbox\bgroup$%
+ \toks@\expandafter{\the\toks@$\m@th\egroup\raise.75\p@\box\z@}%
+ \fi\fi%
+ \if@tempswa\ifmmode\else%
+ $\m@th%
+ \toks@\expandafter{\the\toks@$}%
+ \fi\fi%
+ \edef\mat@right{\the\toks@}%
+ \@ifnextchar[\genmatrix@i{\genmatrix@i[[c]}%
+}
+\def\genmatrix@i[#1]{%
+ \colset{matrix}%
+ \tab@initread%
+ \setbox\z@\hbox{$\mat@style\mskip12mu$}%
+ \edef\tab@tabtext{&\kern\the\wd\z@}%
+ \tab@readpreamble{#1}%
+ \if1\ifx\mat@style\scriptstyle1\else%
+ \ifx\mat@style\scriptscriptstyle1\else0\fi\fi%
+ \baselineskip\fontdimen10\mat@font\tw@%
+ \advance\baselineskip\fontdimen12\mat@font\tw@%
+ \lineskip\thr@@\fontdimen8\mat@font\thr@@%
+ \else%
+ \baselineskip\fontdimen8\mat@font\tw@%
+ \advance\baselineskip\fontdimen11\mat@font\tw@%
+ \lineskip7\fontdimen8\mat@font\thr@@%
+ \fi%
+ \lineskiplimit\lineskip%
+ \let\\\mat@cr%
+ \tabskip\z@skip%
+ \col@sep\z@%
+ \mat@left%
+ \halign\expandafter\bgroup\the\tab@preamble\tabskip\z@skip\cr%
+ \ifx\mat@font\textfont%
+ \omit$\mat@style\mathstrut$\cr\noalign{\kern-\baselineskip}%
+ \fi%
+}
+\def\endgenmatrix{%
+ \crcr%
+ \ifx\mat@font\textfont%
+ \omit$\mat@style\mathstrut$\cr\noalign{\kern-\baselineskip}%
+ \fi%
+ \egroup%
+ \mat@right%
+}
+\def\mat@cr{\tab@cr\mat@cr@i{}{}}
+\def\mat@cr@i#1{\cr\noalign{\vskip#1}\@gobble}
+\def\newmatrix#1#2{%
+ \@namedef{#1}{\genmatrix#2}%
+ \expandafter\let\csname end#1\endcsname\endgenmatrix%
+}
+\newmatrix{matrix}{{\textstyle}{\textstyle}{\,}{.}{.}}
+\newmatrix{pmatrix}{{\textstyle}{\textstyle}{\,}{(}{)}}
+\newmatrix{dmatrix}{{\textstyle}{\textstyle}{\,}}
+\newmatrix{smatrix}{{\scriptstyle}{\scriptstyle}{}{.}{.}}
+\newmatrix{spmatrix}{{\scriptstyle}{\scriptstyle}{}{(}{)}}
+\newmatrix{sdmatrix}{{\scriptstyle}{\scriptstyle}{}}
+\newmatrix{smatrix*}{{\scriptstyle}{\textstyle}{}{.}{.}}
+\newmatrix{spmatrix*}{{\scriptstyle}{\textstyle}{}{(}{)}}
+\newmatrix{sdmatrix*}{{\scriptstyle}{\textstyle}{}}
+\def\script{%
+ \let\mat@style\scriptstyle%
+ \def\mat@left{\vcenter\bgroup}%
+ \def\mat@right{\egroup}%
+ \let\mat@font\scriptfont%
+ \let\mat@textsize\scriptsize%
+ \@ifnextchar[\genmatrix@i{\genmatrix@i[c]}%
+}
+\let\endscript\endgenmatrix
+\colpush{matrix}
+\coldef l{\tabcoltype{\kern\z@$\mat@style}{\m@th$\hfil}}
+\coldef c{\tabcoltype{\hfil$\mat@style}{\m@th$\hfil}}
+\coldef r{\tabcoltype{\hfil$\mat@style}{\m@th$}}
+\coldef T#1{\tab@aligncol{#1}{\begingroup\mat@textsize}{\endgroup}}
+\coldef {[}{%
+ \@firstoftwo{%
+ \ifnum\tab@columns=\z@%
+ \def\@tempa##1\q@delim{%
+ \tab@mkpreamble##1[##1\q@delim%
+ }%
+ \expandafter\@tempa%
+ \else%
+ \tab@setstate\tab@prestate%
+ \tab@append\tab@preamble{&}%
+ \expandafter\tab@mkpreamble%
+ \fi%
+ }%
+}
+\colpop
+\def\mdw@dots#1{\ensuremath{\mathpalette\mdw@dots@i{#1}}}
+\def\mdw@dots@i#1#2{%
+ \setbox\z@\hbox{$#1\mskip1.8mu$}%
+ \dimen@\wd\z@%
+ \setbox\z@\hbox{$#1.$}%
+ #2%
+}
+\def\vdots{%
+ \mdw@dots{\vbox{%
+ \baselineskip4\dimen@%
+ \lineskiplimit\z@%
+ \kern6\dimen@%
+ \copy\z@\copy\z@\box\z@%
+ }}%
+}
+\def\ddots{%
+ \mdw@dots{\mathinner{%
+ \mkern1mu%
+ \raise7\dimen@\vbox{\kern7\dimen@\copy\z@}%
+ \mkern2mu%
+ \raise4\dimen@\copy\z@%
+ \mkern2mu%
+ \raise\dimen@\box\z@%
+ \mkern1mu%
+ }}%
+}
+\def\cases{\left\{\,\array{@{}lTl@{}}}
+\def\endcases{\endarray\,\right.}
+\def\smcases{\left\{\smarray{@{}lTl@{}}}
+\def\endsmcases{\endsmarray\,\right.}
+\def\mth@error{\PackageError{mathenv}}
+\def\mth@err@number{%
+ \mth@error{Too many `&' characters found}{%
+ You've put too many `&' characters in an alignment^^J%
+ environment (like `eqnarray' or `spliteqn') and wandered^^J%
+ into trouble. I've gobbled the contents of that column^^J%
+ and hopefully I can recover fairly easily.%
+ }%
+}
+\def\mth@err@mdsp{%
+ \mth@error{Can't do displays in nondisplay maths mode}{%
+ You're trying to start a display environment, but you're^^J%
+ in nondisplay maths mode. The display will appear but^^J%
+ don't blame me when it looks horrible.%
+ }%
+}
+\def\mth@err@hdsp{%
+ \mth@error{Can't do displays in LR mode}{%
+ You're trying to start a display environment, but you're^^J%
+ in LR (restricted horizontal) mode. Everything will go^^J%
+ totally wrong, so your best bet is to type `X', fix the^^J%
+ mistake and start again.%
+ }%
+}
+\endinput
+%%
+%% End of file `mathenv.sty'.