%PDF- %PDF-
| Direktori : /proc/self/root/usr/share/texlive/texmf-dist/tex/latex/mdwtools/ |
| Current File : //proc/self/root/usr/share/texlive/texmf-dist/tex/latex/mdwtools/mathenv.sty |
%%
%% 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'.