diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/breqn/breqn.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/breqn/breqn.sty | 2060 |
1 files changed, 0 insertions, 2060 deletions
diff --git a/Master/texmf-dist/tex/latex/breqn/breqn.sty b/Master/texmf-dist/tex/latex/breqn/breqn.sty deleted file mode 100644 index 29d5392b35c..00000000000 --- a/Master/texmf-dist/tex/latex/breqn/breqn.sty +++ /dev/null @@ -1,2060 +0,0 @@ -% This is a slightly patched copy of version 0.93 [mjd,2002-05-29] -\NeedsTeXFormat{LaTeX2e}[1994/12/01] -\ProvidesPackage{breqn}[2002/05/29 v0.94 beta] -\@ifl@t@r\fmtversion{1995/06/01}{}{% - \@namedef{newmuskip}{\alloc@3\muskip\muskipdef\@cclvi}% - \@namedef{newtoks}{\alloc@5\toks\toksdef\@cclvi}% - \@namedef{newif}#1{\count@\escapechar \escapechar\m@ne - \let#1\iffalse \@if#1\iftrue \@if#1\iffalse \escapechar\count@}% -} -\edef\breqnpopcats{% - \catcode\number`\"=\number\catcode`\" - \relax -} -\catcode`\^=7 \catcode`\_=8 \catcode`\"=12 \relax -\DeclareOption{debug}{} -\DeclareOption{mathstyleoff}{% - \PassOptionsToPackage{mathstyleoff}{flexisym}% -} -\ProcessOptions\relax -\@ifpackageloaded{flexisym}{}{% - \RequirePackage[cmbase]{flexisym}[1997/01/01] - % Reiterate this here, for now, until I have a chance to better - % sort things out. [mjd,2002-05-29] - \edef\breqnpopcats{\breqnpopcats - \catcode\number`\^=\number\catcode`\^ - \catcode\number`\_=\number\catcode`\_ - }% - \catcode`\^=7 \catcode`\_=8 \catcode`\"=12 \relax -} -\RequirePackage{keyval}\relax -\@ifundefined{options}{% -\newcommand{\options}[2]{% - \expandafter\options@a\csname opt@#1.sty\endcsname{#2}% - \setkeys{#1}{#2}% -} -\def\options@a#1#2{% - \edef\@tempa{\options@b#2,\@empty\@nil}% - \ifx#1\relax \let#1\@empty\fi - \xdef#1{#1\ifx#1\@empty\@xp\@gobble\@tempa\@empty\else\@tempa \fi}% -} -\def\options@b#1,#2#3\@nil{% - \options@c#1 \@nil - \ifx#2\@empty \else\options@b#2#3\@nil\fi -} -\def\options@c#1 #2\@nil{\options@d#1=\@nil} -\def\options@d#1=#2\@nil{\ifx\@empty #1\@empty\else,\fi#1} -}{}% end @ifundefined test -\let\@nx\noexpand -\let\@xp\expandafter -\@ifundefined{@emptytoks}{\newtoks\@emptytoks}{} -\chardef\f@ur=4 -\newcount\inf@bad \inf@bad=1000000 -\newcount\maxint \maxint=2147483647 -\let\int@a=\@tempcnta -\let\int@b=\@tempcntb -\let\int@c=\count@ -\let\dim@a\@tempdima -\let\dim@b\@tempdimb -\let\dim@c\@tempdimc -\let\dim@d\dimen@ -\let\dim@e\dimen@ii -\let\dim@A\dimen@i -\let\skip@a\@tempskipa -\let\skip@b\@tempskipb -\let\skip@c\skip@ -\let\toks@a\@temptokena -\let\toks@b\toks@ -\toksdef\toks@c=2 -\toksdef\toks@d=4 -\toksdef\toks@e=6 -\toksdef\toks@f=8 -\def\abs@num#1{\ifnum#1<\z@-\fi#1} -\def\@ifnext#1#2#3{% - \let\@tempd= #1\def\@tempa{#2}\def\@tempb{#3}% - \futurelet\@tempc\@ifnexta -} -\def\@ifnexta{\ifx\@tempc\@tempd \let\@tempb\@tempa \fi \@tempb} -\def\@ifstar#1#2{% - \let\@tempd*\def\@tempa*{#1}\def\@tempb{#2}% - \futurelet\@tempc\@ifnexta -} -\def\@optarg#1#2{\@ifnext[{#1}{#1[#2]}} -\def\@True{00} -\def\@False{01} -\def\@Not#1{0\ifcase#11 \or\@xp 1\else \@xp 0\fi} -\def\@And#1#2{0\ifcase#1#2 \@xp 0\else \@xp 1\fi} -\def\@Or#1#2{0\ifnum#1#2<101 \@xp 0\else \@xp 1\fi} -\def\freeze@glue#1{#11#1\relax} -\def\z@rule{\vrule\@width\z@}% no \relax ! use with care -\def\keep@glue{\z@rule\relax} -% usage: \message{H\replicate{5}{i h}ow de doo dee!} -\begingroup \catcode`\&=11 -\gdef\replicate#1{% - \csname &\expandafter\replicate@a\romannumeral\number\number#1 000q\endcsname -} -\endgroup -\long\def\replicate@a#1#2\endcsname#3{#1\endcsname{#3}#2} -\begingroup \catcode`\&=11 -\long\gdef\&m#1#2{#1\csname \endcsname{#1}} -\endgroup -\@xp\let\csname\string &q\endcsname\@gobble -\g@addto@macro\mathchars@reset{% - \let\@symRel\@secondoftwo \let\@symBin\@secondoftwo - \let\@symDeL\@secondoftwo \let\@symDeR\@secondoftwo - \let\@symDeB\@secondoftwo -} -\def\eq@cons#1#2{% - \begingroup \let\@elt\relax \xdef#1{\@elt{#2}#1}\endgroup -} -\providecommand{\@saveprimitive}[2]{% - \begingroup - \edef\@tempa{\string#1}\edef\@tempb{\meaning#1}% - \ifx\@tempa\@tempb \global\let#2#1% - \else - \edef\@tempb{\meaning#2}% - \ifx\@tempa\@tempb - \else \@saveprimitive@a#1#2% - \fi - \fi - \endgroup -} -\def\@saveprimitive@a#1#2{% - \begingroup - \def\@tempb##1#1##2{\edef\@tempb{##2}\@car{}}% - \@tempb\nullfont{select font nullfont}% - \topmark{\string\topmark:}% - \firstmark{\string\firstmark:}% - \botmark{\string\botmark:}% - \splitfirstmark{\string\splitfirstmark:}% - \splitbotmark{\string\splitbotmark:}% - #1{\string#1}% - \edef\@tempa{\expandafter\strip@prefix\meaning\@tempb}% - \edef\@tempb{\meaning#1}% - \ifx\@tempa\@tempb \global\let#2#1% - \else - \PackageError{breqn}% - {Unable to properly define \string#2; primitive - \noexpand#1no longer primitive}\@eha - \fi - \fi - \endgroup -} -\begingroup \catcode`\$=3 % just to make sure - \global\let\@@math=$ \gdef\@@display{$$} -\endgroup -\let\@@endmath=\@@math -\let\@@enddisplay=\@@display -\@saveprimitive\vadjust\@@vadjust -\@saveprimitive\insert\@@insert -\@saveprimitive\mark\@@mark -\let\debug=\begingroup -\let\gubed=\endgroup -\def\debugmsg{\message{|= \iffalse}\fi - \@xp\@gobble\string -} -\def\debugwr#1{\immediate\write\sixt@@n{|= #1}} -\def\debug@box#1{% - \batchmode{\showboxbreadth\maxdimen\showboxdepth99\showbox#1}% - \errorstopmode -} -\def\eqinfo{% - \debug@box\EQ@copy - \wlog{||= EQ@copy: \the\wd\EQ@copy\space x - \the\ht\EQ@copy+\the\dp\EQ@copy - }% -} -\def\debug@para{% - \debugwr{\hsize\the\hsize, \parfillskip\the\parfillskip}% - \debugmsg{\leftskip\the\leftskip, \rightskip\the\rightskip}% - \debugmsg{\linepenalty\the\linepenalty, \adjdemerits\the\adjdemerits}% - \debugmsg{\pretolerance\the\pretolerance, \tolerance\the\tolerance, - \parindent\the\parindent}% -} -\@ifpackagewith{breqn}{debug}{}{% - \let\debug\iffalse \let\gubed\fi - \let\debugmsg\@gobble \let\debug@lines\relax \let\debug@para\relax - \let\debugwr\@gobble - \let\debug@box\@gobble \let\debug@push\@gobbletwo -} -\@ifundefined{listwidth}{\newdimen\listwidth}{} -\listwidth=\z@ -\def\do#1#2{\begingroup - \def\?##1#1##2##3##4##5\@nil{\endgroup##2##3\afterassignment\do##4}% - \?C\newcount#2#2D\newdimen#2#2S\newskip#2#2U\newmuskip#2#2% - K\newtoks#2#2F\newif#2{\z@\z@}T\newif#2{\let#2\iftrue}% - B\newbox#2{\z@\z@}d{\newcommand#2{}}{}{\def#2}% - Q\relax\@gobbletwo\relax \@nil}% -\do % def, Count, Dimen, Skip, mUskip, toKs, Box, False, True -d\eqfontsize{} % Inherit from context -d\eqcolor{black} % Default to black -D\eqnumsep=9pt % Min space between equ number and body -D\eqmargin=8pt % For `multline' gap emulation -d\eqindent{C}% % C or I, centered or indented -d\eqnumside{R}% % R or L, right or left -d\eqnumplace{M}% % M or T or B, middle top or bottom -d\eqnumfont{\upshape}% % Upright even when surrounding text is slanted -d\eqnumform#1{(#1\@@italiccorr)} % Add parens -d\eqnumsize{} % Allow numbers to have different typesize ... -d\eqnumcolor{} % ... or color than eq body e.g. \color{blue} -S\eqlinespacing=14pt plus2pt % Base-to-base space between lines -S\eqlineskip=3pt plus2pt % Min space if eqlinespacing too small -D\eqlineskiplimit=2pt % Threshold for switching to eqlineskip -U\eqbinoffset=15mu minus-3mu % Offset from mathrel alignment pt for mathbins -U\eqdelimoffset=2mu % Additional offset for break inside delims -D\eqindentstep=8pt % Indent used when LHS wd is n/a or too large -d\eqcompactzone{5em} % Force compact unless RHS max exceeds this -K\eqstyle={} % Customization hook -C\eqbreakdepth=2 % Allow breaks within delimiters to this depth -C\eqlinepenalty=199 % No page breaks between equation lines -C\eqinterlinepenalty=10000 % No page breaks between equation lines -C\intereqpenalty=\@M % Pagebreak penalty between equations -S\intereqskip=3pt plus2pt % Additional vert space between equations -C\prerelpenalty=-\@M % Linebreak penalty before mathrel symbols -C\prebinoppenalty=888 % Linebreak penalty before mathbins -U\Dmedmuskip=4mu minus 3mu % medmuskip in displays -U\Dthickmuskip=5mu minus 2mu % thickmuskip in displays -Q\relax % End of assignments -\do % def, Dimen, Skip, mUskip, toKs, Box, False, True -d\eq@number{} % Internal variable -S\eqleftskip=\@centering % Space on the left -S\eqrightskip=\@centering % Space on the right -S\eq@vspan=\z@skip % Glue used to vcenter the eq number -U\eq@binoffset=\eqbinoffset % Roughly, \eqbinoffset + \eqdelimoffset -B\EQ@box % Storage for equation body -B\EQ@copy % For eq body sans vadjust/insert/mark material -B\EQ@numbox % For equation number -%%B\EQ@vimbox % Vadjust, insert, or mark material -%%B\EQ@vimcopy % Spare copy of same -%%B\eq@impinging % Temporary box for measuring number placement -T\if@eq@number % Number present or not? -C\eq@lines=\z@ % Internal counter, actual number of lines -C\eq@curline=\z@ % Loop counter -C\eq@badness=\z@ % Used in testing for overfull lines -C\EQ@vims=\z@ % For bookkeeping -Q\relax -\newdimen\eq@dp \newdimen\eq@sidespace -\newdimen\eq@wdL \newdimen\grp@wdL \newdimen\grp@bodywidth -\newdimen\eq@bodywidth \newdimen\eq@wdRmax \newdimen\eq@firstht -\newdimen\eq@indentstep \newdimen\eq@linewidth \newdimen\eq@freewidth -\newdimen\grp@linewidth -\def\do#1#2{\if Q#1\relax \else\@xp\do\fi}\do -D\eq@bodywidth % Total width for framing -D\eq@wdL % Width of the left-hand-side -D\eq@sidespace % Min leftover space for centering -D\grp@wdL % Max width of LHS's in a group -D\grp@bodywidth % Max width of all equations in a group -D\eq@firstht % Height of first line -D\eq@dp % Depth of last line -D\eq@indentstep % Indent amount when LHS is not present -D\eq@linewidth % Width actually used for display -D\grp@linewidth % Max eq@linewidth over a group -D\eq@freewidth % eq@linewidth - space for number -Q\relax -\eq@indentstep=\maxdimen -\eq@sidespace=\maxdimen -\let\given@sidespace\@empty -\def\eq@overrun{0pt} -\@ifpackagewith{amsmath}{leqno}{% - \@ifpackagewith{amsmath}{reqno}{}{\def\eqnumside{L}}% -}{% - \def\@tempa#1,leqno.clo,#2#3\@nil{% - \ifx @#2\relax\else \def\eqnumside{L}\fi - }% - \@xp\@tempa\@filelist,leqno.clo,@\@nil - \if L\eqnumside - \else - \@ifundefined{iftagsleft@}{}{% - \edef\eqnumside{% - \if TT\csname fi\endcsname\csname iftagsleft@\endcsname - L\else R\fi - }% - } - \fi -} -\@ifpackagewith{amsmath}{fleqn}{% - \def\eqindent{I}% -}{% - \def\@tempa#1,fleqn.clo,#2#3\@nil{% - \ifx @#2\relax\else \def\eqindent{I}\fi - }% - \@xp\@tempa\@filelist,fleqn.clo,@\@nil - \if I\eqindent - \else - \@ifundefined{if@fleqn}{}{% - \edef\eqindent{% - \if TT\csname fi\endcsname\csname if@fleqn\endcsname - I\else C\fi - }% - }% - \fi -} -\if I\eqindent - \@ifundefined{mathindent}{% - \newdimen\mathindent - }{% - \@ifundefined{@mathmargin}{}{% - \mathindent\@mathmargin - }% - } -\fi -\let\EQ@hasLHS=\@False -\let\EQ@QED=\@empty -\def\mark@lhs#1{% - \ifnum\lr@level<\@ne - \let\mark@lhs\relax - \global\let\EQ@hasLHS=\@True - \global\let\EQ@prebin@space\EQ@prebin@space@a - \mark@lhs@a - \penalty9999 % instead of normal \rel@break - % else no penalty = forbid break - \fi -} -\def\mark@lhs@a{% - \mskip\thickmuskip \@@vadjust{\penalty\tw@}\penalty-\@Mi\@@vadjust{}% -} -\newcommand\hiderel[1]{\mathrel{\advance\lr@level\@ne#1}} -\let\m@@Bin\m@Bin -\let\m@@Rel\m@Rel -\let\EQ@prebin@space\relax -\def\EQ@prebin@space@a{\mskip-\eq@binoffset \keep@glue \mskip\eq@binoffset} -\def\bin@break{\ifnum\lastpenalty=\z@\penalty\prebinoppenalty\fi - \EQ@prebin@space} -\def\rel@break{% - \ifnum\abs@num\lastpenalty <\abs@num\prerelpenalty - \penalty\prerelpenalty - \fi -} -\def\d@@Bin{\bin@break \m@@Bin} -\def\d@@Rel{\mark@lhs \rel@break \m@@Rel} -\let\m@@symRel\@symRel \def\d@@symRel{\mark@lhs \rel@break \m@@symRel} -\let\m@@symBin\@symBin \def\d@@symBin{\bin@break \m@@symBin} -\let\m@@symDel\@symDel -\let\m@@symDeR\@symDeR -\let\m@@symDeB\@symDeB -\let\m@@symDeA\@symDeA -\global\everydisplay\expandafter{\the\everydisplay \display@setup} -\def\display@setup{% - \medmuskip\Dmedmuskip \thickmuskip\Dthickmuskip - \let\m@Bin\d@@Bin \let\m@Rel\d@@Rel - \let\@symRel\d@@symRel \let\@symBin\d@@symBin - \let\m@DeL\d@@DeL \let\m@DeR\d@@DeR \let\m@DeB\d@@DeB - \let\m@DeA\d@@DeA - \let\@symDeL\d@@symDeL \let\@symDeR\d@@symDeR - \let\@symDeB\d@@symDeB \let\@symDeA\d@@symDeA - \let\left\eq@left \let\right\eq@right \global\lr@level\z@ - \everyhbox{\everyhbox\@emptytoks - \let\display@setup\relax \textmath@setup \let\textmath@setup\relax - }% - \everyvbox{\everyvbox\@emptytoks - \let\display@setup\relax \textmath@setup \let\textmath@setup\relax - }% -} -\def\textmath@setup{% - \let\m@Bin\m@@Bin \let\m@Rel\m@@Rel - \let\@symRel\m@@symRel \let\@symBin\m@@symBin - \let\m@DeL\m@@DeL \let\m@DeR\m@@DeR \let\m@DeB\m@@DeB - \let\m@DeA\m@@DeA - \let\@symDeL\m@@symDeL \let\@symDeR\m@@symDeR - \let\@symDeB\m@@symDeB \let\@symDeA\m@@symDeA - \let\left\@@left \let\right\@@right -} -\@ifundefined{@displaytrue}{% - \@xp\newif\csname if@display\endcsname - \everydisplay\@xp{\the\everydisplay \@displaytrue} -}{} -% \begin{dmath}[label={xyz}] -\define@key{breqn}{label}{\def\next@label{\label{#1}}} -\global\let\next@label\@empty -% \begin{dmath}[number={\nref{foo}\textprime}] -\define@key{breqn}{number}{\def\eq@number{#1}% - \let\@currentlabel\eq@number -} -% \begin{dmath}[shiftnumber] -\define@key{breqn}{shiftnumber}{\let\eq@shiftnumber\@True} -% \begin{dmath}[holdnumber] -\define@key{breqn}{holdnumber}{\let\eq@holdnumber\@True} -% \begin{dmath}[density={.5}] -\define@key{breqn}{density}{\def\eq@density@factor{#1}} -% \begin{dmath}[indentstep={1em}] -\define@key{breqn}{indentstep}{\eqindentstep#1\relax} -% \begin{dmath}[compact] -\define@key{breqn}{compact}[-99]{\prerelpenalty=#1\relax} -% \begin{dmath}[layout={S}]% -\define@key{breqn}{layout}[?]{% - \edef\eq@layout{\@car#1?\@nil}% -} -% \begin{dmath}[spread={1pt}] -\define@key{breqn}{spread}{% - \advance\eqlinespacing#1% - \advance\eqlineskip#1\eqlineskiplimit\eqlineskip -} -\define@key{breqn}{sidespace}{% - \dimen@#1\relax % error checking - \def\given@sidespace{#1}% -} -% \begin{dmath}[style={\small}] -\define@key{breqn}{style}{\eqstyle\@xp{\the\eqstyle #1}} -% \begin{dmath}[frame] -\define@key{breqn}{frame}[\fboxrule]{\let\eq@frame=T% - \dim@a#1\relax\edef\eq@framewd{\the\dim@a}% - \freeze@glue\eqlinespacing \freeze@glue\eqlineskip -} -\define@key{breqn}{fullframe}[]{\let\eq@frame=U% - \freeze@glue\eqlinespacing \freeze@glue\eqlineskip -} -\let\eq@frame=F % no frame -\def\eq@framewd{\fboxrule} -\define@key{breqn}{framesep}[\fboxsep]{% - \ifx\eq@frame=F\let\eq@frame=T\fi - \dim@a#1\relax \edef\eq@framesep{\the\dim@a}% - \freeze@glue\eqlinespacing \freeze@glue\eqlineskip -} -\def\eq@framesep{\fboxsep} -% \begin{dmath}[background={red}] -\define@key{breqn}{background}{\def\eq@background{#1}% - \freeze@glue\eqlinespacing \freeze@glue\eqlineskip -} -% -% \begin{dmath}[color={purple}] -\define@key{breqn}{color}{\def\eq@foreground{#1}} -% \begin{dmath}[center] -\define@key{breqn}{center}[]{\let\eq@centerlines\@True} -\let\eq@centerlines\@False -% \begin{dgroup}[noalign] -\define@key{breqn}{noalign}[]{\let\grp@align\@False} -\let\grp@align\@True % default -% \begin{dgroup}[breakdepth={2}] -\define@key{breqn}{breakdepth}{\eqbreakdepth#1\relax} -% \begin{darray}[cols={lcrlcr}] -\define@key{breqn}{cols}{\global\let\@preamble\@empty - \darray@mkpream#1\@percentchar -} -\newenvironment{dmath}{\@eq@numbertrue \@optarg\@dmath{}}{} -\def\@dmath[#1]{% - \if\eq@group\else\eq@prelim\fi - \setkeys{breqn}{#1}% - \the\eqstyle - \eq@setnumber - \begingroup - \eq@setup@a - \eq@startup -} -\def\enddmath#1{\check@punct@or@qed} -\def\end@dmath{% - \eq@capture - \endgroup - \EQ@setwdL - \eq@measure - \if\eq@group \grp@push \else \eq@finish\fi -} -\newenvironment{dmath*}{% - \@eq@numberfalse \@optarg\@dmath{}% -}{} -\@namedef{end@dmath*}{\end@dmath} -\@namedef{enddmath*}#1{\check@punct@or@qed} -\def\eq@prelim{% - \if@noskipsec \leavevmode \fi - \if@inlabel \leavevmode \global\@inlabelfalse \fi - \if@nobreak \global\@nobreakfalse \predisplaypenalty\@M \fi - \everypar\@emptytoks - \noindent - \eq@nulldisplay - \par %% \eq@saveparinfo %% needs work - \let\intertext\breqn@intertext -} -\def\breqn@parshape@warning{% - \PackageWarning{breqn}{% - Complex paragraph shape cannot be followed by this equation}% -} -\let\eq@prevshape\@empty -\def\eq@saveparinfo{% - \count@\prevgraf \advance\count@-\thr@@ % for the null display - \edef\eq@prevshape{\prevgraf\the\count@\space}% - \ifcase\parshape - % case 0: no action required - \or \edef\eq@prevshape{\eq@prevshape - \parshape\@ne\displayindent\displaywidth\relax - }% - \else - \breqn@parshape@warning - \fi -} -\def\eq@setnumber{% - \debugwr{=====================================================}% - \if@eq@number - \ifx\eq@number\@empty - \stepcounter{equation}\let\eq@number\theequation - \fi - \fi - \ifx\eq@number\@empty - \else - \set@label{equation}\eq@number - \global\sbox\EQ@numbox{% - \next@label \global\let\next@label\@empty - \eqnumcolor\eqnumsize - \eqnumfont{\eqnumform{\eq@number}}% -\debug \typeout{|= Eq number (\eq@number) - placement '\eqnumside\eqnumplace'}% -\gubed - }% - \@eq@numbertrue % locally true - \debugwr{Eq number width: \the\wd\EQ@numbox\space - (ht/dp: \the\ht\EQ@numbox+\the\dp\EQ@numbox)}% - \debugwr{Eq number sep: \the\eqnumsep}% - \fi -} -\def\eq@finish{% - \begingroup - \csname eq@\eqindent \if@eq@number\eqnumside\eqnumplace\fi\endcsname - \ifnum\eq@lines=\prevgraf - \else -\debug -\batchmode\showboxbreadth\maxdimen\showboxdepth99\showlists\errorstopmode -\gubed - \debugmsg{% - prevgraf \the\prevgraf\space != eq@lines \the\eq@lines?}% - \fi - \endgroup - \eq@botspace -} -\def\peek@branch#1#2{% - \let\peek@b#1\let\peek@space#2\futurelet\@let@token\peek@a -} -\def\peek@skipping@spaces#1{\peek@branch#1\peek@skip@space} -\def\peek@a{% - \ifx\@let@token\@sptoken \expandafter\peek@space - \else \expandafter\peek@b\fi -} -\lowercase{\def\peek@skip@space} {\futurelet\@let@token\peek@a}% -\def\check@punct{\futurelet\@let@token\check@punct@a} -\def\check@punct@a{% - \edef\@tempa{% - \ifx\@let@token\@sptoken\@nx\finish@end - \else\ifx\@let@token ,\@nx\check@qed - \else\ifx\@let@token .\@nx\check@qed - \else\check@punct@b % check the less common possibilities - \fi\fi\fi - }% - \@tempa -} -\begingroup -\toks@a{% - \ifx\@let@token ;\@nx\check@qed - \else\ifx\@let@token ?\@nx\check@qed - \else\ifx\@let@token !\@nx\check@qed -} -\toks@c{\fi\fi\fi}% matching with \toks@a -\catcode`\.=\active \catcode`\,=\active \catcode`\;=\active -\catcode`\?=\active \catcode`\!=\active -\toks@b{ - \else\ifx\@let@token ,\@nx\check@qed - \else\ifx\@let@token .\@nx\check@qed - \else\ifx\@let@token ;\@nx\check@qed - \else\ifx\@let@token ?\@nx\check@qed - \else\ifx\@let@token !\@nx\check@qed - \else\@nx\finish@end - \fi\fi\fi\fi\fi -} -\xdef\check@punct@b{% - \the\toks@a\the\toks@b\the\toks@c -} -\endgroup -\let\found@punct\@empty -\def\check@qed#1{% - \gdef\found@punct{#1}% - \peek@skipping@spaces\check@qed@a -} -\def\check@qed@a{% - \ifx\end\@let@token \@xp\check@qed@b - \else \@xp\finish@end - \fi -} -\def\check@qed@b#1#2{% - \@ifundefined{#2qed}{}{% - \toks@\@xp{\found@punct\csname#2qed\endcsname}% - \xdef\found@punct{\the\toks@}% - }% - \finish@end - \end{#2}% -} -\def\@tempa#1\endcsname#2\@nil{\def\latex@end##1{#2}} -\expandafter\@tempa\end{#1}\@nil -\def\end#1{\csname end#1\endcsname \latex@end{#1}}% -\def\check@punct@or@qed#1{% - \def\finish@end{\csname end@#1\endcsname\latex@end{#1}}% - \check@punct -} -\newcommand\eqpunct[1]{\thinspace#1} -\providecommand\set@label[2]{\protected@edef\@currentlabel{#2}} -\def\eq@topspace#1{% - \begingroup - \global\let\EQ@shortskips\@False - \if\@And{\eq@group}{\@Not\GRP@top}% - \parskip\intereqskip \penalty\intereqpenalty - \else - \eq@setdisplayskips - \fi - \ifx F\eq@frame - \else - \advance\parskip\eq@framesep \advance\parskip\eq@framewd\relax - \fi - #1% - \endgroup -} -\def\eq@setdisplayskips{% - \if \if@eq@number\eqnumside \else F\fi L% - \parskip\abovedisplayskip - \else - \afterassignment\eq@firstindent % sets \dim@a - \int@a\eq@parshape \relax -\debugwr{first indent \the\dim@a, predisplaysize \the\predisplaysize}% - \advance\dim@a-2em % standard TeX value - \ifdim\dim@a>\predisplaysize - \global\let\EQ@shortskips\@True - \parskip\abovedisplayshortskip - \aftergroup\belowdisplayskip\aftergroup\belowdisplayshortskip - \else - \parskip\abovedisplayskip - \fi -\debugwr{parskip \the\parskip}% - \fi -} -\def\eq@firstindent#1 #2 #3\relax{\dim@a#2\relax} -\def\eq@botspace{% - \penalty\postdisplaypenalty - \ifx F\eq@frame - \else - \advance\belowdisplayskip\eq@framesep - \advance\belowdisplayskip\eq@framewd\relax - \fi - \vskip\belowdisplayskip - \@endpetrue % kill parindent if current paragraph continues - \global\@ignoretrue % ignore following spaces - \eq@resume@parshape -} -\def\eq@resume@parshape{} -\def\eq@startup{% - \global\let\EQ@hasLHS\@False - \global\let\found@punct\@empty - \setbox\z@\vbox\bgroup - \noindent \@@math \displaystyle - \penalty-\@Mi -} -\def\eq@setup@a{% - \everymath\everydisplay - %\let\@newline\eq@newline % future possibility? - \let\\\eq@newline - \let\insert\eq@insert \let\mark\eq@mark \let\vadjust\eq@vadjust - \hsize\maxdimen \pretolerance\@M - \linepenalty\@m - \rightskip\z@\@plus\@M\p@ \leftskip\z@skip \parfillskip\z@skip - \clubpenalty\@ne \widowpenalty\z@ \interlinepenalty\z@ - \global\let\EQ@prebin@space\relax - \binoppenalty\@M \relpenalty\@M -} -\def\eq@unclosed@left{% - \PackageError{breqn}{% - Delimiter mismatch---not enough closing delimiters% - }{% - Or perhaps too many open delimiters, somewhere in this -equation.\MessageBreak - \@ehc - }% -} -\def\eq@capture{% - \ifnum\lr@level>\z@ \eq@unclosed@left \global\lr@level\z@ \fi - \ifnum\lastpenalty>-\@M \penalty-\@Mi \fi - \keep@glue\@@endmath - \eq@addpunct - \@@par - \eq@wdL\z@ - \global\let\EQ@setwdL\@empty - \global\let\EQ@thickmuskip\@empty -\debug -\batchmode\showboxbreadth\maxdimen\showboxdepth99\showlists\errorstopmode -\gubed - \setbox\tw@\lastbox - \global\setbox\EQ@box\hbox{\unhbox\tw@\unskip\unskip\unpenalty}% - \unskip\unpenalty - \global\setbox\EQ@copy\copy\EQ@box -%% \global\setbox\EQ@vimcopy\copy\EQ@vimbox - \clubpenalty\z@ - \eq@repack % recursive - \setbox\tw@\lastbox - \global\setbox\EQ@box\hbox{\unhcopy\tw@\unskip\unpenalty \unhbox\EQ@box}% - \global\setbox\EQ@copy\hbox{\unhbox\tw@\unskip\unpenalty \unhbox\EQ@copy}% -\debug -\batchmode\showbox\EQ@copy \showthe\eq@wdL\errorstopmode -\gubed - \egroup % end vbox started earlier -} -\def\eq@addpunct{% - \ifx\found@punct\@empty - \else \eqpunct{\found@punct}% - \fi - \EQ@afterspace -} -\global\let\EQ@afterspace\@empty -\global\let\EQ@setwdL\@empty -\global\let\EQ@thickmuskip\@empty -\def\eq@LHS@check{% - \if\EQ@hasLHS - \setbox\z@\hbox{\unhcopy\EQ@copy\setbox\tw@\lastbox - \EQ@thickmuskip}% - \eq@wdL\wd\z@ - \xdef\EQ@setwdL{\eq@wdL\the\eq@wdL\relax}% -\debugwr{Changed wdL to \the\eq@wdL}% - \fi -} -\def\eq@repack{% - \ifcase\lastpenalty - % case 0: normal case - \setbox\tw@\lastbox - \eq@repacka\EQ@copy \eq@repacka\EQ@box - \unskip - \or % case 1: finished recursing - \unpenalty - \setbox\tw@\lastbox - \eq@repacka\EQ@copy \eq@repacka\EQ@box - \eq@LHS@check - \@xp\@gobble - \or % case 2: save box width = LHS width - \unpenalty - \setbox\tw@\lastbox - \setbox\z@\copy\tw@ \setbox\z@\hbox{\unhbox\z@\unskip\unpenalty}% - \advance\eq@wdL\wd\z@ - \xdef\EQ@setwdL{\eq@wdL\the\eq@wdL\relax}% - \global\setbox\EQ@copy\hbox{% - \hbox{\unhcopy\tw@\unskip\unpenalty - \xdef\EQ@thickmuskip{\hskip\the\lastskip\relax}% - \unskip}% - \box\EQ@copy - }% - \global\setbox\EQ@box\hbox{% - \hbox{\unhbox\tw@\unskip\unpenalty\unskip}% - \box\EQ@box - }% - \unskip - \or % case 3: unpack left-right box - \unpenalty - \eq@lrunpack - \else - \breqn@repack@err - \fi - \eq@repack % RECURSE -} -\def\breqn@repack@err{% - \PackageError{breqn}{eq@repack penalty neq 0,1,2,3}\relax -} -\def\eq@repacka#1{% - \global\setbox#1\hbox{\unhcopy\tw@ \unskip - \count@-\lastpenalty - \ifnum\count@<\@M \else \advance\count@-\@M \fi - \unpenalty - \ifx\EQ@copy#1\ifnum\count@>\thr@@ \count@\@ne\fi\fi - \ifcase\count@ - % case 0, normal line break - \penalty-\@M % put back the linebreak penalty - \or % case 1, do nothing (end of equation) - \relax - \or % case 2, no-op (obsolete case) - \or % case 3, transfer vspace and/or penalty - \ifx#1\EQ@box \eq@revspace \else \eq@revspaceb \fi - \or % case 4, put back an insert - \eq@reinsert - \or % case 5, put back a mark - \eq@remark - \or % case 6, put back a vadjust - \eq@readjust - \else % some other break penalty - \penalty-\count@ - \fi - \unhbox#1}% -} -\def\eq@nulldisplay{% - \begingroup \frozen@everydisplay\@emptytoks - \@@display - \predisplaypenalty\@M \postdisplaypenalty\@M - \abovedisplayskip\z@skip \abovedisplayshortskip\z@skip - \belowdisplayskip\z@skip \belowdisplayshortskip\z@skip - \xdef\EQ@displayinfo{% - \prevgraf\the\prevgraf \predisplaysize\the\predisplaysize - \displaywidth\the\displaywidth \displayindent\the\displayindent - \listwidth\the\linewidth - \ifdim\displayindent>\z@ - \advance\listwidth\the\leftmargin - \advance\listwidth\the\rightmargin - \fi - \relax}% - \halign{##\cr}% - \@@enddisplay - \par - \endgroup - \EQ@displayinfo -} -\def\eq@newline{% - \@ifstar{\eq@newlinea\@M}{\eq@newlinea\eqinterlinepenalty}} -\def\eq@newlinea#1{% - \@ifnext[{\eq@newlineb{#1}}{\eq@newlineb{#1}[\maxdimen]}} -\def\eq@newlineb#1[#2]{\penalty-\@M} -\def\eq@revspace{% - \global\setbox\EQ@vimbox\vbox{\unvbox\EQ@vimbox - \unpenalty - \global\setbox\@ne\lastbox}% - \@@vadjust{\unvbox\@ne}% - \penalty-\@M -} -\def\eq@revspaceb{% - \global\setbox\EQ@vimcopy\vbox{\unvbox\EQ@vimcopy - \unpenalty - \global\setbox\@ne\lastbox}% - \@@vadjust{\unvbox\@ne}% - \penalty-\@M -} -\def\eq@break#1{\penalty-1000#1 \keep@glue} -\let\@parshape\@empty -\def\eq@measure{% - \ifdim\eq@indentstep=\maxdimen \eq@indentstep\eqindentstep \fi - \ifdim\eq@linewidth=\z@ \else \edef\eq@linewidths{{\the\eq@linewidth}}\fi - \eqrightskip \z@\@plus.2\columnwidth - \begingroup \eq@params - \leftskip\z@skip - \debug\eqinfo\gubed - \global\EQ@continue{\eq@trial}% - \eq@trial % uses \eq@linewidths - \eq@failout % will be a no-op if the trial succeeded - \endgroup - \EQ@trial -} -\let\EQ@trial\@empty -\newtoks\EQ@continue -\let\EQ@widths\@empty -\def\eq@linewidths{\displaywidth\linewidth\columnwidth} -\def\eq@trial{% - \ifx\@empty\eq@linewidths - \global\EQ@continue{}% - \else - \iffalse{\fi \@xp\eq@trial@a \eq@linewidths}% - \fi - \the\EQ@continue -} -\def\eq@trial@a#1{% - \dim@c#1\relax -\debugwr{trial-A: width #1 (\the\dim@c)}% - \ifx T\eq@frame \eq@frame@adjust\dim@c \fi - \ifdim\dim@c>\eq@linewidth - \eq@linewidth\dim@c \eq@freewidth\eq@linewidth - \if@eq@number - \advance\eq@freewidth-\eqnumsep - \advance\eq@freewidth-\wd\EQ@numbox - \fi - \let\eq@trial@b\eq@trial@d - \csname eq@try@layout@\eq@layout\endcsname - \fi - \edef\eq@linewidths{\iffalse}\fi -} -\@namedef{eq@try@layout@?}{% - \let\eq@trial@b\eq@trial@c - \if\EQ@hasLHS -\debugmsg{trial-A: LHS present (\the\eq@wdL)}% - \ifdim\eq@wdL>\eq@linewidth -\debugwr{trial-A: LHS > linewidth}% - \dim@a\wd\EQ@copy \advance\dim@a-\eq@wdL - \ifdim\dim@a<.25\eq@linewidth \eq@try@layout@S - \else \eq@try@layout@l - \fi - \else - \ifdim\eq@wdL>.7\eq@linewidth -\debugmsg{trial-A: LHS > .7 linewidth (linewidth=\the\eq@linewidth)}% - \eq@try@layout@iS - \else -\debugmsg{trial-A: LHS not extraordinarily wide}% - \eq@try@layout@L - \fi - \fi - \else -\debugwr{trial-A: No LHS here}% - \eq@try@layout@iS - \fi -} -\def\eq@trial@done{% -\debugwr{End trial: Success!}% - \let\eq@failout\relax -} -\def\eq@trial@init{\global\let\EQ@fallback\eq@nextlayout} -\def\eq@trial@save#1{% -\debug \def\eq@zek{^^J|== \space}\let\eq@kez\@empty\debugwr{trial info:\eq@measurements}\debugmsg{bounding box: \the\eq@bodywidth x\the\eq@vspan^^J}% - \let\eq@zek\relax \let\eq@kez\relax -\gubed - \xdef#1{% - \eq@linewidth\the\eq@linewidth \eq@freewidth\the\eq@freewidth - \eq@lines\the\eq@lines \eq@badness\the\eq@badness - \eq@wdL\the\eq@wdL \eq@bodywidth\the\eq@bodywidth \eq@sidespace\the\eq@sidespace - \eq@vspan\the\eq@vspan \eq@dp\the\eq@dp \eq@firstht\the\eq@firstht - \prerelpenalty\the\prerelpenalty % might change during processing - \def\@nx\eq@badline{\eq@badline}% - \def\@nx\eq@layout{\eq@layout}% - \def\@nx\eq@parshape{\@parshape}% - \def\@nx\eq@measurements{\eq@measurements}% - \def\@nx\adjust@rel@penalty{\adjust@rel@penalty}% - \def\@nx\eq@shiftnumber{\eq@shiftnumber}% - }% -} -\def\eq@recalc{% - \eq@bodywidth\z@ \eq@vspan\z@skip \eq@badness\z@ - \eq@wdRmax\z@ - \let\eq@zek\eq@recalc@a \eq@measurements \let\eq@zek\relax - \ifdim\eq@bodywidth<\eq@linewidth - \eq@sidespace\eq@linewidth \advance\eq@sidespace -\eq@bodywidth - \divide\eq@sidespace\tw@ - \else - \eq@sidespace\z@ - \fi -} -\def\eq@recalc@a#1x#2+#3\eq@kez{% - \eq@firstht#2\relax - \let\eq@zek\eq@recalc@b - \eq@zek#1x#2+#3\eq@kez -} -\def\eq@recalc@b#1^^J#2,#3x#4+#5@#6\eq@kez{% - \dim@a#3\relax - \ifdim\dim@a>\eq@wdRmax \eq@wdRmax\dim@a\fi - \advance\dim@a#2\relax - \ifdim\dim@a>\eq@bodywidth \eq@bodywidth\dim@a \fi - \eq@dp#5\relax - \advance\eq@vspan#1\advance\eq@vspan#4\advance\eq@vspan#5\relax - \ifnum#6>\eq@badness \eq@badness#6\relax\fi -} -\let\EQ@last@trial\@empty -\def\eq@failout{% -\debugmsg{End trial: failout}% - \global\let\EQ@trial\EQ@last@trial -} -\def\eq@frame@adjust#1{% - \dim@a\eq@framewd \advance\dim@a\eq@framesep - \advance#1-2\dim@a -} -\def\eq@layout{?} -\def\eq@try@layout@D{% - \dim@a\eq@linewidth \advance\dim@a-\eq@indentstep - \edef\@parshape{\parshape 2 - 0pt \the\eq@wdL\space \the\eq@indentstep\space \the\dim@a\relax - }% - \def\adjust@rel@penalty{\penalty-99 }% - \eq@trial@b{D}{\eq@try@layout@A}% -} -\def\eq@try@layout@A{% - \edef\@parshape{\parshape 1 0pt \the\eq@linewidth\relax}% - \if\EQ@hasLHS \def\adjust@rel@penalty{\penalty-99 }\fi - \eq@trial@b{A}{}% -} -\def\eq@reindent@A{% - \dim@a\eq@linewidth \advance\dim@a-\eq@bodywidth - \edef\eq@parshape{% - \parshape 2 - 0pt \the\eq@bodywidth\space - \the\dim@a\space \the\eq@bodywidth\relax - }% - \leftskip\z@skip -} -\def\eq@try@layout@L{% - \dim@b\eq@linewidth \advance\dim@b-\eq@wdL - \edef\@parshape{\parshape 2 0pt \the\eq@linewidth\space - \the\eq@wdL\space \the\dim@b\relax - }% - \eq@trial@b{L}{\eq@try@layout@D}% -} -\def\eq@try@layout@iS{% - \edef\@parshape{\parshape 1 0pt \the\eq@freewidth\relax}% - \eq@trial@b{i}{\eq@try@layout@S}% -} -\def\eq@try@layout@S{% - \dim@b\eq@linewidth \advance\dim@b-2\eqmargin \advance\dim@b-1em% - \int@a\wd\EQ@copy \divide\int@a\dim@b - \advance\dim@b-\int@a\eq@indentstep\relax - \if@eq@number - \ifdim\dim@b>15em% - \advance\dim@b-\eqnumsep \advance\dim@b-\wd\EQ@numbox - \fi - \fi - \int@b\z@ - \def\@tempa{\dim}% - \edef\@parshape{\parshape 2 0pt \the\dim@b\space - \the\eqmargin\space\the\dim@b\relax}% - \eq@trial@b{S}{\eq@try@layout@A}% -} -\def\eq@try@layout@l{% - \dim@a\eq@linewidth \advance\dim@a-\eq@indentstep - \int@a\eq@wdL \divide\int@a\dim@a - \advance\int@a\tw@ - \edef\@parshape{\parshape \number\int@a\space - 0pt \the\eq@linewidth - }% - \advance\int@a-\tw@ - \dim@b=2\eq@indentstep - \dim@c\eq@linewidth \advance\dim@c-\dim@b - \edef\@parshape{\@parshape - \replicate{\int@a}{ \the\eq@indentstep\space\the\dim@a}% - \space\the\dim@b\space\the\dim@c - }% - \eq@trial@b{l}{\eq@try@layout@A}% -} -\def\eq@fix@lastline{% - \setbox\tw@\lastbox \dim@b\wd\tw@ - \eq@dp\dp\tw@ - \nointerlineskip\hbox to\dim@b{\unhbox\tw@ - \skip@c\lastskip \unskip\unskip\hskip\skip@c - }% -} -\def\eq@trial@b{\eq@trial@c} -\def\eq@compact@test{% - \debugwr{wdRmax: \the\eq@wdRmax}% - \let\@tempa\@empty - \if L\eq@layout - \ifnum\prerelpenalty=-\@M % standard noncompact value - \ifdim\eq@wdRmax>\eqcompactzone\relax - \else - \prerelpenalty=-99 - \def\EQ@fallback{\endgroup - \begingroup \@firstoftwo{\eq@try@layout@L}}% - % This is sensitively dependent on the code that currently - % follows! Talk about bug prone! Watch out! - \def\@tempa##1{\csname iffalse\endcsname}% - \eq@repack@compact - \fi - \fi - \fi - \@tempa -} -\def\eq@trial@c#1#2{% -\debug\message{^^J}\gubed -\debugwr{Trying layout "#1" with parshape^^J|== \space\@xp\@gobble\@parshape}% - \begingroup - \eq@trial@init - \def\eq@layout{#1}% - \setbox\z@\vbox{% - \hfuzz\maxdimen - \eq@trial@p % run the given parshape -% \ifnum\eq@lines>\@ne \@xp\eq@compact@test \fi - \if\@Not{\eq@badline}% - \eq@trial@save\EQ@trial - \if@eq@number - \if i\eq@layout - \else - \if A\eq@layout \let\eq@shiftnumber\@True - \else \eq@retry@with@number - \fi - \if\eq@shiftnumber - \begingroup - \EQ@trial - \let\@parshape\eq@parshape \let\eq@shiftnumber\@True - \eq@trial@save\EQ@trial - \endgroup - \fi - \fi - \fi - \if L\eq@layout \eq@check@density - \else - \if\@Not{\eq@badline}% - \aftergroup\@gobbletwo - \global\EQ@continue{\eq@trial@done}% - \fi - \fi - \else - \eq@trial@save\EQ@last@trial - \fi - }% end of vbox - \EQ@fallback{#2}% - \endgroup -} -\def\eq@check@density{% - \if\@Or{\@Not\EQ@hasLHS}{\eq@shortLHS}% - \aftergroup\@gobbletwo % cancel the \EQ@fallback code - \global\EQ@continue{\eq@trial@done}% - \else - \if\eq@dense@enough - \aftergroup\@gobbletwo % cancel the \EQ@fallback code - \global\EQ@continue{\eq@trial@done}% - \fi - \fi -} -\def\eq@retry@with@number{% -\debugwr{Retry-with-number: wdT=\the\eq@bodywidth, freewidth=\the\eq@freewidth}% -\toks@\@xp{\EQ@trial}\debugwr{EQ@trial: \the\toks@}% - \ifdim\eq@bodywidth>\eq@freewidth \eq@retry@with@number@a \fi -} -\let\eq@shiftnumber\@False -\def\eq@retry@with@number@a{% - \adjust@for@number % depends on number placement -\debug\message{^^J}\gubed\debugwr{Retrying (to make room for the number) with parshape^^J|== \space\@xp\@gobble\@parshape}% - \nointerlineskip - \edef\eq@prev@lines{\the\eq@lines}% - \eq@trial@p - \int@b\eq@prev@lines \advance\int@b\@ne - \ifnum\eq@lines>\int@b - \let\eq@shiftnumber\@True - \else - \if\@Not{\eq@badline}% - \let\eq@shiftnumber\@False - \eq@trial@save\EQ@trial - \else - \let\eq@shiftnumber\@True - \fi - \fi -} -\def\adjust@for@number{% -\debugwr{eq@freewidth=\the\eq@freewidth??}% - \dim@d\wd\EQ@numbox \advance\dim@d\eqnumsep -\debugwr{Adjusting by +\the\dim@d}% - \@xp\let\@xp\adjust@for@number@b - \csname adjust@for@number@\eqnumside\eqnumplace\endcsname - \@xp\adjust@for@number@a\@parshape\relax -} -\def\adjust@for@number@a#1 #2\relax{% - \edef\@parshape{#1}% - \adjust@for@number@b#2 @ @ \relax -} -\def\adjust@for@number@LT#1 #2 {% - \ifx @#1\edef\@parshape{\@parshape\relax}% - \@xp\@gobble - \else - \dim@a#1\advance\dim@a\dim@d - \dim@b#2\advance\dim@b-\dim@d - \edef\@parshape{\@parshape\space\the\dim@a\space\the\dim@b}% - \fi - \adjust@for@number@LT -} -\def\adjust@for@number@LM{% - \ifnum\eq@lines>\tw@ - \advance\dim@d\eq@bodywidth - \advance\dim@d-\eq@linewidth - \fi -\debugwr{No, adjusting by +\the\dim@d\space instead}% - \adjust@for@number@LT -} -\def\adjust@for@number@RM#1 #2 {% - \ifx @#1\edef\@parshape{\@parshape\relax}% - \@xp\@gobble - \else - \dim@c#2\relax - \dim@b\eq@freewidth - \advance\dim@b-#1\advance\dim@b-\dim@c - \ifdim\dim@b<\z@ \advance\dim@c\dim@b - \ifdim\dim@c<\p@ \dim@c\p@\relax \fi - \fi - \edef\@parshape{\@parshape\space#1 \the\dim@c}% - \fi - \adjust@for@number@RM -} -\def\eq@trial@p{% - \@parshape % - \eq@dump@box\unhcopy\EQ@copy - {\@@par}% leave \parshape readable - \eq@lines\prevgraf -\debugmsg{Number of lines: \number\eq@lines}% - \eq@fix@lastline - \let\eq@badline\@False - \if i\eq@layout \ifnum\eq@lines>\@ne \let\eq@badline\@True \fi\fi - \eq@curline\eq@lines % loop counter for eq@measure@lines - \let\eq@measurements\@empty - \eq@ml@record@indents - \eq@measure@lines - \eq@recalc -} -\let\adjust@rel@penalty\@empty -\def\eq@shortLHS{0\ifdim\eq@wdL>.44\eq@bodywidth \@xp 1\else \@xp 0\fi} -\def\eq@longLHS{0\ifdim\eq@wdL>6em \@xp 0\else \@xp 1\fi} -\def\eq@nextlayout#1{% - \endgroup -\debugwr{Nope ... that ain't gonna work.}% - \begingroup #1% -} -\def\eq@trial@d#1#2{\eq@trial@c{#1}{}} -\let\EQ@fallback\@empty -\def\eq@ml@record@indents{% - \int@a\z@ - \def\@tempa{% - \advance\int@a\@ne - \@xp\edef\csname eq@i\number\int@a\endcsname{\the\dim@a}% - \ifnum\int@a<\int@b \afterassignment\@tempb \fi - \dim@a - }% - \def\@tempb{\afterassignment\@tempa \dim@a}% - \def\@tempc##1##2 {\int@b##2\afterassignment\@tempa\dim@a}% - \@xp\@tempc\@parshape -} -\chardef\eq@zek=`\! -\chardef\eq@kez=`\? -\def\eq@measurements{% - \eq@zek 4.5pt/5.0pt,66.0ptx6.8pt+2.4pt@27\eq@kez - ... -} -\def\eq@measure@lines{% - \let\eq@ml@continue\eq@measure@lines - \setbox\tw@\lastbox \dim@b\wd\tw@ % find target width of line - \setbox\z@\hbox to\dim@b{\unhbox\tw@}% check for overfull - \eq@badness\badness - \ifnum\eq@badness<\inf@bad \else \let\eq@badline\@True \fi - \eq@ml@a \eq@ml@continue -} -\def\eq@ml@a{% - \setbox\tw@\hbox{\unhbox\z@ \unskip}% find natural width -\debug\ifnum\eq@badness<\inf@bad\else\debugmsg{!?! Overfull: \the\wd\tw@ >\the\dim@b}\fi\gubed - \ifdim\dim@b<\wd\tw@ \dim@a\dim@b % shrunken line - \else \dim@a\wd\tw@ % OK to use natural width - \fi - \skip@a\lastskip \unskip \unpenalty - \ifdim\skip@a=\z@ - \let\eq@ml@continue\relax % end the recursion - \else - % Sum repeated vskips if present - \def\@tempa{% - \ifdim \lastskip=\z@ - \else \advance\skip@a\lastskip \unskip\unpenalty \@xp\@tempa - \fi - }% - \fi - \edef\eq@measurements{\eq@zek - \the\skip@a\space^^J% extra space to facilitate extracting only the - % dimen part later - \csname eq@i% - \ifnum\eq@curline<\parshape \number\eq@curline - \else\number\parshape - \fi - \endcsname,\the\dim@a x\the\ht\tw@+\the\dp\tw@ @\the\eq@badness\eq@kez - \eq@measurements - }% - \advance\eq@curline\m@ne - \ifnum\eq@curline=\z@ \let\eq@ml@continue\relax\fi -} -\def\eq@ml@vspace{% - \global\advance\eq@vspan\lastskip \unskip\unpenalty - \ifdim\lastskip=\z@ \else \@xp\eq@ml@vspace \fi -} -\def\eq@dense@enough{% - \ifnum\eq@lines<\thr@@ \@True - \else - \ifdim\eq@wdL >.7\eq@bodywidth \@False - \else \@xp\@xp\@xp\eq@dense@enough@a - \fi - \fi -} -\def\true@false@true{\fi\fi\iftrue\iffalse\iftrue} -\def\false@false@false{\fi\fi\iffalse\iffalse\iffalse} -\def\false@true@false{\fi\fi\iffalse\iftrue\iffalse} -\def\eq@density@factor{.475} -\def\eq@dense@enough@a{% - \@True \fi - \ifnum\eq@lines>\sixt@@n - \eq@dense@enough@b - \else - \dim@b\z@ \let\eq@zek\eq@delt \eq@measurements - \dim@c\eq@density@factor\eq@bodywidth \multiply\dim@c\eq@lines -\debugwr{black \the\dim@b/\eq@density@factor total \the\dim@c}% - \ifdim\dim@b>\dim@c \true@false@true \else \false@false@false \fi - \fi -} -\def\eq@delt#1^^J#2,#3x#4+#5@#6\eq@kez{\advance\dim@b#3\relax}% -\def\eq@dense@enough@b{% - \int@b\eq@bodywidth \divide\int@b\p@ - \dim@b\eq@wdL \divide\dim@b\int@b - \dim@c\eq@lines\p@ \multiply\dim@c\f@ur - \int@b\eq@lines \multiply\int@b 9 \advance\int@b -10% - \divide\dim@c\int@b -\debugwr{l/t \the\dim@b\space< \the\dim@c\space 4n/(9n-10)?}% - \ifdim\dim@b<\dim@c \true@true@true \else \false@true@false \fi -} -\def\adjust@parshape#1{% - \@xp\adj@psh@a \csname adjust@parshape@#1@\eq@layout\endcsname -} -\def\adj@psh@a#1{% - \ifx\@@undefined#1\relax -\debugmsg{UNDEFINED: \string#1}% - \else \@xp#1\eq@parshape - \fi -} -\def\adj@psh@b#1{% -\debugmsg{Adjusting parshape (\eqindent\if@eq@number\eqnumside\eqnumplace\fi @\eq@layout)}% - \edef\eq@parshape{\parshape \number\eq@lines}% - \let\eq@zek#1\eq@measurements \let\eq@zek\relax - \edef\eq@parshape{\eq@parshape\relax}% - \leftskip\z@skip -} -\def\adjust@parshape@C@L#1 #2 #3 #4 #5\relax{% - \dim@a\leftskip \advance\dim@a#4\relax - \edef\eq@parshape{#1 \the\leftskip\space#3 \the\dim@a\space#5\relax}% - \leftskip\z@skip -} -\def\adjust@parshape@C@D#1 #2 #3 #4 #5\relax{% - \dim@b\eq@linewidth \advance\dim@b-\eq@bodywidth -\debugmsg{linewidth - wdT = \the\eq@linewidth\space- \the\eq@bodywidth\space=\the\dim@b}% - \advance\dim@b-\eqmargin -\debugmsg{ - eqmargin (\the\eqmargin) = \the\dim@b}% - \advance\dim@b#4\relax -\debugmsg{ + #4 = \the\dim@b}% - \dim@a\eqmargin - \adj@psh@b\C@Deq@zek -} -\def\C@Deq@zek#1^^J#2,#3x#4\eq@kez{% - \edef\eq@parshape{\eq@parshape\space \the\dim@a\space #3}% - \dim@a\dim@b % use dim@b for all remaining lines -} -\def\adjust@parshape@C@S#1 #2 #3 #4 #5\relax{% - \dim@b#4\relax % normally = \eqmargin - \dim@d\eq@linewidth \advance\dim@d-\eq@bodywidth - \ifdim\dim@d<2\dim@b - \dim@c\leftskip - \advance\dim@d-\dim@c - \else \advance\dim@d-2\dim@b - \dim@c\dim@b - \fi - \advance\dim@d-\dim@c \advance\dim@d\dim@b - \int@a\eq@lines \advance\int@a\m@ne - \ifnum\int@a>\@ne \divide\dim@d\int@a \fi -\debugmsg{dim@d after dividing: \the\dim@d}% - \adj@psh@b\C@Seq@zek -} -\def\C@Seq@zek#1^^J#2,#3x#4+#5@#6\eq@kez{% - \edef\eq@parshape{\eq@parshape\space \the\dim@c\space #3}% - \advance\dim@c\dim@d -} -\def\adjust@parshape@CRM@D#1 #2 #3 #4 #5\relax{% - \dim@b\eq@linewidth \advance\dim@b-\eq@bodywidth -\debugmsg{linewidth - wdT = \the\eq@linewidth\space- \the\eq@bodywidth\space=\the\dim@b}% - \advance\dim@b-\eqnumsep \advance\dim@b-\wd\EQ@numbox -\debugmsg{ - numsep (\the\eqnumsep) - numwd (\the\wd\EQ@numbox) = \the\dim@b}% - \advance\dim@b#4\relax -\debugmsg{ + #4 = \the\dim@b}% - \dim@a\eqmargin - \adj@psh@b\C@Deq@zek -} -\def\adjust@parshape@CRM@L{\adjust@parshape@C@L} -\def\adjust@parshape@CRM@S#1 #2 #3 #4 #5\relax{% - \dim@b#4\relax % normally = \eqmargin - \dim@d\eq@linewidth \advance\dim@d-\eq@bodywidth - \advance\dim@d-\eqnumsep \advance\dim@d -\wd\EQ@numbox - \ifdim\dim@d<\dim@b \dim@c\leftskip - \else \dim@c\dim@b - \fi - \advance\dim@d-\dim@c \advance\dim@d\dim@b - \int@a\eq@lines \advance\int@a\m@ne - \ifnum\int@a>\@ne \divide\dim@d\int@a \fi -\debugmsg{dim@d after dividing: \the\dim@d}% - \adj@psh@b\C@Seq@zek -} -\def\adjust@parshape@CRM@A#1\relax{\debugmsg{CRM@A: #1}} -\def\adjust@parshape@CRM@l#1\relax{\debugmsg{CRM@l: #1}} -\let\eq@parshape\@empty -\def\eq@params{% - \baselineskip\eqlinespacing - \lineskip\eqlineskip \lineskiplimit\eqlineskiplimit - \clubpenalty\@M \widowpenalty\@M \interlinepenalty\eqinterlinepenalty - \linepenalty\eqlinepenalty \exhyphenpenalty9999 - \rightskip\eqrightskip - \ifdim\hfuzz<\p@ \hfuzz\p@ \fi - \advance\rightskip \z@\@minus\hfuzz - \hfuzz\z@ - \parfillskip\z@skip - \if\eq@centerlines - \advance\leftskip\rightskip \advance\leftskip -1\rightskip - \fi - \tolerance9999 \pretolerance\m@ne - \hbadness\tolerance -} -\def\eq@dump@box#1#2{% -%\debug@box#1% -\debugwr{Dumping with leftskip = \the\leftskip, - \ifx\@empty\eq@parshape \else eq\fi @parshape =}% -\debugwr{\ifx\@empty\eq@parshape \@parshape \else\eq@parshape\fi}% - \noindent #1#2\setbox\f@ur\lastbox \setbox\tw@\lastbox - \if L\eq@layout \box\tw@ \else\unhbox\tw@\fi - \adjust@rel@penalty \unhbox\f@ur -} -\def\eq@C{% -\debugmsg{\eq@sidespace\the\eq@sidespace, \eq@bodywidth\the\eq@bodywidth, \eq@linewidth\the\eq@linewidth}% - \eq@params - \leftskip\eq@sidespace - \adjust@parshape{C}% - \eq@parshape - \eq@topspace{\noindent}% - \ifx F\eq@frame - \else - \vbox to\eq@firstht{\hbox to\z@{\eq@addframe\hss}\vss}% - \fi - \eq@dump@box\unhbox\EQ@box \@@par -} -\def\eq@CRB{% - \if\eq@shiftnumber - \leftskip\eq@sidespace - \else - \ifnum\eq@lines=\@ne - \leftskip\eq@sidespace \advance\leftskip\eqnumsep - \ifdim\leftskip<3\wd\EQ@numbox - \multiply\leftskip\tw@ \divide\leftskip\thr@@ - \ifdim\leftskip<2\eqnumsep - \leftskip\eq@sidespace \divide\leftskip\tw@ - \fi -\debugmsg{Shifting off-center: leftskip \the\leftskip}% - \else - \divide\leftskip\tw@ -\debugmsg{Plenty of room: leftskip \the\leftskip}% - \fi - \fi - \fi - \eq@CRBa -} -\def\eq@CRBa{% - \eq@topspace{\noindent}% - \ifx F\eq@frame - \else \vbox to\eq@firstht{\hbox to\z@{\eq@addframe\hss}\vss}% - \fi - \eq@params \eq@parshape - \add@grp@label - \eq@dump@box\unhbox\EQ@box \@@par - \penalty\@M - \if\eq@shiftnumber - \else - \lineskiplimit-\maxdimen \baselineskip\z@skip - \fi - \hbox to\eq@linewidth{\hfil\copy\EQ@numbox}% -} -\def\eq@CRM{% -\debug - \dim@a\eq@bodywidth \advance\dim@a\eqnumsep \advance\dim@a\wd\EQ@numbox -\debugmsg{\hsize\the\hsize, \eq@linewidth\the\eq@linewidth}% -\debugmsg{T+S+N = \the\eq@bodywidth+\the\eqnumsep+\the\wd\EQ@numbox\space= \the\dim@a}% -\debugmsg{sidespace: \the\eq@sidespace}% -\gubed - \ifnum\eq@lines<\tw@ - \ifdim\eq@bodywidth>\eq@freewidth \let\eq@shiftnumber\@True\fi - \fi - \debugmsg{\rightskip=\the\rightskip??}% - \parfillskip\z@skip - \if\eq@shiftnumber - \@xp\eq@CRB % shifted number - \else - \set@leftskip@for@centering - \@xp\eq@CRMa % nonshifted number - \fi -} -\def\set@leftskip@for@centering{% - \leftskip\eq@sidespace\relax - \ifdim\leftskip>\z@ % when not true? - % Skip quickly past the more complicated stuff if not needed (which - % is true most of the time) - \ifdim\leftskip<2\wd\EQ@numbox - \set@leftskip@fca - \else -\debugwr{Plenty of room: leftskip \the\leftskip}% - \fi - \fi -} -\def\set@leftskip@fca{% - % Save free space = linewidth - bodywidth - numberwidth in \dim@a - \dim@a\eq@linewidth \advance\dim@a-\eq@bodywidth - \advance\dim@a-\wd\EQ@numbox - \ifdim\dim@a<\eqnumsep - \leftskip\z@skip -\debugwr{Not enough room, wha happend?}% - \else - % Put two thirds of the free space on the side opposite to the number - \leftskip\dim@a \multiply\leftskip\tw@ \divide\leftskip\thr@@ - \dim@b\dim@a \advance\dim@b-\leftskip - % But if that leaves less than eqnumsep for the other side, we need - % to do some more adjusting. - \ifdim\dim@b<\eqnumsep - \leftskip\dim@a \advance\leftskip-\eqnumsep -\debugwr{Off-center: far side \the\leftskip, near side \the\eqnumsep -(\string\eqnumsep)}% - \else -\debugwr{Off-center: far side \the\leftskip\space (2/3 F), near side \the\dim@b\space (1/3 F)}% - \fi - \fi - \if L\eqnumside - % leftskip=.67F dim@a=.33F (e.g.) - % swap dim@a and leftskip, then add number width to leftskip - % and subtract it from rightskip - \dim@b\dim@a \advance\dim@b-\leftskip - \dim@a\leftskip \leftskip\dim@b - \advance\leftskip\wd\EQ@numbox - \edef\rightskip@shift{\advance\rightskip-\wd\EQ@numbox}% - \fi - \relax % watch it! -} -\let\rightskip@shift\@empty -\def\eq@CRMa{% - \eq@topspace{\vskip\parskip}% - \vbox to\eq@firstht{% - \ifx F\eq@frame - \else - \moveright\leftskip\hbox to\z@{\eq@addframe\hss}% - \fi - \vss}% - \penalty\@M - \skip@c\eq@vspan - \advance\skip@c-\ht\EQ@numbox \advance\skip@c-\dp\EQ@numbox - \divide\skip@c\tw@ - \parskip-\skip@c - \advance\parskip-\ht\EQ@numbox \advance\parskip-\dp\EQ@numbox - \advance\skip@c-\eq@firstht - \vskip\skip@c \nointerlineskip - \hbox to\hsize{\hfil\copy\EQ@numbox}% - \nobreak - \eq@params - \adjust@parshape{CRM}% - \eq@parshape - \nointerlineskip \noindent\add@grp@label \eq@dump@box\unhbox\EQ@box % -% \tracingparagraphs=2 \@@par \tracingparagraphs=0% - \@@par -} -\def\eq@CLM{% - \ifnum\eq@lines=\@ne - \ifdim\eq@freewidth<\wd\EQ@box - \let\eq@shiftnumber\@True - \fi - \fi - \if\eq@shiftnumber - \eq@CLT - \else - \set@leftskip@for@centering - \rightskip\eqrightskip % see also \eq@params - \parfillskip\z@skip - \ifnum\eq@lines>\@ne \eq@topspace{\vskip\parskip}% - \else \vskip\abovedisplayskip - \fi - \vbox to\eq@firstht{% - \ifx F\eq@frame - \else - \moveright\leftskip\hbox to\z@{\eq@addframe\hss}% - \fi - \vss}% - \nointerlineskip - \penalty\@M - \vskip@for@number % also sets parskip for the following material - \copy\EQ@numbox - \nobreak - \eq@params - \rightskip@shift % compensate for left-hand number -\debugmsg{\rightskip=\the\rightskip}% - \eq@parshape -%\debug@box\EQ@box\tracingparagraphs\@ne\debug@para - \nointerlineskip - \noindent\add@grp@label \eq@dump@box\unhbox\EQ@box \@@par - \fi -} -\def\vskip@for@number{% - \skip@c\eq@vspan \advance\skip@c-\ht\EQ@numbox - \advance\skip@c-\dp\EQ@numbox \divide\skip@c\tw@ - \parskip-\skip@c - \advance\parskip-\ht\EQ@numbox \advance\parskip-\dp\EQ@numbox - \advance\skip@c-\eq@firstht - \vskip\skip@c -} -\def\eq@CLT{% - \if\eq@shiftnumber - \if A\eq@layout \eq@reindent@A - \else \leftskip\eq@sidespace \divide\leftskip\tw@ - \fi - \else - \leftskip\eq@sidespace \advance\leftskip\eqnumsep - \ifnum\eq@lines=\@ne - \ifdim\eq@sidespace<2\wd\EQ@numbox - \multiply\leftskip\tw@ \divide\leftskip\thr@@ -%\debugmsg{Shifting off-center: leftskip \the\leftskip}% - \else - \divide\leftskip\tw@ -%\debugmsg{Plenty of room: leftskip \the\leftskip}% - \fi - \else - \divide\leftskip\tw@ - \fi - \fi - \eq@CLTa -} -\def\eq@CLTa{% - \vskip\abovedisplayskip - \copy\EQ@numbox \penalty\@M - \if\eq@shiftnumber \else \kern-\eq@firstht \nointerlineskip \fi - \noindent - \ifx F\eq@frame - \else \vbox to\eq@firstht{\hbox to\z@{\eq@addframe\hss}\vss}% - \fi - \eq@params \eq@parshape - \add@grp@label \eq@dump@box\unhbox\EQ@box\@@par -} -\def\eq@IRM{\leftskip\mathindent \eq@CRMa} -\def\eq@IRB{\leftskip\mathindent \eq@CRBa} -\def\eq@I{% - \leftskip\mathindent - \eq@params - \eq@topspace{\noindent}% - \ifx F\eq@frame - \else - \vbox to\eq@firstht{\hbox to\z@{\eq@addframe\hss}\vss}% - \fi - \eq@dump@box\unhbox\EQ@box\@@par -} -\newcommand\eqframe[2]{\framebox{\z@rule\@height#2\kern#1}} -\def\eq@addframe{% - \hbox to\z@{\dim@a\fboxsep \advance\dim@a\fboxrule - \kern-\dim@a - \vbox to\z@{\kern-\dim@a - \hbox{\eqframe{\eq@bodywidth}{\eq@vspan}}% - \vss - }% - \hss - }% -} -\@saveprimitive\left\@@left -\@saveprimitive\right\@@right -\newcount\lr@level -\def\eq@left{% - \@ifnext .{\eq@nullleft}{\begingroup \let\delimiter\eq@left@a}% -} -\def\eq@right{% - \@ifnext .{\eq@nullright}{\begingroup \let\delimiter\eq@right@a}% -} -\def\eq@left@a#1 #2{\endgroup\@@left\delimiter#1 \after@open} -\def\eq@right@a#1 #2{\endgroup - \@@right\delimiter#1 \after@close\ss@scan{#1}% -} -\def\eq@nullleft#1{\@@left#1\after@open} -\def\eq@nullright#1{\@@right#1\after@close} -\def\delim@reset{% - \let\after@open\relax \let\after@close\relax - \let\left\@@left \let\right\@@right -} -\@ifundefined{bBigg@}{% not defined - \let\big@size\p@ - \def\big{\bBigg@{8.5}}\def\Big{\bBigg@{11.5}}% - \def\bigg{\bBigg@{14.5}}\def\Bigg{\bBigg@{17.5}}% - \def\biggg{\bBigg@{20.5}}\def\Biggg{\bBigg@{23.5}}% -}{} -\def\bBigg@#1#2{% - {\delim@reset - \left#2% - \vrule\@height#1\big@size\@width-\nulldelimiterspace - \right. - }% -} -\def\bigl#1{\mathopen\big{#1}\after@open} -\def\Bigl#1{\mathopen\Big{#1}\after@open} -\def\biggl#1{\mathopen\bigg{#1}\after@open} -\def\Biggl#1{\mathopen\Bigg{#1}\after@open} -\def\bigggl#1{\mathopen\biggg{#1}\after@open} -\def\Bigggl#1{\mathopen\Biggg{#1}\after@open} - -\def\bigr#1{\mathclose\big{#1}\after@close} -\def\Bigr#1{\mathclose\Big{#1}\after@close} -\def\biggr#1{\mathclose\bigg{#1}\after@close} -\def\Biggr#1{\mathclose\Bigg{#1}\after@close} -\def\bigggr#1{\mathclose\biggg{#1}\after@close} -\def\Bigggr#1{\mathclose\Biggg{#1}\after@close} - -%% No change needed, I think. [mjd,1998/12/04] -%%\def\bigm{\mathrel\big} -%%\def\Bigm{\mathrel\Big} -%%\def\biggm{\mathrel\bigg} -%%\def\Biggm{\mathrel\Bigg} -%%\def\bigggm{\mathrel\biggg} -%%\def\Bigggm{\mathrel\Biggg} -\let\m@@DeL\m@DeL \let\m@@DeR\m@DeR \let\m@@DeB\m@DeB -\def\d@@DeL#1#2#3{% - \delimiter"4\@xp\delim@a\csname sd@#1#2#3\endcsname #1#2#3 \after@open -} -\def\d@@DeR#1#2#3{% - \delimiter"5\@xp\delim@a\csname sd@#1#2#3\endcsname #1#2#3 \after@close -} -\def\d@@DeB#1#2#3{% - \delimiter"0\@xp\delim@a\csname sd@#1#2#3\endcsname #1#2#3 \after@bidir -} -\let\after@bidir\@empty -\mathchardef\zero@bop=888 \relax -\mathchardef\bop@incr=4444 \relax -\def\after@open{% - \global\advance\lr@level\@ne - \prebinoppenalty\bop@incr \multiply\prebinoppenalty\lr@level - \advance\prebinoppenalty\zero@bop - \ifnum\eqbreakdepth<\lr@level - \let\m@Bin\m@@Bin - \else - \eq@binoffset=\eqbinoffset - \advance\eq@binoffset\lr@level\eqdelimoffset plus1fill\relax - \def\dt@fill@cancel{\hskip\z@ minus1fill\relax}% - \fi -} -\def\after@close{% - \global\advance\lr@level\m@ne - \ifnum\lr@level<\z@ \eq@lrbad \global\lr@level\z@ \fi - \prebinoppenalty\bop@incr \multiply\prebinoppenalty\lr@level - \advance\prebinoppenalty\zero@bop - \ifnum\eqbreakdepth<\lr@level - \else \let\m@Bin\d@@Bin - \fi - \ifnum\lr@level<\@ne \eq@binoffset=\eqbinoffset\relax \fi -} -\def\eq@lrbad{% - \PackageError{breqn}{Too many closing delimiters?}{% - The unmatched delimiter might be further back.\MessageBreak - \@ehc - }% -} -\let\subsup@flag=\count@ -\def\ss@delim@a#1#2#3#4{\xdef\right@delim@code{\number"#2#3#4}} -\def\ss@scan#1{% - \begingroup - \let\delim@a\ss@delim@a \@tempcnta#1\relax - \endgroup - \subsup@flag\@M \afterassignment\ss@scan@a \let\@let@token=} -\def\ss@scan@a{% - \ifx\@let@token\sb \advance\subsup@flag\@ne\else - \ifx\@let@token\sp \advance\subsup@flag\tw@\else - \ss@finish - \expandafter\@firstoftwo % gobble \ss@scan@b - \fi\fi - \ss@scan@b\@let@token -} -\def\ss@scan@b#1#2{#1{% -% hack! coff! - \let\m@Bin\m@@Bin \let\m@Rel\m@@Rel - #2}\afterassignment\ss@scan@a \let\@let@token=}% -\def\ss@finish{% - \@@vadjust{\penalty\thr@@}% - \penalty\right@delim@code \penalty-\subsup@flag \keep@glue -} -\def\eq@lrunpack{\setbox\z@\lastbox - \unskip \nointerlineskip - \noindent\unhbox\z@ \unskip - \subsup@flag-\lastpenalty \unpenalty - \xdef\right@delim@code{\number\lastpenalty}% - \unpenalty - \ifnum\subsup@flag>\@M - \advance\subsup@flag-\@M - \setbox\tw@\lastbox - \else \setbox\tw@\box\voidb@x - \fi - \setbox\z@\lastbox - \ifvoid\tw@ \unhbox\z@ - \else \lrss@reattach % uses \subsup@flag, box\z@, box\tw@ - \fi - \penalty-\@Mi\z@rule\@@par - \setbox\z@\lastbox \unskip\unpenalty -%%{\showboxbreadth\maxdimen\showboxdepth99\showlists}% -} -\dimendef\sub@depth=8 \dimendef\sup@base=6 -\dimendef\prelim@sub@depth=4 \dimendef\prelim@sup@base=2 -\def\sym@xheight{\fontdimen5\textfont\tw@} -\def\sup@base@one{\fontdimen13\textfont\tw@} -\def\sub@base@one{\fontdimen16\textfont\tw@} -\def\sub@base@two{\fontdimen17\textfont\tw@} -\def\sup@drop{\fontdimen18\scriptfont\tw@} -\def\sub@drop{\fontdimen19\scriptfont\tw@} -\providecommand{\mathaxis}{\fontdimen22\textfont\tw@} -\def\lrss@reattach{% - \begingroup - % "The TeXbook" Appendix G step 18: - \prelim@sup@base\ht\z@ \advance\prelim@sup@base-\sup@drop - \prelim@sub@depth\dp\z@ \advance\prelim@sub@depth\sub@drop - \unhbox\z@ - \ifcase\subsup@flag % case 0: this can't happen - \or \lr@subscript % case 1: subscript only - \or \lr@superscript % case 2: superscript only - \else \lr@subsup % case 3: sub and superscript both - \fi - \endgroup -} -\def\lr@subscript{% - \sub@depth\sub@base@one - \ifdim\prelim@sub@depth>\sub@depth \sub@depth\prelim@sub@depth\fi - \dim@a\ht\tw@ \advance\dim@a -.8\sym@xheight - \ifdim\dim@a>\sub@depth \sub@depth\dim@a \fi - \twang@adjust\sub@depth - \lower\sub@depth\box\tw@ -} -\def\lr@superscript{% - \sup@base\sup@base@one - \ifdim\prelim@sup@base>\sup@base \sup@base\prelim@sup@base\fi - \dim@a\dp\tw@ \advance\dim@a -.25\sym@xheight - \ifdim\dim@a>\sup@base \sup@base\dim@a \fi - \twang@adjust\sup@base - \raise\sup@base\box\tw@ -} -\def\lr@subsup{% - \sub@depth\sub@base@two - \ifdim\prelim@sub@depth>\sub@depth \sub@depth\prelim@sub@depth \fi - \twang@adjust\sub@depth - \lower\sub@depth\box\tw@ -} -\def\twang@adjust#1{% - \begingroup - \@ifundefined{twang@\right@delim@code}{}{% - \dim@d=#1\advance\dim@d-\mathaxis - % put an upper limit on the adjustment - \ifdim\dim@d>1em \dim@d 1em \fi - \kern\csname twang@\right@delim@code\endcsname\dim@d - }% - \endgroup -} -\newcommand{\DeclareTwang}[2]{% - \ifcat.\@nx#1\begingroup - \lccode`\~=`#1\lowercase{\endgroup \DeclareTwang{~}}{#2}% - \else - \@xp\decl@twang#1?\@nil{#2}% - \fi -} -\def\decl@twang#1#2#3#4#5#6#7\@nil#8{% - \@namedef{twang@\number"#4#5#6}{#8}% -} -\DeclareTwang{\rangle}{-.4} -\DeclareTwang{)}{-.33} -\DeclareTwang{\rbrace}{-.25} -\newenvironment{dseries}{\@eq@numbertrue \@optarg\@dseries{}}{}% -\def\enddseries#1{\check@punct@or@qed} -\def\@dseries[#1]{% - \def\display@setup{\displaystyle}% - \let\eq@centerlines\@True - \@dmath[#1]% - \mathsurround\z@\@@math \penalty\@Mi - \let\endmath\ends@math - \def\premath{% - \ifdim\lastskip<.49em \unskip\fi - \ifnum\lastpenalty<\@M\dquad\fi - }% - \def\postmath{\eq@addpunct \penalty-99 \dquad \@ignoretrue }% -} -\def\end@dseries{% - \unskip\unpenalty - \@@endmath \mathsurround\z@ \end@dmath -} -\newenvironment{dseries*}{\@eq@numberfalse \@optarg\@dseries{}}{} -\@namedef{enddseries*}#1{\check@punct@or@qed} -\@namedef{end@dseries*}{\end@dseries} -\renewenvironment{math}{% - \leavevmode \premath - \ifmmode\@badmath\else\@@math\fi -}{% - \ifmmode\@@endmath\else\@badmath\fi -} -\def\ends@math#1{\check@punct@or@qed} -\def\end@math{% - \ifmmode\@@endmath\else\@badmath\fi - \postmath -} -\newcommand\dquad{\hskip1em minus.25em } -\newcommand\premath{}\newcommand\postmath{} -\let\eq@group\@False -\global\let\GRP@top\@True -\newenvironment{dgroup}{% - \@eq@numbertrue \@optarg\@dgroup{}% -}{% - \end@dgroup{\grp@resetnumber}% -} -\newtoks\GRP@queue -\newenvironment{dgroup*}{% - \@eq@numberfalse \@optarg\@dgroup{}% -}{ - \end@dgroup{}% -} -\def\@dgroup[#1]{% - \let\eq@group\@True \global\let\GRP@top\@True - \global\GRP@queue\@emptytoks \global\setbox\GRP@box\box\voidb@x - \global\let\GRP@label\@empty - \gdef\GRP@info{\grp@wdL\z@ \grp@bodywidth\z@ \grp@linewidth\z@}% - \eq@prelim - \setkeys{breqn}{#1}% - \if@eq@number \grp@setnumber \fi -} -\def\end@dgroup#1{% - \EQ@displayinfo \grp@finish - #1% \grp@resetnumber -} -\@ifundefined{c@parentequation}{\newcounter{parentequation}}{} -\global\let\GRP@label\@empty -\def\add@grp@label{% - \ifx\@empty\GRP@label - \else \GRP@label \global\let\GRP@label\@empty - \fi -} -\def\grp@setnumber{% - \global\let\GRP@label\next@label \global\let\next@label\@empty - \eq@setnumber - \protected@edef\theparentequation{\theequation}% - \setcounter{parentequation}{\value{equation}}% - \setcounter{equation}{0}% - \def\theequation{\theparentequation\alph{equation}}% -} -\def\grp@resetnumber{% - \setcounter{equation}{\value{parentequation}}% -} -\gdef\GRP@info{\grp@wdL\z@ \grp@bodywidth\z@ \grp@linewidth\z@} -\newbox\GRP@box -\def\grp@push{% - \global\GRP@queue\@xp\@xp\@xp{\@xp\the\@xp\GRP@queue - \@xp\eq@zek\@xp{\EQ@trial}% - }% - \global\setbox\GRP@box\vbox{% - \hbox{\box\EQ@box\box\EQ@copy\penalty\@ne\copy\EQ@numbox}% - \unvbox\GRP@box - }% - \EQ@trial \GRP@info - \xdef\GRP@info{% - \grp@wdL=\ifdim\eq@wdL>\grp@wdL \the\eq@wdL \else \the\grp@wdL \fi - \grp@bodywidth=\ifdim\eq@bodywidth>\grp@bodywidth \the\eq@bodywidth \else \the\grp@bodywidth \fi - \grp@linewidth=% - \ifdim\eq@linewidth>\grp@linewidth \the\eq@linewidth - \else \the\grp@linewidth - \fi - \relax - }% -} -\def\grp@finish{% -\debug@box\GRP@box -%\debugmsg{\GRP@queue: \the\GRP@queue}% - \GRP@info - \grp@wdL\z@ \grp@bodywidth\z@ - \let\eq@zek\eqgrp@prelim - \the\GRP@queue - \advance\grp@bodywidth\grp@wdL -\debugmsg{grp@wdL \the\grp@wdL, grp@bodywidth \the\grp@bodywidth}% - \let\eq@zek\eqgrpeq@zek - \the\GRP@queue - \let\eq@zek\relax - \eq@botspace -} -\def\eqgrp@prelim#1{% - #1% - \ifdim\eq@wdL>\grp@wdL \grp@wdL\eq@wdL \fi - \dim@a\eq@bodywidth \advance\dim@a-\eq@wdL - \ifdim\dim@a>\grp@bodywidth \grp@bodywidth\dim@a \fi -} -\def\eqgrpeq@zek#1{% - \global\setbox\GRP@box\vbox{% - \unvbox\GRP@box - \setbox\z@\lastbox - \setbox\tw@\hbox{\unhbox\z@ - \ifnum\lastpenalty=\@ne - \else - \global\setbox\EQ@numbox\lastbox - \fi - \unpenalty - \global\setbox\EQ@copy\lastbox - \global\setbox\EQ@box\lastbox - }% - }% - \begingroup \let\eq@botspace\relax - #1% - \eq@finish - \endgroup -} -\newskip\darraycolsep \darraycolsep 20pt plus1fil minus12pt -\newcount\cur@row \newcount\cur@col -\def\@tempa#1#2#3{% - \cur@col#1 \hfil - \setbox\z@\hbox{$\displaystyle####\m@th$}\@nx\col@box - \tabskip\z@skip - &\cur@col#2 \hfil - \setbox\z@\hbox{$\displaystyle\mathord{}####\mathord{}\m@th$}\@nx\col@box - \hfil - &\cur@col#3 \setbox\z@\hbox{$\displaystyle####\m@th$}\@nx\col@box - \hfil\tabskip\darraycolsep -} -\xdef\darray@preamble{% - \@tempa 123&\@tempa 456&\@tempa 789% - &\@tempa{10}{11}{12}&\@tempa{13}{14}{15}&\@tempa{16}{17}{18}% - \cr -} -\@ifundefined{Mathstrut@}{\let\Mathstrut@\strut}{} -\def\darray@cr{\Mathstrut@\cr} -\def\col@box{% -%\debugmsg{Col \number\cur@row,\number\cur@col: \the\wd\z@\space x \the\ht\z@+\the\dp\z@}% - \unhbox\z@ -} -\newenvironment{darray}{\@optarg\@darray{}}{} -\def\@darray[#1]{% - \if\eq@group\else\eq@prelim\fi - \global\let\@preamble\@empty - \setkeys{breqn}{#1}% - \the\eqstyle \eq@setnumber - \ifx\@preamble\@empty \global\let\@preamble\darray@preamble \fi - \check@mathfonts - % \let\check@mathfonts\relax % tempting, but too risky - \@xp\let\csname\string\ \endcsname\darray@cr - \setbox\z@\vbox\bgroup - \everycr{\noalign{\global\advance\cur@row\@ne}}% - \tabskip\z@skip \cur@col\z@ - \global\cur@row\z@ - \penalty\@ne % flag for \dar@repack - \halign\@xp\bgroup\@preamble -} -\def\enddarray#1{\check@punct@or@qed} -\def\end@darray{% - \ifvmode\else \eq@addpunct \Mathstrut@\fi\crcr \egroup - \dar@capture - \egroup -} -\def\dar@capture{% -%% \showboxbreadth\maxdimen\showboxdepth99\showlists - \eq@wdL\z@ \eq@wdRmax\z@ \eq@sidespace\maxdimen - \dar@repack -} -\def\dar@repack{% - \unpenalty - \setbox\tw@\lastbox -%\batchmode{\showboxbreadth\maxdimen\showboxdepth99\showbox\tw@}\errorstopmode - \global\setbox\EQ@box\hbox{% - \hbox{\unhcopy\tw@\unskip}\penalty-\@M \unhbox\EQ@box}% - \global\setbox\EQ@copy\hbox{% - \hbox{\unhbox\tw@\unskip}\penalty-\@M \unhbox\EQ@copy}% - \unskip - \ifcase\lastpenalty \else\@xp\@gobble\fi - \dar@repack -} -\newskip\conditionsep \conditionsep=10pt minus5pt% -\newcommand{\conditionpunct}{,} -\let\cond@gobble\@firstofone -\newcommand\condition{% - \begingroup\@tempswatrue - \@ifstar{\@tempswafalse \condition@a}\condition@a -} -\newcommand\condition@a[2][\conditionpunct]{% - \hbox{#1}\hskip\conditionsep - \if@tempswa \@xp\hbox \else \@xp\condition@b\fi - {#2}% - \endgroup - \let\cond@gobble\@gobble -} -\newcommand\condition@b[1]{% - \cond@gobble{\hskip\conditionsep}% - \textmath@setup #1% -} -\newenvironment{dsuspend}{% - \global\setbox\EQ@box\vbox\bgroup \@parboxrestore - \parshape 1 \displayindent \displaywidth\relax - \hsize=\columnwidth \noindent\ignorespaces -}{% - \par\egroup - \global\setbox\GRP@box\vbox{% - \vbox{\copy\EQ@box\vtop{\unvbox\EQ@box}}% - \unvbox\GRP@box - }% - \global\GRP@queue\@xp{\the\GRP@queue - \eq@zek{\gdef\EQ@trial{}}% - }% -} -\newcommand\breqn@intertext[1]{\dsuspend#1\enddsuspend} -\renewcommand{\*}{% - \if@display - \setbox\z@\hbox{\mathsurround\z@$\mkern\eq@binoffset$}% - \discretionary{}{% - \kern\the\wd\z@ \textchar\discretionarytimes - }{}% - \thinspace - \else - \discretionary{\thinspace\textchar\discretionarytimes}{}{}% - \fi -} -\newcommand{\discretionarytimes}{\times} -\def\nref#1{\@xp\@nref\csname r@#1\endcsname} -\def\@nref#1#2{\ifx\relax#1??\else \@xp\@firstoftwo#1\fi} -\breqnpopcats |