summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2007-12-15 00:58:47 +0000
committerKarl Berry <karl@freefriends.org>2007-12-15 00:58:47 +0000
commit954e518677de512ede9e6ee73428d4a0b8a933c4 (patch)
treeb1c4281d69926b8ce4d9ee22f0fb1aad321fb9be
parentfd485c0f15d7cf5ea685ec6ff197e384025ada26 (diff)
mh update (11dec07)
git-svn-id: svn://tug.org/texlive/trunk@5787 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/mh/README72
-rw-r--r--Master/texmf-dist/doc/latex/mh/breqn.pdfbin0 -> 377686 bytes
-rw-r--r--Master/texmf-dist/doc/latex/mh/cmbase.sym367
-rw-r--r--Master/texmf-dist/doc/latex/mh/empheq.pdfbin219551 -> 276729 bytes
-rw-r--r--Master/texmf-dist/doc/latex/mh/empheq07.pdfbin55835 -> 128399 bytes
-rw-r--r--Master/texmf-dist/doc/latex/mh/eqbreaks.pdf976
-rw-r--r--Master/texmf-dist/doc/latex/mh/eqlayouts.pdfbin0 -> 110022 bytes
-rw-r--r--Master/texmf-dist/doc/latex/mh/eqlayouts.tex346
-rw-r--r--Master/texmf-dist/doc/latex/mh/flexisym.pdfbin0 -> 139528 bytes
-rw-r--r--Master/texmf-dist/doc/latex/mh/mathpazo.sym367
-rw-r--r--Master/texmf-dist/doc/latex/mh/mathptmx.sym367
-rw-r--r--Master/texmf-dist/doc/latex/mh/mathstyle.pdfbin0 -> 86156 bytes
-rw-r--r--Master/texmf-dist/doc/latex/mh/mathtools.pdfbin210111 -> 375263 bytes
-rw-r--r--Master/texmf-dist/doc/latex/mh/mhsetup.pdfbin82328 -> 127028 bytes
-rw-r--r--Master/texmf-dist/doc/latex/mh/msabm.sym253
-rw-r--r--Master/texmf-dist/source/latex/mh/breqn.dtx6648
-rw-r--r--Master/texmf-dist/source/latex/mh/empheq.dtx200
-rw-r--r--Master/texmf-dist/source/latex/mh/empheq07.dtx148
-rw-r--r--Master/texmf-dist/source/latex/mh/flexisym.dtx1279
-rw-r--r--Master/texmf-dist/source/latex/mh/mathstyle.dtx396
-rw-r--r--Master/texmf-dist/source/latex/mh/mathtools.dtx262
-rw-r--r--Master/texmf-dist/source/latex/mh/mhsetup.dtx166
-rw-r--r--Master/texmf-dist/tex/latex/mh/breqn.sty2056
-rw-r--r--Master/texmf-dist/tex/latex/mh/empheq.sty419
-rw-r--r--Master/texmf-dist/tex/latex/mh/empheq07.sty30
-rw-r--r--Master/texmf-dist/tex/latex/mh/flexisym.sty293
-rw-r--r--Master/texmf-dist/tex/latex/mh/mathstyle.sty161
-rw-r--r--Master/texmf-dist/tex/latex/mh/mathtools.sty119
-rw-r--r--Master/texmf-dist/tex/latex/mh/mhsetup.sty32
-rw-r--r--Master/texmf-dist/tex/latex/mh/ntheorem.fix402
-rwxr-xr-xMaster/tlpkg/bin/ctan2tds7
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
32 files changed, 14675 insertions, 693 deletions
diff --git a/Master/texmf-dist/doc/latex/mh/README b/Master/texmf-dist/doc/latex/mh/README
index 569f67b4eae..d41d1ccb3db 100644
--- a/Master/texmf-dist/doc/latex/mh/README
+++ b/Master/texmf-dist/doc/latex/mh/README
@@ -1,38 +1,54 @@
- The mh bundle
- =============
- Morten H\o gholm (c) 2002-2004
- email: moho01ab@student.cbs.dk
- License: LaTeX Project Public License
-
-The files in the mh bundle are:
-
- mhsetup.dtx mhsetup.ins
- mathtools.dtx mathtools.ins
- empheq.dtx empheq.ins
- empheq07.dtx empheq07.ins
-
+The mh bundle
+=============
+Morten Hoegholm (c) 2002-2007
+email: mh.ctan@gmail.com
+License: LaTeX Project Public License
+
+The files in the mh bundle are listed are
+ breqn.dtx
+ flexisym.dtx
+ mathstyle.dtx
+ mhsetup.dtx
+ mathtools.dtx
+ empheq.dtx
+ empheq07.dtx
+ eqlayouts.tex
+ eqbreaks.pdf
and derived files. The derived files of each .dtx-file are listed
at the top of the respective .dtx-file.
INSTALLATION
============
-This follows the usual procedure of .dtx-files. Run LaTeX on each
-.ins-file to get the runtime files. These should all be placed in
- TEXMF/tex/latex/mh
-on your computer, where TEXMF is your (local) texmf tree.
-
+See the .dtx-files for details.
DESCRIPTION
===========
-The mh bundle is a series of packages designed to enhance the
-appearance of documents containing a lot of math. The main
-backbone is amsmath, so those unfamiliar with this required part
-of the LaTeX system will probably not find the packages very
-useful.
+breqn
+=========
+
+The breqn package facilitates automatic line-breaking of displayed
+math expressions. The package was originally developed by Michael
+J. Downes.
+
+flexisym
+=========
+
+This package turns math symbols into macros.
+Is is required by breqn so that breqn can make intelligent decisions
+with respect to line-breaking and other details.
+
+mathstyle
+=========
+
+Ensures uniform syntax for math subscript (_) and superscript (^)
+operations so that they always take exactly one argument.
+Grants access to the current mathstyle which eases several tasks such
+as avoiding the many pitfalls of \mathchoice and \mathpalette.
+This package is used by flexisym.
-mathtools v1.01a 2004/10/10
+mathtools
=========
The mathtools package provides many useful tools for mathematical
@@ -53,7 +69,7 @@ of amsmath and standard LaTeX. It provides:
mathtools requires mhsetup.
-empheq v2.11a 2004/10/10
+empheq
======
The empheq package is a visual markup extension designed to
@@ -68,7 +84,7 @@ function on top of amsmath. It features:
empheq requires mathtools.
-empheq07 v0.7d 2004/07/27
+empheq07
========
The obsolete version of the empheq package. It is incompatible
@@ -76,7 +92,7 @@ with current empheq (and will continue to be so) and is only
provided to make old documents work.
-mhsetup v1.01a 2004/10/10
+mhsetup
=======
The mhsetup package defines various programming tools needed by
@@ -85,4 +101,4 @@ probably be an integral part of LaTeX3.
===========
-This README file was last revised 2004/10/10.
+This README file was last revised 2007/12/10.
diff --git a/Master/texmf-dist/doc/latex/mh/breqn.pdf b/Master/texmf-dist/doc/latex/mh/breqn.pdf
new file mode 100644
index 00000000000..120e081c698
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/mh/breqn.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/mh/cmbase.sym b/Master/texmf-dist/doc/latex/mh/cmbase.sym
new file mode 100644
index 00000000000..151aac3c742
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/mh/cmbase.sym
@@ -0,0 +1,367 @@
+%%
+%% This is file `cmbase.sym',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% flexisym.dtx (with options: `cmbase')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 1997-2003 by Michael J. Downes
+%% Copyright (C) 2007 by Morten Hoegholm <mh.ctan@gmail.com>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Morten Hoegholm.
+%%
+%% This work consists of the main source file flexisym.dtx
+%% and the derived files
+%% flexisym.sty, flexisym.pdf, flexisym.ins, flexisym.drv,
+%% cmbase.sym, mathpazo.sym, mathptmx.sym, msabm.sym.
+%%
+\ProvidesSymbols{cmbase}[2001/09/07 v0.91]
+\@xp\xdef\csname mg@OT1\endcsname{\hexnumber@\symoperators}
+\@xp\xdef\csname mg@OML\endcsname{\hexnumber@\symletters}
+\@xp\xdef\csname mg@OMS\endcsname{\hexnumber@\symsymbols}
+\@xp\xdef\csname mg@OMX\endcsname{\hexnumber@\symlargesymbols}
+\gdef\mg@bin{\mg@OMS}
+\gdef\mg@del{\mg@OMX}
+\xdef\mg@digit{\@xp\@nx\csname mg@OT1\endcsname}
+\gdef\mg@latin{\mg@OML}
+\global\let\mg@Latin\mg@latin
+\global\let\mg@greek\mg@latin
+\global\let\mg@Greek\mg@digit
+\global\let\mg@rel\mg@bin
+\global\let\mg@ord\mg@bin
+\global\let\mg@cop\mg@del
+\DeclareFlexSymbol{!} {Pun}{OT1}{21}
+\DeclareFlexSymbol{+} {Bin}{OT1}{2B}
+\DeclareFlexSymbol{:} {Rel}{OT1}{3A}
+\DeclareFlexSymbol{\colon}{Pun}{OT1}{3A}
+\DeclareFlexSymbol{;} {Pun}{OT1}{3B}
+\DeclareFlexSymbol{=} {Rel}{OT1}{3D}
+\DeclareFlexSymbol{?} {Pun}{OT1}{3F}
+\DeclareFlexSymbol{\Gamma} {Var}{Greek}{00}
+\DeclareFlexSymbol{\Delta} {Var}{Greek}{01}
+\DeclareFlexSymbol{\Theta} {Var}{Greek}{02}
+\DeclareFlexSymbol{\Lambda} {Var}{Greek}{03}
+\DeclareFlexSymbol{\Xi} {Var}{Greek}{04}
+\DeclareFlexSymbol{\Pi} {Var}{Greek}{05}
+\DeclareFlexSymbol{\Sigma} {Var}{Greek}{06}
+\DeclareFlexSymbol{\Upsilon}{Var}{Greek}{07}
+\DeclareFlexSymbol{\Phi} {Var}{Greek}{08}
+\DeclareFlexSymbol{\Psi} {Var}{Greek}{09}
+\DeclareFlexSymbol{\Omega} {Var}{Greek}{0A}
+\DeclareFlexSymbol{0}{Var}{digit}{30}
+\DeclareFlexSymbol{1}{Var}{digit}{31}
+\DeclareFlexSymbol{2}{Var}{digit}{32}
+\DeclareFlexSymbol{3}{Var}{digit}{33}
+\DeclareFlexSymbol{4}{Var}{digit}{34}
+\DeclareFlexSymbol{5}{Var}{digit}{35}
+\DeclareFlexSymbol{6}{Var}{digit}{36}
+\DeclareFlexSymbol{7}{Var}{digit}{37}
+\DeclareFlexSymbol{8}{Var}{digit}{38}
+\DeclareFlexSymbol{9}{Var}{digit}{39}
+\DeclareFlexSymbol{,}{Pun}{OML}{3B}
+\DeclareFlexSymbol{.}{Ord}{OML}{3A}
+\DeclareFlexSymbol{/}{Ord}{OML}{3D}
+\DeclareFlexSymbol{<}{Rel}{OML}{3C}
+\DeclareFlexSymbol{>}{Rel}{OML}{3E}
+\DeclareFlexSymbol{\alpha}{Var}{greek}{0B}
+\DeclareFlexSymbol{\beta}{Var}{greek}{0C}
+\DeclareFlexSymbol{\gamma}{Var}{greek}{0D}
+\DeclareFlexSymbol{\delta}{Var}{greek}{0E}
+\DeclareFlexSymbol{\epsilon}{Var}{greek}{0F}
+\DeclareFlexSymbol{\zeta}{Var}{greek}{10}
+\DeclareFlexSymbol{\eta}{Var}{greek}{11}
+\DeclareFlexSymbol{\theta}{Var}{greek}{12}
+\DeclareFlexSymbol{\iota}{Var}{greek}{13}
+\DeclareFlexSymbol{\kappa}{Var}{greek}{14}
+\DeclareFlexSymbol{\lambda}{Var}{greek}{15}
+\DeclareFlexSymbol{\mu}{Var}{greek}{16}
+\DeclareFlexSymbol{\nu}{Var}{greek}{17}
+\DeclareFlexSymbol{\xi}{Var}{greek}{18}
+\DeclareFlexSymbol{\pi}{Var}{greek}{19}
+\DeclareFlexSymbol{\rho}{Var}{greek}{1A}
+\DeclareFlexSymbol{\sigma}{Var}{greek}{1B}
+\DeclareFlexSymbol{\tau}{Var}{greek}{1C}
+\DeclareFlexSymbol{\upsilon}{Var}{greek}{1D}
+\DeclareFlexSymbol{\phi}{Var}{greek}{1E}
+\DeclareFlexSymbol{\chi}{Var}{greek}{1F}
+\DeclareFlexSymbol{\psi}{Var}{greek}{20}
+\DeclareFlexSymbol{\omega}{Var}{greek}{21}
+\DeclareFlexSymbol{\varepsilon}{Var}{greek}{22}
+\DeclareFlexSymbol{\vartheta}{Var}{greek}{23}
+\DeclareFlexSymbol{\varpi}{Var}{greek}{24}
+\DeclareFlexSymbol{\varrho}{Var}{greek}{25}
+\DeclareFlexSymbol{\varsigma}{Var}{greek}{26}
+\DeclareFlexSymbol{\varphi}{Var}{greek}{27}
+\DeclareFlexSymbol{\imath}{Var}{OML}{7B}
+\DeclareFlexSymbol{\jmath}{Var}{OML}{7C}
+\DeclareFlexSymbol{\ell}{Ord}{OML}{60}
+\DeclareFlexSymbol{\wp}{Ord}{OML}{7D}
+\DeclareFlexSymbol{\partial}{Ord}{OML}{40}
+\DeclareFlexSymbol{\flat}{Ord}{OML}{5B}
+\DeclareFlexSymbol{\natural}{Ord}{OML}{5C}
+\DeclareFlexSymbol{\sharp}{Ord}{OML}{5D}
+\DeclareFlexSymbol{\triangleleft}{Bin}{OML}{2F}
+\DeclareFlexSymbol{\triangleright}{Bin}{OML}{2E}
+\DeclareFlexSymbol{\star}{Bin}{OML}{3F}
+\DeclareFlexSymbol{\smile}{Rel}{OML}{5E}
+\DeclareFlexSymbol{\frown}{Rel}{OML}{5F}
+\DeclareFlexSymbol{\leftharpoonup}{Rel}{OML}{28}
+\DeclareFlexSymbol{\leftharpoondown}{Rel}{OML}{29}
+\DeclareFlexSymbol{\rightharpoonup}{Rel}{OML}{2A}
+\DeclareFlexSymbol{\rightharpoondown}{Rel}{OML}{2B}
+\DeclareFlexSymbol{a}{Var}{latin}{61}
+\DeclareFlexSymbol{b}{Var}{latin}{62}
+\DeclareFlexSymbol{c}{Var}{latin}{63}
+\DeclareFlexSymbol{d}{Var}{latin}{64}
+\DeclareFlexSymbol{e}{Var}{latin}{65}
+\DeclareFlexSymbol{f}{Var}{latin}{66}
+\DeclareFlexSymbol{g}{Var}{latin}{67}
+\DeclareFlexSymbol{h}{Var}{latin}{68}
+\DeclareFlexSymbol{i}{Var}{latin}{69}
+\DeclareFlexSymbol{j}{Var}{latin}{6A}
+\DeclareFlexSymbol{k}{Var}{latin}{6B}
+\DeclareFlexSymbol{l}{Var}{latin}{6C}
+\DeclareFlexSymbol{m}{Var}{latin}{6D}
+\DeclareFlexSymbol{n}{Var}{latin}{6E}
+\DeclareFlexSymbol{o}{Var}{latin}{6F}
+\DeclareFlexSymbol{p}{Var}{latin}{70}
+\DeclareFlexSymbol{q}{Var}{latin}{71}
+\DeclareFlexSymbol{r}{Var}{latin}{72}
+\DeclareFlexSymbol{s}{Var}{latin}{73}
+\DeclareFlexSymbol{t}{Var}{latin}{74}
+\DeclareFlexSymbol{u}{Var}{latin}{75}
+\DeclareFlexSymbol{v}{Var}{latin}{76}
+\DeclareFlexSymbol{w}{Var}{latin}{77}
+\DeclareFlexSymbol{x}{Var}{latin}{78}
+\DeclareFlexSymbol{y}{Var}{latin}{79}
+\DeclareFlexSymbol{z}{Var}{latin}{7A}
+\DeclareFlexSymbol{A}{Var}{Latin}{41}
+\DeclareFlexSymbol{B}{Var}{Latin}{42}
+\DeclareFlexSymbol{C}{Var}{Latin}{43}
+\DeclareFlexSymbol{D}{Var}{Latin}{44}
+\DeclareFlexSymbol{E}{Var}{Latin}{45}
+\DeclareFlexSymbol{F}{Var}{Latin}{46}
+\DeclareFlexSymbol{G}{Var}{Latin}{47}
+\DeclareFlexSymbol{H}{Var}{Latin}{48}
+\DeclareFlexSymbol{I}{Var}{Latin}{49}
+\DeclareFlexSymbol{J}{Var}{Latin}{4A}
+\DeclareFlexSymbol{K}{Var}{Latin}{4B}
+\DeclareFlexSymbol{L}{Var}{Latin}{4C}
+\DeclareFlexSymbol{M}{Var}{Latin}{4D}
+\DeclareFlexSymbol{N}{Var}{Latin}{4E}
+\DeclareFlexSymbol{O}{Var}{Latin}{4F}
+\DeclareFlexSymbol{P}{Var}{Latin}{50}
+\DeclareFlexSymbol{Q}{Var}{Latin}{51}
+\DeclareFlexSymbol{R}{Var}{Latin}{52}
+\DeclareFlexSymbol{S}{Var}{Latin}{53}
+\DeclareFlexSymbol{T}{Var}{Latin}{54}
+\DeclareFlexSymbol{U}{Var}{Latin}{55}
+\DeclareFlexSymbol{V}{Var}{Latin}{56}
+\DeclareFlexSymbol{W}{Var}{Latin}{57}
+\DeclareFlexSymbol{X}{Var}{Latin}{58}
+\DeclareFlexSymbol{Y}{Var}{Latin}{59}
+\DeclareFlexSymbol{Z}{Var}{Latin}{5A}
+\DeclareFlexSymbol{\ldotPun}{Pun}{OML}{3A}
+\def\ldotp{\ldotPun}
+\DeclareFlexSymbol{\lhookRel}{Rel}{OML}{2C}
+\DeclareFlexSymbol{\rhookRel}{Rel}{OML}{2D}
+\DeclareFlexSymbol{*}{Bin}{bin}{03} % \ast
+\DeclareFlexSymbol{-}{Bin}{bin}{00}
+\DeclareFlexSymbol{|}{Ord}{OMS}{6A}
+\DeclareFlexSymbol{\aleph}{Ord}{ord}{40}
+\DeclareFlexSymbol{\Re}{Ord}{ord}{3C}
+\DeclareFlexSymbol{\Im}{Ord}{ord}{3D}
+\DeclareFlexSymbol{\infty}{Ord}{ord}{31}
+\DeclareFlexSymbol{\prime}{Ord}{ord}{30}
+\DeclareFlexSymbol{\emptyset}{Ord}{ord}{3B}
+\DeclareFlexSymbol{\nabla}{Ord}{ord}{72}
+\DeclareFlexSymbol{\top}{Ord}{ord}{3E}
+\DeclareFlexSymbol{\bot}{Ord}{ord}{3F}
+\DeclareFlexSymbol{\triangle}{Ord}{ord}{34}
+\DeclareFlexSymbol{\forall}{Ord}{ord}{38}
+\DeclareFlexSymbol{\exists}{Ord}{ord}{39}
+\DeclareFlexSymbol{\neg}{Ord}{ord}{3A}
+\DeclareFlexSymbol{\clubsuit}{Ord}{ord}{7C}
+\DeclareFlexSymbol{\diamondsuit}{Ord}{ord}{7D}
+\DeclareFlexSymbol{\heartsuit}{Ord}{ord}{7E}
+\DeclareFlexSymbol{\spadesuit}{Ord}{ord}{7F}
+\DeclareFlexSymbol{\smallint}{COs}{OMS}{73}
+\DeclareFlexSymbol{\bigtriangleup}{Bin}{bin}{34}
+\DeclareFlexSymbol{\bigtriangledown}{Bin}{bin}{35}
+\DeclareFlexSymbol{\wedge}{Bin}{bin}{5E}
+\DeclareFlexSymbol{\vee}{Bin}{bin}{5F}
+\DeclareFlexSymbol{\cap}{Bin}{bin}{5C}
+\DeclareFlexSymbol{\cup}{Bin}{bin}{5B}
+\DeclareFlexSymbol{\ddagger}{Bin}{bin}{7A}
+\DeclareFlexSymbol{\dagger}{Bin}{bin}{79}
+\DeclareFlexSymbol{\sqcap}{Bin}{bin}{75}
+\DeclareFlexSymbol{\sqcup}{Bin}{bin}{74}
+\DeclareFlexSymbol{\uplus}{Bin}{bin}{5D}
+\DeclareFlexSymbol{\amalg}{Bin}{bin}{71}
+\DeclareFlexSymbol{\diamond}{Bin}{bin}{05}
+\DeclareFlexSymbol{\bullet}{Bin}{bin}{0F}
+\DeclareFlexSymbol{\wr}{Bin}{bin}{6F}
+\DeclareFlexSymbol{\div}{Bin}{bin}{04}
+\DeclareFlexSymbol{\odot}{Bin}{bin}{0C}
+\DeclareFlexSymbol{\oslash}{Bin}{bin}{0B}
+\DeclareFlexSymbol{\otimes}{Bin}{bin}{0A}
+\DeclareFlexSymbol{\ominus}{Bin}{bin}{09}
+\DeclareFlexSymbol{\oplus}{Bin}{bin}{08}
+\DeclareFlexSymbol{\mp}{Bin}{bin}{07}
+\DeclareFlexSymbol{\pm}{Bin}{bin}{06}
+\DeclareFlexSymbol{\circ}{Bin}{bin}{0E}
+\DeclareFlexSymbol{\bigcirc}{Bin}{bin}{0D}
+\DeclareFlexSymbol{\setminus}{Bin}{bin}{6E}
+\DeclareFlexSymbol{\cdot}{Bin}{bin}{01}
+\DeclareFlexSymbol{\ast}{Bin}{bin}{03}
+\DeclareFlexSymbol{\times}{Bin}{bin}{02}
+\DeclareFlexSymbol{\propto}{Rel}{rel}{2F}
+\DeclareFlexSymbol{\sqsubseteq}{Rel}{rel}{76}
+\DeclareFlexSymbol{\sqsupseteq}{Rel}{rel}{77}
+\DeclareFlexSymbol{\parallel}{Rel}{rel}{6B}
+\DeclareFlexSymbol{\mid}{Rel}{rel}{6A}
+\DeclareFlexSymbol{\dashv}{Rel}{rel}{61}
+\DeclareFlexSymbol{\vdash}{Rel}{rel}{60}
+\DeclareFlexSymbol{\nearrow}{Rel}{rel}{25}
+\DeclareFlexSymbol{\searrow}{Rel}{rel}{26}
+\DeclareFlexSymbol{\nwarrow}{Rel}{rel}{2D}
+\DeclareFlexSymbol{\swarrow}{Rel}{rel}{2E}
+\DeclareFlexSymbol{\Leftrightarrow}{Rel}{rel}{2C}
+\DeclareFlexSymbol{\Leftarrow}{Rel}{rel}{28}
+\DeclareFlexSymbol{\Rightarrow}{Rel}{rel}{29}
+\DeclareFlexSymbol{\leq}{Rel}{rel}{14}
+\DeclareFlexSymbol{\geq}{Rel}{rel}{15}
+\DeclareFlexSymbol{\succ}{Rel}{rel}{1F}
+\DeclareFlexSymbol{\prec}{Rel}{rel}{1E}
+\DeclareFlexSymbol{\approx}{Rel}{rel}{19}
+\DeclareFlexSymbol{\succeq}{Rel}{rel}{17}
+\DeclareFlexSymbol{\preceq}{Rel}{rel}{16}
+\DeclareFlexSymbol{\supset}{Rel}{rel}{1B}
+\DeclareFlexSymbol{\subset}{Rel}{rel}{1A}
+\DeclareFlexSymbol{\supseteq}{Rel}{rel}{13}
+\DeclareFlexSymbol{\subseteq}{Rel}{rel}{12}
+\DeclareFlexSymbol{\in}{Rel}{rel}{32}
+\DeclareFlexSymbol{\ni}{Rel}{rel}{33}
+\DeclareFlexSymbol{\gg}{Rel}{rel}{1D}
+\DeclareFlexSymbol{\ll}{Rel}{rel}{1C}
+\DeclareFlexSymbol{\leftrightarrow}{Rel}{rel}{24}
+\DeclareFlexSymbol{\leftarrow}{Rel}{rel}{20}
+\DeclareFlexSymbol{\rightarrow}{Rel}{rel}{21}
+\DeclareFlexSymbol{\sim}{Rel}{rel}{18}
+\DeclareFlexSymbol{\simeq}{Rel}{rel}{27}
+\DeclareFlexSymbol{\perp}{Rel}{rel}{3F}
+\DeclareFlexSymbol{\equiv}{Rel}{rel}{11}
+\DeclareFlexSymbol{\asymp}{Rel}{rel}{10}
+\DeclareFlexSymbol{\notRel}{Rel}{rel}{36}
+\DeclareFlexSymbol{\mapstoOrd}{Ord}{OMS}{37}
+\DeclareFlexSymbol{\cdotOrd}{Ord}{OMS}{01}
+\def\cdotp{\mathpunct{\cdotOrd}}
+\DeclareFlexSymbol{\coprod}{COs}{cop}{60}
+\DeclareFlexSymbol{\bigvee}{COs}{cop}{57}
+\DeclareFlexSymbol{\bigwedge}{COs}{cop}{56}
+\DeclareFlexSymbol{\biguplus}{COs}{cop}{55}
+\DeclareFlexSymbol{\bigcap}{COs}{cop}{54}
+\DeclareFlexSymbol{\bigcup}{COs}{cop}{53}
+\DeclareFlexSymbol{\int}{COi}{cop}{52}
+\DeclareFlexSymbol{\prod}{COs}{cop}{51}
+\DeclareFlexSymbol{\sum}{COs}{cop}{50}
+\DeclareFlexSymbol{\bigotimes}{COs}{cop}{4E}
+\DeclareFlexSymbol{\bigoplus}{COs}{cop}{4C}
+\DeclareFlexSymbol{\bigodot}{COs}{cop}{4A}
+\DeclareFlexSymbol{\oint}{COi}{cop}{48}
+\DeclareFlexSymbol{\bigsqcup}{COs}{cop}{46}
+\DeclareFlexSymbol{\rangle}{DeR}{del}{0B}
+\DeclareFlexSymbol{\langle}{DeL}{del}{0A}
+\DeclareFlexSymbol{\rbrace}{DeR}{del}{09}
+\DeclareFlexSymbol{\lbrace}{DeL}{del}{08}
+\DeclareFlexSymbol{\rceil}{DeR}{del}{07}
+\DeclareFlexSymbol{\lceil}{DeL}{del}{06}
+\DeclareFlexSymbol{\rfloor}{DeR}{del}{05}
+\DeclareFlexSymbol{\lfloor}{DeL}{del}{04}
+\DeclareFlexSymbol{(}{DeL}{del}{00}
+\DeclareFlexSymbol{)}{DeR}{del}{01}
+\DeclareFlexSymbol{[}{DeL}{del}{02}
+\DeclareFlexSymbol{]}{DeR}{del}{03}
+\DeclareFlexSymbol{\lVert}{DeL}{del}{0D}
+\DeclareFlexSymbol{\rVert}{DeR}{del}{0D}
+\DeclareFlexSymbol{\lvert}{DeL}{del}{0C}
+\DeclareFlexSymbol{\rvert}{DeR}{del}{0C}
+\DeclareFlexSymbol{\Vert}{DeB}{del}{0D}
+\DeclareFlexSymbol{\vert}{DeB}{del}{0C}
+\DeclareFlexSymbol{|}{DeB}{del}{0C}
+\DeclareFlexSymbol{/}{DeB}{del}{0E}
+\DeclareFlexSymbol{\lmoustache}{DeL}{del}{40}
+\DeclareFlexSymbol{\rmoustache}{DeR}{del}{41}
+\DeclareFlexSymbol{\lgroup}{DeL}{del}{3A}
+\DeclareFlexSymbol{\rgroup}{DeR}{del}{3B}
+\DeclareFlexSymbol{\bracevert}{DeB}{del}{3E}
+\DeclareFlexSymbol{\arrowvert}{DeB}{del}{3C}
+\DeclareFlexSymbol{\Arrowvert}{DeB}{del}{3D}
+\DeclareFlexSymbol{\uparrow}{DeA}{del}{78}
+\DeclareFlexSymbol{\downarrow}{DeA}{del}{79}
+\DeclareFlexSymbol{\updownarrow}{DeA}{del}{3F}
+\DeclareFlexSymbol{\Uparrow}{DeA}{del}{7E}
+\DeclareFlexSymbol{\Downarrow}{DeA}{del}{7F}
+\DeclareFlexSymbol{\Updownarrow}{DeA}{del}{77}
+\DeclareFlexSymbol{\backslash}{DeB}{del}{0F}
+\DeclareFlexSymbol{\hbarOrd}{Ord}{OT1}{16}
+\DeclareFlexCompoundSymbol{\hbar}{Ord}{\hbarOrd\mkern-9mu h}
+\DeclareFlexSymbol{\surdOrd}{Ord}{OMS}{70}
+\DeclareFlexCompoundSymbol{\surd}{Ord}{\mathop{\surdOrd}}
+\DeclareFlexCompoundSymbol{\angle}{Ord}{%
+ \vbox{\ialign{%
+ $\m@th\scriptstyle##$\crcr
+ \notRel\mathrel{\mkern14mu}\crcr
+ \noalign{\nointerlineskip}%
+ \mkern2.5mu\leaders\hrule \@height.34pt\hfill\mkern2.5mu\crcr
+ }}%
+}
+\DeclareFlexCompoundSymbol{\neq}{Rel}{\not{=}}
+\DeclareFlexCompoundSymbol{\mapsto}{Rel}{\mapstoOrd\rightarrow}
+\DeclareFlexCompoundSymbol{\cong}{Rel}{\mathpalette\@vereq\sim}
+\newcommand*\joinord{\mkern-3mu }
+\DeclareFlexCompoundSymbol{\notin}{Rel}{\mathpalette\c@ncel\in}
+\DeclareFlexCompoundSymbol{\rightleftharpoons}{Rel}{\mathpalette\rlh@{}}
+\DeclareFlexCompoundSymbol{\doteq}{Rel}{\buildrel\textstyle.\over=}
+\DeclareFlexCompoundSymbol{\hookrightarrow}{Rel}{\lhookRel\joinord\rightarrow}
+\DeclareFlexCompoundSymbol{\hookleftarrow}{Rel}{\leftarrow\joinord\rhookRel}
+\DeclareFlexCompoundSymbol{\bowtie}{Rel}{\triangleright\joinord\triangleleft}
+\DeclareFlexCompoundSymbol{\models}{Rel}{\vert\joinord=}
+\DeclareFlexCompoundSymbol{\Longrightarrow}{Rel}{\Relbar\joinord\Rightarrow}
+\DeclareFlexCompoundSymbol{\longrightarrow}{Rel}{\relbar\joinord\rightarrow}
+\DeclareFlexCompoundSymbol{\Longleftarrow}{Rel}{\Leftarrow\joinord\Relbar}
+\DeclareFlexCompoundSymbol{\longleftarrow}{Rel}{\leftarrow\joinord\relbar}
+\DeclareFlexCompoundSymbol{\longmapsto}{Rel}{\mapstochar\longrightarrow}
+\DeclareFlexCompoundSymbol{\longleftrightarrow}{Rel}{\leftarrow\joinord\rightarrow}
+\DeclareFlexCompoundSymbol{\Longleftrightarrow}{Rel}{\Leftarrow\joinord\Rightarrow}
+\renewcommand*\iff{%
+ \mskip\thickmuskip\Longleftrightarrow\mskip\thickmuskip
+}
+\DeclareFlexCompoundSymbol{\cdots}{Inn}{\cdotp\cdotp\cdotp}%
+\DeclareFlexCompoundSymbol{\vdots}{Ord}{%
+ \vbox{\baselineskip4\p@ \lineskiplimit\z@
+ \kern6\p@\hbox{.}\hbox{.}\hbox{.}}}
+\DeclareFlexCompoundSymbol{\ddots}{Inn}{%
+ \mkern1mu\raise7\p@
+ \vbox{\kern7\p@\hbox{.}}\mkern2mu%
+ \raise4\p@\hbox{.}\mkern2mu\raise\p@\hbox{.}\mkern1mu%
+}
+\def\relbar{\begingroup \def\smash@{tb}% in case amsmath is loaded
+ \mathpalette\mathsm@sh{\mathchar"200 }\endgroup}
+\def\Relbar{\mathchar"3D }
+\endinput
+%%
+%% End of file `cmbase.sym'.
diff --git a/Master/texmf-dist/doc/latex/mh/empheq.pdf b/Master/texmf-dist/doc/latex/mh/empheq.pdf
index 3c86b03eebf..3bcbcd25716 100644
--- a/Master/texmf-dist/doc/latex/mh/empheq.pdf
+++ b/Master/texmf-dist/doc/latex/mh/empheq.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/mh/empheq07.pdf b/Master/texmf-dist/doc/latex/mh/empheq07.pdf
index 5a8fd6bbfc2..bad1ab5511f 100644
--- a/Master/texmf-dist/doc/latex/mh/empheq07.pdf
+++ b/Master/texmf-dist/doc/latex/mh/empheq07.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/mh/eqbreaks.pdf b/Master/texmf-dist/doc/latex/mh/eqbreaks.pdf
new file mode 100644
index 00000000000..621bcc75dba
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/mh/eqbreaks.pdf
@@ -0,0 +1,976 @@
+%PDF-1.2
+7 0 obj
+<<
+/Type/Encoding
+/Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/exclamdown/equal/questiondown/question/at/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/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/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/endash/emdash/hungarumlaut/tilde/dieresis/suppress
+160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis]
+>>
+endobj
+10 0 obj
+<<
+/Encoding 7 0 R
+/Type/Font
+/Subtype/Type1
+/Name/F1
+/FontDescriptor 9 0 R
+/BaseFont/MALWXI+CMR12
+/FirstChar 33
+/LastChar 196
+/Widths[272 489.6 816 489.6 816 761.6 272 380.8 380.8 489.6 761.6 272 326.4 272 489.6
+489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 272 272 272 761.6 462.4
+462.4 761.6 734 693.4 707.2 747.8 666.2 639 768.3 734 353.2 503 761.2 611.8 897.2
+734 761.6 666.2 761.6 720.6 544 707.2 734 734 1006 734 734 598.4 272 489.6 272 489.6
+272 272 489.6 544 435.2 544 435.2 299.2 489.6 544 272 299.2 516.8 272 816 544 489.6
+544 516.8 380.8 386.2 380.8 544 516.8 707.2 516.8 516.8 435.2 489.6 979.2 489.6 489.6
+489.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 611.8 816
+761.6 679.6 652.8 734 707.2 761.6 707.2 761.6 0 0 707.2 571.2 544 544 816 816 272
+299.2 489.6 489.6 489.6 489.6 489.6 734 435.2 489.6 707.2 761.6 489.6 883.8 992.6
+761.6 272 489.6]
+>>
+endobj
+13 0 obj
+<<
+/Encoding 7 0 R
+/Type/Font
+/Subtype/Type1
+/Name/F2
+/FontDescriptor 12 0 R
+/BaseFont/WFEUNY+CMR10
+/FirstChar 33
+/LastChar 196
+/Widths[277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8
+500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8
+750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8
+680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8
+277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6
+500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4 500 1000 500
+500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 625 833.3
+777.8 694.4 666.7 750 722.2 777.8 722.2 777.8 0 0 722.2 583.3 555.6 555.6 833.3 833.3
+277.8 305.6 500 500 500 500 500 750 444.4 500 722.2 777.8 500 902.8 1013.9 777.8
+277.8 500]
+>>
+endobj
+14 0 obj
+<<
+/Type/Encoding
+/Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/alpha/beta/gamma/delta/epsilon1/zeta/eta/theta/iota/kappa/lambda/mu/nu/xi/pi/rho/sigma/tau/upsilon/phi/chi/psi/omega/epsilon/theta1/pi1/rho1/sigma1/phi1/arrowlefttophalf/arrowleftbothalf/arrowrighttophalf/arrowrightbothalf/arrowhookleft/arrowhookright/triangleright/triangleleft/zerooldstyle/oneoldstyle/twooldstyle/threeoldstyle/fouroldstyle/fiveoldstyle/sixoldstyle/sevenoldstyle/eightoldstyle/nineoldstyle/period/comma/less/slash/greater/star/partialdiff/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/flat/natural/sharp/slurbelow/slurabove/lscript/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/dotlessi/dotlessj/weierstrass/vector/tie/psi
+160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/alpha/beta/gamma/delta/epsilon1/zeta/eta/theta/iota/kappa/lambda/mu/nu/xi/pi/rho/sigma/tau/upsilon/phi/chi/psi/tie]
+>>
+endobj
+17 0 obj
+<<
+/Encoding 14 0 R
+/Type/Font
+/Subtype/Type1
+/Name/F3
+/FontDescriptor 16 0 R
+/BaseFont/KCMZHQ+CMMI10
+/FirstChar 33
+/LastChar 196
+/Widths[622.5 466.3 591.4 828.1 517 362.8 654.2 1000 1000 1000 1000 277.8 277.8 500
+500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8 500 530.9
+750 758.5 714.7 827.9 738.2 643.1 786.2 831.3 439.6 554.5 849.3 680.6 970.1 803.5
+762.8 642 790.6 759.3 613.2 584.4 682.8 583.3 944.4 828.5 580.6 682.6 388.9 388.9
+388.9 1000 1000 416.7 528.6 429.2 432.8 520.5 465.6 489.6 477 576.2 344.5 411.8 520.6
+298.4 878 600.2 484.7 503.1 446.4 451.2 468.8 361.1 572.5 484.7 715.9 571.5 490.3
+465 322.5 384 636.5 500 277.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 615.3 833.3 762.8 694.4 742.4 831.3 779.9 583.3 666.7 612.2 0 0 772.4
+639.7 565.6 517.7 444.4 405.9 437.5 496.5 469.4 353.9 576.2 583.3 602.5 494 437.5
+570 517 571.4 437.2 540.3 595.8 625.7 651.4 277.8]
+>>
+endobj
+20 0 obj
+<<
+/Encoding 7 0 R
+/Type/Font
+/Subtype/Type1
+/Name/F4
+/FontDescriptor 19 0 R
+/BaseFont/ZNSNNO+CMR7
+/FirstChar 33
+/LastChar 196
+/Widths[323.4 569.4 938.5 569.4 938.5 877 323.4 446.4 446.4 569.4 877 323.4 384.9
+323.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 323.4 323.4
+323.4 877 538.7 538.7 877 843.3 798.6 815.5 860.1 767.9 737.1 883.9 843.3 412.7 583.3
+874 706.4 1027.8 843.3 877 767.9 877 829.4 631 815.5 843.3 843.3 1150.8 843.3 843.3
+692.5 323.4 569.4 323.4 569.4 323.4 323.4 569.4 631 507.9 631 507.9 354.2 569.4 631
+323.4 354.2 600.2 323.4 938.5 631 569.4 631 600.2 446.4 452.6 446.4 631 600.2 815.5
+600.2 600.2 507.9 569.4 1138.9 569.4 569.4 569.4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 706.4 938.5 877 781.8 754 843.3 815.5 877 815.5
+877 0 0 815.5 677.6 646.8 646.8 970.2 970.2 323.4 354.2 569.4 569.4 569.4 569.4 569.4
+843.3 507.9 569.4 815.5 877 569.4 1013.9 1136.9 877 323.4 569.4]
+>>
+endobj
+21 0 obj
+<<
+/Type/Encoding
+/Differences[0/minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/arrowright/arrowup/arrowdown/arrowboth/arrownortheast/arrowsoutheast/similarequal/arrowdblleft/arrowdblright/arrowdblup/arrowdbldown/arrowdblboth/arrownorthwest/arrowsouthwest/proportional/prime/infinity/element/owner/triangle/triangleinv/negationslash/mapsto/universal/existential/logicalnot/emptyset/Rfractur/Ifractur/latticetop/perpendicular/aleph/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/union/intersection/unionmulti/logicaland/logicalor/turnstileleft/turnstileright/floorleft/floorright/ceilingleft/ceilingright/braceleft/braceright/angbracketleft/angbracketright/bar/bardbl/arrowbothv/arrowdblbothv/backslash/wreathproduct/radical/coproduct/nabla/integral/unionsq/intersectionsq/subsetsqequal/supersetsqequal/section/dagger/daggerdbl/paragraph/club/diamond/heart/spade/arrowleft
+161/minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus
+173/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/spade]
+>>
+endobj
+24 0 obj
+<<
+/Encoding 21 0 R
+/Type/Font
+/Subtype/Type1
+/Name/F5
+/FontDescriptor 23 0 R
+/BaseFont/QGRDUG+CMSY10
+/FirstChar 33
+/LastChar 196
+/Widths[1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8
+275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8
+611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 762 689.7 1200.9
+820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7
+666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8
+500 500 611.1 500 277.8 833.3 750 833.3 416.7 666.7 666.7 777.8 777.8 444.4 444.4
+444.4 611.1 777.8 777.8 777.8 777.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 0 0 777.8
+777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8
+777.8 777.8 1000 1000 777.8 777.8 1000 777.8]
+>>
+endobj
+27 0 obj
+<<
+/Type/Font
+/Subtype/Type1
+/Name/F6
+/FontDescriptor 26 0 R
+/BaseFont/PAMJDP+CMEX10
+/FirstChar 33
+/LastChar 196
+/Widths[791.7 583.3 583.3 638.9 638.9 638.9 638.9 805.6 805.6 805.6 805.6 1277.8
+1277.8 811.1 811.1 875 875 666.7 666.7 666.7 666.7 666.7 666.7 888.9 888.9 888.9
+888.9 888.9 888.9 888.9 666.7 875 875 875 875 611.1 611.1 833.3 1111.1 472.2 555.6
+1111.1 1511.1 1111.1 1511.1 1111.1 1511.1 1055.6 944.4 472.2 833.3 833.3 833.3 833.3
+833.3 1444.4 1277.8 555.6 1111.1 1111.1 1111.1 1111.1 1111.1 944.4 1277.8 555.6 1000
+1444.4 555.6 1000 1444.4 472.2 472.2 527.8 527.8 527.8 527.8 666.7 666.7 1000 1000
+1000 1000 1055.6 1055.6 1055.6 777.8 666.7 666.7 450 450 450 450 777.8 777.8 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 458.3 458.3 416.7 416.7
+472.2 472.2 472.2 472.2 583.3 583.3 0 0 472.2 472.2 333.3 555.6 577.8 577.8 597.2
+597.2 736.1 736.1 527.8 527.8 583.3 583.3 583.3 583.3 750 750 750 750 1044.4 1044.4
+791.7 777.8]
+>>
+endobj
+30 0 obj
+<<
+/Encoding 14 0 R
+/Type/Font
+/Subtype/Type1
+/Name/F7
+/FontDescriptor 29 0 R
+/BaseFont/QVRZWB+CMMI7
+/FirstChar 33
+/LastChar 196
+/Widths[719.7 539.7 689.9 950 592.7 439.2 751.4 1138.9 1138.9 1138.9 1138.9 339.3
+339.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 339.3
+339.3 892.9 585.3 892.9 585.3 610.1 859.1 863.2 819.4 934.1 838.7 724.5 889.4 935.6
+506.3 632 959.9 783.7 1089.4 904.9 868.9 727.3 899.7 860.6 701.5 674.8 778.2 674.6
+1074.4 936.9 671.5 778.4 462.3 462.3 462.3 1138.9 1138.9 478.2 619.7 502.4 510.5
+594.7 542 557.1 557.3 668.8 404.2 472.7 607.3 361.3 1013.7 706.2 563.9 588.9 523.6
+530.4 539.2 431.6 675.4 571.4 826.4 647.8 579.4 545.8 398.6 442 730.1 585.3 339.3
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 693.8 954.4 868.9
+797.6 844.5 935.6 886.3 677.6 769.8 716.9 0 0 880 742.7 647.8 600.1 519.2 476.1 519.8
+588.6 544.1 422.8 668.8 677.6 694.6 572.8 519.8 668 592.7 662 526.8 632.9 686.9 713.8
+756 339.3]
+>>
+endobj
+31 0 obj
+<<
+/Type/Encoding
+/Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/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/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/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/endash/emdash/hungarumlaut/tilde/dieresis/suppress
+160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis]
+>>
+endobj
+34 0 obj
+<<
+/Encoding 31 0 R
+/Type/Font
+/Subtype/Type1
+/Name/F8
+/FontDescriptor 33 0 R
+/BaseFont/UZMPRB+CMR5
+/FirstChar 33
+/LastChar 196
+/Widths[402.8 680.6 1097.2 680.6 1097.2 1027.8 402.8 541.7 541.7 680.6 1027.8 402.8
+472.2 402.8 680.6 680.6 680.6 680.6 680.6 680.6 680.6 680.6 680.6 680.6 680.6 402.8
+402.8 1027.8 1027.8 1027.8 645.8 1027.8 980.6 934.7 958.3 1004.2 900 865.3 1033.4
+980.6 494.5 691.7 1015.3 830.6 1188.9 980.6 1027.8 900 1027.8 969.5 750 958.3 980.6
+980.6 1327.8 980.6 980.6 819.5 402.8 680.6 402.8 680.6 402.8 402.8 680.6 750 611.1
+750 611.1 437.5 680.6 750 402.8 437.5 715.3 402.8 1097.2 750 680.6 750 715.3 541.7
+548.6 541.7 750 715.3 958.3 715.3 715.3 611.1 680.6 1361.1 680.6 680.6 680.6 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 830.6 1097.2 1027.8
+911.1 888.9 980.6 958.3 1027.8 958.3 1027.8 0 0 958.3 680.6 680.6 402.8 402.8 645.8
+402.8 437.5 680.6 680.6 680.6 680.6 680.6 980.6 611.1 680.6 958.3 1027.8 680.6 1177.8
+1316.7 1027.8 402.8 680.6]
+>>
+endobj
+37 0 obj
+<<
+/Encoding 21 0 R
+/Type/Font
+/Subtype/Type1
+/Name/F9
+/FontDescriptor 36 0 R
+/BaseFont/JBJZGS+CMSY7
+/FirstChar 33
+/LastChar 196
+/Widths[1138.9 585.3 585.3 1138.9 1138.9 1138.9 892.9 1138.9 1138.9 708.3 708.3 1138.9
+1138.9 1138.9 892.9 329.4 1138.9 769.8 769.8 1015.9 1015.9 0 0 646.8 646.8 769.8
+585.3 831.4 831.4 892.9 892.9 708.3 917.6 753.4 620.2 889.5 616.1 818.4 688.5 978.6
+646.5 782.1 871.7 791.7 1342.7 935.6 905.8 809.2 935.9 981 702.2 647.8 717.8 719.9
+1135.1 818.9 764.4 823.1 769.8 769.8 769.8 769.8 769.8 708.3 708.3 523.8 523.8 523.8
+523.8 585.3 585.3 462.3 462.3 339.3 585.3 585.3 708.3 585.3 339.3 938.5 859.1 954.4
+493.6 769.8 769.8 892.9 892.9 523.8 523.8 523.8 708.3 892.9 892.9 892.9 892.9 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 892.9 339.3 892.9 585.3
+892.9 585.3 892.9 892.9 892.9 892.9 0 0 892.9 892.9 892.9 1138.9 585.3 585.3 892.9
+892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 1138.9 1138.9 892.9
+892.9 1138.9 892.9]
+>>
+endobj
+38 0 obj
+<<
+/Type/Encoding
+/Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/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/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/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/braceleft/bar/braceright/asciitilde/dieresis/visiblespace
+160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/dieresis]
+>>
+endobj
+41 0 obj
+<<
+/Encoding 38 0 R
+/Type/Font
+/Subtype/Type1
+/Name/F10
+/FontDescriptor 40 0 R
+/BaseFont/PMDWMQ+CMTT10
+/FirstChar 33
+/LastChar 196
+/Widths[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525
+525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525
+525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525
+525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525
+525 525 525 525 525 525 525 525 525 525 525 525 525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 525 525 525 525 525 525 525 525 525 525 0 0 525
+525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525
+525 525]
+>>
+endobj
+43 0 obj
+<<
+/Filter[/FlateDecode]
+/Length 1370
+>>
+stream
+xÚ¥WÍ“›6¿÷¯àˆ'A‹„$ 3=´MÓ&3mñmkË 5Ä:Û¿¾ïé ã…u&3݃ïû÷ô>Ø fq<îñ{ðËúî=8g¹
+Öû€KÅRD¹fšëw÷áz•ñÐlW" ˦Úõ*J„
+›Öš:l|¦¡ù2¶¢7>t¦8TÍãêóúc &e‰Œe™³úçÇwŽ%’%ÀHŒOædÍq…VüšŽÌñ·äDÄ1GÍ»÷"ÈY®1èˆó” °¥Y¦)èÒ€xÂã±e †²p‡½Ùë!=ÓÙ’¼À¨¿4D;[ ã°R:,½=Ûzf]l½Š}]árƒæ‡#þ^!FÕÓ³+@³£,pÉr‰8Ü5
+‹Æ©J
+5Ïe[û#\Sßzƒš“k齨ëmžG›^§ALj-sØÒÐ㈯!¸Tiö¶3­“ðÔµ'¯R?“ÀÖ8{Ötîj´ ŠÒ>^wh­+<8–fŠÍ¾˜†ÞÎ¥™ëÎ6BÇÃÖÂ]¹‰Ý`n„Ÿ$~g,•?V³£µç•dy"ïñ9º ê†9Ó‹ þµmújg¼¡‹Æ¾S~±:–Õ/J:&É¥M˜0®6+êŠäÒ\h¦$€B¡¿ˆ+Íò¹‹9cMLluQ†~J‚‘»iBz²3ÅV,½ŒV‹r&¡¹Sèp/"†ßÖ0}dp ¨˜JŒ’LæÁ12gz"ÔÁ'7 ¦¸.:a ¨ÃÜ-$(ó°‡9.˜nžåÕÒKFœd$MÿâgDw)‰5¤$§¬óyBSY b¦Çœi=Ï9$gÚA5N3žPÐügŽL°Tûð?,‘ñ‘çõò‹c $ã܇&ù<4÷_#›“à“x?ÍõàþÇ\‹ÅX"eJám2IIý`©¦ÏU]Ó©,°÷Ÿp”øyÚ6n0`?5†ª®ó–hÕþEÇÀôhëáØŒfw¶ôr=±aOyZ¾«›¢ë¨Ïnôç§m7ت©þu}(³œ<Ê<iàt––!²êª·Ä#`xêKœfxª§ùƒÂ8Üœ@{4ž²'ÊÅÃCÑW[:úy™9‡0°^_}Y¸á)¹ºì5<.$Ò^“\_æIÏV‘?ï-Ž!dÁj±$Æ[Áh¸1µö9<øEØ«iTKa#Õ;Ò,‹“¾!I¸½«AKm`iÃÐÝH»éŠOÚRpwÿ=Ï”|Co1;³ i¬ié;êrõöd¨Øí\šÐKC$;jÕfo‰T5Dñ,>›Ê®Ìy|©ókc³éËöŒÑÏûA)ü¦¢fi{|e‹î0+jZ‘mE‹Ñ0´¾ô+‡×eoÙ"šˆÜD0|sá|ÝóÏ«ˆ«TAp'Óµ…êPð Çcøs’p–¤/a<ÖƒÙÀ³xhŸÌ®êá‹ç¹?T'X4N¾—Kó¦ƒøuã¦nÏß0-»´Bò0†èpª‡~"Í é™wWVW^ùm¯Éäõé¡ýº 9,×$Åu³ú
+¿oÉÈTo¬·ëe÷Uýz¶Ù5–x‰C]w>VÍŒüý·ð
+0ùZ:£ –{.Õ²YïÕ$_ºDÀˆ;r
+endstream
+endobj
+45 0 obj
+<<
+/F1 10 0 R
+/F2 13 0 R
+/F3 17 0 R
+/F4 20 0 R
+/F5 24 0 R
+/F6 27 0 R
+/F7 30 0 R
+/F8 34 0 R
+/F9 37 0 R
+/F10 41 0 R
+>>
+endobj
+6 0 obj
+<<
+/ProcSet[/PDF/Text/ImageC]
+/Font 45 0 R
+>>
+endobj
+48 0 obj
+<<
+/Type/Encoding
+/Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/sterling/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/exclamdown/equal/questiondown/question/at/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/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/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/endash/emdash/hungarumlaut/tilde/dieresis/suppress
+160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis]
+>>
+endobj
+51 0 obj
+<<
+/Encoding 48 0 R
+/Type/Font
+/Subtype/Type1
+/Name/F11
+/FontDescriptor 50 0 R
+/BaseFont/BJZUOD+CMTI10
+/FirstChar 33
+/LastChar 196
+/Widths[306.7 514.4 817.8 769.1 817.8 766.7 306.7 408.9 408.9 511.1 766.7 306.7 357.8
+306.7 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 306.7 306.7
+306.7 766.7 511.1 511.1 766.7 743.3 703.9 715.6 755 678.3 652.8 773.6 743.3 385.6
+525 768.9 627.2 896.7 743.3 766.7 678.3 766.7 729.4 562.2 715.6 743.3 743.3 998.9
+743.3 743.3 613.3 306.7 514.4 306.7 511.1 306.7 306.7 511.1 460 460 511.1 460 306.7
+460 511.1 306.7 306.7 460 255.6 817.8 562.2 511.1 511.1 460 421.7 408.9 332.2 536.7
+460 664.4 463.9 485.6 408.9 511.1 1022.2 511.1 511.1 511.1 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 627.2 817.8 766.7 692.2 664.4 743.3 715.6
+766.7 715.6 766.7 0 0 715.6 613.3 562.2 587.8 881.7 894.4 306.7 332.2 511.1 511.1
+511.1 511.1 511.1 831.3 460 536.7 715.6 715.6 511.1 882.8 985 766.7 255.6 511.1]
+>>
+endobj
+52 0 obj
+<<
+/Filter[/FlateDecode]
+/Length 2398
+>>
+stream
+xÚ…YK㸾çWø°ÀÈرF"õÜ’d&Ø —
+Ù¢ÄÃ倉óPeëSŒ#øœ&&úÚÎ1
+c¯‡H_Žú¸M)dj!úÎIÜ%%C/X'è§ÃY¶ØnØeC0µ ÃeELGà_ÄÛ„mfè/L
+´©#Èî·˜0•
+~­}ÁÚ)™dùì‰Ø×Y‰¸+_EmÃÔŸíÑp’ש̂ŸóÝž@Í¥‡N¤Ò>
+qñËè˜åªX×’!VUrÅm¾ñ\MÅ’Cc-ûš~§"|å
+a‹7”u¹€Mûâ7{DïˆáÈñbÞ×1OA½
+ÞAñAišN’Äj«`ÆZâ-€ö;8OœÉÄŸå‡é‡°+8ʪ˜d焱eªDì\ûZZD23vB_ J@4¼:°)Wqð+:žLˆyö®ª»…8¸™á­Ú.IÃH¯"”Ô•Z)`Ð%}t˜È$ÉCÅþÜ}ÊWJ²ïJÆ€¼= ª”98ÏC‡ub5–Ü@>Á6®s"UQ‰fkô¶Î—¼è
+ÆYî~®­0Ì…4ŒS’KÈ!…ouhú>VIžB©½Lªà‚M8JuSžh‚€Õ\w1Y5U÷AòjÕ_ÇDâ÷LbIê ·®l¹uáÈ}ì8gn´¦ZG¯FñÕB¿”Òø½LƒG[Ž¾+Ë•ÆúœÝ§ƒ#¬lF¥àsûýÔÕ‡þe¿ÿòŸ¿Ã÷Ö«|£RK0I¤‚Ö¸‘®z¹Zj5 B*åõsØê*¦|*Šïr+¾uêÖóû†Gl…w}]ÄW¥{æ" <Qöo× 7WS­|‘rTq¦9@~‚ý¯ìeà,qXöl§b;_1¶é¡+Nñ"£q”ì´¯€tœÝ”<ÈÛ6´7qvs5¦.);âlÑp“Âùâ5‚!W#_@¥®2C%0 W·d½'ÿfH6YXæôÂføDñ“íÏw¸êŸµdüæ­ëæíW¯Þ~Ñæ|ýt ŠÌ¿ÌôOøÁ2åÉßVŠœBŒhFu72H’.gÎBA–RùæXŠnUÞÛéLo.ÏMÅé7ã3E©û2huë÷x‹WÝ0*¯JÎA²¾ÿôVð-‰è[üûv§øN°÷/Y…ü´t3ßÔÂ`±‡¯9ôßç·a0 ¯ñ¨" #&.-ÖÚ¾ uâ­?¿Î!^›¿Mz-qø†û=!Å‚.#õ#8}Åj¿}QZûI"ïíËL\!~Ó~¡×’‡é*LQ"M3ý¶‘áŸH\ý
+endstream
+endobj
+53 0 obj
+<<
+/F2 13 0 R
+/F10 41 0 R
+/F11 51 0 R
+/F4 20 0 R
+>>
+endobj
+47 0 obj
+<<
+/ProcSet[/PDF/Text/ImageC]
+/Font 53 0 R
+>>
+endobj
+56 0 obj
+<<
+/Filter[/FlateDecode]
+/Length 428
+>>
+stream
+xÚ•“Ms‚0†ïý9&cY² ‰æÚéÇL/½p3=hM[F*Úê¿o ~Pu†Ê É»»/ áÀ9ù mx"wiüˆœ0š¤ïÄH@A"-`¨Hz?¦
+Ë6ÈŒŒ6-DjÐ'eíà‡ƒÐÓXíÙÖV®˜ä«í®»órÇú¨ýÈ×Îú8uyù3Ëê*ŸlëyVù6Ûôv}Wùº>nµµöw¤åYẼdñÞ &ñ×
+ ?¦ˆ\¿gyÅaŽ#4àçXx¶ï@’ά£ré+ %TK·ëzïÚ²Õ7d#Ú$ÑÇœLËo×ñ²)ÁwÆ9u_ëÉ*+ý`J)iÁ„¦ë#:e‘R· ÍÓˆ–Ìom¾`ÉEØ>§¹Ï¶çYª×©²^ý±*ÿ‡Wºz:w§HTèÿÿI ‡‘ fµÅ?¤7¿L”4Ó
+endstream
+endobj
+57 0 obj
+<<
+/F10 41 0 R
+/F2 13 0 R
+>>
+endobj
+55 0 obj
+<<
+/ProcSet[/PDF/Text/ImageC]
+/Font 57 0 R
+>>
+endobj
+9 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-34 -251 988 750]
+/FontName/MALWXI+CMR12
+/ItalicAngle 0
+/StemV 65
+/FontFile 8 0 R
+/Flags 4
+>>
+endobj
+8 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 714
+/Length2 5296
+/Length3 533
+/Length 5848
+>>
+stream
+xÚí’g8œë»ö‘ Fï"ÊQ£H”è%zoc †)ÈèD‹.¢×h=zïÑÛÒ&QCô5쬵öÿ¿wí÷Ë>ö·÷xŸûËs×yŸ÷゙‡“M[_ÎeUB!Ñü  ‚¦®ð °€€“SÁ
+FÃPÈ`4–’ʹÙŸ…ÅA"’ !1
+<º$€r¨+ F5Áh(âw ê¡ 0(ÚK
+ú—EÚþâ÷ÜþBÔ”Ó02V}ü÷'ý»© †!Ñú^ÎÿŽýÓýW-ü_õïñ¸Â<fBBB¿¿×¿Þ,þq˜"‚²…!ízh0Òìjûoá¿CÉË£<}øEDüOÄ„R’’@ 1!¿ÿÓg€„¹¸AU_
+õ„B
+*_†,™0 (i°0\µKL÷Ę»JÚ×Ý›Ñ¸ß ï@Y ûBöÊ•lÜ5[lô8ÆBǽ©7¥!‰€è$Ž®¼]ÑYvãÈzM¢W]:?á°z;u8_‚á?Ã…gÞ “y £‹¯áUl¶ÈS¨Ù“Z²v05ù”ŸýÅ|n¥Œ7üä½è{z^ÆlÙéã˜x…‚ûKI?팲QsYb'%)+?£Eìö;ÕMo(æûçîM}ý‘.„!×¥DÉæ¼WJ”U¿¯ô#9PR3÷²»šZºž¡%àž@ùÇ0´Nø‘]53Ék/fÈsºÝįôylMÖ$ŒE¥ÝQ° ŸHÉðÞ¬õ×cBÐÎzëåU{fNÇt¯¨òÑHç©m`‹(—9פpéóÖ¡¾^–‹]ìã † ]½óMù ™½Ù‰àrúmzKËYû?³·©3š›©û¨‹ŒªÓ`Ÿ3ú$[éݲO`¤±Þ#ô¹ l†Á_‚䪙eî´ËªOWdtf¸5·lÒZÝ"¹á+¿óèÓTÝn5_®e·†/??/·©íÜT·Exzâ”.¾0«µ êzès[bœ#•èL´·ËñG?¬09£ä—Ûàv~À eq\$ð&áùÄ«4M§&E2'É}³×µÍ }MîµÙ­ÈèTÕŸ’¡ÃŸc7ƒñ U9Zögº³r~DÚÆé¸sã
+º<lu
+=fݯËjÉ3<'öM3ŠÕa4rtŠÎ)ÂýQô‚ÃùQá-µ§°}O€)2úÓªÎRKšÙY?±—ÅÁRËömZͦ"ÉçÚE³NýxšÿùÔÛÇ7»Ÿ„§‡þ?Šk\O*6Ý€ÂÈî. ‰ÍŸ¤Å“]“ç«b•„Ÿ*nRµ"ºxßZ¥g"ÛÉø|v·<‹ 8=<7')ƒNn~ÿj~Ë>òõeÑ L§þ¼M^ÿBZ®
+²ØY=BPE'ë]>Pw¤jŠ¤>kÑ€:å'Iò„¦/ ò„Q}N¨Æó‡n»Ã·ÀÅÄúRŽ o©G=²k¿½ !`•i9Â¥Ÿ¥#7#²K®ÿþ¢‰!Ø#²¹³Jš”+º´ÿQæ.›Òí]©¼Ho„¼ê›®l‡x“¹ô!ÊSt>Cÿ¥ÿ- z/•‹–ï+ͧ>aÖ.á\ö˜üà_ºAï ;ȦêÏóÑ( 9A«ùimG“#ï[Æ_H‚óJƒ}Úªö^õóÌÔÍÞ¾àÅ;¯8›ã^<®)·x-<VæÃ}8®&\£›|ß ª—ÄèrqšÅ›vÇþ-‡ÂáH«|-ÖŒÿ²U©—·õ- ƒ‚»Q7¼i­«q´UΦW]™(&óýdËl”¿¬ Ûh”ZÇë.çåL>åv!©õ›á
+ºM!3 65OøbÌi,5Õƒ9Å9¼ó5¯6s–‰Õز÷ƽ&çbª¼8— àÙ 3Øõ¾$ò¨5´‚HšËÐuŸ
+ ÚS"ÚÿŒ¶*›¿N' Ú=pWLkÇk2­šµÛ™õÖ˜¯ß~ðo;1_¡Î™á…f0
+ˆ›j­FÎcïJáè‰ç&nJB
+-϶ˆe3¦·š=ýM*Zw °ÌæÖI–Ú-yø}‹x ú "Tòl £›Þä­n‡ÑeÙµM HÃÛ)µ ŽÄù¢[–%Q?ü¾ÿ&‡N×.Ÿ —™>‡ö5™å¾|MfÑQ€î^%Ź¯£Êƒ´*û§<Gä_~)¶ÎD‰`׸ØíäXlª„}±ì£;ïÍ!³„ìÄ=å ¬Z†€Ü¨ê[Eekèk6Ę­;ñÃ]À2
+×Åí3zxÐdeÊ$ô6E0»Jj™*ÚÕ¥ µh³¸tzæC1ü§” W–CD
+¼é ’y-Õ*ö⺔ÅDÆã<‡Ú]<N¡—gllXìj }?a‰õ„@±«‚|Ñ7íää7b›û*ê­!òúR¬WÐÅîü2mR .댊éuÆxÙÄ~žó¢öχë3¸ê™Dµo¤×Ï齃ìF¤U¼Ï9=ð¾»_m´Å5ejvÉînaëåÍ“*’zí<[,ðé‚ËÏš¶
+}åT•Ãê[æìÜß:>Ôªu¾eG~+{"\Œ¼xMÄ›<t…nSþ:‹ýÜγR|þ#r³îæ¢^=æBƒÍçœ5Ê;ÛeaÒŠÒù~*!˜XŠ]
+8ÔÊó­ÄJŒ…Óˆ~à~ÔžŒHµd–ö•£qx —G¶LÖÏüVú >”Ÿ®˜Üñ{OgÒ—4·T¦H×Jôd™²ž°rñ}¬'4£?‘ëm©Î
+/“­”ÍjAâÞøŒÛ½fò4r¨0ήl‚„êúÞµþvë`îÍ_†¡ð'‡£Ä4()”‡°»Z£uǪNÖï/6­¾…bÇðgT[Àù*½üìg÷ÙÔÁYÔázÜ;aÝ7î?¸ã×Â!òÐér­›å¦ÛáM­Ä»ØïuÃôAbÞ?ü>ŸZd9ûJ­KGÊ!IuìƵ±bž¦¶÷øPìöé•è‹þ_îXÀÁÕb*’ ‘B ²u‡‘ÇâyQ
+T¸G@»T»Ÿ‚Køx$ÌóÆY",J±Ï†
+oÍ‘l'('Œaø&¶+mmÅëwðW ͈Ûm>‹­‚®þ ;¹ZŠ}U¾‡Ý±·•`Oàihâ¼>ä?'ÖEvÎKÎÊaAGíG‡Ê›[¶\N.»¹os[¾G¶W5oÝ ½¼rLE‡Ð|è{ʆƒ¯ÆSίŠYýr|¸¢ò ¢J¸5­/fÛŸ©š€9¢NPˆlå¸Kóhd?÷ë}Ÿ§ï}ŸLì>C³ Æc‰<²ô¯Rèd³”ý¢ÔU¦vUH²º€DúD®k Ùú_MM¬eýì[f¥&Cp©ó'§Íù̉Æî$mú{´=¢þÑ´–íË¡|{o…\•s·‰²Ç¼% ú„ bYQI& ÓÑ5PIÎhQ "ÄÃc•êI¢‘ŒÕ.¿^f›újÌse)­(Ø_-¾¶Ìj|UMjn&NªYýJ3P3ùU1Å2€ôÎ^† c&»rYA—ýªoò1%ò,w”‹‹^.¬
+h†Í‰ÑG¥RÅæ–¼²ê¯ýD3ú&ÐrÓ‘ZÛvª`#0dâ$ªîjÔQÚ× ò×Þï)Y|¾ÕMRv G:σNœA…€Ãuq’¥ —ÕþÚûS£{¼†L3E¦} ¥f<] ä ³g`‘y)²÷\òÖ¹¥£¥¾r›ËK†9”ô fÂ5W¸£ß“IéÆ ÒR1‹42¸Ÿø–Ì£ï ×!HÎ_y¿<pxÂ$wÅ• \ƒ¼[ܸ1X)¹`)X÷)ê»Z`eeÊ“øÔ_ÿ\"c{æ‚âN`j~ðb"Û¨t°ŸþC¬äþGlïni•o×”iAÕ$ÆpÎzò‰ÆM ž (%ÖïrI 'g³þ&'ËYrêaÍ9ŽR¤%ºÎLd´I¬í¨Òáï µ w >ýñ´Qâ$’ Hn›Ô4§·4þÞò°Ê¦/"xh²™P;=T/Ÿˆò‘é©#A¬´qÑe-Þ2¶ó˧àóŠÐ>é;S²¼])dà|f[W¡ê®Ä¶eýdÔ­0=0‡’{·X+2³?§™iðv¸R³Ð×ãü>@%õµE_o ¨"hÏòÓeó…Ú¤ù‚nËŸ¯{ƒŸoðÚÄ«ý²ð±5%ãPFvô@|Î °ºå_‰Í*_0¨fi|K¤9hÞÃJŽøi›æIà~ëíä ~Zˆß{Úà2½½Ei|Z`ô©{!<gÒ"|‘oÓºU{2“ TÖ’˜~ô³r
+&š7ÙÅgÚÜKY˜^[å]kå+ûÕ¤?ˆÇ¬ªdïõç°¦z@Škôý: ISѵf%‹Ú_g{!lä{ù9ó:A61TêÙÑ­µ:瘛džô^󵤧ÅäÇeJ™c->þ?Æ9Åð'®8XÝGSœƒ“;'çÑÖõ¾¬|ú`§“7˜\ƒ#kQÙq;}­-Sg‚ú܇–,£z… ôÉ›õ1ÆÅ#ü…t™^vŽüƒ‚d¿:±ëá¨/SÙggâ؊ɸ½biÖ#|
+˜šøŠ7‡r–é—Y•ï7|ÄBdy7þæS
+( ¼æ™þlÙ\#w35“çöLû4èŠjP°¼¾}Z‘— Âæƒ×“WH¿ü…}|Oèù
+endstream
+endobj
+12 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-251 -250 1009 969]
+/FontName/WFEUNY+CMR10
+/ItalicAngle 0
+/StemV 69
+/FontFile 11 0 R
+/Flags 4
+>>
+endobj
+11 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 720
+/Length2 11506
+/Length3 533
+/Length 12059
+>>
+stream
+xÚí²ctoM×î';¶mÛ¶m[ÿØØáŽmÛ¶³cÛ¶m;9÷ó<ýžýžþrÆùÖ£W­±FÍ9¯uÕ¯f‘¢
+©½±™¸½ =7¡ˆœ2#!=#£04™ˆ“™‘ ÀÞNÔÈÅŒ›‰‹‹™PÜÌøŸÉ?/7+7344¡ˆ½ƒ§ÀÂÒ…R„ê_*B![3'€‰‘¡œ‘‹¥™í?&&F6„*ö&
+0q!46³
+°³ Tq1²35r2ýŸ‰ÿJXØÞËŽ™‰ðŸÏ?÷Œ‘‘‹‹Ëçÿ©T³8ºšI‰²122rp±ü;kâêädfçòï›ðÏŽÿ+6üÓ333h%9ÊKÊutFtƒJrÊ€…ÏÒ°?¼jß6|ë1Gm©{ÞuO#ÍÖÐÞdŸlÈͧU?“~Òœt铱 >¼çRë]ã A¿oÕaå_XëÖÒY?³aä ‘ÚgÚÔû’cyµºá_5}4\B³˜å•>(ÃZHÑWñÛãJkM”Ò„‰ÇûZ¦Dm7&ÖÐ62‚ä=d­_8Ó@×Ä``‰\­€!ļ}ûæ]¬ ûæÛŸ<ú>Ñ :·ß¶[‚³Îñ;
+ÕÒ†˜›û4±
+½Å2ô­ý”Oq•…ÝâBù؃Ñ0ƺd1½1²9ú~W©VêŠkÙH
+¢™Yù²òcÄÉ…‰7‰Ï˜émçu }G Ç‡ì»åïÄ6ጕ|£ýz-Y[¯?rUïYªÝK…üÅõTß)Ý&”"í-ñ-hšØizÍÖøÀã†×€ñ„]¨€Ëcúõ…=ˆU6Ö0bAóZ³Xê#»ÙØH D LH LçJä²ÔqÇ[^jÉ! ·ebóZ4i×C¸Ì*ðiVT:K‹Òä?C,Ö HÎìøô¢&©è¾ôå¦òLçèýÕTqç,C‚À»£hv¶§•Vr‚¥(^®ÉáßûêÕ} Ëo“ þE¾±‹€¡·}^´.éiÁAàHÜüÕʺ*ææ‚~h¥d¯”A•«Öõ£Ú¯ø"ÛÄØÝ| ¼ ¹+’»k[F`ês¬:Òbe&5pÝàMò¿ ø¿†àÍý©ÜæÓÏà€DŒ{¸‹T¯·É¦U…ãús²]Ga÷­‚eÖ¶¹¯á°‡Bß 5hU‹ÐõÏ}#iŠXü‰˜_ ›°ã`1óΑçе¿kRŠ5o#jFF–u(Ã;¼Òýa®uò3Ʀ‘D¼ö¶>o;‹-`TyRDKqCÉgû€´»Úíí`_Æ+˜’½ËаÐpiaÀ^ñ½!â[¸ÝÎT¨¦ÉÉZ‘&¼Þ²I.iš/#nÚú
+›ˆ«¼øŠS‚¿D'‰ò¿õфй÷´Ä—y}ÓüñÜÅ%Dܧ_QÁ4 ?–6¾Ý5BÀã·LÒ|í>éÒßÕ/kL‰5Ò”Õýâ&ãolíç‚UÝ÷‰€#8tËx5hRi•þÌ…ˆLO€Åe͸9º4öŽ^zðsw:F®R/-V=ÎåÖGÇ‹‰¿†é^ˆÚ°_9*Õ›%=„˜àÌâcg"Ä13<–M"ª½›ÄéB].ç‚ Í’Çda¤X¦Xï×ìß’ð¾4³ohOâ–&ˆ´ÚUX¢œƒ&,û0<‘¡-{
+`Òù¢@QÒ|Û­è+h‘fV9+$Ërl·Þ÷òë<ºSCQAÔ¬Rö´£îªÅ?”ÃœUk†Teù¤îÜ8ždÄ [Aњ캕*ÏC‹Yr¦iL) ¥0£ó|á9Ío2jÊSÞ*Ey¡>"‚à®ÈÿZžÉöóö=§D"ðúÆ*ôϾ2Ÿ¼©Qþž! VÉò2cøMµvXÓÂ}µo½8bÔÅfDž[1ü¥mFðóFD}O˜.Wm‹¨°ä){_¡lM$2‚STÐœúœF
+ºÆè<a­žYõ¦—'# ÒE
+žݵpQ~šIöPçQ†­æ5"ÒGôuó
+ Jÿg›I8¢÷j¯3[ÝT°óRØJ÷|jIfvßÀ:{õ}@ŒgÒÃ}︪–£ #©çjÙíaé:šÆû¬^a¦v ŒÈž|“’âÁHSÈ®A!rÅÈ®ã;ÑÃ1ŒtÒN Å V2'C-ïUÐ0"½¾úŒ€â'äÒYn¬™uEŸñþÇ6qe#>EiW€±,à~§HcòÎ]I…zÞ„¬„7¿òÓê’‰¼˜bàÒDþþc\Ì‹ò±bªºH³gehˆˆÌUÏÙaj6hWñòºÅDÂÑ µÈ‰ìôyÓåÒÚpù+RÄÄLÓ*‚(‰‡ænUå=‚æº@·røWÚŒgS†€ÌQZ~ÊØ…íýÄQ†VpÄ>2(nÆÊGûÀéÙñ¶Øæ¸2÷ƒ%ƒÿähcí f»ELR/nöÀàëPᎵ½¬ëešªùàxªë¾^`I«$Ç:ÈÛ©åÜŠÝàn$þ[Õ¸óÞD¦PBt°@’å
+xèÒÜÊVg&©Òã–ˆvÝfC—P5 9lˆ3“ÏÑ&?<‚ P·¡Zé‘0oY‚Â:¯fï_ÏoÉ{Rœ\´.Ã_‘qSŠôùê‡ù$¢¡m‹ŸŽ¥8op‹pâÈÊ(\ÆÏîâ²»‰®c€ø)ÚdEs÷%Úö’9McIm™U4
+ÄÙu2iP6-§VåÒWmLÉÌê?9léU€$~{‹¶üÁÀ—ãËêx2×>±GÚ÷À‰Cp“Iª¡·áÖìh›¸aÕcòų&ïñ“ÔÖåY°%àªc=b¯Ü4g¾äüßãnì^X4†¦.Xï‚]cŒ;k;3Œ¨9ÔÑ¢—¯§cvi11N;÷[ˆbF¡jöY*ø’‚ £Þô§GûXì÷BûfNN-SýlpR#LÄÏо $Ûu"jÂ>+Å.4É`ÒþlßÙ®¯ö€Þá²ÓväëÛ³÷úQ£@ô$­çæÇ®9ºêªŸ‘KšNœZ~
+¡¬Ôjد2X:
+4·ÇâRÒü?"@BuÖ‰ÔïËZæzÂY_Í´ïnPŒ^t˜°ŸÊÜ´»÷áñé³jɦšéVƒ÷T­
+ýLfT"r|&iÕãÖb5i 8™'n×qE¨-5ÊÛ0Å—‹W½\ÌŒGHØîµd3 Ùým ~Þ©5)V0T6™ãȨ§àR4øÍOã/…H8H°‚é{c’[V£VÉè#æ+®P· ¤£¥„~)_N®ÃTB€&z ¡Èóü}€ prAßßb7æ@’« å:°%î¹B”©.ëu²Š†€mâÆqˆ.¯dã1t4T™IÕæxGÿðøÝ=9ÊW1\*°z¬(Ï\k}žº36~7…åJI»®béöT§F <3¡”Ú‹3
+o‚ù„k’žª¿¼VÃ$¿Þ¹É°yl( öi¶l¨
+Ôq
+ÕúÐbid¾^…º³-4+)Èu±Ã&¡Cn¾ÂN”$_Ä• œ …%fZWJîÁ»‹dJCƒ[¨AD‹
+sYž‹’zs°7îÍÄ‘4ª·¢aM0KŒ\¼©~î¶ðûݨˆlõïµëãĨ+°¤½~cr+Ë/X€È^7Å6­Æîy6pÂÌ;Ò”9Ôì7–þ›â“ËÓ@í>Å-‚3M‘¥p‹bÜûЊ×íž ¼6ãÁ†Hv ½'‡zÈ­IVÉñåqã-§y%Op™`0ñí¨šî° Ž4sOЋ†Á· ÙÚJ°øS<mNwöhD@ 0²
+¡üù¯ÉµD…OÈ ³9šÂ«yku‹Œ0`½
+œWf¿þÔ^Í8àæž?Œ ÿOz5Š1Œuå¢ùh`¡è{*i“{¢åçú4þèó‚]gè?P«ƒ`q¥éª€Ž*ˆ8P¤òÔ§ta½˜.–ûþ¿WûEPéקk_³[GëúYh•©¿Ce3]¦wzƒ=ÅÎƈ“æx0ÎIBÇÖ€¥ö­VCÛOœ@
+ä =tÏâ«gLuùã‚6v O¢L¬#Œ»dípÃ@ûjI¯çµòŠ'”ȵù‘Q€McádJÀQO ‘CL²ñÖ6!)qèïGžC5J¢War:¿ÜÄÒþ™ççþ€"`¶Gߧ5'È)"©ÓÞÞpmÂ^‹
+&ÿj˲#ô~ÿšá’8‰Ýu2¿È§øb[
+`x¯&n莤ŸÓ‡[-þ épýõø  ÎŽ|ô¥³ˆƒ&W~"¢åÉ dOADaòû“´½¼Ô‡ "ÊXW,w†Êå¸b|)³õ:
+.hø(ŸWëró ²,2ËŽ6&X Ú°“0¥5‚âHR¹Z£C¤2áÇVÀ~ƒL7”¸|ÿqÛÎRg ‘ð1÷*k<ý3 ø¸lÌéO±üAz‚¶T•n–sü$s¿iÝŽ$q–¢
+H­*Š)?¬s;ÀEÈ°§XðÑ,¥IÐ-uI—ºhgïé£mx ÅG E˜å,2c©Ï‡&ËÃDyJ]Ù†ヲý˜Wz EW* ºüB*ƒ
+Àmçyñ¿‚Q*.ÚÃ4a«Y8@ü㡧DR9®%ájMi"=b§B×ß·j<uÇè&†ßjf‡Jš?6¹m’Š†jº—í¥<½ÍÔuäê€<ì£ ®MHúËPXï}úCh‰BLöÍúJûGÉnüŪáÉs£äjgµç«õÞ¡(Y†¤pËÞÍÁTÞSêcwÒä,Œ‡1”Ñx[– ô>1,tñøÌ4Ȭ×{?râÅ3˜­AÝó>Ý/a錓 ”
+Ûªb1fméj¨ëüÆjBÇWGõw§^Ø*ƒ (&:>L«oP;×CTޭ‡H†˜ÉüÐrÀ¹‚½^4ê'5'ü;FSsßk£(‡ž¹“Õ‡amC_žMïkÌy¦B$hLç8iÆ¿lÝþÜìÿñ%na‘A™/¯A”÷U9aÔe7(U|pÀÞEX1uürÂo˜íwæ¤m1÷«¢Æ=ÙÖ¤•'{yú¥k÷¶îæ²)­6;·YÑz«Ÿ2îüùo­§5ækQëãDrSï˜cÓ¥ÉWÀ§z eí¼©.‡0MÿzO2WAXãí¹WR8nîÃ,¡’‚+ÞÝ?R»’¶í`À•Çéþ£ËécÅ
+îïw­A5ÃxÃânÂ0ôûÔâBG«÷…xÙ¬ó* Æ@_/³e³±LJE¹¬ù¢\ãW³P JNT÷(lIDâºä½¿©v#wwOkòÎŒ.¼MÔp¤{ ¤Hš>È»$’2m,€žXì슰a£sÀ¶ý`Á,]œÌ×-QõèÑYÀ#²àé
+r²x½°î1 ÷”a^å¡Mñ~ج•†“ÎÄ&!ï<
+02Gv– 箶hru¿b™”äKC?ΦÄì‘ÈÇú®oùññÅø‡]¤›Búý>ŽòLf0âCûŽ°6VC6Pâª>p-éc‡©OìÃ̤? [K³lPÂ-&,±{¯?’PeÆËÆ»Kx´r|ãúh÷ö3Ž3Ýy³³àhª‡l~•ãSûò\0ö6îIݴ탧ei<y°-)Tdé6PÇM :ðŒ5†à
+?´¹æÞÎeže¦¸z«î½7íY•‹B§@&Û¹"^X^š¶"užÖÑÝ‘Á“úÂb²:Ö‹æxîa¨8è ¶mzåÔ¢E(È%9¸èGŠ¯µÞæZ«çò›wÊfQÐO½º©ÍÎÆ ç÷#ú‡m¤Z~¸2?ˆ¼fÊNÆr¶vè¬`:ŸùÇp}'³öÈ6fšíè=ßÑ‹ÚeOÎï PÓñ(¦4áúá_&W@U™Ù¼Ô©è”ÔûH©t¾G›iâ#|ÀJý~BŸ¦RG4GÜ*[xÍ«òÞ {Å‘˜ÐDGƘe
+Rï Á DZòá¡Øø˜A(ÝJO}ÖÒ·A.o&Ro1ÇeÇšô*:[^~ ãC.wáôó-2Å Ÿ–«¥˜ª?_¦žüšèÌ„Ô˜&u{ ¤)W]J%éGmYà5 cÍwIœð“÷ÂÂMxo‹u¥¹ÊºûäiÿòÔ¿Ôž•ÍN|'
+)#P`©ÊÜ:Èî¸âø Ÿ¹v&µÊÌ )‰JÅÉ+õ“òæ*xâ9É[¹ ïFæŒY–«:YžëNÂ2 ª4Îå²’ÒKÙJ@$•Låm„QŠ˜ú«ÅÐê;aMí $ÞÖ+a]èEÎÇTXh•E[×$«´¼ô­:qmc–dòìÿŽýýHn^+´p¯K·ÿ‘x;å½Okœ¦4F„_q\¡ƒùp‡¼­JÝüíÎNÌÉ2Èkª–„­Zǽ æÃWòXÊ¢¡*Ne†þGc«ô¡¨ãB!‰-Îe9 Óñ…Oþ“(õ ¸;šóÜLßùŠ*/N8HËÙîb øî²w¥H^v²i„ßÛÊ%¸Ø(÷†­í˼ƛ~ÔËMý%leuöë§4/Èáì¨eÎFÐy³–Œ¨¢Ã:Ìf·–¡¡au(WÙ&ázΚ’„> ÝÑ÷è*ùåRÉÜÑ}ÓïIÿËéItÏF›þTbGO53Ú9µÛ[ž—}Õ#ÿ7Ž0»b2œÃ„œ§©OÓRWpŸÀÉ Dk_jJ8’-'D "ô×_UäX’Ù}¸9I¯Í¿3P‡¼$&§äÍŒS3ɪuˆGg!öå —[i0mdñm6O2W‘q•}ÇLDÅ… ’v©Qm!4&mˆìܧ0ÿVt—_ë»ñ?oöŸŒæžÑË¡ ¬œB싨rÝÌ.¾çJwën%B·u.‰œá@ÂYmsd(Jp%’#Zåÿ®…ZŒCF#Txƒ"}ÌÏR_±ú”zÊ6ÕYgIË(ô°j1íD¥4‘Ÿù˜tkVï(p0>Î\ÍQ
+^Pê(9Ïï@
+®Åàg§­PIœÒ©ÿÍÖÝN«+¤ f,ʤ{agaS AB€¿i@Z…Å0dΫ!›ñ2eƒZ2åWLÍ68+`*"¿½(÷â7GÂÀΔ¤àu䆚‡ª|T ÂJT@Ór&¯átdV¼ì¹ÀŽÓôˆCÐúl™GÆ­ÓÓYÞž€4+£¹\°Â}„9ñ¦-e 1 ¢€D¸n -a”¬•Âˆs1¬DAÂaÂæ²J®jc+ñLÒN±¹ç˜åLÒöJµ©öŠþÌ Êz1<“ã‰ãŸË1„ì:#˜¸œi#xTJJÇ™Pðe! ¾zÚTŠ¼Ñ.aŠ6›œ
+[¹P‘x±ÒW'5*Öª–¨S’²Æ`Ö^3t ´%Ôc´¢]|úÇ…‡ôÚ¹øŒ2ª£9’§7nï<Ž(A!oéx }¬¡Tå ×_gºÄ]ª»¤
+î~Ë4P*‚;wFSTⱬ¤vØf"ÑVøn´±,Š•«Ë.ñ%3êšÖ-6²H'íIæN,RĺV4Û&ÿí~LAsÄÛGHøáqÍâÓ@Eï‚jqöᘒÐ-[ȵÓ"=â
+æ;÷ÌÖ“<ll÷9îX=ÑvŸœ÷†"&|È&¾^È…Ù®üa@Ì}¤¦=gz*dmŽW'óÒÐäEZ^Àû³Ò/?¢kÉÒ•1š"‡XM9F¸ÑYJvè{Íí䊻YväéjÀP¹ÖîÎ:øZT@±ž,€Tæ{^\;ÆÙ{_ü»w Úé±™Bt/`ø}Ú¿Ó:ñ2Ö ‘Rv’9þ^Œý]Ö ñ!ú°ýÃC{JOc—® %«;z[küõìå—Ä¡@Âó×¼t¤ê £ùDÀ¸Ä¤Ã4F÷Í#^Û÷‡n—,KŒ¸î“)+°£ü<ý,"s_£õ^[Ko2Ú™aáŽ^dsy¿"Ÿ†Ž?Ëg|Ç
+B*2zº#ÒKз'iCxk?æ£UP *À~[$ê³b+î«Åìé¸È¡' NlN~‰=>)ïñŽZ!»“nÎDðeô:Å1‚}Žåb£‰Ê}è¢,ó~´xëÌ‹°6|ñ‹¸o]iH@Þƒë+
+œ=.Æȇú⎽=…Ð2R[…¯ì¦ œÀÄ¡æ…q‡Ý`Á©
+÷ïRŒy!’…È@ãH®šu‹Þ€…íó«FgßOß÷É@ ¿Äó‰èȦO£ŠVˆ§–^\ÐÞ¼ öW{#Þ¼ˆ½šv½8ÞË}ø`r§÷ÍÊÝîD>hÚÐMèr=æ/g´Ä{w³MÔÆÃ,ï¬wïj±‰ôÖ‘“ÂÆÀýç篰tåØ[½D6þƒv ÔÐj9¤xQ”+¢Æñ9üRëØZ±…ä²ÜÙö,)úÀ®ÿopœ¥œ¦/0
+‡Ðîwh¤0qm†UÖùS»c-›‘ð¿]=Û ZÝ*^;ñ(:ÏÚdz¤EL$X¦«Å*FMBõÖßY¤¨fƒ ÓêoŽ&EnÏä0È~;I)ï\ä”k÷ô‘ÜŒÝ"ˆõÜœ"Ú2ñUX ¥% f H`)²²vŒÔv:øî7PÒ£·«G%ãB¿!%DAÍ•«XÏ2cUUIÍûK¾íK+E°ÖÅ7c?ÝawØ™ªµT`å÷NúòuèOúîQr)…¢Gj¢‘X·è L·cQÑ«¢Ô 3¶ûÄkXŒ3‡õ®ÁW?üÜÉX11'QL*ÃK~#öª&“$¶ž¹Ú…²ÿ¾“HáÞýý¤ºuÇL­_Ž¯Ï<´M5TÏZ­´ÿÚ ˜ifetùø
+ûN- Ï“⨦…B|Ýä
+¡7ؽ¤|foÝü–rZŠDÉEótôA挫ÜRKÊ!™®ÇF¡­žÜ *A¼v¸¡O#*q´GV¼ZГ>ÇIÐÄ“5-{cAÏÌ—fR~ø%iŸ\š5±ßÅÖ°îÞ~Ö<ð‚ÒÆHeläŒuAÒo~ö¨ZDµ<$Öï!Y"ã³p°àJßΪ¥: BŽjdy=?`ˆnÍB‹#>ÚÔ2‡í¥cËgÀõ²ŠuÝ(}Žê¹–Õ™—W•X7žMÜÑnlHÕ©;‡(Jò겯22ól˜ Ciø-îµÕb¨è  /Á¸)ÄŸg+ÅÓiM%ÈL"ϒлÔþ…
+ _‚DÐå.Åwi Áh­`=×’P„·;}ûËϨå¸Ð>w‹ôT
+ËwÃeô:`¼à|P4<ƒÊ_L¼ÞÙè´åJ¤8¬ás( ‘±ÁK.eÁ ûz¡Ðí, Ñêwö…{®3
+Ñš?m{ŽMåN\ëÌ–n+k0kŸ(¾â)à©>1;x/ ]“
+Xªí5n8°{)N*´Óœ¯ÑÈ£èÎdñH^qQ!Âd€£Y`·,g|U9áÑ6¤©ÀV m›ÏÿÝÜ;øˆÔ Ú1õ¹º¢H}4q,Ü´jui² AU¬LÐm,JÝbC¿K>fì{RϙΆÅ- åfü?| ÿƒÿO˜Ø˜9¹ØÛ9YCCÿ=ﶩ
+endstream
+endobj
+16 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-32 -250 1048 750]
+/FontName/KCMZHQ+CMMI10
+/ItalicAngle -14.04
+/StemV 72
+/FontFile 15 0 R
+/Flags 68
+>>
+endobj
+15 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 727
+/Length2 1844
+/Length3 533
+/Length 2389
+>>
+stream
+xÚí’{<”ùDZDÃ$alºœ‡ ¹Œffë– …†Öm.3Œ™q˺dÓºtÁ D,IÉ=äe‰S©Œ[”°¥l’*Τݳ¯ÓžÎëüw^çyþù}?ßÏïó{?ßçWsuCXQ˜$ÐŽÉ`#Pú(SÀÇ¡€hDBàpHdÓ˜ ["4P&&Æ€‡HŒ©‘¡©6ÌÐH-ÊöÚhva
+ÌH` Ù÷ Ç`˜/2…úG‹ ²ÂD\ÀÞ Rm@ÄIa2è‘
+-‘p˜6ÔR5¸šª2´“¬ku¿Ð¢ÏoJcDPYÖŸL–ŒÖðTÏ€Š4_Y¥ ÄÆdô·œhr—zLÈÖU†©žÖjka?Oƒ¥ÄT •+>ô‡±Û ù©Í;î&ò½UL[Ó§·_:C)ÖP…ÀL¶¦ýœ,ùr€KjlY77Ïå=ÊàæÌV»qaci)i…Ô.„œ"jû|Éêì>ŽÛ ·GEÌ
+蚎̄ úÂèdè“l)w(i°iT˜» Å£gœt°4±¸<É[~¨XcÃæ&íN.‡¢|ŽŠ¯Ã”¢¦Í³0µá¸Î&”qä&|?ë4º‡ 6-y¦:$7œ
+Â^/®r-ÀÞšõ›|V8k³ô,vxÿä]Hô ¯¡\¯ÔÜÌØ3¼6|n‘F?v¯'XGïp¤üBxIuSÒX­±‰Ëû‰[úI‘×¥7 ”YÚK»¨³C­ßænîn€Èœy¾ EŠ =ÕÄョw4™ÿÝÀè'¡´>¥Ô'禟üý›YN®"› ×ãìl™;ÎÄC†Ë#Îà1ּܥÉ úO”RO”Š¡Ì-nÏé)aÚžÚ+
+<Û¥»c{Îz 8Ð}w陳…jÜÞ®_7WqCwnY wÊthˆ{‘®&/±uë»Ø5ðù°[oN–…„> :|E<“yÞÈ\¬ŠXàÕòÄò_³Xi^à.Œ$­4©4 c¬J]›vå/·¹
+\žø'ä¥fÝ@ŸŸWÎmo[I©éþI)&\8¢Ø tJG4IöÛZ§äZV/§º– ó=#}ø¥WßÈõ!2îÂ2÷?»ÔEs]¾¸´'yø»B9IåqçÍö•Bt»lŸ’,g3¿Ê7¼Ö‚ŸåD:xÑXí´Dì l‹Ô2±Æ}7jxã‘ž•‹¸­]OÚß}Îo… ÷±4á ”Ø†¨ëq¼øƒïèûE:š»¨¾—d¶ÈxÄÍ4ŸÎÐS¼0Còi®m€Mdë;­4æ
+°Ç~…ç<¿eQ¬½N׌êm\u[(ÞZÏ>~Û÷ùˆóc‰ë“—®ß¦!^¾ŠÐï?ùð†¼çaµ%úBt9¦Á
+Ý“t6ÛÚ‰‡ô¯êߢÖ"U&ÜrºY \1”_z^W¬ØÖB­hakw0½Xl³å뎞 ¯
+䦰+ç»ãN8BÛͪÆk@ÔÙ‹MJs{'>\uîLJSQ‡‡˜ä¬Ý¯Å¢äí9ÌÊiÅàw˜
+S—–W ý¤âý~X¯?Ó5žîÏøÑÛÛFù lwH!îQ¤5mË=Pz.oÑ>ŧ¤Ó¿X¼W·[¾ÂÓ°5ú ä€6.öN¾¶nÇerg?üù°·'`A¨íñûƒJ›™›UÇ{AÙÊ5½ç V¶óÇyL¿E~Õ·*~0Ò²ÒÊ퀻%‹Ð’Ì©¾EO´®y@ÿ&Ù_P¶ž¢
+endstream
+endobj
+19 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-27 -250 1122 750]
+/FontName/ZNSNNO+CMR7
+/ItalicAngle 0
+/StemV 79
+/FontFile 18 0 R
+/Flags 4
+>>
+endobj
+18 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 712
+/Length2 1837
+/Length3 533
+/Length 2376
+>>
+stream
+xÚí’{<TëÇ•r´“r©Ø«aJd.œÍ„ÜwÒÌ&%·šf†™5³Çˆ
+I*)Jšd«“.î¥ØhÇÔ¤1n¹Î˜Ø‘\S´ÙSöùœöùç|ÎçsÖúg=Ïï·~ï÷}Þ±ŽL±p ³÷ƒ®lˆgAb€ÑÓÀ Ñ0‰ Ry 6äLå
+ݮ
+ž¬Øë[jžƒ=°ô»î zsüÑ:ƒ²9ÉãØûôóûuí¥ÇåUJšÄ%Â=ÍüÒÞw%*Ð3'ºŽ>¿ÄR'†o•8ï5ioáu¨ùζà=öÜl>u™Z-Ù¯òh*Ÿœ>½«ÌýpJÛòátá‰Ýî„»3rŽ°'g}.U€Y'<øz…ÑmwõÅ1« ÓWê=³Ñþ·µ/ÆùðRïÄdW爰0[‚ƒK(ýå)]+¶l œÏ<Ó*ye2õ÷c“ɱ:%.2w’tzàcÀÖ®´¼ö§ž•M'4lš•ä1ÊpùŹ™ÛgáÆjœéäCÏóZîjF¯õ~Ó¨¦¯kˆv!žþÿò Ký²7¨6Ô@7Ó~ p=°=C¯šuÛ
+endstream
+endobj
+23 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-29 -960 1116 775]
+/FontName/QGRDUG+CMSY10
+/ItalicAngle -14.035
+/StemV 85
+/FontFile 22 0 R
+/Flags 68
+>>
+endobj
+22 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 724
+/Length2 826
+/Length3 533
+/Length 1351
+>>
+stream
+xÚSU ÖuLÉOJuËÏ+Ñ5Ô3´Rpö Ž44P0Ô3àRUu.JM,ÉÌÏsI,IµR0´´4Tp,MW04U00·22°25çâRUpÎ/¨,ÊLÏ(QÐpÖ©2WpÌM-ÊLNÌSðM,ÉHÍ’œ˜£œŸœ™ZR©§ à˜“£ÒR¬”ZœZT–š¢ÇÅeh¨’™\¢”šž™Ç¥r”g^Z¾‚9D8¥´
+@W¦äçåT*¤¤¦qéûåmKº…dgaqºán¥99~‰¹ ãÁ…!Ÿ˜›™S U‘Ÿ[PZ’Z¤à›Ÿ’Z”‡®4<â8ßÔ”ÌÒ\tYÏ’ÄœÌdǼôœT]C=cSˆDf±[fEjJ@fIr†BZbNq*X<5/Ý)Àà;D?Ð=È%Ô]µÙ€Ä̼’Ê‚T„r0ßÁSQf…B´ž!P!ÂX±h¶¹æ%ç§dæ¥+—$æ¥$¥À0]åä”_Q­kd© kiLj††f
+æ榵¨
+Có2 KS=]L ,Œ ®L.-*JÍ+' aü´L`(¥¦V¤&sÍž#šÉ¯#«ý5áË«Já»Nœ»¹a–zÔ&CI¿óM“ƒX›òý¦Çž;w\[çóÂŽ™gîÉß4½0·Ñš3çØ›ûþÊ;—ñn‘ŸY¶ÆØ(ù$Ç÷g÷ú´0½eXœWÒžìË1ÿJÔ—Å]aKu¬¹×ÿz]XýáÞüßU- ûÝ£Ò%6· t½ 6µ¨,˜Õ`Ñï÷ÇN|+ªèKgÞ÷dªq;÷)yA«æW§ïpºq3ÇÉz¡ºí]£ÏK½&j¹ØŸuù~xÙ?Ë° «ä*¼Öûó wOÙ­¹\v»Âwv%ß|ùáðþ3Ù:Y³Y}î|vÿ¿ß¿Ã÷X¯©çd?/°yÊa^¯:ïËÛæ-³w^fyŽás˜Òì”ò“íß[ïàÓžûù÷Ðô¿|‹g—ë÷¦û…•š;ºûãùÄà¢}
+[Š¾¯ŠØ×£˜»÷~㮶m7 {–õ?Òéúhr=<ÿÉ©¨ªŸ qKÏøÝ®<°:­Ïÿw}Ô¼­žè8ÛØwÆÿµ·Ã›îK3¤?'”lóqfŸ¥ºü€ºŠz–ÝÞ#ŒŒ]¯¹…>žàÆbX8eEêÕÌM»^¯?¡ÑQ¹ˆ[ìMcnÛŽÀk«þõï“ñû5'³+º}q´%·HõzǧJ•wZ¿ž ‹ÿ‘f¾öð™ÊÒK_Ÿy(¼î¾¶nbÏ:¥“‚÷ÅdÛª>;7³³eÛFƒë¡Ÿœ~ÌVÜ–ê°ì½È„7~Õ{­^|yeÇüÕˆ'¨ù¾_Ť›Óئ|šV¿¹bά.Žß {cÖ¹¿?ÀÐzÁc×ÃG í±«¿}Zh9uçùÝ[Ü^\]Ùÿàg›èîc]UAåÛ3¸3x{’ß¾v¿ÕkI›î÷:¶ï˜¡yùñŽ„ý7MþnªŽýkû:˜ëØ/ÁöÇ&[6ë8]=ù‡åå½ã:OÒBJ:X”!-’rû\ih.7LÅÙ©4O¬\ýt³8ÿÅ·kÿ×XmÞ÷RågÊG-Çå5 ìØð(ënïß¼˜€›LB÷‹ænw®ûÝ?Ç0©YÕß )Þ=¼rÙ*ž¯:¬a§_èûO?ta[fÔ—c³96n˜1oþ¹sñì¯óÕØ''„+º:­4|.úÉb—Ÿœ7sMEý4ß’ j½m7Õ€BÀ5jÀ°0 9'5±¨$?7±(›‹
+endstream
+endobj
+26 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-24 -2960 1454 772]
+/FontName/PAMJDP+CMEX10
+/ItalicAngle 0
+/StemV 47
+/FontFile 25 0 R
+/Flags 4
+>>
+endobj
+25 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 809
+/Length2 1313
+/Length3 534
+/Length 1905
+>>
+stream
+xÚíR{8TûÎnt9‘{™¬\vnc.Ãl‘ktD´“i̬aif-æC.…'¶ËC.…°‹HÆ-¶Üµ7Æν›ì\*ÉÙ”]1’è̪½ŸcŸÎsþ;ÏYëŸõ}ïû{¿w½ßOgÛ¬5ñ˜‹%È€­‹½7Œðx´ŽŽ-¤r!¶£rA2@07'yL€øW€H ‰dc34Z°E‚ølÈ?€ èÚê­²H€5 dC4* ¸P¹ K"B£2# ¹|#
+]™LÄËá[¹¸tk‘\‚rðäeEIPÇÇÉ^yAë báÄKæ¬rÆk|Û«CÑ>t-Ý}Úv)?cýYùß|ø%®ô2\FüÈÔæ¶L·-ª}d)–­‹ŸªJŽ®‹ìWØåy¹-;ÿÒ¼Zà¢LÇŽñ:aw6*®Ï¸.g@8wõSʼsž!‚ ïIÔªZ¾5ä”&Èôí¿~x“ìÏ÷Qf6SN¨êâŒ
+öW…Wf_ÙÜ^¢?QþìÚû>$µ-@ƪ ëWóìŒc@–¹˜:6YoÙ_½¤×}»–{xÙdx_¢IØT½eù¨Z©ìËÑä3¬ç+¸‘RÕçe=Å¢« É?ra‡Üôø–½j¢cß)ÍÜL>Cë4ð‰ü‰‹[ØËO¸üJ:ECµbÎ;K鈡ôùàÒûtâä¹¥[=ƒÒIä-¨džêæÓ5a”§ ÇíÎZ’Ónû?Xïá^ÏO‰Ì‰]\)•ŠŸmÊšµ¡4hBjJšÚ(Á|#Ih˜§tñ*ý›
+«Ùêo–¨'
+Ï 5U˜L<Hò’Z2)é Ò.§ìƒå²üjÇ4<´Êùñ¾ÉïÙç§3Á•K4¿ÂÞçÿ_>ÿøß 1A*›‹°¨ìShô?ò*ù§
+endstream
+endobj
+29 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[0 -250 1171 750]
+/FontName/QVRZWB+CMMI7
+/ItalicAngle -14.04
+/StemV 81
+/FontFile 28 0 R
+/Flags 68
+>>
+endobj
+28 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 722
+/Length2 1452
+/Length3 533
+/Length 1987
+>>
+stream
+xÚí’{8[yÇ«—T[£ô2­:T\ª‰·´%ŠPƸ_ÊöH9š ‘¤BIé^Ô´Z:âtP­>”2e°¬¢ÚA«¨Ð6ºë,ã¶ÆÛg;ûÏ>ûß>{Îùã÷~ßïùþ>ç=?Œ¶‡ÖŽÊ
+…YLÃ’›™
+sø8
+³™_Zýàu67˜Šp_vɈŽPì˜átÀâÍp ÙºŽD;"10ÕáPh@D†×t˜Iý’D6¾5ão}=ýìÖÿízÓB˜o~$ €¿¹×jüoµlFl$q ˆ—e÷çUð›eRXT„xq &bSÿ)üÊÞžXsÀã x€`Æÿ«Í‡‰Dqa²`ZL-MÖT
+—͆™œµ³ ûÜÏu"› ÇÀô3~Ò=+ûp)ܲůÉ9»e/o)§æÌÌfréO^÷Ó‰‰ÔŸqˆì:§wÐBe ÀÂÏ‹èW³ct®¯ù[ÞtNÎÛn¹•PÒãÒºÔ±w¨uJ£«¢&N ayMç”)ý3­6§½Ü))z§ÿ¦MC÷¼¥ûììÄ•^Òt‡ÊµÒKy±å‚N¹•m¹¿ÜfúiÛÎ+Ž^êúµÝ½j^®¢˜Û˜Mê7¶ÉÕ"ßVØ”O¼;²Rä2Ôòt%;kp’Ž’IÓÞâfç¬RŠ•TjwT¸j?9,ô—¬ÿˆR¶rjü® i\ é_^ÞÕ’ˆ©¨[b¡Ùã6ÃRßHÇŒd&¦§dÝÜ ¦ü<R¹½ÄÕ]d=¢¶56ÁLÓÝJOqZ.ÏÕm¼uâ¾ò õ2ÞæQj’ó9KcÝv¥Žñæ ׉ÏÚÕä"ïÈ\yõØqÎVÒÊ}qk²ž]œd›z¶»ù
+÷`ÒǸ¸q£}Höpß.Pßxizæ6ý–õá¾~fæMŒÔ:¼ôUÖJû¹54Çè ].)—áSr#ªû¥1Ü©±ùC¾×ȶI+ì¬â}Jf}c`~° ùi™JˆfZóÇÖ¥èøÙörÃì[Ûªn™,haNyUt|t?ìG»©œ¸$ˆ?âƒ+qKu+:wU]º/ïb1`^üT_þ·º§qg‚šOäçé³Ñ’Ee&W•c÷GÑÒ㉆xŸ‹ò/úV ĶHZò,\s}¯Ÿ#Ø•…þ3-ÐpÓë7
+;“ÊõÁƒ(›÷mÊÕ
+¨Ñ9èeV4J÷ým÷øÅ»¾ülOÜÛÀçy±æMI|èTÔÔvÿ'÷Â\D*{š¤ÕX {§‚TâäBm@<íiðâö¥ ÿÙ±.ñè±Þœag烈(õ (5o±=™üKþ9ñV좤,™õÝÎÛ ¥%GF†´Mi¿ÞÉ¿;?;ò5I#ÜUÒhh:P»98í‡ý…UÙƒn¬¸œÅœœéé¹\jÈIænar+i£Rá€Öµd+Þ÷å×v õÇ.¥V+ņ̃*7JksßXð šÎý#é þ]ä¿ê@$igò¼jŸš¢àxÍÛ7/'ÐR]½ÚŽ¬Æ—³Ò eAbš]5n€¤ñ£ï™”—]–¾TE9…I½#á7£Û»žÚu³ÃTG[¥7ŸFÏ^h«³]ö÷M FŠ€"%AßòŠx+¡E¾S0W†ý¥·a¯È©gÞHùRÆGÃ$³-Ì}f\õì!_lišòè^À•òÄn5¸®ŒSÿª8‰<Ö_W×0uÍðÜ_-©}[q2~p¢Xäi"øä…jȆ7¥#
+‹Š„U•û"„±‹¶Õ§óøéØì¬Ê{ˆ<Œ‡¯'~0=5J{ÒFãíü‹kÿë/·Æ¼
+¤­1ùøÊx|ÏA­Âý£{$ÅK(ŒO¤J)'m(j˜a˜¡>´±Ë8Åêê}98Շǻå×ù¦_Î&5D¡„?ÖÂçDsm‰©®&srNàþ
+<Kð™ýPþ¸©±.¡áR‹x´3b»CÖ ÞÜURQ6{sÆîÛŒ íÔáÚ¬)aßù¤V¥;Î/W*\^Äç¿ÞÉoËé˜xú‡vRDo‰ã+ëðOUUY?G‡‚ÿå…þÀÿD
+endstream
+endobj
+33 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-341 -250 1304 965]
+/FontName/UZMPRB+CMR5
+/ItalicAngle 0
+/StemV 89
+/FontFile 32 0 R
+/Flags 4
+>>
+endobj
+32 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 717
+/Length2 1238
+/Length3 533
+/Length 1768
+>>
+stream
+xÚí’kTgÇKhÙ6(,×T”PKn¹ß¨  " ™I˜’Ìà$á¢D. +âpQZ"ÊÍ r‰ˆÊE‹"‹,«Š±¤²×îYº_öì·žÎ̇÷yþÿù¿¿yæ%™±m½ ,Þ„¡"[:…î x„0:…FcI$oE†ú€"Ø ;91€Mp¬z¡~œ™LgƒH$ÞXB
+ŽðâD€•7yÑå
+
+aÙ,ýÔ÷Zˆ ¢/R~M]4/Õô×êáàH2ISO—®6ªï«¨e{ù¢ BPÀ(âЯß2±XXò>[;{:`Ë`Ò
+m}ÙC¹gEëë–\§êO|Nß" ¼Ü°"ärð‡ÚÏj§r#8#~}/Üà«[ÜýÃö¤éFëë!WBæÂøY)î1ƒiᜎì±È‘_¢‘ SBí*›[)iÁüý†Ò—^•'¸å“ŒòRz¸ýÇåÑéá—¢“L¼¿~jÍýþ漯¢6š¢Õ+ßÖª=Õ#îð²6pzhèôÖ=âˆPï:pa»Mgsù™XL<“³y b—Ã+²Wé
+DZј·~š6Ê ™ëPfÖÂW^T£$÷Y<o~5á
+î=²â{bF÷¥ÓQ:µ4MÍ|Úytª£Â€ú'¸±õ„¥Yyúv¬åÌ-=?àöÌíǪ3ñ'¢,æ ïÝ8…ÙødC^U’ѧáìÈ#­eåq#£7Ë/ÞÞ£¡ÑyWf ìÍÙp’ac¿§'®Æ°ç
+å~¹£áÖ®[ohl»7­¨¦‰ÔgÚÑy²2Ù"W ÅÈ0îŸX£¯+%}ý“ݵBo¶‚`ýzþŒŸukÛöÐ]þ„')¬Ý,?Éò{Û¸/1”}8HÚiYk¦›ak8Ùp°Ìã¬x©¬ù+Y.¯¹Wwk®«,*𤦼·–îÕ×qûP™õ*;À¶ktɘ¾H˜ýL÷B¹E^lmÂ÷½Î`»ó²IÎt§§8¤L7]ÉOõ¥rÅ1B¸§›y§z+å¬'6a A%^d(·Þ|¿tÕå¾^½ZÓ1 “!sv›ó ¹®ëv‰\òXñS™cƶÅ]ò_þ2
+endstream
+endobj
+36 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-15 -951 1252 782]
+/FontName/JBJZGS+CMSY7
+/ItalicAngle -14.035
+/StemV 93
+/FontFile 35 0 R
+/Flags 68
+>>
+endobj
+35 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 721
+/Length2 599
+/Length3 533
+/Length 1109
+>>
+stream
+xÚSU ÖuLÉOJuËÏ+Ñ5Ô3´Rpö Ž4W0Ô3àRUu.JM,ÉÌÏsI,IµR0´´4Tp,MW04U00·22´25ââRUpÎ/¨,ÊLÏ(QÐpÖ©2WpÌM-ÊLNÌSðM,ÉHÍ’œ˜£œŸœ™ZR©§ à˜“£ÒR¬”ZœZT–š¢ÇÅeh¨’™\¢”šž™Ç¥r“g^Z¾‚9D8¥´
+@W¦äçåT*¤¤¦qéûåmKº…dgaqºán¥99~‰¹ ãAá„!˜›™S UŸ[PZ’Z¤à›Ÿ’Z”‡®4<â6ßÔ”ÌÒ\tYÏ’ÄœÌdǼôœT]C=cSˆDf±[fEjJ@fIr†BZbNq*X<5/Ý)ÀÐ;DßËÉ+Ê=X±É€Ä̼’Ê‚T„j0ßÁRQf…B´ž!P!ÂX±h–¹æ%ç§dæ¥+—$æ¥$¥À0åä”_Q­ LCº–¦†
+†F¦F
+æFµ¨
+Có2 KS=]L , ÍÁ¢É¥EE©y%àÄ
+ÿ=mù^unë‹)[úT£¾ÿÑÏòZb¢Ÿöeö®Q†…É9©‰E%ù¹‰EÙ\\
+endstream
+endobj
+40 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-4 -235 731 800]
+/FontName/PMDWMQ+CMTT10
+/ItalicAngle 0
+/StemV 69
+/FontFile 39 0 R
+/Flags 4
+>>
+endobj
+39 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 719
+/Length2 9085
+/Length3 533
+/Length 9643
+>>
+stream
+xÚí–UT\Ѷ¦qww
+w‡à.Á î^R@Aa N° Á]‚Kp Ü nAƒC€àNçœsïíÑçöK~ëÑ{í‡=çü÷¿¾5÷cm&ºwº\²@W’+Ä“‹›O ¯¡§ÇÇ àãæå•Ã`b’‡‚¬=Á®kO€OT” ëð¿ðñŠ òÿ½10˜
+¶µ†
+ÄÎ ü¯4æöŸ%/Ôã/€õŸ¤l€¿œ@Wˆ³/
+W7˜'
+Ðp‚ —‚þ§‚a.ÿ^Uñ´vÛÊBìA
+C캞֠5ø_‰ÿN%'çêóžKÀÅ/ àˆðòúÿ¯2}ØRQ
+‘Žxë ¼Ê™„{sÄÊ°ûàB*ËÕd20C)"‚,°b”ohò¸WzL“5w–Ð4¿Ïkû}=1•úâ»Os¬¨~R)6£ ùÁˆ%
+*dోXó‚˜üäß@ý ¸sí̈(áÁlf `1(FmR‚DSЦ€º5Ñ2`k€XôŒ
+–p8“ÿ§MÇf4Ìœ¤Ï|üéü0•²"*¸ÂÉ/`LU)ÅŠ`àÃèVo£’L8æ§ðˆš®çNSU=
+¨¶æþì&ŒýòÐ1rÄœïdV­ðœg.²¦…`M塺:îö¤]/=èøIˆåÖ' ½õ^êX»²¦nK€%Z¬á¨5?ëSÆ\i È?»¸„Õ4nnðI«}Hº¥*ª §Ør'çù“õ“å·
+^ˆ3q;Ò 4]Òá«'ÝX<
+ç—1œëñÄ0Èä{ü¤Ü) Ìáu(‘7[bù„]”}o§Î™ž•G!—¬Ò̪öqEãÄù[(Îê2çgÅB…å½Ýk_@d‰•òúod!P“ÅMgkïÅÿ]R&¿w±áD Ûw…ájr~‰Ì彎ˆäè/ºa¶­XÒϺΙæ3ÙLjD±Œ=ˆb§Ðµi㋃’'|i¹ ·ã7“&"¥ÜóÉK+çqrû`úMö“98Mõ¨®z±Mâ«%Oèʉ6åÌ i;þ¨æ5ÆŒ5CBz(Þ]’Ûçè¸Û5,º;“}Îj1ó›$ÈìH½_'?×äæ
+Žjª§h+ÓAt-c¥ì ºÉ<]EùÓÍ»Q%&wûÅjöì󖆋¡ƒ.[Ó4$—L¼`† !ÞiVAo¿AîGBjïÚkq;¡ÑÙö¸<$½4³Ž1DQD-Ëúm¦=Î-î_Ó
+Š$¶ó° ¨Çc[W˜=ÆÀèÀ¦}³Mºûä¤I¶¯ ùc0äOµEþ{Ã?`HâÏQ‰½ù­˜[¡á‹%wyÇýÕDì”8G‘aÇÁô½ô¤XÍ?ÔךdY5IdàXO aŒjàZ¸êŒ÷ûÓë]„S>â[„PF8ç¦_—èõo<s¤ =~ ¶$¯ÄÊks<Ì Æ^ßYmm¯yg~SI?©̳;9¦ÒSf&Ã; ˜bð‡tÅÕùŸÆNaþ´]kn¾9ý\ðÊaÔÛw$wÉÕóÇœ8”òtô£ï4v›“°ïˆÖ½Þ>Ëx/¦×B¦ù«pÉ(·ñm4ÓîÐ1è÷êIÐ|ràÊÉ1åÍb"¦¥dšœ´ˆa\&Ñ=ä¡^H«¹·è…Go´H5zÉ Ïw¯¼'Qò}œ¦ë%½ð8lˆß"áô¿jF݉É-mìJ§|ˆnD x¹eü OÎÚ;yÒXVÔTdlÂ^“D÷ ŠÌÈÚ1Þè £Ô-•÷\f–oþ¬‚°¯jãÌsܸïìS_í˜*Ì…óõí}ÇÖ~@ž·RI5:Í'aŸ¤¥ ÚØ^½ÂÛ±Ö*~%ìq©îý
+gûG4_†–?˜„ cL&O§ÒDò“®y÷0sÛæƒ. à©4Ÿ‚Ä·!¿¦.œã°º+ d5sßI |ѱ߮qå¦S`»ƒ§æ tÌe¤k
+¬øŽ:–ßœþ,p+}wš¯¢(Šív"åΉY*ÔŽº:á“v»Ø¼×Y›ËÝ(ýžû­7·éÕ/Ò÷‡ËU/‘Ï.uÅð¡VÇ—Uô¨Iâf­XlWC‹w>“ˆ!—Ü©¢×U»ï‚Že”O~g¡¸Ã£ÒûQD‡q£Ú„ÆvË‚´TÊœZ±žU4h$’ûSÀ?COsH2“„,ì>~ó3ÅF‹WT³þbùIg Çé(¶.è¦íC•ŽË™²¨ÞfÚùjƒ$ò»-¡™1‡ð5’e7Ëä‚öÃçMíTÐu^º¡Gz¨Íåüh½‡ÂÑt÷×ãU.†ú;™¨tøÅ6ãEG„Í o¶ÎØ9ŽIëg>’„Vë+?@É%·à(W"놛á^ ÉÕ`×ÝßcØ'Ãõ7¾ÿZOi°Ð[DÇOÌA‘eûRÏøá•¿ä óì¢ÕºéÅ d­_¤ÜiãÒ%G4rß„üXÒÀá ðÆ|Ô›—€ã~lGßL5†û*çæAº§ô< χñÈ8[­(®õíi²To.´g à`)Žûs7Sð]¨@#‰OUR8éÊÂr{uÇѹwd5>ìϹ‘*§fÂüžÎscû]H*ÉMo3_¶ê%ÄKz“0u­(Íü°4”©@=z¸÷qŸË“1qå{Ï7Êšu#eŠÁÚÁ’lûá*ËS²6{AiÌ_µÖ%'86ÎüÔ•ÑØÈÊ™º8¸ƒ š=ÝÉiž}çŽÇÈÐôQ^8È£Ën˜?«øô²R·]ê4 áHXÝAJ¡¯é‹7²iú¢†
+Ý_]|Ÿˆad’Æ“ÈÝØ•Áí1‰š‘‡ª{Jc$ù'ëŸiðƒ1pú8ÔˆVœöÎ6}¾{cΫ¤¿/¢ç ™¾‡ÙÛ¦Hh
+&ホ’ÿgæ5§õ‘t§K³Öǯ]¿3ýz"Ê0@LzjmØ΢³€_q¹}IÓ¿Ì^ý‘xú›}^ý"bí~›÷Ó,ÖF)Bl
+ÖaY„SÖ-$ïqDÜW5€‡ÕoÖC_ËÇã×ã,×›_c«æãÆ‹Ôw$‹q"]ýl!–Â%?•Oc4ê¿P˜:±R.ÿÊNê•'G’rn/MžµDÑk¯ÏÒp Â%x!éy±fR7ÈyÆUvN˜Rkœ‡až3­Jzdò ¢Èzuö)^Ü.tœ>AÄÉbëߟy·PÒ=*¸<†!Ã\ÌOß'•‰²¸­·"¤9á-;—Ásô8Z¿%X­ˆxêè²À Ï–¦Oü•?
+ÛÃáñ¡Ó5Žv€p×!ÿ"¤'@:Ü•>fúÄ8W=±Ám’&›ÂZ£!‚7~¡Š/&‹mÇã8f!%÷@æwÃh.û{¼:tv´ø¤¤Ä£8
+uÅéÁðÅGZ¦ž0fN447Ö¯_ §øˆi—ø ¿eµxýP sãD©ÆßdW¾Ì8 ë¦b“ýqc3@çFB#«ŽÝ¯¯UàXí:I17|+rn.xVÒiÃŒW¡±¡=¶lÞª#.(¯]å)¨¥H¢ìû
+« R†Äa7[*D#L;En›‘³{Ș5õnÏï[5º4¡ÉHµãGäú %_I\2rÂE¼ÛüŠê3ˆ_sû"ÏÇ&qþÕÔ#.få±ç+h ¦/ò2jþK_ÎBîËA…³Yð«
+Œùkß[·ÍÎ
+&ÇOËwå¯RU#×zÁPÐt
+¼zñŽ/îìyG÷åG®yDkC
+=ª#ÍÖÊòŽi-Z
+¿PC¸û òo¸ç¿ ﺱ™òn¶øÑÄ“½î.@~Sáy\ÎËÑ)g 1ù;Ž‡ZŒ¸“RŽ sº>x š4K>Ý ˜Øív@ö´ïKŠ…½eþ#éYnªÕlçœ~´º~ .ç‹Q›˜ãAÿÎõ(›7ÖZ6lò "’îi í8]µftY´®ºub‘Óœ“¤ £]úüŠ'.£9s‘Bí¸*“b¾¡•Ëü1Â’%u†©Ì¢l‹¬Î$[—ÆJèñù⢾
+* å൬žYFØv
+…Ýwá¹çÊJH«'±ÒÄÕ€äQÑm¥E`ö ßæsºøx]j&!æØ’£—Ϥ>󲜥ñ ^w’ƹÄàœo&º;òù_âcæ4•Jƒ¼¸fz}÷ÍÉ*N¢¢V¹ïÆ1ÁúÙ猻.ïZ[‡½hOnÈ,AÒî×?…²r >.i|?ãáŸg4ðÈtg´–î®U´?˜øâWUàë?]É°Ù<íOƒ¼ ¼ ¢o“í^vÄ÷›Žsþ´Ê‡Dî³'u‹ë·é‹ÑíÏ°S¬5&zhĶ¼óÑ¥~LF–…!M{”5'ÈÏQZ8KŒƒíö‰D…¦íd dÕu}LUZnó·*£ífd‚k¾Ÿ/°.”-j !”#~›w&|ûúTÝ’èVSµÒlhâå½sGä`ïéä¾å&Z
+«¥cmÊ»¡¾Áþ ;qÒÄä&?"“Íiàër›ïÆ'a*í)r1 K~5‘ª«D5™cxÁ§WÕ7í¥ƒ?¯•„ñµÆÚb Ã~Ç]ƒ6¤$ å‚)2´ öä>Äú_¤u)ª¥=Œ­ž…+…˜–g«."¶ýÕÀ(j³ý§ò°ˆI=S­ÍÆ0}Š?¶-îR}¸í{~B{¿?¥1ÞnS•¬=cNo~­D~ÍS¨5>ÔîyÊ®žÚ|¥|íΨ¥’‘dß;a盹LòÞ¥Ò„«ÛØI/lÌ”žª«óI:ÞdùÝk´®ëJþaÕ؇;±Ø`¦,Ÿ0<É Š7É‘g`½î9½+Šg6¤¨”Õ1Ö[}‡f‘4ÉBxs-€¤69SByc‰^"-Š`ÐÞ³8F¨hÎû>¸ô»qÞwV¯ìqïA?ŠÒÄbÁó赨¼Ã¥¨"à”2ÆvV¥$üØcÿfe*„É|¥w&Ÿ‹xâ~¹yÂ>—Ø2=s.¼×â&ê¼OOtÄue 4n©2þø¦ÌICOÞš4Jž¥@2üúôQ>4áRªø!O„P¹ÛĸÍw­™©-†V«ås-Iq6" .PábUù.=x{½ü°Fs$°Æ×EûÑe+ÛÀõOò÷Ž’rJiF5„‚¸™—8"æÔâ¤{²¦[”Pmì¨^Ô@ð Få¡CÓo4|ÓAd³VJù>ÔèÝÐçúÞŽœ´øÇëôMÛœ÷‡b1Eˆ¹‡Nq–>Ñrȵ(¤ä9N èY"ö4δ¯ˆ­dÐr·vÞUç¥ëŸPü\†ú=ºÞjç}÷ì‰XÏ+jG ~ÛTW•2ÛŸ’ê˦$^÷QJ4,i.ŸÊ_Bhdf‰¦·ëJ^·lq}#Bxß»V%ŸÅ^kR,HÈÙ‹[d`ä–„…øSÒ·ôãŽïb³Ðé„Òk‰Èn2*ã­(¦ã9žIÊ&3Þ6þÄÆà9°; œ³}9þ•öj°ÑÑ^¿ù´ªaûfŽ{¯Ï‰4˜kÑ®ŠøöËRÈÇøBkñ9k!¡–t麰¢@È@?ÿþ|*éù «×ZðÔ/Æcê2-}eÉ<”T!ï~ßÂÝÞYuÌ‘ÛŸÂ']b@¡r~—óÆíýÕxf¢Fëa6>t³A«q: ’^Ç:;>Mz²²Wû®‡*)õ>#ºò3ä²ÊÆ'ú'Iý^+ÖxÔÚóžrˆòÒœÝAI…½¦Z¬É6Ua\jEä"Šº·@Cv<>y*’ºÐe^¤.v_‡”¯¿Ñµ2u4ØCqàpBí‰~÷,ÛêʯPÓ)”·vjwþþµ¥œw,:Z0"a×K¤µ ­—°}.ŽÅTGŒ6*ÆÊõ24FÓÆñ²KîDt½§*@§UûÂÌ@).^ò=SM8`#‰™±>/í~h$6×¼õJ”TìšS0zG ú:éìÔ'ìNLÉmÓ<NùÖ˜<©ã¤¬ž8ÔäAÓiò]ùMì‹ÀGìëOÏ›KѬ²a
+“WýGÍ¿‘w+'KÕ…•:è©eÂħ"ÕȺÎ-sñ¨ÒšÀ³Ž
+ýÔ3„om–@çU"ž¾½^ÿÝwo>Èœi¦
+ض„š|uTOñ@¶V ÆI[‹á‘…VØèµnÂ!•}äüNc%¤¹.?™¤~9Ôk.Ù3à4’†Ìô ò÷QÚ¤ø½èì!éÐTª›O0£¢m¬0û,¨Èò+·Ô£O܆”½ ª›©ÀuY+ìò¤0&õ’/Ò×´ÕˆdŒ‚p…Ï› }º» 7"§®/!áËaÓÈ= õg²q›ë—‰ŠÓ½¥Lã}ÞBöˆC9¶«9ÈVâÒ§b¤ÃN~ O5Z ½âl”®yøΫh½ÿÞMε]‰² 9T‚7Erü¸¹’ŒêÌÑ«ÑX>¶}¹Vf¤´a32`< †­ûä{-ÚwáX†¸ÛŸçº§Èƒ¸²4-¤Š—X×2 ‚ÃC£Ì¯Â¹˜“õÈkt(‰ØJ6ÁüŒ¬$å@Í}ý½ÏËÓ½ˆ}MÚ燿ÑÀ9‰2ã¥îDnëüØN6¯K-2Äbc¹ÏMã¨Ý?.QjÆÿÜæIUÐk0Wc£{\<ÿ¥@t´M>mæàU”ÊÚ«cÁ4)pNi˜»›Í1žçÉIàIظD`Ô€ÀJ{™P]\vRsJ¦ƒ2Qg‘V¨°Ý£n´oÓê¡.1±Æn>w(YÞžÈϯ‰XGz˜æˆ¼¢¤™’Ùu
+ý!—€þïkÝ–0 Òùe­0£W r|„¤¨¬iÔìÜý;ëFÞØ+`ÇÀÞ–óä—Ä\x¹[#JEQ<ûyYaÄÀé—£Ôõ+Fí 5ÙLîû2•)Ò ÌšX»AÞQè«GW 1l®Ÿí2wÏKÅRç§%Üɹ5‡ƒÐbñ\$o8}L€ç×åó—¹DŽ
+ÙƒïþV#¡ýàÓÇH 4–þlÿèW-1~š~ÓT \üSÿiõK„±¬¯Rc?ŽbÑ3cÙøœÑ‹sÚ>¥a§ñ€ëxóo|Å¥˜ü=†Më‰Òµq¦12¼$Ñù–Ýt=SJ’åƒy?Ù=µ¶®ß¯³YÞÑ1<n︗H)ºÿ>¯E_Yæý¿¼0þ¿Áÿ¶Î k¨§«‹5Ô ã
+endstream
+endobj
+50 0 obj
+<<
+/Type/FontDescriptor
+/CapHeight 850
+/Ascent 850
+/Descent -200
+/FontBBox[-163 -250 1146 969]
+/FontName/BJZUOD+CMTI10
+/ItalicAngle -14.04
+/StemV 68
+/FontFile 49 0 R
+/Flags 68
+>>
+endobj
+49 0 obj
+<<
+/Filter[/FlateDecode]
+/Length1 728
+/Length2 2335
+/Length3 533
+/Length 2880
+>>
+stream
+xÚí’i8UûÇ…ÂNèb‘±²·½ÍDØCæYl{/,ím›B† !22e.C*E†”(ÉmCHÙ™‰ã˜S†«:çžçvî›ûÜw÷¹k­ÿß÷÷]¿ÿg}×_LØÄ\ZGruHDŠ4ŽTÐFúH
+HŒH8LüÙj þ€3qáç®>ƒ‡°šD7<H#åà2r?tÈ[òq&ë¸bðÞàw$â~&ÙËï;BËÀÎòüÙ“üÝ] D¤Xx‚€Ì_öï5ò¯z/%2äØËìÅŒÜ3îÝ®ÚM›ˆ%á ¢`NÁq2îŸÂß©´´HþÒHY@%¿wÜr
+€²‚rð¿:-‰—¨—‘‘QB)}W±>d2H¤|?{Ÿügí
+í¥‚þ jnj$9/9Ì#ÃãT..Þ»KeO ä
+QN»*Ì÷î{Öë¥lèI·†eö¨É^6c ¾6¨Z{çҮъ›éêÒ‰²¹“²ó³LñÙè6F:u¦ãÁ /J&fzÅr5zÛ×(§kTªd4Š–Dn ;–jÿrŽymÄœŠ£Î ­/8W‡Ý×äêï»þT¢ØWžÛ8+·œ7Ê;y¡šÿ:®wÿ¹ƒð!z;&ß7¤…º«EjÒ¸çîï9.æZðÍLÅ>{ìñ‘dt.ò€[fœe¿%ܘ× 'ywŸY¼7îykÜΔL§yjæ&ÓT;væW,\¹ÓÖ—oþr„™ñØ¡¤KqÄëÅ2º‚CŸ0›L°“$µ4æ±;ÕŒ`U²`¿6~ù+ñf–s5Ÿ]v•öù·­›Dª"wZt¹-»|NñÙ¤ÛÞÙÉmé«^¥T˜@øÂÃ#OL÷å]lp)â<z$ä¢ÆEˆ¢*pæ=ŒÏÁ$½ËÛGž ïhaSB@ÃüŠAü³!W ncªIÊnyÖ+Ž¼ÏžûÑðžŠ|EOƒ«8xï’˜ïzå\º½®ZÅN_ƒËÞ2_L9 òR k³÷)^a[«ì£{Ø°ªEhšZ´Q=hÐ{÷ EðÌïRw%„€£•Óâ¡èmaûÉÄÍnÑa®Rvž+÷:Jèð‹ŽV¨f=¡þA㳃´Ó
+'MìšÐ¼,VíBÎêóž]U…ê†ùcæTÖiÿ1”)Ú͈µ!vI 8té¤q ü¥‘ÛuýþrÎ ;À óª3jÍÝÄS친´zé
+ó û ÁtŠ!}HžVЛ×ÆtL5P+_ËÖw²ô '_5ÖxjP‰eh–˜¦Ý-µÐ°ZWùðÚ”¤“AAV“>jÇG‹*‹yRº°'#ó[/ S­ÌöågÅníâo<yuÙ#€n3tŽØn­hHßÍ°Ž Í@½ ÌòðG‰HZæGyÇoʇôîp×&ó>™Õñ‹8ÿ.]^¡<¬Ù×àîNÏñÛ¿²°?¼6ØÏ7}Ëœ®›'Oy)ÜÁ—›ðîó¹ûr…ë«Ç½¼š{ãKݘƆDÿ.VÒÏzô„ ]«×èÍ€Ån†ÙSlÕSù½y÷„4üsn¾“%Ýß­G7ÐV®ŽqEV¡f"+¬4UU^$Êw·ôòÕC&æ‘žõ’|#r[L~Á¸Ôù&šOi„R©«öìÈãþBKø:_e áfPn«A 4
+³”ª›UÎ×´L=s.Ü(êà¿ÆEßø¹\½és¡­ú2cPÍÇG®Ú7/Û¼Iž—º¹oEÓ âúÂbŠR”µ¿ú™!øŒ–‹qÛÆù_/J;±žê‹AUL&Í[çkžãD=U±·èNmz›Rú”†ÃC/¸D4OñÞ”âÏëi˜ÿõ";÷–Ô—@“fÖÆñ¹Qè\ª¶ŽÙ3a^5YðSm!VZ66’z²1£oÌãóÚìh®­[ô«mÁZϵ)ð¸bz@ŸG²<üŒì5‰/bTcd•áŽûh““bŽò²¨S¨lb{Ãzü¼E ùs²Aêà&+Æõôý4þs"¨xÊkíƒ-Fñì\ÁW¼S<Õi_ćګCwžË+¹@¶–^>LÙ\[±ôuŒºÿ±Œ}²“äòÐΔ]—”°wŠ9¼ü: Õú±«¯P”jÚÀÞ²lËGiÚ4Ïâ«£ç[Ïž‡ø|áÀvú!úucÍüã)7Ù~áÅ‹y;!”ඕ*†/â¬a=•zf0Ú2°¤+Tj OjNu¬‰8.­Rë[%ÔŸ:Ý¢]¬äŒ}VÑî·a•–éoˆ\¯mýTÑÞ9Ís›O¥k(Nš§6‡,ä™—«_-ët¯‘6¿¯ÌƒÞüÊ4öºÍÆ šAQa;«Š‰Cm¥%uPg$˜*82Þ§vÅV5&œŸà@ê»Z׺â­W³P@ð{9Щ«PÂгä7]Ç^m¡â’ÿh‚µI¦Ù~ †Ê¡h{QW®")ºº9¦5Só›sïç¦6Þ§ºøØÌšÏÉvóÖ+¼°Îæ—õ+;Ñ9A¨ÔšÉMôÓXvƒ4Z–v–Ûô²©Àœkçí`çÎÚ.§S*KêºóÌ"ò„¿¤mY>Á¯0/M„3f~­x×ËÁÊ×—¥ÉCOxx•;Eä°iõž7¾ &2ÂeŽlEÊ“ëYªÚ1è`‡Ø×
+¹—¬™ù®È74‹„óÎ\+;ÿÀúX<£¹´×®äbZkWb›<§_£ÌyÁþ?àb
+endstream
+endobj
+1 0 obj
+<<
+/Creator( TeX output 2001.09.01:0924)
+/Producer(dvipdfm 0.13.2c, Copyright \251 1998, by Mark A. Wicks)
+/CreationDate(D:20071202130931+00'00')
+>>
+endobj
+5 0 obj
+<<
+/Type/Page
+/Resources 6 0 R
+/Contents[42 0 R 4 0 R 43 0 R 44 0 R]
+/Parent 3 0 R
+>>
+endobj
+46 0 obj
+<<
+/Type/Page
+/Resources 47 0 R
+/Contents[42 0 R 4 0 R 52 0 R 44 0 R]
+/Parent 3 0 R
+>>
+endobj
+54 0 obj
+<<
+/Type/Page
+/Resources 55 0 R
+/Contents[42 0 R 4 0 R 56 0 R 44 0 R]
+/Parent 3 0 R
+>>
+endobj
+3 0 obj
+<<
+/Type/Pages
+/Count 3
+/Kids[5 0 R 46 0 R 54 0 R]
+/MediaBox[0 0 595 842]
+>>
+endobj
+42 0 obj
+<<
+/Length 1
+>>
+stream
+
+endstream
+endobj
+44 0 obj
+<<
+/Length 1
+>>
+stream
+
+endstream
+endobj
+4 0 obj
+<<
+/Length 33
+>>
+stream
+1.00028 0 0 1.00028 72 769.82 cm
+endstream
+endobj
+58 0 obj
+<<
+>>
+endobj
+59 0 obj
+null
+endobj
+60 0 obj
+<<
+>>
+endobj
+2 0 obj
+<<
+/Type/Catalog
+/Pages 3 0 R
+/Outlines 58 0 R
+/Threads 59 0 R
+/Names 60 0 R
+>>
+endobj
+xref
+0 61
+0000000000 65535 f
+0000068247 00000 n
+0000069057 00000 n
+0000068718 00000 n
+0000068910 00000 n
+0000068411 00000 n
+0000016430 00000 n
+0000000009 00000 n
+0000021774 00000 n
+0000021590 00000 n
+0000000913 00000 n
+0000027923 00000 n
+0000027735 00000 n
+0000001829 00000 n
+0000002746 00000 n
+0000040292 00000 n
+0000040098 00000 n
+0000003700 00000 n
+0000042981 00000 n
+0000042795 00000 n
+0000004646 00000 n
+0000005610 00000 n
+0000045666 00000 n
+0000045471 00000 n
+0000007226 00000 n
+0000047319 00000 n
+0000047130 00000 n
+0000008177 00000 n
+0000049529 00000 n
+0000049338 00000 n
+0000009153 00000 n
+0000010147 00000 n
+0000051817 00000 n
+0000051630 00000 n
+0000011115 00000 n
+0000053893 00000 n
+0000053699 00000 n
+0000012122 00000 n
+0000013131 00000 n
+0000055301 00000 n
+0000055115 00000 n
+0000014108 00000 n
+0000068810 00000 n
+0000014853 00000 n
+0000068860 00000 n
+0000016297 00000 n
+0000068512 00000 n
+0000020920 00000 n
+0000016491 00000 n
+0000065253 00000 n
+0000065058 00000 n
+0000017398 00000 n
+0000018380 00000 n
+0000020852 00000 n
+0000068615 00000 n
+0000021528 00000 n
+0000020982 00000 n
+0000021483 00000 n
+0000068992 00000 n
+0000069014 00000 n
+0000069035 00000 n
+trailer
+<<
+/Size 61
+/Root 2 0 R
+/Info 1 0 R
+>>
+startxref
+69152
+%%EOF
diff --git a/Master/texmf-dist/doc/latex/mh/eqlayouts.pdf b/Master/texmf-dist/doc/latex/mh/eqlayouts.pdf
new file mode 100644
index 00000000000..3104a4b6fc0
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/mh/eqlayouts.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/mh/eqlayouts.tex b/Master/texmf-dist/doc/latex/mh/eqlayouts.tex
new file mode 100644
index 00000000000..f0542ef5a6e
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/mh/eqlayouts.tex
@@ -0,0 +1,346 @@
+\documentclass[twocolumn]{article}
+\pagestyle{myheadings}
+\raggedbottom
+\makeatletter
+\def\maketitle{%
+ \twocolumn[%
+ \centering
+ \noindent
+ \begingroup \Large\bfseries \@title\par\endgroup
+ \medskip
+ \textsc{\@author}%
+ \par \bigskip
+ ]\thispagestyle{plain}%
+ \markboth{\@title}{\@title}%
+}
+
+\def\@oddhead{\quad\hfil\textsc{\rightmark}\hfil\quad\llap{\thepage}}
+\def\@evenhead{\rlap{\thepage}\quad\hfil\textsc{\leftmark}\quad\hfil}
+
+\providecommand{\qq}[1]{\textquotedblleft#1\textquotedblright}
+\providecommand{\mdash}{\textemdash}
+\providecommand{\ndash}{\textendash}
+
+\newcommand{\ititle}[1]{\textit{#1}}
+
+\newcommand{\LR}[2][.4]{%
+ \framebox[#1\displaywidth]{$\displaystyle{}#2$}%
+}
+
+\newcommand{\LHS}[1]{\LR[\relifactor]{#1}}
+
+\newdimen\relindent \newdimen\rhswd
+
+\newcommand{\dwline}{%
+ \hbox to\curdw{\vrule height1ex
+ \leaders\hrule height.55ex depth-.45ex\hfil
+ \tiny \space display width
+ \leaders\hrule height.55ex depth-.45ex\hfil
+ \vrule height1ex}%
+}
+
+\newenvironment{layout}[1][.15]{%
+ \noindent
+ $$\edef\curdw{\the\displaywidth}%
+ \def\relifactor{#1}%
+ \gdef\layoutcr{\cr}\def\\{\layoutcr}%
+ \binoppenalty 10000 \relpenalty 10000
+ \setbox8\vbox\bgroup
+ \advance\baselineskip .35\baselineskip
+ \advance\lineskip .35\baselineskip \lineskiplimit\lineskip
+ \relindent=#1\displaywidth
+ \rhswd=\displaywidth \advance\rhswd-\relindent
+ \global\row 0 \gdef\rhsskew{}%
+ \halign\bgroup \global\advance\row 1 $\hfil\displaystyle{}##$&%
+ \ifnum\row>1 \rhsskew \fi $\displaystyle{}##\hfil$\cr
+}{%
+ \crcr\egroup\egroup
+ \vcenter{\halign{\hfil##\hfil\cr
+ \hbox{\hss\dwline\hss}\cr\noalign{\vskip.6\baselineskip}\box8 \cr}}%
+ $$\relax
+ \ignorespacesafterend
+}
+
+\newcommand{\stagger}{\omit\span\gdef\layoutcr{\cr\omit\span}}
+
+\newcount\row
+
+\newcommand{\rhsskew}{}
+\newcommand{\skewleft}[1]{\gdef\rhsskew{\kern-#1\relax}}
+
+\parskip\baselineskip
+
+% Tone down the usual large font sizes of section heads.
+\let\Huge\large \let\huge\large \let\LARGE\large \let\Large\large
+\let\large\normalsize
+
+\begin{document}
+\title{Equation Layouts}
+\author{MJD [1998/12/28]}
+\date{}
+\maketitle
+
+\section{Misc examples}
+
+Let us consider which of these have 50\% or more of wasted whitespace
+\emph{within the bounding box of the visible material}.
+\begin{layout}[.4]
+\LHS{L}&=\LR[.35]{R_{1}}\\
+&=\LR[.25]{R_{1}}
+\end{layout}
+
+\section{Ladder and step layouts}
+
+\subsection{Straight ladder layout}
+This is distinguished by a relatively short LHS and one or more RHS's of
+any length.
+\begin{layout}
+\LHS{L} &= \LR[.5]{R_{1}}\\
+&=\LR[.3]{R_{2}}\\
+&=\LR[.25]{R_{3}}\\
+&\qquad\ldots
+\end{layout}
+The simplest kind of equation that fits on one line and has only one RHS
+may be viewed as a trivial subcase of the straight ladder layout:
+\begin{layout}
+\LHS{L} &= \LR[.5]{R}
+\end{layout}
+If some of the RHS's are too wide to fit on a single line they may be
+broken at binary operator symbols such as plus or minus. This is still
+classified as a straight ladder layout if none of the fragments intrude
+into the LHS column, because the underlying parshape is the same.
+\begin{layout}
+\LHS{L} &= \LR[.4]{R_{1a}}\\
+&\quad +\LR[.6]{R_{1b}}\\
+&=\LR[.3]{R_{2}}\\
+&=\LR[.25]{R_{3a}}\\
+&\quad +\LR[.45]{R_{3b}}\\
+&\quad +\LR[.54]{R_{3c}}\\
+&\qquad\ldots
+\end{layout}
+
+\subsection{Skew ladder layout}
+\begin{layout}[.5]
+\skewleft{.35\displaywidth}
+\LHS{L}&= \LR[.3]{R_{1}}\\
+&=\LR[.6]{R_{2}}\\
+&=\LR[.25]{R_{3}}\\
+&\qquad\ldots
+\end{layout}
+In a skew ladder layout, the combined LHS width plus width of $R_{1}$
+does not exceed the available width, but one of the other RHS's is so
+wide that aligning its relation symbol with the others cannot be done
+without making it run over the right margin: $\mbox{width}(L) +
+\mbox{width}_{\mathrm{max}}(R_{i})>\mbox{width}_{\mathrm{avail}}$. In
+that case we next try aligning all but the first relation symbol,
+allowing all the $R_{i}$ after $R_1$ to shift leftward.
+
+\subsection{Drop ladder layout}
+\begin{layout}[.6]
+\makebox[.15\displaywidth][l]{\LHS{L}}\\
+&= \LR[.6]{R_{1}}\\
+&=\LR[.3]{R_{2}}\\
+&=\LR[.25]{R_{3}}\\
+&\qquad\ldots
+\end{layout}
+The drop ladder layout is similar to the skew ladder layout but with the
+width of $R_1$ too large for it to fit on the same line as the LHS. Then
+we move $R_1$ down to a separate line and try again to align all the
+relation symbols. Note that this layout consumes more vertical space
+than the skew ladder layout.
+
+\subsection{Step layout}
+\begin{layout}[.6]
+\stagger
+\LHS{R_{a}}\\
+\qquad + \LR[.7]{R_{b}}\\
+\qquad\qquad + \LR[.6]{R_{c}}\\
+\qquad\qquad\qquad + \LR[.45]{R_{d}}\\
+\qquad\qquad\qquad\qquad\ldots
+\end{layout}
+The chief characteristic of the step layout is that there is no relation
+symbol, so that the available line breaks are (usually) all at binary
+operator symbols. Let $w_1$ and $w_l$ be the widths of the first and
+last fragments. We postulate that the ideal presentation is as follows:
+Choose a small stairstep indent $I$ (let's say 1 or 2 em). We want the
+last fragment to be offset at least $I$ from the start of the first
+fragment, and to end at least $I$ past the end of the first fragment. If
+there are only two lines these requirements determine a target width
+$w_T=\max(w_1+I,w_l+I)$. If there are more than two lines ($l>2$) then
+use $w_T = \max(w_1 + (l-1)I, w_l+I, w_{\mathrm{avail}}$ and reset $I$
+to $w_T/(l-1)$ if $w_T = w_{\mathrm{avail}}$.
+
+Furthermore, we would like the material to be distributed as evenly as
+possible over all the lines rather than leave the last line exceedingly
+short. If the total width is $1.1(\mbox{width}_{\mathrm{avail}})$, we
+don't want to have .9 of that on line 1 and .2 of it on line 2:
+\begin{layout}[.9]
+\stagger
+\LHS{R_{a}\hfil+\hfil R_{b}\hfil+\hfil R_{c}}\\
+\qquad + \LR[.1]{R_{d}}
+\end{layout}
+Better to split it as evenly as possible, if the available breakpoints
+permit.
+\begin{layout}[.5]
+\stagger
+\LHS{R_{a}\hfil+\hfil R_{b}}\\
+\qquad + \LR[.5]{R_{c}\hfil+\hfil R_d}
+\end{layout}
+A degenerate step layout may arise if an unbreakable fragment of
+the equation is so wide that indenting it to its appointed starting
+point would cause it to run over the right margin. In that case, we want
+to shift the fragment leftward just enough to bring it within the right
+margin:
+\begin{layout}[.6]
+\stagger
+\LHS{L_{a}}\\
+\quad + \LR[.8]{L_{b}}\\
+\qquad + \LR[.7]{L_{c}}\\
+\; + \LR[.87]{L_{d}}\\
+\qquad\ldots
+\end{layout}
+And then we may want to regularize the indents as in the drop ladder
+layout. Let's call this a dropped step layout:
+\begin{layout}[.6]
+\stagger
+\LHS{L_{a}}\\
+\quad + \LR[.8]{L_{b}}\\
+\quad + \LR[.7]{L_{c}}\\
+\quad + \LR[.87]{L_{d}}\\
+\qquad\ldots
+\end{layout}
+
+\section{Strategy}
+
+Here is the basic procedure for deciding which equation layout to use,
+before complications like equation numbers and delimiter clearance come
+into the picture. Let $A$ be the available width, $w_{\mathrm{total}}$
+the total width of the equation contents, $w(L)$ the width of the
+left-hand side, $w_{\max}(R)$ the max width of the right-hand sides, $I$
+the standard indent for step layout, and $O$ the standard offset for
+binary operators if a break occurs in the middle of an RHS. Also let
+$t_L$ and $t_R$ represent certain thresholds for the width of the LHS or
+the RHS at which a layout decision may change, as explained below.
+
+\newpage
+\begin{small}
+\begin{enumerate}
+\renewcommand{\labelenumi}{(\theenumi)}
+\item \ititle{Does everything fit on one line?}\label{i:LR}
+ $w_{\mathrm{total}}\leq A$?
+
+Yes: print the equation on a single line (done).
+
+No: Check whether the equation has both LHS and RHS (\ref{i:lhs-check}).
+
+\item \ititle{Is there a left-hand side?}\label{i:lhs-check}
+Are there any relation symbols in the equation?
+
+Yes: Try a ladder layout (\ref{i:ladder}).
+
+No: Try a step layout (\ref{i:step}).
+
+\item\ititle{Does the LHS leave room to fit the widest RHS?}\label{i:ladder}
+ $w(L)+w_{\max}(R)<A$?
+
+Yes: Use a straight ladder layout (\ref{i:straight-ladder}).
+
+No: Check the width of the LHS (\ref{i:check-lhs}).
+
+\item\ititle{Is the LHS relatively short?}\label{i:check-lhs}
+$w(L)\leq t_L$? (where $t_L$ is typically $0.4A$).
+
+Yes: Subdividing one or more of the RHS's may permit us to use a
+straight ladder layout (\ref{i:straight-ladder}).
+
+No: The straight ladder layout is unlikely to work.
+Try a skew or drop ladder layout (\ref{i:skew-drop}).
+
+\item\ititle{Straight ladder layout}\label{i:straight-ladder}
+Set up a straight ladder parshape [0pt $A$ $w(L)$ $A-w(L)$] and run
+a trial break. If the combined width of the LHS plus the longest RHS is
+no greater than $A$ then we should get a satisfactory layout with all
+line breaks occurring at major division points (relation symbols).
+Otherwise, we hope, some additional line breaks at minor division points
+will allow everything to fit within the text column.
+
+\ititle{Line breaks OK?}
+
+\begingroup \hbadness=9999
+Yes: The straight ladder layout succeeded
+ (done).\par\endgroup
+
+No: Try a skew or drop ladder layout (\ref{i:skew-drop}).
+
+\item\ititle{Do the LHS and the first RHS fit on one
+ line?}\label{i:skew-drop} $w(L)+w(R_1) \leq A$?
+
+Yes: Try a skew ladder layout (\ref{i:skew}).
+
+No: Try a drop ladder layout (\ref{i:drop}).
+
+\item\ititle{Skew ladder layout}\label{i:skew}
+Set up a parshape [0pt $A$ $I$ $A-I$] and run a trial break.
+
+\ititle{Line breaks OK?}
+
+Yes: Skew ladder layout succeeded (done).
+
+No: One of the unbreakable fragments of the $R_i$ ($i>1$) is wider than
+$A-I$; try an almost-columnar layout (\ref{i:almost-columnar}).
+
+\item\ititle{Drop ladder layout}\label{i:drop}
+Set up a parshape [0pt $w(L)$ $I$ $A-I$] and run a trial break.
+This is the same parshape as for a skew ladder layout except that the
+width of the first line is limited to the LHS width, so that the RHS is
+forced to drop down to the next line.
+
+\ititle{Line breaks OK?}
+
+Yes: Drop ladder layout succeeded (done).
+
+No: One of the unbreakable fragments of the $R_i$ ($i>1$) is wider than
+$A-I$; try an almost-columnar layout (\ref{i:almost-columnar}).
+
+\item\ititle{Almost-columnar layout}\label{i:almost-columnar}
+This presupposes a trial break that yielded a series of expressions or
+fragments, one per line. Let $w(F)$ denote the width of the first
+fragment and $w(R_i)$ the widths of the remaining fragments.
+Set up a parshape [0pt $w(F)$ $A-w_{\max}(R_i)$ $w_{\max}(R_i)$]: in other
+words, set the first line flush left and the longest line flush right
+and all other lines indented to the same position as the longest line.
+But as a matter of fact there is one other refinement for extreme cases:
+if $w_{\max}(R_i)>A$ then the parshape can be simplified without loss to
+[0pt $w(F)$ 0pt $A$]\mdash for that is the net effect of substituting
+$\min(A,w_{\max})$ in stead of $w_{\max}$.
+(Done.)
+
+\item\ititle{Step layout}\label{i:step} Set target width $w_T$ to $A -
+ 2I$. Set parshape to [0pt $w_T$ $I$ $w_T -I$ $2I$ $w_T -2I$ \ldots\
+ $(l-1)I$ $w_T - (l-1)I$], where $l=\lceil w_{\mathrm{total}}/A\rceil$
+ is the expected number of lines that will be required. Trial break
+ with that parshape in order to find out the width of the last line.
+
+\ititle{Indents OK?}
+
+Yes: Step layout succeeded (done).
+
+No: One of the fragments is too wide to fit in
+the allotted line width, after subtracting the indent specified by the
+parshape. Try a dropped step layout (\ref{i:drop-step})
+
+\item\ititle{Dropped step layout}\label{i:drop-step} Set up a parshape
+ [0pt $A$ $I$ $A-I$] and run a trial break. Note that this is actually
+ the same parshape as for a skew ladder layout.
+
+\ititle{Line breaks OK?}
+
+Yes: Dropped step layout succeeded (done).
+
+No: One of the unbreakable fragments of the $R_i$ ($i>1$) is wider than
+$A-I$; as a last resort try an almost-columnar layout (\ref{i:almost-columnar}).
+
+\end{enumerate}
+\par\end{small}
+
+\end{document}
diff --git a/Master/texmf-dist/doc/latex/mh/flexisym.pdf b/Master/texmf-dist/doc/latex/mh/flexisym.pdf
new file mode 100644
index 00000000000..bfd83b1eb99
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/mh/flexisym.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/mh/mathpazo.sym b/Master/texmf-dist/doc/latex/mh/mathpazo.sym
new file mode 100644
index 00000000000..ceaad938a6a
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/mh/mathpazo.sym
@@ -0,0 +1,367 @@
+%%
+%% This is file `mathpazo.sym',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% flexisym.dtx (with options: `mathpazo')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 1997-2003 by Michael J. Downes
+%% Copyright (C) 2007 by Morten Hoegholm <mh.ctan@gmail.com>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Morten Hoegholm.
+%%
+%% This work consists of the main source file flexisym.dtx
+%% and the derived files
+%% flexisym.sty, flexisym.pdf, flexisym.ins, flexisym.drv,
+%% cmbase.sym, mathpazo.sym, mathptmx.sym, msabm.sym.
+%%
+\ProvidesSymbols{mathpazo}[2007/12/09 v0.1]
+\@xp\xdef\csname mg@OT1\endcsname{\hexnumber@\symoperators}
+\@xp\xdef\csname mg@OML\endcsname{\hexnumber@\symletters}
+\@xp\xdef\csname mg@OMS\endcsname{\hexnumber@\symsymbols}
+\@xp\xdef\csname mg@OMX\endcsname{\hexnumber@\symlargesymbols}
+\gdef\mg@bin{\mg@OMS}
+\gdef\mg@del{\mg@OMX}
+\xdef\mg@digit{\@xp\@nx\csname mg@OT1\endcsname}
+\gdef\mg@latin{\mg@OML}
+\global\let\mg@Latin\mg@latin
+\global\let\mg@greek\mg@latin
+\global\let\mg@Greek\mg@digit
+\global\let\mg@rel\mg@bin
+\global\let\mg@ord\mg@bin
+\global\let\mg@cop\mg@del
+\DeclareFlexSymbol{!} {Pun}{OT1}{21}
+\DeclareFlexSymbol{+} {Bin}{OT1}{2B}
+\DeclareFlexSymbol{:} {Rel}{OT1}{3A}
+\DeclareFlexSymbol{\colon}{Pun}{OT1}{3A}
+\DeclareFlexSymbol{;} {Pun}{OT1}{3B}
+\DeclareFlexSymbol{=} {Rel}{OT1}{3D}
+\DeclareFlexSymbol{?} {Pun}{OT1}{3F}
+\DeclareFlexSymbol{\Gamma} {Var}{Greek}{00}
+\DeclareFlexSymbol{\Delta} {Var}{Greek}{01}
+\DeclareFlexSymbol{\Theta} {Var}{Greek}{02}
+\DeclareFlexSymbol{\Lambda} {Var}{Greek}{03}
+\DeclareFlexSymbol{\Xi} {Var}{Greek}{04}
+\DeclareFlexSymbol{\Pi} {Var}{Greek}{05}
+\DeclareFlexSymbol{\Sigma} {Var}{Greek}{06}
+\DeclareFlexSymbol{\Upsilon}{Var}{Greek}{07}
+\DeclareFlexSymbol{\Phi} {Var}{Greek}{08}
+\DeclareFlexSymbol{\Psi} {Var}{Greek}{09}
+\DeclareFlexSymbol{\Omega} {Var}{Greek}{0A}
+\DeclareFlexSymbol{0}{Var}{digit}{30}
+\DeclareFlexSymbol{1}{Var}{digit}{31}
+\DeclareFlexSymbol{2}{Var}{digit}{32}
+\DeclareFlexSymbol{3}{Var}{digit}{33}
+\DeclareFlexSymbol{4}{Var}{digit}{34}
+\DeclareFlexSymbol{5}{Var}{digit}{35}
+\DeclareFlexSymbol{6}{Var}{digit}{36}
+\DeclareFlexSymbol{7}{Var}{digit}{37}
+\DeclareFlexSymbol{8}{Var}{digit}{38}
+\DeclareFlexSymbol{9}{Var}{digit}{39}
+\DeclareFlexSymbol{,}{Pun}{OML}{3B}
+\DeclareFlexSymbol{.}{Ord}{OML}{3A}
+\DeclareFlexSymbol{/}{Ord}{OML}{3D}
+\DeclareFlexSymbol{<}{Rel}{OML}{3C}
+\DeclareFlexSymbol{>}{Rel}{OML}{3E}
+\DeclareFlexSymbol{\alpha}{Var}{greek}{0B}
+\DeclareFlexSymbol{\beta}{Var}{greek}{0C}
+\DeclareFlexSymbol{\gamma}{Var}{greek}{0D}
+\DeclareFlexSymbol{\delta}{Var}{greek}{0E}
+\DeclareFlexSymbol{\epsilon}{Var}{greek}{0F}
+\DeclareFlexSymbol{\zeta}{Var}{greek}{10}
+\DeclareFlexSymbol{\eta}{Var}{greek}{11}
+\DeclareFlexSymbol{\theta}{Var}{greek}{12}
+\DeclareFlexSymbol{\iota}{Var}{greek}{13}
+\DeclareFlexSymbol{\kappa}{Var}{greek}{14}
+\DeclareFlexSymbol{\lambda}{Var}{greek}{15}
+\DeclareFlexSymbol{\mu}{Var}{greek}{16}
+\DeclareFlexSymbol{\nu}{Var}{greek}{17}
+\DeclareFlexSymbol{\xi}{Var}{greek}{18}
+\DeclareFlexSymbol{\pi}{Var}{greek}{19}
+\DeclareFlexSymbol{\rho}{Var}{greek}{1A}
+\DeclareFlexSymbol{\sigma}{Var}{greek}{1B}
+\DeclareFlexSymbol{\tau}{Var}{greek}{1C}
+\DeclareFlexSymbol{\upsilon}{Var}{greek}{1D}
+\DeclareFlexSymbol{\phi}{Var}{greek}{1E}
+\DeclareFlexSymbol{\chi}{Var}{greek}{1F}
+\DeclareFlexSymbol{\psi}{Var}{greek}{20}
+\DeclareFlexSymbol{\omega}{Var}{greek}{21}
+\DeclareFlexSymbol{\varepsilon}{Var}{greek}{22}
+\DeclareFlexSymbol{\vartheta}{Var}{greek}{23}
+\DeclareFlexSymbol{\varpi}{Var}{greek}{24}
+\DeclareFlexSymbol{\varrho}{Var}{greek}{25}
+\DeclareFlexSymbol{\varsigma}{Var}{greek}{26}
+\DeclareFlexSymbol{\varphi}{Var}{greek}{27}
+\DeclareFlexSymbol{\imath}{Var}{OML}{7B}
+\DeclareFlexSymbol{\jmath}{Var}{OML}{7C}
+\DeclareFlexSymbol{\ell}{Ord}{OML}{60}
+\DeclareFlexSymbol{\wp}{Ord}{OML}{7D}
+\DeclareFlexSymbol{\partial}{Ord}{OML}{40}
+\DeclareFlexSymbol{\flat}{Ord}{OML}{5B}
+\DeclareFlexSymbol{\natural}{Ord}{OML}{5C}
+\DeclareFlexSymbol{\sharp}{Ord}{OML}{5D}
+\DeclareFlexSymbol{\triangleleft}{Bin}{OML}{2F}
+\DeclareFlexSymbol{\triangleright}{Bin}{OML}{2E}
+\DeclareFlexSymbol{\star}{Bin}{OML}{3F}
+\DeclareFlexSymbol{\smile}{Rel}{OML}{5E}
+\DeclareFlexSymbol{\frown}{Rel}{OML}{5F}
+\DeclareFlexSymbol{\leftharpoonup}{Rel}{OML}{28}
+\DeclareFlexSymbol{\leftharpoondown}{Rel}{OML}{29}
+\DeclareFlexSymbol{\rightharpoonup}{Rel}{OML}{2A}
+\DeclareFlexSymbol{\rightharpoondown}{Rel}{OML}{2B}
+\DeclareFlexSymbol{a}{Var}{latin}{61}
+\DeclareFlexSymbol{b}{Var}{latin}{62}
+\DeclareFlexSymbol{c}{Var}{latin}{63}
+\DeclareFlexSymbol{d}{Var}{latin}{64}
+\DeclareFlexSymbol{e}{Var}{latin}{65}
+\DeclareFlexSymbol{f}{Var}{latin}{66}
+\DeclareFlexSymbol{g}{Var}{latin}{67}
+\DeclareFlexSymbol{h}{Var}{latin}{68}
+\DeclareFlexSymbol{i}{Var}{latin}{69}
+\DeclareFlexSymbol{j}{Var}{latin}{6A}
+\DeclareFlexSymbol{k}{Var}{latin}{6B}
+\DeclareFlexSymbol{l}{Var}{latin}{6C}
+\DeclareFlexSymbol{m}{Var}{latin}{6D}
+\DeclareFlexSymbol{n}{Var}{latin}{6E}
+\DeclareFlexSymbol{o}{Var}{latin}{6F}
+\DeclareFlexSymbol{p}{Var}{latin}{70}
+\DeclareFlexSymbol{q}{Var}{latin}{71}
+\DeclareFlexSymbol{r}{Var}{latin}{72}
+\DeclareFlexSymbol{s}{Var}{latin}{73}
+\DeclareFlexSymbol{t}{Var}{latin}{74}
+\DeclareFlexSymbol{u}{Var}{latin}{75}
+\DeclareFlexSymbol{v}{Var}{latin}{76}
+\DeclareFlexSymbol{w}{Var}{latin}{77}
+\DeclareFlexSymbol{x}{Var}{latin}{78}
+\DeclareFlexSymbol{y}{Var}{latin}{79}
+\DeclareFlexSymbol{z}{Var}{latin}{7A}
+\DeclareFlexSymbol{A}{Var}{Latin}{41}
+\DeclareFlexSymbol{B}{Var}{Latin}{42}
+\DeclareFlexSymbol{C}{Var}{Latin}{43}
+\DeclareFlexSymbol{D}{Var}{Latin}{44}
+\DeclareFlexSymbol{E}{Var}{Latin}{45}
+\DeclareFlexSymbol{F}{Var}{Latin}{46}
+\DeclareFlexSymbol{G}{Var}{Latin}{47}
+\DeclareFlexSymbol{H}{Var}{Latin}{48}
+\DeclareFlexSymbol{I}{Var}{Latin}{49}
+\DeclareFlexSymbol{J}{Var}{Latin}{4A}
+\DeclareFlexSymbol{K}{Var}{Latin}{4B}
+\DeclareFlexSymbol{L}{Var}{Latin}{4C}
+\DeclareFlexSymbol{M}{Var}{Latin}{4D}
+\DeclareFlexSymbol{N}{Var}{Latin}{4E}
+\DeclareFlexSymbol{O}{Var}{Latin}{4F}
+\DeclareFlexSymbol{P}{Var}{Latin}{50}
+\DeclareFlexSymbol{Q}{Var}{Latin}{51}
+\DeclareFlexSymbol{R}{Var}{Latin}{52}
+\DeclareFlexSymbol{S}{Var}{Latin}{53}
+\DeclareFlexSymbol{T}{Var}{Latin}{54}
+\DeclareFlexSymbol{U}{Var}{Latin}{55}
+\DeclareFlexSymbol{V}{Var}{Latin}{56}
+\DeclareFlexSymbol{W}{Var}{Latin}{57}
+\DeclareFlexSymbol{X}{Var}{Latin}{58}
+\DeclareFlexSymbol{Y}{Var}{Latin}{59}
+\DeclareFlexSymbol{Z}{Var}{Latin}{5A}
+\DeclareFlexSymbol{\ldotPun}{Pun}{OML}{3A}
+\def\ldotp{\ldotPun}
+\DeclareFlexSymbol{\lhookRel}{Rel}{OML}{2C}
+\DeclareFlexSymbol{\rhookRel}{Rel}{OML}{2D}
+\DeclareFlexSymbol{*}{Bin}{bin}{03} % \ast
+\DeclareFlexSymbol{-}{Bin}{bin}{00}
+\DeclareFlexSymbol{|}{Ord}{OMS}{6A}
+\DeclareFlexSymbol{\aleph}{Ord}{ord}{40}
+\DeclareFlexSymbol{\Re}{Ord}{ord}{3C}
+\DeclareFlexSymbol{\Im}{Ord}{ord}{3D}
+\DeclareFlexSymbol{\infty}{Ord}{ord}{31}
+\DeclareFlexSymbol{\prime}{Ord}{ord}{30}
+\DeclareFlexSymbol{\emptyset}{Ord}{ord}{3B}
+\DeclareFlexSymbol{\nabla}{Ord}{ord}{72}
+\DeclareFlexSymbol{\top}{Ord}{ord}{3E}
+\DeclareFlexSymbol{\bot}{Ord}{ord}{3F}
+\DeclareFlexSymbol{\triangle}{Ord}{ord}{34}
+\DeclareFlexSymbol{\forall}{Ord}{ord}{38}
+\DeclareFlexSymbol{\exists}{Ord}{ord}{39}
+\DeclareFlexSymbol{\neg}{Ord}{ord}{3A}
+\DeclareFlexSymbol{\clubsuit}{Ord}{ord}{7C}
+\DeclareFlexSymbol{\diamondsuit}{Ord}{ord}{7D}
+\DeclareFlexSymbol{\heartsuit}{Ord}{ord}{7E}
+\DeclareFlexSymbol{\spadesuit}{Ord}{ord}{7F}
+\DeclareFlexSymbol{\smallint}{COs}{OMS}{73}
+\DeclareFlexSymbol{\bigtriangleup}{Bin}{bin}{34}
+\DeclareFlexSymbol{\bigtriangledown}{Bin}{bin}{35}
+\DeclareFlexSymbol{\wedge}{Bin}{bin}{5E}
+\DeclareFlexSymbol{\vee}{Bin}{bin}{5F}
+\DeclareFlexSymbol{\cap}{Bin}{bin}{5C}
+\DeclareFlexSymbol{\cup}{Bin}{bin}{5B}
+\DeclareFlexSymbol{\ddagger}{Bin}{bin}{7A}
+\DeclareFlexSymbol{\dagger}{Bin}{bin}{79}
+\DeclareFlexSymbol{\sqcap}{Bin}{bin}{75}
+\DeclareFlexSymbol{\sqcup}{Bin}{bin}{74}
+\DeclareFlexSymbol{\uplus}{Bin}{bin}{5D}
+\DeclareFlexSymbol{\amalg}{Bin}{bin}{71}
+\DeclareFlexSymbol{\diamond}{Bin}{bin}{05}
+\DeclareFlexSymbol{\bullet}{Bin}{bin}{0F}
+\DeclareFlexSymbol{\wr}{Bin}{bin}{6F}
+\DeclareFlexSymbol{\div}{Bin}{bin}{04}
+\DeclareFlexSymbol{\odot}{Bin}{bin}{0C}
+\DeclareFlexSymbol{\oslash}{Bin}{bin}{0B}
+\DeclareFlexSymbol{\otimes}{Bin}{bin}{0A}
+\DeclareFlexSymbol{\ominus}{Bin}{bin}{09}
+\DeclareFlexSymbol{\oplus}{Bin}{bin}{08}
+\DeclareFlexSymbol{\mp}{Bin}{bin}{07}
+\DeclareFlexSymbol{\pm}{Bin}{bin}{06}
+\DeclareFlexSymbol{\circ}{Bin}{bin}{0E}
+\DeclareFlexSymbol{\bigcirc}{Bin}{bin}{0D}
+\DeclareFlexSymbol{\setminus}{Bin}{bin}{6E}
+\DeclareFlexSymbol{\cdot}{Bin}{bin}{01}
+\DeclareFlexSymbol{\ast}{Bin}{bin}{03}
+\DeclareFlexSymbol{\times}{Bin}{bin}{02}
+\DeclareFlexSymbol{\propto}{Rel}{rel}{2F}
+\DeclareFlexSymbol{\sqsubseteq}{Rel}{rel}{76}
+\DeclareFlexSymbol{\sqsupseteq}{Rel}{rel}{77}
+\DeclareFlexSymbol{\parallel}{Rel}{rel}{6B}
+\DeclareFlexSymbol{\mid}{Rel}{rel}{6A}
+\DeclareFlexSymbol{\dashv}{Rel}{rel}{61}
+\DeclareFlexSymbol{\vdash}{Rel}{rel}{60}
+\DeclareFlexSymbol{\nearrow}{Rel}{rel}{25}
+\DeclareFlexSymbol{\searrow}{Rel}{rel}{26}
+\DeclareFlexSymbol{\nwarrow}{Rel}{rel}{2D}
+\DeclareFlexSymbol{\swarrow}{Rel}{rel}{2E}
+\DeclareFlexSymbol{\Leftrightarrow}{Rel}{rel}{2C}
+\DeclareFlexSymbol{\Leftarrow}{Rel}{rel}{28}
+\DeclareFlexSymbol{\Rightarrow}{Rel}{rel}{29}
+\DeclareFlexSymbol{\leq}{Rel}{rel}{14}
+\DeclareFlexSymbol{\geq}{Rel}{rel}{15}
+\DeclareFlexSymbol{\succ}{Rel}{rel}{1F}
+\DeclareFlexSymbol{\prec}{Rel}{rel}{1E}
+\DeclareFlexSymbol{\approx}{Rel}{rel}{19}
+\DeclareFlexSymbol{\succeq}{Rel}{rel}{17}
+\DeclareFlexSymbol{\preceq}{Rel}{rel}{16}
+\DeclareFlexSymbol{\supset}{Rel}{rel}{1B}
+\DeclareFlexSymbol{\subset}{Rel}{rel}{1A}
+\DeclareFlexSymbol{\supseteq}{Rel}{rel}{13}
+\DeclareFlexSymbol{\subseteq}{Rel}{rel}{12}
+\DeclareFlexSymbol{\in}{Rel}{rel}{32}
+\DeclareFlexSymbol{\ni}{Rel}{rel}{33}
+\DeclareFlexSymbol{\gg}{Rel}{rel}{1D}
+\DeclareFlexSymbol{\ll}{Rel}{rel}{1C}
+\DeclareFlexSymbol{\leftrightarrow}{Rel}{rel}{24}
+\DeclareFlexSymbol{\leftarrow}{Rel}{rel}{20}
+\DeclareFlexSymbol{\rightarrow}{Rel}{rel}{21}
+\DeclareFlexSymbol{\sim}{Rel}{rel}{18}
+\DeclareFlexSymbol{\simeq}{Rel}{rel}{27}
+\DeclareFlexSymbol{\perp}{Rel}{rel}{3F}
+\DeclareFlexSymbol{\equiv}{Rel}{rel}{11}
+\DeclareFlexSymbol{\asymp}{Rel}{rel}{10}
+\DeclareFlexSymbol{\notRel}{Rel}{rel}{36}
+\DeclareFlexSymbol{\mapstoOrd}{Ord}{OMS}{37}
+\DeclareFlexSymbol{\cdotOrd}{Ord}{OMS}{01}
+\def\cdotp{\mathpunct{\cdotOrd}}
+\DeclareFlexSymbol{\coprod}{COs}{cop}{60}
+\DeclareFlexSymbol{\bigvee}{COs}{cop}{57}
+\DeclareFlexSymbol{\bigwedge}{COs}{cop}{56}
+\DeclareFlexSymbol{\biguplus}{COs}{cop}{55}
+\DeclareFlexSymbol{\bigcap}{COs}{cop}{54}
+\DeclareFlexSymbol{\bigcup}{COs}{cop}{53}
+\DeclareFlexSymbol{\int}{COi}{cop}{52}
+\DeclareFlexSymbol{\prod}{COs}{cop}{51}
+\DeclareFlexSymbol{\sum}{COs}{cop}{50}
+\DeclareFlexSymbol{\bigotimes}{COs}{cop}{4E}
+\DeclareFlexSymbol{\bigoplus}{COs}{cop}{4C}
+\DeclareFlexSymbol{\bigodot}{COs}{cop}{4A}
+\DeclareFlexSymbol{\oint}{COi}{cop}{48}
+\DeclareFlexSymbol{\bigsqcup}{COs}{cop}{46}
+\DeclareFlexSymbol{\rangle}{DeR}{del}{0B}
+\DeclareFlexSymbol{\langle}{DeL}{del}{0A}
+\DeclareFlexSymbol{\rbrace}{DeR}{del}{09}
+\DeclareFlexSymbol{\lbrace}{DeL}{del}{08}
+\DeclareFlexSymbol{\rceil}{DeR}{del}{07}
+\DeclareFlexSymbol{\lceil}{DeL}{del}{06}
+\DeclareFlexSymbol{\rfloor}{DeR}{del}{05}
+\DeclareFlexSymbol{\lfloor}{DeL}{del}{04}
+\DeclareFlexSymbol{(}{DeL}{del}{00}
+\DeclareFlexSymbol{)}{DeR}{del}{01}
+\DeclareFlexSymbol{[}{DeL}{del}{02}
+\DeclareFlexSymbol{]}{DeR}{del}{03}
+\DeclareFlexSymbol{\lVert}{DeL}{del}{0D}
+\DeclareFlexSymbol{\rVert}{DeR}{del}{0D}
+\DeclareFlexSymbol{\lvert}{DeL}{del}{0C}
+\DeclareFlexSymbol{\rvert}{DeR}{del}{0C}
+\DeclareFlexSymbol{\Vert}{DeB}{del}{0D}
+\DeclareFlexSymbol{\vert}{DeB}{del}{0C}
+\DeclareFlexSymbol{|}{DeB}{del}{0C}
+\DeclareFlexSymbol{/}{DeB}{del}{0E}
+\DeclareFlexSymbol{\lmoustache}{DeL}{del}{40}
+\DeclareFlexSymbol{\rmoustache}{DeR}{del}{41}
+\DeclareFlexSymbol{\lgroup}{DeL}{del}{3A}
+\DeclareFlexSymbol{\rgroup}{DeR}{del}{3B}
+\DeclareFlexSymbol{\bracevert}{DeB}{del}{3E}
+\DeclareFlexSymbol{\arrowvert}{DeB}{del}{3C}
+\DeclareFlexSymbol{\Arrowvert}{DeB}{del}{3D}
+\DeclareFlexSymbol{\uparrow}{DeA}{del}{78}
+\DeclareFlexSymbol{\downarrow}{DeA}{del}{79}
+\DeclareFlexSymbol{\updownarrow}{DeA}{del}{3F}
+\DeclareFlexSymbol{\Uparrow}{DeA}{del}{7E}
+\DeclareFlexSymbol{\Downarrow}{DeA}{del}{7F}
+\DeclareFlexSymbol{\Updownarrow}{DeA}{del}{77}
+\DeclareFlexSymbol{\backslash}{DeB}{del}{0F}
+\DeclareFlexSymbol{\hbarOrd}{Ord}{OT1}{16}
+\DeclareFlexCompoundSymbol{\hbar}{Ord}{\hbarOrd\mkern-9mu h}
+\DeclareFlexSymbol{\surdOrd}{Ord}{OMS}{70}
+\DeclareFlexCompoundSymbol{\surd}{Ord}{\mathop{\surdOrd}}
+\DeclareFlexCompoundSymbol{\angle}{Ord}{%
+ \vbox{\ialign{%
+ $\m@th\scriptstyle##$\crcr
+ \notRel\mathrel{\mkern14mu}\crcr
+ \noalign{\nointerlineskip}%
+ \mkern2.5mu\leaders\hrule \@height.34pt\hfill\mkern2.5mu\crcr
+ }}%
+}
+\DeclareFlexCompoundSymbol{\neq}{Rel}{\not{=}}
+\DeclareFlexCompoundSymbol{\mapsto}{Rel}{\mapstoOrd\rightarrow}
+\DeclareFlexCompoundSymbol{\cong}{Rel}{\mathpalette\@vereq\sim}
+\newcommand*\joinord{\mkern-3.45mu }
+\DeclareFlexCompoundSymbol{\notin}{Rel}{\mathpalette\c@ncel\in}
+\DeclareFlexCompoundSymbol{\rightleftharpoons}{Rel}{\mathpalette\rlh@{}}
+\DeclareFlexCompoundSymbol{\doteq}{Rel}{\buildrel\textstyle.\over=}
+\DeclareFlexCompoundSymbol{\hookrightarrow}{Rel}{\lhookRel\joinord\rightarrow}
+\DeclareFlexCompoundSymbol{\hookleftarrow}{Rel}{\leftarrow\joinord\rhookRel}
+\DeclareFlexCompoundSymbol{\bowtie}{Rel}{\triangleright\joinord\triangleleft}
+\DeclareFlexCompoundSymbol{\models}{Rel}{\vert\joinord=}
+\DeclareFlexCompoundSymbol{\Longrightarrow}{Rel}{\Relbar\joinord\Rightarrow}
+\DeclareFlexCompoundSymbol{\longrightarrow}{Rel}{\relbar\joinord\rightarrow}
+\DeclareFlexCompoundSymbol{\Longleftarrow}{Rel}{\Leftarrow\joinord\Relbar}
+\DeclareFlexCompoundSymbol{\longleftarrow}{Rel}{\leftarrow\joinord\relbar}
+\DeclareFlexCompoundSymbol{\longmapsto}{Rel}{\mapstochar\longrightarrow}
+\DeclareFlexCompoundSymbol{\longleftrightarrow}{Rel}{\leftarrow\joinord\rightarrow}
+\DeclareFlexCompoundSymbol{\Longleftrightarrow}{Rel}{\Leftarrow\joinord\Rightarrow}
+\renewcommand*\iff{%
+ \mskip\thickmuskip\Longleftrightarrow\mskip\thickmuskip
+}
+\DeclareFlexCompoundSymbol{\cdots}{Inn}{\cdotp\cdotp\cdotp}%
+\DeclareFlexCompoundSymbol{\vdots}{Ord}{%
+ \vbox{\baselineskip4\p@ \lineskiplimit\z@
+ \kern6\p@\hbox{.}\hbox{.}\hbox{.}}}
+\DeclareFlexCompoundSymbol{\ddots}{Inn}{%
+ \mkern1mu\raise7\p@
+ \vbox{\kern7\p@\hbox{.}}\mkern2mu%
+ \raise4\p@\hbox{.}\mkern2mu\raise\p@\hbox{.}\mkern1mu%
+}
+\def\relbar{\begingroup \def\smash@{tb}% in case amsmath is loaded
+ \mathpalette\mathsm@sh{\mathchar"200 }\endgroup}
+\edef\Relbar{\mathchar\string"\hexnumber@\symupright3D }
+\endinput
+%%
+%% End of file `mathpazo.sym'.
diff --git a/Master/texmf-dist/doc/latex/mh/mathptmx.sym b/Master/texmf-dist/doc/latex/mh/mathptmx.sym
new file mode 100644
index 00000000000..c612cfc516f
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/mh/mathptmx.sym
@@ -0,0 +1,367 @@
+%%
+%% This is file `mathptmx.sym',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% flexisym.dtx (with options: `mathptmx')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 1997-2003 by Michael J. Downes
+%% Copyright (C) 2007 by Morten Hoegholm <mh.ctan@gmail.com>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Morten Hoegholm.
+%%
+%% This work consists of the main source file flexisym.dtx
+%% and the derived files
+%% flexisym.sty, flexisym.pdf, flexisym.ins, flexisym.drv,
+%% cmbase.sym, mathpazo.sym, mathptmx.sym, msabm.sym.
+%%
+\ProvidesSymbols{mathptmx}[2007/12/09 v0.1]
+\@xp\xdef\csname mg@OT1\endcsname{\hexnumber@\symoperators}
+\@xp\xdef\csname mg@OML\endcsname{\hexnumber@\symletters}
+\@xp\xdef\csname mg@OMS\endcsname{\hexnumber@\symsymbols}
+\@xp\xdef\csname mg@OMX\endcsname{\hexnumber@\symlargesymbols}
+\gdef\mg@bin{\mg@OMS}
+\gdef\mg@del{\mg@OMX}
+\xdef\mg@digit{\@xp\@nx\csname mg@OT1\endcsname}
+\gdef\mg@latin{\mg@OML}
+\global\let\mg@Latin\mg@latin
+\global\let\mg@greek\mg@latin
+\global\let\mg@Greek\mg@digit
+\global\let\mg@rel\mg@bin
+\global\let\mg@ord\mg@bin
+\global\let\mg@cop\mg@del
+\DeclareFlexSymbol{!} {Pun}{OT1}{21}
+\DeclareFlexSymbol{+} {Bin}{OT1}{2B}
+\DeclareFlexSymbol{:} {Rel}{OT1}{3A}
+\DeclareFlexSymbol{\colon}{Pun}{OT1}{3A}
+\DeclareFlexSymbol{;} {Pun}{OT1}{3B}
+\DeclareFlexSymbol{=} {Rel}{OT1}{3D}
+\DeclareFlexSymbol{?} {Pun}{OT1}{3F}
+\DeclareFlexSymbol{\Gamma} {Var}{Greek}{00}
+\DeclareFlexSymbol{\Delta} {Var}{Greek}{01}
+\DeclareFlexSymbol{\Theta} {Var}{Greek}{02}
+\DeclareFlexSymbol{\Lambda} {Var}{Greek}{03}
+\DeclareFlexSymbol{\Xi} {Var}{Greek}{04}
+\DeclareFlexSymbol{\Pi} {Var}{Greek}{05}
+\DeclareFlexSymbol{\Sigma} {Var}{Greek}{06}
+\DeclareFlexSymbol{\Upsilon}{Var}{Greek}{07}
+\DeclareFlexSymbol{\Phi} {Var}{Greek}{08}
+\DeclareFlexSymbol{\Psi} {Var}{Greek}{09}
+\DeclareFlexSymbol{\Omega} {Var}{Greek}{0A}
+\DeclareFlexSymbol{0}{Var}{digit}{30}
+\DeclareFlexSymbol{1}{Var}{digit}{31}
+\DeclareFlexSymbol{2}{Var}{digit}{32}
+\DeclareFlexSymbol{3}{Var}{digit}{33}
+\DeclareFlexSymbol{4}{Var}{digit}{34}
+\DeclareFlexSymbol{5}{Var}{digit}{35}
+\DeclareFlexSymbol{6}{Var}{digit}{36}
+\DeclareFlexSymbol{7}{Var}{digit}{37}
+\DeclareFlexSymbol{8}{Var}{digit}{38}
+\DeclareFlexSymbol{9}{Var}{digit}{39}
+\DeclareFlexSymbol{,}{Pun}{OML}{3B}
+\DeclareFlexSymbol{.}{Ord}{OML}{3A}
+\DeclareFlexSymbol{/}{Ord}{OML}{3D}
+\DeclareFlexSymbol{<}{Rel}{OML}{3C}
+\DeclareFlexSymbol{>}{Rel}{OML}{3E}
+\DeclareFlexSymbol{\alpha}{Var}{greek}{0B}
+\DeclareFlexSymbol{\beta}{Var}{greek}{0C}
+\DeclareFlexSymbol{\gamma}{Var}{greek}{0D}
+\DeclareFlexSymbol{\delta}{Var}{greek}{0E}
+\DeclareFlexSymbol{\epsilon}{Var}{greek}{0F}
+\DeclareFlexSymbol{\zeta}{Var}{greek}{10}
+\DeclareFlexSymbol{\eta}{Var}{greek}{11}
+\DeclareFlexSymbol{\theta}{Var}{greek}{12}
+\DeclareFlexSymbol{\iota}{Var}{greek}{13}
+\DeclareFlexSymbol{\kappa}{Var}{greek}{14}
+\DeclareFlexSymbol{\lambda}{Var}{greek}{15}
+\DeclareFlexSymbol{\mu}{Var}{greek}{16}
+\DeclareFlexSymbol{\nu}{Var}{greek}{17}
+\DeclareFlexSymbol{\xi}{Var}{greek}{18}
+\DeclareFlexSymbol{\pi}{Var}{greek}{19}
+\DeclareFlexSymbol{\rho}{Var}{greek}{1A}
+\DeclareFlexSymbol{\sigma}{Var}{greek}{1B}
+\DeclareFlexSymbol{\tau}{Var}{greek}{1C}
+\DeclareFlexSymbol{\upsilon}{Var}{greek}{1D}
+\DeclareFlexSymbol{\phi}{Var}{greek}{1E}
+\DeclareFlexSymbol{\chi}{Var}{greek}{1F}
+\DeclareFlexSymbol{\psi}{Var}{greek}{20}
+\DeclareFlexSymbol{\omega}{Var}{greek}{21}
+\DeclareFlexSymbol{\varepsilon}{Var}{greek}{22}
+\DeclareFlexSymbol{\vartheta}{Var}{greek}{23}
+\DeclareFlexSymbol{\varpi}{Var}{greek}{24}
+\DeclareFlexSymbol{\varrho}{Var}{greek}{25}
+\DeclareFlexSymbol{\varsigma}{Var}{greek}{26}
+\DeclareFlexSymbol{\varphi}{Var}{greek}{27}
+\DeclareFlexSymbol{\imath}{Var}{OML}{7B}
+\DeclareFlexSymbol{\jmath}{Var}{OML}{7C}
+\DeclareFlexSymbol{\ell}{Ord}{OML}{60}
+\DeclareFlexSymbol{\wp}{Ord}{OML}{7D}
+\DeclareFlexSymbol{\partial}{Ord}{OML}{40}
+\DeclareFlexSymbol{\flat}{Ord}{OML}{5B}
+\DeclareFlexSymbol{\natural}{Ord}{OML}{5C}
+\DeclareFlexSymbol{\sharp}{Ord}{OML}{5D}
+\DeclareFlexSymbol{\triangleleft}{Bin}{OML}{2F}
+\DeclareFlexSymbol{\triangleright}{Bin}{OML}{2E}
+\DeclareFlexSymbol{\star}{Bin}{OML}{3F}
+\DeclareFlexSymbol{\smile}{Rel}{OML}{5E}
+\DeclareFlexSymbol{\frown}{Rel}{OML}{5F}
+\DeclareFlexSymbol{\leftharpoonup}{Rel}{OML}{28}
+\DeclareFlexSymbol{\leftharpoondown}{Rel}{OML}{29}
+\DeclareFlexSymbol{\rightharpoonup}{Rel}{OML}{2A}
+\DeclareFlexSymbol{\rightharpoondown}{Rel}{OML}{2B}
+\DeclareFlexSymbol{a}{Var}{latin}{61}
+\DeclareFlexSymbol{b}{Var}{latin}{62}
+\DeclareFlexSymbol{c}{Var}{latin}{63}
+\DeclareFlexSymbol{d}{Var}{latin}{64}
+\DeclareFlexSymbol{e}{Var}{latin}{65}
+\DeclareFlexSymbol{f}{Var}{latin}{66}
+\DeclareFlexSymbol{g}{Var}{latin}{67}
+\DeclareFlexSymbol{h}{Var}{latin}{68}
+\DeclareFlexSymbol{i}{Var}{latin}{69}
+\DeclareFlexSymbol{j}{Var}{latin}{6A}
+\DeclareFlexSymbol{k}{Var}{latin}{6B}
+\DeclareFlexSymbol{l}{Var}{latin}{6C}
+\DeclareFlexSymbol{m}{Var}{latin}{6D}
+\DeclareFlexSymbol{n}{Var}{latin}{6E}
+\DeclareFlexSymbol{o}{Var}{latin}{6F}
+\DeclareFlexSymbol{p}{Var}{latin}{70}
+\DeclareFlexSymbol{q}{Var}{latin}{71}
+\DeclareFlexSymbol{r}{Var}{latin}{72}
+\DeclareFlexSymbol{s}{Var}{latin}{73}
+\DeclareFlexSymbol{t}{Var}{latin}{74}
+\DeclareFlexSymbol{u}{Var}{latin}{75}
+\DeclareFlexSymbol{v}{Var}{latin}{76}
+\DeclareFlexSymbol{w}{Var}{latin}{77}
+\DeclareFlexSymbol{x}{Var}{latin}{78}
+\DeclareFlexSymbol{y}{Var}{latin}{79}
+\DeclareFlexSymbol{z}{Var}{latin}{7A}
+\DeclareFlexSymbol{A}{Var}{Latin}{41}
+\DeclareFlexSymbol{B}{Var}{Latin}{42}
+\DeclareFlexSymbol{C}{Var}{Latin}{43}
+\DeclareFlexSymbol{D}{Var}{Latin}{44}
+\DeclareFlexSymbol{E}{Var}{Latin}{45}
+\DeclareFlexSymbol{F}{Var}{Latin}{46}
+\DeclareFlexSymbol{G}{Var}{Latin}{47}
+\DeclareFlexSymbol{H}{Var}{Latin}{48}
+\DeclareFlexSymbol{I}{Var}{Latin}{49}
+\DeclareFlexSymbol{J}{Var}{Latin}{4A}
+\DeclareFlexSymbol{K}{Var}{Latin}{4B}
+\DeclareFlexSymbol{L}{Var}{Latin}{4C}
+\DeclareFlexSymbol{M}{Var}{Latin}{4D}
+\DeclareFlexSymbol{N}{Var}{Latin}{4E}
+\DeclareFlexSymbol{O}{Var}{Latin}{4F}
+\DeclareFlexSymbol{P}{Var}{Latin}{50}
+\DeclareFlexSymbol{Q}{Var}{Latin}{51}
+\DeclareFlexSymbol{R}{Var}{Latin}{52}
+\DeclareFlexSymbol{S}{Var}{Latin}{53}
+\DeclareFlexSymbol{T}{Var}{Latin}{54}
+\DeclareFlexSymbol{U}{Var}{Latin}{55}
+\DeclareFlexSymbol{V}{Var}{Latin}{56}
+\DeclareFlexSymbol{W}{Var}{Latin}{57}
+\DeclareFlexSymbol{X}{Var}{Latin}{58}
+\DeclareFlexSymbol{Y}{Var}{Latin}{59}
+\DeclareFlexSymbol{Z}{Var}{Latin}{5A}
+\DeclareFlexSymbol{\ldotPun}{Pun}{OML}{3A}
+\def\ldotp{\ldotPun}
+\DeclareFlexSymbol{\lhookRel}{Rel}{OML}{2C}
+\DeclareFlexSymbol{\rhookRel}{Rel}{OML}{2D}
+\DeclareFlexSymbol{*}{Bin}{bin}{03} % \ast
+\DeclareFlexSymbol{-}{Bin}{bin}{00}
+\DeclareFlexSymbol{|}{Ord}{OMS}{6A}
+\DeclareFlexSymbol{\aleph}{Ord}{ord}{40}
+\DeclareFlexSymbol{\Re}{Ord}{ord}{3C}
+\DeclareFlexSymbol{\Im}{Ord}{ord}{3D}
+\DeclareFlexSymbol{\infty}{Ord}{ord}{31}
+\DeclareFlexSymbol{\prime}{Ord}{ord}{30}
+\DeclareFlexSymbol{\emptyset}{Ord}{ord}{3B}
+\DeclareFlexSymbol{\nabla}{Ord}{ord}{72}
+\DeclareFlexSymbol{\top}{Ord}{ord}{3E}
+\DeclareFlexSymbol{\bot}{Ord}{ord}{3F}
+\DeclareFlexSymbol{\triangle}{Ord}{ord}{34}
+\DeclareFlexSymbol{\forall}{Ord}{ord}{38}
+\DeclareFlexSymbol{\exists}{Ord}{ord}{39}
+\DeclareFlexSymbol{\neg}{Ord}{ord}{3A}
+\DeclareFlexSymbol{\clubsuit}{Ord}{ord}{7C}
+\DeclareFlexSymbol{\diamondsuit}{Ord}{ord}{7D}
+\DeclareFlexSymbol{\heartsuit}{Ord}{ord}{7E}
+\DeclareFlexSymbol{\spadesuit}{Ord}{ord}{7F}
+\DeclareFlexSymbol{\smallint}{COs}{OMS}{73}
+\DeclareFlexSymbol{\bigtriangleup}{Bin}{bin}{34}
+\DeclareFlexSymbol{\bigtriangledown}{Bin}{bin}{35}
+\DeclareFlexSymbol{\wedge}{Bin}{bin}{5E}
+\DeclareFlexSymbol{\vee}{Bin}{bin}{5F}
+\DeclareFlexSymbol{\cap}{Bin}{bin}{5C}
+\DeclareFlexSymbol{\cup}{Bin}{bin}{5B}
+\DeclareFlexSymbol{\ddagger}{Bin}{bin}{7A}
+\DeclareFlexSymbol{\dagger}{Bin}{bin}{79}
+\DeclareFlexSymbol{\sqcap}{Bin}{bin}{75}
+\DeclareFlexSymbol{\sqcup}{Bin}{bin}{74}
+\DeclareFlexSymbol{\uplus}{Bin}{bin}{5D}
+\DeclareFlexSymbol{\amalg}{Bin}{bin}{71}
+\DeclareFlexSymbol{\diamond}{Bin}{bin}{05}
+\DeclareFlexSymbol{\bullet}{Bin}{bin}{0F}
+\DeclareFlexSymbol{\wr}{Bin}{bin}{6F}
+\DeclareFlexSymbol{\div}{Bin}{bin}{04}
+\DeclareFlexSymbol{\odot}{Bin}{bin}{0C}
+\DeclareFlexSymbol{\oslash}{Bin}{bin}{0B}
+\DeclareFlexSymbol{\otimes}{Bin}{bin}{0A}
+\DeclareFlexSymbol{\ominus}{Bin}{bin}{09}
+\DeclareFlexSymbol{\oplus}{Bin}{bin}{08}
+\DeclareFlexSymbol{\mp}{Bin}{bin}{07}
+\DeclareFlexSymbol{\pm}{Bin}{bin}{06}
+\DeclareFlexSymbol{\circ}{Bin}{bin}{0E}
+\DeclareFlexSymbol{\bigcirc}{Bin}{bin}{0D}
+\DeclareFlexSymbol{\setminus}{Bin}{bin}{6E}
+\DeclareFlexSymbol{\cdot}{Bin}{bin}{01}
+\DeclareFlexSymbol{\ast}{Bin}{bin}{03}
+\DeclareFlexSymbol{\times}{Bin}{bin}{02}
+\DeclareFlexSymbol{\propto}{Rel}{rel}{2F}
+\DeclareFlexSymbol{\sqsubseteq}{Rel}{rel}{76}
+\DeclareFlexSymbol{\sqsupseteq}{Rel}{rel}{77}
+\DeclareFlexSymbol{\parallel}{Rel}{rel}{6B}
+\DeclareFlexSymbol{\mid}{Rel}{rel}{6A}
+\DeclareFlexSymbol{\dashv}{Rel}{rel}{61}
+\DeclareFlexSymbol{\vdash}{Rel}{rel}{60}
+\DeclareFlexSymbol{\nearrow}{Rel}{rel}{25}
+\DeclareFlexSymbol{\searrow}{Rel}{rel}{26}
+\DeclareFlexSymbol{\nwarrow}{Rel}{rel}{2D}
+\DeclareFlexSymbol{\swarrow}{Rel}{rel}{2E}
+\DeclareFlexSymbol{\Leftrightarrow}{Rel}{rel}{2C}
+\DeclareFlexSymbol{\Leftarrow}{Rel}{rel}{28}
+\DeclareFlexSymbol{\Rightarrow}{Rel}{rel}{29}
+\DeclareFlexSymbol{\leq}{Rel}{rel}{14}
+\DeclareFlexSymbol{\geq}{Rel}{rel}{15}
+\DeclareFlexSymbol{\succ}{Rel}{rel}{1F}
+\DeclareFlexSymbol{\prec}{Rel}{rel}{1E}
+\DeclareFlexSymbol{\approx}{Rel}{rel}{19}
+\DeclareFlexSymbol{\succeq}{Rel}{rel}{17}
+\DeclareFlexSymbol{\preceq}{Rel}{rel}{16}
+\DeclareFlexSymbol{\supset}{Rel}{rel}{1B}
+\DeclareFlexSymbol{\subset}{Rel}{rel}{1A}
+\DeclareFlexSymbol{\supseteq}{Rel}{rel}{13}
+\DeclareFlexSymbol{\subseteq}{Rel}{rel}{12}
+\DeclareFlexSymbol{\in}{Rel}{rel}{32}
+\DeclareFlexSymbol{\ni}{Rel}{rel}{33}
+\DeclareFlexSymbol{\gg}{Rel}{rel}{1D}
+\DeclareFlexSymbol{\ll}{Rel}{rel}{1C}
+\DeclareFlexSymbol{\leftrightarrow}{Rel}{rel}{24}
+\DeclareFlexSymbol{\leftarrow}{Rel}{rel}{20}
+\DeclareFlexSymbol{\rightarrow}{Rel}{rel}{21}
+\DeclareFlexSymbol{\sim}{Rel}{rel}{18}
+\DeclareFlexSymbol{\simeq}{Rel}{rel}{27}
+\DeclareFlexSymbol{\perp}{Rel}{rel}{3F}
+\DeclareFlexSymbol{\equiv}{Rel}{rel}{11}
+\DeclareFlexSymbol{\asymp}{Rel}{rel}{10}
+\DeclareFlexSymbol{\notRel}{Rel}{rel}{36}
+\DeclareFlexSymbol{\mapstoOrd}{Ord}{OMS}{37}
+\DeclareFlexSymbol{\cdotOrd}{Ord}{OMS}{01}
+\def\cdotp{\mathpunct{\cdotOrd}}
+\DeclareFlexSymbol{\coprod}{COs}{cop}{60}
+\DeclareFlexSymbol{\bigvee}{COs}{cop}{57}
+\DeclareFlexSymbol{\bigwedge}{COs}{cop}{56}
+\DeclareFlexSymbol{\biguplus}{COs}{cop}{55}
+\DeclareFlexSymbol{\bigcap}{COs}{cop}{54}
+\DeclareFlexSymbol{\bigcup}{COs}{cop}{53}
+\DeclareFlexSymbol{\int}{COi}{cop}{52}
+\DeclareFlexSymbol{\prod}{COs}{cop}{51}
+\DeclareFlexSymbol{\sum}{COs}{cop}{50}
+\DeclareFlexSymbol{\bigotimes}{COs}{cop}{4E}
+\DeclareFlexSymbol{\bigoplus}{COs}{cop}{4C}
+\DeclareFlexSymbol{\bigodot}{COs}{cop}{4A}
+\DeclareFlexSymbol{\oint}{COi}{cop}{48}
+\DeclareFlexSymbol{\bigsqcup}{COs}{cop}{46}
+\DeclareFlexSymbol{\rangle}{DeR}{del}{0B}
+\DeclareFlexSymbol{\langle}{DeL}{del}{0A}
+\DeclareFlexSymbol{\rbrace}{DeR}{del}{09}
+\DeclareFlexSymbol{\lbrace}{DeL}{del}{08}
+\DeclareFlexSymbol{\rceil}{DeR}{del}{07}
+\DeclareFlexSymbol{\lceil}{DeL}{del}{06}
+\DeclareFlexSymbol{\rfloor}{DeR}{del}{05}
+\DeclareFlexSymbol{\lfloor}{DeL}{del}{04}
+\DeclareFlexSymbol{(}{DeL}{del}{00}
+\DeclareFlexSymbol{)}{DeR}{del}{01}
+\DeclareFlexSymbol{[}{DeL}{del}{02}
+\DeclareFlexSymbol{]}{DeR}{del}{03}
+\DeclareFlexSymbol{\lVert}{DeL}{del}{0D}
+\DeclareFlexSymbol{\rVert}{DeR}{del}{0D}
+\DeclareFlexSymbol{\lvert}{DeL}{del}{0C}
+\DeclareFlexSymbol{\rvert}{DeR}{del}{0C}
+\DeclareFlexSymbol{\Vert}{DeB}{del}{0D}
+\DeclareFlexSymbol{\vert}{DeB}{del}{0C}
+\DeclareFlexSymbol{|}{DeB}{del}{0C}
+\DeclareFlexSymbol{/}{DeB}{del}{0E}
+\DeclareFlexSymbol{\lmoustache}{DeL}{del}{40}
+\DeclareFlexSymbol{\rmoustache}{DeR}{del}{41}
+\DeclareFlexSymbol{\lgroup}{DeL}{del}{3A}
+\DeclareFlexSymbol{\rgroup}{DeR}{del}{3B}
+\DeclareFlexSymbol{\bracevert}{DeB}{del}{3E}
+\DeclareFlexSymbol{\arrowvert}{DeB}{del}{3C}
+\DeclareFlexSymbol{\Arrowvert}{DeB}{del}{3D}
+\DeclareFlexSymbol{\uparrow}{DeA}{del}{78}
+\DeclareFlexSymbol{\downarrow}{DeA}{del}{79}
+\DeclareFlexSymbol{\updownarrow}{DeA}{del}{3F}
+\DeclareFlexSymbol{\Uparrow}{DeA}{del}{7E}
+\DeclareFlexSymbol{\Downarrow}{DeA}{del}{7F}
+\DeclareFlexSymbol{\Updownarrow}{DeA}{del}{77}
+\DeclareFlexSymbol{\backslash}{DeB}{del}{0F}
+\DeclareFlexSymbol{\hbarOrd}{Ord}{OT1}{16}
+\DeclareFlexCompoundSymbol{\hbar}{Ord}{\hbarOrd\mkern-9mu h}
+\DeclareFlexSymbol{\surdOrd}{Ord}{OMS}{70}
+\DeclareFlexCompoundSymbol{\surd}{Ord}{\mathop{\surdOrd}}
+\DeclareFlexCompoundSymbol{\angle}{Ord}{%
+ \vbox{\ialign{%
+ $\m@th\scriptstyle##$\crcr
+ \notRel\mathrel{\mkern14mu}\crcr
+ \noalign{\nointerlineskip}%
+ \mkern2.5mu\leaders\hrule \@height.34pt\hfill\mkern2.5mu\crcr
+ }}%
+}
+\DeclareFlexCompoundSymbol{\neq}{Rel}{\not{=}}
+\DeclareFlexCompoundSymbol{\mapsto}{Rel}{\mapstoOrd\rightarrow}
+\DeclareFlexCompoundSymbol{\cong}{Rel}{\mathpalette\@vereq\sim}
+\newcommand*\joinord{\mkern-3mu }
+\DeclareFlexCompoundSymbol{\notin}{Rel}{\mathpalette\c@ncel\in}
+\DeclareFlexCompoundSymbol{\rightleftharpoons}{Rel}{\mathpalette\rlh@{}}
+\DeclareFlexCompoundSymbol{\doteq}{Rel}{\buildrel\textstyle.\over=}
+\DeclareFlexCompoundSymbol{\hookrightarrow}{Rel}{\lhookRel\joinord\rightarrow}
+\DeclareFlexCompoundSymbol{\hookleftarrow}{Rel}{\leftarrow\joinord\rhookRel}
+\DeclareFlexCompoundSymbol{\bowtie}{Rel}{\triangleright\joinord\triangleleft}
+\DeclareFlexCompoundSymbol{\models}{Rel}{\vert\joinord=}
+\DeclareFlexCompoundSymbol{\Longrightarrow}{Rel}{\Relbar\joinord\Rightarrow}
+\DeclareFlexCompoundSymbol{\longrightarrow}{Rel}{\relbar\joinord\rightarrow}
+\DeclareFlexCompoundSymbol{\Longleftarrow}{Rel}{\Leftarrow\joinord\Relbar}
+\DeclareFlexCompoundSymbol{\longleftarrow}{Rel}{\leftarrow\joinord\relbar}
+\DeclareFlexCompoundSymbol{\longmapsto}{Rel}{\mapstochar\longrightarrow}
+\DeclareFlexCompoundSymbol{\longleftrightarrow}{Rel}{\leftarrow\joinord\rightarrow}
+\DeclareFlexCompoundSymbol{\Longleftrightarrow}{Rel}{\Leftarrow\joinord\Rightarrow}
+\renewcommand*\iff{%
+ \mskip\thickmuskip\Longleftrightarrow\mskip\thickmuskip
+}
+\DeclareFlexCompoundSymbol{\cdots}{Inn}{\cdotp\cdotp\cdotp}%
+\DeclareFlexCompoundSymbol{\vdots}{Ord}{%
+ \vbox{\baselineskip4\p@ \lineskiplimit\z@
+ \kern6\p@\hbox{.}\hbox{.}\hbox{.}}}
+\DeclareFlexCompoundSymbol{\ddots}{Inn}{%
+ \mkern1mu\raise7\p@
+ \vbox{\kern7\p@\hbox{.}}\mkern2mu%
+ \raise4\p@\hbox{.}\mkern2mu\raise\p@\hbox{.}\mkern1mu%
+}
+\def\relbar{\begingroup \def\smash@{tb}% in case amsmath is loaded
+ \mathpalette\mathsm@sh{\mathchar"200 }\endgroup}
+\def\Relbar{\mathchar"3D }
+\endinput
+%%
+%% End of file `mathptmx.sym'.
diff --git a/Master/texmf-dist/doc/latex/mh/mathstyle.pdf b/Master/texmf-dist/doc/latex/mh/mathstyle.pdf
new file mode 100644
index 00000000000..ae2163e3ea1
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/mh/mathstyle.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/mh/mathtools.pdf b/Master/texmf-dist/doc/latex/mh/mathtools.pdf
index 16978fd9df5..afd0be65d43 100644
--- a/Master/texmf-dist/doc/latex/mh/mathtools.pdf
+++ b/Master/texmf-dist/doc/latex/mh/mathtools.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/mh/mhsetup.pdf b/Master/texmf-dist/doc/latex/mh/mhsetup.pdf
index e72e4c090c2..484483621b6 100644
--- a/Master/texmf-dist/doc/latex/mh/mhsetup.pdf
+++ b/Master/texmf-dist/doc/latex/mh/mhsetup.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/mh/msabm.sym b/Master/texmf-dist/doc/latex/mh/msabm.sym
new file mode 100644
index 00000000000..fde30ef6dc8
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/mh/msabm.sym
@@ -0,0 +1,253 @@
+%%
+%% This is file `msabm.sym',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% flexisym.dtx (with options: `msabm')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 1997-2003 by Michael J. Downes
+%% Copyright (C) 2007 by Morten Hoegholm <mh.ctan@gmail.com>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Morten Hoegholm.
+%%
+%% This work consists of the main source file flexisym.dtx
+%% and the derived files
+%% flexisym.sty, flexisym.pdf, flexisym.ins, flexisym.drv,
+%% cmbase.sym, mathpazo.sym, mathptmx.sym, msabm.sym.
+%%
+\ProvidesSymbols{msabm}[2001/09/08 v0.91]
+\RequirePackage{amsfonts}\relax
+\@xp\xdef\csname mg@MSA\endcsname{\hexnumber@\symAMSa}%
+\@xp\xdef\csname mg@MSB\endcsname{\hexnumber@\symAMSb}%
+\DeclareFlexSymbol{\boxdot} {Bin}{MSA}{00}
+\DeclareFlexSymbol{\boxplus} {Bin}{MSA}{01}
+\DeclareFlexSymbol{\boxtimes} {Bin}{MSA}{02}
+\DeclareFlexSymbol{\square} {Ord}{MSA}{03}
+\DeclareFlexSymbol{\blacksquare} {Ord}{MSA}{04}
+\DeclareFlexSymbol{\centerdot} {Bin}{MSA}{05}
+\DeclareFlexSymbol{\lozenge} {Ord}{MSA}{06}
+\DeclareFlexSymbol{\blacklozenge} {Ord}{MSA}{07}
+\DeclareFlexSymbol{\circlearrowright} {Rel}{MSA}{08}
+\DeclareFlexSymbol{\circlearrowleft} {Rel}{MSA}{09}
+%%\DeclareFlexSymbol{\rightleftharpoons}{Rel}{MSA}{0A}
+\DeclareFlexSymbol{\leftrightharpoons} {Rel}{MSA}{0B}
+\DeclareFlexSymbol{\boxminus} {Bin}{MSA}{0C}
+\DeclareFlexSymbol{\Vdash} {Rel}{MSA}{0D}
+\DeclareFlexSymbol{\Vvdash} {Rel}{MSA}{0E}
+\DeclareFlexSymbol{\vDash} {Rel}{MSA}{0F}
+\DeclareFlexSymbol{\twoheadrightarrow} {Rel}{MSA}{10}
+\DeclareFlexSymbol{\twoheadleftarrow} {Rel}{MSA}{11}
+\DeclareFlexSymbol{\leftleftarrows} {Rel}{MSA}{12}
+\DeclareFlexSymbol{\rightrightarrows} {Rel}{MSA}{13}
+\DeclareFlexSymbol{\upuparrows} {Rel}{MSA}{14}
+\DeclareFlexSymbol{\downdownarrows} {Rel}{MSA}{15}
+\DeclareFlexSymbol{\upharpoonright} {Rel}{MSA}{16}
+ \let\restriction\upharpoonright
+\DeclareFlexSymbol{\downharpoonright} {Rel}{MSA}{17}
+\DeclareFlexSymbol{\upharpoonleft} {Rel}{MSA}{18}
+\DeclareFlexSymbol{\downharpoonleft}{Rel}{MSA}{19}
+\DeclareFlexSymbol{\rightarrowtail} {Rel}{MSA}{1A}
+\DeclareFlexSymbol{\leftarrowtail} {Rel}{MSA}{1B}
+\DeclareFlexSymbol{\leftrightarrows}{Rel}{MSA}{1C}
+\DeclareFlexSymbol{\rightleftarrows}{Rel}{MSA}{1D}
+\DeclareFlexSymbol{\Lsh} {Rel}{MSA}{1E}
+\DeclareFlexSymbol{\Rsh} {Rel}{MSA}{1F}
+\DeclareFlexSymbol{\rightsquigarrow} {Rel}{MSA}{20}
+\DeclareFlexSymbol{\leftrightsquigarrow}{Rel}{MSA}{21}
+\DeclareFlexSymbol{\looparrowleft} {Rel}{MSA}{22}
+\DeclareFlexSymbol{\looparrowright} {Rel}{MSA}{23}
+\DeclareFlexSymbol{\circeq} {Rel}{MSA}{24}
+\DeclareFlexSymbol{\succsim} {Rel}{MSA}{25}
+\DeclareFlexSymbol{\gtrsim} {Rel}{MSA}{26}
+\DeclareFlexSymbol{\gtrapprox} {Rel}{MSA}{27}
+\DeclareFlexSymbol{\multimap} {Rel}{MSA}{28}
+\DeclareFlexSymbol{\therefore} {Rel}{MSA}{29}
+\DeclareFlexSymbol{\because} {Rel}{MSA}{2A}
+\DeclareFlexSymbol{\doteqdot} {Rel}{MSA}{2B}
+ \let\Doteq\doteqdot
+\DeclareFlexSymbol{\triangleq} {Rel}{MSA}{2C}
+\DeclareFlexSymbol{\precsim} {Rel}{MSA}{2D}
+\DeclareFlexSymbol{\lesssim} {Rel}{MSA}{2E}
+\DeclareFlexSymbol{\lessapprox} {Rel}{MSA}{2F}
+\DeclareFlexSymbol{\eqslantless} {Rel}{MSA}{30}
+\DeclareFlexSymbol{\eqslantgtr} {Rel}{MSA}{31}
+\DeclareFlexSymbol{\curlyeqprec} {Rel}{MSA}{32}
+\DeclareFlexSymbol{\curlyeqsucc} {Rel}{MSA}{33}
+\DeclareFlexSymbol{\preccurlyeq} {Rel}{MSA}{34}
+\DeclareFlexSymbol{\leqq} {Rel}{MSA}{35}
+\DeclareFlexSymbol{\leqslant} {Rel}{MSA}{36}
+\DeclareFlexSymbol{\lessgtr} {Rel}{MSA}{37}
+\DeclareFlexSymbol{\backprime} {Ord}{MSA}{38}
+\DeclareFlexSymbol{\risingdotseq} {Rel}{MSA}{3A}
+\DeclareFlexSymbol{\fallingdotseq}{Rel}{MSA}{3B}
+\DeclareFlexSymbol{\succcurlyeq} {Rel}{MSA}{3C}
+\DeclareFlexSymbol{\geqq} {Rel}{MSA}{3D}
+\DeclareFlexSymbol{\geqslant} {Rel}{MSA}{3E}
+\DeclareFlexSymbol{\gtrless} {Rel}{MSA}{3F}
+%% \DeclareFlexSymbol{\sqsubset} {Rel}{MSA}{40}
+%% \DeclareFlexSymbol{\sqsupset} {Rel}{MSA}{41}
+\DeclareFlexSymbol{\vartriangleright}{Rel}{MSA}{42}
+\DeclareFlexSymbol{\vartriangleleft} {Rel}{MSA}{43}
+\DeclareFlexSymbol{\trianglerighteq} {Rel}{MSA}{44}
+\DeclareFlexSymbol{\trianglelefteq} {Rel}{MSA}{45}
+\DeclareFlexSymbol{\bigstar} {Ord}{MSA}{46}
+\DeclareFlexSymbol{\between} {Rel}{MSA}{47}
+\DeclareFlexSymbol{\blacktriangledown} {Ord}{MSA}{48}
+\DeclareFlexSymbol{\blacktriangleright} {Rel}{MSA}{49}
+\DeclareFlexSymbol{\blacktriangleleft} {Rel}{MSA}{4A}
+\DeclareFlexSymbol{\vartriangle} {Rel}{MSA}{4D}
+\DeclareFlexSymbol{\blacktriangle} {Ord}{MSA}{4E}
+\DeclareFlexSymbol{\triangledown} {Ord}{MSA}{4F}
+\DeclareFlexSymbol{\eqcirc} {Rel}{MSA}{50}
+\DeclareFlexSymbol{\lesseqgtr} {Rel}{MSA}{51}
+\DeclareFlexSymbol{\gtreqless} {Rel}{MSA}{52}
+\DeclareFlexSymbol{\lesseqqgtr} {Rel}{MSA}{53}
+\DeclareFlexSymbol{\gtreqqless} {Rel}{MSA}{54}
+\DeclareFlexSymbol{\Rrightarrow} {Rel}{MSA}{56}
+\DeclareFlexSymbol{\Lleftarrow} {Rel}{MSA}{57}
+\DeclareFlexSymbol{\veebar} {Bin}{MSA}{59}
+\DeclareFlexSymbol{\barwedge} {Bin}{MSA}{5A}
+\DeclareFlexSymbol{\doublebarwedge} {Bin}{MSA}{5B}
+%%\DeclareFlexSymbol{\angle} {Ord}{MSA}{5C}
+\DeclareFlexSymbol{\measuredangle} {Ord}{MSA}{5D}
+\DeclareFlexSymbol{\sphericalangle} {Ord}{MSA}{5E}
+\DeclareFlexSymbol{\varpropto} {Rel}{MSA}{5F}
+\DeclareFlexSymbol{\smallsmile} {Rel}{MSA}{60}
+\DeclareFlexSymbol{\smallfrown} {Rel}{MSA}{61}
+\DeclareFlexSymbol{\Subset} {Rel}{MSA}{62}
+\DeclareFlexSymbol{\Supset} {Rel}{MSA}{63}
+\DeclareFlexSymbol{\Cup} {Bin}{MSA}{64}
+ \let\doublecup\Cup
+\DeclareFlexSymbol{\Cap} {Bin}{MSA}{65}
+ \let\doublecap\Cap
+\DeclareFlexSymbol{\curlywedge} {Bin}{MSA}{66}
+\DeclareFlexSymbol{\curlyvee} {Bin}{MSA}{67}
+\DeclareFlexSymbol{\leftthreetimes} {Bin}{MSA}{68}
+\DeclareFlexSymbol{\rightthreetimes}{Bin}{MSA}{69}
+\DeclareFlexSymbol{\subseteqq} {Rel}{MSA}{6A}
+\DeclareFlexSymbol{\supseteqq} {Rel}{MSA}{6B}
+\DeclareFlexSymbol{\bumpeq} {Rel}{MSA}{6C}
+\DeclareFlexSymbol{\Bumpeq} {Rel}{MSA}{6D}
+\DeclareFlexSymbol{\lll} {Rel}{MSA}{6E}
+ \let\llless\lll
+\DeclareFlexSymbol{\ggg} {Rel}{MSA}{6F}
+ \let\gggtr\ggg
+\DeclareFlexSymbol{\circledS} {Ord}{MSA}{73}
+\DeclareFlexSymbol{\pitchfork} {Rel}{MSA}{74}
+\DeclareFlexSymbol{\dotplus} {Bin}{MSA}{75}
+\DeclareFlexSymbol{\backsim} {Rel}{MSA}{76}
+\DeclareFlexSymbol{\backsimeq} {Rel}{MSA}{77}
+\DeclareFlexSymbol{\complement} {Ord}{MSA}{7B}
+\DeclareFlexSymbol{\intercal} {Bin}{MSA}{7C}
+\DeclareFlexSymbol{\circledcirc} {Bin}{MSA}{7D}
+\DeclareFlexSymbol{\circledast} {Bin}{MSA}{7E}
+\DeclareFlexSymbol{\circleddash} {Bin}{MSA}{7F}
+\DeclareFlexSymbol{\lvertneqq} {Rel}{MSB}{00}
+\DeclareFlexSymbol{\gvertneqq} {Rel}{MSB}{01}
+\DeclareFlexSymbol{\nleq} {Rel}{MSB}{02}
+\DeclareFlexSymbol{\ngeq} {Rel}{MSB}{03}
+\DeclareFlexSymbol{\nless} {Rel}{MSB}{04}
+\DeclareFlexSymbol{\ngtr} {Rel}{MSB}{05}
+\DeclareFlexSymbol{\nprec} {Rel}{MSB}{06}
+\DeclareFlexSymbol{\nsucc} {Rel}{MSB}{07}
+\DeclareFlexSymbol{\lneqq} {Rel}{MSB}{08}
+\DeclareFlexSymbol{\gneqq} {Rel}{MSB}{09}
+\DeclareFlexSymbol{\nleqslant} {Rel}{MSB}{0A}
+\DeclareFlexSymbol{\ngeqslant} {Rel}{MSB}{0B}
+\DeclareFlexSymbol{\lneq} {Rel}{MSB}{0C}
+\DeclareFlexSymbol{\gneq} {Rel}{MSB}{0D}
+\DeclareFlexSymbol{\npreceq} {Rel}{MSB}{0E}
+\DeclareFlexSymbol{\nsucceq} {Rel}{MSB}{0F}
+\DeclareFlexSymbol{\precnsim} {Rel}{MSB}{10}
+\DeclareFlexSymbol{\succnsim} {Rel}{MSB}{11}
+\DeclareFlexSymbol{\lnsim} {Rel}{MSB}{12}
+\DeclareFlexSymbol{\gnsim} {Rel}{MSB}{13}
+\DeclareFlexSymbol{\nleqq} {Rel}{MSB}{14}
+\DeclareFlexSymbol{\ngeqq} {Rel}{MSB}{15}
+\DeclareFlexSymbol{\precneqq} {Rel}{MSB}{16}
+\DeclareFlexSymbol{\succneqq} {Rel}{MSB}{17}
+\DeclareFlexSymbol{\precnapprox} {Rel}{MSB}{18}
+\DeclareFlexSymbol{\succnapprox} {Rel}{MSB}{19}
+\DeclareFlexSymbol{\lnapprox} {Rel}{MSB}{1A}
+\DeclareFlexSymbol{\gnapprox} {Rel}{MSB}{1B}
+\DeclareFlexSymbol{\nsim} {Rel}{MSB}{1C}
+\DeclareFlexSymbol{\ncong} {Rel}{MSB}{1D}
+\DeclareFlexSymbol{\diagup} {Ord}{MSB}{1E}
+\DeclareFlexSymbol{\diagdown} {Ord}{MSB}{1F}
+\DeclareFlexSymbol{\varsubsetneq} {Rel}{MSB}{20}
+\DeclareFlexSymbol{\varsupsetneq} {Rel}{MSB}{21}
+\DeclareFlexSymbol{\nsubseteqq} {Rel}{MSB}{22}
+\DeclareFlexSymbol{\nsupseteqq} {Rel}{MSB}{23}
+\DeclareFlexSymbol{\subsetneqq} {Rel}{MSB}{24}
+\DeclareFlexSymbol{\supsetneqq} {Rel}{MSB}{25}
+\DeclareFlexSymbol{\varsubsetneqq} {Rel}{MSB}{26}
+\DeclareFlexSymbol{\varsupsetneqq} {Rel}{MSB}{27}
+\DeclareFlexSymbol{\subsetneq} {Rel}{MSB}{28}
+\DeclareFlexSymbol{\supsetneq} {Rel}{MSB}{29}
+\DeclareFlexSymbol{\nsubseteq} {Rel}{MSB}{2A}
+\DeclareFlexSymbol{\nsupseteq} {Rel}{MSB}{2B}
+\DeclareFlexSymbol{\nparallel} {Rel}{MSB}{2C}
+\DeclareFlexSymbol{\nmid} {Rel}{MSB}{2D}
+\DeclareFlexSymbol{\nshortmid} {Rel}{MSB}{2E}
+\DeclareFlexSymbol{\nshortparallel} {Rel}{MSB}{2F}
+\DeclareFlexSymbol{\nvdash} {Rel}{MSB}{30}
+\DeclareFlexSymbol{\nVdash} {Rel}{MSB}{31}
+\DeclareFlexSymbol{\nvDash} {Rel}{MSB}{32}
+\DeclareFlexSymbol{\nVDash} {Rel}{MSB}{33}
+\DeclareFlexSymbol{\ntrianglerighteq}{Rel}{MSB}{34}
+\DeclareFlexSymbol{\ntrianglelefteq}{Rel}{MSB}{35}
+\DeclareFlexSymbol{\ntriangleleft} {Rel}{MSB}{36}
+\DeclareFlexSymbol{\ntriangleright} {Rel}{MSB}{37}
+\DeclareFlexSymbol{\nleftarrow} {Rel}{MSB}{38}
+\DeclareFlexSymbol{\nrightarrow} {Rel}{MSB}{39}
+\DeclareFlexSymbol{\nLeftarrow} {Rel}{MSB}{3A}
+\DeclareFlexSymbol{\nRightarrow} {Rel}{MSB}{3B}
+\DeclareFlexSymbol{\nLeftrightarrow}{Rel}{MSB}{3C}
+\DeclareFlexSymbol{\nleftrightarrow}{Rel}{MSB}{3D}
+\DeclareFlexSymbol{\divideontimes} {Bin}{MSB}{3E}
+\DeclareFlexSymbol{\varnothing} {Ord}{MSB}{3F}
+\DeclareFlexSymbol{\nexists} {Ord}{MSB}{40}
+\DeclareFlexSymbol{\Finv} {Ord}{MSB}{60}
+\DeclareFlexSymbol{\Game} {Ord}{MSB}{61}
+%%\DeclareFlexSymbol{\mho} {Ord}{MSB}{66}
+\DeclareFlexSymbol{\eth} {Ord}{MSB}{67}
+\DeclareFlexSymbol{\eqsim} {Rel}{MSB}{68}
+\DeclareFlexSymbol{\beth} {Ord}{MSB}{69}
+\DeclareFlexSymbol{\gimel} {Ord}{MSB}{6A}
+\DeclareFlexSymbol{\daleth} {Ord}{MSB}{6B}
+\DeclareFlexSymbol{\lessdot} {Bin}{MSB}{6C}
+\DeclareFlexSymbol{\gtrdot} {Bin}{MSB}{6D}
+\DeclareFlexSymbol{\ltimes} {Bin}{MSB}{6E}
+\DeclareFlexSymbol{\rtimes} {Bin}{MSB}{6F}
+\DeclareFlexSymbol{\shortmid} {Rel}{MSB}{70}
+\DeclareFlexSymbol{\shortparallel} {Rel}{MSB}{71}
+\DeclareFlexSymbol{\smallsetminus} {Bin}{MSB}{72}
+\DeclareFlexSymbol{\thicksim} {Rel}{MSB}{73}
+\DeclareFlexSymbol{\thickapprox} {Rel}{MSB}{74}
+\DeclareFlexSymbol{\approxeq} {Rel}{MSB}{75}
+\DeclareFlexSymbol{\succapprox} {Rel}{MSB}{76}
+\DeclareFlexSymbol{\precapprox} {Rel}{MSB}{77}
+\DeclareFlexSymbol{\curvearrowleft} {Rel}{MSB}{78}
+\DeclareFlexSymbol{\curvearrowright}{Rel}{MSB}{79}
+\DeclareFlexSymbol{\digamma} {Ord}{MSB}{7A}
+\DeclareFlexSymbol{\varkappa} {Ord}{MSB}{7B}
+\DeclareFlexSymbol{\Bbbk} {Ord}{MSB}{7C}
+\DeclareFlexSymbol{\hslash} {Ord}{MSB}{7D}
+%%\DeclareFlexSymbol{\hbar} {Ord}{MSB}{7E}
+\DeclareFlexSymbol{\backepsilon} {Rel}{MSB}{7F}
+\endinput
+%%
+%% End of file `msabm.sym'.
diff --git a/Master/texmf-dist/source/latex/mh/breqn.dtx b/Master/texmf-dist/source/latex/mh/breqn.dtx
new file mode 100644
index 00000000000..81d0fc39d7a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/mh/breqn.dtx
@@ -0,0 +1,6648 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 1997-2003 by Michael J. Downes
+% Copyright (C) 2007 by Morten Hoegholm <mh.ctan@gmail.com>
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3 of this license or (at your option) any later
+% version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of
+% LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Morten Hoegholm.
+%
+% This work consists of the main source file breqn.dtx
+% and the derived files
+% breqn.sty, breqn.pdf, breqn.ins, breqn.drv.
+%
+% Distribution:
+% CTAN:macros/latex/contrib/mh/breqn.dtx
+% CTAN:macros/latex/contrib/mh/breqn.pdf
+%
+% Unpacking:
+% (a) If breqn.ins is present:
+% tex breqn.ins
+% (b) Without breqn.ins:
+% tex breqn.dtx
+% (c) If you insist on using LaTeX
+% latex \let\install=y\input{breqn.dtx}
+% (quote the arguments according to the demands of your shell)
+%
+% Documentation:
+% (a) If breqn.drv is present:
+% latex breqn.drv
+% (b) Without breqn.drv:
+% latex breqn.dtx; ...
+% The class ltxdoc loads the configuration file ltxdoc.cfg
+% if available. Here you can specify further options, e.g.
+% use A4 as paper format:
+% \PassOptionsToClass{a4paper}{article}
+%
+% Programm calls to get the documentation (example):
+% pdflatex breqn.dtx
+% makeindex -s gind.ist breqn.idx
+% pdflatex breqn.dtx
+% makeindex -s gind.ist breqn.idx
+% pdflatex breqn.dtx
+%
+% Installation:
+% TDS:tex/latex/mh/breqn.sty
+% TDS:doc/latex/mh/breqn.pdf
+% TDS:source/latex/mh/breqn.dtx
+%
+%<*ignore>
+\begingroup
+ \def\x{LaTeX2e}
+\expandafter\endgroup
+\ifcase 0\ifx\install y1\fi\expandafter
+ \ifx\csname processbatchFile\endcsname\relax\else1\fi
+ \ifx\fmtname\x\else 1\fi\relax
+\else\csname fi\endcsname
+%</ignore>
+%<*install>
+\input docstrip.tex
+\Msg{************************************************************************}
+\Msg{* Installation}
+\Msg{* Package: breqn 2007/12/10 v0.96 Breqn (MH)}
+\Msg{************************************************************************}
+
+\keepsilent
+\askforoverwritefalse
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 1997-2003 by Michael J. Downes
+Copyright (C) 2007 by Morten Hoegholm <mh.ctan@gmail.com>
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3 of this license or (at your option) any later
+version. The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of
+LaTeX version 2005/12/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+This Current Maintainer of this work is Morten Hoegholm.
+
+This work consists of the main source file breqn.dtx
+and the derived files
+ breqn.sty, breqn.pdf, breqn.ins, breqn.drv.
+
+\endpreamble
+
+\generate{%
+ \file{breqn.ins}{\from{breqn.dtx}{install}}%
+ \file{breqn.drv}{\from{breqn.dtx}{driver}}%
+ \usedir{tex/latex/mh}%
+ \file{breqn.sty}{\from{breqn.dtx}{package}}%
+}
+
+\obeyspaces
+\Msg{************************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* file into a directory searched by TeX:}
+\Msg{*}
+\Msg{* breqn.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file `breqn.drv'}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{************************************************************************}
+
+\endbatchfile
+%</install>
+%<*ignore>
+\fi
+%</ignore>
+%<*driver>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{breqn.drv}%
+ [2007/12/10 v0.96 breqn (MH)]
+\documentclass{ltxdoc}
+
+\usepackage{color,verbatim,xspace,varioref,listings}
+
+\definecolor{hilite}{rgb}{0.2,0.4,0.7}
+\def\theCodelineNo{\textcolor{hilite}{\sffamily\tiny\arabic{CodelineNo}}}
+
+\lstloadlanguages{[AlLaTeX]TeX}
+
+\lstnewenvironment{literalcode}
+ {\lstset{gobble=2,columns=fullflexible,basicstyle=\color{hilite}\ttfamily}}
+ {}
+\makeatletter
+
+{\catcode`\%=12
+ \long\gdef\@gobble@percent@space#1{\ifx
+ #1%\expandafter\@gobble\else\expandafter#1\fi}}
+
+
+\AtBeginDocument{\def\verbatim@processline{\expandafter\check@percent
+ \the\verbatim@line\par}}
+\newwrite\tmp@out
+\newcounter{xio}
+\newenvironment{xio}{% example input and output
+ \par\addvspace\bigskipamount
+ \hbox{\itshape
+ \refstepcounter{xio}\kern-\p@ Example \thexio}\@nobreaktrue
+ \immediate\openout\tmp@out\jobname.tmp \relax
+ \begingroup
+ \let\do\@makeother\dospecials\catcode`\^^M\active
+ \def\verbatim@processline{
+ \immediate\write\tmp@out{\expandafter\@gobble@percent@space
+ \the\verbatim@line}}%
+ \verbatim@start
+}{%
+ \immediate\closeout\tmp@out
+ \@verbatim\frenchspacing\@vobeyspaces
+ \@@input \jobname.tmp \relax
+ \endgroup
+ \par\medskip
+ \noindent\ignorespaces
+ \@@input \jobname.tmp \relax
+ \par\medskip
+}
+
+
+
+
+\providecommand*\pkg[1]{\textsf{#1}}
+\providecommand*\cls[1]{\textsf{#1}}
+\providecommand*\opt[1]{\texttt{#1}}
+\providecommand*\env[1]{\texttt{#1}}
+\providecommand*\fn[1]{\texttt{#1}}
+
+
+\providecommand*\cn[1]{\cs{#1}}
+\providecommand*\csarg[1]{\texttt{\char`\{#1\char`\}}}
+
+\providecommand*\tex{\TeX\xspace}
+\providecommand*\latex{\LaTeX\xspace}
+\providecommand*\dbldollars{\texttt{\detokenize{$$}}}%$$
+\providecommand*\arg{}
+\edef\arg{\expandafter\@gobble\string\#}
+
+\newenvironment{aside}{\begin{quote}\bfseries}{\end{quote}}
+\newenvironment{dn}{\begin{quote}\bfseries}{\end{quote}}
+
+\newcommand\dash{\textemdash}
+\newcommand\dbslash[1]{\texttt{\string\\}}
+\newcommand\thepkg{the \pkg{breqn} package\xspace}
+
+\providecommand*\texbook{\textsl{The \protect\TeX{}book}\xspace}
+
+\providecommand*\dotsc{\ldots}
+\providecommand*\eqref[1]{(\ref{#1})}
+
+\providecommand*\qq[1]{\textquotedblleft#1\textquotedblright}
+\providecommand*\quoted[1]{\textquoteleft#1\textquoteright}
+\providecommand*\dquoted[1]{\textquotedblleft#1\textquotedblright}
+
+\providecommand*\ie{i.e.,\xspace}
+\providecommand*\eg{e.g.,\xspace}
+\providecommand*\etc{etc.\xspace}
+\providecommand*\cf{cf.\xspace}
+
+\providecommand*\ndash{\unskip\textendash\ignorespaces}
+\providecommand*\mdash{\unskip\textemdash\ignorespaces}
+
+\makeatother
+
+\usepackage{breqn}
+
+\begin{document}
+ \DocInput{breqn.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{The \pkg{breqn} package}
+% \date{2007/12/10 v0.96}
+% \author{Morten H\o gholm \\\texttt{mh.ctan@gmail.com}}
+%
+% \maketitle
+% \begin{abstract}
+% The \pkg{breqn} package facilitates automatic line-breaking of
+% displayed math expressions.
+% \end{abstract}
+%
+% \part*{User's guide}
+%
+% \section{A bit of history}
+%
+% Originally \pkg{breqn}, \pkg{flexisym}, and \pkg{mathstyle} were
+% created by Michael J.~Downes from the American Mathematical Society
+% during the 1990's up to late 2002. Sadly---and much to the shock of
+% the \TeX\ world---Michael passed away in early 2003 at the age of
+% only~44.
+%
+% The American Mathematical Society has kindly allowed me to assume
+% maintainership of this part of his work and I wish to express my
+% gratitude to them and to Barbara Beeton in particular for providing
+% me with the files I needed.
+%
+% I hope to continue Michael's work, thereby allowing users to create
+% more \emph{masterpieces of the publishing art} as I think he would
+% have wanted.
+%
+%
+%
+% \section{Package loading}
+%
+%
+% The recommended way of loading the \pkg{breqn} package is to load it
+% \emph{after} other packages dealing with math, \ie, after
+% \pkg{amsmath}, \pkg{amssymb}, or packages such as \pkg{mathpazo} or
+% \pkg{mathptmx}.
+%
+% The \pkg{flexisym} package (described in section \vref{flexisym}) is
+% required by \pkg{breqn} and ensures the math symbols are set up
+% correctly. By default \pkg{breqn} loads it with support for Computer
+% Modern but if you use a different math package requiring slightly
+% different definitions, it must be loaded before \pkg{breqn}. Below
+% is an example of how you enable \pkg{breqn} to work with the widely
+% used \pkg{mathpazo} package.
+% \begin{verbatim}
+%\usepackage{mathpazo}
+%\usepackage[mathpazo]{flexisym}
+%\usepackage{breqn}
+% \end{verbatim}
+% Currently, the packages \pkg{mathpazo} and \pkg{mathptmx} are
+% supported. Despair not: Chances are that the package will work using
+% the default settings. If you find that a particular math font
+% package doesn't work then please see implementation in
+% \fn{flexisym.dtx} for how to create a support file---it is easier
+% than one might think. Contributions welcome.
+%
+% The documentation for the package was formerly found in
+% \fn{breqndoc}. It has now been added to this implementation
+% file. Below follows the contents of the original \pkg{breqn}
+% documentation. Not all details hold anymore but I have prioritized
+% fixing the package.
+%
+% \section{To do}
+%
+% \begin{itemize}
+% \item Handling of QED
+% \item Space between \verb'\end{dmath}' and following punctuation will
+% prevent the punctuation from being drawn into the equation.
+% \item Overriding the equation layout
+% \item Overriding the placement of the equation number
+% \item \qq{alignid} option for more widely separated equations where
+% shared alignment is desired (requires two passes)
+% \item Or maybe provide an \qq{alignwidths} option where you give
+% lhs/rhs width in terms of ems? And get feedback later on discrepancies
+% with the actual measured contents?
+% \item \cs{intertext} not needed within dgroup! But currently there are
+% limitations on floating objects within dgroup.
+% \item \verb'align={1}' or 2, 3, 4 expressing various levels of demand
+% for group-wide alignment. Level 4 means force alignment even if some
+% lines then have to run over the right margin! Level 1, the default,
+% means first break LHS-RHS equations as if it occurred by itself, then
+% move them left or right within the current line width to align them if
+% possible. Levels 2 and 3 mean try harder to align but give up if
+% overfull lines result.
+% \item Need an \cs{hshift} command to help with alignment of
+% lines broken at a discretionary times sign. Also useful for adjusting
+% inside-delimiter breaks.
+% \end{itemize}
+%
+% \section{Introduction}
+%
+% The \pkg{breqn} package for \LaTeX\ provides solutions to a number of
+% common difficulties in writing displayed equations and getting
+% high-quality output. For example, it is a well-known inconvenience that
+% if an equation must be broken into more than one line, \cs{left} \dots\
+% \cs{right} constructs cannot span lines. The \pkg{breqn} package makes
+% them work as one would expect whether or not there is an intervening
+% line break.
+%
+% The single most ambitious goal of the \pkg{breqn} package, however, is
+% to support automatic linebreaking of displayed equations. Such
+% linebreaking cannot be done without substantial changes under the hood
+% in the way math formulas are processed. For this reason, especially in
+% the alpha release, users should proceed with care and keep an eye out
+% for unexpected glitches or side effects.
+%
+% \section{Principal features}
+% The principal features of the \pkg{breqn} package are:
+% \begin{description}
+%
+% \item[semantically oriented structure] The way in which compound
+% displayed formulas are subdivided matches the logical structure more
+% closely than, say, the standard \env{eqnarray} environment. Separate
+% equations in a group of equations are written as separate environments
+% instead of being bounded merely by \dbslash/ commands. Among other
+% things, this clears up a common problem of wrong math symbol spacing at
+% the beginning of continuation lines. It also makes it possible to
+% specify different vertical space values for the space between lines of a
+% long, broken equation and the space between separate equations in a
+% group of equations.
+%
+% \item[automatic line breaking] Overlong equations will be broken
+% automatically to the prevailing column width, and continuation lines
+% will be indented following standard conventions.
+%
+% \item[line breaks within delimiters] Line breaks within \cs{left} \dots\
+% \cs{right} delimiters work in a natural way. Line breaks can be
+% forbidden below a given depth of delimiter nesting through a package
+% option.
+%
+% \item[mixed math and text] Display equations that contain mixed
+% math and text, or even text only, are handled naturally by means of a
+% \env{dseries} environment that starts out in text mode instead of math
+% mode.
+%
+% \item[ending punctuation] The punctuation at the end of a displayed
+% equation can be handled in a natural way that makes it easier to promote
+% or demote formulas from\slash to inline math, and to apply special
+% effects such as adding space before the punctuation.
+%
+% \item[flexible numbering] Equation numbering is handled in a natural
+% way, with all the flexibility of the \pkg{amsmath} package and with no
+% need for a special \cs{nonumber} command.
+%
+% \item[special effects] It is easy to apply special effects to individual
+% displays, e.g., changing the type size or adding a frame.
+%
+% \item[using available space] Horizontal shrink is made use of
+% whenever feasible. With most other equation macros it is frozen when it
+% occurs between \cs{left} \dots\ \cs{right} delimiters, or in any sort of
+% multiline structure, so that some expressions require two lines that would
+% otherwise fit on one.
+%
+% \item[high-quality spacing] The \cs{abovedisplayshortskip} is used when
+% applicable (other equation macros fail to apply it in equations of more
+% than one line).
+%
+% \item[abbreviations] Unlike the \pkg{amsmath} equation environments, the
+% \pkg{breqn} environments can be called through user-defined abbreviations
+% such as \cs{beq} \dots\ \cs{eeq}.
+%
+% \end{description}
+%
+% \section{Shortcomings of the package}
+% The principal known deficiencies of the \pkg{breqn} package are:
+%
+% \subsection{Incompatibilities} As it pushes the envelope
+% of what is possible within the context of \LaTeXe, \thepkg will tend
+% to break other packages when used in combination with them, or to fail
+% itself, when there are any areas of internal overlap; successful use may
+% in some cases depend on package loading order.
+%
+%
+%
+% \subsection{Indention of delimited fragments} When line breaks within
+% delimiters are involved, the automatic indention of continuation lines
+% is likely to be unsatisfactory and need manual adjustment. I don't see
+% any easy way to provide a general solution for this, though I have some
+% ideas on how to attain partial improvements.
+%
+% \subsection{Math symbol subversion}
+% In order for automatic line breaking to work, the operation of all the
+% math symbols of class 2, 3, 4, and 5 must be altered (relations, binary
+% operators, opening delimiters, closing delimiters). This is done by an
+% auxiliary package \pkg{flexisym}. As long as you stick to the advertised
+% \LaTeX\ interface for defining math symbols (\cs{DeclareMathSymbol}),
+% things should work OK most of the time. Any more complex math symbol
+% setup is quite likely to quarrel with the \pkg{flexisym} package.
+% See Section~\ref{flexisym} for further information.
+%
+% \subsection{Subscripts and superscripts}
+%
+% Because of the changes to math symbols of class 2--5, writing certain
+% combinations such as \verb'^+' or \verb'_\pm' or \verb'^\geq' without
+% braces would lead to error messages; (The problem described here
+% already exists in standard \LaTeX\ to a lesser extent, as you may know
+% if you ever tried \verb'^\neq' or \verb'^\cong'; and indeed there are
+% no examples in the \LaTeX\ book to indicate any sanction for omitting
+% braces around a subscript or superscript.)
+%
+% The \pkg{flexisym} package therefore calls, as of version 0.92, another
+% package called \pkg{mathstyle} which turns \verb'^' and \verb'_' into
+% active characters. This is something that I believe is desirable in any
+% case, in the long run, because having a proper mathstyle variable
+% eliminates some enormous burdens that affect almost any
+% nontrivial math macros, as well as many other things where the
+% connection is not immediately obvious, e.g., the \LaTeX\ facilities for
+% loading fonts on demand.
+%
+% Not that this doesn't introduce new and interesting problems of its
+% own---for example, you don't want to put usepackage statements
+% after flexisym for any package that refers to, e.g., \verb'^^J' or
+% \verb'^^M'
+% internally (too bad that the \LaTeX\ package loading code does not
+% include automatic defenses to ensure normal catcodes in the interior of
+% a package; but it only handles the \verb'@' character).
+%
+% But I took a random AMS journal article, with normal end-user kind of
+% \LaTeX\ writing, did some straightforward substitutions to change all
+% the equations into dmath environments, and ran it with active math
+% sub/sup: everything worked OK. This suggests to me that it can work in
+% the real world, without an impossible amount of compatibility work.
+%
+% \section{Incomplete}
+% In addition, in the \textbf{alpha release [1997/10/30]} the following
+% gaps remain to be filled in:
+% \begin{description}
+% \item[documentation]
+% The documentation could use amplification, especially more
+% illustrations, and I have undoubtedly overlooked more than a few errors.
+%
+% \item[group alignment] The algorithm for doing alignment
+% of mathrel symbols across equations in a \env{dgroup} environment
+% needs work. Currently the standard and \opt{noalign} alternatives
+% produce the same output.
+%
+% \item[single group number] When a \env{dgroup} has a group number and
+% the individual equations are unnumbered, the handling and placement of
+% the group number aren't right.
+%
+% \item[group frame] Framing a group doesn't work, you might be able to
+% get frames on the individual equations at best.
+%
+% \item[group brace] The \opt{brace} option for \env{dgroup} is intended
+% to produce a large brace encompassing the whole group. This hasn't been
+% implemented yet.
+%
+% \item[darray environment] The \env{darray} environment is unfinished.
+%
+% \item[dseries environment] The syntax and usage for the \env{dseries}
+% environment are in doubt and may change.
+%
+% \item[failure arrangements] When none of the line-breaking passes for a
+% \env{dmath} environment succeeds\dash i.e., at least one line is
+% overfull\dash the final arrangement is usually rather poor. A better
+% fall-back arrangement in the failure case is needed.
+%
+% \end{description}
+%
+% \section{Package options}
+%
+% Many of the package options for \thepkg are the same as options of the
+% \env{dmath} or \env{dgroup} environments, and some of them require an
+% argument, which is something that cannot be done through the normal
+% package option mechanism. Therefore most of the \pkg{breqn} package
+% options are designed to be set with a \cs{setkeys} command after the
+% package is loaded. For example, to load the package and set the
+% maximum delimiter nesting depth for line breaks to~1:
+% \begin{verbatim}
+% \usepackage{breqn}
+% \setkeys{breqn}{breakdepth={1}}
+% \end{verbatim}
+%
+% See the discussion of environment options, Section~\ref{envopts}, for
+% more information.
+%
+% One package option that may be of interest to \TeX nicians is the
+% \opt{debug} option; this activates some debugging statements embedded in
+% the code of the alpha release which trace measuring activities related
+% to line breaking.
+%
+% \section{Environments and commands}
+% \subsection{Environments}
+% All of the following environments take an optional argument for
+% applying local effects such as changing the typesize or adding a
+% frame to an individual equation.
+%
+% \begin{description}
+% \item[\env{dmath}] Like \env{equation} but supports line breaking and variant
+% numbers.
+%
+% \item[\env{dmath*}] Unnumbered; like \env{displaymath} but supports line
+% breaking
+%
+% \item[\env{dseries}] Like \env{equation} but starts out in text mode;
+% intended for series of mathematical expressions of the form `A, B, and
+% C'. As a special feature, if you use
+% \begin{verbatim}
+% \begin{math} ... \end{math}
+% \end{verbatim}
+% for each expression in the series, a suitable amount of inter-expression
+% space will be automatically added. This is a small step in the direction of
+% facilitating conversion of display math to inline math, and vice versa: If
+% you write a display as
+% \begin{verbatim}
+% \begin{dseries}
+% \begin{math}A\end{math},
+% \begin{math}B\end{math},
+% and
+% \begin{math}C\end{math}.
+% \end{dseries}
+% \end{verbatim}
+% then conversion to inline form is simply a matter of removing the
+% \verb'\begin{dseries}' and \verb'\end{dseries}' lines; the contents of the
+% display need no alterations.
+%
+% It would be nice to provide the same feature for \verb'$' notation but
+% there is no easy way to do that because the \verb'$' function has no
+% entry point to allow changing what happens before math mode is entered.
+% Making it work would therefore require turning \verb'$' into an active
+% character, something that I hesitate to do in a \LaTeXe\ context.
+%
+% \item[\env{dseries*}] Unnumbered variant of \env{dseries}
+%
+% \item[\env{dgroup}] Like the \env{align} environment of \pkg{amsmath},
+% but with each constituent equation wrapped in a \env{dmath},
+% \env{dmath*}, \env{dseries}, or \env{dseries*} environment instead of being
+% separated by \dbslash/. The equations are numbered with a group number.
+% When the constituent environments are the numbered forms (\env{dmath} or
+% \env{dseries}) they automatically switch to `subequations'-style
+% numbering, i.e., something like (3a), (3b), (3c), \dots, depending on
+% the current form of non-grouped equation numbers. See also
+% \env{dgroup*}.
+%
+% \item[\env{dgroup*}] Unnumbered variant of \env{dgroup}. If the
+% constituent environments are the numbered forms, they get normal
+% individual equation numbers, i.e., something like (3), (4), (5), \dots~.
+%
+% \item[\env{darray}] Similar to \env{eqnarray} but with an argument like
+% \env{array} for giving column specs. Automatic line breaking is not
+% done here.
+%
+% \item[\env{darray*}] Unnumbered variant of \env{darray}, rather like
+% \env{array} except in using \cs{displaystyle} for all column
+% entries.
+%
+% \item[\env{dsuspend}] Suspend the current display in order to print
+% some text, without loss of the alignment. There is also a command
+% form of the same thing, \cs{intertext}.
+% \end{description}
+%
+% \subsection{Commands}
+%
+% The commands provided by \thepkg are:
+% \begin{description}
+% \item[\cs{condition}] This command is used for
+% a part of a display which functions as a condition on the main
+% assertion. For example:
+% \begin{verbatim}
+% \begin{dmath}
+% f(x)=\frac{1}{x} \condition{for $x\neq 0$}
+% \end{dmath}.
+% \end{verbatim}
+% \begin{dmath}
+% f(x)=\frac{1}{x} \condition{for $x\neq 0$}
+% \end{dmath}.
+% The \cs{condition} command automatically switches to text mode (so that
+% interword spaces function the way they should), puts in a comma, and
+% adds an appropriate amount of space. To facilitate promotion\slash
+% demotion of formulas, \cs{condition} \qq{does the right thing} if used
+% outside of display math.
+%
+% To substitute a different punctuation mark instead of the default comma,
+% supply it as an optional argument for the \cs{condition} command:
+% \begin{verbatim}
+% \condition[;]{...}
+% \end{verbatim}
+% (Thus, to get no punctuation: \verb'\condition[]{...}'.)
+%
+% For conditions that contain no text, you can use the starred form of the
+% command, which means to stay in math mode:
+% \begin{verbatim}
+% \begin{dmath}
+% f(x)=\frac{1}{x} \condition*{x\neq 0}
+% \end{dmath}.
+%
+% If your material contains a lot of conditions like these, you might like
+% to define shorter abbreviations, e.g.,
+% \begin{verbatim}
+% \newcommand{\mc}{\condition*}% math condition
+% \newcommand{\tc}{\condition}% text condition
+% \end{verbatim}
+% But \thepkg refrains from predefining such abbreviations in order that
+% they may be left to the individual author's taste.
+%
+% \item[\cs{hiderel}] In a compound equation it is sometimes desired to
+% use a later relation symbol as the alignment point, rather than the
+% first one. To do this, mark all the relation symbols up to the desired
+% one with \cs{hiderel}:
+% \begin{verbatim}
+% T(n) \hiderel{\leq} T(2^n) \leq c(3^n - 2^n) ...
+% \end{verbatim}
+% \end{description}
+%
+% \section{Various environment options}\label{envopts}
+%
+% The following options are recognized for the \env{dmath}, \env{dgroup},
+% \env{darray}, and \env{dseries} environments; some of the options do not
+% make sense for all of the environments, but if an option is used where
+% not applicable it is silently ignored rather than treated as an error.
+%
+% \begin{verbatim}
+% \begin{dmath}[style={\small}]
+% \begin{dmath}[number={BV}]
+% \begin{dmath}[label={xyz}]
+% \begin{dmath}[relindent={1em}]
+% \begin{dmath}[compact]
+% \begin{dmath}[spread={1pt}]
+% \begin{dmath}[frame]
+% \begin{dmath}[frame={1pt},framesep={2pt}]
+% \begin{dmath}[background={red}]
+% \begin{dmath}[color={purple}]
+% \begin{dmath}[breakdepth={0}]
+% \end{verbatim}
+%
+% Use the \opt{style} option to change the type size of an individual
+% equation. This option can also serve as a catch-all option for
+% altering the equation style in other ways; the contents are simply
+% executed directly within the context of the equation.
+%
+% Use the \opt{number} option if you want the number for a particular
+% equation to fall outside of the usual sequence. If this option is used
+% the equation counter is not incremented. If for some reason you need to
+% increment the counter and change the number at the same time, use the
+% \opt{style} option in addition to the \opt{number} option:
+% \begin{verbatim}
+% style={\refstepcounter{equation}}
+% \end{verbatim}
+%
+% Use of the normal \cs{label} command instead of the \opt{label} option
+% works, I think, most of the time (untested).
+%
+% Use the \opt{relindent} option to specify something other than the
+% default amount for the indention of relation symbols. The default is
+% 2em.
+%
+% Use the \opt{compact} option in compound equations to inhibit line
+% breaks at relation symbols. By default a line break will be taken before
+% each relation symbol except the first one. With the \opt{compact} option
+% \LaTeX\ will try to fit as much material as possible on each line, but
+% breaks at relation symbols will still be preferred over breaks at binary
+% operator symbols.
+%
+% Use the \opt{spread} option to increase (or decrease) the amount of
+% interline space in an equation. See the example given above.
+%
+% Use the \opt{frame} option to produce a frame around the body of the
+% equation. The thickness of the frame can optionally be specified by
+% giving it as an argument of the option. The default thickness is
+% \cs{fboxrule}.
+%
+% Use the \opt{framesep} option to change the amount of space separating
+% the frame from what it encloses. The default space is \cs{fboxsep}.
+%
+% Use the \opt{background} option to produce a colored background for the
+% equation body. The \pkg{breqn} package doesn't automatically load the
+% \pkg{color} package, so this option won't work unless you remember
+% to load the \pkg{color} package yourself.
+%
+% Use the \opt{color} option to specify a different color for the contents
+% of the equation. Like the \opt{background} option, this doesn't work if
+% you forgot to load the \pkg{color} package.
+%
+% Use the \opt{breakdepth} option to change the level of delimiter nesting
+% to which line breaks are allowed. To prohibit line breaks within
+% delimiters, set this to 0:
+% \begin{verbatim}
+% \begin{dmath}[breakdepth={0}]
+% \end{verbatim}
+% The default value for breakdepth is 2. Even when breaks are allowed
+% inside delimiters, they are marked as less desirable than breaks outside
+% delimiters. Most of the time a break will not be taken within delimiters
+% until the alternatives have been exhausted.
+%
+% Options for the \env{dgroup} environment: all of the above, and also
+% \begin{verbatim}
+% \begin{dgroup}[noalign]
+% \begin{dgroup}[brace]
+% \end{verbatim}
+%
+% By default the equations in a \env{dgroup} are mutually aligned on their
+% relation symbols ($=$, $<$, $\geq$, and the like). With the
+% \opt{noalign} option each equation is placed individually without
+% reference to the others.
+%
+% The \opt{brace} option means to place a large brace encompassing the
+% whole group on the same side as the equation number.
+%
+% Options for the \env{darray} environment: all of the above (where
+% sensible), and also
+% \begin{verbatim}
+% \begin{darray}[cols={lcr@{\hspace{2em}}lcr}]
+% \end{verbatim}
+% The value of the \opt{cols} option for the darray environment should be
+% a series of column specs as for the \env{array} environment, with the
+% following differences:
+% \begin{itemize}
+% \item For l, c, and r what you get is not text, but math, and
+% displaystyle math at that. To get text you must use a 'p' column
+% specifier, or put an \cs{mbox} in each of the individual cells.
+%
+% \item Vertical rules don't connect across lines.
+% \end{itemize}
+%
+% \section{The \pkg{flexisym} package}\label{flexisym}
+%
+% The \pkg{flexisym} package does some radical changes in the setup for
+% math symbols to allow their definitions to change dynamically throughout
+% a document. The \pkg{breqn} package uses this to make symbols of classes
+% 2, 3, 4, 5 run special functions inside an environment such as
+% \env{dmath} that provide the necessary support for automatic line
+% breaking.
+%
+% The method used to effect these changes is to change the definitions of
+% \cs{DeclareMathSymbol} and \cs{DeclareMathDelimiter}, and then
+% re-execute the standard set of \LaTeX\ math symbol definitions.
+% Consequently, additional mathrel and mathbin symbols defined by other
+% packages will get proper line-breaking behavior if the other package is
+% loaded after the \pkg{flexisym} package and the symbols are defined
+% through the standard interface.
+%
+%
+%
+% \section{Caution! Warning!}
+% Things to keep in mind when writing documents with \thepkg:
+% \begin{itemize}
+%
+% \item The notation $:=$ must be written with the command \cs{coloneq}.
+% Otherwise the $:$ and the $=$ will be treated as two separate relation
+% symbols with an \qq{empty RHS} between them, and they will be printed
+% on separate lines.
+%
+% \item Watch out for constructions like \verb'^+' where a single binary
+% operator or binary relation symbol is subscripted or superscripted. When
+% the \pkg{breqn} or \pkg{flexisym} package is used, braces are mandatory
+% in such constructions: \verb'^{+}'. This applies for both display and
+% in-line math.
+%
+% \item If you want \LaTeX\ to make intelligent decisions about line
+% breaks when vert bars are involved, use proper pairing versions of the
+% vert-bar symbols according to context: \verb'\lvert n\rvert' instead of
+% \verb'|n|'. With the nondirectional \verb'|' there is no way for \LaTeX\
+% to reliably deduce which potential breakpoints are inside delimiters
+% (more highly discouraged) and which are not.
+%
+% \item If you use the \pkg{german} package or some other package that
+% turns double quote \verb'"' into a special character, you may encounter
+% some problems with named math symbols of type mathbin, mathrel,
+% mathopen, or mathclose in moving arguments. For example, \cs{leq} in a
+% section title will be written to the \fn{.aux} file as something like
+% \verb'\mathchar "3214'. This situation probably ought to be improved,
+% but for now use \cs{protect}.
+%
+% \item Watch out for the \texttt{[} character at the beginning of a
+% \env{dmath} or similar environment, if it is supposed to be interpreted
+% as mathematical content rather than the start of the environment's
+% optional argument.
+%
+% This is OK:
+% \begin{verbatim}
+% \begin{dmath}
+% [\lambda,1]...
+% \end{dmath}
+% \end{verbatim}
+% This will not work as expected:
+% \begin{verbatim}
+% \begin{dmath}[\lambda,1]...\end{dmath}
+% \end{verbatim}
+%
+% \item Watch out for unpaired delimiter symbols (in display math only):
+% \begin{verbatim}
+% ( ) [ ] \langle \rangle \{ \} \lvert \rvert ...
+% \end{verbatim}
+% If an open delimiter is used without a close delimiter, or vice versa,
+% it is normally harmless but may adversely affect line breaking. This is only
+% for symbols that have a natural left or right directionality. Unpaired
+% \cs{vert} and so on are fine.
+%
+% When a null delimiter is used as the other member of the pair
+% (\verb'\left.' or \verb'\right.') this warning doesn't apply.
+%
+% \item If you inadvertently apply \cs{left} or \cs{right} to something
+% that is not a delimiter, the error messages are likely to be a bit
+% more confusing than usual. The normal \LaTeX\ response to an error such
+% as
+% \begin{verbatim}
+% \left +
+% \end{verbatim}
+% is an immediate message
+% \begin{verbatim}
+% ! Missing delimiter (. inserted).
+% \end{verbatim}
+% When \thepkg is in use, \LaTeX\ will fail to realize anything is wrong
+% until it hits the end of the math formula, or a closing delimiter
+% without a matching opening delimiter, and then the first message is an
+% apparently pointless
+% \begin{verbatim}
+% ! Missing \endgroup inserted.
+% \end{verbatim}
+%
+% \end{itemize}
+%
+% \section{Examples}
+%
+% \renewcommand\theequation{\thesection.\arabic{equation}}
+% % Knuth, SNA p74
+% \begin{xio}
+% Replace $j$ by $h-j$ and by $k-j$ in these sums to get [cf.~(26)]
+% \begin{dmath}[label={sna74}]
+% \frac{1}{6} \left(\sigma(k,h,0) +\frac{3(h-1)}{h}\right)
+% +\frac{1}{6} \left(\sigma(h,k,0) +\frac{3(k-1)}{k}\right)
+% =\frac{1}{6} \left(\frac{h}{k} +\frac{k}{h} +\frac{1}{hk}\right)
+% +\frac{1}{2} -\frac{1}{2h} -\frac{1}{2k},
+% \end{dmath}
+% which is equivalent to the desired result.
+% \end{xio}
+%
+% % Knuth, SNA 4.6.2, p387
+% \begin{xio}
+% \newcommand\mx[1]{\begin{math}#1\end{math}}% math expression
+% %
+% Now every column which has no circled entry is completely zero;
+% so when $k=6$ and $k=7$ the algorithm outputs two more vectors,
+% namely
+% \begin{dseries}[frame]
+% \mx{v^{[2]} =(0,5,5,0,9,5,1,0)},
+% \mx{v^{[3]} =(0,9,11,9,10,12,0,1)}.
+% \end{dseries}
+% From the form of the matrix $A$ after $k=5$, it is evident that
+% these vectors satisfy the equation $vA =(0,\dotsc,0)$.
+% \end{xio}
+%
+% \begin{xio}
+% \begin{dmath*}
+% T(n) \hiderel{\leq} T(2^{\lceil\lg n\rceil})
+% \leq c(3^{\lceil\lg n\rceil}
+% -2^{\lceil\lg n\rceil})
+% <3c\cdot3^{\lg n}
+% =3c\,n^{\lg3}
+% \end{dmath*}.
+% \end{xio}
+%
+% \begin{xio}
+% The reduced minimal Gr\"obner basis for $I^q_3$ consists of
+% \begin{dgroup*}
+% \begin{dmath*}
+% H_1^3 = x_1 + x_2 + x_3
+% \end{dmath*},
+% \begin{dmath*}
+% H_2^2 = x_1^2 + x_1 x_2 + x_2^2 - q_1 - q_2
+% \end{dmath*},
+% \begin{dsuspend}
+% and
+% \end{dsuspend}
+% \begin{dmath*}
+% H_3^1 = x_1^3 - 2x_1 q_1 - x_2 q_1
+% \end{dmath*}.
+% \end{dgroup*}
+% \end{xio}
+%
+%
+% \StopEventually{}
+% \part*{Implementation}
+%
+%
+% The package version here is Michael's v0.90 updated by Bruce
+% Miller. Michael's changes between v0.90 and his last v0.94 will be
+% incorporated where applicable.
+%
+%
+% The original sources of \pkg{breqn} and related files exist in a
+% non-dtx format devised by Michael Downes himself.
+% Lars Madsen has kindly written a Perl script for transforming the
+% original source files into near-perfect dtx state, requiring only
+% very little hand tuning. Without his help it would have been nigh
+% impossible to incorporate the original sources with Michael's
+% comments. A big, big thank you to him.
+%
+%
+%
+% \section{Introduction}
+% The \pkg{breqn} package provides environments
+% \env{dmath}, \env{dseries}, and \env{dgroup} for
+% displayed equations with \emph{automatic line breaking},
+% including automatic indention of relation symbols and binary operator
+% symbols at the beginning of broken lines. These environments
+% automatically pull in following punctuation so that it can be written in
+% a natural way. The \pkg{breqn} package also provides a
+% \env{darray} environment similar to the \env{array}
+% environment but using \cs{displaystyle} for all the array cells and
+% providing better interline spacing (because the vertical ruling
+% feature of \env{array} is dropped).
+% These are all autonumbered environments like \env{equation}
+% and have starred forms that don't add a number. For a more
+% comprehensive and detailed description of the features and intended
+% usage of the \pkg{breqn} package see \fn{breqndoc.tex}.
+%
+%
+%
+%
+% \section{Strategy}
+% Features of particular note are the ability to have
+% linebreaks even within a \cs{left} \ndash \cs{right} pair of
+% delimiters, and the automatic alignment on relations and binary
+% operators of a split equation. To make \env{dmath} handle
+% all this, we begin by setting the body of the equation in a special
+% paragraph form with strategic line breaks whose purpose is not to
+% produce line breaks in the final printed output but rather to mark
+% significant points in the equation and give us entry points for
+% unpacking \cn{left} \ndash \cn{right} boxes.
+% After the initial typesetting, we take the resulting stack of line
+% fragments and, working backward, splice them into a new, single-line
+% paragraph; this will eventually be poured into a custom parshape, after
+% we do some measuring to calculate what that parshape should be.
+% This streamlined horizontal list may contain embedded material
+% from user commands intended to alter line breaks, horizontal alignment,
+% and interline spacing; such material requires special handling.
+%
+% To make the `shortskip' possibility work even for
+% multiline equations, we must plug in a dummy \tex display to give us
+% the value of \cs{predisplaysize}, and calculate for ourselves when
+% to apply the short skips.
+%
+% In order to measure the equation body and do various
+% enervating calculations on whether the equation number will fit and so
+% on, we have to set it in a box. Among other things, this means
+% that we can't unhbox it inside \dbldollars \dots \dbldollars , or
+% even \verb"$" \dots \verb"$": \tex doesn't allow you to
+% \cs{unhbox} in math mode. But we do want to unhbox it rather
+% than just call \cs{box}, otherwise we can't take advantage of
+% available shrink from \cs{medmuskip} to make equations shrink to
+% fit in the available width. So even for simple one-line equations
+% we are forced to fake a whole display without going through \tex 's
+% primitive display mechanism (except for using it to get
+% \cs{predisplaysize} as mentioned above).
+%
+%
+% In the case of a framed equation body, the current implementation is
+% to set the frame in a separate box, of width zero and height zero,
+% pinned to the upper left corner of the equation body, and then print the
+% equation body on top of it.
+% For attaching an equation number it would be much simpler to wrap
+% the equation body in the frame and from then on treat the body as a
+% single box instead of multiple line boxes.
+% But I had a notion that it might be possible some day to support
+% vertical stretching of the frame.
+%
+%
+%
+%
+% \section{Prelim}
+%
+% This package doesn't work with \latex 2.09, nor with other
+% versions of \latex earlier than 1994/12/01.
+% \begin{macrocode}
+%<*package>
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+%
+% Declare package name and date.
+% \begin{macrocode}
+\ProvidesPackage{breqn}[2007/12/10 v0.96]
+% \end{macrocode}
+%
+%
+% \section{Package options}
+%
+% Most options are set with the \cs{options} command (which
+% calls \cs{setkeys}) because the standard package option
+% mechanism doesn't provide support for key-value syntax.
+% Cf \fn{breqndoc.tex}.
+%
+% It seems easier to turn off debugging than turn it on so the
+% implementation of the \opt{debug} option is sort of backward.
+% \begin{macrocode}
+\edef\breqnpopcats{%
+ \catcode\number`\"=\number\catcode`\"
+ \relax}
+\AtEndOfPackage{\breqnpopcats}%
+\catcode`\^=7 \catcode`\_=8 \catcode`\"=12 \relax
+\DeclareOption{debug}{\errorcontextlines=2000\relax}
+\DeclareOption{mathstyleoff}{%
+ \PassOptionsToPackage{mathstyleoff}{flexisym}%
+}
+% \end{macrocode}
+% Process options.
+% \begin{macrocode}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+%
+%
+%
+% \section{Required packages}
+% The \pkg{flexisym} package makes it possible to attach
+% extra actions to math symbols, in particular mathbin, mathrel, mathopen,
+% and mathclose symbols.
+% Normally it would suffice to call \cs{RequirePackage} without
+% any extra testing, but the nature of the package is such that it is
+% likely to be called earlier with different (no) options.
+% Then is it really helpful to be always warning the user about
+% \quoted{Incompatible Package Options!}?
+% I don't think so.
+% \begin{macrocode}
+\@ifpackageloaded{flexisym}{}{%
+ \RequirePackage[cmbase]{flexisym}[2007/12/10]
+ \edef\breqnpopcats{\breqnpopcats
+ \catcode\number`\^=\number\catcode`\^
+ \catcode\number`\_=\number\catcode`\_
+ }%
+ \catcode`\^=7 \catcode`\_=8 \catcode`\"=12 \relax
+}
+% \end{macrocode}
+% The \pkg{keyval} package for handling equation options and
+% \pkg{calc} to ease writing computations.
+% \begin{macrocode}
+\RequirePackage{keyval,calc}\relax
+% \end{macrocode}
+%
+%
+% And add an \cs{options} cmd for processing package
+% options that require an argument. Maybe this will get added to
+% the \pkg{keyval} package eventually.
+% \begin{macrocode}
+\@ifundefined{options}{%
+% \end{macrocode}
+%
+%
+% \begin{macro}{\options}
+% Get the package options and run setkeys on them.
+% \begin{macrocode}
+\newcommand{\options}[2]{%
+ \expandafter\options@a\csname opt@#1.sty\endcsname{#2}%
+ \setkeys{#1}{#2}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\options@a}
+% \begin{macro}{\options@b}
+% \begin{macro}{\options@c}
+% \begin{macro}{\options@d}
+% Redefine \cs{opt@pkgname.sty} as we go along to take out
+% the options that are handled and leave the ones that are not.
+% \begin{macrocode}
+\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}%
+}
+% \end{macrocode}
+% Add the next option, and recurse if there remain more
+% options.
+% \begin{macrocode}
+\def\options@b#1,#2#3\@nil{%
+ \options@c#1 \@nil
+ \ifx#2\@empty \else\options@b#2#3\@nil\fi
+}
+% \end{macrocode}
+% Discard everything after the first space.
+% \begin{macrocode}
+\def\options@c#1 #2\@nil{\options@d#1=\@nil}
+% \end{macrocode}
+% Discard everything after the first = sign; add a comma only if the
+% remainder is not empty.
+% \begin{macrocode}
+\def\options@d#1=#2\@nil{\ifx\@empty #1\@empty\else,\fi#1}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+% The tail of the \cs{@ifundefined} test.
+% \begin{macrocode}
+}{}% end @ifundefined test
+% \end{macrocode}
+%
+%
+%
+%
+% \section{Some useful tools}
+%
+% \begin{macro}{\@nx}
+% \begin{macro}{\@xp}
+% The comparative brevity of \cs{@nx} and \cs{@xp} is
+% valuable not so much for typing convenience as for reducing visual
+% clutter in code sections that require a lot of expansion control.
+% \begin{macrocode}
+\let\@nx\noexpand
+\let\@xp\expandafter
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\@emptytoks}
+% Constant empty token register, analogous to \cs{@empty}.
+% \begin{macrocode}
+\@ifundefined{@emptytoks}{\newtoks\@emptytoks}{}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\f@ur}
+% Constants 0\ndash 3 are provided in plain \tex , but not 4.
+% \begin{macrocode}
+\chardef\f@ur=4
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\inf@bad}
+% \cs{inf@bad} is for testing box badness.
+% \begin{macrocode}
+\newcount\inf@bad \inf@bad=1000000
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\maxint}
+%
+% We want to use \cs{maxint} rather than coerced
+% \cs{maxdimen} for \cs{linepenalty} in one place.
+% \begin{macrocode}
+\newcount\maxint \maxint=2147483647
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\int@a}
+% \begin{macro}{\int@b}
+% \begin{macro}{\int@b}
+%
+% Provide some shorter aliases for various scratch registers.
+% \begin{macrocode}
+\let\int@a=\@tempcnta
+\let\int@b=\@tempcntb
+\let\int@c=\count@
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\dim@a}
+% \begin{macro}{\dim@b}
+% \begin{macro}{\dim@c}
+% \begin{macro}{\dim@d}
+% \begin{macro}{\dim@e}
+% \begin{macro}{\dim@A}
+%
+% Same for dimen registers.
+% \begin{macrocode}
+\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
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\skip@a}
+% \begin{macro}{\skip@b}
+% \begin{macro}{\skip@c}
+%
+% Same for skip registers.
+% \begin{macrocode}
+\let\skip@a\@tempskipa
+\let\skip@b\@tempskipb
+\let\skip@c\skip@
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\toks@a}
+% \begin{macro}{\toks@b}
+% \begin{macro}{\toks@c}
+% \begin{macro}{\toks@d}
+% \begin{macro}{\toks@e}
+% \begin{macro}{\toks@f}
+%
+% Same for token registers.
+% \begin{macrocode}
+\let\toks@a\@temptokena
+\let\toks@b\toks@
+\toksdef\toks@c=2
+\toksdef\toks@d=4
+\toksdef\toks@e=6
+\toksdef\toks@f=8
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\abs@num}
+% We need an absolute value function for comparing
+% penalties.
+% \begin{macrocode}
+\def\abs@num#1{\ifnum#1<\z@-\fi#1}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@ifnext}
+% \begin{macro}{\@ifnexta}
+% The \cs{@ifnext} function is a variation of
+% \cs{@ifnextchar} that doesn't skip over intervening whitespace.
+% We use it for the optional arg of \dbslash inside
+% \env{dmath} \etc because we don't want
+% unwary users to be tripped up by an unexpected attempt on \latex 's part
+% to interpret a bit of math as an optional arg:
+% \begin{literalcode}
+% \begin{equation}
+% ...\\
+% [z,w]...
+% \end{equation}
+% \end{literalcode}
+% .
+% \begin{macrocode}
+\def\@ifnext#1#2#3{%
+ \let\@tempd= #1\def\@tempa{#2}\def\@tempb{#3}%
+ \futurelet\@tempc\@ifnexta
+}
+% \end{macrocode}
+% Switch to \cs{@tempa} iff the next token matches.
+% \begin{macrocode}
+\def\@ifnexta{\ifx\@tempc\@tempd \let\@tempb\@tempa \fi \@tempb}
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\@ifstar}
+% Similarly let's remove space-skipping from \cs{@ifstar}
+% because in some rare case of \dbslash inside an equation, followed by
+% a space and a \verb"*" where the \verb"*" is intended as the math
+% binary operator, it would be a disservice to gobble the star as an
+% option of the \dbslash command. In all other contexts the chance
+% of having a space \emph{before} the star is extremely small: either
+% the command is a control word which will get no space token after it in
+% any case because of \tex 's tokenization rules; or it is a control
+% symbol such as \dbslash \verb"*" which is exceedingly unlikely to be
+% written as \dbslash \verb"*" by any one who really wants the
+% \verb"*" to act as a modifier for the \dbslash command.
+% \begin{macrocode}
+\def\@ifstar#1#2{%
+ \let\@tempd*\def\@tempa*{#1}\def\@tempb{#2}%
+ \futurelet\@tempc\@ifnexta
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@optarg}
+% Utility function for reading an optional arg
+% \emph{without} skipping over any intervening spaces.
+% \begin{macrocode}
+\def\@optarg#1#2{\@ifnext[{#1}{#1[#2]}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@True}
+% \begin{macro}{\@False}
+% \begin{macro}{\@Not}
+% \begin{macro}{\@And}
+% After \verb"\let\foo\@True" the test
+% \begin{literalcode}
+% \if\foo
+% \end{literalcode}
+% evaluates to true. Would rather avoid \cs{newif} because it
+% uses three csnames per Boolean variable; this uses only one.
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+% \begin{macrocode}
+\def\theb@@le#1{\if#1 True\else False\fi}
+% \end{macrocode}
+% \begin{macro}{\freeze@glue}
+%
+% Remove the stretch and shrink from a glue register.
+% \begin{macrocode}
+\def\freeze@glue#1{#11#1\relax}
+% \end{macrocode}
+%
+% \end{macro}
+% \begin{macro}{\z@rule}
+% \begin{macro}{\keep@glue}
+% Note well
+% the intentional absence of \cs{relax} at the end of the replacement
+% text of \cs{z@rule}; use it with care.
+% \begin{macrocode}
+\def\z@rule{\vrule\@width\z@}% no \relax ! use with care
+% \end{macrocode}
+% Different ways to keep a bit of glue from disappearing at the
+% beginning of a line after line breaking:
+% \begin{itemize}
+% \item Zero-thickness rule
+% \item Null character
+% \item \cs{vadjust}\verb"{}" (\texbook , Exercise ??)
+% \end{itemize}
+% The null character idea would be nice except it
+% creates a mathord which then screws up math spacing for \eg a following
+% unary minus sign. (the vrule \emph{is} transparent to
+% the math spacing). The vadjust is the cheapest in terms of box
+% memory\mdash it vanishes after the pass through \tex 's
+% paragrapher.
+% It is what I would have used, except that the equation contents get
+% run through two paragraphing passes, once for breaking up LR boxes and
+% once for the real typesetting.
+% If \cs{keep@glue} were done with an empty vadjust, it would
+% disappear after the first pass and\mdash in particular\mdash the
+% pre-bin-op adjustment for relation symbols would disappear at a line break.
+% \begin{macrocode}
+\def\keep@glue{\z@rule\relax}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\replicate}
+%
+% This is a fully expandable way of making N copies of a token
+% list.
+% Based on a post of David Kastrup to comp.text.tex circa January
+% 1999.
+% The extra application of \cs{number} is needed for maximal
+% robustness in case the repeat count N is given in some weird \tex form
+% such as \verb""E9" or \verb"\count9".
+% \begin{macrocode}
+% 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
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\replicate@a}
+% \begin{macrocode}
+\long\def\replicate@a#1#2\endcsname#3{#1\endcsname{#3}#2}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\8m}% fix
+% \begin{macrocode}
+\begingroup \catcode`\&=11
+\long\gdef\&m#1#2{#1\csname &#2\endcsname{#1}}
+\endgroup
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\8q}% fix
+% \begin{macrocode}
+\@xp\let\csname\string &q\endcsname\@gobble
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mathchars@reset}
+%
+% Need to patch up this function from flexisym a little, to better
+% handle certain constructed symbols like \cs{neq}.
+% \begin{macrocode}
+\g@addto@macro\mathchars@reset{%
+ \let\@symRel\@secondoftwo \let\@symBin\@secondoftwo
+ \let\@symDeL\@secondoftwo \let\@symDeR\@secondoftwo
+ \let\@symDeB\@secondoftwo
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@cons}
+%
+% \latex 's \cs{@cons} appends to the end of a list, but we need
+% a function that adds material at the beginning.
+% \begin{macrocode}
+\def\eq@cons#1#2{%
+ \begingroup \let\@elt\relax \xdef#1{\@elt{#2}#1}\endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@saveprimitive}
+% If some preceding package redefined one of the
+% primitives that we must change, we had better do some checking to make
+% sure that we are able to save the primitive meaning for internal use.
+% This is handled by the \cs{@saveprimitive} function. We
+% follow the example of \cs{@@input} where the primitive meaning is
+% stored in an internal control sequence with a \verb"@@" prefix.
+% Primitive control sequences can be distinguished by the fact that
+% \cs{string} and \cs{meaning} return the same information.
+% Well, not quite all: \cs{nullfont} and \cs{topmark}
+% and the other \cs{...mark} primitives being the exceptions.
+% \begin{macrocode}
+\providecommand{\@saveprimitive}[2]{%
+ \begingroup
+ \edef\@tempa{\string#1}\edef\@tempb{\meaning#1}%
+ \ifx\@tempa\@tempb \global\let#2#1%
+ \else
+% \end{macrocode}%
+% If [arg1] is no longer primitive, then we are in trouble unless
+% [arg2] was already given the desired primitive meaning somewhere
+% else.
+% \begin{macrocode}
+ \edef\@tempb{\meaning#2}%
+ \ifx\@tempa\@tempb
+ \else \@saveprimitive@a#1#2%
+ \fi
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% Aux function, check for the special cases.
+% Most of the time this branch will be skipped so we can
+% stuff a lot of work into it without worrying about speed costs.
+% \begin{macrocode}
+\providecommand\@saveprimitive@a[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
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@math}
+% \begin{macro}{\@@endmath}
+% \begin{macro}{\@@display}
+% \begin{macro}{\@@enddisplay}
+% Move the math-start and math-end functions into control
+% sequences. If I were redesigning \tex I guess I'd put these
+% functions into primitive control words instead of linking them to a
+% catcode. That way \tex would not have to do the special
+% lookahead at a \verb"$" to see if there's another one coming up.
+% Of course that's related to the question of how to provide user
+% shorthand for common constructions: \tex , or an editing interface of
+% some sort.
+% \begin{macrocode}
+\begingroup \catcode`\$=\thr@@ % just to make sure
+ \global\let\@@math=$ \gdef\@@display{$$}% $$$
+\endgroup
+\let\@@endmath=\@@math
+\let\@@enddisplay=\@@display
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@insert}
+% \begin{macro}{\@@mark}
+% \begin{macro}{\@@vadjust}
+% Save the primitives \cs{vadjust}, \cs{insert},
+% \cs{mark} because we will want to change them locally during
+% equation measuring to keep them from getting in the way of our vertical
+% decomposition procedures. We follow the example of
+% \cs{@@input}, \cs{@@end}, \cs{@@par} where the primitive
+% meaning is stored in an internal control sequence with a \verb"@@"
+% prefix.
+% \begin{macrocode}
+\@saveprimitive\vadjust\@@vadjust
+\@saveprimitive\insert\@@insert
+\@saveprimitive\mark\@@mark
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+%
+% \section{Debugging}
+% Debugging help.
+%
+% \begin{macro}{\debug}
+% \begin{macrocode}
+\let\debug=\begingroup
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\gubed}
+% \begin{macrocode}
+\let\gubed=\endgroup
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\debugmsg}
+% Print a debugging message.
+% \begin{macrocode}
+\def\debugmsg{\message{||= \iffalse}\fi
+ \@xp\@gobble\string
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\debugwr}
+% Sometimes the newline behavior of \cs{message} is
+% unsatisfactory; this provides an alternative.
+% \begin{macrocode}
+\def\debugwr#1{\immediate\write\sixt@@n{||= #1}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\debug@box}
+% Record the contents of a box in the log file, without stopping.
+% \begin{macrocode}
+\def\debug@box#1{%
+ \batchmode{\showboxbreadth\maxdimen\showboxdepth99\showbox#1}%
+ \errorstopmode
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\eqinfo}
+% Show lots of info about the material before launching into the
+% trials.
+% \begin{macrocode}
+\def\eqinfo{%
+ \debug@box\EQ@copy
+ \wlog{!! EQ@copy: \the\wd\EQ@copy\space x
+ \the\ht\EQ@copy+\the\dp\EQ@copy
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\debug@para}
+% Check params that affect line breaking.
+% \begin{macrocode}
+\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}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% Turn off debugging unless it was asked for.
+% \begin{macrocode}
+\@ifpackagewith{breqn}{debug}{}{%
+ \let\debug\relax \let\gubed\relax
+ \let\debugmsg\@gobble \let\debug@lines\relax \let\debug@para\relax
+ \let\debugwr\@gobble
+ \let\debug@box\@gobble \let\debug@push\@gobbletwo
+}
+% \end{macrocode}
+%
+%
+%
+%
+% \section{The \cs{listwidth} variable}
+% The dimen variable \cs{listwidth} is \cs{linewidth}
+% plus \cs{leftmargin} plus \cs{rightmargin}, which is typically
+% less than \cs{hsize} if the list depth is greater than one.
+% In case a future package will provide this variable, define it only
+% if not yet defined.
+% \begin{macrocode}
+\@ifundefined{listwidth}{\newdimen\listwidth}{}
+\listwidth=\z@
+% \end{macrocode}
+%
+%
+%
+%
+% \section{Parameters}
+%
+% Here follows a list of parameters needed.
+%
+% \begin{macro}{\eqfontsize}
+% \begin{macro}{\eqcolor}
+% \begin{macro}{\eqmargin}
+% \begin{macro}{\eqindent}
+% \begin{macro}{\eqbinoffset}
+% \begin{macro}{\eqnumside}
+% \begin{macro}{\eqnumplace}
+% \begin{macro}{\eqnumsep}
+% \begin{macro}{\eqnumfont}
+% \begin{macro}{\eqnumform}
+% \begin{macro}{\eqnumsize}
+% \begin{macro}{\eqnumcolor}
+% \begin{macro}{\eqlinespacing}
+% \begin{macro}{\eqlineskip}
+% \begin{macro}{\eqlineskiplimit}
+% \begin{macro}{\eqstyle}
+% \begin{macro}{\eqinterlinepenalty}
+% \begin{macro}{\intereqpenalty}
+% \begin{macro}{\intereqskip}
+%
+% Note: avoid M, m, P, p because they look like they might be the
+% start of a keyword \quoted{minus} or \quoted{plus}. Then
+% \tex looks further to see if the next letter is i or l. And if
+% the next thing is an undefined macro, the attempt to expand the macro
+% results in an error message.
+% \begin{macrocode}
+\def\eqfontsize{} % Inherit from context [NOT USED?]
+\def\eqcolor{black} % Default to black [NOT USED?]
+\newdimen\eqnumsep \eqnumsep=10pt % Min space between equ number and body
+\newdimen\eqmargin \eqmargin=8pt % For `multline' gap emulation
+% \end{macrocode}
+% The \cs{eqindent} and \cs{eqnumside} variables need to
+% have their values initialized from context, actually. But
+% that takes a bit of work, which is postponed till later.
+% \begin{macrocode}
+\def\eqindent{C}% % C or I, centered or indented
+\def\eqnumside{R}% % R or L, right or left
+\def\eqnumplace{M}% % M or T or B, middle top or bottom
+% \end{macrocode}
+% Typesetting the equation number is done thus:
+% \begin{literalcode}
+% {\eqnumcolor \eqnumsize \eqnumfont{\eqnumform{\eq@number}}}
+% \end{literalcode}
+% .
+% \begin{macrocode}
+%d\eqnumfont{\upshape}% % Upright even when surrounding text is slanted
+\def\eqnumfont{}% % Null for easier debugging [mjd,1997/09/26]
+\def\eqnumform#1{(#1\@@italiccorr)} % Add parens
+\def\eqnumsize{} % Allow numbers to have different typesize ...
+% \end{macrocode}
+% Tricky questions on \cs{eqnumsize}. Should the default
+% be \cs{normalsize}? Then the user can scale down the
+% equation body with \cs{small} and not affect the equation
+% number. Or should the default be empty? Then in large
+% sections of smaller text, like the dangerous bend stuff in
+% \emph{\TeX book}, the equation number size will keep in synch
+% with the context.
+% Maybe need an \cs{eqbodysize} param as well to allow separating
+% the two cases.
+% \begin{macrocode}
+\def\eqnumcolor{} % ... or color than eq body e.g. \color{blue}
+\newlength\eqlinespacing \eqlinespacing=14pt plus2pt % Base-to-base space between lines
+\newlength\eqlineskip \eqlineskip=3pt plus2pt % Min space if eqlinespacing too small
+\newdimen\eqlineskiplimit \eqlineskiplimit=2pt % Threshold for switching to eqlineskip
+% \end{macrocode}
+% The value of \cs{eqbinoffset} should include a negative shrink
+% component that cancels the shrink component of medmuskip, otherwise
+% there can be a noticeable variation in the indent of adjacent lines if
+% one is shrunken a lot and the other isn't.
+% \begin{macrocode}
+\newmuskip \eqbinoffset \eqbinoffset=15mu minus-3mu % Offset from mathrel alignment pt for mathbins
+\newmuskip\eqdelimoffset \eqdelimoffset=2mu % Additional offset for break inside delims
+\newdimen\eqindentstep \eqindentstep=8pt % Indent used when LHS wd is n/a or too large
+\newtoks\eqstyle % Customization hook
+\newcount\eqbreakdepth \eqbreakdepth=2 % Allow breaks within delimiters to this depth
+\newcount \eqinterlinepenalty \eqinterlinepenalty=10000 % No page breaks between equation lines
+\newcount \intereqpenalty \intereqpenalty=1000 % Pagebreak penalty between equations [BRM: Was \@M]
+\newlength \intereqskip \intereqskip=3pt plus2pt % Additional vert space between equations
+\newcount\prerelpenalty \prerelpenalty=-\@M % Linebreak penalty before mathrel symbols
+\newcount\prebinoppenalty \prebinoppenalty=888 % Linebreak penalty before mathbins
+% \end{macrocode}
+% When breaking equations we never right-justify, so a stretch
+% component of the muskip is never helpful and sometimes it is definitely
+% undesirable. Note that thick\slash medmuskips frozen inside a
+% fraction or radical may turn out noticeably larger than neighboring
+% unfrozen ones. Nonetheless I think this way is the best
+% compromise short of a new \tex that can make those built-up objects
+% shrink horizontally in proportion; the alternative is to pretty much
+% eliminate the shrink possibility completely in displays.
+% \begin{macrocode}
+\newmuskip \Dmedmuskip \Dmedmuskip=4mu minus 3mu % medmuskip in displays
+\newmuskip \Dthickmuskip \Dthickmuskip=5mu minus 2mu % thickmuskip in displays
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% And now some internal variables. 1997/10/22: some of
+% these are dead branches that need to be pruned.
+%
+% MH: Started cleaning up a bit. No more funny loops.
+% \begin{macrocode}
+\def\eq@number{} % Internal variable
+\newlength\eqleftskip \eqleftskip=\@centering % Space on the left [NOT USED?]
+\newlength\eqrightskip \eqrightskip=\@centering % Space on the right [NOT USED?]
+\newlength\eq@vspan \eq@vspan=\z@skip % Glue used to vcenter the eq number
+\newmuskip\eq@binoffset \eq@binoffset=\eqbinoffset % Roughly, \eqbinoffset + \eqdelimoffset
+\newsavebox\EQ@box % Storage for equation body
+\newsavebox\EQ@copy % For eq body sans vadjust/insert/mark material
+\newsavebox\EQ@numbox % For equation number
+\newdimen\eq@wdNum % width of number + separation [NEW]
+\newsavebox\GRP@numbox % For group number [NEW]
+\newdimen\grp@wdNum % width of number + separation [NEW]
+%%B\EQ@vimbox % Vadjust, insert, or mark material
+%%B\EQ@vimcopy % Spare copy of same
+%%B\eq@impinging % Temporary box for measuring number placement
+\newcount \eq@lines % Internal counter, actual number of lines
+\newcount \eq@curline % Loop counter
+\newcount \eq@badness % Used in testing for overfull lines
+\newcount \EQ@vims % For bookkeeping
+\def\@eq@numbertrue{\let\eq@hasNumber\@True}%
+\def\@eq@numberfalse{\let\eq@hasNumber\@False}%
+\let\eq@hasNumber\@False
+% \end{macrocode}
+% Here for the dimens, it would be advisable to do some more careful
+% management to conserve dimen registers. First of all, most of the
+% dimen registers are needed in the measuring phase, which is a tightly
+% contained step that happens after the contents of the equation have been
+% typeset into a box and before any external functions have a chance to
+% regain control\mdash \eg , the output routine.
+% Therefore it is possible to make use of the the dimen registers 0--9,
+% reserved by convention for scratch use, without fear of conflict with
+% other macros. But I don't want to use them directly with the
+% available names:
+% \begin{literalcode}
+% \dimen@ \dimen@i \dimen@ii \dimen3 \dimen4 ... \dimen9
+% \end{literalcode}
+% . It would be much more useful to have names for these registers
+% indicative of way they are used.
+%
+% Another source whence dimen registers could be borrowed is the
+% \pkg{amsmath} package, which allocates six registers for
+% equation-measuring purposes. We can reuse them under different
+% names since the \pkg{amsmath} functions and our functions will
+% never be used simultaneously.
+% \begin{literalcode}
+% \eqnshift@ \alignsep@ \tagshift@ \tagwidth@ \totwidth@ \lineht@
+% \end{literalcode}
+% \begin{macrocode}
+\newdimen\eq@dp % Depth of last line
+\newdimen\eq@wdL % Width of the left-hand-side
+\newdimen\eq@wdT % Total width for framing
+\newdimen\eq@wdMin % Width of narrowest line in equation
+\newdimen\grp@wdL % Max width of LHS's in a group
+\newdimen\grp@wdR % Max RHS of all equations in a group
+\newdimen\grp@wdT
+\newdimen\eq@wdRmax
+\newdimen\eq@firstht % Height of first line
+% \end{macrocode}
+% BRM: measure the condition too.
+% \begin{macrocode}
+\newdimen\eq@wdCond
+\newdimen\eq@indentstep % Indent amount when LHS is not present
+\newdimen\eq@linewidth % Width actually used for display
+\newdimen\grp@linewidth % Max eq@linewidth over a group
+% \end{macrocode}
+% Maybe \cs{eq@hshift} could share the same register as
+% \cs{mathindent} [mjd,1997/10/22].
+% \begin{macrocode}
+\newdimen\eq@hshift
+\let\eq@isIntertext\@False
+% \end{macrocode}
+% Init \cs{eq@indentstep} to a nonzero value so that we can
+% detect and refrain from clobbering a user setting of zero.
+% And \cs{eq@sidespace} to \cs{maxdimen} because
+% that is the right init before computing a min.
+% \begin{macrocode}
+\eq@indentstep=\maxdimen
+\newdimen\eq@given@sidespace
+% \end{macrocode}
+%
+% \begin{macro}{\eq@overrun}
+% MH: Appears to be unused.
+%
+% Not a dimen register; don't need to advance it.
+% \begin{macrocode}
+\def\eq@overrun{0pt}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% To initialize \cs{eqnumside} and \cs{eqindent} properly,
+% we may need to grub around a bit in \cs{@filelist}. However,
+% if the \pkg{amsmath} package was used, we can use its option
+% data. More trouble: if a documentclass sends an option of
+% \opt{leqno} to \pkg{amsmath} by default, and it gets
+% overridden by the user with a \opt{reqno} documentclass option,
+% then \pkg{amsmath} believes itself to have received
+% \emph{both} options.
+% \begin{macrocode}
+\@ifpackagewith{amsmath}{leqno}{%
+ \@ifpackagewith{amsmath}{reqno}{}{\def\eqnumside{L}}%
+}{%
+% \end{macrocode}
+% If the \pkg{amsmath} package was not used, the next
+% method for testing the \opt{leqno} option is to see if
+% \fn{leqno.clo} is present in \cs{@filelist}.
+% \begin{macrocode}
+ \def\@tempa#1,leqno.clo,#2#3\@nil{%
+ \ifx @#2\relax\else \def\eqnumside{L}\fi
+ }%
+ \@xp\@tempa\@filelist,leqno.clo,@\@nil
+% \end{macrocode}
+% Even that test may fail in the case of \cls{amsart} if it does
+% not load \pkg{amsmath}. Then we have to look whether
+% \cs{iftagsleft@} is defined, and if so whether it is true.
+% This is tricky if you want to be careful about conditional nesting
+% and don't want to put anything in the hash table unnecessarily.
+% \begin{macrocode}
+ \if L\eqnumside
+ \else
+ \@ifundefined{iftagsleft@}{}{%
+ \edef\eqnumside{%
+ \if TT\csname fi\endcsname\csname iftagsleft@\endcsname
+ L\else R\fi
+ }%
+ }
+ \fi
+}
+% \end{macrocode}
+% A similar sequence of tests handles the \quoted{fleqn or not fleqn}
+% question for the \cls{article} and \cls{amsart}
+% documentclasses.
+% \begin{macrocode}
+\@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
+}
+% \end{macrocode}
+% BRM: This conditional implies we must use ALL indented or ALL centered?
+% \begin{macrocode}
+%\if I\eqindent
+ \@ifundefined{mathindent}{%
+ \newdimen\mathindent
+ }{%
+ \@ifundefined{@mathmargin}{}{%
+ \mathindent\@mathmargin
+ }%
+ }
+%\fi
+% \end{macrocode}
+%
+%
+%
+%
+% \section{Measuring equation components}
+% Measure the left-hand side of an equation. This
+% function is called by mathrel symbols. For the first mathrel we
+% want to discourage a line break more than for following mathrels; so
+% \cs{mark@lhs} gobbles the following \cs{rel@break} and
+% substitutes a higher penalty.
+% \begin{aside}
+% Maybe the LHS should be kept in a separate box.
+% \end{aside}
+%
+%
+%
+% \begin{macro}{\EQ@hasLHS}
+%
+% Boolean: does this equation have a \dquoted{left-hand side}?
+% \begin{macrocode}
+\let\EQ@hasLHS=\@False
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\EQ@QED}
+%
+% If nonempty: the qed material that should be incorporated into this
+% equation after the final punctuation.
+% \begin{macrocode}
+\let\EQ@QED=\@empty
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\mark@lhs}
+%
+% \begin{macrocode}
+\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
+% \end{macrocode}
+% But the penalty for the first mathrel should still be lower than a
+% binoppenalty. If not, when the LHS contains a binop, the split
+% will occur inside the LHS rather than at the mathrel.
+% On the other hand if we end up with a multline sort of equation
+% layout where the RHS is very short, the break before the relation symbol
+% should be made \emph{less} desirable than the breakpoints inside
+% the LHS.
+% Since a lower penalty takes precedence over a higher one, we start
+% by putting in the highest relpenalty; during subsequent measuring if we
+% find that that RHS is not excessively short then we put in an extra
+% \dquoted{normal} relpenalty when rejoining the LHS and RHS.
+% \begin{macrocode}
+ \penalty9999 % instead of normal \rel@break
+ % else no penalty = forbid break
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\mark@lhs@a}
+%
+% Temporarily add an extra thickmuskip to the LHS; it will be removed
+% later. This is necessary to compensate for the disappearance of
+% the thickmuskip glue preceding a mathrel if a line break is taken at
+% that point. Otherwise we would have to make our definition of
+% mathrel symbols more complicated, like the one for mathbins. The
+% penalty of $2$ put in with vadjust is a flag for
+% \cs{eq@repack} to suggest that the box containing this line should
+% be measured to find the value of \cs{eq@wdL}. The
+% second vadjust ensures that the normal prerelpenalty and thickmuskip
+% will not get lost at the line break during this preliminary pass.
+%
+% BRM: I originally thought the \verb"\mskip\thickmuskip" was messing
+% up summation limits in LHS. But I may have fixed that problem by
+% fixing other things\ldots
+% \begin{macrocode}
+\def\mark@lhs@a{%
+ \mskip\thickmuskip \@@vadjust{\penalty\tw@}\penalty-\@Mi\@@vadjust{}%
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\hiderel}
+% If you want the LHS to extend past the first mathrel symbol to a
+% following one, mark the first one with \cs{hiderel}:
+% \begin{literalcode}
+% a \hiderel{=} b = c...
+% \end{literalcode}
+% .
+% \begin{aside}
+% I'm not sure now why I didn't use \cs{begingroup}
+% \cs{endgroup} here \begin{dn}
+% mjd,1999/01/21
+% \end{dn}
+% .
+% \end{aside}
+%
+% \begin{macrocode}
+\newcommand\hiderel[1]{\mathrel{\advance\lr@level\@ne#1}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\m@@Bin}
+% \begin{macro}{\m@@Rel}
+% \begin{macro}{\bin@break}
+% \begin{macro}{\rel@break}
+% \begin{macro}{\bin@mark}
+% \begin{macro}{\rel@mark}
+% \begin{macro}{\d@@Bin}
+% \begin{macro}{\d@@Rel}
+%
+% \cf \pkg{flexisym} handling of mathbins and mathrels. These
+% are alternate definitions of \cs{m@Bin} and \cs{m@Rel},
+% activated by \cs{display@setup}.
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+% The difficulty of dealing properly with the subscripts and
+% superscripts sometimes appended to mathbins and mathrels is one of the
+% reasons that we do not attempt to handle the mathrels as a separate
+% \quoted{column} a la \env{eqnarray}.
+%
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\m@@symRel}
+% \begin{macro}{\d@@symRel}
+% \begin{macro}{\m@@symBin}
+% \begin{macro}{\d@@symBin}
+% \begin{macro}{\m@@symDel}
+% \begin{macro}{\d@@symDel}
+% \begin{macro}{\m@@symDeR}
+% \begin{macro}{\d@@symDeR}
+% \begin{macro}{\m@@symDeB}
+% \begin{macro}{\d@@symDeB}
+% \begin{macro}{\m@@symDeA}
+% \begin{macro}{\d@@symDeA}
+%
+% More of the same.
+% \begin{macrocode}
+\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
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\display@setup}
+% \begin{macro}{\everydisplay}
+% Setup. Note that \latex reserves the primitive
+% \cs{everydisplay} under the name \cs{frozen@everydisplay}.
+% BRM: Disable this! It also affects non-breqn math!!!!
+% \begin{macrocode}
+%\global\everydisplay\expandafter{\the\everydisplay \display@setup}
+% \end{macrocode}
+% Change some math symbol function calls.
+% \begin{macrocode}
+\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@
+ \global\eq@wdCond\z@ %BRM: new
+% \end{macrocode}
+% If we have an embedded array environment (for example), we
+% don't want to have each math cell within the array resetting
+% \cs{lr@level} globally to 0\mdash not good!
+% And in general I think it is safe to say that whenever we have a
+% subordinate level of boxing we want to revert to a normal math setup.
+% \begin{macrocode}
+ \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
+ }%
+}
+% \end{macrocode}
+% The \cs{textmath@setup} function is needed for embedded inline
+% math inside text inside a display.
+%
+% BRM: DS Experiment: Variant of \cs{display@setup} for use within
+% dseries environmnents
+% \begin{macrocode}
+\def\dseries@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
+ }%
+ \displaystyle
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\if@display}
+% \begin{macro}{\everydisplay}
+% The test \cs{ifinner} is unreliable for distinguishing
+% whether we are in a displayed formula or an inline formula: any display
+% more complex than a simple one-line equation typically involves the use
+% of \verb"$" \cs{displaystyle} \dots \verb"$" instead of
+% \dbldollars \dots \dbldollars . So we provide a more reliable
+% test. But it might have been provided already by the
+% \pkg{amsmath} package.
+% \begin{macrocode}
+\@ifundefined{@displaytrue}{%
+ \@xp\newif\csname if@display\endcsname
+ \everydisplay\@xp{\the\everydisplay \@displaytrue}%
+}{}
+% \end{macrocode}
+%
+% \begin{aside}
+% Is there any reason to maintain separate
+% \cs{everydisplay} and \cn{eqstyle}?
+%
+% \end{aside}
+%
+%
+% \end{macro}
+% \end{macro}
+%
+%
+%
+%
+% \section{The \env{dmath} and \env{dmath*} environments}
+%
+% Options for the \env{dmath} and \env{dmath*}
+% environments.
+% \begin{literalcode}
+% \begin{dmath}[label={xyz}]
+% \end{literalcode}
+% \begin{macrocode}
+\define@key{breqn}{label}{\def\next@label{\label{#1}}}
+\global\let\next@label\@empty
+% \end{macrocode}
+% Allow a variant number.
+% \begin{literalcode}
+% \begin{dmath}[number={\nref{foo}\textprime}]
+% \end{literalcode}
+% \begin{macrocode}
+\define@key{breqn}{number}{\def\eq@number{#1}%
+ \let\@currentlabel\eq@number
+}
+% \end{macrocode}
+% \begin{literalcode}
+% \begin{dmath}[shiftnumber]
+% \begin{dmath}[holdnumber]
+% \end{literalcode}
+% Holding or shifting the number.
+% \begin{macrocode}
+\define@key{breqn}{shiftnumber}{\let\eq@shiftnumber\@True}
+\define@key{breqn}{holdnumber}{\let\eq@holdnumber\@True}
+% \end{macrocode}
+% \begin{literalcode}
+% \begin{dmath}[density={.5}]
+% \end{literalcode}
+% \begin{macrocode}
+\define@key{breqn}{density}{\def\eq@density@factor{#1}}
+% \end{macrocode}
+% \begin{literalcode}
+% \begin{dmath}[indentstep={1em}]
+% \end{literalcode}
+% To change the amount of indent for post-initial lines. Note:
+% for lines that begin with a mathbin symbol there is a fixed amount of
+% indent already built in (\cs{eqbinoffset}) and it cannot be
+% reduced through this option. The indentstep amount is the indent
+% used for lines that begin with a mathrel symbol.
+% \begin{macrocode}
+\define@key{breqn}{indentstep}{\eqindentstep#1\relax}
+% \end{macrocode}
+% \begin{literalcode}
+% \begin{dmath}[compact]
+% \begin{dmath}[compact=-2000]
+% \end{literalcode}
+% To make mathrels stay inline to the extent possible, use the compact
+% option.
+% Can give a numeric value in the range $-10000 \dots 10000$
+% to adjust the behavior.
+% $-10000$: always break at a rel symbol; $10000$: never
+% break at a rel symbol.
+% \begin{macrocode}
+\define@key{breqn}{compact}[-99]{\prerelpenalty=#1\relax}
+% \end{macrocode}
+% \begin{literalcode}
+% \begin{dmath}[layout={S}]%
+% \end{literalcode}
+% Specify a particular layout.
+% We take care to ensure that \cs{eq@layout} ends up containing
+% one and only one letter.
+% \begin{macrocode}
+\define@key{breqn}{layout}[?]{%
+ \edef\eq@layout{\@car#1?\@nil}%
+}
+% \end{macrocode}
+% \begin{literalcode}
+% \begin{dmath}[spread={1pt}]
+% \end{literalcode}
+% To change the interline spacing in a particular equation.
+% \begin{macrocode}
+\define@key{breqn}{spread}{%
+ \addtolength\eqlinespacing{#1}%
+ \addtolength\eqlineskip{#1}%
+ \eqlineskiplimit\eqlineskip
+}
+% \end{macrocode}
+% To change the amount of space on the side for \dquoted{multline} layout.
+% \begin{macrocode}
+\define@key{breqn}{sidespace}{%
+ \setlength\eq@given@sidespace{#1}%
+}
+% \end{macrocode}
+% \begin{literalcode}
+% \begin{dmath}[style={\small}]
+% \end{literalcode}
+% The \opt{style} option is mainly intended for changing the
+% type size of an equation but as a matter of fact you could put arbitrary
+% \latex code here \mdash thus the option name is \quoted{style} rather
+% than just \quoted{typesize}. In order for this option to work when
+% setting options globally, we need to put the code in
+% \cs{eqstyle} rather than execute it directly.
+% \begin{macrocode}
+\define@key{breqn}{style}{\eqstyle\@xp{\the\eqstyle #1}}
+% \end{macrocode}
+% \begin{literalcode}
+% \begin{dmath}[frame]
+% \end{literalcode}
+% The \opt{frame} option merely puts a framebox around the body
+% of the equation. To change the thickness of the frame, give the
+% thickness as the argument of the option. For greater control, you
+% can change the appearance of the frame by redefining
+% \cs{eqframe}. It must be a command taking two arguments, the
+% width and height of the equation body. The top left corner of the
+% box produced by \cs{eqframe} will be pinned to the top-left corner
+% of the equation body.
+% \begin{macrocode}
+\define@key{breqn}{frame}[\fboxrule]{\def\eq@frame{T}%
+ \dim@a#1\relax\edef\eq@framewd{\the\dim@a}%
+% \end{macrocode}
+% Until such time as we provide a frame implementation that allows the
+% frame to stretch and shrink, we'd better remove any stretch/shrink from
+% the interline glue in this case.
+% \begin{macrocode}
+ \freeze@glue\eqlinespacing \freeze@glue\eqlineskip
+}
+\define@key{breqn}{fullframe}[]{\def\eq@frame{U}%
+ \freeze@glue\eqlinespacing \freeze@glue\eqlineskip
+}
+\def\eq@frame{F} % no frame
+\def\eq@framewd{\fboxrule}
+% \end{macrocode}
+% Wishful thinking?
+% \begin{literalcode}
+% \begin{dmath}[frame={width={2pt},color={blue},sep={2pt}}]
+% \end{literalcode}
+% To change the space between the frame and the equation there is a
+% framesep option.
+% \begin{macrocode}
+\define@key{breqn}{framesep}[\fboxsep]{%
+ \if\eq@frame F\def\eq@frame{T}\fi
+ \dim@a#1\relax \edef\eq@framesep{\the\dim@a}%
+ \freeze@glue\eqlinespacing \freeze@glue\eqlineskip
+}
+\def\eq@framesep{\fboxsep}
+% \end{macrocode}
+% \begin{literalcode}
+% \begin{dmath}[background={red}]
+% \end{literalcode}
+% Foreground and background colors for the equation. By default
+% the background area that is colored is the size of the equation, plus
+% fboxsep. If you need anything fancier for the background, you'd
+% better do it by defining \cs{eqframe} in terms of
+% \cs{colorbox} or \cs{fcolorbox}.
+% \begin{macrocode}
+\define@key{breqn}{background}{\def\eq@background{#1}%
+ \freeze@glue\eqlinespacing \freeze@glue\eqlineskip
+}
+% \end{macrocode}
+% \begin{literalcode}
+% \begin{dmath}[color={purple}]
+% \end{literalcode}
+% \begin{macrocode}
+\define@key{breqn}{color}{\def\eq@foreground{#1}}
+% \end{macrocode}
+% \begin{literalcode}
+% \begin{dmath}[center]
+% \begin{dmath}[nocenter]
+% \end{literalcode}
+% The \opt{center} option means add leftskip stretch to make the
+% individual lines be centered; this is the default for
+% \env{dseries}.
+% \begin{macrocode}
+\define@key{breqn}{center}[]{\let\eq@centerlines\@True}
+\define@key{breqn}{nocenter}[]{\let\eq@centerlines\@False}
+\let\eq@centerlines\@False
+% \end{macrocode}
+% \begin{literalcode}
+% \begin{dgroup}[noalign]
+% \end{literalcode}
+% Equation groups normally have alignment of the primary relation
+% symbols across the whole group. The \opt{noalign} option
+% switches that behavior.
+% \begin{macrocode}
+\define@key{breqn}{noalign}[]{\let\grp@aligned\@False}
+\let\grp@aligned\@True % default
+% \end{macrocode}
+% \begin{literalcode}
+% \begin{dgroup}[breakdepth={2}]
+% \end{literalcode}
+% Break depth of 2 means that breaks are allowed at mathbin symbols
+% inside two pairs of delimiters, but not three.
+% \begin{macrocode}
+\define@key{breqn}{breakdepth}{\eqbreakdepth#1\relax}
+% \end{macrocode}
+% \begin{literalcode}
+% \begin{darray}[cols={lcrlcr}]
+% \end{literalcode}
+% The \opt{cols} option only makes sense for the
+% \env{darray} environment but we liberally allow all the options to
+% be used with all the environments and just ignore any unsensible ones
+% that happen to come along.
+% \begin{macrocode}
+\define@key{breqn}{cols}{\global\let\@preamble\@empty
+ \darray@mkpream#1\@percentchar
+}
+% \end{macrocode}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% FORMAT STATUS%
+% \begin{verbatim}
+% \def\eq@frame{T}%
+% CLM works tolerably
+% \def\eqindent{C}\def\eqnumside{L}\def\eqnumplace{M}
+% CLT works tolerably
+% \def\eqindent{C}\def\eqnumside{L}\def\eqnumplace{T}
+% ILM
+% \def\eqindent{I}\def\eqnumside{L}\def\eqnumplace{M}\mathindent40\p@
+% ILT
+% \def\eqindent{I}\def\eqnumside{L}\def\eqnumplace{T}\mathindent40\p@
+% Indended w/left number
+% work ok if mathindent is larger than number width,
+% but then equations must fit into smaller space.
+% Is shiftnumber allowed to put eqn at left, instead of indent?
+% CRM
+% \def\eqindent{C}\def\eqnumside{R}\def\eqnumplace{M}
+% CRB
+% \def\eqindent{C}\def\eqnumside{R}\def\eqnumplace{B}
+% IRM
+% \def\eqindent{I}\def\eqnumside{R}\def\eqnumplace{M}\mathindent10\p@
+% IRB
+% \def\eqindent{I}\def\eqnumside{R}\def\eqnumplace{B}\mathindent10\p@
+% \end{verbatim}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% The main environments.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%BRM: The following incorporates several changes:
+%% 1) modifications supplied by MJD to fix the eaten \cs{paragraph} problem.
+%% 2) Added \cs{display@setup} here, rather than globally.
+%
+% \begin{macro}{\dmath}
+% \begin{macro}{\enddmath}
+% For the \env{dmath} environment we don't want the standard
+% optional arg processing because of the way it skips over whitespace,
+% including newline, while looking for the \verb"[" char; which is not good
+% for math material. So we call \cs{@optarg} instead.
+% \begin{macrocode}
+\newenvironment{dmath}{%
+ \let\eq@hasNumber\@True \@optarg\@dmath{}}{}
+\def\@dmath[#1]{%
+ \debugmsg{=== DMATH ==================================================}%
+ \everydisplay\expandafter{\the\everydisplay \display@setup}%
+ \if@noskipsec \leavevmode \fi
+ \if@inlabel \leavevmode \global\@inlabelfalse \fi
+ \if\eq@group\else\eq@prelim\fi
+ \setkeys{breqn}{#1}%
+ \the\eqstyle
+% \end{macrocode}
+% The equation number might have been overridden in \verb|#1|.
+% \begin{macrocode}
+ \eq@setnumber
+% \end{macrocode}
+% Start up the displayed equation by reading the contents into a
+% box register. Enclose this phase in an extra group so that
+% modified \cs{hsize} and other params will be auto-restored
+% afterwards.
+% \begin{macrocode}
+ \begingroup
+ \eq@setup@a
+ \eq@startup
+}
+% \end{macrocode}
+% Before it finishes off the box holding the equation body,
+% \cs{enddmath} needs to look ahead for punctuation (and
+% \cs{qed}?).
+% \begin{macrocode}
+\def\enddmath#1{\check@punct@or@qed}
+\def\end@dmath{%
+ \gdef\EQ@setwdL{}% Occasionally undefined ???
+ \eq@capture
+ \endgroup
+ \EQ@setwdL
+% \end{macrocode}
+% Measure (a copy of) the equation body to find the minimum width
+% required to get acceptable line breaks, how many lines will be required
+% at that width, and whether the equation number needs to be shifted to
+% avoid overlapping. This information will then be used by
+% \cs{eq@finish} to do the typesetting of the real equation body.
+% \begin{macrocode}
+ \eq@measure
+% \end{macrocode}
+% Piece together the equation from its constituents, recognizing
+% current constraints. If we are in an equation group, this might
+% just save the material on a stack for later processing.
+% \begin{macrocode}
+ \if\eq@group \grp@push \else \eq@finish\fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\dmath*}
+% \begin{macro}{\enddmath*}
+% Ah yes, now the lovely \env{dmath*} environment.
+% \begin{macrocode}
+\newenvironment{dmath*}{%
+ \let\eq@hasNumber\@False \@optarg\@dmath{}%
+}{}
+\@namedef{end@dmath*}{\end@dmath}
+\@namedef{enddmath*}#1{\check@punct@or@qed}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@prelim}
+% If \cs{everypar} has a non-null value, it's probably
+% some code from \cs{@afterheading} that sets \cs{clubpenalty}
+% and\slash or removes the parindent box. Both of those actions
+% are irrelevant and interfering for our purposes and need to be deflected
+% for the time being.
+% If an equation appears at the very beginning of a list item
+% (possibly from a trivlist such as \env{proof}), we need to
+% trigger the item label.
+% \begin{macrocode}
+\def\eq@prelim{%
+ \if@inlabel \indent \par \fi
+ \if@nobreak \global\@nobreakfalse \predisplaypenalty\@M \fi
+ \everypar\@emptytoks
+% \end{macrocode}
+% If for some reason \env{dmath} is called between paragraphs,
+% \cn{noindent} is better than \cn{leavevmode}, which would produce
+% an indent box and an empty line to hold it. If we are in a list
+% environment, \cn{par} is defined as \verb"{\@@par}" to preserve
+% \cs{parshape}.
+% \begin{macrocode}
+ \noindent
+ \eq@nulldisplay
+ \par %% \eq@saveparinfo %% needs work
+ \let\intertext\breqn@intertext
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\breqn@parshape@warning}
+% Warning message extracted to a separate function to streamline the
+% calling function.
+% \begin{macrocode}
+\def\breqn@parshape@warning{%
+ \PackageWarning{breqn}{%
+ Complex paragraph shape cannot be followed by this equation}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@prevshape}
+% Storage; see \cs{eq@saveparinfo}.
+% \begin{macrocode}
+\let\eq@prevshape\@empty
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@saveparinfo}
+% Save the number of lines and parshape info for the text preceding
+% the equation.
+% \begin{macrocode}
+\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
+ }%
+% \end{macrocode}
+% Maybe best to set \cs{eq@prevshape} the same in the else case
+% also. Better than nothing.
+% \begin{macrocode}
+ \else
+ \breqn@parshape@warning
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@setnumber}
+% If the current equation number is not explicitly given, then
+% use an auto-generated number, unless the no-number switch has been
+% thrown (\env{dmath*}).
+% \cs{theequation} is the number form to be used for all equations,
+% \cs{eq@number} is the actual value for the current equation
+% (might be an exception to the usual sequence).
+% \begin{macrocode}
+\def\eq@setnumber{%
+ \eq@wdNum\z@
+ \if\eq@hasNumber
+ \ifx\eq@number\@empty
+ \stepcounter{equation}\let\eq@number\theequation
+ \fi
+% \fi
+% \end{macrocode}
+ % This sets up numbox, etc, even if unnumbered?????
+% \begin{macrocode}
+ \ifx\eq@number\@empty
+ \else
+% \end{macrocode}
+% Put the number in a box so we can use its measurements in our
+% number-placement calculations. The extra braces around
+% \cs{eqnumform} make it possible for \cs{eqnumfont} to have
+% either an \cs{itshape} (recommended) or a \cs{textit}
+% value.
+% \begin{macrocode}
+ \debugmsg{Number \eq@number}%
+ \set@label{equation}\eq@number
+ \global\sbox\EQ@numbox{%
+ \next@label \global\let\next@label\@empty
+ \eqnumcolor\eqnumsize\eqnumfont{\eqnumform{\eq@number}}%
+ }%
+ \global\eq@wdNum\wd\EQ@numbox\global\advance\eq@wdNum\eqnumsep
+% \let\eq@hasNumber\@True % locally true
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\eq@finish}
+% The information available at this point from preliminary
+% measuring includes the number of lines required, the width of the
+% equation number, the total height of the equation body, and (most
+% important) the parshape spec that was used in determining height and
+% number of lines.
+%
+% Invoke the equation formatter for the requested centering/indentation
+% having worked out the best parshape.
+% BRM: This portion is extensively refactored to get common operations
+% together (so corrections get consistently applied).
+% \begin{macrocode}
+\def\eq@finish{%
+ \begingroup
+ \debugmsg{Formatting equation}%
+ \debug@showmeasurements
+ \if F\eq@frame\else
+ \freeze@glue\eqlinespacing \freeze@glue\eqlineskip
+ \fi
+% \eq@topspace{\vskip\parskip}% Set top spacing
+ \csname eq@\eqindent @setsides\endcsname % Compute \leftskip,\rightskip
+ \adjust@parshape\eq@parshape% Final adjustment of parshape for left|right skips
+ \eq@topspace{\vskip\parskip}% Set top spacing
+ \debug@showformat
+ % Now, invoke the appropriate typesetter according to number placement
+ \if\eq@hasNumber
+ \if\eq@shiftnumber
+ \csname eq@typeset@\eqnumside Shifted\endcsname
+ \else
+ \csname eq@typeset@\eqnumside\eqnumplace\endcsname
+ \fi
+ \else
+ \eq@typeset@Unnumbered
+ \fi
+ \endgroup
+ \eq@botspace
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%
+%
+% \section{Special processing for end-of-equation}
+%
+% At the end of a displayed equation environment we need to peek ahead
+% for two things: following punction such as period or command that
+% should be pulled in for inclusion at the end of the equation; and
+% possibly also an \verb"\end{proof}" with an implied \dquoted{qed}
+% symbol that is traditionally included at the end of the display rather
+% than typeset on a separate line.
+% We could require that the users type \cs{qed} explicitly at the
+% end of the display when they want to have the display take notice of it.
+% But the reason for doing that would only be to save work for the
+% programmer; the most natural document markup would allow an inline
+% equation and a displayed equation at the end of a proof to differ only
+% in the environment name:
+% \begin{literalcode}
+% ... \begin{math} ... \end{math}.
+% \end{proof}
+% \end{literalcode}
+% versus
+% \begin{literalcode}
+% ...
+% \begin{dmath}
+% ...
+% \end{dmath}.
+% \end{proof}
+% \end{literalcode}
+% .
+% The technical difficulties involved in supporting this markup within
+% \latex2e are, admittedly, nontrivial.
+% Nonetheless, let's see how far we can go.
+%
+%
+% The variations that we will support are only the most
+% straightforward ones:
+% \begin{literalcode}
+% \end{dmath}.
+% \end{proof}
+% \end{literalcode}
+% or
+% \begin{literalcode}
+% \end{dmath}.
+% Perhaps a comment
+% \end{proof}
+% \end{literalcode}
+% .
+% If there is anything more complicated than a space after the
+% period we will not attempt to scan any further for a possible
+% \verb"\end{proof}".
+% This includes material such as:
+% \begin{literalcode}
+% \begin{figure}...\end{figure}%
+% \footnote{...}
+% \renewcommand{\foo}{...}
+% \par
+% \end{literalcode}
+% or even a blank line\mdash because in \latex a blank line is
+% equivalent to \cs{par} and the meaning of \cs{par} is
+% \dquoted{end-paragraph}; in my opinion if explicit end-of-paragraph
+% markup is given before the end of an element, it has to be respected,
+% and the preceding paragraph has to be fully finished off before
+% proceeding further, even inside an element like \dquoted{proof} whose
+% end-element formatting requires integration with the end of the
+% paragraph text.
+% And \tex nically speaking, a \cs{par} token that comes from a
+% blank line and one that comes from the sequence of characters
+% \verb"\" \verb"p" \verb"a" \verb"r" are equally explicit.
+% I hope to add support for \cs{footnote} in the future, as it
+% seems to be a legitimate markup possibility in that context from a
+% purely logical point of view, but there are additional technical
+% complications if one wants to handle it in full generality
+% \begin{dn}
+% mjd,1999/02/08
+% \end{dn}
+% .
+%
+%
+% \begin{macro}{\peek@branch}
+%
+% This is a generalized \dquoted{look at next token and choose some action
+% based on it} function.
+% \begin{macrocode}
+\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}%
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\check@punct}
+%
+% For this one we need to recognize and grab for inclusion any of the
+% following tokens: \verb",;.!?", both catcode 12 (standard \latex
+% value) and catcode 13 (as might hold when the Babel package is
+% being used).
+% We do not support a space preceding the punctuation since that would
+% be considered simply invalid markup if a display-math environment were
+% demoted to in-line math; and we want to keep their markup as parallel as
+% possible.
+% If punctuation does not follow, then the \cs{check@qed} branch
+% is not applicable.
+% \begin{macrocode}
+\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
+ \fi\fi\fi\fi\fi
+}
+\xdef\check@punct@b{%
+ \the\toks@a\the\toks@b\the\toks@c
+}
+\endgroup
+% \end{macrocode}
+%
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+% For each environment ENV that takes an implied qed at the end, the
+% control sequence ENVqed must be defined; and it must include suitable
+% code to yield the desired results in a displayed equation.
+% \begin{macrocode}
+\def\check@qed@b#1#2{%
+ \@ifundefined{#2qed}{}{%
+ \toks@\@xp{\found@punct\csname#2qed\endcsname}%
+ \xdef\found@punct{\the\toks@}%
+ }%
+ \finish@end
+ \end{#2}%
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\latex@end}
+% \begin{macro}{\finish@end}
+% The lookahead for punctuation following a display requires
+% mucking about with the normal operation of \cn{end}. Although
+% this is not exactly something to be done lightly, on the other hand this
+% whole package is so over-the-top anyway, what's a little more
+% going to hurt? And rationalizing this aspect of
+% equation markup is a worthy cause. Here is the usual
+% definition of \cs{end}.
+% \begin{literalcode}
+% \def\end#1{
+% \csname end#1\endcsname \@checkend{#1}%
+% \expandafter\endgroup\if@endpe\@doendpe\fi
+% \if@ignore \global\@ignorefalse \ignorespaces \fi
+% }
+% \end{literalcode}
+% We can improve the chances of this code surviving through future
+% minor changes in the fundamental definition of \cs{end} by taking a
+% little care in saving the original meaning.
+% \begin{macrocode}
+\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}}%
+% \end{macrocode}
+% Why don't we call \cs{CheckCommand} here? Because that
+% doesn't help end users much; it works better to use it during package
+% testing by the maintainer.
+%
+%
+% If a particular environment needs to call a different end action, the
+% end command of the environment should be defined to gobble two args and
+% then call a function like \cs{check@punct@or@qed}.
+% \begin{macrocode}
+\def\check@punct@or@qed#1{%
+ \xdef\found@punct{\@empty}% BRM: punctuation was being remembered past this eqn.
+ \def\finish@end{\csname end@#1\endcsname\latex@end{#1}}%
+ \check@punct
+}
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\eqpunct}
+% User-settable function for handling
+% the punctuation at the end of an equation. You could, for example,
+% define it to just discard the punctuation.
+% \begin{macrocode}
+\newcommand\eqpunct[1]{\thinspace#1}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\set@label}
+% \cs{set@label} just sets \cs{@currentlabel} but it
+% takes the counter as an argument, in the hope that \latex will some
+% day provide an improved labeling system that includes type info on the
+% labels.
+% \begin{macrocode}
+\providecommand\set@label[2]{\protected@edef\@currentlabel{#2}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@topspace}
+% \begin{macro}{\eq@botspace}
+% The action of \cs{eq@topspace} is complicated by the
+% need to test whether the \quoted{short} versions of the display skips
+% should be used. This can be done only after the final parshape
+% and indent have been determined, so the calls of this function are
+% buried relatively deeply in the code by comparison to the calls of
+% \cs{eq@botspace}. This also allows us to optimize
+% slightly by setting the above-skip with \cs{parskip} instead of
+% \cs{vskip}. \verb|#1| is either \cs{noindent} or
+% \verb"\vskip\parskip".
+%
+% BRM: Hmm; we need to do *@setspace BEFORE this for small skips to work!
+% \begin{macrocode}
+\def\eq@topspace#1{%
+ \begingroup
+ \global\let\EQ@shortskips\@False
+ \if\@And{\eq@group}{\@Not\GRP@top}%
+ \parskip\intereqskip \penalty\intereqpenalty
+ \else
+ \eq@check@shortskip
+ \if\EQ@shortskips
+ \parskip\abovedisplayshortskip
+ \aftergroup\belowdisplayskip\aftergroup\belowdisplayshortskip
+% \end{macrocode}
+% BRM: Not exactly \TeX's approach, but seems right\ldots
+% \begin{macrocode}
+ \ifdim\predisplaysize>\z@\nointerlineskip\fi
+ \else
+ \parskip\abovedisplayskip
+ \fi
+ \fi
+ \if F\eq@frame
+ \else
+ \addtolength\parskip{\eq@framesep+\eq@framewd}%
+ \fi
+\debugmsg{Topspace: \theb@@le\EQ@shortskips, \parskip=\the\parskip, \predisplaysize=\the\predisplaysize}%
+ #1%
+ \endgroup
+}
+\def\eq@check@shortskip{%
+ \global\let\EQ@shortskips\@False
+ \setlength\dim@a{\abovedisplayskip+\ht\EQ@numbox}%
+ \addtolength\leftskip{-2em}% standard TeX value
+ \ifdim\leftskip<\predisplaysize
+ \else\if R\eqnumside \global\let\EQ@shortskips\@True
+ \else\if\eq@shiftnumber
+ \else\if T\eqnumplace
+ \ifdim\dim@a<\eq@firstht
+ \global\let\EQ@shortskips\@True
+ \fi
+ \else
+ \setlength\dim@b{\eq@vspan/2}%
+ \ifdim\dim@a<\dim@b
+ \global\let\EQ@shortskips\@True
+ \fi
+ \fi\fi\fi\fi
+}
+% \end{macrocode}
+%
+% At the end of an equation, need to put in a pagebreak penalty
+% and some vertical space. Also set some flags to remove parindent
+% and extra word space if the current paragraph text continues without an
+% intervening \cs{par}.
+% \begin{macrocode}
+\def\eq@botspace{%
+ \penalty\postdisplaypenalty
+% \end{macrocode}
+% Earlier calculations will have set \cs{belowdisplayskip} locally
+% to \cs{belowdisplayshortskip} if applicable. So we can just use
+% it here.
+% \begin{macrocode}
+ \if F\eq@frame
+ \else
+ \addtolength\belowdisplayskip{\eq@framesep+\eq@framewd}%
+ \fi
+ \vskip\belowdisplayskip
+ \@endpetrue % kill parindent if current paragraph continues
+ \global\@ignoretrue % ignore following spaces
+ \eq@resume@parshape
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@resume@parshape}
+% This should calculate the total height of the equation,
+% including space above and below, and set prevgraf to the number it would
+% be if that height were taken up by normally-spaced normal-height
+% lines. We also need to restore parshape if it had a non-null
+% value before the equation. Not implemented yet.
+% \begin{macrocode}
+\def\eq@resume@parshape{}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+%
+% \section{Preprocessing the equation body}
+% \begin{macro}{\eq@startup}
+% Here is the function that initially collects the equation
+% material in a box.
+%
+%
+% \begin{macrocode}
+\def\eq@startup{%
+ \global\let\EQ@hasLHS\@False
+ \setbox\z@\vbox\bgroup
+ \noindent \@@math \displaystyle
+ \penalty-\@Mi
+}
+% \end{macrocode}
+%
+% This setup defines the environment for the first typesetting
+% pass, note the \cs{hsize} value for example.
+% \begin{macrocode}
+\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
+% \end{macrocode}
+% Here it is better not to use \cs{@flushglue} (0pt
+% plus1fil) for \cs{rightskip}, or else a negative penalty
+% (such as $-99$ for \cs{prerelpenalty}) will tempt
+% \tex to use more line breaks than necessary in the first typesetting
+% pass. Ideal values for \cs{rightskip} and
+% \cs{linepenalty} are unclear to me, but they are rather sensitively
+% interdependent. Choice of 10000 pt for rightskip is derived by
+% saying, let's use a value smaller than 1 fil and smaller than
+% \cs{hsize}, but more than half of \cs{hsize} so that if a line
+% is nearly empty, the glue stretch factor will always be less than 2.0
+% and so the badness will be less than 100 and so \tex will not issue
+% badness warnings.
+% \begin{macrocode}
+ \linepenalty\@m
+ \rightskip\z@\@plus\@M\p@ \leftskip\z@skip \parfillskip\z@skip
+ \clubpenalty\@ne \widowpenalty\z@ \interlinepenalty\z@
+% \end{macrocode}
+% After a relation symbol is discovered, binop symbols should start
+% including a special offset space.
+% But until then \cs{EQ@prebin@space} is a no-op.
+% \begin{macrocode}
+ \global\let\EQ@prebin@space\relax
+% \end{macrocode}
+% Set binoppenalty and relpenalty high to prohibit line breaks
+% after mathbins and mathrels. As a matter of fact, the penalties are
+% then omitted by \tex , since bare glue without a penalty is
+% \emph{not} a valid breakpoint if it occurs within
+% mathon\ndash mathoff items.
+% \begin{macrocode}
+ \binoppenalty\@M \relpenalty\@M
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{figure}
+% \centering
+% The contents of an equation after the initial typesetting pass,
+% as shown by \cs{showlists}. This is the material on which the
+% \cs{eq@repack} function operates. The equation was
+% \begin{literalcode}
+% a=b +\left(\frac{c\sp 2}{2} -d\right) +(e -f) +g
+% \end{literalcode}
+% . The contents are shown in four parts in this figure and the next
+% three. The first part contains two line boxes, one for the mathon
+% node and one for the LHS.
+% \begin{literalcode}
+% \hbox(0.0+0.0)x16383.99998, glue set 1.6384
+% .\mathon
+% .\penalty -10000
+% .\glue(\rightskip) 0.0 plus 10000.0
+% \penalty 1
+% \glue(\baselineskip) 7.69446
+% \hbox(4.30554+0.0)x16383.99998, glue set 1.63759
+% .\OML/cmm/m/it/10 a
+% .\glue 2.77771 minus 1.11108
+% .\penalty -10001
+% .\glue(\rightskip) 0.0 plus 10000.0
+% \penalty 2
+% \glue(\lineskip) 1.0
+% ...
+% \end{literalcode}
+% \caption{Preliminary equation contents, part 1}
+% \end{figure}
+% \begin{figure}\centering
+% This is the first part of the RHS, up to the
+% \cs{right}, where a line break has been forced so that we can break
+% open the left-right box.
+% \begin{literalcode}
+% ...
+% \penalty 2
+% \glue(\lineskip) 1.0
+% \hbox(14.9051+9.50012)x16383.99998, glue set 1.63107
+% .\penalty -99
+% .\glue(\thickmuskip) 2.77771 minus 1.11108
+% .\OT1/cmr/m/n/10 =
+% .\glue(\thickmuskip) 2.77771 minus 1.11108
+% .\OML/cmm/m/it/10 b
+% .\penalty 888
+% .\glue -10.5553
+% .\rule(*+*)x0.0
+% .\penalty 10000
+% .\glue 10.5553
+% .\glue(\medmuskip) 2.22217 minus 1.66663
+% .\OT1/cmr/m/n/10 +
+% .\glue(\medmuskip) 2.22217 minus 1.66663
+% .\hbox(14.9051+9.50012)x43.36298
+% ..\hbox(0.39998+23.60025)x7.36115, shifted -14.10013
+% ...\OMX/cmex/m/n/5 \hat \hat R
+% ..\hbox(14.9051+6.85951)x11.21368
+% ...\hbox(14.9051+6.85951)x11.21368
+% ... [fraction contents, elided]
+% ..\penalty 5332
+% ..\glue -10.5553
+% ..\rule(*+*)x0.0
+% ..\penalty 10000
+% ..\glue 10.5553
+% ..\glue(\medmuskip) 2.22217 minus 1.66663
+% ..\OMS/cmsy/m/n/10 \hat \hat @
+% ..\glue(\medmuskip) 2.22217 minus 1.66663
+% ..\OML/cmm/m/it/10 d
+% ..\hbox(0.39998+23.60025)x7.36115, shifted -14.10013
+% ...\OMX/cmex/m/n/5 \hat \hat S
+% .\penalty -10000
+% .\glue(\rightskip) 0.0 plus 10000.0
+% \penalty 3
+% \glue(\lineskip) 1.0
+% ...
+% \end{literalcode}
+% \caption{Preliminary equation contents, part 2}
+% \end{figure}
+%
+% \begin{figure}
+% \centering
+% This is the remainder of the RHS after the post-\cs{right}
+% split.
+% \begin{literalcode}
+% ...
+% \penalty 3
+% \glue(\lineskip) 1.0
+% \hbox(7.5+2.5)x16383.99998, glue set 1.63239
+% .\penalty 888
+% .\glue -10.5553
+% .\rule(*+*)x0.0
+% .\penalty 10000
+% .\glue 10.5553
+% .\glue(\medmuskip) 2.22217 minus 1.66663
+% .\OT1/cmr/m/n/10 +
+% .\glue(\medmuskip) 2.22217 minus 1.66663
+% .\OT1/cmr/m/n/10 (
+% .\OML/cmm/m/it/10 e
+% .\penalty 5332
+% .\glue -10.5553
+% .\rule(*+*)x0.0
+% .\penalty 10000
+% .\glue 10.5553
+% .\glue(\medmuskip) 2.22217 minus 1.66663
+% .\OMS/cmsy/m/n/10 \hat \hat @
+% .\glue(\medmuskip) 2.22217 minus 1.66663
+% .\OML/cmm/m/it/10 f
+% .\kern1.0764
+% .\OT1/cmr/m/n/10 )
+% .\penalty 888
+% .\glue -10.5553
+% .\rule(*+*)x0.0
+% .\penalty 10000
+% .\glue 10.5553
+% .\glue(\medmuskip) 2.22217 minus 1.66663
+% .\OT1/cmr/m/n/10 +
+% .\glue(\medmuskip) 2.22217 minus 1.66663
+% .\OML/cmm/m/it/10 g
+% .\kern0.35878
+% .\penalty -10000
+% .\glue(\rightskip) 0.0 plus 10000.0
+% \glue(\baselineskip) 9.5
+% ...
+% \end{literalcode}
+% \caption{Preliminary equation contents, part 3}
+% \end{figure}
+%
+% \begin{figure}
+% \centering
+% This is the mathoff fragment.
+% \begin{literalcode}
+% ...
+% \glue(\baselineskip) 9.5
+% \hbox(0.0+0.0)x16383.99998, glue set 1.6384
+% .\mathoff
+% .\penalty 10000
+% .\glue(\parfillskip) 0.0
+% .\glue(\rightskip) 0.0 plus 10000.0
+% \end{literalcode}
+% \caption{Preliminary equation contents, part 4}
+% \end{figure}
+%
+% \begin{macro}{\eq@capture}
+% \begin{macro}{\eq@punct}
+% If an equation ends with a \cs{right} delim, the last thing
+% on the math list will be a force-break penalty. Then don't
+% redundantly add another forcing penalty. (question: when does a
+% penalty after a linebreak not disappear? Answer: when you have
+% two forced break penalties in a row). Ending punctuation, if
+% any, goes into the last box with the mathoff kern. If the math list
+% ends with a slanted letter, then there will be an italic correction
+% added after it by \tex . Should we remove it? I guess
+% so.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Capturing the equation
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% BRM: There's a problem here (or with \cs{ss@scan}). If the LHS has
+% \cs{left} \cs{right} pairs, \ss@scan gets involved. It seems to produce
+% a separate box marked w/\cs{penalty} 3. But it appears that \cs{eq@repack}
+% is only expecting a single box for the LHS; when it measures that
+% box it's missing the (typically larger) bracketted section,
+% so the LHS is measured => 0pt (or very small).
+% I'm not entirely clear what Michael had in mind for this case;
+% whether it's an oversight, or whether I've introduced some other bug.
+% At any rate, my solution is to measure the RHS (accumulated in \cs{EQ@box}),
+% at the time of the relation, and subtract that from the total size.
+% \begin{macrocode}
+\newdimen\eq@wdR\eq@wdR\z@%BRM
+\def\eq@capture{%
+ \ifnum\lastpenalty>-\@M \penalty-\@Mi \fi
+% \end{macrocode}
+% We want to keep the mathoff kern from vanishing at the line break,
+% so that we can reuse it later.
+% \begin{macrocode}
+ \keep@glue\@@endmath
+ \eq@addpunct
+ \@@par
+ \eq@wdL\z@
+% \end{macrocode}
+% First snip the last box, which contains the mathoff node, and put it
+% into \cs{EQ@box}. Then when we call \cs{eq@repack} it
+% will recurse properly.
+% \begin{macrocode}
+ \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@
+%\batchmode\showboxbreadth\maxdimen\showboxdepth99\showlists\errorstopmode
+ \eq@wdR\z@%BRM: eq@wdL patch
+ \eq@repack % recursive
+% \end{macrocode}
+% Finally, add the mathon item to \cs{EQ@box} and \cs{EQ@copy}.
+% \begin{macrocode}
+ \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}%
+%\batchmode\showbox\EQ@copy \showthe\eq@wdL\errorstopmode
+ \ifdim\eq@wdR>\z@% BRM: eq@wdL patch
+ \setlength\dim@a{\wd\EQ@box-\eq@wdR
+ % Apparently missing a \thickmuskip = 5mu = 5/18em=0.27777777777.. ?
+ + 0.2777777777777em}% FUDGE??!?!?!
+ \ifdim\dim@a>\eq@wdL
+ \debugmsg{Correcting LHS from \the\eq@wdL\space to \the\dim@a = \the\wd\EQ@box - \the\eq@wdR}%
+ \eq@wdL\dim@a
+ \xdef\EQ@setwdL{\eq@wdL\the\eq@wdL\relax}%
+ \fi
+ \fi
+ \debugmsg{Capture: total length=\the\wd\EQ@box
+ ^^J||===== has LHS=\theb@@le\EQ@hasLHS, \eq@wdL=\the\eq@wdL, \eq@wdR=\the\eq@wdR,
+ ^^J||===== \eq@wdCond=\the\eq@wdCond}%
+ \egroup % end vbox started earlier
+%\debugwr{EQ@box}\debug@box\EQ@box
+%\debugwr{EQ@copy}\debug@box\EQ@copy
+}
+% \end{macrocode}
+% Now we have two copies of the equation, one in \cs{EQ@box},
+% and one in \cs{EQ@copy} with inconvenient stuff like inserts and
+% marks omitted.
+%
+% \cs{eq@addpunct} is for tacking on text punctuation at the end
+% of a display, if any was captured by the \quoted{gp} lookahead.
+% \begin{macrocode}
+\def\eq@addpunct{%
+ \ifx\found@punct\@empty
+ \else \eqpunct{\found@punct}%
+ \fi
+ % BRM: Added; the punctuation kept getting carried to following environs
+ \xdef\found@punct{\@empty}%
+ \EQ@afterspace
+}
+% \end{macrocode}
+% Needed for the \env{dseries} environment, among other things.
+% \begin{macrocode}
+\global\let\EQ@afterspace\@empty
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\eq@repack}
+% The \cs{eq@repack} function looks at the information at hand
+% and proceeds accordingly.
+%
+% TeX Note: this scans BACKWARDS from the end of the math.
+% \begin{macrocode}
+\def\eq@repack{%
+% A previous penalty of 3 on the vertical list means that we need
+% to break open a left-right box.
+% \begin{macrocode}
+ \ifcase\lastpenalty
+ % case 0: normal case
+ \setbox\tw@\lastbox
+ \eq@repacka\EQ@copy \eq@repacka\EQ@box
+ \unskip
+ \or % case 1: finished recursing
+% \end{macrocode}
+% Grab the mathon object since we need it to inhibit line breaking at
+% bare glue nodes later.
+% \begin{macrocode}
+ \unpenalty
+ \setbox\tw@\lastbox
+ \eq@repacka\EQ@copy \eq@repacka\EQ@box
+ \@xp\@gobble
+ \or % case 2: save box width = LHS width
+% \end{macrocode}
+% Don't need to set \cs{EQ@hasLHS} here because it was set earlier
+% if applicable.
+% \begin{macrocode}
+ \unpenalty
+ \setbox\tw@\lastbox
+ \setbox\z@\copy\tw@ \setbox\z@\hbox{\unhbox\z@\unskip\unpenalty}%
+ \addtolength\eq@wdL{\wd\z@}
+ \setlength\eq@wdR{\wd\EQ@box}% BRM: eq@wdL patch
+ \xdef\EQ@setwdL{\eq@wdL\the\eq@wdL\relax}%
+% \end{macrocode}
+% At this point, box 2 typically ends with
+% \begin{literalcode}
+% .\mi10 a
+% .\glue 2.77771 plus 2.77771
+% .\penalty -10001
+% .\glue(\rightskip) 0.0 plus 10000.0
+% \end{literalcode}
+% and we want to ensure that the thickmuskip glue gets removed.
+% And we now arrange for \cs{EQ@copy} and \cs{EQ@box} to
+% keep the LHS in a separate subbox; this is so that we can introduce a
+% different penalty before the first relation symbol if necessary,
+% depending on the layout decisions that are made later.
+% \begin{macrocode}
+ \global\setbox\EQ@copy\hbox{%
+ \hbox{\unhcopy\tw@\unskip\unpenalty\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
+}
+% \end{macrocode}
+% Error message extracted to streamline calling function.
+% \begin{macrocode}
+\def\breqn@repack@err{%
+ \PackageError{breqn}{eq@repack penalty neq 0,1,2,3}\relax
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@repacka}
+% We need to transfer each line into two separate boxes, one
+% containing everything and one that omits stuff like \cs{insert}s
+% that would interfere with measuring.
+% \begin{macrocode}
+\def\eq@repacka#1{%
+ \global\setbox#1\hbox{\unhcopy\tw@ \unskip
+ \count@-\lastpenalty
+ \ifnum\count@<\@M \else \advance\count@-\@M \fi
+ \unpenalty
+% \end{macrocode}
+% If creating the measure copy, ignore all cases above case 3 by
+% folding them into case 1.
+% \begin{macrocode}
+ \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}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@nulldisplay}
+% Throw in a null display in order to get predisplaysize \etc .
+% My original approach here was to start the null display, then measure
+% the equation, and set a phantom of the equation's first line before
+% ending the null display. That would allow finding out if \tex used
+% the short displayskips instead of the normal ones. But because of
+% some complications with grouping and the desirability of omitting
+% unnecessary invisible material on the vertical list, it seems better to
+% just collect information about the display (getting \cs{prevdepth}
+% requires \cs{halign}) and manually perform our own version of
+% \TeX's shortskip calculations. This approach also gives greater
+% control, \eg , the threshold amount of horizontal space between
+% predisplaysize and the equation's left edge that determines when the
+% short skips kick in becomes a designer-settable parameter rather than
+% hardwired into \TeX .
+% \begin{macrocode}
+\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
+% \end{macrocode}
+% Not sure how best to test whether leftmargin should be
+% added. Let's do this for now [mjd,1997/10/08].
+% \begin{macrocode}
+ \ifdim\displayindent>\z@
+ \advance\listwidth\the\leftmargin
+ \advance\listwidth\the\rightmargin
+ \fi
+ \relax}%
+% \end{macrocode}
+% An \cs{halign} containing only one \cs{cr} (for the
+% preamble) puts no box on the vertical list, which means that no
+% \cs{baselineskip} will be added (so we didn't need to set it to
+% zero) and the previous value of prevdepth carries through. Those
+% properties do not hold for an empty simple equation without
+% \cs{halign}.
+% \begin{macrocode}
+ \halign{##\cr}%
+ \@@enddisplay
+ \par
+ \endgroup
+ \EQ@displayinfo
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@newline}
+% \begin{macro}{\eq@newlinea}
+% \begin{macro}{\eq@newlineb}
+% Here we use \cs{@ifnext} so that in a sequence like
+% \begin{literalcode}
+% ...\\
+% [a,b]
+% \end{literalcode}
+% \latex does not attempt to interpret the \verb"[a,b]" as a
+% vertical space amount. We would have used \cs{eq@break} in the
+% definition of \cs{eq@newlineb} except that it puts in a
+% \cs{keep@glue} object which is not such a good idea if a mathbin
+% symbol follows \mdash the indent of the mathbin will be wrong because
+% the leading negative glue will not disappear as it should at the line
+% break.
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@revspace}
+% \begin{macro}{\eq@revspaceb}
+% When \cs{eq@revspace} (re-vspace) is called, we are the
+% end of an equation line; we need to remove the existing penalty of
+% $-10002$ in order to put a vadjust object in front of it, then put
+% back the penalty so that the line break will still take place in the
+% final result.
+% \begin{macrocode}
+\def\eq@revspace{%
+ \global\setbox\EQ@vimbox\vbox{\unvbox\EQ@vimbox
+ \unpenalty
+ \global\setbox\@ne\lastbox}%
+ \@@vadjust{\unvbox\@ne}%
+ \penalty-\@M
+}
+% \end{macrocode}
+% The b version is used for the \cs{EQ@copy} box.
+% \begin{macrocode}
+\def\eq@revspaceb{%
+ \global\setbox\EQ@vimcopy\vbox{\unvbox\EQ@vimcopy
+ \unpenalty
+ \global\setbox\@ne\lastbox}%
+ \@@vadjust{\unvbox\@ne}%
+ \penalty-\@M
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@break}
+% The function \cs{eq@break} does a preliminary linebreak with
+% a flag penalty.
+% \begin{macrocode}
+\def\eq@break#1{\penalty-1000#1 \keep@glue}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+%
+% \section{Choosing optimal line breaks}
+% The question of what line width to use when breaking an
+% equation into several lines is best examined in the light of an extreme
+% example. Suppose we have a two-column layout and a displayed
+% equation falls inside a second-level list with nonzero leftmargin and
+% rightmargin. Then we want to try in succession a number of
+% different possibilities. In each case if the next possibility is
+% no wider than the previous one, skip ahead to the one after.
+% \begin{enumerate}
+% \item First try linewidth(2), the linewidth for the current
+% level-2 list.
+%
+%
+% \item If we cannot find adequate linebreaks at that width, next try
+% listwidth(2), the sum of leftmargin, linewidth, and rightmargin for
+% the current list.
+%
+%
+% \item If we cannot find linebreaks at that width, next try linewidth
+% (1) (skipping this step if it is no larger then
+% listwidth(2)).
+%
+%
+% \item If we cannot find linebreaks at that width, next try
+% listwidth(1).
+%
+%
+% \item If we cannot find linebreaks at that width, next try column
+% width.
+%
+%
+% \item If we cannot find linebreaks at that width, next try text
+% width.
+%
+%
+% \item If we cannot find linebreaks at that width, next try equation
+% width, if it exceeds text width (\ie , if the style allows equations
+% to extend into the margins).
+%
+%
+% \end{enumerate}
+%
+%
+% \begin{figure}
+% \centering
+% needs work
+% \caption{first-approximation parshape for equations}\label{f:parshape-1}
+% \end{figure}
+%
+% At any given line width, we run through a series of parshape
+% trials and, essentially, use the first one that gives decent line
+% breaks.
+% But the process is a bit more complicated in fact.
+% In order to do a really good job of setting up the parshapes, we
+% need to know how many lines the equation will require.
+% And of course the number of lines needed depends on the parshape!
+% So as our very first trial we run a simple first-approximation
+% parshape (Figure~\ref{f:parshape-1}) whose
+% main purpose is to get an estimate on the number of lines that will be
+% needed; it chooses a uniform indent for all lines after the first one
+% and does not take any account of the equation number.
+% A substantial majority of equations only require one line anyway,
+% and for them this first trial will succeed.
+% In the one-line case if there is an equation number and it doesn't
+% fit on the same line as the equation body, we don't go on to other
+% trials because breaking up the equation body will not gain us
+% anything\mdash we know that we'll have to use two lines in any case
+% \mdash so we might as well keep the equation body together on one line
+% and shift the number to a separate line.
+%
+% If we learn from the first trial that the equation body
+% requires more than one line, the next parshape trial involves adjusting
+% the previous parshape to leave room for the equation number, if
+% present. If no number is present, again no further trials are
+% needed.
+%
+% Some remarks about parshape handling. The \tex
+% primitive doesn't store the line specs anywhere, \verb"\the\parshape"
+% only returns the number of line specs. This makes it well nigh
+% impossible for different packages that use \cs{parshape} to work
+% together. Not that it would be terribly easy for the package
+% authors to make inter-package collaboration work, if it were
+% possible. If we optimistically conjecture that
+% someone some day may take on such a task, then the thing to do,
+% obviously, is provide a parshape interface that includes a record of all
+% the line specs. For that we designate a macro \cs{@parshape}
+% which includes not only the line specs, but also the line count and even
+% the leading \cs{parshape} token.
+% This allows it to be directly executed without an auxiliary if-empty
+% test. It should include a trailing \cs{relax} when it has a
+% nonempty value.
+% \begin{macrocode}
+\let\@parshape\@empty
+% \end{macrocode}
+%
+%
+% The function \cs{eq@measure} runs line-breaking trials
+% on the copy of the equation body that is stored in the box register
+% \cs{EQ@copy}, trying various possible layouts in order of
+% preference until we get successful line breaks, where \quoted{successful}
+% means there were no overfull lines. The result of the trials is,
+% first, a parshape spec that can be used for typesetting the real
+% equation body in \cs{EQ@box}, and second, some information that
+% depends on the line breaks such as the depth of the last line, the
+% height of the first line, and positioning information for the equation
+% number. The two main variables in the equation layout are the line
+% width and the placement of the equation number, if one is present.
+%
+%
+% \begin{macro}{\eq@measure}
+% Run linebreak trials on the equation contents and measure the
+% results.
+% \begin{macrocode}
+\def\eq@measure{%
+% \end{macrocode}
+% If an override value is given for indentstep in the env options, use
+% it.
+% \begin{macrocode}
+ \ifdim\eq@indentstep=\maxdimen \eq@indentstep\eqindentstep \fi
+% \end{macrocode}
+% If \cs{eq@linewidth} is nonzero at this point, it means that
+% the user specified a particular target width for this equation.
+% In that case we override the normal list of trial widths.
+% \begin{macrocode}
+ \ifdim\eq@linewidth=\z@ \else \edef\eq@linewidths{{\the\eq@linewidth}}\fi
+ \begingroup \eq@params
+ \leftskip\z@skip
+% \end{macrocode}
+% Even if \cs{hfuzz} is greater than zero a box whose contents
+% exceed the target width by less then hfuzz still has a reported badness
+% value of 1000000 (infinitely bad). Because we use inf-bad
+% to test whether a particular trial succeeds or fails, we want to make
+% such boxes return a smaller badness. To this end we include an
+% \cs{hfuzz} allowance in \cs{rightskip}. In fact,
+% \cs{eq@params} ensures that \cs{hfuzz} for equations is at
+% least 1pt.
+% \begin{macrocode}
+ \rightskip\z@\@plus\columnwidth\@minus\hfuzz
+% \eqinfo
+ \global\EQ@continue{\eq@trial}%
+ \eq@trial % uses \eq@linewidths
+ \eq@failout % will be a no-op if the trial succeeded
+ \endgroup
+% \end{macrocode}
+% \quoted{local} parameter settings are passed outside the endgroup through
+% \cs{EQ@trial}.
+% \begin{macrocode}
+ \EQ@trial
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\def\debug@showmeasurements{%
+ \debugmsg{=> \number\eq@lines\space lines}%
+ \debug
+ \def\@elt##1^^J##2{^^J||===== \space\space##1/##2}%
+ \let\@endelt\@empty
+ \debugmsg{=> trial info:\eq@measurements}%
+ \debugmsg{=> bounding box: \the\eq@wdT x\the\eq@vspan, badness=\the\eq@badness}%
+ \let\@elt\relax \let\@endelt\relax
+ \gubed
+}
+\def\debug@showmeasurements{%
+ \begingroup
+ \def\@elt##1^^J##2{^^J||===== ##1/##2}%
+ \let\@endelt\@empty
+ \debugmsg{===> Measurements: \number\eq@lines\space lines
+ \eq@measurements
+ ^^J||===== bounding box: \the\eq@wdT x\the\eq@vspan, badness=\the\eq@badness
+ ^^J||===== \leftskip=\the\leftskip, \rightskip=\the\rightskip}%
+ \endgroup
+}
+% \end{macrocode}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Layout Trials Driver
+% Basically, trying different sequences of parshapes.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \begin{macro}{\EQ@trial}
+% Init.
+% \begin{macrocode}
+\let\EQ@trial\@empty
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\EQ@continue}
+% This is a token register used to carry trial info past a
+% group boundary with only one global assignment.
+% \begin{macrocode}
+\newtoks\EQ@continue
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\EQ@widths}
+% This is used for storing the actual line-width info of the equation
+% contents after breaking.
+% \begin{macrocode}
+\let\EQ@widths\@empty
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\EQ@fallback}
+% \begin{macrocode}
+\let\EQ@fallback\@empty
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\eq@linewidths}
+% This is the list of target widths for line breaking.
+%
+%========================================
+% BRM: Odd; I don't think I've seen this use anything but \cs{displaywidth}...
+% \begin{macrocode}
+\def\eq@linewidths{\displaywidth\linewidth\columnwidth}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@trial}
+%
+% The \cs{eq@trial} function tries each candidate
+% line width in \cs{eq@linewidths} until an equation layout is found
+% that yields satisfactory line breaks.
+% \begin{macrocode}
+\def\eq@trial{%
+ \ifx\@empty\eq@linewidths
+ \global\EQ@continue{}%
+ \else
+ \iffalse{\fi \@xp\eq@trial@a \eq@linewidths}%
+ \fi
+ \the\EQ@continue
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@trial@a}
+% The \cs{eq@trial@a} function reads the leading line
+% width from \cs{eq@linewidths}; if the new line width is greater
+% than the previous one, start running trials with it; otherwise do
+% nothing with it.
+% Finally, run a peculiar \cs{edef} that leaves
+% \cs{eq@linewidths} redefined to be the tail of the list.
+% If we succeed in finding satisfactory line breaks
+% for the equation, we will reset \cs{EQ@continue} in such a
+% way that it will terminate the current trials.
+% An obvious branch here would be to check whether the width of
+% \cs{EQ@copy} is less than \cs{eq@linewidth} and go immediately
+% to the one-line case if so.
+% However, if the equation contains more than one RHS, by
+% default each additional RHS starts on a new line\mdash \ie , we want
+% the ladder layout anyway.
+% So we choose the initial trial on an assumption of multiple lines
+% and leave the one-line case to fall out naturally at a later point.
+% \begin{macrocode}
+\def\eq@trial@a#1{%
+ \dim@c#1\relax
+ \if T\eq@frame \eq@frame@adjust\dim@c \fi
+ \ifdim\dim@c>\eq@linewidth
+ \eq@linewidth\dim@c
+ \debugmsg{Choose Shape for width(#1)=\the\eq@linewidth}%
+ \let\eq@trial@b\eq@trial@d
+ \csname eq@try@layout@\eq@layout\endcsname
+ \else
+ \debugmsg{Next width (#1) is shorter; skip it}%
+ \fi
+ \edef\eq@linewidths{\iffalse}\fi
+}
+\def\eq@frame@adjust#1{%
+ \addtolength#1{-2\eq@framewd-2\eq@framesep}%
+}
+% \end{macrocode}
+% \end{macro}
+%========================================
+% Note curious control structure.
+% Try to understand interaction of \cs{EQ@fallback}, \cs{EQ@continue},
+% \cs{eq@failout}
+% \begin{macrocode}
+\def\eq@trial@succeed{%
+ \aftergroup\@gobbletwo % cancel the \EQ@fallback code; see \eq@trial@c (?)
+ \global\EQ@continue{\eq@trial@done}%
+}
+% \end{macrocode}
+% \begin{macro}{\eq@trial@done}
+% Success.
+% \begin{macrocode}
+\def\eq@trial@done{%
+ \debugmsg{End trial: Success!}%
+ \let\eq@failout\relax
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\eq@trial@init}
+% This is called from \cs{eq@trial@b} to initialize or
+% re-initialize certain variables as needed when running one or more
+% trials at a given line width.
+% By default assume success, skip the fallback code.
+% \begin{macrocode}
+\def\eq@trial@init{\global\let\EQ@fallback\eq@nextlayout}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\eq@nextlayout}
+%
+% In the fallback case cancel the current group to avoid unnecessary
+% group nesting (with associated save-stack cost, \etc ).
+% \begin{macrocode}
+\def\eq@nextlayout#1{%
+ \endgroup
+ \debugmsg{Nope ... that ain't gonna work.}%
+ \begingroup #1%
+}
+% \end{macrocode}
+%
+% \end{macro}
+% \begin{macro}{\eq@failout}
+%
+% .
+% \begin{macrocode}
+\def\eq@failout{%
+\debugmsg{End trial: failout}%
+ \global\let\EQ@trial\EQ@last@trial
+}
+% \end{macrocode}
+%
+% \end{macro}
+% \begin{macro}{\eq@trial@save}
+%
+% Save the parameters of the current trial.
+% \begin{macrocode}
+\def\eq@trial@save#1{%
+% \debug \def\@elt##1^^J##2{^^J||===== \space\space##1/##2}\let\@endelt\@empty\debugmsg{=> trial info:\eq@measurements}%
+% \debugmsg{=> bounding box: \the\eq@wdT x\the\eq@vspan, badness=\the\eq@badness^^J}%
+% \let\@elt\relax \let\@endelt\relax
+% \gubed
+ \xdef#1{%
+ \eq@linewidth\the\eq@linewidth
+ % save info about the fit
+ \eq@lines\the\eq@lines \eq@badness\the\eq@badness \def\@nx\eq@badline{\eq@badline}%
+ % save size info
+ \eq@wdT\the\eq@wdT \eq@wdMin\the\eq@wdMin
+ \eq@vspan\the\eq@vspan \eq@dp\the\eq@dp \eq@firstht\the\eq@firstht
+ % save info about the LHS
+ \eq@wdL\the\eq@wdL \def\@nx\EQ@hasLHS{\EQ@hasLHS}%
+ % save info about the numbering
+ \def\@nx\eq@hasNumber{\eq@hasNumber}%
+ % save info about the chosen layout
+ \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\@nx\eq@isIntertext{\@False}%
+ }%
+}
+% \end{macrocode}
+%
+% \end{macro}
+% \begin{macro}{\eq@trial@b}
+%
+% By default this just runs \cs{eq@trial@c}; \cf
+% \cs{eq@trial@d}.
+% \begin{macrocode}
+\def\eq@trial@b{\eq@trial@c}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@trial@c}
+%
+% Run the equation contents through the current parshape.
+% \begin{macrocode}
+\def\eq@trial@c#1#2{%
+ \debugmsg{Trying layout "#1" with^^J||===== parshape\space\@xp\@gobble\@parshape}%
+ \begingroup
+ \eq@trial@init
+ \def\eq@layout{#1}%
+ \setbox\z@\vbox{%
+ \hfuzz\maxdimen
+ \eq@trial@p % run the given parshape
+ \if\@Not{\eq@badline}%
+ \eq@trial@save\EQ@trial
+% \end{macrocode}
+% If there is a number, try the same parshape again with adjustments
+% to make room for the number.
+%
+% This is an awkward place for this:
+% It only allows trying to fit the number w/the SAME layout shape!
+% \begin{macrocode}
+ \if\eq@hasNumber\eq@retry@with@number\fi
+ \if L\eq@layout \eq@check@density
+ \else
+ \if\@Not{\eq@badline}%
+ \eq@trial@succeed
+ \fi
+ \fi
+ \else
+ \eq@trial@save\EQ@last@trial
+ \fi
+ }%
+ \EQ@fallback{#2}%
+ \endgroup
+}
+% \end{macrocode}
+%
+% \end{macro}
+% \begin{macro}{\eq@trial@d}
+% \begin{macrocode}
+\def\eq@trial@d#1#2{\eq@trial@c{#1}{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\eq@check@density}
+%
+% \begin{macrocode}
+\def\eq@check@density{%
+ \debugmsg{Checking density for layout L}%
+ \if\@Or{\@Not\EQ@hasLHS}{\eq@shortLHS}%
+ \debugmsg{Density check: No LHS, or is short; OK}%
+ \eq@trial@succeed
+ \else\if\eq@dense@enough
+ \eq@trial@succeed
+ \fi\fi
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\eq@shortLHS}
+%
+% Test to see if we need to apply the \cs{eq@dense@enough} test.
+% \begin{macrocode}
+\def\eq@shortLHS{\ifdim\eq@wdL>.44\eq@wdT 1\else 0\fi 0}
+% \end{macrocode}
+%
+% \end{macro}
+%\verb|\def\eq@shortLHS{\@False}|
+%========================================
+% \begin{macro}{\eq@trial@p}
+% Run a trial with the current \cs{@parshape} and measure it.
+% \begin{macrocode}
+\def\eq@trial@p{%
+ \@parshape %
+ \eq@dump@box\unhcopy\EQ@copy
+ {\@@par}% leave \parshape readable
+ \eq@lines\prevgraf
+ \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
+ \debug@showmeasurements
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\adjust@rel@penalty}
+%
+% Normally this is a no-op.
+% \begin{macrocode}
+\let\adjust@rel@penalty\@empty
+% \end{macrocode}
+%
+% \end{macro}
+% \begin{macro}{\eq@fix@lastline}
+% Remove parfillskip from the last line box.
+% \begin{macrocode}
+\def\eq@fix@lastline{%
+ \setbox\tw@\lastbox \dim@b\wd\tw@
+ \eq@dp\dp\tw@
+% \end{macrocode}
+% Remove \cs{parfillskip} but retain \cs{rightskip}.
+% Need to keep the original line width for later shrink testing.
+% \begin{macrocode}
+ \nointerlineskip\hbox to\dim@b{\unhbox\tw@
+ \skip@c\lastskip \unskip\unskip\hskip\skip@c
+ }%
+}
+% \end{macrocode}
+%
+% \end{macro}
+% \begin{macro}{\eq@recalc}
+%
+% Calculate \cs{eq@wdT} et cetera.
+% \begin{macrocode}
+\def\eq@recalc{%
+ \eq@wdT\z@ \eq@wdMin\maxdimen \eq@vspan\z@skip \eq@badness\z@
+ \let\@elt\eq@recalc@a \eq@measurements \let\@elt\relax
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@recalc@a}
+%
+% \begin{macrocode}
+\def\eq@recalc@a#1x#2+#3\@endelt{%
+ \eq@firstht#2\relax
+ \let\@elt\eq@recalc@b
+ \@elt#1x#2+#3\@endelt
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@recalc@b}
+%
+% \begin{macrocode}
+\def\eq@recalc@b#1^^J#2,#3x#4+#5@#6\@endelt{%
+ \setlength\dim@a{#2+#3}%
+ \ifdim\dim@a>\eq@wdT \eq@wdT\dim@a \fi
+ \ifdim\dim@a<\eq@wdMin \eq@wdMin\dim@a \fi
+ \eq@dp#5\relax
+ \addtolength\eq@vspan{#1+#4+#5}%
+% \end{macrocode}
+% Record the max badness of all the lines in \cs{eq@badness}.
+% \begin{macrocode}
+ \ifnum#6>\eq@badness \eq@badness#6\relax\fi
+}
+% \end{macrocode}
+%
+% \end{macro}
+% \begin{macro}{\eq@layout}
+%
+% A value of \verb"?" for \cs{eq@layout} means that we should
+% deduce which layout to use by looking at the size of the components.
+% Any other value means we have a user-specified override on the
+% layout.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Layout Definitions.
+% Based on initial equation measurements, we can choose a sequence of
+% candidate parshapes that the equation might fit into.
+% We accept the first shape that `works', else fall to next one.
+% [The sequence is hardcoded in the \cs{eq@try@layout@}<shape>
+% Would it be useful be more flexible? (eg. try layouts LDA, in order...)]
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \begin{macrocode}
+\def\eq@layout{?}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@try@layout@?}
+%
+% This is a branching function used to choose a suitable layout if
+% the user didn't specify one in particular.
+%
+% Default layout:
+% Try Single line layout first, else try Multiline layouts
+% \begin{macrocode}
+\@namedef{eq@try@layout@?}{%
+ \let\eq@trial@b\eq@trial@c
+ \edef\@parshape{\parshape 1 0pt \the\eq@linewidth\relax}%
+% \eq@trial@b{i}{\eq@try@layout@multi}%
+ \setlength\dim@a{\wd\EQ@copy-2em}% Fudge; can't shrink more than this?
+ % if we're in a numbered group, try hard to fit within the numbers
+ \dim@b\eq@linewidth
+ \if\eq@shiftnumber\else\if\eq@group
+ \if\eq@hasNumber\addtolength\dim@b{-\wd\EQ@numbox-\eqnumsep}%
+ \else\if\grp@hasNumber\addtolength\dim@b{-\wd\GRP@numbox-\eqnumsep}%
+ \fi\fi\fi\fi
+ \ifdim\dim@a<\dim@b% Do we even have a chance of fitting to one line?
+ \debugmsg{Choose Shape: (\the\wd\EQ@copy) may fit in \the\dim@b}%
+%BRM%
+ % assuming it might fit, don't push too hard
+ \setlength\dim@b{\columnwidth-\dim@a+\eq@wdCond}%
+ \rightskip\z@\@plus\dim@b\@minus\hfuzz
+%
+ \eq@trial@b{i}{\eq@try@layout@multi}%
+ \else
+ \debugmsg{Choose Shape: Too long (\the\wd\EQ@copy) for one line (free width=\the\dim@b)}%
+ \eq@try@layout@multi
+ \fi
+}
+% \end{macrocode}
+% Layout Multiline layout:
+% If no LHS, try Stepped(S) layout
+% Else try Stepped(S), Ladder(L), Drop-ladder(D) or Stepladder(l), depending on LHS length.
+% \begin{macrocode}
+\def\eq@try@layout@multi{%
+ \if\EQ@hasLHS
+ \ifdim\eq@wdL>\eq@linewidth
+ \debugmsg{Choose Shape: LHS \the\eq@wdL > linewidth}%
+% \end{macrocode}
+% Find the total width of the RHS.
+% If it is relatively short, a step layout is the thing to try.
+% \begin{macrocode}
+ \setlength\dim@a{\wd\EQ@copy-\eq@wdL}%
+ \ifdim\dim@a<.25\eq@linewidth \eq@try@layout@S
+ \else \eq@try@layout@l
+ \fi
+ % BRM: Originally .7: Extreme for L since rhs has to wrap within the remaining 30+%!
+ \else\ifdim\eq@wdL>.50\eq@linewidth
+ \debugmsg{Choose Shape: LHS (\the\eq@wdL) > .50 linewidth (linewidth=\the\eq@linewidth)}%
+ \eq@try@layout@D
+ \else
+ \debugmsg{Choose Shape: LHS (\the\eq@wdL) not extraordinarily wide}%
+ \eq@try@layout@L
+ \fi\fi
+ \else
+ \debugmsg{Choose Shape: No LHS here}%
+% \end{macrocode}
+% Try one-line layout first, then step layout.
+% \begin{macrocode}
+ \eq@try@layout@S % (already checked case i)
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\eq@try@layout@D}
+%
+% Change the penalty before the first mathrel symbol to encourage a
+% break there.
+%
+% Layout D=Drop-Ladder Layout, for wide LHS.
+% \begin{literalcode}
+% LOOOOOOOONG LHS
+% = RHS
+% = ...
+% \end{literalcode}
+% If fails, try Almost-Columnar layout
+% \begin{macrocode}
+\def\eq@try@layout@D{%
+ \setlength\dim@a{\eq@linewidth -\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}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\eq@try@layout@L}
+% Try a straight ladder layout.
+% Preliminary filtering ensures that \cs{eq@wdL} is less than 70%
+% of the current line width.
+% \begin{literalcode}
+% Layout L=Ladder layout
+% LHS = RHS
+% = RHS
+% ...
+% \end{literalcode}
+% If fails, try Drop-ladder layout.
+% NOTE: This is great for some cases (multi relations?), but
+% tends to break really badly when it fails....
+% \begin{macrocode}
+\def\eq@try@layout@L{%
+ \setlength\dim@b{\eq@linewidth-\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}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\eq@try@layout@S}
+%
+% In the \dquoted{stepped} layout there is no LHS, or LHS
+% is greater than the line width and RHS is small.
+% Then we want to split up the equation into lines of roughly equal
+% width and stagger them downwards to the right, leaving a small amount of
+% whitespace on both sides.
+% But also, if there is an equation number, we want to try first a
+% layout that leaves room for the number.
+% Otherwise it would nearly always be the case that the number would
+% get thrown on a separate line.
+%
+% Layout S=Stepped layout, typically no LHS or very long, variations on
+% \begin{literalcode}
+% STUFF ....
+% + MORE STUFF ...
+% + MORE STUFF ...
+% \end{literalcode}
+% If fails, try Almost-Columnar layout
+% \begin{macrocode}
+\def\eq@try@layout@S{%
+ \setlength\dim@b{\eq@linewidth-2\eqmargin}% \advance\dim@b-1em%
+% \end{macrocode}
+% About how many lines will we need if dim@b is the line width?
+% \begin{macrocode}
+ \int@a\wd\EQ@copy \divide\int@a\dim@b
+% \end{macrocode}
+% Adjust the target width by number of lines times indentstep.
+% We don't need to decrement \cs{int@a} because \tex
+% division is integer division with truncation.
+% \begin{macrocode}
+ \addtolength\dim@b{-\int@a\eq@indentstep}%
+% \end{macrocode}
+% Adjust for equation number.
+% But try not to leave too little room for the equation body.
+% \begin{macrocode}
+ \if\eq@hasNumber
+ \ifdim\dim@b>15em%
+% \advance\dim@b-\eqnumsep \advance\dim@b-\wd\EQ@numbox
+ \addtolength\dim@b{-\eq@wdNum}%
+ \fi
+ \fi
+% \end{macrocode}
+% Now some hand-waving to set up the parshape.
+% \begin{macrocode}
+ \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}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\eq@try@layout@l}
+%
+% This is the \dquoted{step-ladder} layout: similar to the drop-ladder
+% layout but the LHS is too wide and needs to be broken up.
+%
+% Layout l = Stepladder
+% Similar to Drop-Ladder, but LHS is long and needs to be broken up.
+% If fails, try Almost-Columnar layout
+% \begin{macrocode}
+\def\eq@try@layout@l{%
+ \setlength\dim@a{\eq@linewidth -\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@
+ \setlength\dim@b{2\eq@indentstep}%
+ \setlength\dim@c{\eq@linewidth -\dim@b}%
+ \edef\@parshape{\@parshape
+ \replicate{\int@a}{\space\the\eq@indentstep\space\the\dim@a}%
+ \space\the\dim@b\space\the\dim@c\relax
+ }%
+ \eq@trial@b{l}{\eq@try@layout@A}%
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\eq@try@layout@A}
+%
+% In the \dquoted{almost-columnar} layout, which is the layout of last
+% resort, we let all lines run to the full width and leave the adjusting
+% of the indents to later.
+%
+% Layout A = Almost-Columnar layout.
+% Pretty much straight full width, more of a last-resort.
+% If fails, give up.
+% \begin{macrocode}
+\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}{}%
+}
+% \end{macrocode}
+%
+% \end{macro}
+% \begin{macro}{\eq@shiftnumber}
+% MH: Should be moved to a section where all keys are set to defaults.
+% \begin{macrocode}
+\let\eq@shiftnumber\@False
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\eq@retry@with@number@a}
+% Number placement adjustments
+% \begin{macrocode}
+\def\eq@retry@with@number{%
+ \if\eq@shiftnumber
+ \debugmsg{Place number: Shifted number requested}%
+ \else
+% \end{macrocode}
+% Condition and right numbers? We're just going to have to shift.
+% \begin{macrocode}
+ \ifdim\eq@wdCond>\z@\if R\eqnumside
+ \debugmsg{Place number: Condition w/Right number => Shift number}%
+ \let\eq@shiftnumber\@True
+ \fi\fi
+% \end{macrocode}
+% Compute free space.
+% \begin{macrocode}
+% \dim@b\eqnumsep\advance\dim@b\wd\EQ@numbox
+ \dim@b\eq@wdNum
+ \if L\eqnumside
+ \ifdim\@totalleftmargin>\dim@b\dim@b\@totalleftmargin\fi
+ \else
+ \addtolength\dim@b{\@totalleftmargin}%
+ \fi
+ \setlength\dim@a{\eq@linewidth-\dim@b}%\advance\dim@a1em\relax% Allowance for shrink?
+% \end{macrocode}
+% Set up test against 1-line case only if not in a group
+% \begin{macrocode}
+ \int@a\@ne\if\eq@group\int@a\maxint\fi
+% \end{macrocode}
+% Now check for cases.
+% \begin{macrocode}
+ \if\eq@shiftnumber % Already know we need to shift
+ \else\ifdim\eq@wdT<\dim@a % Fits!
+% \end{macrocode}
+% left \& right skips will be done later, and parshape adjusted if
+% needed.
+% \begin{macrocode}
+ \debugmsg{Place number: eqn and number fit together}%
+% \else\ifnum\eq@lines=\int@a % Shift, if single line, unless inside a dgroup.
+% \end{macrocode}
+% NOTE: this is too strong for dgroup!
+% \begin{macrocode}
+% \debugmsg{Place number: single line too long with number => Shift number \the\int@a}%
+% \let\eq@shiftnumber\@True
+ \else
+% \end{macrocode}
+% % Retry: use leftskip for space for number(for now; whether
+% % right/left) \& adjust parshape
+% \begin{macrocode}
+% \leftskip\wd\EQ@numbox\advance\leftskip\eqnumsep
+ \setlength\leftskip{\eq@wdNum}%
+ \setlength\rightskip{\z@\@plus\dim@a}%
+ \adjust@parshape\@parshape
+ \debugmsg{Place number: Try with \leftskip=\the\leftskip, \rightskip=\the\rightskip,
+ ^^J||===== parshape\space\@xp\@gobble\@parshape}%
+ \nointerlineskip
+ \edef\eq@prev@lines{\the\eq@lines}%
+ \edef\eq@prev@badness{\the\eq@badness}% BRM
+ \eq@trial@p
+ \int@a\eq@prev@badness\relax\advance\int@a 50\relax%?
+ \int@b\eq@prev@lines \if\eq@group\advance\int@b\@ne\fi% Allow 1 extra line in group
+ \ifnum\eq@lines>\int@b % \eq@prev@lines
+ \debugmsg{Adjustment causes more breaks => Shift number}%
+ \let\eq@shiftnumber\@True
+ \else\if\eq@badline
+ \debugmsg{Adjustment causes bad lines (\the\eq@badness) => Shift}%
+ \let\eq@shiftnumber\@True
+ \else\ifnum\eq@badness>\int@a % BRM: New case
+ \debugmsg{Adjustment is badder than previous (\the\eq@badness >> \eq@prev@badness) => Shift}%
+ \let\eq@shiftnumber\@True
+ \else
+ \debugmsg{Adjustment succeeded}%
+ \fi\fi%\fi
+ \fi\fi\fi
+% \end{macrocode}
+% If we got shifted, restore parshape, etc,
+% \begin{macrocode}
+ \if\eq@shiftnumber
+ \EQ@trial% Restore parshape & other params,
+ \leftskip\z@\let\eq@shiftnumber\@True % But set shift & leftskip
+ \edef\@parshape{\eq@parshape}% And copy saved parshape back to `working copy' !?!?
+ \fi
+ \eq@trial@save\EQ@trial % Either way, save the trial state.
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\adjust@parshape}
+%
+% Varies depending on the layout.
+%
+% Adjust a parshape variable for a given set of left\textbar right skips.
+% Note that the fixed part of the left\textbar right skips effectively
+% comes out of the parshape widths (NOT in addition to it).
+% We also must trim the widths so that the sum of skips, indents
+% and widths add up to no more than the \cs{eq@linewidth}.
+% \begin{macrocode}
+\def\adjust@parshape#1{%
+ \@xp\adjust@parshape@a#1\relax
+ \edef#1{\temp@a}%
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\adjust@parshape@a}
+% \begin{macro}{\adjust@parshape@b}
+%
+% \begin{macrocode}
+\def\adjust@parshape@a#1 #2\relax{%
+ \setlength\dim@a{\leftskip+\rightskip}%
+ \edef\temp@a{#1}%
+ \adjust@parshape@b#2 @ @ \relax
+}
+\def\adjust@parshape@b#1 #2 {%
+ \ifx @#1\edef\temp@a{\temp@a\relax}%
+ \@xp\@gobble
+ \else
+ \dim@b#1\relax
+ \dim@c#2\relax
+ \addtolength\dim@c{\dim@a+\dim@b}%
+ \ifdim\dim@c>\eq@linewidth\setlength\dim@c{\eq@linewidth}\fi
+ \addtolength\dim@c{-\dim@b}%
+ \edef\temp@a{\temp@a\space\the\dim@b\space\the\dim@c}%
+ \fi
+ \adjust@parshape@b
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\eq@ml@record@indents}
+%
+% Plunk the parshape's indent values into an array for easy access
+% when constructing \cs{eq@measurements}.
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@endelt}
+%
+% This is a scan marker.
+% It should get a non-expandable definition.
+% It could be \cs{relax}, but let's try a chardef instead.
+% \begin{macrocode}
+\chardef\@endelt=`\?
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@measurements}
+%
+% This is similar to a parshape spec but for each line we record more
+% info: space above, indent, width x height + dp, and badness.
+% \begin{macrocode}
+\def\eq@measurements{%
+ \@elt 4.5pt/5.0pt,66.0ptx6.8pt+2.4pt@27\@endelt
+ ...
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@measure@lines}
+% Loop through the list of boxes to measure things like total
+% height (including interline stretch), \etc . We check the
+% actual width of the current line against the natural width \mdash
+% after removing rightskip \mdash in case the former is
+% \emph{less} than the latter because of shrinkage. In that
+% case we do not want to use the natural width for RHS-max-width because
+% it might unnecessarily exceed the right margin.
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@ml@a}
+%
+% \begin{macrocode}
+\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
+% \end{macrocode}
+% Is actual width less than natural width?
+% \begin{macrocode}
+ \ifdim\dim@b<\wd\tw@ \setlength\dim@a{\dim@b}% shrunken line
+ \else \setlength\dim@a{\wd\tw@}% OK to use natural width
+ \fi
+ \addtolength\dim@a{-\leftskip}% BRM: Deduct the skip if we're retrying w/number
+% \end{macrocode}
+% If there's no aboveskip, assume we've reached the top of the
+% equation.
+% \begin{macrocode}
+ \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 \addtolength\skip@a{\lastskip}\unskip\unpenalty \@xp\@tempa
+ \fi
+ }%
+ \fi
+ \edef\eq@measurements{\@elt
+ \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\@endelt
+ \eq@measurements
+ }%
+ \advance\eq@curline\m@ne
+ \ifnum\eq@curline=\z@ \let\eq@ml@continue\relax\fi
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@ml@vspace}
+%
+% Handle an embedded vspace.
+% \begin{macrocode}
+\def\eq@ml@vspace{%
+ \global\advance\eq@vspan\lastskip \unskip\unpenalty
+ \ifdim\lastskip=\z@ \else \@xp\eq@ml@vspace \fi
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@dense@enough}
+%
+% \begin{macrocode}
+\def\eq@dense@enough{%
+ \ifnum\eq@lines<\thr@@
+ \debugmsg{Density check: less than 3 lines; OK}%
+ \@True
+ \else
+ \ifdim\eq@wdL >.7\eq@wdT
+ \debugmsg{Density check: LHS too long; NOT OK}%
+ \@False
+ \else \@xp\@xp\@xp\eq@dense@enough@a
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\true@false@true}
+% \begin{macrocode}
+\def\true@false@true{\fi\fi\iftrue\iffalse\iftrue}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\false@false@false}
+% \begin{macrocode}
+\def\false@false@false{\fi\fi\iffalse\iffalse\iffalse}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\false@true@false}
+% \begin{macrocode}
+\def\false@true@false{\fi\fi\iffalse\iftrue\iffalse}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@density@factor}
+%
+% This number specifies, for the ladder layout, how much of the
+% equation's bounding box should contain visible material rather than
+% whitespace.
+% If the amount of visible material drops below this value, then we
+% switch to the drop-ladder layout.
+% The optimality of this factor is highly dependent on the equation
+% contents; .475 was chosen as the default just because it worked well
+% with the sample equation, designed to be as average as possible, that I
+% used for testing.
+% \begin{macrocode}
+\def\eq@density@factor{.475}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@dense@enough@a}
+%
+% Calculate whether there is more
+% visible material than whitespace within the equation's bounding box.
+% Sum up the actual line widths and compare to the total
+% \dquoted{area} of the bounding box.
+% But if we have an extremely large number of lines, fall back to an
+% approximate calculation that is more conservative about the danger of
+% exceeding \cs{maxdimen}.
+% \begin{macrocode}
+\def\eq@dense@enough@a{%
+ \@True \fi
+ \ifnum\eq@lines>\sixt@@n
+ \eq@dense@enough@b
+ \else
+ \dim@b\z@ \let\@elt\eq@delt \eq@measurements
+ \dim@c\eq@density@factor\eq@wdT \multiply\dim@c\eq@lines
+ \debugmsg{Density check: 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
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@delt}
+% Args are space-above, indent, width, height, depth, badness.
+% \begin{macrocode}
+\def\eq@delt#1^^J#2,#3x#4+#5@#6\@endelt{\addtolength\dim@b{#3}}%
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@dense@enough@b}
+%
+% This is an approximate calculation used to keep from going over
+% \cs{maxdimen} if the number of lines in our trial break is large
+% enough to make that a threat.
+% If l, t, n represent left-side-width, total-width, and number of
+% lines, the formula is
+% \begin{literalcode}
+% l/t < .4n/(.9n-1)
+% \end{literalcode}
+% or equivalently, since rational arithmetic is awkward in \tex :
+% b
+% \begin{literalcode}
+% l/t < 4n/(9n-10)
+% \end{literalcode}
+% .
+% \begin{macrocode}
+\def\eq@dense@enough@b{%
+ \int@b\eq@wdT \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
+ \debugmsg{Density check: 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
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\eq@parshape}
+%
+% \begin{macrocode}
+\let\eq@parshape\@empty
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@params}
+% The interline spacing and penalties in \cs{eq@params}
+% are used during both preliminary line breaking and final typesetting.
+% \begin{macrocode}
+\def\eq@params{%
+ \baselineskip\eqlinespacing
+ \lineskip\eqlineskip \lineskiplimit\eqlineskiplimit
+% \end{macrocode}
+% Forbid absolutely a pagebreak that separates the first line or last
+% line of a multiline equation from the rest of it. Or in other
+% words: no equation of three lines or less will be broken at the bottom
+% of a page; instead it will be moved whole to the top of the next
+% page. If you really really need a page break that splits the
+% first or last line from the rest of the equation, you can always fall
+% back to\cs{pagebreak}, I suppose9.
+%
+% \begin{macrocode}
+ \clubpenalty\@M \widowpenalty\@M \interlinepenalty\eqinterlinepenalty
+ \linepenalty199 \exhyphenpenalty5000 % was 9999: make breaks at, eg. \* a bit easier.
+% \end{macrocode}
+% For equations, hfuzz should be at least 1pt.
+% But we have to fake it a little because we are running the equation
+% through \tex 's paragrapher.
+% In our trials we use minus 1pt in the rightskip rather than hfuzz;
+% and we must do the same during final breaking of the equation, otherwise
+% in borderline cases \tex will use two lines instead of one when our
+% trial indicated that one line would be enough.
+% \begin{macrocode}
+ \ifdim\hfuzz<\p@ \hfuzz\p@ \fi
+%\hfuzz=2pt
+% \ifdim\hfuzz<2pt\relax \hfuzz2pt \fi
+ \parfillskip\z@skip
+% \hfuzz\z@
+% \end{macrocode}
+% Make sure we skip \tex 's preliminary line-breaking pass to save
+% processing time.
+% \begin{macrocode}
+ \tolerance9999 \pretolerance\m@ne
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+%
+% \section{Equation layout options}
+% Using the notation C centered, I indented (applied to
+% the equation body), T top, B bottom, M
+% middle, L left, R right (applied to the equation number),
+% the commonly used equation types are C, CRM, CRB, CLM, CLT,
+% I, IRM, IRB, ILM, ILT. In other words, CLM stands for Centered equation
+% body with Left-hand Middle-placed equation number, and IRB stands for
+% Indented equation with Right-hand Bottom-placed equation number.
+%
+%
+% \section{Centered Right-Number Equations}
+%
+% \begin{macro}{\eq@dump@box}
+%
+% \arg1 might be \cs{unhbox} or \cs{unhcopy}; \arg2 is
+% the box name.
+% \begin{macrocode}
+\def\eq@dump@box#1#2{%
+%\debug@box#1%
+ \noindent #1#2\setbox\f@ur\lastbox \setbox\tw@\lastbox
+% \end{macrocode}
+% If the LHS contains shrinkable glue, in an L layout the alignment
+% could be thrown off if the first line is shrunk noticeably.
+% For the time being, disable shrinking on the left-hand side.
+% The proper solution requires more work \begin{dn}
+% mjd,1999/03/17
+% \end{dn}
+% .
+% \begin{macrocode}
+ \if L\eq@layout \box\tw@ \else\unhbox\tw@\fi
+ \adjust@rel@penalty \unhbox\f@ur
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Various typesetting bits, invoked from \cs{eq@finish}
+% BRM: This has been extensively refactored from the original breqn,
+% initially to get left\textbar right skips and parshape used consistently,
+% ultimately to get most things handled the same way, in the same order.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Given that left and right skips have been set,
+% typeset the frame, number and equation with the
+% given number side and placement
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \begin{macrocode}
+\def\eq@typeset@Unnumbered{%
+ \eq@typeset@frame
+ \eq@typeset@equation
+}
+\def\eq@typeset@LM{%
+ \addtolength\dim@a{(\eq@vspan+\ht\EQ@numbox-\dp\EQ@numbox)/2}%
+ \eq@typeset@leftnumber
+ \eq@typeset@frame
+ \eq@typeset@equation
+}
+% \end{macrocode}
+% Typeset equation and left-top number (and shifted)
+% \begin{macrocode}
+\def\eq@typeset@LT{%
+ \dim@a\eq@firstht
+ \eq@typeset@leftnumber
+ \eq@typeset@frame
+ \eq@typeset@equation
+}
+% \end{macrocode}
+% Typeset equation and left shifted number
+% \begin{macrocode}
+\def\eq@typeset@LShifted{%
+ % place number
+ \copy\EQ@numbox \penalty\@M
+ \dim@a\eqlineskip
+ \if F\eq@frame\else
+ \setlength\dim@a{\eq@framesep+\eq@framewd}%
+ \fi
+ \kern\dim@a
+ \eq@typeset@frame
+ \eq@typeset@equation
+}
+% \end{macrocode}
+% Typeset equation and right middle number
+% \begin{macrocode}
+\def\eq@typeset@RM{%
+ \setlength\dim@a{(\eq@vspan+\ht\EQ@numbox-\dp\EQ@numbox)/2}
+ \eq@typeset@rightnumber
+ \eq@typeset@frame
+ \eq@typeset@equation
+}
+% \end{macrocode}
+% Typeset equation and right bottom number
+% \begin{macrocode}
+\def\eq@typeset@RB{%
+ % NOTE: is \eq@dp useful here
+ \setlength\dim@a{\eq@vspan-\ht\EQ@numbox-\dp\EQ@numbox}%
+ \eq@typeset@rightnumber
+ \eq@typeset@frame
+ \eq@typeset@equation
+}
+% \end{macrocode}
+% Typeset equation and right shifted number
+% \begin{macrocode}
+\def\eq@typeset@RShifted{%
+ % place number
+ \eq@typeset@frame
+ \eq@typeset@equation
+ \penalty\@M
+ \dim@a\eqlineskip
+ \if F\eq@frame\else
+ \addtolength\dim@a{\eq@framesep+\eq@framewd}%
+ \fi
+ \parskip\dim@a
+ \hbox to\hsize{\hfil\copy\EQ@numbox}\@@par%
+}
+% \end{macrocode}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Debugging aid to show all relevant formatting info for a given eqn.
+% \begin{macrocode}
+\def\debug@showformat{%
+ \debugmsg{Formatting Layout:\eq@layout\space Center/indent: \eqindent\space Number placement \eqnumside\eqnumplace:
+ ^^J||===== \eq@linewidth=\the\eq@linewidth, \@totalleftmargin=\the\@totalleftmargin,
+ ^^J||===== Centered Lines=\theb@@le\eq@centerlines, Shift Number=\theb@@le\eq@shiftnumber,
+ ^^J||===== \eq@wdT=\the\eq@wdT, \eq@wdMin=\the\eq@wdMin,
+ ^^J||===== LHS=\theb@@le\EQ@hasLHS: \eq@wdL=\the\eq@wdL,
+ ^^J||===== \eq@firstht=\the\eq@firstht, \eq@vspan=\the\eq@vspan
+ ^^J||===== \eq@wdNum=\the\eq@wdNum
+ ^^J||===== \eq@wdCond=\the\eq@wdCond, \conditionsep=\the\conditionsep,
+ ^^J||===== \leftskip=\the\leftskip, \rightskip=\the\rightskip,
+ ^^J||===== \abovedisplayskip=\the\abovedisplayskip,
+ ^^J||===== \belowdisplayskip=\the\belowdisplayskip
+ ^^J||===== parshape=\eq@parshape}%
+}
+% \end{macrocode}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Set left \& right skips for centered equations,
+% making allowances for numbers (if any, right, left) and constraint.
+% ===
+% Amazingly, I've managed to collect all the positioning logic for
+% centered equations in one place, so it's more manageable.
+% Unfortunately, by the time it does all it needs to do,
+% it has evolved I'm (re)using so many temp variables, it's becoming
+% unmanageble!
+%
+% \begin{macrocode}
+\def\eq@C@setsides{%
+ % \dim@c = space for number, if any, and not shifted.
+ \dim@c\z@
+ \if\eq@hasNumber\if\eq@shiftnumber\else
+ \dim@c\eq@wdNum
+ \fi\fi
+ % \dim@e = space for condition(on right), if any and formula is only a single line.(to center nicely)
+ % but only count it as being right-aligned if we're not framing, since the frame must enclose it.
+ \dim@e\z@
+ \if F\eq@frame
+ \ifnum\eq@lines=\@ne\ifdim\eq@wdCond>\z@
+ \setlength\dim@e{\eq@wdCond+\conditionsep}%
+ \fi\fi\fi
+ % \dim@b = minimum needed on left max(totalleftmargin, left number space)
+ \dim@b\z@
+ \if L\eqnumside\ifdim\dim@b<\dim@c
+ \dim@b\dim@c
+ \fi\fi
+ \ifdim\dim@b<\@totalleftmargin
+ \dim@b\z@
+ \else
+ \addtolength\dim@b{-\@totalleftmargin}%
+ \fi
+ % \dim@d = minimum needed on right max(condition, right number space)
+ \dim@d\dim@e
+ \if R\eqnumside\ifdim\dim@d<\dim@c
+ \dim@d\dim@c
+ \fi\fi
+ % \dim@a = left margin; initially half available space
+ % \dim@c = right margin; ditto
+ \setlength\dim@a{(\eq@linewidth-\eq@wdT+\dim@e+\@totalleftmargin)/2}%
+ \dim@c=\dim@a
+ % If too far to the left
+ \ifdim\dim@a<\dim@b
+ \addtolength\dim@c{\dim@a-\dim@b}%
+ \ifdim\dim@c<\z@\dim@c=\z@\fi
+ \dim@a=\dim@b
+ % Or if too far to the right
+ \else\ifdim\dim@c<\dim@d
+ \addtolength\dim@a{\dim@c-\dim@d}%
+ \ifdim\dim@a<\z@\dim@a=\z@\fi
+ \dim@c=\dim@d
+ \fi\fi
+ % Now, \dim@d,\dim@e is the left & right glue to center each line for centerlines
+ \setlength\dim@e{\eq@wdT-\eq@wdMin}\dim@d=\z@
+% NOTE: Need some work here centering when there's a condition
+% \advance\dim@e-\eq@wdT\multiply\dim@e-1\relax
+% \if\eq@wdMin<\dim@e\dim@e\eq@wdMin\fi
+% \multiply\dim@e-1\relax\advance\dim@e\eq@wdT
+ \dim@d\z@
+ \if\eq@centerlines
+ \divide\dim@e2\relax\dim@d\dim@e
+ \fi
+ \setlength\leftskip{\dim@a\@plus\dim@d}%
+ \addtolength\dim@e{\dim@c}%
+ \setlength\rightskip{\z@\@plus\dim@e}%\@minus5\p@
+ % Special case: if framing, reduce the stretchiness of the formula (eg. condition)
+ % Or if we have a right number, FORCE space for it
+ \dim@b\z@
+ \if F\eq@frame\else
+ \dim@b\dim@c
+ \fi
+ \if\eq@hasNumber\if\eq@shiftnumber\else\if R\eqnumside
+ \dim@c\eq@wdNum
+ \ifdim\dim@c>\dim@b\dim@b\dim@c\fi
+ \fi\fi\fi
+ % If either of those cases requires hard rightskip, move that part from glue.
+ \ifdim\dim@b>\z@
+ \addtolength\dim@e{-\dim@c}%
+ \rightskip\dim@b\@plus\dim@e%\@minus5\p@
+ \fi
+ % And peculiar further special case: in indented environs, width isn't where it would seem
+ \ifdim\eq@wdCond>\z@
+ \addtolength\rightskip{-\@totalleftmargin}%
+ \fi
+ \parfillskip\z@skip
+}
+% \end{macrocode}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Set the left and right side spacing for indented equations
+% Some things handled by eq@C@setsides that probably apply here????
+% * centerlines
+% * \cs{@totalleftmargin}: SHOULD we move farther right?
+% \begin{macrocode}
+\def\eq@I@setsides{%
+ % Leftskip is normally just the requested indentation
+ \leftskip\mathindent
+ % But move left, if shifted number presumably because of clashed w/ number?
+ \if\eq@shiftnumber
+ \setlength\dim@a{\eq@linewidth-\eq@wdT-\mathindent}%
+ \ifdim\dim@a<\z@
+ \leftskip=\z@ % Or something minimal?
+ \fi\fi
+ % Push gently from right.
+ \dim@a=\z@
+ \setlength\dim@b{\eq@linewidth-\leftskip-\eq@wdMin}%
+ % Special case: if framing be much more rigid(?)
+ \if F\eq@frame\else
+ \setlength\dim@a{\eq@linewidth-\leftskip-\eq@wdT}
+ \addtolength\dim@b{-\dim@a}%
+ \fi
+ % Or force the space for right number, if needed
+ \if\eq@hasNumber\if\eq@shiftnumber\else\if R\eqnumside
+ \dim@c=\eq@wdNum
+ \if\dim@c>\dim@a
+ \addtolength\dim@b{-\dim@c}%
+ \dim@a=\dim@c
+ \fi\fi\fi\fi
+ \setlength\rightskip{\dim@a\@plus\dim@b \@minus\hfuzz }%\hfuzz\z@
+ \parfillskip\z@skip
+}
+% \end{macrocode}
+% \paragraph{Typesetting pieces: frame, equation and number (if any)}
+% \cs{dim@a} should contain the downward displacement of number's baseline
+% \begin{macrocode}
+\def\eq@typeset@leftnumber{%
+ \setlength\skip@c{\dim@a-\ht\EQ@numbox}%
+ \vglue\skip@c% NON discardable
+ \copy\EQ@numbox \penalty\@M
+ \kern-\dim@a
+}
+\def\eq@typeset@rightnumber{%
+ \setlength\skip@c{\dim@a-\ht\EQ@numbox}%
+ \vglue\skip@c% NON discardable
+ \hbox to \hsize{\hfil\copy\EQ@numbox}\penalty\@M
+ \kern-\dim@a
+}
+\def\eq@typeset@equation{%
+ \nobreak
+ \eq@params\eq@parshape
+ \nointerlineskip\noindent
+ \add@grp@label
+ \eq@dump@box\unhbox\EQ@box\@@par
+}
+% \end{macrocode}
+%
+% \section{Framing an equation}
+% \begin{macro}{\eqframe}
+% The \cs{eqframe} function is called in vertical mode
+% with the reference point at the top left corner of the equation, including
+% any allowance for \cs{fboxsep}. Its arguments are the width
+% and height of the equation body, plus fboxsep.
+% \changes{v0.95}{2007/12/03}{Made \cs{eqframe} obey the key settings
+% for frame and framesep.}
+% \begin{macrocode}
+\newcommand\eqframe[2]{%
+ \begingroup
+ \fboxrule=\eq@framewd\relax\fboxsep=\eq@framesep\relax
+ \framebox{\z@rule\@height#2\kern#1}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\def\eq@addframe{%
+ \hbox to\z@{%
+ \setlength\dim@a{\eq@framesep+\eq@framewd}%
+ \kern-\dim@a
+ \vbox to\z@{\kern-\dim@a
+ \hbox{\eqframe{\eq@wdT}{\eq@vspan}}%
+ \vss
+ }%
+ \hss
+ }%
+}
+\def\eq@typeset@frame{%
+ \if F\eq@frame\else
+ % Tricky: put before \noindent, so it's not affected by glue in \leftskip
+ \nobreak\nointerlineskip
+ \vbox to\eq@firstht{\moveright\leftskip\hbox to\z@{\eq@addframe\hss}\vss}%
+ \kern-\eq@firstht
+ \fi
+}
+% \end{macrocode}
+%
+%
+%
+%
+% \section{Delimiter handling}
+% The special handling of delimiters is rather complex, but
+% everything is driven by two motives: to mark line breaks inside
+% delimiters as less desirable than line breaks elsewhere, and to make it
+% possible to break open left-right boxes so that line breaks between
+% \cs{left} and \cs{right} delimiters are not absolutely
+% prohibited. To control the extent to which line breaks will be
+% allowed inside delimiters, set \cs{eqbreakdepth} to the maximum
+% nesting depth. Depth 0 means never break inside delimiters.
+%
+% Note: \cs{eqbreakdepth} is not implemented as a \latex
+% counter because changes done by \cs{setcounter} \etc are always
+% global.
+%
+% It would be natural to use grouping in the implementation
+% \mdash at an open delimiter, start a group and increase mathbin
+% penalties; at a close delimiter, close the group. But this gives us
+% trouble in situations like the \env{array} environment, where a
+% close delimiter might fall in a different cell of the \cs{halign}
+% than the open delimiter.
+% Ok then, here's what we want the various possibilities to
+% expand to. Note that \cs{right} and \cs{biggr} are
+% being unnaturally applied to a naturally open-type delimiter.
+% \begin{literalcode}
+% ( -> \delimiter"4... \after@open
+% \left( ->
+% \@@left \delimiter"4... \after@open
+% \right( ->
+% \@@right \delimiter"4... \after@close
+% \biggl( ->
+% \mathopen{\@@left \delimiter... \vrule...\@@right.}
+% \after@open
+% \biggr( ->
+% \mathclose{\@@left \delimiter... \vrule...\@@right.}
+% \after@close
+% \bigg\vert ->
+% \mathord{\@@left \delimiter... \vrule...\@@right.}
+% \biggm\vert ->
+% \mathrel{\@@left \delimiter... \vrule...\@@right.}
+% \end{literalcode}
+%
+%
+% First save the primitive meanings of \cs{left} and
+% \cs{right}.
+% \begin{macrocode}
+\@saveprimitive\left\@@left
+\@saveprimitive\right\@@right
+% \end{macrocode}
+%
+%
+% The variable \cs{lr@level} is used by the first mathrel in
+% an equation to tell whether it is at top level: yes? break and measure
+% the LHS, no? keep going.
+% \begin{macrocode}
+\newcount\lr@level
+% \end{macrocode}
+%
+%
+% It would be nice to have better error checking here if the
+% argument is not a delimiter symbol at all.
+% \begin{macrocode}
+\def\eq@left{%
+ \@ifnext .{\eq@nullleft}{\begingroup \let\delimiter\eq@left@a}%
+}
+\def\eq@right{%
+ \@ifnext .{\eq@nullright}{\begingroup \let\delimiter\eq@right@a}%
+}
+% \end{macrocode}
+% The arguments are: \arg1 delim symbol, \arg2 .
+% \begin{macrocode}
+\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}%
+}
+% \end{macrocode}
+% The null versions.
+% \begin{macrocode}
+\def\eq@nullleft#1{\@@left#1\after@open}
+\def\eq@nullright#1{\@@right#1\after@close}
+% \end{macrocode}
+%
+%
+% Here is the normal operation of \cs{biggl}, for example.
+% \begin{literalcode}
+% \biggl ->\mathopen \bigg
+% {\mathopen}
+%
+% \bigg #1->{\hbox {$\left #1\vbox to14.5\p@ {}\right .\n@space $}}
+% #1<-(
+% \end{literalcode}
+ % For paren matching: )
+% Like \cs{left}, \cs{biggl} coerces its delimiter to be of
+% mathopen type even if its natural inclination is towards closing.
+%
+% The function \cs{delim@reset} makes delimiter characters
+% work just about the same as they would in normal \latex .
+% \begin{macrocode}
+\def\delim@reset{%
+ \let\after@open\relax \let\after@close\relax
+ \let\left\@@left \let\right\@@right
+}
+% \end{macrocode}
+% If the \pkg{amsmath} or \pkg{exscale} package is loaded, it
+% will have defined \cs{bBigg@}; if not, the macros \cs{big} and
+% variants will have hard-coded point sizes as inherited through the ages
+% from \fn{plain.tex}. In this case we can kluge a little by
+% setting \cs{big@size} to \cs{p@}, so that our definition of
+% \cs{bBigg@} will work equally well with the different multipliers.
+% \begin{macrocode}
+\@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.
+ }%
+}
+% \end{macrocode}
+% .
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+%
+%
+% \begin{macro}{\m@@DeL} \begin{macro}{\d@@DeL}
+% \begin{macro}{\m@@DeR} \begin{macro}{\d@@DeR}
+% \begin{macro}{\m@@DeB} \begin{macro}{\d@@DeB}
+% Original definition of \cs{m@DeL} from
+% \pkg{flexisym} is as follows. \cs{m@DeR} and
+% \cs{m@DeB} are the same except for the math class number.
+% \begin{literalcode}
+% \def\m@DeL#1#2#3{%
+% \delimiter"4\@xp\delim@a\csname sd@#1#2#3\endcsname #1#2#3 }
+% \end{literalcode}
+%
+% Save the existing meanings of \cs{m@De[LRB]}.
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+%%BRM: These weren't defined, but apparently should be.
+% Are these the right values???
+% \begin{macrocode}
+\let\m@@DeA\m@DeA\let\d@@DeA\m@DeA%
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\after@open}
+% \begin{macro}{\after@close}
+% \begin{macro}{\after@bidir}
+% \begin{macro}{\zero@bop}
+% \begin{macro}{\bop@incr}
+% \cs{after@open} and \cs{after@close} are carefully
+% written to avoid the use of grouping and to run as fast as possible.
+% \cs{zero@bop} is the value used for \cs{prebinoppenalty} at
+% delimiter level 0, while \cs{bop@incr} is added for each level of
+% nesting. The standard values provide that breaks will be prohibited
+% within delimiters below nesting level 2.
+% \begin{macrocode}
+\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
+% \end{macrocode}
+% Inside delimiters, add some fillglue before binops so that a broken off
+% portion will get thrown flush right. Also shift it slightly
+% further to the right to ensure that it clears the opening delimiter.
+% \begin{macrocode}
+ \else
+ \eq@binoffset=\eqbinoffset
+ \advance\eq@binoffset\lr@level\eqdelimoffset plus1fill\relax
+ \def\dt@fill@cancel{\hskip\z@ minus1fill\relax}%
+ \fi
+ \penalty\@M % BRM: discourage break after an open fence?
+}
+\def\after@close{%
+ \global\advance\lr@level\m@ne
+ \prebinoppenalty\bop@incr \multiply\prebinoppenalty\lr@level
+ \advance\prebinoppenalty\zero@bop
+ \ifnum\eqbreakdepth<\lr@level
+ \else \let\m@Bin\d@@Bin
+ \fi
+% \end{macrocode}
+% When we get back to level 0, no delimiters, remove the stretch
+% component of \cs{eqbinoffset}.
+% \begin{macrocode}
+ \ifnum\lr@level<\@ne \eq@binoffset=\eqbinoffset\relax \fi
+}
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\subsup@flag}
+% \begin{macro}{\ss@scan}
+% \cs{ss@scan} is called after a \cs{right} delimiter and
+% looks ahead for sub and superscript tokens.
+% If sub and/or superscripts are present, we adjust the line-ending
+% penalty to distinguish the various cases (sub, sup, or both).
+% This facilitates the later work of excising the sub/sup box and
+% reattaching it with proper shifting.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Sub/Superscript measurement
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% BRM: There's possibly a problem here.
+% When \cs{ss@scan} gets invoked after a \cs{left}...\cs{right} pair in the LHS
+% during \cs{eq@measure}, it produces an extra box (marked with \cs{penalty} 3);
+% Apparently \cs{eq@repack} expects only one for the LHS.
+% The end result is \cs{eq@wdL} => 0.0pt !!! (or at least very small)
+% \begin{macrocode}
+\let\subsup@flag=\count@
+\def\ss@delim@a#1#2#3#4{\xdef\right@delim@code{\number"#2#3#4}}
+% \end{macrocode}
+% The argument of \cs{ss@scan} is an expanded form of a
+% right-delimiter macro.
+% We want to use the last three digits in the expansion
+% to define \cs{right@delim@code}.
+% The assignment to a temp register is just a way to scan away the
+% leading digits that we don't care about.
+% \begin{macrocode}
+\def\ss@scan#1{%
+% \end{macrocode}
+% This part of the code.
+% \begin{macrocode}
+ \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
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\ss@scan@b#1#2{#1{%
+% \end{macrocode}
+% hack! coff!
+% \begin{macrocode}
+ \let\m@Bin\m@@Bin \let\m@Rel\m@@Rel
+ #2}\afterassignment\ss@scan@a \let\@let@token=}%
+% \end{macrocode}
+% We need to keep following glue from disappearing
+% \mdash \eg , a thickmuskip or medmuskip from a following mathrel or
+% mathbin symbol.
+% \begin{macrocode}
+\def\ss@finish{%
+ \@@vadjust{\penalty\thr@@}%
+ \penalty\right@delim@code \penalty-\subsup@flag \keep@glue
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\eq@lrunpack}
+% For \cs{eq@lrunpack} we need to break open a left-right box and
+% reset it just in case it contains any more special breaks. After
+% it is unpacked the recursion of \cs{eq@repack} will continue,
+% acting on the newly created lines.
+% \begin{macrocode}
+\def\eq@lrunpack{\setbox\z@\lastbox
+% \end{macrocode}
+% We remove the preceding glue item and deactivate
+% baselineskip for the next line, otherwise we would end up with
+% three items of glue (counting parskip) at this point instead of
+% the single one expected by our recursive repacking
+% procedure.
+% \begin{macrocode}
+ \unskip \nointerlineskip
+% \end{macrocode}
+% Then we open box 0, take the left-right box at the right end of
+% it, and break that open. If the line-ending penalty is greater than
+% 10000, it means a sub and/or superscript is present on the right
+% delimiter and the box containing them must be taken off first.
+% \begin{macrocode}
+ \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
+% \end{macrocode}
+% The reason for adding a null last line here is that the last
+% line will contain parfillskip in addition to rightskip, and a final
+% penalty of $10000$ instead of $-1000N$
+% ($1\leq N\leq 9$), which would interfere with the usual
+% processing. Setting a null last line and discarding it dodges
+% this complication. The penalty value $-10001$ is a no-op case
+% in the case statement of \cs{eq@repacka}.
+% \begin{macrocode}
+ \penalty-\@Mi\z@rule\@@par
+ \setbox\z@\lastbox \unskip\unpenalty
+%%{\showboxbreadth\maxdimen\showboxdepth99\showlists}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\lrss@reattach}
+%
+% Well, for a small self-contained computation, carefully
+% hand-allocated dimens should be safe enough. But let the
+% maintainer beware! This code cannot be arbitrarily transplanted
+% or shaken up without regard to grouping and interaction with other
+% hand-allocated dimens.
+% \begin{macrocode}
+\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@}
+% \end{macrocode}
+% Note that only \cs{sup@drop} and \cs{sub@drop} come from
+% the next smaller math style.
+% \begin{macrocode}
+\def\sup@drop{\fontdimen18\scriptfont\tw@}
+\def\sub@drop{\fontdimen19\scriptfont\tw@}
+% \end{macrocode}
+% Provide a mnemonic name for the math axis fontdimen, if it's not
+% already defined.
+% \begin{macrocode}
+\providecommand{\mathaxis}{\fontdimen22\textfont\tw@}
+% \end{macrocode}
+%
+% Assumes box 2 contains the sub/sup and box 0 contains the left-right
+% box. This is just a repeat of the algorithm in \fn{tex.web},
+% with some modest simplifications from knowing that this is only going to
+% be called at top level in a displayed equation, thus always mathstyle =
+% uncramped displaystyle.
+% \begin{macrocode}
+\def\lrss@reattach{%
+ \begingroup
+ % "The TeXbook" Appendix G step 18:
+ \setlength\prelim@sup@base{\ht\z@-\sup@drop}%
+ \setlength\prelim@sub@depth{\dp\z@ +\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
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\lr@subscript{%
+ \sub@depth\sub@base@one
+ \ifdim\prelim@sub@depth>\sub@depth \sub@depth\prelim@sub@depth\fi
+ \setlength\dim@a{\ht\tw@ -.8\sym@xheight}%
+ \ifdim\dim@a>\sub@depth \sub@depth=\dim@a \fi
+ \twang@adjust\sub@depth
+ \lower\sub@depth\box\tw@
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\lr@superscript{%
+ \sup@base\sup@base@one
+ \ifdim\prelim@sup@base>\sup@base \sup@base\prelim@sup@base\fi
+ \setlength\dim@a{\dp\tw@ -.25\sym@xheight}%
+ \ifdim\dim@a>\sup@base \sup@base\dim@a \fi
+ \twang@adjust\sup@base
+ \raise\sup@base\box\tw@
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\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@
+}
+% \end{macrocode}
+%
+% For delimiters that curve top and bottom, the twang factor allows
+% horizontal shifting of the sub and superscripts so they don't
+% fall too far away (or too close for that matter). This is
+% accomplished by arranging for (\eg ) \verb"\right\rangle" to leave
+% a penalty $N$ in the math list before the subsup penalty that triggers
+% \cs{lrss@reattach}, where $N$ is the mathcode of
+% \cs{rangle} (ignoring \dquoted{small} variant).
+% \begin{macrocode}
+\def\twang@adjust#1{%
+ \begingroup
+ \@ifundefined{twang@\right@delim@code}{}{%
+ \setlength\dim@d{#1-\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
+}
+% \end{macrocode}
+% The method used to apply a \dquoted{twang} adjustment is just an
+% approximate solution to a complicated problem.
+% We make the following assumptions that hold true, approximately,
+% for the most common kinds of delimiters:
+% \begin{enumerate}
+% \item
+% The right delimiter is symmetrical top to bottom.
+%
+%
+% \item There is an upper limit on the size of the adjustment.
+%
+%
+% \item When we have a superscript, the amount of left-skew that we
+% want to apply is linearly proportional to the distance of the bottom
+% left corner of the superscript from the math axis, with the ratio
+% depending on the shape of the delimiter symbol.
+%
+%
+% \end{enumerate}
+% .
+% By symmetry, Assumption 3 is true also for subscripts (upper left
+% corner).
+% Assumption 2 is more obviously true for parens and braces, where the
+% largest super-extended versions consist of truly vertical parts with
+% slight bending on the ends, than it is for a \cs{rangle}.
+% But suppose for the sake of expediency that it is
+% approximately true for rangle symbols also.
+%
+%
+% Here are some passable twang factors for the most common types of
+% delimiters in \fn{cmex10}, as determined by rough measurements from
+% magnified printouts.
+% \begin{literalcode}
+% vert bar, double vert: 0
+% square bracket: -.1
+% curly brace: -.25
+% parenthesis: -.33
+% rangle: -.4
+% \end{literalcode}
+% Let's provide a non-private command for changing the twang factor of
+% a given symbol.
+% \begin{macrocode}
+\newcommand{\DeclareTwang}[2]{%
+ \ifcat.\@nx#1\begingroup
+ \lccode`\~=`#1\lowercase{\endgroup \DeclareTwang{~}}{#2}%
+ \else
+ \@xp\decl@twang#1?\@nil{#2}%
+ \fi
+}
+% \end{macrocode}
+% Note that this is dependent on a fixed interpretation of the
+% mathgroup number \arg4 .
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%
+% \section{Series of expressions}
+% The \env{dseries} environment is for a display
+% containing a series of expressions of the form \quoted{A, B} or \quoted{A and
+% B} or \quoted{A, B, and C} and so on. Typically the expressions
+% are separated by a double quad of space. If the expressions in a
+% series don't all fit in a single line, they are continued onto extra
+% lines in a ragged-center format.
+% \begin{macrocode}
+\newenvironment{dseries}{\let\eq@hasNumber\@True \@optarg\@dseries{}}{}%
+\def\enddseries#1{\check@punct@or@qed}%
+% \end{macrocode}
+%
+% And the unnumbered version of same.
+% \begin{macrocode}
+\newenvironment{dseries*}{\let\eq@hasNumber\@False \@optarg\@dseries{}}{}%
+\@namedef{enddseries*}#1{\check@punct@or@qed}%
+\@namedef{end@dseries*}{\end@dseries}%
+\def\@dseries[#1]{%
+% \end{macrocode}
+% Turn off the special breaking behavior of mathrels \etc for math
+% formulas embedded in a \env{dseries} environment.
+%
+%BRM: DS Expermient: Use alternative display setup.
+% \begin{macrocode}
+% \def\display@setup{\displaystyle}%
+ \let\display@setup\dseries@display@setup
+ % Question: should this be the default for dseries???
+% \let\eq@centerlines\@True
+ \global\eq@wdCond\z@
+% \end{macrocode}
+% BRM: use special layout for dseries
+% \begin{macrocode}
+% \@dmath[#1]%
+ \@dmath[layout={M},#1]%
+ \mathsurround\z@\@@math \penalty\@Mi
+ \let\endmath\ends@math
+ \def\premath{%
+% \end{macrocode}
+% BRM: Tricky to cleanup space OR add space ONLY BETWEEN math!
+% \begin{macrocode}
+ \ifdim\lastskip<.3em \unskip
+ \else\ifnum\lastpenalty<\@M \dquad\fi\fi
+}%
+% \end{macrocode}
+%BRM: Tricky; if a subformula breaks, we'd like to start the next on new line!
+% \begin{macrocode}
+ \def\postmath{\unpenalty\eq@addpunct \penalty\intermath@penalty \dquad \@ignoretrue}%
+\ignorespaces
+}
+\def\end@dseries{%
+ \unskip\unpenalty
+ \@@endmath \mathsurround\z@ \end@dmath
+}
+% \end{macrocode}
+% BRM: Try this layout for dseries: Essentially layout i, but w/o
+% limit to 1 line. And no fallback!
+% \begin{macrocode}
+\def\eq@try@layout@M{%
+ \edef\@parshape{\parshape 1 0pt \the\eq@linewidth\relax}%
+ \eq@trial@b{M}{}%
+}
+% \end{macrocode}
+% BRM: Tricky to get right value here.
+% Prefer breaks between formula if we've got to break at all.
+% \begin{macrocode}
+%\def\intermath@penalty{-201}%
+\def\intermath@penalty{-221}%
+% \end{macrocode}
+% BRM: A bit tighter than it was ( 1em minus.25em )
+% \begin{macrocode}
+%\newcommand\dquad{\hskip0.4em}
+\newcommand\dquad{\hskip0.6em minus.3em}
+\newcommand\premath{}\newcommand\postmath{}
+% \end{macrocode}
+%
+% Change the \env{math} environment to add
+% \cs{premath} and \cs{postmath}. They are no-ops except
+% inside a \env{dseries} environment.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Redefinition of math environment to take advantage of dseries env.
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+%
+%
+%
+%
+% \section{Equation groups}
+% For many equation groups the strategy is easy: just center each
+% equation individually following the normal rules for a single
+% equation. In some groups, each equation gets its own number; in
+% others, a single number applies to the whole group (and may need to be
+% vertically centered on the height of the group). In still other
+% groups, the equations share a parent number but get individual equation
+% numbers consisting of parent number plus a letter.
+%
+% If the main relation symbols in a group of equations are to be
+% aligned, then the final alignment computations cannot be done until the
+% end of the group \mdash \ie , the horizontal positioning of the first
+% $n - 1$ equations cannot be done immediately. Yet because of
+% the automatic line breaking, we cannot calculate an initial value of
+% RHS-max over the whole group unless we do a trial run on each equation
+% first to find an RHS-max for that equation. Once we know RHS-group-max
+% and LHS-group-max we must redo the trial set of each equation because
+% they may affect the line breaks. If the second trial for an
+% equation fails (one of its lines exceeds the available width), but
+% the first one succeeded, fall back to the first trial, \ie let that
+% equation fall out of alignment with the rest of the group.
+%
+%
+% All right then, here is the general idea of the whole algorithm for
+% group alignment.
+% To start with, ignore the possibility of equation numbers so that
+% our equation group has the form:
+% \begin{literalcode}
+% LHS[1] RHS[1,1] RHS[1,2] ... RHS[1,n[1]]
+% LHS[2] RHS[2,1] RHS[2,2] ... RHS[2,n[2]]
+% ...
+% LHS[3] RHS[3,1] RHS[3,2] ... RHS[3,n[3]]
+% \end{literalcode}
+% The number of RHS's might not be the same for all of the
+% equations.
+% First, accumulate all of the equation contents in a queue, checking
+% along the way to find the maximum width of all the LHS's and the maximum
+% width of all the RHS's.
+% Call these widths maxwd\_L and maxwd\_R.
+% Clearly if maxwd\_L + maxwd\_R is less than or equal to the available
+% equation width then aligning all of the equations is going to be simple.
+%
+%
+% Otherwise we are going to have to break at least one of the RHS's
+% and/or at least one of the LHS's.
+% The first thing to try is using maxwd\_L for the LHS's and breaking
+% all the RHS's as needed to fit in the remaining space.
+% However, this might be a really dumb strategy if one or more of the
+% LHS's is extraordinarily wide.
+% So before trying that we check whether maxwd\_L exceeds some
+% threshold width beyond which it would be unsensible not to break the LHS.
+% Such as, max(one-third of the available width; six ems), or
+% something like that.
+% Or how about this?
+% Compare the average LHS width and RHS width and divide up the available
+% width in the same ratio for line breaking purposes.
+%
+%
+% BRM: Fairly broad changes; it mostly didn't work before (for me).
+%
+% \begin{description}
+% \item[\cs{begin}\csarg{dgroup} produces a `numbered' group]
+% The number is the next equation number.
+% There are 2 cases:
+% \begin{itemize}
+% \item If ANY contained equations are numbered (|\begin{dmath}|),
+% then they will be subnumbered: eg 1.1a
+% and the group number is not otherwise displayed.
+% \item If ALL contained equations are unnumbered (|\begin{dmath*}|)
+% then the group, as a whole, gets a number displayed,
+% using the same number placement as for equations.
+% \end{itemize}
+% \item[\cs{begin}\csarg{dgroup*} produces an unnumbered group.]
+% Contained equations are numbered, or not, as normal.
+% But note that in the mixed case, it's too late to
+% force the unnumbered eqns to \cs{retry@with@number}
+% We'll just do a simple check of dimensions, after the fact,
+% and force a shiftnumber if we're stuck.
+%
+% NOTE: Does this work for dseries, as well? (alignment?)
+%
+% NOTE: Does \cs{label} attach to the expected thing?
+%
+% \item[For number placement] We use shiftnumber placement on ALL equations
+% if ANY equations need it, or if an unnumbered equation is too
+% wide to be aligned, given that the group or other eqns are numbered.
+% [does this latter case interract with the chosen alignment?]
+%
+% \item[For Alignment]
+% As currently coded, it tries to align on relations, by default.
+% If LHS's are not all present, or too long, it switches to left-justify.
+% Maybe there are other cases that should switch?
+% Should there be a case for centered?
+%
+% NOTE: Should there be some options to choose alignment?
+% \end{description}
+%
+% \begin{macro}{\eq@group}
+% \begin{macro}{\GRP@top}
+%
+% \begin{macrocode}
+\let\eq@group\@False
+\let\grp@shiftnumber\@False
+\let\grp@hasNumber\@False
+\let\grp@eqs@numbered\@False
+\let\grp@aligned\@True
+\global\let\GRP@top\@True
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+%
+%
+% Definition of the \env{dgroup} environment.
+% \begin{macrocode}
+\newenvironment{dgroup}{%
+ \let\grp@hasNumber\@True\@optarg\@dgroup{}%
+}{%
+ \end@dgroup
+}
+% \end{macrocode}
+% And the.
+% \begin{macrocode}
+\newtoks\GRP@queue
+\newenvironment{dgroup*}{%
+ \let\grp@hasNumber\@False\@optarg\@dgroup{}%
+}{%
+ \end@dgroup
+}
+\def\@dgroup[#1]{%
+ \debugmsg{=== DGROUP ==================================================}%
+ \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
+ \global\grp@wdL\z@\global\grp@wdR\z@\global\grp@wdT\z@
+ \global\grp@linewidth\z@\global\grp@wdNum\z@
+ \global\let\grp@eqs@numbered\@False
+ \global\let\grp@aligned\@True
+ \global\let\grp@shiftnumber\@False
+ \eq@prelim
+ \setkeys{breqn}{#1}%
+ \if\grp@hasNumber \grp@setnumber \fi
+}
+\def\end@dgroup{%
+ \EQ@displayinfo \grp@finish
+ \if\grp@hasNumber\grp@resetnumber\fi
+}
+% \end{macrocode}
+% If the \pkg{amsmath} package is not loaded the parentequation
+% counter will not be defined.
+% \begin{macrocode}
+\@ifundefined{c@parentequation}{\newcounter{parentequation}}{}
+% \end{macrocode}
+% Init.
+% \begin{macrocode}
+\global\let\GRP@label\@empty
+\def\add@grp@label{%
+ \ifx\@empty\GRP@label
+ \else \GRP@label \global\let\GRP@label\@empty
+ \fi
+}
+% \end{macrocode}
+% Before sending down the `equation' counter to the subordinate level,
+% set the current number in \cs{EQ@numbox}. The
+% \cs{eq@setnumber} function does everything we need here. If
+% the child equations are unnumbered, \cs{EQ@numbox} will retain the
+% group number at the end of the group.
+% \begin{macrocode}
+\def\grp@setnumber{%
+ \global\let\GRP@label\next@label \global\let\next@label\@empty
+ % Trick \eq@setnumber to doing our work for us.
+ \let\eq@hasNumber\@True
+ \eq@setnumber
+% \end{macrocode}
+% Define \cn{theparentequation} equivalent to current
+% \cn{theequation}. \cn{edef} is necessary to expand the
+% current value of the equation counter. This might in rare cases
+% cause something to blow up, in which case the user needs to add
+% \cn{protect}.
+% \begin{macrocode}
+ \global\sbox\GRP@numbox{\unhbox\EQ@numbox}%
+ \grp@wdNum\eq@wdNum
+ \let\eq@hasNumber\@False
+ \let\eq@number\@empty
+ \eq@wdNum\z@
+%
+ \protected@edef\theparentequation{\theequation}%
+ \setcounter{parentequation}{\value{equation}}%
+% \end{macrocode}
+% And set the equation counter to 0, so that the normal incrementing
+% processes will produce the desired results if the child equations are
+% numbered.
+% \begin{macrocode}
+ \setcounter{equation}{0}%
+ \def\theequation{\theparentequation\alph{equation}}%
+ \debugmsg{Group Number \theequation}%
+}
+% \end{macrocode}
+% At the end of a group, need to reset the equation counter.
+% \begin{macrocode}
+\def\grp@resetnumber{%
+ \setcounter{equation}{\value{parentequation}}%
+}
+\newbox\GRP@box
+\newbox\GRP@wholebox
+% \end{macrocode}
+% Save data for this equation in the group
+% * push the trial data onto end of \cs{GRP@queue}
+% * push an hbox onto the front of \cs{GRP@box}
+% containing: \cs{EQ@box}, \cs{EQ@copy}, \cs{penalty} 1 and \cs{EQ@numbox}
+% \begin{macro}{\grp@push}
+%
+% For putting the equation on a queue.
+% \begin{macrocode}
+\def\grp@push{%
+ \global\GRP@queue\@xp\@xp\@xp{\@xp\the\@xp\GRP@queue
+ \@xp\@elt\@xp{\EQ@trial}%
+ }%
+ \global\setbox\GRP@box\vbox{%
+ \hbox{\box\EQ@box\box\EQ@copy\penalty\@ne\copy\EQ@numbox}%
+ \unvbox\GRP@box
+ }%
+ \global\let\GRP@top\@False
+ \EQ@trial
+ \if\eq@isIntertext\else
+ \ifdim\eq@wdL>\grp@wdL \global\grp@wdL\eq@wdL \fi
+ \ifdim\eq@wdT>\grp@wdT \global\grp@wdT\eq@wdT \fi
+ \setlength\dim@a{\eq@wdT-\eq@wdL}%
+ \ifdim\dim@a>\grp@wdR \global\grp@wdR\dim@a \fi
+ \ifdim\eq@linewidth>\grp@linewidth \global\grp@linewidth\eq@linewidth\fi
+ \if\eq@hasNumber
+ \global\let\grp@eqs@numbered\@True
+ \ifdim\eq@wdNum>\grp@wdNum\global\grp@wdNum\eq@wdNum\fi
+ \fi
+ \if\EQ@hasLHS\else\global\let\grp@aligned\@False\fi
+ \if D\eq@layout \global\let\grp@aligned\@False\fi % Layout D (usually) puts rel on 2nd line.
+ \if\eq@shiftnumber\global\let\grp@shiftnumber\@True\fi % One eq shifted forces all.
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\grp@finish}
+%
+% Set accumulated equations from a \env{dgroup} environment.
+%
+% BRM: Questionable patch!!
+% When processing the \cs{GRP@queue}, put it into a \cs{vbox}, then \cs{unvbox} it.
+% This since there's a bizarre problem when the \cs{output} routine
+% gets invoked at an inopportune moment: All the not-yet-processed
+% \cs{GRP@queue} ends up in the \cs{@freelist} and bad name clashes happen.
+% Of course, it could be due to some other problem entirely!!!
+% \begin{macrocode}
+\def\grp@finish{%
+% \debug@box\GRP@box
+% \debugmsg{\GRP@queue: \the\GRP@queue}%
+% \end{macrocode}
+% == Now that we know the collective measurements, make final decision
+% about alignment \& shifting. Check if alignment is still possible
+% \begin{macrocode}
+ \setlength\dim@a{\grp@wdL+\grp@wdR-4em}% Allowance for shrink?
+ \if\grp@aligned\ifdim\dim@a>\grp@linewidth
+ \global\let\grp@aligned\@False
+ \fi\fi
+% \end{macrocode}
+% If we're adding an unshifted group number that equations didn't know
+% about, re-check shifting
+% \begin{macrocode}
+ \addtolength\dim@a{\grp@wdNum }% Effective length
+ \if\grp@shiftnumber\else\if\grp@hasNumber\if\grp@eqs@numbered\else\ifdim\dim@a>\grp@linewidth
+ \global\let\grp@shiftnumber\@True
+ \fi\fi\fi\fi
+% \end{macrocode}
+% If we can still align, total width is sum of maximum LHS \& RHS
+% \begin{macrocode}
+ \if\grp@aligned
+ \global\grp@wdT\grp@wdL\global\advance\grp@wdT\grp@wdR
+ \fi
+ \debugmsg{======= DGROUP Formatting
+ ^^J||===== \grp@wdL=\the\grp@wdL, \grp@wdR=\the\grp@wdR
+ ^^J||===== Shift Number=\theb@@le\grp@shiftnumber, Eqns. numbered=\theb@@le\grp@eqs@numbered
+ ^^J||===== Aligned=\theb@@le\grp@aligned
+ ^^J||===== \grp@wdNum=\the\grp@wdNum}%
+% \end{macrocode}
+% BRM: Originally this stuff was dumped directly, without capturing it
+% in a \cs{vbox}
+% \begin{macrocode}
+ \setbox\GRP@wholebox\vbox{%
+ \let\@elt\eqgrp@elt
+ \the\GRP@queue
+ }%
+% \end{macrocode}
+% If we're placing a group number (not individual eqn numbers)
+% NOTE: For now, just code up LM number
+% NOTE: Come back and handle other cases.
+% NOTE: Vertical spacing is off, perhaps because of inter eqn. glue
+% \begin{macrocode}
+ \eq@topspace{\vskip\parskip}%
+ \if\grp@hasNumber\if\grp@eqs@numbered\else
+% \eq@topspace{\vskip\parskip}%
+ \if\grp@shiftnumber
+ \copy\GRP@numbox \penalty\@M
+ \kern\eqlineskip
+ \else
+ \setlength\dim@a{%
+ (\ht\GRP@wholebox+\dp\GRP@wholebox+\ht\GRP@numbox-\dp\GRP@numbox)/2}%
+ \setlength\skip@c{\dim@a-\ht\GRP@numbox}%
+ \vglue\skip@c% NON discardable
+ \copy\GRP@numbox \penalty\@M
+\debugmsg{GROUP NUMBER: preskip:\the\skip@c, postkern:\the\dim@a, height:\the\ht\GRP@wholebox,
+ ^^J||===== box height:\the\ht\GRP@numbox, box depth:\the\dp\GRP@numbox}%
+ \kern-\dim@a
+ \kern-\abovedisplayskip % To cancel the topspace above the first eqn.
+ \fi
+ \fi\fi
+%\debug@box\GRP@wholebox
+ \unvbox\GRP@wholebox
+ \let\@elt\relax
+% \end{macrocode}
+% We'd need to handle shifted, right number here, too!!!
+% \begin{macrocode}
+ \eq@botspace % not needed unless bottom number?
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\eqgrp@elt}
+%
+% Mission is to typeset the next equation from the group queue.
+%
+% The arg is an \cs{EQ@trial}
+% \begin{macrocode}
+\def\eqgrp@elt#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%
+ \if\eq@isIntertext
+ \vskip\belowdisplayskip
+ \unvbox\EQ@copy
+ \else
+ \grp@override
+ \eq@finish
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% Override the \cs{eq@trial} data as needed for this equation in this group
+% NOTE: w/ numbering variations (see above), we may need to tell
+% \cs{eq@finish} to allocate space for a number, but not actually have one
+% \begin{macrocode}
+\def\grp@override{%
+% \end{macrocode}
+% For aligned (possibly becomes an option?)
+% For now ASSUMING we started out as CLM!!!
+% \begin{macrocode}
+ \def\eqindent{I}%
+% \end{macrocode}
+% compute nominal left for centering the group
+% \begin{macrocode}
+ \setlength\dim@a{(\grp@linewidth-\grp@wdT)/2}%
+% \end{macrocode}
+% Make sure L+R not too wide; should already have unset alignment
+% \begin{macrocode}
+ \ifdim\dim@a<\z@\dim@a=\z@\fi
+ \dim@b\if L\eqnumside\grp@wdNum\else\z@\fi
+% \end{macrocode}
+% make sure room for number on left, if needed.
+% \begin{macrocode}
+ \if\grp@shiftnumber\else
+ \ifdim\dim@b>\dim@a\dim@a\dim@b\fi
+ \fi
+ \if\grp@aligned
+ \addtolength\dim@a{\grp@wdL-\eq@wdL}%
+ \fi
+ \mathindent\dim@a
+ \ifdim\dim@b>\dim@a
+ \let\eq@shiftnumber\@True
+ \fi
+% \end{macrocode}
+% Could set |\def\eqnumplace{T}| (or even (m) if indentation is enough).
+%
+% NOTE: Work out how this should interact with the various formats!!!
+% NOTE: should recognize the case where the LHS's are a bit Wild,
+% and then do simple left align (not on relation)
+% \begin{macrocode}
+}
+% \end{macrocode}
+%
+%
+%
+% \section{The \env{darray} environment}
+% There are two potential applications for darray. One
+% is like eqnarray where the natural structure of the material crosses the
+% table cell boundaries, and math operator spacing needs to be preserved
+% across cell boundaries. And there is also the feature of
+% attaching an equation number to each row. The other application
+% is like a regular array but with automatic displaystyle math in each
+% cell and better interline spacing to accommodate outsize cell
+% contents. In this case it is difficult to keep the vert ruling
+% capabilities of the standard \env{array} environment without
+% redoing the implementation along the lines of Arseneau's
+% \pkg{tabls} package. Because the vert ruling feature is at
+% cross purposes with the feature of allowing interline stretch and page
+% breaks within a multiline array of equations, the \env{darray}
+% environment is targeted primarily as an alternative to
+% \env{eqnarray}, and does not support vertical ruling.
+%
+% Overall strategy for \env{darray} is to use
+% \cs{halign} for the body. In the case of a group, use a
+% single halign for the whole group!
+% \begin{aside}
+% What about intertext?
+% \end{aside}
+%
+% That's the most reliable way
+% to get accurate column widths. Don't spread the halign to the
+% column width, just use the natural width. Then, if we repack the
+% contents of the halign into \cs{EQ@box} and \cs{EQ@copy}, as
+% done for dmath, and twiddle a bit with the widths of the first and last
+% cell in each row, we can use the same algorithms for centering and
+% equation number placement as dmath! As well as handling footnotes
+% and vadjust objects the same way.
+%
+% We can't just use \cs{arraycolsep} for \env{darray}, if
+% we want to be able to change it without screwing up interior arrays.
+% So let's make a new colsep variable. The initial value is
+% \quoted{2em, but let it shrink if necessary}.
+% \begin{macrocode}
+\newskip\darraycolsep \darraycolsep 20pt plus1fil minus12pt
+% \end{macrocode}
+% Let's make a nice big default setup with eighteen columns, split up
+% into six sets of lcr like \env{eqnarray}.
+% \begin{macrocode}
+\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]{%
+ \debugmsg{=== DARRAY ==================================================}%
+ \if\eq@group\else\eq@prelim\fi
+% \end{macrocode}
+% Init the halign preamble to empty, then unless the \quoted{cols} key is
+% used to provide a non-null preamble just use the
+% default darray preamble which is a multiple lcr.
+% \begin{macrocode}
+ \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
+}
+% \end{macrocode}
+% Assimilate following punctuation.
+% \begin{macrocode}
+\def\enddarray#1{\check@punct@or@qed}
+\def\end@darray{%
+ \ifvmode\else \eq@addpunct \Mathstrut@\fi\crcr \egroup
+ \dar@capture
+ \egroup
+}
+% \end{macrocode}
+%
+% The \cs{dar@capture} function steps back through the
+% list of row boxes and grinds them up in the best possible way.
+% \begin{macrocode}
+\def\dar@capture{%
+%% \showboxbreadth\maxdimen\showboxdepth99\showlists
+ \eq@wdL\z@ \eq@wdRmax\z@
+ \dar@repack
+}
+% \end{macrocode}
+%
+% The \cs{dar@repack} function is a variation of
+% \cs{eq@repack}.
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+%
+%
+%
+%
+% \section{Miscellaneous}
+% The \cs{condition} command. With
+% the star form, set the argument in math mode instead of text mode.
+% In a series of conditions, use less space between members of the
+% series than between the conditions and the main equation body.
+%
+% BRM: Some modifications here, since I like for the condition
+% to go flush right. (thus, it also affects centering, margins, etc)
+% \begin{macrocode}
+\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]{%
+ \unpenalty\unskip\unpenalty\unskip % BRM Added
+ \hbox{#1}%
+ \penalty -201\relax\hbox{}% Penalty to allow breaks here.
+ \hskip\conditionsep
+ \if@tempswa \@xp\hbox \else \@xp\condition@b\fi
+ {#2}%
+ \endgroup
+% \end{macrocode}
+% BRM: Testing if I can measure conditions?
+% \begin{macrocode}
+ \setbox\z@\if@tempswa\hbox{#2}\else\hbox{\textmath@setup #2}\fi
+ \global\eq@wdCond\wd\z@
+ \let\cond@gobble\@gobble
+}
+% \end{macrocode}
+% For a math condition.
+% This is called inside a group so we don't need extra grouping to
+% localize the effect of \cs{textmath@setup} which turns off the
+% line-breaking features of bin, rel, and delimiter symbols.
+% \begin{macrocode}
+\newcommand\condition@b[1]{%
+ \cond@gobble{\hskip\conditionsep}%
+ \textmath@setup #1%
+}
+% \end{macrocode}
+%
+% The \env{dsuspend} environment. First the old one that didn't work.
+% \begin{macrocode}
+\newenvironment{XXXXdsuspend}{%
+ \global\setbox\EQ@box\vbox\bgroup \@parboxrestore
+% \end{macrocode}
+% If we are inside a list environment, \cs{displayindent} and
+% \cs{displaywidth} give us \cs{@totalleftmargin} and
+% \cs{linewidth}.
+% \begin{macrocode}
+ \parshape 1 \displayindent \displaywidth\relax
+ \hsize=\columnwidth \noindent\ignorespaces
+}{%
+ \par\egroup
+% \end{macrocode}
+% Let's try giving \cs{EQ@box} the correct height for the first
+% line and \cs{EQ@copy} the depth of the last line.
+% \begin{macrocode}
+ \global\setbox\GRP@box\vbox{%
+ \vbox{\copy\EQ@box\vtop{\unvbox\EQ@box}}%
+ \unvbox\GRP@box
+ }%
+% \end{macrocode}
+% Need to add a dummy element to \cs{GRP@queue}.
+% \begin{macrocode}
+ \global\GRP@queue\@xp{\the\GRP@queue
+ \@elt{\gdef\EQ@trial{}}%
+ }%
+}
+% \end{macrocode}
+% And then the one that does work.
+% \begin{macrocode}
+\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{%
+ \hbox{\copy\EQ@box\vtop{\unvbox\EQ@box}}%
+ \unvbox\GRP@box
+ }%
+ \global\GRP@queue\@xp{\the\GRP@queue
+% \@elt{\gdef\EQ@trial{\let\eq@isIntertext\@True}}%
+ \@elt{\let\eq@isIntertext\@True}%
+ }%
+}
+% \end{macrocode}
+% Allow \cn{intertext} as a short form of the \env{dsuspend}
+% environment; it's more convenient to write, but it doesn't support
+% embedded verbatim because it reads the material as a macro argument.
+% To support simultaneous use of \pkg{amsmath} and
+% \pkg{breqn}, the user command \cs{intertext} is left alone
+% until we enter a \pkg{breqn} environment.
+% \begin{macrocode}
+\newcommand\breqn@intertext[1]{\dsuspend#1\enddsuspend}
+% \end{macrocode}
+%
+%
+% \begin{macro}{\*}
+% \begin{macro}{\discretionarytimes}
+% Discretionary times sign. Standard \latex definition
+% serves only for inline math. Should the thin space be
+% included? Not sure.
+% \begin{macrocode}
+\renewcommand{\*}{%
+ \if@display
+% \end{macrocode}
+% Since \cs{eq@binoffset} is mu-glue, we can't use it directly
+% with \cs{kern} but have to measure it separately in a box.
+% \begin{macrocode}
+ \setbox\z@\hbox{\mathsurround\z@$\mkern\eq@binoffset$}%
+ \discretionary{}{%
+ \kern\the\wd\z@ \textchar\discretionarytimes
+ }{}%
+ \thinspace
+ \else
+ \discretionary{\thinspace\textchar\discretionarytimes}{}{}%
+ \fi
+}
+% \end{macrocode}
+% This is only the symbol; it can be changed to some other symbol if
+% desired.
+% \begin{macrocode}
+\newcommand{\discretionarytimes}{\times}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\nref}
+%
+% This is like \cs{ref} but doesn't apply font changes or other
+% guff if the reference is undefined.
+% And it is fully expandable for use as a label value.
+% \begin{aside}
+%
+% Can break with Babel if author uses active characters in label key;
+% need to address that \begin{dn}
+% mjd,1999/01/21
+% \end{dn}
+% .
+% \end{aside}
+%
+% \begin{macrocode}
+\def\nref#1{\@xp\@nref\csname r@#1\endcsname}
+\def\@nref#1#2{\ifx\relax#1??\else \@xp\@firstoftwo#1\fi}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%
+%
+%
+% \section{Wrap-up}
+% The usual endinput.
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+%
+%
+%
+% \section{To do}
+% \begin{enumerate}
+% \item Alignment for equation groups.
+%
+%
+% \item
+% Use dpc's code for package options in keyval form.
+%
+% \item
+% Encapsulate \dquoted{break math} into a subroutine taking suitable
+% arguments.
+%
+% \item
+% Need a density check for layout S when linewidth is very small.
+%
+% \item
+% Make \verb":=" trigger a warning about using \cs{coloneq}
+% instead.
+%
+% \item Ill-centered multiline equation (three-line case) in
+% test008.
+%
+% \item Attaching a single group number.
+%
+%
+% \item
+% Make sure to dump out box registers after done using them.
+%
+% \item Do the implementation for \cs{eq@resume@parshape}.
+%
+%
+% \item Check on stackrel and buildrel and relbar and ???.
+%
+%
+% \item Test math symbols at the beginning of array cells.
+%
+% \item Test \dbslash cmd in and out of delims.
+%
+% \item Framing the equation body: the parshape and number placement
+% need adjusting when a frame is present.
+%
+%
+% \item Cascading line widths in list env.
+%
+%
+% \item Noalign option for dmath = multline arrangement?
+%
+%
+% \item Nocompact option, suggested 1998/05/19 by Andrew
+% Swann.
+%
+%
+% \item \cs{delbreak} cmd to add discretionary space at a break
+% within delimiters.
+%
+%
+% \item Reduce above/below skip when the number is shifted.
+%
+%
+% \item Need a \cs{middelim} command for marking a delimiter symbol
+% as nondirectional if it has an innate directionality \verb"()[]" \etc .
+%
+%
+% \item
+% \cs{xrightarrow} from amsmath won't participate in line
+% breaking unless something extra is done.
+% Make \cs{BreakingRel} and \cs{BreakingBin} functions?
+%
+% \item Placement of number in an indented quotation or
+% abstract.
+%
+% \item If $LHSwd > 2em$, it might be a good idea to try with
+% eq@indentstep = 2em before shifting the number. Currently this
+% doesn't happen if the first trial pass (without the number)
+% succeeds with $indentstep = LHSwd > 2em$.
+%
+%
+% \item Read past \verb"\end{enumerate}" when checking
+% for \verb"\end{proof}"?
+%
+% \item
+% Look into using a \dquoted{qed-list} of environment names instead of
+% checking the existence of \cs{proofqed}.
+%
+% \item Pick up the vadjust\slash footnote\slash mark handling.
+%
+%
+% \item Forcing\slash prohibiting page breaks after\slash before
+% an equation.
+%
+%
+% \item Adding a spanner brace on the left and individual numbers on
+% the right (indy-numbered cases).
+%
+%
+% \item Provide \cs{shiftnumber}, \cs{holdnumber} to
+% override the decision.
+%
+% \item Provide a mechanism for adjusting the vertical position of
+% the number. Here a version-specific selection macro would be
+% useful.
+% \begin{literalcode}
+% \begin{dmath}[
+% style={\foredition{1}{\raisenumber{13pt}}}
+% ]
+% \end{literalcode}
+%
+%
+% \item
+% Add an alignleft option for an equation group to mean, break and
+% align to a ladder layout as usual within the equations, but for the
+% group alignment used the leftmost point (for equations that don't
+% have an LHS, this makes no difference).
+%
+% \item
+% Test with Arseneau's wrapfig for parshape\slash everypar
+% interaction.
+%
+%
+% \item Fix up the macro/def elements.
+%
+% \item Convert the literal examples in section \quoted{Equation types and
+% forms} to typeset form.
+%
+%
+% \item Compile comparison-examples: \eg , a standard equation
+% env with big left-right objects that don't shrink, versus how shrinking
+% can allow it to fit.
+%
+%
+% \item Frame the \dquoted{figures} since they are mostly
+% text.
+%
+% \end{enumerate}
+%
+%
+%
+% Possible enhancements:
+% \begin{enumerate}
+% \item Provide a \opt{pull} option meaning to pull the first
+% and last lines out to the margin, like the \env{multline}
+% environment of the \pkg{amsmath} package. Maybe this should
+% get an optional argument, actually, to specify the amount of space left
+% at the margin.
+%
+% \item With the draft option, one would like to see the equation
+% labels in the left margin. Need to check with the
+% \pkg{showkeys} package.
+%
+%
+% \item Options for break preferences: if there's not enough room, do
+% we first shift the number, or first try to break up the equation
+% body?. In an aligned group, does sticking to the group alignment
+% take precedence over minimizing the number of line breaks needed for
+% individual equations?. And the general preferences probably need
+% to be overridable for individual instances.
+%
+% \item Extend suppress-breaks-inside-delimiters support to inline
+% math (suggestion of Michael Doob).
+%
+% \item Use belowdisplayshortskip above a dsuspend fragment if the
+% fragment is only one line and short enough compared to the equation line
+% above it.
+%
+%
+% \item Add \cs{eqfuzz} distinct from \cs{hfuzz}.
+% Make use of it in the measuring phase.
+%
+%
+% \item Provision for putting in a \quoted{continued} note.
+%
+% \item Conserve box mem: modify frac, sub, sup, overline, underline,
+% sqrt, to turn off \cs{bin@break} and (less urgently)
+% \cs{rel@break}.
+%
+%
+% \item More explicit support for Russian typesetting conventions (cf
+% Grinchuk article).
+%
+%
+% \item With package option \opt{refnumbers},
+% leave unnumbered all uncited equations, even if they are not done with
+% the star form (Bertolazzi's easyeqn idea).
+%
+% \item In an equation group, use a vertical bracket with the
+% equation number to mark the lines contained in that equation.
+%
+%
+% \item For a two-line multline thingamabob, try to
+% make sure that the lines overlap in the middle by 2 em or whatever
+% (settable design variable).
+%
+% \item Provide a separate vertical column for the principal mathrel
+% symbols and center them within the column if they aren't all the same
+% width. Maybe an option for \env{dmath}: relwidth=x, so that two
+% passes are not required to get the max width of all the mathrels.
+% Or, no, just require it to be an halign or provide a macro to be
+% applied to all the shorter rels:
+% \begin{literalcode}
+% lhs \widerel{19pt}{=} ...
+% \xrightarrow{foo} ...
+% \end{literalcode}
+%
+%
+% \item try to use vadjust for keepglue
+%
+% \end{enumerate}
diff --git a/Master/texmf-dist/source/latex/mh/empheq.dtx b/Master/texmf-dist/source/latex/mh/empheq.dtx
index 32f5fadbbd4..8f46877b052 100644
--- a/Master/texmf-dist/source/latex/mh/empheq.dtx
+++ b/Master/texmf-dist/source/latex/mh/empheq.dtx
@@ -1,38 +1,136 @@
% \iffalse meta-comment
-% File `empheq.dtx'.
-% Copyright 2002-2004 Morten H\o gholm.
-% moho01ab@student.cbs.dk
-%
-% It may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2003/12/01 or later.
+%
+% Copyright (C) 2002-2007 by Morten Hoegholm <mh.ctan@gmail.com>
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3 of this license or (at your option) any later
+% version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of
+% LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
-% The Current Maintainer of this work is Morten H\o gholm.
-%
-% This work consists of the files empheq.dtx and empheq.ins and the
-% derived files empheq.sty and ntheorem.fix.
-% \fi
-% \iffalse
-%<empheq>\NeedsTeXFormat{LaTeX2e}
-%<empheq>\ProvidesPackage{empheq}
-%<ntheorem>\ProvidesFile{ntheorem.fix}
-%<*dtx>
- \ProvidesFile{empheq.dtx}
-%</dtx>
- [2004/10/10 v2.11a
-%<empheq> Emphasizing equations (MH)
-%<ntheorem> empheq support and fixes for ntheorem (MH)
- ]
+% This Current Maintainer of this work is Morten Hoegholm.
+%
+% This work consists of the main source file empheq.dtx
+% and the derived files
+% empheq.sty, empheq.pdf, empheq.ins, empheq.drv.
+%
+% Distribution:
+% CTAN:macros/latex/contrib/mh/empheq.dtx
+% CTAN:macros/latex/contrib/mh/empheq.pdf
+%
+% Unpacking:
+% (a) If empheq.ins is present:
+% tex empheq.ins
+% (b) Without empheq.ins:
+% tex empheq.dtx
+% (c) If you insist on using LaTeX
+% latex \let\install=y\input{empheq.dtx}
+% (quote the arguments according to the demands of your shell)
+%
+% Documentation:
+% (a) If empheq.drv is present:
+% latex empheq.drv
+% (b) Without empheq.drv:
+% latex empheq.dtx; ...
+% The class ltxdoc loads the configuration file ltxdoc.cfg
+% if available. Here you can specify further options, e.g.
+% use A4 as paper format:
+% \PassOptionsToClass{a4paper}{article}
+%
+% Programm calls to get the documentation (example):
+% pdflatex empheq.dtx
+% makeindex -s gind.ist empheq.idx
+% pdflatex empheq.dtx
+% makeindex -s gind.ist empheq.idx
+% pdflatex empheq.dtx
+%
+% Installation:
+% TDS:tex/latex/mh/empheq.sty
+% TDS:doc/latex/mh/empheq.pdf
+% TDS:source/latex/mh/empheq.dtx
+%
+%<*ignore>
+\begingroup
+ \def\x{LaTeX2e}
+\expandafter\endgroup
+\ifcase 0\ifx\install y1\fi\expandafter
+ \ifx\csname processbatchFile\endcsname\relax\else1\fi
+ \ifx\fmtname\x\else 1\fi\relax
+\else\csname fi\endcsname
+%</ignore>
+%<*install>
+\input docstrip.tex
+\Msg{************************************************************************}
+\Msg{* Installation}
+\Msg{* Package: empheq 2007/12/03 v2.12 empheq (MH)}
+\Msg{************************************************************************}
+
+\keepsilent
+\askforoverwritefalse
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2002-2007 by Morten Hoegholm <mh.ctan@gmail.com>
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3 of this license or (at your option) any later
+version. The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of
+LaTeX version 2005/12/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+This Current Maintainer of this work is Morten Hoegholm.
+
+This work consists of the main source file empheq.dtx
+and the derived files
+ empheq.sty, empheq.pdf, empheq.ins, empheq.drv.
+
+\endpreamble
+
+\generate{%
+ \file{empheq.ins}{\from{empheq.dtx}{install}}%
+ \file{empheq.drv}{\from{empheq.dtx}{driver}}%
+ \usedir{tex/latex/mh}%
+ \file{empheq.sty}{\from{empheq.dtx}{package}}%
+}
+
+\obeyspaces
+\Msg{************************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* file into a directory searched by TeX:}
+\Msg{*}
+\Msg{* empheq.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file `empheq.drv'}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{************************************************************************}
+
+\endbatchfile
+%</install>
+%<*ignore>
+\fi
+%</ignore>
%<*driver>
-\documentclass[a4paper]{ltxdoc}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{empheq.drv}%
+ [2007/12/03 v2.12 Emphasizing equations (MH)]
+\documentclass{ltxdoc}
+\usepackage{mathpazo}
\usepackage[overload]{empheq}
-\usepackage{color,varioref,booktabs,fancybox}
+\usepackage{xcolor,varioref,booktabs,fancybox}
\pagestyle{headings}
\hyphenation{emph-eq}
@@ -211,7 +309,7 @@
\makeatother
\usepackage{graphicx}
-\usepackage[final,breaklinks=true,hyperindex=false,linkbordercolor=false]{hyperref}
+\usepackage[final,breaklinks=true,hyperindex=false]{hyperref}
\renewcommand*\usage[1]{\textit{\hyperpage{#1}}}
\OnlyDescription
@@ -252,7 +350,7 @@
% \changes{v0.5}{2002/12/30}{First experimental and very limited
% release}
%
-% \GetFileInfo{empheq.dtx}
+% \GetFileInfo{empheq.drv}
% \CheckSum{2495}
%
% \title{The \pkg{empheq} package\thanks{This file has version number
@@ -629,8 +727,8 @@
% \subsubsection{Compatibility with the old version}
%
% The current version (\fileversion) of \pkg{empheq} is incompatible with
-% versions prior to and including~0.7d. If you have documents produced
-% with versions prior to~0.7d, then you have to load the package
+% versions prior to and including~0.7e. If you have documents produced
+% with versions prior to~0.7e, then you have to load the package
% \pkg{empheq07} instead. \pkg{empheq07} now exists as a separate package
% package with its own documentation, but I strongly recommend switching
% to the new version because it is so much better.
@@ -1449,7 +1547,7 @@
% Should you have any feature request, suggestions, or bug reports
% then feel free to contact me at
% \begin{quote}
-% \email{moho01ab@student.cbs.dk}
+% \email{mh.ctan@gmail.com}
% \end{quote}
% Please put `empheq' in the subject line.
%
@@ -1560,7 +1658,9 @@
% \section{Requirements, Options, and Strategy}
% Lets start the package. We'll need the tools from \pkg{mhsetup}.
% \begin{macrocode}
-%<*empheq>
+%<*package>
+\ProvidesPackage{empheq}%
+ [2007/12/03 v2.12 Emphasizing equations (MH)]
% \end{macrocode}
% \begin{macrocode}
\RequirePackage{mhsetup}[2004/10/10]
@@ -1603,7 +1703,8 @@
%
% Load the \pkg{ntheorem} support file.
% \begin{macrocode}
-\DeclareOption{ntheorem}{\AtEndOfPackage{\input{ntheorem.fix}}}
+\gdef\g@EQ@ntheorem@support@bool{01}
+\DeclareOption{ntheorem}{\gdef\g@EQ@ntheorem@support@bool{00}}
% \end{macrocode}
% Pass other options to \pkg{mathtools}.
% \begin{macrocode}
@@ -3196,7 +3297,18 @@
\MH_let:NwN \hyper@refstepcounter\@gobble
}
% \end{macrocode}
+%
+% \subsection{\pkg{nccmath}}
%
+% Must disable this macro, otherwise the spacing is wrong.
+% \begin{macrocode}
+ \g@addto@macro\EQ_typeset_display_hook:{
+ \let\NCC@ignorepar\relax
+ }
+ \g@addto@macro\EQ_typeset_tags_hook:{
+ \let\NCC@ignorepar\relax
+ }
+% \end{macrocode}
%
% \subsection{Basic \pkg{ntheorem} support}
% \begin{macrocode}
@@ -3460,11 +3572,16 @@
}
% \end{macrocode}
% End of \cs{AtBeginDocument} additions.
+%
+% If we need to load \pkg{ntheorem} support this is where it
+% happens. Otherwise we just stop here.
% \begin{macrocode}
-%</empheq>
+\if\g@EQ@ntheorem@support@bool
+\else
+ \expandafter\endinput
+\fi
% \end{macrocode}
%
-%
% \section{Patching Things up for \pkg{ntheorem}}
% \label{sec:impl:ntheorem}
%
@@ -3480,7 +3597,6 @@
% in \pkg{amsmath} that could cause tags to cross page boundaries
% without warning. The \cs{nobreak} is the addition.
% \begin{macrocode}
-%<*ntheorem>
\def\default_raisetag:{\nobreak}
\def\raisetag#1{
\skip@#1\relax
@@ -3752,7 +3868,7 @@
\hfil
\fi:
\strut@
- $\m@th\displaystyle{}##\endmultline@math
+ $\m@th\displaystyle{}##\endmultline@math%$
\hfil
}%
\crcr
@@ -4042,9 +4158,9 @@
% \end{macrocode}
% \end{macro}
%
-% End of \pkg{ntheorem} patches.
+% End of \pkg{ntheorem} patches and package.
% \begin{macrocode}
-%</ntheorem>
+%</package>
% \end{macrocode}
% \Finale
\endinput
diff --git a/Master/texmf-dist/source/latex/mh/empheq07.dtx b/Master/texmf-dist/source/latex/mh/empheq07.dtx
index 09bb2c6f3c0..a8921940f1a 100644
--- a/Master/texmf-dist/source/latex/mh/empheq07.dtx
+++ b/Master/texmf-dist/source/latex/mh/empheq07.dtx
@@ -1,31 +1,133 @@
-%\iffalse meta-comment
-% File `empheq07.dtx'.
-% Copyright 2002-2004 Morten H\o gholm.
-% moho01ab@student.cbs.dk
+% \iffalse meta-comment
%
-% It may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2003/12/01 or later.
+% Copyright (C) 2002-2007 by Morten Hoegholm <mh.ctan@gmail.com>
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3 of this license or (at your option) any later
+% version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of
+% LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
-% The Current Maintainer of this work is Morten H\o gholm.
+% This Current Maintainer of this work is Morten Hoegholm.
+%
+% This work consists of the main source file empheq07.dtx
+% and the derived files
+% empheq07.sty, empheq07.pdf, empheq07.ins, empheq07.drv.
+%
+% Distribution:
+% CTAN:macros/latex/contrib/mh/empheq07.dtx
+% CTAN:macros/latex/contrib/mh/empheq07.pdf
+%
+% Unpacking:
+% (a) If empheq07.ins is present:
+% tex empheq07.ins
+% (b) Without empheq07.ins:
+% tex empheq07.dtx
+% (c) If you insist on using LaTeX
+% latex \let\install=y\input{empheq07.dtx}
+% (quote the arguments according to the demands of your shell)
%
-% This work consists of the files empheq07.dtx and empheq07.ins
-% and the derived file empheq07.sty.
+% Documentation:
+% (a) If empheq07.drv is present:
+% latex empheq07.drv
+% (b) Without empheq07.drv:
+% latex empheq07.dtx; ...
+% The class ltxdoc loads the configuration file ltxdoc.cfg
+% if available. Here you can specify further options, e.g.
+% use A4 as paper format:
+% \PassOptionsToClass{a4paper}{article}
%
-%<*dtx>
- \ProvidesFile{empheq07.dtx}
-%</dtx>
-%<package>\NeedsTeXFormat{LaTeX2e}
-%<package>\ProvidesPackage{empheq07}
- [2004/07/27 v0.7d Emphasizing equations (MH)]
+% Programm calls to get the documentation (example):
+% pdflatex empheq07.dtx
+% makeindex -s gind.ist empheq07.idx
+% pdflatex empheq07.dtx
+% makeindex -s gind.ist empheq07.idx
+% pdflatex empheq07.dtx
+%
+% Installation:
+% TDS:tex/latex/mh/empheq07.sty
+% TDS:doc/latex/mh/empheq07.pdf
+% TDS:source/latex/mh/empheq07.dtx
+%
+%<*ignore>
+\begingroup
+ \def\x{LaTeX2e}
+\expandafter\endgroup
+\ifcase 0\ifx\install y1\fi\expandafter
+ \ifx\csname processbatchFile\endcsname\relax\else1\fi
+ \ifx\fmtname\x\else 1\fi\relax
+\else\csname fi\endcsname
+%</ignore>
+%<*install>
+\input docstrip.tex
+\Msg{************************************************************************}
+\Msg{* Installation}
+\Msg{* Package: empheq07 2007/12/03 v0.7e empheq07 (MH)}
+\Msg{************************************************************************}
+
+\keepsilent
+\askforoverwritefalse
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2002-2007 by Morten Hoegholm <mh.ctan@gmail.com>
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3 of this license or (at your option) any later
+version. The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of
+LaTeX version 2005/12/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+This Current Maintainer of this work is Morten Hoegholm.
+
+This work consists of the main source file empheq07.dtx
+and the derived files
+ empheq07.sty, empheq07.pdf, empheq07.ins, empheq07.drv.
+
+\endpreamble
+
+\generate{%
+ \file{empheq07.ins}{\from{empheq07.dtx}{install}}%
+ \file{empheq07.drv}{\from{empheq07.dtx}{driver}}%
+ \usedir{tex/latex/mh}%
+ \file{empheq07.sty}{\from{empheq07.dtx}{package}}%
+}
+
+\obeyspaces
+\Msg{************************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* file into a directory searched by TeX:}
+\Msg{*}
+\Msg{* empheq07.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file `empheq07.drv'}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{************************************************************************}
+
+\endbatchfile
+%</install>
+%<*ignore>
+\fi
+%</ignore>
%<*driver>
-\documentclass[a4paper]{ltxdoc}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{empheq07.drv}%
+ [2007/12/03 v0.7e Emphasizing equations (MH)]
+\documentclass{ltxdoc}
\usepackage{empheq07}
\usepackage{color,fancybox,ifpdf}
\ifpdf\else
@@ -62,7 +164,7 @@
% \ifpdf\else
% \BonusExampletrue
% \fi
-% \GetFileInfo{empheq07.dtx}
+% \GetFileInfo{empheq07.drv}
% \CheckSum{1273}
% \title{The \EQ\ package\thanks{This file
% has version number \fileversion, last
@@ -357,6 +459,8 @@
% \LaTeX\ system.
% \begin{macrocode}
%<*package>
+\ProvidesPackage{empheq07}%
+ [2007/12/03 v0.7e Emphasizing equations (MH)]
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{amsmath}}
\ProcessOptions\relax
\RequirePackage{amsmath}[2000/07/18]
diff --git a/Master/texmf-dist/source/latex/mh/flexisym.dtx b/Master/texmf-dist/source/latex/mh/flexisym.dtx
new file mode 100644
index 00000000000..3ce279e4e82
--- /dev/null
+++ b/Master/texmf-dist/source/latex/mh/flexisym.dtx
@@ -0,0 +1,1279 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 1997-2003 by Michael J. Downes
+% Copyright (C) 2007 by Morten Hoegholm <mh.ctan@gmail.com>
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3 of this license or (at your option) any later
+% version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of
+% LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Morten Hoegholm.
+%
+% This work consists of the main source file flexisym.dtx
+% and the derived files
+% flexisym.sty, flexisym.pdf, flexisym.ins, flexisym.drv,
+% cmbase.sym, msabm.sym.
+%
+% Distribution:
+% CTAN:macros/latex/contrib/mh/flexisym.dtx
+% CTAN:macros/latex/contrib/mh/flexisym.pdf
+%
+% Unpacking:
+% (a) If flexisym.ins is present:
+% tex flexisym.ins
+% (b) Without flexisym.ins:
+% tex flexisym.dtx
+% (c) If you insist on using LaTeX
+% latex \let\install=y\input{flexisym.dtx}
+% (quote the arguments according to the demands of your shell)
+%
+% Documentation:
+% (a) If flexisym.drv is present:
+% latex flexisym.drv
+% (b) Without flexisym.drv:
+% latex flexisym.dtx; ...
+% The class ltxdoc loads the configuration file ltxdoc.cfg
+% if available. Here you can specify further options, e.g.
+% use A4 as paper format:
+% \PassOptionsToClass{a4paper}{article}
+%
+% Programm calls to get the documentation (example):
+% pdflatex flexisym.dtx
+% makeindex -s gind.ist flexisym.idx
+% pdflatex flexisym.dtx
+% makeindex -s gind.ist flexisym.idx
+% pdflatex flexisym.dtx
+%
+% Installation:
+% TDS:tex/latex/mh/flexisym.sty
+% TDS:tex/latex/mh/cmbase.sym
+% TDS:tex/latex/mh/mathpazo.sym
+% TDS:tex/latex/mh/mathptmx.sym
+% TDS:tex/latex/mh/msabm.sym
+% TDS:doc/latex/mh/flexisym.pdf
+% TDS:source/latex/mh/flexisym.dtx
+%
+%<*ignore>
+\begingroup
+ \def\x{LaTeX2e}
+\expandafter\endgroup
+\ifcase 0\ifx\install y1\fi\expandafter
+ \ifx\csname processbatchFile\endcsname\relax\else1\fi
+ \ifx\fmtname\x\else 1\fi\relax
+\else\csname fi\endcsname
+%</ignore>
+%<*install>
+\input docstrip.tex
+\Msg{************************************************************************}
+\Msg{* Installation}
+\Msg{* Package: flexisym 2007/12/10 v0.95 Flexisym (MH)}
+\Msg{************************************************************************}
+
+\keepsilent
+\askforoverwritefalse
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 1997-2003 by Michael J. Downes
+Copyright (C) 2007 by Morten Hoegholm <mh.ctan@gmail.com>
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3 of this license or (at your option) any later
+version. The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of
+LaTeX version 2005/12/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+This Current Maintainer of this work is Morten Hoegholm.
+
+This work consists of the main source file flexisym.dtx
+and the derived files
+ flexisym.sty, flexisym.pdf, flexisym.ins, flexisym.drv,
+ cmbase.sym, mathpazo.sym, mathptmx.sym, msabm.sym.
+
+\endpreamble
+
+\generate{%
+ \file{flexisym.ins}{\from{flexisym.dtx}{install}}%
+ \file{flexisym.drv}{\from{flexisym.dtx}{driver}}%
+ \usedir{tex/latex/mh}%
+ \file{flexisym.sty}{\from{flexisym.dtx}{package}}%
+ \file{cmbase.sym}{\from{flexisym.dtx}{cmbase}}%
+ \file{mathpazo.sym}{\from{flexisym.dtx}{mathpazo}}%
+ \file{mathptmx.sym}{\from{flexisym.dtx}{mathptmx}}%
+ \file{msabm.sym}{\from{flexisym.dtx}{msabm}}%
+}
+
+\obeyspaces
+\Msg{************************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* files into a directory searched by TeX:}
+\Msg{*}
+\Msg{* flexisym.sty, cmbase.sym, mathpazo.sym, mathptmx.sym, msabm.sym}
+\Msg{*}
+\Msg{* To produce the documentation run the file `flexisym.drv'}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{************************************************************************}
+
+\endbatchfile
+%</install>
+%<*ignore>
+\fi
+%</ignore>
+%<*driver>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{flexisym.drv}%
+ [2007/12/10 v0.95 flexisym (MH)]
+\documentclass{ltxdoc}
+\providecommand*\pkg[1]{\textsf{#1}}
+\providecommand*\cls[1]{\textsf{#1}}
+\providecommand*\opt[1]{\texttt{#1}}
+\providecommand*\env[1]{\texttt{#1}}
+\providecommand*\fn[1]{\texttt{#1}}
+\makeatletter
+\providecommand{\AmS}{{\protect\AmSfont
+ A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}
+\providecommand{\AmSfont}{%
+ \usefont{OMS}{cmsy}{\if\expandafter\@car\f@series\@nil bb\else m\fi}{n}}
+\makeatother
+\newenvironment{aside}{\begin{quote}\bfseries}{\end{quote}}
+\begin{document}
+ \DocInput{flexisym.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{The \textsf{flexisym} package}
+% \date{2007/12/10 v0.95}
+% \author{Morten H\o gholm \\\texttt{mh.ctan@gmail.com}}
+%
+% \maketitle
+%
+% \part*{User's guide}
+%
+% For now, the user's guide is in breqn.
+%
+% \StopEventually{}
+% \part*{Implementation}
+%
+% \section{flexisym}
+%
+% \begin{macrocode}
+%<*package>
+\ProvidesPackage{flexisym}[2007/12/10 v0.95]
+\let\@xp\expandafter \let\@nx\noexpand
+\edef\do{%
+ \@nx\AtEndOfPackage{%
+ \catcode\number`\"=\number\catcode`\"
+ \relax
+ }%
+}
+\do \let\do\relax
+\catcode`\"=12
+\let\@sym\@gobble
+\DeclareOption{robust}{%
+ \def\@sym#1{%
+ \ifx\protect\@typeset@protect \else\protect#1\@xp\@gobblefour\fi
+ }%
+}
+\def\mg@bin{2}% binary operators
+\def\mg@rel{2}% relations
+%%\def\mg@nre{B}% negated relations
+\def\mg@del{3}% delimiters
+%%\def\mg@arr{B}% arrows
+\def\mg@acc{0}% accents
+\def\mg@cop{3}% cumulative operators (sum, int)
+\def\mg@latin{1}% (Latin) letters
+\def\mg@greek{1}% (lowercase) Greek
+\def\mg@Greek{0}% (capital) Greek
+%%\def\mg@bflatin{4}% bold upright Latin letters ?
+%%\def\mg@Bbb{B}% blackboard bold
+\def\mg@cal{2}% script/calligraphic
+%%\def\mg@frak{5}% Fraktur letters
+\def\mg@digit{0}% decimal digits % 1 = oldstyle, 0 = capital
+\expandafter\let\csname MathChar \endcsname\mathchar
+\expandafter\let\csname Delimiter \endcsname\delimiter
+\expandafter\let\csname Radical \endcsname\radical
+\newcommand{\MathChar}{}
+\edef\MathChar{\csname MathChar \endcsname\noexpand\string}
+\newcommand{\Delimiter}{}
+\edef\Delimiter{\csname Delimiter \endcsname\noexpand\string}
+\newcommand{\Radical}{}
+\edef\Radical{\csname Radical \endcsname\noexpand\string}
+\let\sumlimits\displaylimits
+\let\intlimits\nolimits
+\let\namelimits\displaylimits
+\edef\m@Ord#1#2#3{\csname MathChar \endcsname"0#1#2#3 }
+\edef\m@Var#1#2#3{\csname MathChar \endcsname"7#1#2#3 }
+\edef\m@Bin#1#2#3{\csname MathChar \endcsname"2#1#2#3 }
+\edef\m@Rel#1#2#3{\csname MathChar \endcsname"3#1#2#3 }
+\edef\m@Pun#1#2#3{\csname MathChar \endcsname"6#1#2#3 }
+\edef\m@COs#1#2#3{\csname MathChar \endcsname"1#1#2#3 \sumlimits}
+\edef\m@COi#1#2#3{\csname MathChar \endcsname"1#1#2#3 \intlimits}
+\def\delim@a#1#2#3#4{\ifx\relax#1#2#3#4\else#1\fi #2#3#4}
+\def\delim@b#1#2#3#4{\ifx\relax#1#2#3#4\else#1\fi }
+\def\@tempa{%
+ \@nx\@xp\@nx\delim@a\@nx\csname sd@##1##2##3\@nx\endcsname ##1##2##3 }
+\edef\m@DeL#1#2#3{\csname Delimiter \endcsname"4\@tempa}
+\edef\m@DeR#1#2#3{\csname Delimiter \endcsname"5\@tempa}
+\edef\m@DeB#1#2#3{\csname Delimiter \endcsname"0\@tempa}
+\edef\m@DeA#1#2#3{\csname Delimiter \endcsname"3\@tempa}
+\edef\m@Rad#1#2#3{\csname Radical \endcsname"\@tempa}
+\def\do#1#2{\@xp\def\csname sd@#1\endcsname{#2}}
+\do{300}{028}
+\do{301}{029}
+\do{302}{05B}
+\do{303}{05D}
+\do{304}{262}
+\do{305}{263}
+\do{306}{264}
+\do{307}{265}
+\do{308}{266}
+\do{309}{267}
+\do{30A}{268}
+\do{30B}{269}
+\do{30C}{26A}
+\do{30D}{26B}
+\do{30E}{13D}
+\do{30F}{26E}
+\do{340}{37A}
+\do{341}{37B}
+\do{33A}{33A}
+\do{33B}{33B}
+\do{33E}{33E}
+\do{33C}{26A}
+\do{33D}{26B}
+\do{378}{222}
+\do{379}{223}
+\do{33F}{26C}
+\do{37E}{22A}
+\do{37F}{22B}
+\do{377}{26D}
+\do{30F}{26E}
+\def\m@Acc#1#2#3#4{\mathaccent"#1#2#3{#4}}
+\def\@symAcc{\@sym}
+\let\@symtype\@firstofone
+\def\@symOrd#1#2{\@symtype\mathord{\OrdSymbol{#2}}}
+\def\@symVar{\@symOrd}
+\def\@symBin#1#2{\@symtype\mathbin{\OrdSymbol{#2}}}
+\def\@symRel#1#2{\@symtype\mathrel{\OrdSymbol{#2}}}
+\def\@symPun#1#2{\@symtype\mathpunct{\OrdSymbol{#2}}}
+\def\@symCOi#1#2{\@symtype{\mathop{\OrdSymbol{#2}}\intlimits}}
+\def\@symCOs#1#2{\@symtype{\mathop{\OrdSymbol{#2}}\sumlimits}}
+\def\@symOpe#1#2{\@symtype\mathopen{\OrdSymbol{#2}}}
+\def\@symClo#1#2{\@symtype\mathclose{\OrdSymbol{#2}}}
+\def\@symDeL#1#2{\@symtype\mathopen{\OrdSymbol{#2}}}
+\def\@symDeR#1#2{\@symtype\mathclose{\OrdSymbol{#2}}}
+\def\@symDeB#1#2{\@symtype\mathord{\OrdSymbol{#2}}}
+\def\@symInn#1#2{\@symtype\mathinner{\OrdSymbol{#2}}}
+\def\@xnce#1{\@xp\@nx\csname#1\endcsname}
+\let\sym@global\global
+\def\DeclareFlexSymbol#1#2#3#4{%
+ \begingroup
+ \edef\@tempb{\@nx\@sym\@nx#1\@xnce{m@#2}\@xnce{mg@#3}#4}%
+ \ifcat\@nx#1\relax
+ \sym@global\let#1\@tempb
+ \else
+ \sym@global\mathcode`#1="8000\relax
+ \lccode`\~=`#1\relax
+ \lowercase{\sym@global\let~\@tempb}%
+ \fi
+ \endgroup
+}
+\def\DeclareFlexCompoundSymbol#1#2#3{%
+ \@xp\DeclareRobustCommand\@xp#1\@xp{\csname @sym#2\endcsname#1{#3}}%
+ \sym@global\let#1#1\relax
+}
+\DeclareRobustCommand\textchar{\text@char\textfont}
+\DeclareRobustCommand\scriptchar{\text@char\scriptfont}%
+\def\text@char@a{\?\endgroup}%
+\def\text@char@sym#1#2#3{%
+ \begingroup
+ \let\@sym\relax % defense against infinite loops
+ \the\text@script@char#3%
+ \afterassignment\text@char@a
+ \chardef\?="%
+}
+\def\text@char#1#2{\begingroup\check@mathfonts
+ \let\text@script@char#1\let\@sym\text@char@sym
+ \let\@symtype\@secondoftwo \let\OrdSymbol\@firstofone
+ \let\ifmmode\iftrue \everymath{$\@gobble}%$
+ \def\mkern{\muskip\z@}\let\mskip\mkern
+ \ifcat\relax\noexpand#2#2%
+ \else
+ \lccode`\~=\expandafter`\string#2\relax
+ \lowercase{~}%
+ \fi
+ \endgroup
+}
+\providecommand\textprime{}
+\DeclareRobustCommand\textprime{\leavevmode
+ \raise.8ex\hbox{\text@char\scriptfont\prime}%
+}
+\@ifundefined{resetMathstrut@}{}{%
+ \def\resetMathstrut@{%
+ \setbox\z@\hbox{\textchar\vert}%
+ \ht\Mathstrutbox@\ht\z@ \dp\Mathstrutbox@\dp\z@
+ }%
+}
+\@ifundefined{rightarrowfill@}{}{%
+ \def\rightarrowfill@#1{\m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
+ $#1\copy\z@\mkern-6mu\cleaders
+ \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill
+ \mkern-6mu\OrdSymbol{\rightarrow}$}
+ \def\leftarrowfill@#1{\m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
+ $#1\OrdSymbol{\leftarrow}\mkern-6mu\cleaders
+ \hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill
+ \mkern-6mu\box\z@$}
+ \def\leftrightarrowfill@#1{\m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
+ $#1\OrdSymbol{\leftarrow}\mkern-6mu\cleaders
+ \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill
+ \mkern-6mu\OrdSymbol{\rightarrow}$}
+}
+\def\binrel@sym#1#2#3#4#5{%
+ \xdef\binrel@@##1{%
+ \ifx\m@Ord#2\@nx\@symOrd
+ \else\ifx\m@Var#2\@nx\@symVar
+ \else\ifx\m@COs#2\@nx\@symCOs
+ \else\ifx\m@COi#2\@nx\@symCOi
+ \else\ifx\m@Bin#2\@nx\@symBin
+ \else\ifx\m@Rel#2\@nx\@symRel
+ \else\ifx\m@Pun#2\@nx\@symPun
+ \else\@nx\@symErr \fi\fi\fi\fi\fi\fi\fi
+ ?{\@nx\OrdSymbol{##1}}}%
+}
+\def\binrel@a{%
+ \def\@symOrd##1##2{\gdef\binrel@@####1{\@symOrd##1{\OrdSymbol{####1}}}}%
+ \def\@symVar##1##2{\gdef\binrel@@####1{\@symVar##1{\OrdSymbol{####1}}}}%
+ \def\@symCOs##1##2{\gdef\binrel@@####1{\@symCOs##1{\OrdSymbol{####1}}}}%
+ \def\@symCOi##1##2{\gdef\binrel@@####1{\@symCOi##1{\OrdSymbol{####1}}}}%
+ \def\@symBin##1##2{\gdef\binrel@@####1{\@symBin##1{\OrdSymbol{####1}}}}%
+ \def\@symRel##1##2{\gdef\binrel@@####1{\@symRel##1{\OrdSymbol{####1}}}}%
+ \def\@symPun##1##2{\gdef\binrel@@####1{\@symPun##1{\OrdSymbol{####1}}}}%
+}
+\def\binrel@#1{%
+ \setbox\z@\hbox{$%
+ \let\mathchoice\@gobblethree
+ \let\@sym\binrel@sym \binrel@a
+ #1$}%
+}
+\def\@symextension{sym}
+\newcommand\usesymbols[1]{%
+ \@for\@tempb:=#1\do{%
+ \@xp\@onefilewithoptions\@xp{\@tempb}[][]\@symextension
+ }%
+}
+\newcommand\ProvidesSymbols[1]{\ProvidesFile{#1.sym}}
+\DeclareRobustCommand{\not}[1]{\@symRel\not{\OrdSymbol{\notRel#1}}}
+\DeclareRobustCommand{\OrdSymbol}[1]{%
+ \begingroup\mathchars@reset#1\endgroup
+}
+\def\mathchars@reset{\let\@sym\@sym@ord \let\@symtype\@symtype@ord
+ \let\OrdSymbol\relax}
+\def\@symtype@ord#1#{}% a strange sort of \@gobble
+\def\@sym@ord#1#2{\@xp\@sym@ord@a\string#2\@nil}%
+\begingroup
+\lccode`\.=`\@ \lowercase{\endgroup
+\def\@sym@ord@a#1.}#2#3\@nil#4#5#6{%
+ \csname MathChar \endcsname"0%
+ \if D#2\@xp\delim@b\csname sd@#4#5#6\endcsname#4#5#6
+ \else #4#5#6
+ \fi
+}
+% \end{macrocode}
+%
+%
+% Before declaring any math characters active, we have to take care of
+% a small problem with \pkg{amsmath} v2.x, if it is loaded before
+% \pkg{flexisym}. \cs{std@minus} and \cs{std@equal} are defined as
+% \begin{verbatim}
+% \mathchardef\std@minus\mathcode`\-\relax
+% \mathchardef\std@equal\mathcode`\=\relax
+% \end{verbatim}
+% in \fn{amsmath.sty} and again \cs{AtBeginDocument}. The
+% latter is because
+% \begin{quote}
+% In case some alternative math fonts are loaded
+% later. [\fn{amsmath.dtx}]
+% \end{quote}
+% The problem arises because \pkg{flexisym} sets the mathcode of all
+% symbols to $32768$ which is illegal for a \cs{mathchardef}.
+%
+% We have to remove the assignments from the \cs{AtBeginDocument} hook
+% as they will cause an error there.
+% \begin{macrocode}
+\@ifpackageloaded{amsmath}{%
+ \begingroup
+% \end{macrocode}
+% Split the contents of \cs{@begindocumenthook} by reading what we
+% search for as a delimited argument and ensure these two assignments
+% do not take place. It is questionable if anything reasonable can be
+% done to them. In the case of a package such as \pkg{mathpazo} which defines
+% \begin{verbatim}
+%\DeclareMathSymbol{=}{\mathrel}{upright}{"3D}
+% \end{verbatim}
+% the \cs{Relbar} will look wrong if we don't use the correct
+% symbol. The way to solve this is define additional \fn{.sym} files
+% which contain the definition of \cs{relbar} and \cs{Relbar}
+% needed. We need those additional files anyway for things like
+% \cs{joinord}.
+% \begin{macrocode}
+ \long\def\next#1\mathchardef\std@minus\mathcode`\-\relax
+ \mathchardef\std@equal\mathcode`\=\relax#2\flexi@stop{%
+ \toks@{#1#2}%
+ \xdef\@begindocumenthook{\the\toks@}%
+ }%
+ \expandafter\next\@begindocumenthook\flexi@stop
+ \endgroup
+}{}
+% \end{macrocode}
+%
+% There is problem when using \cs{DeclareMathOperator} as the
+% operators defined call a command \cs{newmcodes@} which relies on the
+% mathcode of \texttt{-} being less than 32768. We delay the
+% definition \cs{AtBeginDocument} in case \pkg{amssymb} hasn't been
+% loaded yet.
+% \begin{macrocode}
+\AtBeginDocument{%
+\def\newmcodes@{%
+ \mathcode `\'39\mathcode `\*42\mathcode `\."613A
+ \ifnum\mathcode`\-=45
+ \else
+% \end{macrocode}
+% The extra check. Don't do anything if \texttt{-} is math active.
+% \begin{macrocode}
+ \ifnum\mathcode`\-=32768
+ \else
+ \mathchardef \std@minus \mathcode `\-\relax
+ \fi
+ \fi
+ \mathcode `\-45 \mathcode `\/47\mathcode `\:"603A\relax
+}
+}
+% \end{macrocode}
+%
+% And we then continue with the options.
+% \begin{macrocode}
+\DeclareOption{cmbase}{\usesymbols{cmbase}}
+\DeclareOption{mathpazo}{\usesymbols{mathpazo}}
+\DeclareOption{mathptmx}{\usesymbols{mathptmx}}
+\ProcessOptions\relax
+\renewcommand{\lnot}{\neg}
+\renewcommand{\land}{\wedge}
+\renewcommand{\lor}{\vee}
+\renewcommand{\le}{\leq}
+\renewcommand{\ge}{\geq}
+\renewcommand{\ne}{\neq}
+\renewcommand{\owns}{\ni}
+\renewcommand{\gets}{\leftarrow}
+\renewcommand{\to}{\rightarrow}
+\renewcommand{\|}{\Vert}
+\@ifpackagewith{flexisym}{mathstyleoff}{}{%
+ \RequirePackage[activechars]{mathstyle}\relax
+}
+%</package>\endinput
+% \end{macrocode}
+%
+% \section{cmbase, mathpazo, mathptmx}
+%
+%
+% For each math font package we define a corresponding symbol file
+% with extension \fn{sym}. The Computer Modern base is called
+% \opt{cmbase} and \opt{mathpazo} and \opt{mathptmx} corresponds to
+% the packages. The definitions are almost identical as they mostly
+% concern the positions in the math font encodings. Look for
+% differences in \cs{joinord}, \cs{relbar} and \cs{Relbar}. If you
+% inspect the source code, you'll see that the support for
+% \pkg{mathptmx} didn't require any work but I thought it better to
+% create a \fn{sym} file to maintain a uniform interface.
+%
+% \begin{aside}
+% Open question on \verb"!" and \verb"?": maybe they
+% should have type `Pun' instead of `DeR'. Need to
+% search for uses in math in AMS archives. Or, maybe add a special
+% `Clo' type for them: non-extensible closing delimiter.
+% \end{aside}
+%
+%
+%
+% Default mathgroup setup.
+% \begin{macrocode}
+%<*cmbase|mathpazo|mathptmx>
+%<cmbase>\ProvidesSymbols{cmbase}[2001/09/07 v0.91]
+%<mathpazo>\ProvidesSymbols{mathpazo}[2007/12/09 v0.1]
+%<mathptmx>\ProvidesSymbols{mathptmx}[2007/12/09 v0.1]
+\@xp\xdef\csname mg@OT1\endcsname{\hexnumber@\symoperators}
+\@xp\xdef\csname mg@OML\endcsname{\hexnumber@\symletters}
+\@xp\xdef\csname mg@OMS\endcsname{\hexnumber@\symsymbols}
+\@xp\xdef\csname mg@OMX\endcsname{\hexnumber@\symlargesymbols}
+\gdef\mg@bin{\mg@OMS}
+\gdef\mg@del{\mg@OMX}
+\xdef\mg@digit{\@xp\@nx\csname mg@OT1\endcsname}
+\gdef\mg@latin{\mg@OML}
+\global\let\mg@Latin\mg@latin
+\global\let\mg@greek\mg@latin
+\global\let\mg@Greek\mg@digit
+\global\let\mg@rel\mg@bin
+\global\let\mg@ord\mg@bin
+\global\let\mg@cop\mg@del
+% \end{macrocode}
+%
+%
+% Symbols from the 128-character \fn{cmr} encoding.
+% Paren and square bracket delimiters from this encoding are covered
+% by the definitions in the \fn{cmex} section, however.
+% \begin{macrocode}
+\DeclareFlexSymbol{!} {Pun}{OT1}{21}
+\DeclareFlexSymbol{+} {Bin}{OT1}{2B}
+\DeclareFlexSymbol{:} {Rel}{OT1}{3A}
+\DeclareFlexSymbol{\colon}{Pun}{OT1}{3A}
+\DeclareFlexSymbol{;} {Pun}{OT1}{3B}
+\DeclareFlexSymbol{=} {Rel}{OT1}{3D}
+\DeclareFlexSymbol{?} {Pun}{OT1}{3F}
+% \end{macrocode}
+% \AmS\TeX, and therefore the \pkg{amsmath} package, make the
+% uppercase Greek letters class 0 (nonvariable) instead of 7
+% (variable), to eliminate the glaring inconsistency with lowercase
+% Greek. (In plain \TeX , \verb"{\bf\Delta}" works, while
+% \verb"{\bf\delta}" doesn't. ) Let us try to make them both
+% variable (fonts permitting) instead of nonvariable.
+% \begin{macrocode}
+\DeclareFlexSymbol{\Gamma} {Var}{Greek}{00}
+\DeclareFlexSymbol{\Delta} {Var}{Greek}{01}
+\DeclareFlexSymbol{\Theta} {Var}{Greek}{02}
+\DeclareFlexSymbol{\Lambda} {Var}{Greek}{03}
+\DeclareFlexSymbol{\Xi} {Var}{Greek}{04}
+\DeclareFlexSymbol{\Pi} {Var}{Greek}{05}
+\DeclareFlexSymbol{\Sigma} {Var}{Greek}{06}
+\DeclareFlexSymbol{\Upsilon}{Var}{Greek}{07}
+\DeclareFlexSymbol{\Phi} {Var}{Greek}{08}
+\DeclareFlexSymbol{\Psi} {Var}{Greek}{09}
+\DeclareFlexSymbol{\Omega} {Var}{Greek}{0A}
+% \end{macrocode}
+% Decimal digits.
+% \begin{macrocode}
+\DeclareFlexSymbol{0}{Var}{digit}{30}
+\DeclareFlexSymbol{1}{Var}{digit}{31}
+\DeclareFlexSymbol{2}{Var}{digit}{32}
+\DeclareFlexSymbol{3}{Var}{digit}{33}
+\DeclareFlexSymbol{4}{Var}{digit}{34}
+\DeclareFlexSymbol{5}{Var}{digit}{35}
+\DeclareFlexSymbol{6}{Var}{digit}{36}
+\DeclareFlexSymbol{7}{Var}{digit}{37}
+\DeclareFlexSymbol{8}{Var}{digit}{38}
+\DeclareFlexSymbol{9}{Var}{digit}{39}
+% \end{macrocode}
+% Symbols from the 128-character \fn{cmmi} encoding.
+% \begin{macrocode}
+\DeclareFlexSymbol{,}{Pun}{OML}{3B}
+\DeclareFlexSymbol{.}{Ord}{OML}{3A}
+\DeclareFlexSymbol{/}{Ord}{OML}{3D}
+\DeclareFlexSymbol{<}{Rel}{OML}{3C}
+\DeclareFlexSymbol{>}{Rel}{OML}{3E}
+% \end{macrocode}
+% To do: make the Var property of lc Greek work properly.
+% \begin{macrocode}
+\DeclareFlexSymbol{\alpha}{Var}{greek}{0B}
+\DeclareFlexSymbol{\beta}{Var}{greek}{0C}
+\DeclareFlexSymbol{\gamma}{Var}{greek}{0D}
+\DeclareFlexSymbol{\delta}{Var}{greek}{0E}
+\DeclareFlexSymbol{\epsilon}{Var}{greek}{0F}
+\DeclareFlexSymbol{\zeta}{Var}{greek}{10}
+\DeclareFlexSymbol{\eta}{Var}{greek}{11}
+\DeclareFlexSymbol{\theta}{Var}{greek}{12}
+\DeclareFlexSymbol{\iota}{Var}{greek}{13}
+\DeclareFlexSymbol{\kappa}{Var}{greek}{14}
+\DeclareFlexSymbol{\lambda}{Var}{greek}{15}
+\DeclareFlexSymbol{\mu}{Var}{greek}{16}
+\DeclareFlexSymbol{\nu}{Var}{greek}{17}
+\DeclareFlexSymbol{\xi}{Var}{greek}{18}
+\DeclareFlexSymbol{\pi}{Var}{greek}{19}
+\DeclareFlexSymbol{\rho}{Var}{greek}{1A}
+\DeclareFlexSymbol{\sigma}{Var}{greek}{1B}
+\DeclareFlexSymbol{\tau}{Var}{greek}{1C}
+\DeclareFlexSymbol{\upsilon}{Var}{greek}{1D}
+\DeclareFlexSymbol{\phi}{Var}{greek}{1E}
+\DeclareFlexSymbol{\chi}{Var}{greek}{1F}
+\DeclareFlexSymbol{\psi}{Var}{greek}{20}
+\DeclareFlexSymbol{\omega}{Var}{greek}{21}
+\DeclareFlexSymbol{\varepsilon}{Var}{greek}{22}
+\DeclareFlexSymbol{\vartheta}{Var}{greek}{23}
+\DeclareFlexSymbol{\varpi}{Var}{greek}{24}
+\DeclareFlexSymbol{\varrho}{Var}{greek}{25}
+\DeclareFlexSymbol{\varsigma}{Var}{greek}{26}
+\DeclareFlexSymbol{\varphi}{Var}{greek}{27}
+% \end{macrocode}
+% Note that in plain \TeX\ \cs{imath} and \cs{jmath} are
+% not variable-font. But if a \verb"j" changes font to, let's
+% say, sans serif or calligraphic, a dotless \verb"j" in the same
+% context should change font in the same way.
+% \begin{macrocode}
+\DeclareFlexSymbol{\imath}{Var}{OML}{7B}
+\DeclareFlexSymbol{\jmath}{Var}{OML}{7C}
+\DeclareFlexSymbol{\ell}{Ord}{OML}{60}
+\DeclareFlexSymbol{\wp}{Ord}{OML}{7D}
+\DeclareFlexSymbol{\partial}{Ord}{OML}{40}
+\DeclareFlexSymbol{\flat}{Ord}{OML}{5B}
+\DeclareFlexSymbol{\natural}{Ord}{OML}{5C}
+\DeclareFlexSymbol{\sharp}{Ord}{OML}{5D}
+\DeclareFlexSymbol{\triangleleft}{Bin}{OML}{2F}
+\DeclareFlexSymbol{\triangleright}{Bin}{OML}{2E}
+\DeclareFlexSymbol{\star}{Bin}{OML}{3F}
+\DeclareFlexSymbol{\smile}{Rel}{OML}{5E}
+\DeclareFlexSymbol{\frown}{Rel}{OML}{5F}
+\DeclareFlexSymbol{\leftharpoonup}{Rel}{OML}{28}
+\DeclareFlexSymbol{\leftharpoondown}{Rel}{OML}{29}
+\DeclareFlexSymbol{\rightharpoonup}{Rel}{OML}{2A}
+\DeclareFlexSymbol{\rightharpoondown}{Rel}{OML}{2B}
+\DeclareFlexSymbol{a}{Var}{latin}{61}
+\DeclareFlexSymbol{b}{Var}{latin}{62}
+\DeclareFlexSymbol{c}{Var}{latin}{63}
+\DeclareFlexSymbol{d}{Var}{latin}{64}
+\DeclareFlexSymbol{e}{Var}{latin}{65}
+\DeclareFlexSymbol{f}{Var}{latin}{66}
+\DeclareFlexSymbol{g}{Var}{latin}{67}
+\DeclareFlexSymbol{h}{Var}{latin}{68}
+\DeclareFlexSymbol{i}{Var}{latin}{69}
+\DeclareFlexSymbol{j}{Var}{latin}{6A}
+\DeclareFlexSymbol{k}{Var}{latin}{6B}
+\DeclareFlexSymbol{l}{Var}{latin}{6C}
+\DeclareFlexSymbol{m}{Var}{latin}{6D}
+\DeclareFlexSymbol{n}{Var}{latin}{6E}
+\DeclareFlexSymbol{o}{Var}{latin}{6F}
+\DeclareFlexSymbol{p}{Var}{latin}{70}
+\DeclareFlexSymbol{q}{Var}{latin}{71}
+\DeclareFlexSymbol{r}{Var}{latin}{72}
+\DeclareFlexSymbol{s}{Var}{latin}{73}
+\DeclareFlexSymbol{t}{Var}{latin}{74}
+\DeclareFlexSymbol{u}{Var}{latin}{75}
+\DeclareFlexSymbol{v}{Var}{latin}{76}
+\DeclareFlexSymbol{w}{Var}{latin}{77}
+\DeclareFlexSymbol{x}{Var}{latin}{78}
+\DeclareFlexSymbol{y}{Var}{latin}{79}
+\DeclareFlexSymbol{z}{Var}{latin}{7A}
+\DeclareFlexSymbol{A}{Var}{Latin}{41}
+\DeclareFlexSymbol{B}{Var}{Latin}{42}
+\DeclareFlexSymbol{C}{Var}{Latin}{43}
+\DeclareFlexSymbol{D}{Var}{Latin}{44}
+\DeclareFlexSymbol{E}{Var}{Latin}{45}
+\DeclareFlexSymbol{F}{Var}{Latin}{46}
+\DeclareFlexSymbol{G}{Var}{Latin}{47}
+\DeclareFlexSymbol{H}{Var}{Latin}{48}
+\DeclareFlexSymbol{I}{Var}{Latin}{49}
+\DeclareFlexSymbol{J}{Var}{Latin}{4A}
+\DeclareFlexSymbol{K}{Var}{Latin}{4B}
+\DeclareFlexSymbol{L}{Var}{Latin}{4C}
+\DeclareFlexSymbol{M}{Var}{Latin}{4D}
+\DeclareFlexSymbol{N}{Var}{Latin}{4E}
+\DeclareFlexSymbol{O}{Var}{Latin}{4F}
+\DeclareFlexSymbol{P}{Var}{Latin}{50}
+\DeclareFlexSymbol{Q}{Var}{Latin}{51}
+\DeclareFlexSymbol{R}{Var}{Latin}{52}
+\DeclareFlexSymbol{S}{Var}{Latin}{53}
+\DeclareFlexSymbol{T}{Var}{Latin}{54}
+\DeclareFlexSymbol{U}{Var}{Latin}{55}
+\DeclareFlexSymbol{V}{Var}{Latin}{56}
+\DeclareFlexSymbol{W}{Var}{Latin}{57}
+\DeclareFlexSymbol{X}{Var}{Latin}{58}
+\DeclareFlexSymbol{Y}{Var}{Latin}{59}
+\DeclareFlexSymbol{Z}{Var}{Latin}{5A}
+% \end{macrocode}
+% The \cs{ldotPun} glyph is used in constructing the
+% \cs{ldots} symbol. It is just a period with a different math
+% symbol class. \cs{lhookRel} and \cs{rhookRel} are used
+% in a similar way for building hooked arrow symbols.
+% \begin{macrocode}
+\DeclareFlexSymbol{\ldotPun}{Pun}{OML}{3A}
+\def\ldotp{\ldotPun}
+\DeclareFlexSymbol{\lhookRel}{Rel}{OML}{2C}
+\DeclareFlexSymbol{\rhookRel}{Rel}{OML}{2D}
+% \end{macrocode}
+% Symbols from the 128-character \fn{cmsy} encoding.
+% \begin{macrocode}
+\DeclareFlexSymbol{*}{Bin}{bin}{03} % \ast
+\DeclareFlexSymbol{-}{Bin}{bin}{00}
+\DeclareFlexSymbol{|}{Ord}{OMS}{6A}
+\DeclareFlexSymbol{\aleph}{Ord}{ord}{40}
+\DeclareFlexSymbol{\Re}{Ord}{ord}{3C}
+\DeclareFlexSymbol{\Im}{Ord}{ord}{3D}
+\DeclareFlexSymbol{\infty}{Ord}{ord}{31}
+\DeclareFlexSymbol{\prime}{Ord}{ord}{30}
+\DeclareFlexSymbol{\emptyset}{Ord}{ord}{3B}
+\DeclareFlexSymbol{\nabla}{Ord}{ord}{72}
+\DeclareFlexSymbol{\top}{Ord}{ord}{3E}
+\DeclareFlexSymbol{\bot}{Ord}{ord}{3F}
+\DeclareFlexSymbol{\triangle}{Ord}{ord}{34}
+\DeclareFlexSymbol{\forall}{Ord}{ord}{38}
+\DeclareFlexSymbol{\exists}{Ord}{ord}{39}
+\DeclareFlexSymbol{\neg}{Ord}{ord}{3A}
+\DeclareFlexSymbol{\clubsuit}{Ord}{ord}{7C}
+\DeclareFlexSymbol{\diamondsuit}{Ord}{ord}{7D}
+\DeclareFlexSymbol{\heartsuit}{Ord}{ord}{7E}
+\DeclareFlexSymbol{\spadesuit}{Ord}{ord}{7F}
+\DeclareFlexSymbol{\smallint}{COs}{OMS}{73}
+% \end{macrocode}
+% Binary operators.
+% \begin{macrocode}
+\DeclareFlexSymbol{\bigtriangleup}{Bin}{bin}{34}
+\DeclareFlexSymbol{\bigtriangledown}{Bin}{bin}{35}
+\DeclareFlexSymbol{\wedge}{Bin}{bin}{5E}
+\DeclareFlexSymbol{\vee}{Bin}{bin}{5F}
+\DeclareFlexSymbol{\cap}{Bin}{bin}{5C}
+\DeclareFlexSymbol{\cup}{Bin}{bin}{5B}
+\DeclareFlexSymbol{\ddagger}{Bin}{bin}{7A}
+\DeclareFlexSymbol{\dagger}{Bin}{bin}{79}
+\DeclareFlexSymbol{\sqcap}{Bin}{bin}{75}
+\DeclareFlexSymbol{\sqcup}{Bin}{bin}{74}
+\DeclareFlexSymbol{\uplus}{Bin}{bin}{5D}
+\DeclareFlexSymbol{\amalg}{Bin}{bin}{71}
+\DeclareFlexSymbol{\diamond}{Bin}{bin}{05}
+\DeclareFlexSymbol{\bullet}{Bin}{bin}{0F}
+\DeclareFlexSymbol{\wr}{Bin}{bin}{6F}
+\DeclareFlexSymbol{\div}{Bin}{bin}{04}
+\DeclareFlexSymbol{\odot}{Bin}{bin}{0C}
+\DeclareFlexSymbol{\oslash}{Bin}{bin}{0B}
+\DeclareFlexSymbol{\otimes}{Bin}{bin}{0A}
+\DeclareFlexSymbol{\ominus}{Bin}{bin}{09}
+\DeclareFlexSymbol{\oplus}{Bin}{bin}{08}
+\DeclareFlexSymbol{\mp}{Bin}{bin}{07}
+\DeclareFlexSymbol{\pm}{Bin}{bin}{06}
+\DeclareFlexSymbol{\circ}{Bin}{bin}{0E}
+\DeclareFlexSymbol{\bigcirc}{Bin}{bin}{0D}
+\DeclareFlexSymbol{\setminus}{Bin}{bin}{6E}
+\DeclareFlexSymbol{\cdot}{Bin}{bin}{01}
+\DeclareFlexSymbol{\ast}{Bin}{bin}{03}
+\DeclareFlexSymbol{\times}{Bin}{bin}{02}
+% \end{macrocode}
+% Relation symbols.
+% \begin{macrocode}
+\DeclareFlexSymbol{\propto}{Rel}{rel}{2F}
+\DeclareFlexSymbol{\sqsubseteq}{Rel}{rel}{76}
+\DeclareFlexSymbol{\sqsupseteq}{Rel}{rel}{77}
+\DeclareFlexSymbol{\parallel}{Rel}{rel}{6B}
+\DeclareFlexSymbol{\mid}{Rel}{rel}{6A}
+\DeclareFlexSymbol{\dashv}{Rel}{rel}{61}
+\DeclareFlexSymbol{\vdash}{Rel}{rel}{60}
+\DeclareFlexSymbol{\nearrow}{Rel}{rel}{25}
+\DeclareFlexSymbol{\searrow}{Rel}{rel}{26}
+\DeclareFlexSymbol{\nwarrow}{Rel}{rel}{2D}
+\DeclareFlexSymbol{\swarrow}{Rel}{rel}{2E}
+\DeclareFlexSymbol{\Leftrightarrow}{Rel}{rel}{2C}
+\DeclareFlexSymbol{\Leftarrow}{Rel}{rel}{28}
+\DeclareFlexSymbol{\Rightarrow}{Rel}{rel}{29}
+\DeclareFlexSymbol{\leq}{Rel}{rel}{14}
+\DeclareFlexSymbol{\geq}{Rel}{rel}{15}
+\DeclareFlexSymbol{\succ}{Rel}{rel}{1F}
+\DeclareFlexSymbol{\prec}{Rel}{rel}{1E}
+\DeclareFlexSymbol{\approx}{Rel}{rel}{19}
+\DeclareFlexSymbol{\succeq}{Rel}{rel}{17}
+\DeclareFlexSymbol{\preceq}{Rel}{rel}{16}
+\DeclareFlexSymbol{\supset}{Rel}{rel}{1B}
+\DeclareFlexSymbol{\subset}{Rel}{rel}{1A}
+\DeclareFlexSymbol{\supseteq}{Rel}{rel}{13}
+\DeclareFlexSymbol{\subseteq}{Rel}{rel}{12}
+\DeclareFlexSymbol{\in}{Rel}{rel}{32}
+\DeclareFlexSymbol{\ni}{Rel}{rel}{33}
+\DeclareFlexSymbol{\gg}{Rel}{rel}{1D}
+\DeclareFlexSymbol{\ll}{Rel}{rel}{1C}
+\DeclareFlexSymbol{\leftrightarrow}{Rel}{rel}{24}
+\DeclareFlexSymbol{\leftarrow}{Rel}{rel}{20}
+\DeclareFlexSymbol{\rightarrow}{Rel}{rel}{21}
+\DeclareFlexSymbol{\sim}{Rel}{rel}{18}
+\DeclareFlexSymbol{\simeq}{Rel}{rel}{27}
+\DeclareFlexSymbol{\perp}{Rel}{rel}{3F}
+\DeclareFlexSymbol{\equiv}{Rel}{rel}{11}
+\DeclareFlexSymbol{\asymp}{Rel}{rel}{10}
+% \end{macrocode}
+% The \cs{notRel} glyph is a special zero-width glyph intended only
+% for use in constructing negated symbols. \cs{mapstoRel} and
+% \cs{cdotPun} have similar but more restricted applications.
+% \begin{macrocode}
+\DeclareFlexSymbol{\notRel}{Rel}{rel}{36}
+\DeclareFlexSymbol{\mapstoOrd}{Ord}{OMS}{37}
+\DeclareFlexSymbol{\cdotOrd}{Ord}{OMS}{01}
+\def\cdotp{\mathpunct{\cdotOrd}}
+% \end{macrocode}
+% Symbols from the 128-character \fn{cmex} encoding.
+% \verb"COs" stands for `cumulative operator
+% (sum-like)'.
+% \verb"COi" stands for `cumulative operator
+% (integral-like)'. These typically differ only in the
+% default placement of limits. \verb"cop" stands for
+% `cumulative operator math group'.
+% \begin{macrocode}
+\DeclareFlexSymbol{\coprod}{COs}{cop}{60}
+\DeclareFlexSymbol{\bigvee}{COs}{cop}{57}
+\DeclareFlexSymbol{\bigwedge}{COs}{cop}{56}
+\DeclareFlexSymbol{\biguplus}{COs}{cop}{55}
+\DeclareFlexSymbol{\bigcap}{COs}{cop}{54}
+\DeclareFlexSymbol{\bigcup}{COs}{cop}{53}
+\DeclareFlexSymbol{\int}{COi}{cop}{52}
+\DeclareFlexSymbol{\prod}{COs}{cop}{51}
+\DeclareFlexSymbol{\sum}{COs}{cop}{50}
+\DeclareFlexSymbol{\bigotimes}{COs}{cop}{4E}
+\DeclareFlexSymbol{\bigoplus}{COs}{cop}{4C}
+\DeclareFlexSymbol{\bigodot}{COs}{cop}{4A}
+\DeclareFlexSymbol{\oint}{COi}{cop}{48}
+\DeclareFlexSymbol{\bigsqcup}{COs}{cop}{46}
+% \end{macrocode}
+% Delimiter symbols.
+% \verb"DeL" stands for `delimiter (left)'.
+% \verb"DeR" stands for `delimiter (right)'.
+% \verb"DeB" stands for `delimiter (bidirectional)'.
+% The principal encoding point for an extensible delimiter is the
+% first link in the list of linked sizes as specified in the font metric
+% information.
+% For a math encoding such as OT1/OML/OMS/OMX where not all sizes of a
+% given delimiter reside in a given font, the extra encoding point for the
+% smallest delimiter must be supplied by defining
+% \begin{verbatim}
+% \sd@GXX
+% \end{verbatim}
+% where G is the mathgroup and XX is the hexadecimal glyph position.
+% \begin{macrocode}
+\DeclareFlexSymbol{\rangle}{DeR}{del}{0B}
+\DeclareFlexSymbol{\langle}{DeL}{del}{0A}
+\DeclareFlexSymbol{\rbrace}{DeR}{del}{09}
+\DeclareFlexSymbol{\lbrace}{DeL}{del}{08}
+\DeclareFlexSymbol{\rceil}{DeR}{del}{07}
+\DeclareFlexSymbol{\lceil}{DeL}{del}{06}
+\DeclareFlexSymbol{\rfloor}{DeR}{del}{05}
+\DeclareFlexSymbol{\lfloor}{DeL}{del}{04}
+\DeclareFlexSymbol{(}{DeL}{del}{00}
+\DeclareFlexSymbol{)}{DeR}{del}{01}
+\DeclareFlexSymbol{[}{DeL}{del}{02}
+\DeclareFlexSymbol{]}{DeR}{del}{03}
+\DeclareFlexSymbol{\lVert}{DeL}{del}{0D}
+\DeclareFlexSymbol{\rVert}{DeR}{del}{0D}
+\DeclareFlexSymbol{\lvert}{DeL}{del}{0C}
+\DeclareFlexSymbol{\rvert}{DeR}{del}{0C}
+\DeclareFlexSymbol{\Vert}{DeB}{del}{0D}
+\DeclareFlexSymbol{\vert}{DeB}{del}{0C}
+% \end{macrocode}
+% Maybe make the vert bars mathord instead of delimiter, to discourage
+% poor usage.
+% \begin{macrocode}
+\DeclareFlexSymbol{|}{DeB}{del}{0C}
+\DeclareFlexSymbol{/}{DeB}{del}{0E}
+% \end{macrocode}
+%
+%
+% These wacky delimiters need to be supported I guess for
+% compabitility reasons.
+% The DeA delimiter type is a special case used only for these
+% arrows.
+% \begin{macrocode}
+\DeclareFlexSymbol{\lmoustache}{DeL}{del}{40}
+\DeclareFlexSymbol{\rmoustache}{DeR}{del}{41}
+\DeclareFlexSymbol{\lgroup}{DeL}{del}{3A}
+\DeclareFlexSymbol{\rgroup}{DeR}{del}{3B}
+\DeclareFlexSymbol{\bracevert}{DeB}{del}{3E}
+\DeclareFlexSymbol{\arrowvert}{DeB}{del}{3C}
+\DeclareFlexSymbol{\Arrowvert}{DeB}{del}{3D}
+\DeclareFlexSymbol{\uparrow}{DeA}{del}{78}
+\DeclareFlexSymbol{\downarrow}{DeA}{del}{79}
+\DeclareFlexSymbol{\updownarrow}{DeA}{del}{3F}
+\DeclareFlexSymbol{\Uparrow}{DeA}{del}{7E}
+\DeclareFlexSymbol{\Downarrow}{DeA}{del}{7F}
+\DeclareFlexSymbol{\Updownarrow}{DeA}{del}{77}
+\DeclareFlexSymbol{\backslash}{DeB}{del}{0F}
+% \end{macrocode}
+%
+%
+%
+%
+% \section{Some compound symbols}
+% The following symbols are not robust in standard \LaTeX\
+% because they use \verb"#" or \cs{mathpalette} (which is not
+% robust and contains a \verb"#" in its expansion): \cs{angle},
+% \cs{cong}, \cs{notin}, \cs{rightleftharpoons}.
+%
+% In this definition of \cs{hbar}, the symbol is cobbled together
+% from a math italic h and the cmr overbar accent glyph.
+% \begin{macrocode}
+\DeclareFlexSymbol{\hbarOrd}{Ord}{OT1}{16}
+\DeclareFlexCompoundSymbol{\hbar}{Ord}{\hbarOrd\mkern-9mu h}
+% \end{macrocode}
+% For \cs{surd}, the interior symbol gets math class 1
+% (cumulative operator) to make the glyph vertically centered on the
+% math axis, but the desired horizontal spacing is the spacing for a
+% mathord. (Couldn't it just be class mathopen, though? )
+% \begin{macrocode}
+\DeclareFlexSymbol{\surdOrd}{Ord}{OMS}{70}
+\DeclareFlexCompoundSymbol{\surd}{Ord}{\mathop{\surdOrd}}
+% \end{macrocode}
+% As shown in this definition of \cs{angle}, rule dimens are not
+% allowed to use math-units, unfortunately.
+% \begin{macrocode}
+\DeclareFlexCompoundSymbol{\angle}{Ord}{%
+ \vbox{\ialign{%
+ $\m@th\scriptstyle##$\crcr
+ \notRel\mathrel{\mkern14mu}\crcr
+ \noalign{\nointerlineskip}%
+ \mkern2.5mu\leaders\hrule \@height.34pt\hfill\mkern2.5mu\crcr
+ }}%
+}
+% \end{macrocode}
+% The \cs{not} function, which is defined in the \pkg{flexisym}
+% package, requires a suitably defined \cs{notRel} symbol.
+% \begin{macrocode}
+\DeclareFlexCompoundSymbol{\neq}{Rel}{\not{=}}
+% \end{macrocode}
+% .
+% \begin{macrocode}
+\DeclareFlexCompoundSymbol{\mapsto}{Rel}{\mapstoOrd\rightarrow}
+% \end{macrocode}
+% The \cs{@vereq} function ends by centering the whole
+% construction on the math axis, unlike \cs{buildrel} where the base
+% symbol remains at its normal altitude. Furthermore,
+% \cs{@vereq} leaves the math style of the top symbol as given
+% instead of downsizing to scriptstyle.
+% \begin{macrocode}
+\DeclareFlexCompoundSymbol{\cong}{Rel}{\mathpalette\@vereq\sim}
+% \end{macrocode}
+% The \cs{m@th} in the \fn{fontmath.ltx} definition of
+% \cs{notin} is superfluous unless \cs{c@ncel} doesn't include
+% it (which was perhaps true in an older version of
+% \fn{plain.tex}?).
+% \begin{macrocode}
+%<cmbase|mathptmx>\newcommand*\joinord{\mkern-3mu }
+%<mathpazo>\newcommand*\joinord{\mkern-3.45mu }
+\DeclareFlexCompoundSymbol{\notin}{Rel}{\mathpalette\c@ncel\in}
+\DeclareFlexCompoundSymbol{\rightleftharpoons}{Rel}{\mathpalette\rlh@{}}
+\DeclareFlexCompoundSymbol{\doteq}{Rel}{\buildrel\textstyle.\over=}
+\DeclareFlexCompoundSymbol{\hookrightarrow}{Rel}{\lhookRel\joinord\rightarrow}
+\DeclareFlexCompoundSymbol{\hookleftarrow}{Rel}{\leftarrow\joinord\rhookRel}
+\DeclareFlexCompoundSymbol{\bowtie}{Rel}{\triangleright\joinord\triangleleft}
+\DeclareFlexCompoundSymbol{\models}{Rel}{\vert\joinord=}
+\DeclareFlexCompoundSymbol{\Longrightarrow}{Rel}{\Relbar\joinord\Rightarrow}
+\DeclareFlexCompoundSymbol{\longrightarrow}{Rel}{\relbar\joinord\rightarrow}
+\DeclareFlexCompoundSymbol{\Longleftarrow}{Rel}{\Leftarrow\joinord\Relbar}
+\DeclareFlexCompoundSymbol{\longleftarrow}{Rel}{\leftarrow\joinord\relbar}
+\DeclareFlexCompoundSymbol{\longmapsto}{Rel}{\mapstochar\longrightarrow}
+\DeclareFlexCompoundSymbol{\longleftrightarrow}{Rel}{\leftarrow\joinord\rightarrow}
+\DeclareFlexCompoundSymbol{\Longleftrightarrow}{Rel}{\Leftarrow\joinord\Rightarrow}
+% \end{macrocode}
+% Here is what you get from the old definition of \cs{iff}.
+% \begin{verbatim}
+% \glue 2.77771 plus 2.77771
+% \glue(\thickmuskip) 2.77771 plus 2.77771
+% \OMS/cmsy/m/n/10 (
+% \hbox(0.0+0.0)x-1.66663
+% .\kern -1.66663
+% \OMS/cmsy/m/n/10 )
+% \penalty 500
+% \glue 2.77771 plus 2.77771
+% \glue(\thickmuskip) 2.77771 plus 2.77771
+% \end{verbatim}
+% Looks like it could be simplified slightly. But it's not so
+% easy as it looks to do it without screwing up the line breaking
+% possibilities.
+% \begin{macrocode}
+\renewcommand*\iff{%
+ \mskip\thickmuskip\Longleftrightarrow\mskip\thickmuskip
+}
+% \end{macrocode}
+% Some dotly symbols.
+% \begin{macrocode}
+\DeclareFlexCompoundSymbol{\cdots}{Inn}{\cdotp\cdotp\cdotp}%
+\DeclareFlexCompoundSymbol{\vdots}{Ord}{%
+ \vbox{\baselineskip4\p@ \lineskiplimit\z@
+ \kern6\p@\hbox{.}\hbox{.}\hbox{.}}}
+\DeclareFlexCompoundSymbol{\ddots}{Inn}{%
+ \mkern1mu\raise7\p@
+ \vbox{\kern7\p@\hbox{.}}\mkern2mu%
+ \raise4\p@\hbox{.}\mkern2mu\raise\p@\hbox{.}\mkern1mu%
+}
+% \end{macrocode}
+% .
+% \begin{macrocode}
+\def\relbar{\begingroup \def\smash@{tb}% in case amsmath is loaded
+ \mathpalette\mathsm@sh{\mathchar"200 }\endgroup}
+% \end{macrocode}
+% For \cs{Relbar} we take an equal sign of class $0$ (Ord) from the
+% operator family. For \fn{cmr} and \pkg{mathptmx} we know this is
+% family $0$.
+% \begin{macrocode}
+%<cmbase|mathptmx>\def\Relbar{\mathchar"3D }
+% \end{macrocode}
+% For the \pkg{mathpazo} setup we need to use the equal sign from
+% \fn{cmr} and so must insert class $0$ and use the symbol from the
+% upright symbols.
+% \begin{macrocode}
+%<mathpazo>\edef\Relbar{\mathchar\string"\hexnumber@\symupright3D }
+% \end{macrocode}
+% Done.
+% \begin{macrocode}
+%</cmbase|mathpazo|mathptmx>
+% \end{macrocode}
+% Various synonyms such as \cs{le} for \cs{leq} and
+% \cs{to} for \cs{rightarrow} are defined in
+% \pkg{flexisym} with \cs{def} instead of \cs{let}, for
+% slower execution speed but smaller chance of synchronization
+% problems.
+%
+%
+%
+% \begin{macrocode}
+%<*msabm>
+\ProvidesSymbols{msabm}[2001/09/08 v0.91]
+% \end{macrocode}
+% \begin{macrocode}
+\RequirePackage{amsfonts}\relax
+% \end{macrocode}
+% \begin{macrocode}
+\@xp\xdef\csname mg@MSA\endcsname{\hexnumber@\symAMSa}%
+\@xp\xdef\csname mg@MSB\endcsname{\hexnumber@\symAMSb}%
+% \end{macrocode}
+% \begin{macrocode}
+\DeclareFlexSymbol{\boxdot} {Bin}{MSA}{00}
+\DeclareFlexSymbol{\boxplus} {Bin}{MSA}{01}
+\DeclareFlexSymbol{\boxtimes} {Bin}{MSA}{02}
+\DeclareFlexSymbol{\square} {Ord}{MSA}{03}
+\DeclareFlexSymbol{\blacksquare} {Ord}{MSA}{04}
+\DeclareFlexSymbol{\centerdot} {Bin}{MSA}{05}
+\DeclareFlexSymbol{\lozenge} {Ord}{MSA}{06}
+\DeclareFlexSymbol{\blacklozenge} {Ord}{MSA}{07}
+\DeclareFlexSymbol{\circlearrowright} {Rel}{MSA}{08}
+\DeclareFlexSymbol{\circlearrowleft} {Rel}{MSA}{09}
+% \end{macrocode}
+% In amsfonts.sty:
+% \begin{macrocode}
+%%\DeclareFlexSymbol{\rightleftharpoons}{Rel}{MSA}{0A}
+\DeclareFlexSymbol{\leftrightharpoons} {Rel}{MSA}{0B}
+\DeclareFlexSymbol{\boxminus} {Bin}{MSA}{0C}
+\DeclareFlexSymbol{\Vdash} {Rel}{MSA}{0D}
+\DeclareFlexSymbol{\Vvdash} {Rel}{MSA}{0E}
+\DeclareFlexSymbol{\vDash} {Rel}{MSA}{0F}
+\DeclareFlexSymbol{\twoheadrightarrow} {Rel}{MSA}{10}
+\DeclareFlexSymbol{\twoheadleftarrow} {Rel}{MSA}{11}
+\DeclareFlexSymbol{\leftleftarrows} {Rel}{MSA}{12}
+\DeclareFlexSymbol{\rightrightarrows} {Rel}{MSA}{13}
+\DeclareFlexSymbol{\upuparrows} {Rel}{MSA}{14}
+\DeclareFlexSymbol{\downdownarrows} {Rel}{MSA}{15}
+\DeclareFlexSymbol{\upharpoonright} {Rel}{MSA}{16}
+ \let\restriction\upharpoonright
+\DeclareFlexSymbol{\downharpoonright} {Rel}{MSA}{17}
+\DeclareFlexSymbol{\upharpoonleft} {Rel}{MSA}{18}
+\DeclareFlexSymbol{\downharpoonleft}{Rel}{MSA}{19}
+\DeclareFlexSymbol{\rightarrowtail} {Rel}{MSA}{1A}
+\DeclareFlexSymbol{\leftarrowtail} {Rel}{MSA}{1B}
+\DeclareFlexSymbol{\leftrightarrows}{Rel}{MSA}{1C}
+\DeclareFlexSymbol{\rightleftarrows}{Rel}{MSA}{1D}
+\DeclareFlexSymbol{\Lsh} {Rel}{MSA}{1E}
+\DeclareFlexSymbol{\Rsh} {Rel}{MSA}{1F}
+\DeclareFlexSymbol{\rightsquigarrow} {Rel}{MSA}{20}
+\DeclareFlexSymbol{\leftrightsquigarrow}{Rel}{MSA}{21}
+\DeclareFlexSymbol{\looparrowleft} {Rel}{MSA}{22}
+\DeclareFlexSymbol{\looparrowright} {Rel}{MSA}{23}
+\DeclareFlexSymbol{\circeq} {Rel}{MSA}{24}
+\DeclareFlexSymbol{\succsim} {Rel}{MSA}{25}
+\DeclareFlexSymbol{\gtrsim} {Rel}{MSA}{26}
+\DeclareFlexSymbol{\gtrapprox} {Rel}{MSA}{27}
+\DeclareFlexSymbol{\multimap} {Rel}{MSA}{28}
+\DeclareFlexSymbol{\therefore} {Rel}{MSA}{29}
+\DeclareFlexSymbol{\because} {Rel}{MSA}{2A}
+\DeclareFlexSymbol{\doteqdot} {Rel}{MSA}{2B}
+ \let\Doteq\doteqdot
+\DeclareFlexSymbol{\triangleq} {Rel}{MSA}{2C}
+\DeclareFlexSymbol{\precsim} {Rel}{MSA}{2D}
+\DeclareFlexSymbol{\lesssim} {Rel}{MSA}{2E}
+\DeclareFlexSymbol{\lessapprox} {Rel}{MSA}{2F}
+\DeclareFlexSymbol{\eqslantless} {Rel}{MSA}{30}
+\DeclareFlexSymbol{\eqslantgtr} {Rel}{MSA}{31}
+\DeclareFlexSymbol{\curlyeqprec} {Rel}{MSA}{32}
+\DeclareFlexSymbol{\curlyeqsucc} {Rel}{MSA}{33}
+\DeclareFlexSymbol{\preccurlyeq} {Rel}{MSA}{34}
+\DeclareFlexSymbol{\leqq} {Rel}{MSA}{35}
+\DeclareFlexSymbol{\leqslant} {Rel}{MSA}{36}
+\DeclareFlexSymbol{\lessgtr} {Rel}{MSA}{37}
+\DeclareFlexSymbol{\backprime} {Ord}{MSA}{38}
+\DeclareFlexSymbol{\risingdotseq} {Rel}{MSA}{3A}
+\DeclareFlexSymbol{\fallingdotseq}{Rel}{MSA}{3B}
+\DeclareFlexSymbol{\succcurlyeq} {Rel}{MSA}{3C}
+\DeclareFlexSymbol{\geqq} {Rel}{MSA}{3D}
+\DeclareFlexSymbol{\geqslant} {Rel}{MSA}{3E}
+\DeclareFlexSymbol{\gtrless} {Rel}{MSA}{3F}
+% \end{macrocode}
+% in amsfonts.sty
+% \begin{macrocode}
+%% \DeclareFlexSymbol{\sqsubset} {Rel}{MSA}{40}
+%% \DeclareFlexSymbol{\sqsupset} {Rel}{MSA}{41}
+\DeclareFlexSymbol{\vartriangleright}{Rel}{MSA}{42}
+\DeclareFlexSymbol{\vartriangleleft} {Rel}{MSA}{43}
+\DeclareFlexSymbol{\trianglerighteq} {Rel}{MSA}{44}
+\DeclareFlexSymbol{\trianglelefteq} {Rel}{MSA}{45}
+\DeclareFlexSymbol{\bigstar} {Ord}{MSA}{46}
+\DeclareFlexSymbol{\between} {Rel}{MSA}{47}
+\DeclareFlexSymbol{\blacktriangledown} {Ord}{MSA}{48}
+\DeclareFlexSymbol{\blacktriangleright} {Rel}{MSA}{49}
+\DeclareFlexSymbol{\blacktriangleleft} {Rel}{MSA}{4A}
+\DeclareFlexSymbol{\vartriangle} {Rel}{MSA}{4D}
+\DeclareFlexSymbol{\blacktriangle} {Ord}{MSA}{4E}
+\DeclareFlexSymbol{\triangledown} {Ord}{MSA}{4F}
+\DeclareFlexSymbol{\eqcirc} {Rel}{MSA}{50}
+\DeclareFlexSymbol{\lesseqgtr} {Rel}{MSA}{51}
+\DeclareFlexSymbol{\gtreqless} {Rel}{MSA}{52}
+\DeclareFlexSymbol{\lesseqqgtr} {Rel}{MSA}{53}
+\DeclareFlexSymbol{\gtreqqless} {Rel}{MSA}{54}
+\DeclareFlexSymbol{\Rrightarrow} {Rel}{MSA}{56}
+\DeclareFlexSymbol{\Lleftarrow} {Rel}{MSA}{57}
+\DeclareFlexSymbol{\veebar} {Bin}{MSA}{59}
+\DeclareFlexSymbol{\barwedge} {Bin}{MSA}{5A}
+\DeclareFlexSymbol{\doublebarwedge} {Bin}{MSA}{5B}
+% \end{macrocode}
+% In amsfonts.sty
+% \begin{macrocode}
+%%\DeclareFlexSymbol{\angle} {Ord}{MSA}{5C}
+\DeclareFlexSymbol{\measuredangle} {Ord}{MSA}{5D}
+\DeclareFlexSymbol{\sphericalangle} {Ord}{MSA}{5E}
+\DeclareFlexSymbol{\varpropto} {Rel}{MSA}{5F}
+\DeclareFlexSymbol{\smallsmile} {Rel}{MSA}{60}
+\DeclareFlexSymbol{\smallfrown} {Rel}{MSA}{61}
+\DeclareFlexSymbol{\Subset} {Rel}{MSA}{62}
+\DeclareFlexSymbol{\Supset} {Rel}{MSA}{63}
+\DeclareFlexSymbol{\Cup} {Bin}{MSA}{64}
+ \let\doublecup\Cup
+\DeclareFlexSymbol{\Cap} {Bin}{MSA}{65}
+ \let\doublecap\Cap
+\DeclareFlexSymbol{\curlywedge} {Bin}{MSA}{66}
+\DeclareFlexSymbol{\curlyvee} {Bin}{MSA}{67}
+\DeclareFlexSymbol{\leftthreetimes} {Bin}{MSA}{68}
+\DeclareFlexSymbol{\rightthreetimes}{Bin}{MSA}{69}
+\DeclareFlexSymbol{\subseteqq} {Rel}{MSA}{6A}
+\DeclareFlexSymbol{\supseteqq} {Rel}{MSA}{6B}
+\DeclareFlexSymbol{\bumpeq} {Rel}{MSA}{6C}
+\DeclareFlexSymbol{\Bumpeq} {Rel}{MSA}{6D}
+\DeclareFlexSymbol{\lll} {Rel}{MSA}{6E}
+ \let\llless\lll
+\DeclareFlexSymbol{\ggg} {Rel}{MSA}{6F}
+ \let\gggtr\ggg
+\DeclareFlexSymbol{\circledS} {Ord}{MSA}{73}
+\DeclareFlexSymbol{\pitchfork} {Rel}{MSA}{74}
+\DeclareFlexSymbol{\dotplus} {Bin}{MSA}{75}
+\DeclareFlexSymbol{\backsim} {Rel}{MSA}{76}
+\DeclareFlexSymbol{\backsimeq} {Rel}{MSA}{77}
+\DeclareFlexSymbol{\complement} {Ord}{MSA}{7B}
+\DeclareFlexSymbol{\intercal} {Bin}{MSA}{7C}
+\DeclareFlexSymbol{\circledcirc} {Bin}{MSA}{7D}
+\DeclareFlexSymbol{\circledast} {Bin}{MSA}{7E}
+\DeclareFlexSymbol{\circleddash} {Bin}{MSA}{7F}
+% \end{macrocode}
+% Begin AMSb declarations
+% \begin{macrocode}
+\DeclareFlexSymbol{\lvertneqq} {Rel}{MSB}{00}
+\DeclareFlexSymbol{\gvertneqq} {Rel}{MSB}{01}
+\DeclareFlexSymbol{\nleq} {Rel}{MSB}{02}
+\DeclareFlexSymbol{\ngeq} {Rel}{MSB}{03}
+\DeclareFlexSymbol{\nless} {Rel}{MSB}{04}
+\DeclareFlexSymbol{\ngtr} {Rel}{MSB}{05}
+\DeclareFlexSymbol{\nprec} {Rel}{MSB}{06}
+\DeclareFlexSymbol{\nsucc} {Rel}{MSB}{07}
+\DeclareFlexSymbol{\lneqq} {Rel}{MSB}{08}
+\DeclareFlexSymbol{\gneqq} {Rel}{MSB}{09}
+\DeclareFlexSymbol{\nleqslant} {Rel}{MSB}{0A}
+\DeclareFlexSymbol{\ngeqslant} {Rel}{MSB}{0B}
+\DeclareFlexSymbol{\lneq} {Rel}{MSB}{0C}
+\DeclareFlexSymbol{\gneq} {Rel}{MSB}{0D}
+\DeclareFlexSymbol{\npreceq} {Rel}{MSB}{0E}
+\DeclareFlexSymbol{\nsucceq} {Rel}{MSB}{0F}
+\DeclareFlexSymbol{\precnsim} {Rel}{MSB}{10}
+\DeclareFlexSymbol{\succnsim} {Rel}{MSB}{11}
+\DeclareFlexSymbol{\lnsim} {Rel}{MSB}{12}
+\DeclareFlexSymbol{\gnsim} {Rel}{MSB}{13}
+\DeclareFlexSymbol{\nleqq} {Rel}{MSB}{14}
+\DeclareFlexSymbol{\ngeqq} {Rel}{MSB}{15}
+\DeclareFlexSymbol{\precneqq} {Rel}{MSB}{16}
+\DeclareFlexSymbol{\succneqq} {Rel}{MSB}{17}
+\DeclareFlexSymbol{\precnapprox} {Rel}{MSB}{18}
+\DeclareFlexSymbol{\succnapprox} {Rel}{MSB}{19}
+\DeclareFlexSymbol{\lnapprox} {Rel}{MSB}{1A}
+\DeclareFlexSymbol{\gnapprox} {Rel}{MSB}{1B}
+\DeclareFlexSymbol{\nsim} {Rel}{MSB}{1C}
+\DeclareFlexSymbol{\ncong} {Rel}{MSB}{1D}
+\DeclareFlexSymbol{\diagup} {Ord}{MSB}{1E}
+\DeclareFlexSymbol{\diagdown} {Ord}{MSB}{1F}
+\DeclareFlexSymbol{\varsubsetneq} {Rel}{MSB}{20}
+\DeclareFlexSymbol{\varsupsetneq} {Rel}{MSB}{21}
+\DeclareFlexSymbol{\nsubseteqq} {Rel}{MSB}{22}
+\DeclareFlexSymbol{\nsupseteqq} {Rel}{MSB}{23}
+\DeclareFlexSymbol{\subsetneqq} {Rel}{MSB}{24}
+\DeclareFlexSymbol{\supsetneqq} {Rel}{MSB}{25}
+\DeclareFlexSymbol{\varsubsetneqq} {Rel}{MSB}{26}
+\DeclareFlexSymbol{\varsupsetneqq} {Rel}{MSB}{27}
+\DeclareFlexSymbol{\subsetneq} {Rel}{MSB}{28}
+\DeclareFlexSymbol{\supsetneq} {Rel}{MSB}{29}
+\DeclareFlexSymbol{\nsubseteq} {Rel}{MSB}{2A}
+\DeclareFlexSymbol{\nsupseteq} {Rel}{MSB}{2B}
+\DeclareFlexSymbol{\nparallel} {Rel}{MSB}{2C}
+\DeclareFlexSymbol{\nmid} {Rel}{MSB}{2D}
+\DeclareFlexSymbol{\nshortmid} {Rel}{MSB}{2E}
+\DeclareFlexSymbol{\nshortparallel} {Rel}{MSB}{2F}
+\DeclareFlexSymbol{\nvdash} {Rel}{MSB}{30}
+\DeclareFlexSymbol{\nVdash} {Rel}{MSB}{31}
+\DeclareFlexSymbol{\nvDash} {Rel}{MSB}{32}
+\DeclareFlexSymbol{\nVDash} {Rel}{MSB}{33}
+\DeclareFlexSymbol{\ntrianglerighteq}{Rel}{MSB}{34}
+\DeclareFlexSymbol{\ntrianglelefteq}{Rel}{MSB}{35}
+\DeclareFlexSymbol{\ntriangleleft} {Rel}{MSB}{36}
+\DeclareFlexSymbol{\ntriangleright} {Rel}{MSB}{37}
+\DeclareFlexSymbol{\nleftarrow} {Rel}{MSB}{38}
+\DeclareFlexSymbol{\nrightarrow} {Rel}{MSB}{39}
+\DeclareFlexSymbol{\nLeftarrow} {Rel}{MSB}{3A}
+\DeclareFlexSymbol{\nRightarrow} {Rel}{MSB}{3B}
+\DeclareFlexSymbol{\nLeftrightarrow}{Rel}{MSB}{3C}
+\DeclareFlexSymbol{\nleftrightarrow}{Rel}{MSB}{3D}
+\DeclareFlexSymbol{\divideontimes} {Bin}{MSB}{3E}
+\DeclareFlexSymbol{\varnothing} {Ord}{MSB}{3F}
+\DeclareFlexSymbol{\nexists} {Ord}{MSB}{40}
+\DeclareFlexSymbol{\Finv} {Ord}{MSB}{60}
+\DeclareFlexSymbol{\Game} {Ord}{MSB}{61}
+% \end{macrocode}
+% In amsfonts.sty:
+% \begin{macrocode}
+%%\DeclareFlexSymbol{\mho} {Ord}{MSB}{66}
+\DeclareFlexSymbol{\eth} {Ord}{MSB}{67}
+\DeclareFlexSymbol{\eqsim} {Rel}{MSB}{68}
+\DeclareFlexSymbol{\beth} {Ord}{MSB}{69}
+\DeclareFlexSymbol{\gimel} {Ord}{MSB}{6A}
+\DeclareFlexSymbol{\daleth} {Ord}{MSB}{6B}
+\DeclareFlexSymbol{\lessdot} {Bin}{MSB}{6C}
+\DeclareFlexSymbol{\gtrdot} {Bin}{MSB}{6D}
+\DeclareFlexSymbol{\ltimes} {Bin}{MSB}{6E}
+\DeclareFlexSymbol{\rtimes} {Bin}{MSB}{6F}
+\DeclareFlexSymbol{\shortmid} {Rel}{MSB}{70}
+\DeclareFlexSymbol{\shortparallel} {Rel}{MSB}{71}
+\DeclareFlexSymbol{\smallsetminus} {Bin}{MSB}{72}
+\DeclareFlexSymbol{\thicksim} {Rel}{MSB}{73}
+\DeclareFlexSymbol{\thickapprox} {Rel}{MSB}{74}
+\DeclareFlexSymbol{\approxeq} {Rel}{MSB}{75}
+\DeclareFlexSymbol{\succapprox} {Rel}{MSB}{76}
+\DeclareFlexSymbol{\precapprox} {Rel}{MSB}{77}
+\DeclareFlexSymbol{\curvearrowleft} {Rel}{MSB}{78}
+\DeclareFlexSymbol{\curvearrowright}{Rel}{MSB}{79}
+\DeclareFlexSymbol{\digamma} {Ord}{MSB}{7A}
+\DeclareFlexSymbol{\varkappa} {Ord}{MSB}{7B}
+\DeclareFlexSymbol{\Bbbk} {Ord}{MSB}{7C}
+\DeclareFlexSymbol{\hslash} {Ord}{MSB}{7D}
+% \end{macrocode}
+% In amsfonts.sty:
+% \begin{macrocode}
+%%\DeclareFlexSymbol{\hbar} {Ord}{MSB}{7E}
+\DeclareFlexSymbol{\backepsilon} {Rel}{MSB}{7F}
+%</msabm>
+% \end{macrocode} \ No newline at end of file
diff --git a/Master/texmf-dist/source/latex/mh/mathstyle.dtx b/Master/texmf-dist/source/latex/mh/mathstyle.dtx
new file mode 100644
index 00000000000..ca8fede5aed
--- /dev/null
+++ b/Master/texmf-dist/source/latex/mh/mathstyle.dtx
@@ -0,0 +1,396 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 1997-2003 by Michael J. Downes
+% Copyright (C) 2007 by Morten Hoegholm <mh.ctan@gmail.com>
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3 of this license or (at your option) any later
+% version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of
+% LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Morten Hoegholm.
+%
+% This work consists of the main source file mathstyle.dtx
+% and the derived files
+% mathstyle.sty, mathstyle.pdf, mathstyle.ins, mathstyle.drv.
+%
+% Distribution:
+% CTAN:macros/latex/contrib/mh/mathstyle.dtx
+% CTAN:macros/latex/contrib/mh/mathstyle.pdf
+%
+% Unpacking:
+% (a) If mathstyle.ins is present:
+% tex mathstyle.ins
+% (b) Without mathstyle.ins:
+% tex mathstyle.dtx
+% (c) If you insist on using LaTeX
+% latex \let\install=y\input{mathstyle.dtx}
+% (quote the arguments according to the demands of your shell)
+%
+% Documentation:
+% (a) If mathstyle.drv is present:
+% latex mathstyle.drv
+% (b) Without mathstyle.drv:
+% latex mathstyle.dtx; ...
+% The class ltxdoc loads the configuration file ltxdoc.cfg
+% if available. Here you can specify further options, e.g.
+% use A4 as paper format:
+% \PassOptionsToClass{a4paper}{article}
+%
+% Programm calls to get the documentation (example):
+% pdflatex mathstyle.dtx
+% makeindex -s gind.ist mathstyle.idx
+% pdflatex mathstyle.dtx
+% makeindex -s gind.ist mathstyle.idx
+% pdflatex mathstyle.dtx
+%
+% Installation:
+% TDS:tex/latex/mh/mathstyle.sty
+% TDS:doc/latex/mh/mathstyle.pdf
+% TDS:source/latex/mh/mathstyle.dtx
+%
+%<*ignore>
+\begingroup
+ \def\x{LaTeX2e}
+\expandafter\endgroup
+\ifcase 0\ifx\install y1\fi\expandafter
+ \ifx\csname processbatchFile\endcsname\relax\else1\fi
+ \ifx\fmtname\x\else 1\fi\relax
+\else\csname fi\endcsname
+%</ignore>
+%<*install>
+\input docstrip.tex
+\Msg{************************************************************************}
+\Msg{* Installation}
+\Msg{* Package: mathstyle 2007/12/10 v0.83 Mathstyle (MH)}
+\Msg{************************************************************************}
+
+\keepsilent
+\askforoverwritefalse
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 1997-2003 by Michael J. Downes
+Copyright (C) 2007 by Morten Hoegholm <mh.ctan@gmail.com>
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3 of this license or (at your option) any later
+version. The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of
+LaTeX version 2005/12/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+This Current Maintainer of this work is Morten Hoegholm.
+
+This work consists of the main source file mathstyle.dtx
+and the derived files
+ mathstyle.sty, mathstyle.pdf, mathstyle.ins, mathstyle.drv.
+
+\endpreamble
+
+\generate{%
+ \file{mathstyle.ins}{\from{mathstyle.dtx}{install}}%
+ \file{mathstyle.drv}{\from{mathstyle.dtx}{driver}}%
+ \usedir{tex/latex/mh}%
+ \file{mathstyle.sty}{\from{mathstyle.dtx}{package}}%
+}
+
+\obeyspaces
+\Msg{************************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* file into a directory searched by TeX:}
+\Msg{*}
+\Msg{* mathstyle.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file `mathstyle.drv'}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{************************************************************************}
+
+\endbatchfile
+%</install>
+%<*ignore>
+\fi
+%</ignore>
+%<*driver>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{mathstyle.drv}%
+ [2007/12/10 v0.83 mathstyle (MH)]
+\documentclass{ltxdoc}
+\providecommand*\pkg[1]{\textsf{#1}}
+\begin{document}
+ \DocInput{mathstyle.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{The \textsf{mathstyle} package}
+% \date{2007/12/10 v0.83}
+% \author{Morten H\o gholm \\\texttt{mh.ctan@gmail.com}}
+%
+%
+% \maketitle
+%
+% \part*{User's guide}
+%
+% This package exists for two reasons:
+% \begin{itemize}
+% \item The primitive operations for creating a super- or subscript in
+% \TeX\ work almost as if \verb|^| and \verb|_| are macros taking an
+% argument. However, that is not quite the case, and
+% some things that you'd expect to work don't (e.g., \verb|^\cong|)
+% whereas others which you'd think shouldn't work actually
+% do (such as |^\mathsf{s}|). We do everyone a favor if it behaves
+% consistently, i.e., if the superscript and subscript operations
+% act as if they are macros taking exactly one argument.
+%
+% \item Because the \TeX\ math typesetting engine uses infix notation
+% for fractions, one has to use \cs{mathchoice} or \cs{mathpalette}
+% whenever trying to do anything requiring boxing or measuring
+% math. This creates problems for loading fonts on demand as the
+% font loading mechanism has to load fonts for all styles without
+% even knowing if the font is going to be used. Getting the timing
+% of \cs{mathchoice} right can be tricky as well. Since \LaTeX\ does
+% not promote the primitive infix notation, this package keeps track
+% of a current mathstyle parameter.
+% \end{itemize}
+%
+%
+% \section{Some usage tips}
+%
+% If you want to use this package with \pkg{amsmath}, it is important
+% \pkg{mathstyle} is loaded \emph{after} \pkg{amsmath}.
+%
+% The current mathstyle is stored in the variable \cs{mathstyle}. The
+% command \cs{currentmathstyle} can be used to switch to the mode
+% currently active. Below is shown how the macro \cs{mathrlap} from
+% \pkg{mathtools} is implemented without knowing about the current
+% mathstyle using \cs{mathpalette}.
+% \begin{verbatim}
+% \providecommand*\mathrlap[1][]{%
+% \ifx\@empty#1\@empty
+% \expandafter \mathpalette \expandafter \@mathrlap
+% \else
+% \expandafter \@mathrlap \expandafter #1%
+% \fi}
+% \providecommand*\@mathrlap #1#2{{}\rlap{$\m@th#1{#2}$}}
+% \end{verbatim}
+% The same definition using \cs{currentmathstyle} from this package.
+% \begin{verbatim}
+% \providecommand*\mathrlap[2][]{%
+% #1 {}\rlap{$\m@th \currentmathstyle {#2}$}}
+% \end{verbatim}
+%
+%
+%
+% \StopEventually{}
+% \part*{Implementation}
+%
+%
+%
+% \begin{macrocode}
+%<*package>
+\ProvidesPackage{mathstyle}[2007/12/10 v0.83]
+% \end{macrocode}
+% \begin{macro}{\@saveprimitive}
+% A straight copy from \pkg{breqn}, see implementation details
+% there. Of course, with a recent pdf\TeX\ (v1.40+), one can just
+% use \cs{primitive} to get the original. We will implement that
+% some day.
+% \begin{macrocode}
+\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
+}
+\providecommand\@saveprimitive@a[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{mathstyle}%
+ {Unable to properly define \string#2; primitive
+ \noexpand#1no longer primitive}\@eha
+ \fi
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% Do initial \cs{chardef} of \cs{mathstyle}.
+% \begin{macrocode}
+\chardef\mathstyle=\z@
+% \end{macrocode}
+% Save the four style changing primitives, \cs{mathchoice} and the
+% fraction commands.
+% \begin{macrocode}
+\@saveprimitive\displaystyle\@@displaystyle
+\@saveprimitive\textstyle\@@textstyle
+\@saveprimitive\scriptstyle\@@scriptstyle
+\@saveprimitive\scriptscriptstyle\@@scriptscriptstyle
+\@saveprimitive\mathchoice\@@mathchoice
+\@saveprimitive\over\@@over
+\@saveprimitive\atop\@@atop
+\@saveprimitive\above\@@above
+\@saveprimitive\overwithdelims\@@overwithdelims
+\@saveprimitive\atopwithdelims\@@atopwithdelims
+\@saveprimitive\abovewithdelims\@@abovewithdelims
+% \end{macrocode}
+% Then we redeclare the four style changing primitives.
+% \begin{macrocode}
+\DeclareRobustCommand{\displaystyle}{%
+ \@@displaystyle \chardef\mathstyle\z@}
+\DeclareRobustCommand{\textstyle}{%
+ \@@textstyle \chardef\mathstyle\@ne}
+\DeclareRobustCommand{\scriptstyle}{%
+ \@@scriptstyle \chardef\mathstyle\tw@}
+\DeclareRobustCommand{\scriptscriptstyle}{%
+ \@@scriptscriptstyle \chardef\mathstyle\thr@@}
+% \end{macrocode}
+% First we get the primitive operations. These should have been
+% control sequences in \TeX\ just like operations for begin math, end
+% math, begin display, end display.
+% \begin{macrocode}
+\begingroup \catcode`\^=7\relax \catcode`\_=8\relax % just in case
+\lowercase{\endgroup
+\let\@@superscript=^ \let\@@subscript=_
+}%
+% \end{macrocode}
+% If we enter a sub- or superscript the \cs{mathstyle} must be
+% adjusted. Since all is happening in a group, we do not have to worry
+% about resetting.
+% \begin{macrocode}
+\def\subsupstyle{%
+ \ifnum\mathstyle<\tw@ \chardef\mathstyle\tw@
+ \else \chardef\mathstyle\thr@@
+ \fi
+}
+% \end{macrocode}
+% Provide commands with meaningful names for the two primitives, cf.\
+% \cs{mathrel}.
+% \begin{macrocode}
+\let\mathsup=\@@superscript
+\let\mathsub=\@@subscript
+% \end{macrocode}
+% \cs{sb} and \cs{sp} are then defined as macros.
+% \begin{macrocode}
+\def\sb#1{\mathsub{\protect\subsupstyle#1}}%
+\def\sp#1{\mathsup{\protect\subsupstyle#1}}%
+% \end{macrocode}
+% \cs{mathchoice} is now just a switch. Note that this redefinition
+% does not allow the arbitrary \meta{filler} of the \TeX\
+% primitive. Very rarely used anyway.
+% \begin{macrocode}
+\def\mathchoice{%
+ \relax\ifcase\mathstyle
+ \expandafter\@firstoffour
+ \or
+ \expandafter\@secondoffour
+ \or
+ \expandafter\@thirdoffour
+ \else
+ \expandafter\@fourthoffour
+ \fi
+}
+% \end{macrocode}
+% Helper macros.
+% \begin{macrocode}
+\providecommand\@firstoffour[4]{#1}
+\providecommand\@secondoffour[4]{#2}
+\providecommand\@thirdoffour[4]{#3}
+\providecommand\@fourthoffour[4]{#4}
+% \end{macrocode}
+% The fractions. Note that this uses the same names as in
+% \pkg{amsmath}. Much the same except here they call \cs{fracstyle}.
+% \begin{macrocode}
+\DeclareRobustCommand\genfrac[6]{%
+ {\fracstyle #1%
+ {\begingroup #5\endgroup
+ \csname @@\ifx\maxdimen#4\maxdimen over\else above\fi
+ \if @#2@\else withdelims\fi\endcsname #2#3#4\relax
+ #6}%
+ }%
+}
+\renewcommand{\frac}{\genfrac{}{}{}{}}
+\providecommand{\dfrac}{}
+\providecommand{\tfrac}{}
+\renewcommand{\dfrac}{\genfrac\displaystyle{}{}{}}
+\renewcommand{\tfrac}{\genfrac\textstyle{}{}{}}
+\providecommand{\binom}{}
+\providecommand{\tbinom}{}
+\providecommand{\dbinom}{}
+\renewcommand{\binom}{\genfrac{}(){0pt}}
+\renewcommand{\dbinom}{\genfrac\displaystyle(){0pt}}
+\renewcommand{\tbinom}{\genfrac\textstyle(){0pt}}
+% \end{macrocode}
+% The \cs{fracstyle} command is a switch to go one level down but no
+% further than three.
+% \begin{macrocode}
+\def\fracstyle{\ifcase\mathstyle
+ \chardef\mathstyle=\@ne
+ \or
+ \chardef\mathstyle=\tw@
+ \else
+ \chardef\mathstyle=\thr@@
+ \fi
+}
+% \end{macrocode}
+% The \cs{currentmathstyle} checks the value of \cs{mathstyle} and
+% switches to it so it is in essence the opposite of \cs{displaystyle}
+% and friends.
+% \begin{macrocode}
+\def\currentmathstyle{%
+ \ifcase\mathstyle
+ \@@displaystyle
+ \or
+ \@@textstyle
+ \or
+ \@@scriptstyle
+ \or
+ \@@scriptscripstyle
+ \fi}
+% \end{macrocode}
+% Finally, we declare the package options.
+% \begin{macrocode}
+\DeclareOption{activechars}{\catcode`\^=13\relax \catcode`\_=13\relax }
+\ProcessOptions\relax
+\ifnum\catcode`\^=13\relax
+ \let^=\sp \let_=\sb
+\else
+ \mathcode`\^="8000\relax \mathcode`\_="8000\relax
+ \begingroup \catcode`\^=\active \catcode`\_=\active
+ \global\let^=\sp \global\let_=\sb
+ \endgroup
+\fi
+%</package>
+% \end{macrocode}
+% \Finale
diff --git a/Master/texmf-dist/source/latex/mh/mathtools.dtx b/Master/texmf-dist/source/latex/mh/mathtools.dtx
index 96ac01a4a9a..585ec5d9b9c 100644
--- a/Master/texmf-dist/source/latex/mh/mathtools.dtx
+++ b/Master/texmf-dist/source/latex/mh/mathtools.dtx
@@ -1,31 +1,134 @@
-% \iffalse meta-comment
-% File `mathtools.dtx'.
-% Copyright 2004 Morten H\o gholm.
-% moho01ab@student.cbs.dk
-%
-% It may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2003/12/01 or later.
-%
-% This work has the LPPL maintenance status "maintained".
+% \iffalse meta-comment
%
-% The Current Maintainer of this work is Morten H\o gholm.
+% Copyright (C) 2004-2007 by Morten Hoegholm <mh.ctan@gmail.com>
%
-% This work consists of the files mathtools.dtx and mathtools.ins
-% and the derived file mathtools.sty.
-%
-%<package>\NeedsTeXFormat{LaTeX2e}
-%<package>\ProvidesPackage{mathtools}
-%<*dtx>
- \ProvidesFile{mathtools.dtx}
-%</dtx>
- [2004/10/10 v1.01a mathematical typesetting tools (MH)]
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3 of this license or (at your option) any later
+% version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of
+% LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Morten Hoegholm.
+%
+% This work consists of the main source file mathtools.dtx
+% and the derived files
+% mathtools.sty, mathtools.pdf, mathtools.ins, mathtools.drv.
+%
+% Distribution:
+% CTAN:macros/latex/contrib/mh/mathtools.dtx
+% CTAN:macros/latex/contrib/mh/mathtools.pdf
+%
+% Unpacking:
+% (a) If mathtools.ins is present:
+% tex mathtools.ins
+% (b) Without mathtools.ins:
+% tex mathtools.dtx
+% (c) If you insist on using LaTeX
+% latex \let\install=y\input{mathtools.dtx}
+% (quote the arguments according to the demands of your shell)
+%
+% Documentation:
+% (a) If mathtools.drv is present:
+% latex mathtools.drv
+% (b) Without mathtools.drv:
+% latex mathtools.dtx; ...
+% The class ltxdoc loads the configuration file ltxdoc.cfg
+% if available. Here you can specify further options, e.g.
+% use A4 as paper format:
+% \PassOptionsToClass{a4paper}{article}
+%
+% Programm calls to get the documentation (example):
+% pdflatex mathtools.dtx
+% makeindex -s gind.ist mathtools.idx
+% pdflatex mathtools.dtx
+% makeindex -s gind.ist mathtools.idx
+% pdflatex mathtools.dtx
+%
+% Installation:
+% TDS:tex/latex/mh/mathtools.sty
+% TDS:doc/latex/mh/mathtools.pdf
+% TDS:source/latex/mh/mathtools.dtx
+%
+%<*ignore>
+\begingroup
+ \def\x{LaTeX2e}
+\expandafter\endgroup
+\ifcase 0\ifx\install y1\fi\expandafter
+ \ifx\csname processbatchFile\endcsname\relax\else1\fi
+ \ifx\fmtname\x\else 1\fi\relax
+\else\csname fi\endcsname
+%</ignore>
+%<*install>
+\input docstrip.tex
+\Msg{************************************************************************}
+\Msg{* Installation}
+\Msg{* Package: mathtools 2007/12/03 v1.03 (MH)}
+\Msg{************************************************************************}
+
+\keepsilent
+\askforoverwritefalse
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2002-2007 by Morten Hoegholm <mh.ctan@gmail.com>
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3 of this license or (at your option) any later
+version. The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of
+LaTeX version 2005/12/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+This Current Maintainer of this work is Morten Hoegholm.
+
+This work consists of the main source file mathtools.dtx
+and the derived files
+ mathtools.sty, mathtools.pdf, mathtools.ins, mathtools.drv.
+
+\endpreamble
+
+\generate{%
+ \file{mathtools.ins}{\from{mathtools.dtx}{install}}%
+ \file{mathtools.drv}{\from{mathtools.dtx}{driver}}%
+ \usedir{tex/latex/mh}%
+ \file{mathtools.sty}{\from{mathtools.dtx}{package}}%
+}
+
+\obeyspaces
+\Msg{************************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* file into a directory searched by TeX:}
+\Msg{*}
+\Msg{* mathtools.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file `mathtools.drv'}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{************************************************************************}
+
+\endbatchfile
+%</install>
+%<*ignore>
+\fi
+%</ignore>
%<*driver>
-\documentclass[a4paper]{ltxdoc}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{mathtools.drv}%
+ [2007/12/03 v1.03 mathematical typesetting tools (MH)]
+\documentclass{ltxdoc}
+\IfFileExists{fourier.sty}{\usepackage{fourier}}{}
\addtolength\marginparwidth{-25pt}
\usepackage{mathtools}
@@ -36,7 +139,7 @@
\providecommand*\email[1]{\href{mailto:#1}{\texttt{#1}}}
\providecommand*\mode[1]{\texttt{[#1]}}
\providecommand*\file[1]{\texttt{#1}}
-\usepackage{color,varioref}
+\usepackage{xcolor,varioref}
\makeatletter
\newcommand*\thinfbox[2][black]{\fboxsep0pt\textcolor{#1}{\rulebox{{\normalcolor#2}}}}
\newcommand*\thinboxed[2][black]{\thinfbox[#1]{\ensuremath{\displaystyle#2}}}
@@ -131,7 +234,7 @@
\let\MTtheindex\theindex
\def\theindex{\MTtheindex\MakePrivateLetters}
-\usepackage[final,hyperindex=false,linkbordercolor=false]{hyperref}
+\usepackage[final,hyperindex=false]{hyperref}
\renewcommand*\usage[1]{\textit{\hyperpage{#1}}}
\OnlyDescription
@@ -143,7 +246,7 @@
%
% \changes{v1.0}{2004/07/26}{Initial release}
%
-% \GetFileInfo{mathtools.dtx}
+% \GetFileInfo{mathtools.drv}
%
% \CheckSum{2004}
%
@@ -189,7 +292,7 @@
% if you have any good macros or just macros that help you when
% writing mathematics, then don't hesitate to report them to me. I
% can be reached at
-% \begin{quote}\email{moho01ab@student.cbs.dk}\end{quote}
+% \begin{quote}\email{mh.ctan@gmail.com}\end{quote}
% This is of course also the address to use in case of bug reports.
%
% \section{Package loading}
@@ -1653,10 +1756,12 @@
% Lets start the package.
% \begin{macrocode}
%<*package>
+\ProvidesPackage{mathtools}%
+ [2007/12/03 v1.03 mathematical typesetting tools (MH)]
% \end{macrocode}
% \begin{macrocode}
\RequirePackage{keyval,calc}
-\RequirePackage{mhsetup}[2004/10/10]
+\RequirePackage{mhsetup}[2007/12/03]
\MHInternalSyntaxOn
% \end{macrocode}
%
@@ -1845,15 +1950,16 @@
\def\MT_extended_tagform:n #1{
\MH_set_boolean_F:n {raw_maketag}
% \end{macrocode}
-% We test if the equation was labelled. We already know if it was tagged
-% manually.
+% We test if the equation was labelled. We already know if it was
+% tagged manually. Have to watch out for \TeX\ inserting a blank line
+% so do not let the tag have width zero.
% \begin{macrocode}
\if_meaning:NN \df@label\@empty
- \MH_if_boolean:nT {manual_tag}
- { \MH_if_boolean:nTF {show_manual_tags}
- { \MT_prev_tagform:n {#1} }
- { \stepcounter{equation} }
- }
+ \MH_if_boolean:nTF {manual_tag}% this was \MH_if_boolean:nT before
+ { \MH_if_boolean:nTF {show_manual_tags}
+ { \MT_prev_tagform:n {#1} }
+ { \stepcounter{equation} }
+ }{\kern1sp}% this last {\kern1sp} is new.
\else:
\MH_if_boolean:nTF {manual_tag}
{ \MH_if_boolean:nTF {show_manual_tags}
@@ -2089,9 +2195,9 @@
\kern-\wd0 \lower.22ex\box0}}
\providecommand*\xrightleftharpoons[2][]{\mathrel{%
\raise.22ex\hbox{%
- $\ext@arrow 3095\MT_rightharpoonup_fill:{\phantom{#1}}{#2}$}%
+ $\ext@arrow 0359\MT_rightharpoonup_fill:{\phantom{#1}}{#2}$}%
\setbox0=\hbox{%
- $\ext@arrow 0359\MT_leftharpoondown_fill:{#1}{\phantom{#2}}$}%
+ $\ext@arrow 3095\MT_leftharpoondown_fill:{#1}{\phantom{#2}}$}%
\kern-\wd0 \lower.22ex\box0}}
% \end{macrocode}
% \end{macro}
@@ -2366,6 +2472,7 @@
% \begin{macro}{\l_MT_multwidth_dim}
% Helpers.
% \begin{macrocode}
+\let \AMS@math@cr@@ \math@cr@@
\MH_new_boolean:n {mult_firstline}
\MH_new_boolean:n {outer_mult}
\newcount\g_MT_multlinerow_int
@@ -2585,7 +2692,7 @@
% The user environment. Scan for an optional argument.
% \begin{macrocode}
\newenvironment{multlined}[1][]
- {
+ {\MH_group_align_safe_begin:
\MT_test_for_tcb_other:nnnnn {#1}
{\def\MT_mult_default_pos:{#1}}
{\def\MT_mult_default_pos:{#1}}
@@ -2599,7 +2706,7 @@
\MT_multlined_second_arg:w
}
{
- \hfilneg \endaligned
+ \hfilneg \endaligned \MH_group_align_safe_end:
}
\MHPrecedingSpacesOn
% \end{macrocode}
@@ -2644,12 +2751,11 @@
% \begin{macrocode}
\newcommand*\DeclarePairedDelimiter[3]{%
\@ifdefinable{#1}{
- \edef\MT_next: {\MH_cs_to_str:N #1}
% \end{macrocode}
% Define the starred command to just put \cs{left} and \cs{right}
% before the delimiters.
% \begin{macrocode}
- \@namedef{MT_delim_\MT_next: _star:}##1
+ \@namedef{MT_delim_\MH_cs_to_str:N #1 _star:}##1
{\left#2 ##1 \right #3}%
% \end{macrocode}
% The command with optional argument. It should be \cs{bigg} or
@@ -2657,13 +2763,15 @@
% \begin{macrocode}
\@xp\@xp\@xp
\newcommand
- \@xp\csname MT_delim_\MT_next: _nostar:\endcsname[2][\\@gobble]
- { \edef\MT_next: {\MH_cs_to_str:N ##1}
+ \@xp\csname MT_delim_\MH_cs_to_str:N #1 _nostar:\endcsname
+ [2][\\@gobble]
+ {
% \end{macrocode}
% With the default optional argument we wind up with \cs{relax},
% else we get \cs{biggr} and \cs{biggl} etc.
% \begin{macrocode}
- \@nameuse {\MT_next: l} #2 ##2 \@nameuse {\MT_next: r} #3}
+ \mathopen{\@nameuse {\MH_cs_to_str:N ##1 l} #2} ##2
+ \mathclose{\@nameuse {\MH_cs_to_str:N ##1 r} #3}}
% \end{macrocode}
% The user command comes here. Just check for the star and choose
% the right internal command.
@@ -2680,50 +2788,54 @@
%
% \subsection{A \texttt{\textbackslash displaystyle} \env{cases} environment}
%
-% \begin{macro}{\MT_start_cases:nn}
+% \begin{macro}{\MT_start_cases:nnn}
% We define a single command that does all the hard work.
% \begin{macrocode}
-\def\MT_start_cases:nn #1#2{
- \RIfM@\else
- \nonmatherr@{\begin{\@currenvir}}%
- \fi
-% \end{macrocode}
-% Put in the brace and center the contents (nothing else makes
-% sense).
-% \begin{macrocode}
- \left\lbrace
- \vcenter \bgroup
- \Let@ \chardef\dspbrk@context\@ne \restore@math@cr
- \spread@equation
- \ialign\bgroup
+\def\MT_start_cases:nnn #1#2#3{ % #1=sep,#2=preamble,#3=delim
+ \RIfM@\else
+ \nonmatherr@{\begin{\@currenvir}}
+ \fi
+ \MH_group_align_safe_begin:
+ \left#3
+ \vcenter \bgroup
+ \Let@ \chardef\dspbrk@context\@ne \restore@math@cr
+ \let \math@cr@@\AMS@math@cr@@
+ \spread@equation
+ \ialign\bgroup
% \end{macrocode}
% Set the first column flush left in \cs{displaystyle} math and the
% second as specified by the second argument. The first argument is
% the separation between the columns. It could be a \cs{quad} or
% something entirely different.
% \begin{macrocode}
- \strut@$\m@th\displaystyle{##}$\hfil&#1\strut@
+ \strut@$\m@th \displaystyle{##}$\hfil &#1\strut@
+ #2
+ \crcr
+}
% \end{macrocode}
-% Insert the specification of the second column.
+% \end{macro}
+% \begin{macro}{\MH_end_cases:}
% \begin{macrocode}
- #2
- \crcr
+\def\MH_end_cases:{\crcr\egroup
+ \restorecolumn@
+ \egroup
+ \MH_group_align_safe_end:
}
% \end{macrocode}
-% \end{macro}
+% \end{macro}
% \begin{macro}{\newcases}
% \begin{macro}{\renewcases}
% Easy creation of new \env{cases}-like environments.
% \begin{macrocode}
-\newcommand*\newcases[3]{
- \newenvironment{#1}
- {\MT_start_cases:nn {#2}{#3}}
- {\endaligned\right.}
+\newcommand*\newcases[5]{% #1=name, #2=sep, #3=preamble, #4=left, #5=right
+ \newenvironment{#1}
+ {\MT_start_cases:nnn {#2}{#3}{#4}}
+ {\MH_end_cases:\right#5}
}
-\newcommand*\renewcases[3]{
- \renewenvironment{#1}
- {\MT_start_cases:nn {#2}{#3}}
- {\endaligned\right.}
+\newcommand*\renewcases[5]{
+ \renewenvironment{#1}
+ {\MT_start_cases:nnn {#2}{#3}{#4}}
+ {\MH_end_cases:\right#5}
}
% \end{macrocode}
% \begin{environment}{dcases}
@@ -2731,8 +2843,8 @@
% \env{dcases} is a traditional cases with display style math in
% both columns, while \env{dcases*} has text in the second column.
% \begin{macrocode}
-\newcases{dcases}{\quad}{$\m@th\displaystyle{##}$\hfil}
-\newcases{dcases*}{\quad}{{##}\hfil}
+\newcases{dcases}{\quad}{$\m@th\displaystyle{##}$\hfil}{\lbrace}{.}
+\newcases{dcases*}{\quad}{{##}\hfil}{\lbrace}{.}
% \end{macrocode}
% \end{environment}
% \end{environment}
diff --git a/Master/texmf-dist/source/latex/mh/mhsetup.dtx b/Master/texmf-dist/source/latex/mh/mhsetup.dtx
index ac168a685d9..75bbb8b43b6 100644
--- a/Master/texmf-dist/source/latex/mh/mhsetup.dtx
+++ b/Master/texmf-dist/source/latex/mh/mhsetup.dtx
@@ -1,31 +1,133 @@
-% \iffalse meta-comment
-% File `mhsetup.dtx'.
-% Copyright 2004 Morten H\o gholm.
-% moho01ab@student.cbs.dk
-%
-% It may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
+% \iffalse meta-comment
+%
+% Copyright (C) 2002-2007 by Morten Hoegholm <mh.ctan@gmail.com>
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3 of this license or (at your option) any later
+% version. The latest version of this license is in
% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2003/12/01 or later.
+% and version 1.3 or later is part of all distributions of
+% LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% This Current Maintainer of this work is Morten Hoegholm.
+%
+% This work consists of the main source file mhsetup.dtx
+% and the derived files
+% mhsetup.sty, mhsetup.pdf, mhsetup.ins, mhsetup.drv.
+%
+% Distribution:
+% CTAN:macros/latex/contrib/mh/mhsetup.dtx
+% CTAN:macros/latex/contrib/mh/mhsetup.pdf
+%
+% Unpacking:
+% (a) If mhsetup.ins is present:
+% tex mhsetup.ins
+% (b) Without mhsetup.ins:
+% tex mhsetup.dtx
+% (c) If you insist on using LaTeX
+% latex \let\install=y\input{mhsetup.dtx}
+% (quote the arguments according to the demands of your shell)
%
-% This work has the LPPL maintenance status "maintained".
+% Documentation:
+% (a) If mhsetup.drv is present:
+% latex mhsetup.drv
+% (b) Without mhsetup.drv:
+% latex mhsetup.dtx; ...
+% The class ltxdoc loads the configuration file ltxdoc.cfg
+% if available. Here you can specify further options, e.g.
+% use A4 as paper format:
+% \PassOptionsToClass{a4paper}{article}
%
-% The Current Maintainer of this work is Morten H\o gholm.
+% Programm calls to get the documentation (example):
+% pdflatex mhsetup.dtx
+% makeindex -s gind.ist mhsetup.idx
+% pdflatex mhsetup.dtx
+% makeindex -s gind.ist mhsetup.idx
+% pdflatex mhsetup.dtx
%
-% This work consists of the files mhsetup.dtx and mhsetup.ins and the
-% derived file mhsetup.sty.
+% Installation:
+% TDS:tex/latex/mh/mhsetup.sty
+% TDS:doc/latex/mh/mhsetup.pdf
+% TDS:source/latex/mh/mhsetup.dtx
%
-%<package>\NeedsTeXFormat{LaTeX2e}
-%<package>\ProvidesPackage{mhsetup}
-%<*dtx>
- \ProvidesFile{mhsetup.dtx}
-%</dtx>
- [2004/10/10 v1.0b programming setup (MH)]
+%<*ignore>
+\begingroup
+ \def\x{LaTeX2e}
+\expandafter\endgroup
+\ifcase 0\ifx\install y1\fi\expandafter
+ \ifx\csname processbatchFile\endcsname\relax\else1\fi
+ \ifx\fmtname\x\else 1\fi\relax
+\else\csname fi\endcsname
+%</ignore>
+%<*install>
+\input docstrip.tex
+\Msg{************************************************************************}
+\Msg{* Installation}
+\Msg{* Package: mhsetup 2007/12/03 v1.2 mhsetup (MH)}
+\Msg{************************************************************************}
+
+\keepsilent
+\askforoverwritefalse
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2002-2007 by Morten Hoegholm <mh.ctan@gmail.com>
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3 of this license or (at your option) any later
+version. The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of
+LaTeX version 2005/12/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+This Current Maintainer of this work is Morten Hoegholm.
+
+This work consists of the main source file mhsetup.dtx
+and the derived files
+ mhsetup.sty, mhsetup.pdf, mhsetup.ins, mhsetup.drv.
+
+\endpreamble
+
+\generate{%
+ \file{mhsetup.ins}{\from{mhsetup.dtx}{install}}%
+ \file{mhsetup.drv}{\from{mhsetup.dtx}{driver}}%
+ \usedir{tex/latex/mh}%
+ \file{mhsetup.sty}{\from{mhsetup.dtx}{package}}%
+}
+
+\obeyspaces
+\Msg{************************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* file into a directory searched by TeX:}
+\Msg{*}
+\Msg{* mhsetup.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file `mhsetup.drv'}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{************************************************************************}
+
+\endbatchfile
+%</install>
+%<*ignore>
+\fi
+%</ignore>
%<*driver>
-\documentclass[a4paper]{ltxdoc}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{mhsetup.drv}%
+ [2007/12/03 v1.2 programming setup (MH)]
+\documentclass{ltxdoc}
\usepackage{mhsetup}
\addtolength\oddsidemargin{30pt}
@@ -53,9 +155,9 @@
%</driver>
% \fi
%
-% \CheckSum{286}
+% \CheckSum{297}
%
-% \GetFileInfo{mhsetup.dtx}
+% \GetFileInfo{mhsetup.drv}
%
% \title{The \pkg{mhsetup} package\thanks{This package has version
% number \fileversion, last revised on \filedate.}}
@@ -71,8 +173,12 @@
% packages.
% \end{abstract}
%
+% The description below was made before the extensive changes made to
+% the expl3 code available from the LaTeX Project website.
+%
% \section{The new internal syntax}
%
+%
% The \LaTeX3 package \pkg{ldcsetup} defines the command
% \cs{InternalSyntaxOn} which makes |_| and |:| letters and then
% automatically restores the category codes at the end of the
@@ -188,6 +294,8 @@
%
% \begin{macrocode}
%<*package>
+\ProvidesPackage{mhsetup}%
+ [2007/12/03 v1.2 programming setup (MH)]
% \end{macrocode}
% \subsection{The new internal syntax}
% \begin{macro}{\MHInternalSyntaxOn}
@@ -520,6 +628,16 @@
% \end{macro}
% \end{macro}
% \end{macro}
+%
+% \begin{macro}{\MH_group_align_safe_begin:}
+% \begin{macro}{\MH_group_align_safe_end:}
+% \begin{macrocode}
+\def \MH_group_align_safe_begin: {\iffalse{\fi\ifnum0=`}\fi}
+\def \MH_group_align_safe_end: {\ifnum0=`{}\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% \begin{macrocode}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/tex/latex/mh/breqn.sty b/Master/texmf-dist/tex/latex/mh/breqn.sty
new file mode 100644
index 00000000000..e69a67473b5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mh/breqn.sty
@@ -0,0 +1,2056 @@
+%%
+%% This is file `breqn.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% breqn.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 1997-2003 by Michael J. Downes
+%% Copyright (C) 2007 by Morten Hoegholm <mh.ctan@gmail.com>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Morten Hoegholm.
+%%
+%% This work consists of the main source file breqn.dtx
+%% and the derived files
+%% breqn.sty, breqn.pdf, breqn.ins, breqn.drv.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{breqn}[2007/12/10 v0.96]
+\edef\breqnpopcats{%
+ \catcode\number`\"=\number\catcode`\"
+ \relax}
+\AtEndOfPackage{\breqnpopcats}%
+\catcode`\^=7 \catcode`\_=8 \catcode`\"=12 \relax
+\DeclareOption{debug}{\errorcontextlines=2000\relax}
+\DeclareOption{mathstyleoff}{%
+ \PassOptionsToPackage{mathstyleoff}{flexisym}%
+}
+\ProcessOptions\relax
+\@ifpackageloaded{flexisym}{}{%
+ \RequirePackage[cmbase]{flexisym}[2007/12/10]
+ \edef\breqnpopcats{\breqnpopcats
+ \catcode\number`\^=\number\catcode`\^
+ \catcode\number`\_=\number\catcode`\_
+ }%
+ \catcode`\^=7 \catcode`\_=8 \catcode`\"=12 \relax
+}
+\RequirePackage{keyval,calc}\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\theb@@le#1{\if#1 True\else False\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}
+\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 &#2\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
+}
+\providecommand\@saveprimitive@a[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`\$=\thr@@ % 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\relax \let\gubed\relax
+ \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\eqfontsize{} % Inherit from context [NOT USED?]
+\def\eqcolor{black} % Default to black [NOT USED?]
+\newdimen\eqnumsep \eqnumsep=10pt % Min space between equ number and body
+\newdimen\eqmargin \eqmargin=8pt % For `multline' gap emulation
+\def\eqindent{C}% % C or I, centered or indented
+\def\eqnumside{R}% % R or L, right or left
+\def\eqnumplace{M}% % M or T or B, middle top or bottom
+\def\eqnumfont{}% % Null for easier debugging [mjd,1997/09/26]
+\def\eqnumform#1{(#1\@@italiccorr)} % Add parens
+\def\eqnumsize{} % Allow numbers to have different typesize ...
+\def\eqnumcolor{} % ... or color than eq body e.g. \color{blue}
+\newlength\eqlinespacing \eqlinespacing=14pt plus2pt % Base-to-base space between lines
+\newlength\eqlineskip \eqlineskip=3pt plus2pt % Min space if eqlinespacing too small
+\newdimen\eqlineskiplimit \eqlineskiplimit=2pt % Threshold for switching to eqlineskip
+\newmuskip \eqbinoffset \eqbinoffset=15mu minus-3mu % Offset from mathrel alignment pt for mathbins
+\newmuskip\eqdelimoffset \eqdelimoffset=2mu % Additional offset for break inside delims
+\newdimen\eqindentstep \eqindentstep=8pt % Indent used when LHS wd is n/a or too large
+\newtoks\eqstyle % Customization hook
+\newcount\eqbreakdepth \eqbreakdepth=2 % Allow breaks within delimiters to this depth
+\newcount \eqinterlinepenalty \eqinterlinepenalty=10000 % No page breaks between equation lines
+\newcount \intereqpenalty \intereqpenalty=1000 % Pagebreak penalty between equations [BRM: Was \@M]
+\newlength \intereqskip \intereqskip=3pt plus2pt % Additional vert space between equations
+\newcount\prerelpenalty \prerelpenalty=-\@M % Linebreak penalty before mathrel symbols
+\newcount\prebinoppenalty \prebinoppenalty=888 % Linebreak penalty before mathbins
+\newmuskip \Dmedmuskip \Dmedmuskip=4mu minus 3mu % medmuskip in displays
+\newmuskip \Dthickmuskip \Dthickmuskip=5mu minus 2mu % thickmuskip in displays
+\def\eq@number{} % Internal variable
+\newlength\eqleftskip \eqleftskip=\@centering % Space on the left [NOT USED?]
+\newlength\eqrightskip \eqrightskip=\@centering % Space on the right [NOT USED?]
+\newlength\eq@vspan \eq@vspan=\z@skip % Glue used to vcenter the eq number
+\newmuskip\eq@binoffset \eq@binoffset=\eqbinoffset % Roughly, \eqbinoffset + \eqdelimoffset
+\newsavebox\EQ@box % Storage for equation body
+\newsavebox\EQ@copy % For eq body sans vadjust/insert/mark material
+\newsavebox\EQ@numbox % For equation number
+\newdimen\eq@wdNum % width of number + separation [NEW]
+\newsavebox\GRP@numbox % For group number [NEW]
+\newdimen\grp@wdNum % width of number + separation [NEW]
+%%B\EQ@vimbox % Vadjust, insert, or mark material
+%%B\EQ@vimcopy % Spare copy of same
+%%B\eq@impinging % Temporary box for measuring number placement
+\newcount \eq@lines % Internal counter, actual number of lines
+\newcount \eq@curline % Loop counter
+\newcount \eq@badness % Used in testing for overfull lines
+\newcount \EQ@vims % For bookkeeping
+\def\@eq@numbertrue{\let\eq@hasNumber\@True}%
+\def\@eq@numberfalse{\let\eq@hasNumber\@False}%
+\let\eq@hasNumber\@False
+\newdimen\eq@dp % Depth of last line
+\newdimen\eq@wdL % Width of the left-hand-side
+\newdimen\eq@wdT % Total width for framing
+\newdimen\eq@wdMin % Width of narrowest line in equation
+\newdimen\grp@wdL % Max width of LHS's in a group
+\newdimen\grp@wdR % Max RHS of all equations in a group
+\newdimen\grp@wdT
+\newdimen\eq@wdRmax
+\newdimen\eq@firstht % Height of first line
+\newdimen\eq@wdCond
+\newdimen\eq@indentstep % Indent amount when LHS is not present
+\newdimen\eq@linewidth % Width actually used for display
+\newdimen\grp@linewidth % Max eq@linewidth over a group
+\newdimen\eq@hshift
+\let\eq@isIntertext\@False
+\eq@indentstep=\maxdimen
+\newdimen\eq@given@sidespace
+\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
+}
+ \@ifundefined{mathindent}{%
+ \newdimen\mathindent
+ }{%
+ \@ifundefined{@mathmargin}{}{%
+ \mathindent\@mathmargin
+ }%
+ }
+\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
+\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@
+ \global\eq@wdCond\z@ %BRM: new
+ \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\dseries@display@setup{%
+ \medmuskip\Dmedmuskip \thickmuskip\Dthickmuskip
+ \let\m@Bin\d@@Bin
+ \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
+ }%
+ \displaystyle
+}
+\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}%
+}{}
+\define@key{breqn}{label}{\def\next@label{\label{#1}}}
+\global\let\next@label\@empty
+\define@key{breqn}{number}{\def\eq@number{#1}%
+ \let\@currentlabel\eq@number
+}
+\define@key{breqn}{shiftnumber}{\let\eq@shiftnumber\@True}
+\define@key{breqn}{holdnumber}{\let\eq@holdnumber\@True}
+\define@key{breqn}{density}{\def\eq@density@factor{#1}}
+\define@key{breqn}{indentstep}{\eqindentstep#1\relax}
+\define@key{breqn}{compact}[-99]{\prerelpenalty=#1\relax}
+\define@key{breqn}{layout}[?]{%
+ \edef\eq@layout{\@car#1?\@nil}%
+}
+\define@key{breqn}{spread}{%
+ \addtolength\eqlinespacing{#1}%
+ \addtolength\eqlineskip{#1}%
+ \eqlineskiplimit\eqlineskip
+}
+\define@key{breqn}{sidespace}{%
+ \setlength\eq@given@sidespace{#1}%
+}
+\define@key{breqn}{style}{\eqstyle\@xp{\the\eqstyle #1}}
+\define@key{breqn}{frame}[\fboxrule]{\def\eq@frame{T}%
+ \dim@a#1\relax\edef\eq@framewd{\the\dim@a}%
+ \freeze@glue\eqlinespacing \freeze@glue\eqlineskip
+}
+\define@key{breqn}{fullframe}[]{\def\eq@frame{U}%
+ \freeze@glue\eqlinespacing \freeze@glue\eqlineskip
+}
+\def\eq@frame{F} % no frame
+\def\eq@framewd{\fboxrule}
+\define@key{breqn}{framesep}[\fboxsep]{%
+ \if\eq@frame F\def\eq@frame{T}\fi
+ \dim@a#1\relax \edef\eq@framesep{\the\dim@a}%
+ \freeze@glue\eqlinespacing \freeze@glue\eqlineskip
+}
+\def\eq@framesep{\fboxsep}
+\define@key{breqn}{background}{\def\eq@background{#1}%
+ \freeze@glue\eqlinespacing \freeze@glue\eqlineskip
+}
+\define@key{breqn}{color}{\def\eq@foreground{#1}}
+\define@key{breqn}{center}[]{\let\eq@centerlines\@True}
+\define@key{breqn}{nocenter}[]{\let\eq@centerlines\@False}
+\let\eq@centerlines\@False
+\define@key{breqn}{noalign}[]{\let\grp@aligned\@False}
+\let\grp@aligned\@True % default
+\define@key{breqn}{breakdepth}{\eqbreakdepth#1\relax}
+\define@key{breqn}{cols}{\global\let\@preamble\@empty
+ \darray@mkpream#1\@percentchar
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%BRM: The following incorporates several changes:
+%% 1) modifications supplied by MJD to fix the eaten \cs{paragraph} problem.
+%% 2) Added \cs{display@setup} here, rather than globally.
+\newenvironment{dmath}{%
+ \let\eq@hasNumber\@True \@optarg\@dmath{}}{}
+\def\@dmath[#1]{%
+ \debugmsg{=== DMATH ==================================================}%
+ \everydisplay\expandafter{\the\everydisplay \display@setup}%
+ \if@noskipsec \leavevmode \fi
+ \if@inlabel \leavevmode \global\@inlabelfalse \fi
+ \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{%
+ \gdef\EQ@setwdL{}% Occasionally undefined ???
+ \eq@capture
+ \endgroup
+ \EQ@setwdL
+ \eq@measure
+ \if\eq@group \grp@push \else \eq@finish\fi
+}
+\newenvironment{dmath*}{%
+ \let\eq@hasNumber\@False \@optarg\@dmath{}%
+}{}
+\@namedef{end@dmath*}{\end@dmath}
+\@namedef{enddmath*}#1{\check@punct@or@qed}
+\def\eq@prelim{%
+ \if@inlabel \indent \par \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{%
+ \eq@wdNum\z@
+ \if\eq@hasNumber
+ \ifx\eq@number\@empty
+ \stepcounter{equation}\let\eq@number\theequation
+ \fi
+ % This sets up numbox, etc, even if unnumbered?????
+ \ifx\eq@number\@empty
+ \else
+ \debugmsg{Number \eq@number}%
+ \set@label{equation}\eq@number
+ \global\sbox\EQ@numbox{%
+ \next@label \global\let\next@label\@empty
+ \eqnumcolor\eqnumsize\eqnumfont{\eqnumform{\eq@number}}%
+ }%
+ \global\eq@wdNum\wd\EQ@numbox\global\advance\eq@wdNum\eqnumsep
+ \fi
+ \fi
+}
+\def\eq@finish{%
+ \begingroup
+ \debugmsg{Formatting equation}%
+ \debug@showmeasurements
+ \if F\eq@frame\else
+ \freeze@glue\eqlinespacing \freeze@glue\eqlineskip
+ \fi
+ \csname eq@\eqindent @setsides\endcsname % Compute \leftskip,\rightskip
+ \adjust@parshape\eq@parshape% Final adjustment of parshape for left|right skips
+ \eq@topspace{\vskip\parskip}% Set top spacing
+ \debug@showformat
+ % Now, invoke the appropriate typesetter according to number placement
+ \if\eq@hasNumber
+ \if\eq@shiftnumber
+ \csname eq@typeset@\eqnumside Shifted\endcsname
+ \else
+ \csname eq@typeset@\eqnumside\eqnumplace\endcsname
+ \fi
+ \else
+ \eq@typeset@Unnumbered
+ \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
+ \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{%
+ \xdef\found@punct{\@empty}% BRM: punctuation was being remembered past this eqn.
+ \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@check@shortskip
+ \if\EQ@shortskips
+ \parskip\abovedisplayshortskip
+ \aftergroup\belowdisplayskip\aftergroup\belowdisplayshortskip
+ \ifdim\predisplaysize>\z@\nointerlineskip\fi
+ \else
+ \parskip\abovedisplayskip
+ \fi
+ \fi
+ \if F\eq@frame
+ \else
+ \addtolength\parskip{\eq@framesep+\eq@framewd}%
+ \fi
+\debugmsg{Topspace: \theb@@le\EQ@shortskips, \parskip=\the\parskip, \predisplaysize=\the\predisplaysize}%
+ #1%
+ \endgroup
+}
+\def\eq@check@shortskip{%
+ \global\let\EQ@shortskips\@False
+ \setlength\dim@a{\abovedisplayskip+\ht\EQ@numbox}%
+ \addtolength\leftskip{-2em}% standard TeX value
+ \ifdim\leftskip<\predisplaysize
+ \else\if R\eqnumside \global\let\EQ@shortskips\@True
+ \else\if\eq@shiftnumber
+ \else\if T\eqnumplace
+ \ifdim\dim@a<\eq@firstht
+ \global\let\EQ@shortskips\@True
+ \fi
+ \else
+ \setlength\dim@b{\eq@vspan/2}%
+ \ifdim\dim@a<\dim@b
+ \global\let\EQ@shortskips\@True
+ \fi
+ \fi\fi\fi\fi
+}
+\def\eq@botspace{%
+ \penalty\postdisplaypenalty
+ \if F\eq@frame
+ \else
+ \addtolength\belowdisplayskip{\eq@framesep+\eq@framewd}%
+ \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
+ \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
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newdimen\eq@wdR\eq@wdR\z@%BRM
+\def\eq@capture{%
+ \ifnum\lastpenalty>-\@M \penalty-\@Mi \fi
+ \keep@glue\@@endmath
+ \eq@addpunct
+ \@@par
+ \eq@wdL\z@
+ \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@wdR\z@%BRM: eq@wdL patch
+ \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}%
+ \ifdim\eq@wdR>\z@% BRM: eq@wdL patch
+ \setlength\dim@a{\wd\EQ@box-\eq@wdR
+ % Apparently missing a \thickmuskip = 5mu = 5/18em=0.27777777777.. ?
+ + 0.2777777777777em}% FUDGE??!?!?!
+ \ifdim\dim@a>\eq@wdL
+ \debugmsg{Correcting LHS from \the\eq@wdL\space to \the\dim@a = \the\wd\EQ@box - \the\eq@wdR}%
+ \eq@wdL\dim@a
+ \xdef\EQ@setwdL{\eq@wdL\the\eq@wdL\relax}%
+ \fi
+ \fi
+ \debugmsg{Capture: total length=\the\wd\EQ@box
+ ^^J||===== has LHS=\theb@@le\EQ@hasLHS, \eq@wdL=\the\eq@wdL, \eq@wdR=\the\eq@wdR,
+ ^^J||===== \eq@wdCond=\the\eq@wdCond}%
+ \egroup % end vbox started earlier
+}
+\def\eq@addpunct{%
+ \ifx\found@punct\@empty
+ \else \eqpunct{\found@punct}%
+ \fi
+ % BRM: Added; the punctuation kept getting carried to following environs
+ \xdef\found@punct{\@empty}%
+ \EQ@afterspace
+}
+\global\let\EQ@afterspace\@empty
+\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
+ \@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}%
+ \addtolength\eq@wdL{\wd\z@}
+ \setlength\eq@wdR{\wd\EQ@box}% BRM: eq@wdL patch
+ \xdef\EQ@setwdL{\eq@wdL\the\eq@wdL\relax}%
+ \global\setbox\EQ@copy\hbox{%
+ \hbox{\unhcopy\tw@\unskip\unpenalty\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
+ \begingroup \eq@params
+ \leftskip\z@skip
+ \rightskip\z@\@plus\columnwidth\@minus\hfuzz
+ \global\EQ@continue{\eq@trial}%
+ \eq@trial % uses \eq@linewidths
+ \eq@failout % will be a no-op if the trial succeeded
+ \endgroup
+ \EQ@trial
+}
+\def\debug@showmeasurements{%
+ \debugmsg{=> \number\eq@lines\space lines}%
+ \debug
+ \def\@elt##1^^J##2{^^J||===== \space\space##1/##2}%
+ \let\@endelt\@empty
+ \debugmsg{=> trial info:\eq@measurements}%
+ \debugmsg{=> bounding box: \the\eq@wdT x\the\eq@vspan, badness=\the\eq@badness}%
+ \let\@elt\relax \let\@endelt\relax
+ \gubed
+}
+\def\debug@showmeasurements{%
+ \begingroup
+ \def\@elt##1^^J##2{^^J||===== ##1/##2}%
+ \let\@endelt\@empty
+ \debugmsg{===> Measurements: \number\eq@lines\space lines
+ \eq@measurements
+ ^^J||===== bounding box: \the\eq@wdT x\the\eq@vspan, badness=\the\eq@badness
+ ^^J||===== \leftskip=\the\leftskip, \rightskip=\the\rightskip}%
+ \endgroup
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\let\EQ@trial\@empty
+\newtoks\EQ@continue
+\let\EQ@widths\@empty
+\let\EQ@fallback\@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
+ \if T\eq@frame \eq@frame@adjust\dim@c \fi
+ \ifdim\dim@c>\eq@linewidth
+ \eq@linewidth\dim@c
+ \debugmsg{Choose Shape for width(#1)=\the\eq@linewidth}%
+ \let\eq@trial@b\eq@trial@d
+ \csname eq@try@layout@\eq@layout\endcsname
+ \else
+ \debugmsg{Next width (#1) is shorter; skip it}%
+ \fi
+ \edef\eq@linewidths{\iffalse}\fi
+}
+\def\eq@frame@adjust#1{%
+ \addtolength#1{-2\eq@framewd-2\eq@framesep}%
+}
+\def\eq@trial@succeed{%
+ \aftergroup\@gobbletwo % cancel the \EQ@fallback code; see \eq@trial@c (?)
+ \global\EQ@continue{\eq@trial@done}%
+}
+\def\eq@trial@done{%
+ \debugmsg{End trial: Success!}%
+ \let\eq@failout\relax
+}
+\def\eq@trial@init{\global\let\EQ@fallback\eq@nextlayout}
+\def\eq@nextlayout#1{%
+ \endgroup
+ \debugmsg{Nope ... that ain't gonna work.}%
+ \begingroup #1%
+}
+\def\eq@failout{%
+\debugmsg{End trial: failout}%
+ \global\let\EQ@trial\EQ@last@trial
+}
+\def\eq@trial@save#1{%
+ \xdef#1{%
+ \eq@linewidth\the\eq@linewidth
+ % save info about the fit
+ \eq@lines\the\eq@lines \eq@badness\the\eq@badness \def\@nx\eq@badline{\eq@badline}%
+ % save size info
+ \eq@wdT\the\eq@wdT \eq@wdMin\the\eq@wdMin
+ \eq@vspan\the\eq@vspan \eq@dp\the\eq@dp \eq@firstht\the\eq@firstht
+ % save info about the LHS
+ \eq@wdL\the\eq@wdL \def\@nx\EQ@hasLHS{\EQ@hasLHS}%
+ % save info about the numbering
+ \def\@nx\eq@hasNumber{\eq@hasNumber}%
+ % save info about the chosen layout
+ \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\@nx\eq@isIntertext{\@False}%
+ }%
+}
+\def\eq@trial@b{\eq@trial@c}
+\def\eq@trial@c#1#2{%
+ \debugmsg{Trying layout "#1" with^^J||===== parshape\space\@xp\@gobble\@parshape}%
+ \begingroup
+ \eq@trial@init
+ \def\eq@layout{#1}%
+ \setbox\z@\vbox{%
+ \hfuzz\maxdimen
+ \eq@trial@p % run the given parshape
+ \if\@Not{\eq@badline}%
+ \eq@trial@save\EQ@trial
+ \if\eq@hasNumber\eq@retry@with@number\fi
+ \if L\eq@layout \eq@check@density
+ \else
+ \if\@Not{\eq@badline}%
+ \eq@trial@succeed
+ \fi
+ \fi
+ \else
+ \eq@trial@save\EQ@last@trial
+ \fi
+ }%
+ \EQ@fallback{#2}%
+ \endgroup
+}
+\def\eq@trial@d#1#2{\eq@trial@c{#1}{}}
+\def\eq@check@density{%
+ \debugmsg{Checking density for layout L}%
+ \if\@Or{\@Not\EQ@hasLHS}{\eq@shortLHS}%
+ \debugmsg{Density check: No LHS, or is short; OK}%
+ \eq@trial@succeed
+ \else\if\eq@dense@enough
+ \eq@trial@succeed
+ \fi\fi
+}
+\def\eq@shortLHS{\ifdim\eq@wdL>.44\eq@wdT 1\else 0\fi 0}
+\def\eq@trial@p{%
+ \@parshape %
+ \eq@dump@box\unhcopy\EQ@copy
+ {\@@par}% leave \parshape readable
+ \eq@lines\prevgraf
+ \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
+ \debug@showmeasurements
+}
+\let\adjust@rel@penalty\@empty
+\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@recalc{%
+ \eq@wdT\z@ \eq@wdMin\maxdimen \eq@vspan\z@skip \eq@badness\z@
+ \let\@elt\eq@recalc@a \eq@measurements \let\@elt\relax
+}
+\def\eq@recalc@a#1x#2+#3\@endelt{%
+ \eq@firstht#2\relax
+ \let\@elt\eq@recalc@b
+ \@elt#1x#2+#3\@endelt
+}
+\def\eq@recalc@b#1^^J#2,#3x#4+#5@#6\@endelt{%
+ \setlength\dim@a{#2+#3}%
+ \ifdim\dim@a>\eq@wdT \eq@wdT\dim@a \fi
+ \ifdim\dim@a<\eq@wdMin \eq@wdMin\dim@a \fi
+ \eq@dp#5\relax
+ \addtolength\eq@vspan{#1+#4+#5}%
+ \ifnum#6>\eq@badness \eq@badness#6\relax\fi
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\eq@layout{?}
+\@namedef{eq@try@layout@?}{%
+ \let\eq@trial@b\eq@trial@c
+ \edef\@parshape{\parshape 1 0pt \the\eq@linewidth\relax}%
+ \setlength\dim@a{\wd\EQ@copy-2em}% Fudge; can't shrink more than this?
+ % if we're in a numbered group, try hard to fit within the numbers
+ \dim@b\eq@linewidth
+ \if\eq@shiftnumber\else\if\eq@group
+ \if\eq@hasNumber\addtolength\dim@b{-\wd\EQ@numbox-\eqnumsep}%
+ \else\if\grp@hasNumber\addtolength\dim@b{-\wd\GRP@numbox-\eqnumsep}%
+ \fi\fi\fi\fi
+ \ifdim\dim@a<\dim@b% Do we even have a chance of fitting to one line?
+ \debugmsg{Choose Shape: (\the\wd\EQ@copy) may fit in \the\dim@b}%
+ % assuming it might fit, don't push too hard
+ \setlength\dim@b{\columnwidth-\dim@a+\eq@wdCond}%
+ \rightskip\z@\@plus\dim@b\@minus\hfuzz
+ \eq@trial@b{i}{\eq@try@layout@multi}%
+ \else
+ \debugmsg{Choose Shape: Too long (\the\wd\EQ@copy) for one line (free width=\the\dim@b)}%
+ \eq@try@layout@multi
+ \fi
+}
+\def\eq@try@layout@multi{%
+ \if\EQ@hasLHS
+ \ifdim\eq@wdL>\eq@linewidth
+ \debugmsg{Choose Shape: LHS \the\eq@wdL > linewidth}%
+ \setlength\dim@a{\wd\EQ@copy-\eq@wdL}%
+ \ifdim\dim@a<.25\eq@linewidth \eq@try@layout@S
+ \else \eq@try@layout@l
+ \fi
+ % BRM: Originally .7: Extreme for L since rhs has to wrap within the remaining 30+%!
+ \else\ifdim\eq@wdL>.50\eq@linewidth
+ \debugmsg{Choose Shape: LHS (\the\eq@wdL) > .50 linewidth (linewidth=\the\eq@linewidth)}%
+ \eq@try@layout@D
+ \else
+ \debugmsg{Choose Shape: LHS (\the\eq@wdL) not extraordinarily wide}%
+ \eq@try@layout@L
+ \fi\fi
+ \else
+ \debugmsg{Choose Shape: No LHS here}%
+ \eq@try@layout@S % (already checked case i)
+ \fi
+}
+\def\eq@try@layout@D{%
+ \setlength\dim@a{\eq@linewidth -\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@L{%
+ \setlength\dim@b{\eq@linewidth-\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@S{%
+ \setlength\dim@b{\eq@linewidth-2\eqmargin}% \advance\dim@b-1em%
+ \int@a\wd\EQ@copy \divide\int@a\dim@b
+ \addtolength\dim@b{-\int@a\eq@indentstep}%
+ \if\eq@hasNumber
+ \ifdim\dim@b>15em%
+ \addtolength\dim@b{-\eq@wdNum}%
+ \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{%
+ \setlength\dim@a{\eq@linewidth -\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@
+ \setlength\dim@b{2\eq@indentstep}%
+ \setlength\dim@c{\eq@linewidth -\dim@b}%
+ \edef\@parshape{\@parshape
+ \replicate{\int@a}{\space\the\eq@indentstep\space\the\dim@a}%
+ \space\the\dim@b\space\the\dim@c\relax
+ }%
+ \eq@trial@b{l}{\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}{}%
+}
+\let\eq@shiftnumber\@False
+\def\eq@retry@with@number{%
+ \if\eq@shiftnumber
+ \debugmsg{Place number: Shifted number requested}%
+ \else
+ \ifdim\eq@wdCond>\z@\if R\eqnumside
+ \debugmsg{Place number: Condition w/Right number => Shift number}%
+ \let\eq@shiftnumber\@True
+ \fi\fi
+ \dim@b\eq@wdNum
+ \if L\eqnumside
+ \ifdim\@totalleftmargin>\dim@b\dim@b\@totalleftmargin\fi
+ \else
+ \addtolength\dim@b{\@totalleftmargin}%
+ \fi
+ \setlength\dim@a{\eq@linewidth-\dim@b}%\advance\dim@a1em\relax% Allowance for shrink?
+ \int@a\@ne\if\eq@group\int@a\maxint\fi
+ \if\eq@shiftnumber % Already know we need to shift
+ \else\ifdim\eq@wdT<\dim@a % Fits!
+ \debugmsg{Place number: eqn and number fit together}%
+ \else
+ \setlength\leftskip{\eq@wdNum}%
+ \setlength\rightskip{\z@\@plus\dim@a}%
+ \adjust@parshape\@parshape
+ \debugmsg{Place number: Try with \leftskip=\the\leftskip, \rightskip=\the\rightskip,
+ ^^J||===== parshape\space\@xp\@gobble\@parshape}%
+ \nointerlineskip
+ \edef\eq@prev@lines{\the\eq@lines}%
+ \edef\eq@prev@badness{\the\eq@badness}% BRM
+ \eq@trial@p
+ \int@a\eq@prev@badness\relax\advance\int@a 50\relax%?
+ \int@b\eq@prev@lines \if\eq@group\advance\int@b\@ne\fi% Allow 1 extra line in group
+ \ifnum\eq@lines>\int@b % \eq@prev@lines
+ \debugmsg{Adjustment causes more breaks => Shift number}%
+ \let\eq@shiftnumber\@True
+ \else\if\eq@badline
+ \debugmsg{Adjustment causes bad lines (\the\eq@badness) => Shift}%
+ \let\eq@shiftnumber\@True
+ \else\ifnum\eq@badness>\int@a % BRM: New case
+ \debugmsg{Adjustment is badder than previous (\the\eq@badness >> \eq@prev@badness) => Shift}%
+ \let\eq@shiftnumber\@True
+ \else
+ \debugmsg{Adjustment succeeded}%
+ \fi\fi%\fi
+ \fi\fi\fi
+ \if\eq@shiftnumber
+ \EQ@trial% Restore parshape & other params,
+ \leftskip\z@\let\eq@shiftnumber\@True % But set shift & leftskip
+ \edef\@parshape{\eq@parshape}% And copy saved parshape back to `working copy' !?!?
+ \fi
+ \eq@trial@save\EQ@trial % Either way, save the trial state.
+ \fi
+}
+\def\adjust@parshape#1{%
+ \@xp\adjust@parshape@a#1\relax
+ \edef#1{\temp@a}%
+}
+\def\adjust@parshape@a#1 #2\relax{%
+ \setlength\dim@a{\leftskip+\rightskip}%
+ \edef\temp@a{#1}%
+ \adjust@parshape@b#2 @ @ \relax
+}
+\def\adjust@parshape@b#1 #2 {%
+ \ifx @#1\edef\temp@a{\temp@a\relax}%
+ \@xp\@gobble
+ \else
+ \dim@b#1\relax
+ \dim@c#2\relax
+ \addtolength\dim@c{\dim@a+\dim@b}%
+ \ifdim\dim@c>\eq@linewidth\setlength\dim@c{\eq@linewidth}\fi
+ \addtolength\dim@c{-\dim@b}%
+ \edef\temp@a{\temp@a\space\the\dim@b\space\the\dim@c}%
+ \fi
+ \adjust@parshape@b
+}
+\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\@endelt=`\?
+\def\eq@measurements{%
+ \@elt 4.5pt/5.0pt,66.0ptx6.8pt+2.4pt@27\@endelt
+ ...
+}
+\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@ \setlength\dim@a{\dim@b}% shrunken line
+ \else \setlength\dim@a{\wd\tw@}% OK to use natural width
+ \fi
+ \addtolength\dim@a{-\leftskip}% BRM: Deduct the skip if we're retrying w/number
+ \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 \addtolength\skip@a{\lastskip}\unskip\unpenalty \@xp\@tempa
+ \fi
+ }%
+ \fi
+ \edef\eq@measurements{\@elt
+ \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\@endelt
+ \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@@
+ \debugmsg{Density check: less than 3 lines; OK}%
+ \@True
+ \else
+ \ifdim\eq@wdL >.7\eq@wdT
+ \debugmsg{Density check: LHS too long; NOT OK}%
+ \@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\@elt\eq@delt \eq@measurements
+ \dim@c\eq@density@factor\eq@wdT \multiply\dim@c\eq@lines
+ \debugmsg{Density check: 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\@endelt{\addtolength\dim@b{#3}}%
+\def\eq@dense@enough@b{%
+ \int@b\eq@wdT \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
+ \debugmsg{Density check: 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
+}
+\let\eq@parshape\@empty
+\def\eq@params{%
+ \baselineskip\eqlinespacing
+ \lineskip\eqlineskip \lineskiplimit\eqlineskiplimit
+ \clubpenalty\@M \widowpenalty\@M \interlinepenalty\eqinterlinepenalty
+ \linepenalty199 \exhyphenpenalty5000 % was 9999: make breaks at, eg. \* a bit easier.
+ \ifdim\hfuzz<\p@ \hfuzz\p@ \fi
+ \parfillskip\z@skip
+ \tolerance9999 \pretolerance\m@ne
+}
+\def\eq@dump@box#1#2{%
+ \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@typeset@Unnumbered{%
+ \eq@typeset@frame
+ \eq@typeset@equation
+}
+\def\eq@typeset@LM{%
+ \addtolength\dim@a{(\eq@vspan+\ht\EQ@numbox-\dp\EQ@numbox)/2}%
+ \eq@typeset@leftnumber
+ \eq@typeset@frame
+ \eq@typeset@equation
+}
+\def\eq@typeset@LT{%
+ \dim@a\eq@firstht
+ \eq@typeset@leftnumber
+ \eq@typeset@frame
+ \eq@typeset@equation
+}
+\def\eq@typeset@LShifted{%
+ % place number
+ \copy\EQ@numbox \penalty\@M
+ \dim@a\eqlineskip
+ \if F\eq@frame\else
+ \setlength\dim@a{\eq@framesep+\eq@framewd}%
+ \fi
+ \kern\dim@a
+ \eq@typeset@frame
+ \eq@typeset@equation
+}
+\def\eq@typeset@RM{%
+ \setlength\dim@a{(\eq@vspan+\ht\EQ@numbox-\dp\EQ@numbox)/2}
+ \eq@typeset@rightnumber
+ \eq@typeset@frame
+ \eq@typeset@equation
+}
+\def\eq@typeset@RB{%
+ % NOTE: is \eq@dp useful here
+ \setlength\dim@a{\eq@vspan-\ht\EQ@numbox-\dp\EQ@numbox}%
+ \eq@typeset@rightnumber
+ \eq@typeset@frame
+ \eq@typeset@equation
+}
+\def\eq@typeset@RShifted{%
+ % place number
+ \eq@typeset@frame
+ \eq@typeset@equation
+ \penalty\@M
+ \dim@a\eqlineskip
+ \if F\eq@frame\else
+ \addtolength\dim@a{\eq@framesep+\eq@framewd}%
+ \fi
+ \parskip\dim@a
+ \hbox to\hsize{\hfil\copy\EQ@numbox}\@@par%
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\debug@showformat{%
+ \debugmsg{Formatting Layout:\eq@layout\space Center/indent: \eqindent\space Number placement \eqnumside\eqnumplace:
+ ^^J||===== \eq@linewidth=\the\eq@linewidth, \@totalleftmargin=\the\@totalleftmargin,
+ ^^J||===== Centered Lines=\theb@@le\eq@centerlines, Shift Number=\theb@@le\eq@shiftnumber,
+ ^^J||===== \eq@wdT=\the\eq@wdT, \eq@wdMin=\the\eq@wdMin,
+ ^^J||===== LHS=\theb@@le\EQ@hasLHS: \eq@wdL=\the\eq@wdL,
+ ^^J||===== \eq@firstht=\the\eq@firstht, \eq@vspan=\the\eq@vspan
+ ^^J||===== \eq@wdNum=\the\eq@wdNum
+ ^^J||===== \eq@wdCond=\the\eq@wdCond, \conditionsep=\the\conditionsep,
+ ^^J||===== \leftskip=\the\leftskip, \rightskip=\the\rightskip,
+ ^^J||===== \abovedisplayskip=\the\abovedisplayskip,
+ ^^J||===== \belowdisplayskip=\the\belowdisplayskip
+ ^^J||===== parshape=\eq@parshape}%
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\eq@C@setsides{%
+ % \dim@c = space for number, if any, and not shifted.
+ \dim@c\z@
+ \if\eq@hasNumber\if\eq@shiftnumber\else
+ \dim@c\eq@wdNum
+ \fi\fi
+ % \dim@e = space for condition(on right), if any and formula is only a single line.(to center nicely)
+ % but only count it as being right-aligned if we're not framing, since the frame must enclose it.
+ \dim@e\z@
+ \if F\eq@frame
+ \ifnum\eq@lines=\@ne\ifdim\eq@wdCond>\z@
+ \setlength\dim@e{\eq@wdCond+\conditionsep}%
+ \fi\fi\fi
+ % \dim@b = minimum needed on left max(totalleftmargin, left number space)
+ \dim@b\z@
+ \if L\eqnumside\ifdim\dim@b<\dim@c
+ \dim@b\dim@c
+ \fi\fi
+ \ifdim\dim@b<\@totalleftmargin
+ \dim@b\z@
+ \else
+ \addtolength\dim@b{-\@totalleftmargin}%
+ \fi
+ % \dim@d = minimum needed on right max(condition, right number space)
+ \dim@d\dim@e
+ \if R\eqnumside\ifdim\dim@d<\dim@c
+ \dim@d\dim@c
+ \fi\fi
+ % \dim@a = left margin; initially half available space
+ % \dim@c = right margin; ditto
+ \setlength\dim@a{(\eq@linewidth-\eq@wdT+\dim@e+\@totalleftmargin)/2}%
+ \dim@c=\dim@a
+ % If too far to the left
+ \ifdim\dim@a<\dim@b
+ \addtolength\dim@c{\dim@a-\dim@b}%
+ \ifdim\dim@c<\z@\dim@c=\z@\fi
+ \dim@a=\dim@b
+ % Or if too far to the right
+ \else\ifdim\dim@c<\dim@d
+ \addtolength\dim@a{\dim@c-\dim@d}%
+ \ifdim\dim@a<\z@\dim@a=\z@\fi
+ \dim@c=\dim@d
+ \fi\fi
+ % Now, \dim@d,\dim@e is the left & right glue to center each line for centerlines
+ \setlength\dim@e{\eq@wdT-\eq@wdMin}\dim@d=\z@
+ \dim@d\z@
+ \if\eq@centerlines
+ \divide\dim@e2\relax\dim@d\dim@e
+ \fi
+ \setlength\leftskip{\dim@a\@plus\dim@d}%
+ \addtolength\dim@e{\dim@c}%
+ \setlength\rightskip{\z@\@plus\dim@e}%\@minus5\p@
+ % Special case: if framing, reduce the stretchiness of the formula (eg. condition)
+ % Or if we have a right number, FORCE space for it
+ \dim@b\z@
+ \if F\eq@frame\else
+ \dim@b\dim@c
+ \fi
+ \if\eq@hasNumber\if\eq@shiftnumber\else\if R\eqnumside
+ \dim@c\eq@wdNum
+ \ifdim\dim@c>\dim@b\dim@b\dim@c\fi
+ \fi\fi\fi
+ % If either of those cases requires hard rightskip, move that part from glue.
+ \ifdim\dim@b>\z@
+ \addtolength\dim@e{-\dim@c}%
+ \rightskip\dim@b\@plus\dim@e%\@minus5\p@
+ \fi
+ % And peculiar further special case: in indented environs, width isn't where it would seem
+ \ifdim\eq@wdCond>\z@
+ \addtolength\rightskip{-\@totalleftmargin}%
+ \fi
+ \parfillskip\z@skip
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\eq@I@setsides{%
+ % Leftskip is normally just the requested indentation
+ \leftskip\mathindent
+ % But move left, if shifted number presumably because of clashed w/ number?
+ \if\eq@shiftnumber
+ \setlength\dim@a{\eq@linewidth-\eq@wdT-\mathindent}%
+ \ifdim\dim@a<\z@
+ \leftskip=\z@ % Or something minimal?
+ \fi\fi
+ % Push gently from right.
+ \dim@a=\z@
+ \setlength\dim@b{\eq@linewidth-\leftskip-\eq@wdMin}%
+ % Special case: if framing be much more rigid(?)
+ \if F\eq@frame\else
+ \setlength\dim@a{\eq@linewidth-\leftskip-\eq@wdT}
+ \addtolength\dim@b{-\dim@a}%
+ \fi
+ % Or force the space for right number, if needed
+ \if\eq@hasNumber\if\eq@shiftnumber\else\if R\eqnumside
+ \dim@c=\eq@wdNum
+ \if\dim@c>\dim@a
+ \addtolength\dim@b{-\dim@c}%
+ \dim@a=\dim@c
+ \fi\fi\fi\fi
+ \setlength\rightskip{\dim@a\@plus\dim@b \@minus\hfuzz }%\hfuzz\z@
+ \parfillskip\z@skip
+}
+\def\eq@typeset@leftnumber{%
+ \setlength\skip@c{\dim@a-\ht\EQ@numbox}%
+ \vglue\skip@c% NON discardable
+ \copy\EQ@numbox \penalty\@M
+ \kern-\dim@a
+}
+\def\eq@typeset@rightnumber{%
+ \setlength\skip@c{\dim@a-\ht\EQ@numbox}%
+ \vglue\skip@c% NON discardable
+ \hbox to \hsize{\hfil\copy\EQ@numbox}\penalty\@M
+ \kern-\dim@a
+}
+\def\eq@typeset@equation{%
+ \nobreak
+ \eq@params\eq@parshape
+ \nointerlineskip\noindent
+ \add@grp@label
+ \eq@dump@box\unhbox\EQ@box\@@par
+}
+\newcommand\eqframe[2]{%
+ \begingroup
+ \fboxrule=\eq@framewd\relax\fboxsep=\eq@framesep\relax
+ \framebox{\z@rule\@height#2\kern#1}%
+ \endgroup
+}
+\def\eq@addframe{%
+ \hbox to\z@{%
+ \setlength\dim@a{\eq@framesep+\eq@framewd}%
+ \kern-\dim@a
+ \vbox to\z@{\kern-\dim@a
+ \hbox{\eqframe{\eq@wdT}{\eq@vspan}}%
+ \vss
+ }%
+ \hss
+ }%
+}
+\def\eq@typeset@frame{%
+ \if F\eq@frame\else
+ % Tricky: put before \noindent, so it's not affected by glue in \leftskip
+ \nobreak\nointerlineskip
+ \vbox to\eq@firstht{\moveright\leftskip\hbox to\z@{\eq@addframe\hss}\vss}%
+ \kern-\eq@firstht
+ \fi
+}
+\@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}
+ % For paren matching: )
+\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
+}
+%%BRM: These weren't defined, but apparently should be.
+\let\m@@DeA\m@DeA\let\d@@DeA\m@DeA%
+\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
+ \penalty\@M % BRM: discourage break after an open fence?
+}
+\def\after@close{%
+ \global\advance\lr@level\m@ne
+ \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
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\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{%
+ \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:
+ \setlength\prelim@sup@base{\ht\z@-\sup@drop}%
+ \setlength\prelim@sub@depth{\dp\z@ +\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
+ \setlength\dim@a{\ht\tw@ -.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
+ \setlength\dim@a{\dp\tw@ -.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}{}{%
+ \setlength\dim@d{#1-\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}{\let\eq@hasNumber\@True \@optarg\@dseries{}}{}%
+\def\enddseries#1{\check@punct@or@qed}%
+\newenvironment{dseries*}{\let\eq@hasNumber\@False \@optarg\@dseries{}}{}%
+\@namedef{enddseries*}#1{\check@punct@or@qed}%
+\@namedef{end@dseries*}{\end@dseries}%
+\def\@dseries[#1]{%
+ \let\display@setup\dseries@display@setup
+ % Question: should this be the default for dseries???
+ \global\eq@wdCond\z@
+ \@dmath[layout={M},#1]%
+ \mathsurround\z@\@@math \penalty\@Mi
+ \let\endmath\ends@math
+ \def\premath{%
+ \ifdim\lastskip<.3em \unskip
+ \else\ifnum\lastpenalty<\@M \dquad\fi\fi
+}%
+ \def\postmath{\unpenalty\eq@addpunct \penalty\intermath@penalty \dquad \@ignoretrue}%
+\ignorespaces
+}
+\def\end@dseries{%
+ \unskip\unpenalty
+ \@@endmath \mathsurround\z@ \end@dmath
+}
+\def\eq@try@layout@M{%
+ \edef\@parshape{\parshape 1 0pt \the\eq@linewidth\relax}%
+ \eq@trial@b{M}{}%
+}
+\def\intermath@penalty{-221}%
+\newcommand\dquad{\hskip0.6em minus.3em}
+\newcommand\premath{}\newcommand\postmath{}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\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
+}
+\let\eq@group\@False
+\let\grp@shiftnumber\@False
+\let\grp@hasNumber\@False
+\let\grp@eqs@numbered\@False
+\let\grp@aligned\@True
+\global\let\GRP@top\@True
+\newenvironment{dgroup}{%
+ \let\grp@hasNumber\@True\@optarg\@dgroup{}%
+}{%
+ \end@dgroup
+}
+\newtoks\GRP@queue
+\newenvironment{dgroup*}{%
+ \let\grp@hasNumber\@False\@optarg\@dgroup{}%
+}{%
+ \end@dgroup
+}
+\def\@dgroup[#1]{%
+ \debugmsg{=== DGROUP ==================================================}%
+ \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
+ \global\grp@wdL\z@\global\grp@wdR\z@\global\grp@wdT\z@
+ \global\grp@linewidth\z@\global\grp@wdNum\z@
+ \global\let\grp@eqs@numbered\@False
+ \global\let\grp@aligned\@True
+ \global\let\grp@shiftnumber\@False
+ \eq@prelim
+ \setkeys{breqn}{#1}%
+ \if\grp@hasNumber \grp@setnumber \fi
+}
+\def\end@dgroup{%
+ \EQ@displayinfo \grp@finish
+ \if\grp@hasNumber\grp@resetnumber\fi
+}
+\@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
+ % Trick \eq@setnumber to doing our work for us.
+ \let\eq@hasNumber\@True
+ \eq@setnumber
+ \global\sbox\GRP@numbox{\unhbox\EQ@numbox}%
+ \grp@wdNum\eq@wdNum
+ \let\eq@hasNumber\@False
+ \let\eq@number\@empty
+ \eq@wdNum\z@
+ \protected@edef\theparentequation{\theequation}%
+ \setcounter{parentequation}{\value{equation}}%
+ \setcounter{equation}{0}%
+ \def\theequation{\theparentequation\alph{equation}}%
+ \debugmsg{Group Number \theequation}%
+}
+\def\grp@resetnumber{%
+ \setcounter{equation}{\value{parentequation}}%
+}
+\newbox\GRP@box
+\newbox\GRP@wholebox
+\def\grp@push{%
+ \global\GRP@queue\@xp\@xp\@xp{\@xp\the\@xp\GRP@queue
+ \@xp\@elt\@xp{\EQ@trial}%
+ }%
+ \global\setbox\GRP@box\vbox{%
+ \hbox{\box\EQ@box\box\EQ@copy\penalty\@ne\copy\EQ@numbox}%
+ \unvbox\GRP@box
+ }%
+ \global\let\GRP@top\@False
+ \EQ@trial
+ \if\eq@isIntertext\else
+ \ifdim\eq@wdL>\grp@wdL \global\grp@wdL\eq@wdL \fi
+ \ifdim\eq@wdT>\grp@wdT \global\grp@wdT\eq@wdT \fi
+ \setlength\dim@a{\eq@wdT-\eq@wdL}%
+ \ifdim\dim@a>\grp@wdR \global\grp@wdR\dim@a \fi
+ \ifdim\eq@linewidth>\grp@linewidth \global\grp@linewidth\eq@linewidth\fi
+ \if\eq@hasNumber
+ \global\let\grp@eqs@numbered\@True
+ \ifdim\eq@wdNum>\grp@wdNum\global\grp@wdNum\eq@wdNum\fi
+ \fi
+ \if\EQ@hasLHS\else\global\let\grp@aligned\@False\fi
+ \if D\eq@layout \global\let\grp@aligned\@False\fi % Layout D (usually) puts rel on 2nd line.
+ \if\eq@shiftnumber\global\let\grp@shiftnumber\@True\fi % One eq shifted forces all.
+ \fi
+}
+\def\grp@finish{%
+ \setlength\dim@a{\grp@wdL+\grp@wdR-4em}% Allowance for shrink?
+ \if\grp@aligned\ifdim\dim@a>\grp@linewidth
+ \global\let\grp@aligned\@False
+ \fi\fi
+ \addtolength\dim@a{\grp@wdNum }% Effective length
+ \if\grp@shiftnumber\else\if\grp@hasNumber\if\grp@eqs@numbered\else\ifdim\dim@a>\grp@linewidth
+ \global\let\grp@shiftnumber\@True
+ \fi\fi\fi\fi
+ \if\grp@aligned
+ \global\grp@wdT\grp@wdL\global\advance\grp@wdT\grp@wdR
+ \fi
+ \debugmsg{======= DGROUP Formatting
+ ^^J||===== \grp@wdL=\the\grp@wdL, \grp@wdR=\the\grp@wdR
+ ^^J||===== Shift Number=\theb@@le\grp@shiftnumber, Eqns. numbered=\theb@@le\grp@eqs@numbered
+ ^^J||===== Aligned=\theb@@le\grp@aligned
+ ^^J||===== \grp@wdNum=\the\grp@wdNum}%
+ \setbox\GRP@wholebox\vbox{%
+ \let\@elt\eqgrp@elt
+ \the\GRP@queue
+ }%
+ \eq@topspace{\vskip\parskip}%
+ \if\grp@hasNumber\if\grp@eqs@numbered\else
+ \if\grp@shiftnumber
+ \copy\GRP@numbox \penalty\@M
+ \kern\eqlineskip
+ \else
+ \setlength\dim@a{%
+ (\ht\GRP@wholebox+\dp\GRP@wholebox+\ht\GRP@numbox-\dp\GRP@numbox)/2}%
+ \setlength\skip@c{\dim@a-\ht\GRP@numbox}%
+ \vglue\skip@c% NON discardable
+ \copy\GRP@numbox \penalty\@M
+\debugmsg{GROUP NUMBER: preskip:\the\skip@c, postkern:\the\dim@a, height:\the\ht\GRP@wholebox,
+ ^^J||===== box height:\the\ht\GRP@numbox, box depth:\the\dp\GRP@numbox}%
+ \kern-\dim@a
+ \kern-\abovedisplayskip % To cancel the topspace above the first eqn.
+ \fi
+ \fi\fi
+ \unvbox\GRP@wholebox
+ \let\@elt\relax
+ \eq@botspace % not needed unless bottom number?
+}
+\def\eqgrp@elt#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%
+ \if\eq@isIntertext
+ \vskip\belowdisplayskip
+ \unvbox\EQ@copy
+ \else
+ \grp@override
+ \eq@finish
+ \fi
+ \endgroup
+}
+\def\grp@override{%
+ \def\eqindent{I}%
+ \setlength\dim@a{(\grp@linewidth-\grp@wdT)/2}%
+ \ifdim\dim@a<\z@\dim@a=\z@\fi
+ \dim@b\if L\eqnumside\grp@wdNum\else\z@\fi
+ \if\grp@shiftnumber\else
+ \ifdim\dim@b>\dim@a\dim@a\dim@b\fi
+ \fi
+ \if\grp@aligned
+ \addtolength\dim@a{\grp@wdL-\eq@wdL}%
+ \fi
+ \mathindent\dim@a
+ \ifdim\dim@b>\dim@a
+ \let\eq@shiftnumber\@True
+ \fi
+}
+\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{%
+ \unhbox\z@
+}
+\newenvironment{darray}{\@optarg\@darray{}}{}
+\def\@darray[#1]{%
+ \debugmsg{=== DARRAY ==================================================}%
+ \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@
+ \dar@repack
+}
+\def\dar@repack{%
+ \unpenalty
+ \setbox\tw@\lastbox
+ \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]{%
+ \unpenalty\unskip\unpenalty\unskip % BRM Added
+ \hbox{#1}%
+ \penalty -201\relax\hbox{}% Penalty to allow breaks here.
+ \hskip\conditionsep
+ \if@tempswa \@xp\hbox \else \@xp\condition@b\fi
+ {#2}%
+ \endgroup
+ \setbox\z@\if@tempswa\hbox{#2}\else\hbox{\textmath@setup #2}\fi
+ \global\eq@wdCond\wd\z@
+ \let\cond@gobble\@gobble
+}
+\newcommand\condition@b[1]{%
+ \cond@gobble{\hskip\conditionsep}%
+ \textmath@setup #1%
+}
+\newenvironment{XXXXdsuspend}{%
+ \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
+ \@elt{\gdef\EQ@trial{}}%
+ }%
+}
+\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{%
+ \hbox{\copy\EQ@box\vtop{\unvbox\EQ@box}}%
+ \unvbox\GRP@box
+ }%
+ \global\GRP@queue\@xp{\the\GRP@queue
+ \@elt{\let\eq@isIntertext\@True}%
+ }%
+}
+\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}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%
+%% End of file `breqn.sty'.
diff --git a/Master/texmf-dist/tex/latex/mh/empheq.sty b/Master/texmf-dist/tex/latex/mh/empheq.sty
index 94d5f2bf8b9..f2d447b513b 100644
--- a/Master/texmf-dist/tex/latex/mh/empheq.sty
+++ b/Master/texmf-dist/tex/latex/mh/empheq.sty
@@ -4,28 +4,30 @@
%%
%% The original source files were:
%%
-%% empheq.dtx (with options: `empheq')
+%% empheq.dtx (with options: `package')
%%
-%% It may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2003/12/01 or later.
+%% This is a generated file.
+%%
+%% Copyright (C) 2002-2007 by Morten Hoegholm <mh.ctan@gmail.com>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status "maintained".
%%
-%% The Current Maintainer of this work is Morten H\o gholm.
+%% This Current Maintainer of this work is Morten Hoegholm.
%%
-%% This work consists of the files empheq.dtx and empheq.ins and the
-%% derived files empheq.sty and ntheorem.fix
+%% This work consists of the main source file empheq.dtx
+%% and the derived files
+%% empheq.sty, empheq.pdf, empheq.ins, empheq.drv.
%%
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{empheq}
- [2004/10/10 v2.11a
- Emphasizing equations (MH)
- ]
+\ProvidesPackage{empheq}%
+ [2007/12/03 v2.12 Emphasizing equations (MH)]
\RequirePackage{mhsetup}[2004/10/10]
\MHInternalSyntaxOn
\MH_new_boolean:n {overload_ams}
@@ -40,7 +42,8 @@
\MH_new_boolean:n {good_mult}
\DeclareOption{oldmultline}{\MH_set_boolean_F:n {good_mult}}
\DeclareOption{newmultline}{\MH_set_boolean_T:n {good_mult}}
-\DeclareOption{ntheorem}{\AtEndOfPackage{\input{ntheorem.fix}}}
+\gdef\g@EQ@ntheorem@support@bool{01}
+\DeclareOption{ntheorem}{\gdef\g@EQ@ntheorem@support@bool{00}}
\DeclareOption*{
\PassOptionsToPackage{\CurrentOption}{mathtools}
}
@@ -840,6 +843,12 @@
\g@addto@macro\EQ_typeset_display_hook:{
\MH_let:NwN \hyper@refstepcounter\@gobble
}
+ \g@addto@macro\EQ_typeset_display_hook:{
+ \let\NCC@ignorepar\relax
+ }
+ \g@addto@macro\EQ_typeset_tags_hook:{
+ \let\NCC@ignorepar\relax
+ }
\g@addto@macro\EQ_typeset_tags_hook:{
\MH_let:NwN\TagsPlusEndmarks\relax
\MH_let:NwN\RestoreTags\relax
@@ -980,6 +989,382 @@
}
}
}
+\if\g@EQ@ntheorem@support@bool
+\else
+ \expandafter\endinput
+\fi
+\def\default_raisetag:{\nobreak}
+\def\raisetag#1{
+ \skip@#1\relax
+ \xdef\raise@tag{\default_raisetag:
+ \vskip\iftagsleft@\else:-\fi:\the\skip@\relax}}
+\MH_let:NwN\raise@tag\default_raisetag:
+\def\displ@y@{\@display@init{%
+ \global\column@\z@ \global\dspbrk@lvl\m@ne
+ \global\tag@false \global\MH_let:NwN\raise@tag\default_raisetag:
+}}
+\def\MT_gobblelabel:w #1{\@ifnextchar[{\EQ_gobbleoptional:w}{}}
+\def\EQ_gobbleoptional:w [#1]{}
+\def\gmeasure@#1{%
+ \begingroup
+ \measuring@true
+ \totwidth@\z@
+ \global\MH_let:NwN\tag@lengths\@empty
+ \savecounters@
+ \setbox\@ne\vbox{%
+ \everycr{\noalign{\global\tag@false
+ \global\MH_let:NwN\raise@tag\default_raisetag:
+ \global\column@\z@}}%
+ \MH_let:NwN\label\MT_gobblelabel:w
+ \halign{%
+ \setboxz@h{$\m@th\displaystyle{##}$}%
+ \if_dim:w \wdz@>\totwidth@
+ \global\totwidth@\wdz@
+ \fi:
+ &\setboxz@h{\strut@{##}}%
+ \savetaglength@
+ \crcr
+ #1%
+ \math@cr@@@
+ }%
+ }%
+ \restorecounters@
+ \if@fleqn
+ \global\advance\totwidth@\@mathmargin
+ \fi:
+ \iftagsleft@
+ \if_dim:w \totwidth@>\displaywidth
+ \global\MH_let:NwN\gdisplaywidth@\totwidth@
+ \else:
+ \global\MH_let:NwN\gdisplaywidth@\displaywidth
+ \fi:
+ \fi:
+ \endgroup
+}
+\def\measure@#1{%
+ \begingroup
+ \measuring@true
+ \global\eqnshift@\z@
+ \global\alignsep@\z@
+ \global\MH_let:NwN\tag@lengths\@empty
+ \global\MH_let:NwN\field@lengths\@empty
+ \savecounters@
+ \global\setbox0\vbox{%
+ \MH_let:NwN\math@cr@@@\math@cr@@@align@measure
+ \everycr{\noalign{\global\tag@false
+ \global\MH_let:NwN\raise@tag\default_raisetag:
+ \global\column@\z@}}%
+ \MH_let:NwN\label\MT_gobblelabel:w
+ \global\row@\z@
+ \tabskip\z@
+ \halign{\span\align@preamble\crcr
+ #1%
+ \math@cr@@@
+ \global\column@\z@
+ \add@amps\maxfields@\cr
+ }%
+ }%
+ \restorecounters@
+ \ifodd\maxfields@
+ \global\advance\maxfields@\@ne
+ \fi:
+ \if_num:w \xatlevel@=\tw@
+ \if_num:w \maxfields@<\thr@@
+ \MH_let:NwN\xatlevel@\z@
+ \fi:
+ \fi:
+ \setbox\z@\vbox{%
+ \unvbox\z@ \unpenalty \global\setbox\@ne\lastbox
+ }%
+ \global\totwidth@\wd\@ne
+ \if@fleqn \global\advance\totwidth@\@mathmargin \fi:
+ \global\MH_let:NwN\maxcolumn@widths\@empty
+ \begingroup
+ \MH_let:NwN\or:\relax
+ \loop
+ \global\setbox\@ne\hbox{%
+ \unhbox\@ne \unskip \global\setbox\thr@@\lastbox
+ }%
+ \ifhbox\thr@@
+ \xdef\maxcolumn@widths{ \or: \the\wd\thr@@ \maxcolumn@widths}%
+ \repeat
+ \endgroup
+ \dimen@\displaywidth
+ \advance\dimen@-\totwidth@
+ \if_case:w \xatlevel@
+ \global\alignsep@\z@
+ \MH_let:NwN\minalignsep\z@
+ \@tempcntb\z@
+ \if@fleqn
+ \@tempcnta\@ne
+ \global\eqnshift@\@mathmargin
+ \else:
+ \@tempcnta\tw@
+ \global\eqnshift@\dimen@
+ \global\divide\eqnshift@\@tempcnta
+ \fi:
+ \or:
+ \@tempcntb\maxfields@
+ \divide\@tempcntb\tw@
+ \@tempcnta\@tempcntb
+ \advance\@tempcntb\m@ne
+ \if@fleqn
+ \global\eqnshift@\@mathmargin
+ \global\alignsep@\dimen@
+ \global\divide\alignsep@\@tempcnta
+ \else:
+ \global\advance\@tempcnta\@ne
+ \global\eqnshift@\dimen@
+ \global\divide\eqnshift@\@tempcnta
+ \global\alignsep@\eqnshift@
+ \fi:
+ \or:
+ \@tempcntb\maxfields@
+ \divide\@tempcntb\tw@
+ \global\advance\@tempcntb\m@ne
+ \global\@tempcnta\@tempcntb
+ \global\eqnshift@\z@
+ \global\alignsep@\dimen@
+ \if@fleqn
+ \global\advance\alignsep@\@mathmargin\relax
+ \fi:
+ \global\divide\alignsep@\@tempcntb
+ \fi:
+ \if_dim:w \alignsep@<\minalignsep\relax
+ \global\alignsep@\minalignsep\relax
+ \if_dim:w \eqnshift@>\z@
+ \if@fleqn\else:
+ \global\eqnshift@\displaywidth
+ \global\advance\eqnshift@-\totwidth@
+ \global\advance\eqnshift@-\@tempcntb\alignsep@
+ \global\divide\eqnshift@\tw@
+ \fi:
+ \fi:
+ \fi:
+ \if_dim:w \eqnshift@<\z@
+ \global\eqnshift@\z@
+ \fi:
+ \calc@shift@align
+ \global\tagshift@\totwidth@
+ \global\advance\tagshift@\@tempcntb\alignsep@
+ \if@fleqn
+ \if_num:w \xatlevel@=\tw@
+ \global\advance\tagshift@-\@mathmargin\relax
+ \fi:
+ \else:
+ \global\advance\tagshift@\eqnshift@
+ \fi:
+ \iftagsleft@ \else:
+ \global\advance\tagshift@-\displaywidth
+ \fi:
+ \dimen@\minalignsep\relax
+ \global\advance\totwidth@\@tempcntb\dimen@
+ \if_dim:w \totwidth@>\displaywidth
+ \global\MH_let:NwN\displaywidth@\totwidth@
+ \else:
+ \global\MH_let:NwN\displaywidth@\displaywidth
+ \fi:
+ \endgroup
+}
+\def\EQ_multline_labelhack:n #1{%
+ \begingroup\measuring@false\label@in@display{#1}\endgroup}
+\def\EQ_multline_labelhack_opt:nw #1[#2]{%
+ \begingroup\measuring@false\label@in@display{#1}[#2]\endgroup}
+\def\multline@#1{%
+ \Let@
+ \@display@init{\global\advance\row@\@ne \global\dspbrk@lvl\m@ne}%
+ \chardef\dspbrk@context\z@
+ \restore@math@cr
+ \MH_let:NwN\tag\tag@in@align
+ \global\tag@false \global\MH_let:NwN\raise@tag\default_raisetag:
+ \mmeasure@{#1}%
+ \MH_let:NwN\tag\gobble@tag
+ \MH_let:NwN\label\MT_gobblelabel:w
+ \tabskip \if@fleqn \@mathmargin \else: \z@skip \fi:
+ \totwidth@\displaywidth
+ \if@fleqn
+ \advance\totwidth@-\@mathmargin
+ \fi:
+ \halign\bgroup
+ \hbox to\totwidth@{%
+ \if@fleqn
+ \hskip \@centering \relax
+ \else:
+ \hfil
+ \fi:
+ \strut@
+ $\m@th\displaystyle{}##\endmultline@math%$
+ \hfil
+ }%
+ \crcr
+ \if@fleqn
+ \hskip-\@mathmargin
+ \def\multline@indent{\hskip\@mathmargin}% put it back
+ \else:
+ \hfilneg
+ \def\multline@indent{\hskip\multlinegap}%
+ \fi:
+ \iftagsleft@
+ \iftag@
+ \begingroup
+ \ifshifttag@
+ \rlap{\vbox{%
+ \normalbaselines
+ \hbox{%
+ \strut@
+ \make@display@tag
+ }%
+ \vbox to\lineht@{}%
+ \raise@tag
+ }}%
+ \multline@indent
+ \else:
+ \setbox\z@\hbox{\make@display@tag}%
+ \dimen@\@mathmargin \advance\dimen@-\wd\z@
+ \if_dim:w \dimen@<\multlinetaggap
+ \dimen@\multlinetaggap
+ \fi:
+ \box\z@ \hskip\dimen@\relax
+ \fi:
+ \endgroup
+ \else:
+ \multline@indent
+ \fi:
+ \else:
+ \multline@indent
+ \fi:
+ #1%
+}
+\def\mmeasure@#1{%
+ \begingroup
+ \measuring@true
+ \def\label##1{%
+ \@ifnextchar[
+ {\EQ_multline_labelhack_opt:nw {##1}}
+ {\EQ_multline_labelhack:n {##1}}
+ }
+ \def\math@cr@@@{\cr}%
+ \MH_let:NwN\shoveleft\@iden \MH_let:NwN\shoveright\@iden
+ \savecounters@
+ \global\row@\z@
+ \setbox\@ne\vbox{%
+ \global\MH_let:NwN\df@tag\@empty
+ \halign{%
+ \setboxz@h{\@lign$\m@th\displaystyle{}##$}%
+ \iftagsleft@
+ \if_num:w \row@=\@ne
+ \global\totwidth@\wdz@
+ \global\lineht@\ht\z@
+ \fi:
+ \else:
+ \global\totwidth@\wdz@
+ \global\lineht@\dp\z@
+ \fi:
+ \crcr
+ #1%
+ \crcr
+ }%
+ }%
+ \if_meaning:NN
+ \df@tag\@empty
+ \else:
+ \global\tag@true
+ \fi:
+ \if@eqnsw\global\tag@true\fi:
+ \iftag@
+ \setboxz@h{%
+ \if@eqnsw
+ \stepcounter{equation}%
+ \tagform@\theequation
+ \else:
+ \df@tag
+ \fi:
+ }%
+ \global\tagwidth@\wdz@
+ \dimen@\totwidth@
+ \advance\dimen@\tagwidth@
+ \advance\dimen@\multlinetaggap
+ \iftagsleft@\else:
+ \if@fleqn
+ \advance\dimen@\@mathmargin
+ \fi:
+ \fi:
+ \if_dim:w \dimen@>\displaywidth
+ \global\shifttag@true
+ \else:
+ \global\shifttag@false
+ \fi:
+ \fi:
+ \restorecounters@
+ \endgroup
+}
+\newlength\mintagvsep
+\mintagvsep5pt
+\def\EQ_only_endmark:{%
+ \MH_set_boolean_T:n {show_manual_tags}
+ \global\tag@true
+ \iftagsleft@
+ \gdef\df@tag{%
+ \hbox to \displaywidth{%
+ \hss
+ \raisebox{-\normallineskip
+ -\depthof{\EQ_outerbox:{}}
+ -\heightof{\EQ_outerbox:{}}
+ -\dp\EQ_mathdisplay_box
+ -\ht\EQ_mathdisplay_box}
+ [0pt][0pt]{\PotEndMark{\maketag@@@}}}}
+ \else:
+ \gdef\df@tag{%
+ \raisebox{-\dp\EQ_mathdisplay_box
+ -\depthof{\EQ_outerbox:{}}}
+ {\PotEndMark{\maketag@@@}}}%
+ \fi:}
+\def\EQ_tag_plus_endmark:{%
+ \iftagsleft@
+ \gdef\maketag@@@##1{%
+ \hfuzz\displaywidth
+ \makebox[\widthof{##1}][l]{%
+ \hbox to \displaywidth{\m@th\normalfont##1\hss
+ \raisebox{-\dp\EQ_mathdisplay_box
+ -\depthof{\EQ_outerbox:{}}}
+ {\PotEndMark{\hss}}}}}%
+ \else:
+ \gdef\maketag@@@##1{%
+ \hbox{\m@th\normalfont##1\llap{\hss\PotEndMark{%
+ \settoheight{\@tempdima}{\@nameuse{\InTheoType Symbol}}%
+ \MH_addtolength:dn \@tempdima
+ {\g_EQ_bottomtag_depth_dim+\mintagvsep}
+ \setlength{\@tempdimb}
+ {\g_EQ_bottomrow_depth_dim+\depthof{\EQ_outerbox:{}}
+ +\depthof{\EQ_innerbox:{}}}
+ \if_dim:w \@tempdima>\@tempdimb
+ \MH_setlength:dn \@tempdima{-\dp\EQ_mathdisplay_box
+ -\@tempdima+\g_EQ_bottomrow_depth_dim}
+ \addtolength{\@tempdima}{\depthof{\EQ_innerbox:{}}}%
+ \def\EQ_next:{\raisebox{\@tempdima}}%
+ \else:
+ \def\EQ_next:{
+ \raisebox{-\dp\EQ_mathdisplay_box
+ -\depthof{\EQ_outerbox:{}}}}%
+ \fi:\EQ_next:}}}}%
+ \fi:}
+\MH_let:NwN \MT_nonumber: \nonumber
+\def\g_EQ_latest_nonzerodepth_row_fint{\z@}
+\renewcommand*\nonumber{
+ \@tempcnta=\row@
+ \if_num:w \l_EQ_equationtype_int=\thr@@
+ \advance\@tempcnta\m@ne
+ \else:
+ \if_num:w \l_EQ_equationtype_int=4\relax
+ \advance\@tempcnta\m@ne
+ \fi:
+ \fi:
+ \if_num:w \g_EQ_latest_nonzerodepth_row_fint=\@tempcnta
+ \else:
+ \global\g_EQ_bottomtag_depth_dim=-\baselineskip
+ \fi:
+ \MT_nonumber:
+}
\endinput
%%
%% End of file `empheq.sty'.
diff --git a/Master/texmf-dist/tex/latex/mh/empheq07.sty b/Master/texmf-dist/tex/latex/mh/empheq07.sty
index 2ca5134e715..581acf10a6c 100644
--- a/Master/texmf-dist/tex/latex/mh/empheq07.sty
+++ b/Master/texmf-dist/tex/latex/mh/empheq07.sty
@@ -6,24 +6,28 @@
%%
%% empheq07.dtx (with options: `package')
%%
-%% It may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2003/12/01 or later.
+%% This is a generated file.
+%%
+%% Copyright (C) 2002-2007 by Morten Hoegholm <mh.ctan@gmail.com>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status "maintained".
%%
-%% The Current Maintainer of this work is Morten H\o gholm.
+%% This Current Maintainer of this work is Morten Hoegholm.
%%
-%% This work consists of the files empheq07.dtx and empheq07.ins and
-%% the derived file empheq07.sty.
+%% This work consists of the main source file empheq07.dtx
+%% and the derived files
+%% empheq07.sty, empheq07.pdf, empheq07.ins, empheq07.drv.
%%
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{empheq07}
- [2004/07/27 v0.7d Emphasizing equations (MH)]
+\ProvidesPackage{empheq07}%
+ [2007/12/03 v0.7e Emphasizing equations (MH)]
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{amsmath}}
\ProcessOptions\relax
\RequirePackage{amsmath}[2000/07/18]
diff --git a/Master/texmf-dist/tex/latex/mh/flexisym.sty b/Master/texmf-dist/tex/latex/mh/flexisym.sty
new file mode 100644
index 00000000000..6d41ac66367
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mh/flexisym.sty
@@ -0,0 +1,293 @@
+%%
+%% This is file `flexisym.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% flexisym.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 1997-2003 by Michael J. Downes
+%% Copyright (C) 2007 by Morten Hoegholm <mh.ctan@gmail.com>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Morten Hoegholm.
+%%
+%% This work consists of the main source file flexisym.dtx
+%% and the derived files
+%% flexisym.sty, flexisym.pdf, flexisym.ins, flexisym.drv,
+%% cmbase.sym, mathpazo.sym, mathptmx.sym, msabm.sym.
+%%
+\ProvidesPackage{flexisym}[2007/12/10 v0.95]
+\let\@xp\expandafter \let\@nx\noexpand
+\edef\do{%
+ \@nx\AtEndOfPackage{%
+ \catcode\number`\"=\number\catcode`\"
+ \relax
+ }%
+}
+\do \let\do\relax
+\catcode`\"=12
+\let\@sym\@gobble
+\DeclareOption{robust}{%
+ \def\@sym#1{%
+ \ifx\protect\@typeset@protect \else\protect#1\@xp\@gobblefour\fi
+ }%
+}
+\def\mg@bin{2}% binary operators
+\def\mg@rel{2}% relations
+%%\def\mg@nre{B}% negated relations
+\def\mg@del{3}% delimiters
+%%\def\mg@arr{B}% arrows
+\def\mg@acc{0}% accents
+\def\mg@cop{3}% cumulative operators (sum, int)
+\def\mg@latin{1}% (Latin) letters
+\def\mg@greek{1}% (lowercase) Greek
+\def\mg@Greek{0}% (capital) Greek
+%%\def\mg@bflatin{4}% bold upright Latin letters ?
+%%\def\mg@Bbb{B}% blackboard bold
+\def\mg@cal{2}% script/calligraphic
+%%\def\mg@frak{5}% Fraktur letters
+\def\mg@digit{0}% decimal digits % 1 = oldstyle, 0 = capital
+\expandafter\let\csname MathChar \endcsname\mathchar
+\expandafter\let\csname Delimiter \endcsname\delimiter
+\expandafter\let\csname Radical \endcsname\radical
+\newcommand{\MathChar}{}
+\edef\MathChar{\csname MathChar \endcsname\noexpand\string}
+\newcommand{\Delimiter}{}
+\edef\Delimiter{\csname Delimiter \endcsname\noexpand\string}
+\newcommand{\Radical}{}
+\edef\Radical{\csname Radical \endcsname\noexpand\string}
+\let\sumlimits\displaylimits
+\let\intlimits\nolimits
+\let\namelimits\displaylimits
+\edef\m@Ord#1#2#3{\csname MathChar \endcsname"0#1#2#3 }
+\edef\m@Var#1#2#3{\csname MathChar \endcsname"7#1#2#3 }
+\edef\m@Bin#1#2#3{\csname MathChar \endcsname"2#1#2#3 }
+\edef\m@Rel#1#2#3{\csname MathChar \endcsname"3#1#2#3 }
+\edef\m@Pun#1#2#3{\csname MathChar \endcsname"6#1#2#3 }
+\edef\m@COs#1#2#3{\csname MathChar \endcsname"1#1#2#3 \sumlimits}
+\edef\m@COi#1#2#3{\csname MathChar \endcsname"1#1#2#3 \intlimits}
+\def\delim@a#1#2#3#4{\ifx\relax#1#2#3#4\else#1\fi #2#3#4}
+\def\delim@b#1#2#3#4{\ifx\relax#1#2#3#4\else#1\fi }
+\def\@tempa{%
+ \@nx\@xp\@nx\delim@a\@nx\csname sd@##1##2##3\@nx\endcsname ##1##2##3 }
+\edef\m@DeL#1#2#3{\csname Delimiter \endcsname"4\@tempa}
+\edef\m@DeR#1#2#3{\csname Delimiter \endcsname"5\@tempa}
+\edef\m@DeB#1#2#3{\csname Delimiter \endcsname"0\@tempa}
+\edef\m@DeA#1#2#3{\csname Delimiter \endcsname"3\@tempa}
+\edef\m@Rad#1#2#3{\csname Radical \endcsname"\@tempa}
+\def\do#1#2{\@xp\def\csname sd@#1\endcsname{#2}}
+\do{300}{028}
+\do{301}{029}
+\do{302}{05B}
+\do{303}{05D}
+\do{304}{262}
+\do{305}{263}
+\do{306}{264}
+\do{307}{265}
+\do{308}{266}
+\do{309}{267}
+\do{30A}{268}
+\do{30B}{269}
+\do{30C}{26A}
+\do{30D}{26B}
+\do{30E}{13D}
+\do{30F}{26E}
+\do{340}{37A}
+\do{341}{37B}
+\do{33A}{33A}
+\do{33B}{33B}
+\do{33E}{33E}
+\do{33C}{26A}
+\do{33D}{26B}
+\do{378}{222}
+\do{379}{223}
+\do{33F}{26C}
+\do{37E}{22A}
+\do{37F}{22B}
+\do{377}{26D}
+\do{30F}{26E}
+\def\m@Acc#1#2#3#4{\mathaccent"#1#2#3{#4}}
+\def\@symAcc{\@sym}
+\let\@symtype\@firstofone
+\def\@symOrd#1#2{\@symtype\mathord{\OrdSymbol{#2}}}
+\def\@symVar{\@symOrd}
+\def\@symBin#1#2{\@symtype\mathbin{\OrdSymbol{#2}}}
+\def\@symRel#1#2{\@symtype\mathrel{\OrdSymbol{#2}}}
+\def\@symPun#1#2{\@symtype\mathpunct{\OrdSymbol{#2}}}
+\def\@symCOi#1#2{\@symtype{\mathop{\OrdSymbol{#2}}\intlimits}}
+\def\@symCOs#1#2{\@symtype{\mathop{\OrdSymbol{#2}}\sumlimits}}
+\def\@symOpe#1#2{\@symtype\mathopen{\OrdSymbol{#2}}}
+\def\@symClo#1#2{\@symtype\mathclose{\OrdSymbol{#2}}}
+\def\@symDeL#1#2{\@symtype\mathopen{\OrdSymbol{#2}}}
+\def\@symDeR#1#2{\@symtype\mathclose{\OrdSymbol{#2}}}
+\def\@symDeB#1#2{\@symtype\mathord{\OrdSymbol{#2}}}
+\def\@symInn#1#2{\@symtype\mathinner{\OrdSymbol{#2}}}
+\def\@xnce#1{\@xp\@nx\csname#1\endcsname}
+\let\sym@global\global
+\def\DeclareFlexSymbol#1#2#3#4{%
+ \begingroup
+ \edef\@tempb{\@nx\@sym\@nx#1\@xnce{m@#2}\@xnce{mg@#3}#4}%
+ \ifcat\@nx#1\relax
+ \sym@global\let#1\@tempb
+ \else
+ \sym@global\mathcode`#1="8000\relax
+ \lccode`\~=`#1\relax
+ \lowercase{\sym@global\let~\@tempb}%
+ \fi
+ \endgroup
+}
+\def\DeclareFlexCompoundSymbol#1#2#3{%
+ \@xp\DeclareRobustCommand\@xp#1\@xp{\csname @sym#2\endcsname#1{#3}}%
+ \sym@global\let#1#1\relax
+}
+\DeclareRobustCommand\textchar{\text@char\textfont}
+\DeclareRobustCommand\scriptchar{\text@char\scriptfont}%
+\def\text@char@a{\?\endgroup}%
+\def\text@char@sym#1#2#3{%
+ \begingroup
+ \let\@sym\relax % defense against infinite loops
+ \the\text@script@char#3%
+ \afterassignment\text@char@a
+ \chardef\?="%
+}
+\def\text@char#1#2{\begingroup\check@mathfonts
+ \let\text@script@char#1\let\@sym\text@char@sym
+ \let\@symtype\@secondoftwo \let\OrdSymbol\@firstofone
+ \let\ifmmode\iftrue \everymath{$\@gobble}%$
+ \def\mkern{\muskip\z@}\let\mskip\mkern
+ \ifcat\relax\noexpand#2#2%
+ \else
+ \lccode`\~=\expandafter`\string#2\relax
+ \lowercase{~}%
+ \fi
+ \endgroup
+}
+\providecommand\textprime{}
+\DeclareRobustCommand\textprime{\leavevmode
+ \raise.8ex\hbox{\text@char\scriptfont\prime}%
+}
+\@ifundefined{resetMathstrut@}{}{%
+ \def\resetMathstrut@{%
+ \setbox\z@\hbox{\textchar\vert}%
+ \ht\Mathstrutbox@\ht\z@ \dp\Mathstrutbox@\dp\z@
+ }%
+}
+\@ifundefined{rightarrowfill@}{}{%
+ \def\rightarrowfill@#1{\m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
+ $#1\copy\z@\mkern-6mu\cleaders
+ \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill
+ \mkern-6mu\OrdSymbol{\rightarrow}$}
+ \def\leftarrowfill@#1{\m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
+ $#1\OrdSymbol{\leftarrow}\mkern-6mu\cleaders
+ \hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill
+ \mkern-6mu\box\z@$}
+ \def\leftrightarrowfill@#1{\m@th\setboxz@h{$#1\relbar$}\ht\z@\z@
+ $#1\OrdSymbol{\leftarrow}\mkern-6mu\cleaders
+ \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill
+ \mkern-6mu\OrdSymbol{\rightarrow}$}
+}
+\def\binrel@sym#1#2#3#4#5{%
+ \xdef\binrel@@##1{%
+ \ifx\m@Ord#2\@nx\@symOrd
+ \else\ifx\m@Var#2\@nx\@symVar
+ \else\ifx\m@COs#2\@nx\@symCOs
+ \else\ifx\m@COi#2\@nx\@symCOi
+ \else\ifx\m@Bin#2\@nx\@symBin
+ \else\ifx\m@Rel#2\@nx\@symRel
+ \else\ifx\m@Pun#2\@nx\@symPun
+ \else\@nx\@symErr \fi\fi\fi\fi\fi\fi\fi
+ ?{\@nx\OrdSymbol{##1}}}%
+}
+\def\binrel@a{%
+ \def\@symOrd##1##2{\gdef\binrel@@####1{\@symOrd##1{\OrdSymbol{####1}}}}%
+ \def\@symVar##1##2{\gdef\binrel@@####1{\@symVar##1{\OrdSymbol{####1}}}}%
+ \def\@symCOs##1##2{\gdef\binrel@@####1{\@symCOs##1{\OrdSymbol{####1}}}}%
+ \def\@symCOi##1##2{\gdef\binrel@@####1{\@symCOi##1{\OrdSymbol{####1}}}}%
+ \def\@symBin##1##2{\gdef\binrel@@####1{\@symBin##1{\OrdSymbol{####1}}}}%
+ \def\@symRel##1##2{\gdef\binrel@@####1{\@symRel##1{\OrdSymbol{####1}}}}%
+ \def\@symPun##1##2{\gdef\binrel@@####1{\@symPun##1{\OrdSymbol{####1}}}}%
+}
+\def\binrel@#1{%
+ \setbox\z@\hbox{$%
+ \let\mathchoice\@gobblethree
+ \let\@sym\binrel@sym \binrel@a
+ #1$}%
+}
+\def\@symextension{sym}
+\newcommand\usesymbols[1]{%
+ \@for\@tempb:=#1\do{%
+ \@xp\@onefilewithoptions\@xp{\@tempb}[][]\@symextension
+ }%
+}
+\newcommand\ProvidesSymbols[1]{\ProvidesFile{#1.sym}}
+\DeclareRobustCommand{\not}[1]{\@symRel\not{\OrdSymbol{\notRel#1}}}
+\DeclareRobustCommand{\OrdSymbol}[1]{%
+ \begingroup\mathchars@reset#1\endgroup
+}
+\def\mathchars@reset{\let\@sym\@sym@ord \let\@symtype\@symtype@ord
+ \let\OrdSymbol\relax}
+\def\@symtype@ord#1#{}% a strange sort of \@gobble
+\def\@sym@ord#1#2{\@xp\@sym@ord@a\string#2\@nil}%
+\begingroup
+\lccode`\.=`\@ \lowercase{\endgroup
+\def\@sym@ord@a#1.}#2#3\@nil#4#5#6{%
+ \csname MathChar \endcsname"0%
+ \if D#2\@xp\delim@b\csname sd@#4#5#6\endcsname#4#5#6
+ \else #4#5#6
+ \fi
+}
+\@ifpackageloaded{amsmath}{%
+ \begingroup
+ \long\def\next#1\mathchardef\std@minus\mathcode`\-\relax
+ \mathchardef\std@equal\mathcode`\=\relax#2\flexi@stop{%
+ \toks@{#1#2}%
+ \xdef\@begindocumenthook{\the\toks@}%
+ }%
+ \expandafter\next\@begindocumenthook\flexi@stop
+ \endgroup
+}{}
+\AtBeginDocument{%
+\def\newmcodes@{%
+ \mathcode `\'39\mathcode `\*42\mathcode `\."613A
+ \ifnum\mathcode`\-=45
+ \else
+ \ifnum\mathcode`\-=32768
+ \else
+ \mathchardef \std@minus \mathcode `\-\relax
+ \fi
+ \fi
+ \mathcode `\-45 \mathcode `\/47\mathcode `\:"603A\relax
+}
+}
+\DeclareOption{cmbase}{\usesymbols{cmbase}}
+\DeclareOption{mathpazo}{\usesymbols{mathpazo}}
+\DeclareOption{mathptmx}{\usesymbols{mathptmx}}
+\ProcessOptions\relax
+\renewcommand{\lnot}{\neg}
+\renewcommand{\land}{\wedge}
+\renewcommand{\lor}{\vee}
+\renewcommand{\le}{\leq}
+\renewcommand{\ge}{\geq}
+\renewcommand{\ne}{\neq}
+\renewcommand{\owns}{\ni}
+\renewcommand{\gets}{\leftarrow}
+\renewcommand{\to}{\rightarrow}
+\renewcommand{\|}{\Vert}
+\@ifpackagewith{flexisym}{mathstyleoff}{}{%
+ \RequirePackage[activechars]{mathstyle}\relax
+}
+\endinput
+%%
+%% End of file `flexisym.sty'.
diff --git a/Master/texmf-dist/tex/latex/mh/mathstyle.sty b/Master/texmf-dist/tex/latex/mh/mathstyle.sty
new file mode 100644
index 00000000000..f95e9ad2a22
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mh/mathstyle.sty
@@ -0,0 +1,161 @@
+%%
+%% This is file `mathstyle.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% mathstyle.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 1997-2003 by Michael J. Downes
+%% Copyright (C) 2007 by Morten Hoegholm <mh.ctan@gmail.com>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Morten Hoegholm.
+%%
+%% This work consists of the main source file mathstyle.dtx
+%% and the derived files
+%% mathstyle.sty, mathstyle.pdf, mathstyle.ins, mathstyle.drv.
+%%
+\ProvidesPackage{mathstyle}[2007/12/10 v0.83]
+\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
+}
+\providecommand\@saveprimitive@a[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{mathstyle}%
+ {Unable to properly define \string#2; primitive
+ \noexpand#1no longer primitive}\@eha
+ \fi
+ \fi
+ \endgroup
+}
+\chardef\mathstyle=\z@
+\@saveprimitive\displaystyle\@@displaystyle
+\@saveprimitive\textstyle\@@textstyle
+\@saveprimitive\scriptstyle\@@scriptstyle
+\@saveprimitive\scriptscriptstyle\@@scriptscriptstyle
+\@saveprimitive\mathchoice\@@mathchoice
+\@saveprimitive\over\@@over
+\@saveprimitive\atop\@@atop
+\@saveprimitive\above\@@above
+\@saveprimitive\overwithdelims\@@overwithdelims
+\@saveprimitive\atopwithdelims\@@atopwithdelims
+\@saveprimitive\abovewithdelims\@@abovewithdelims
+\DeclareRobustCommand{\displaystyle}{%
+ \@@displaystyle \chardef\mathstyle\z@}
+\DeclareRobustCommand{\textstyle}{%
+ \@@textstyle \chardef\mathstyle\@ne}
+\DeclareRobustCommand{\scriptstyle}{%
+ \@@scriptstyle \chardef\mathstyle\tw@}
+\DeclareRobustCommand{\scriptscriptstyle}{%
+ \@@scriptscriptstyle \chardef\mathstyle\thr@@}
+\begingroup \catcode`\^=7\relax \catcode`\_=8\relax % just in case
+\lowercase{\endgroup
+\let\@@superscript=^ \let\@@subscript=_
+}%
+\def\subsupstyle{%
+ \ifnum\mathstyle<\tw@ \chardef\mathstyle\tw@
+ \else \chardef\mathstyle\thr@@
+ \fi
+}
+\let\mathsup=\@@superscript
+\let\mathsub=\@@subscript
+\def\sb#1{\mathsub{\protect\subsupstyle#1}}%
+\def\sp#1{\mathsup{\protect\subsupstyle#1}}%
+\def\mathchoice{%
+ \relax\ifcase\mathstyle
+ \expandafter\@firstoffour
+ \or
+ \expandafter\@secondoffour
+ \or
+ \expandafter\@thirdoffour
+ \else
+ \expandafter\@fourthoffour
+ \fi
+}
+\providecommand\@firstoffour[4]{#1}
+\providecommand\@secondoffour[4]{#2}
+\providecommand\@thirdoffour[4]{#3}
+\providecommand\@fourthoffour[4]{#4}
+\DeclareRobustCommand\genfrac[6]{%
+ {\fracstyle #1%
+ {\begingroup #5\endgroup
+ \csname @@\ifx\maxdimen#4\maxdimen over\else above\fi
+ \if @#2@\else withdelims\fi\endcsname #2#3#4\relax
+ #6}%
+ }%
+}
+\renewcommand{\frac}{\genfrac{}{}{}{}}
+\providecommand{\dfrac}{}
+\providecommand{\tfrac}{}
+\renewcommand{\dfrac}{\genfrac\displaystyle{}{}{}}
+\renewcommand{\tfrac}{\genfrac\textstyle{}{}{}}
+\providecommand{\binom}{}
+\providecommand{\tbinom}{}
+\providecommand{\dbinom}{}
+\renewcommand{\binom}{\genfrac{}(){0pt}}
+\renewcommand{\dbinom}{\genfrac\displaystyle(){0pt}}
+\renewcommand{\tbinom}{\genfrac\textstyle(){0pt}}
+\def\fracstyle{\ifcase\mathstyle
+ \chardef\mathstyle=\@ne
+ \or
+ \chardef\mathstyle=\tw@
+ \else
+ \chardef\mathstyle=\thr@@
+ \fi
+}
+\def\currentmathstyle{%
+ \ifcase\mathstyle
+ \@@displaystyle
+ \or
+ \@@textstyle
+ \or
+ \@@scriptstyle
+ \or
+ \@@scriptscripstyle
+ \fi}
+\DeclareOption{activechars}{\catcode`\^=13\relax \catcode`\_=13\relax }
+\ProcessOptions\relax
+\ifnum\catcode`\^=13\relax
+ \let^=\sp \let_=\sb
+\else
+ \mathcode`\^="8000\relax \mathcode`\_="8000\relax
+ \begingroup \catcode`\^=\active \catcode`\_=\active
+ \global\let^=\sp \global\let_=\sb
+ \endgroup
+\fi
+\endinput
+%%
+%% End of file `mathstyle.sty'.
diff --git a/Master/texmf-dist/tex/latex/mh/mathtools.sty b/Master/texmf-dist/tex/latex/mh/mathtools.sty
index e91b6692726..aa4391daa6c 100644
--- a/Master/texmf-dist/tex/latex/mh/mathtools.sty
+++ b/Master/texmf-dist/tex/latex/mh/mathtools.sty
@@ -6,26 +6,30 @@
%%
%% mathtools.dtx (with options: `package')
%%
-%% It may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2003/12/01 or later.
+%% This is a generated file.
+%%
+%% Copyright (C) 2002-2007 by Morten Hoegholm <mh.ctan@gmail.com>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status "maintained".
%%
-%% The Current Maintainer of this work is Morten H\o gholm.
+%% This Current Maintainer of this work is Morten Hoegholm.
%%
-%% This work consists of the files mathtools.dtx and mathtools.ins
-%% and the derived file mathtools.sty.
+%% This work consists of the main source file mathtools.dtx
+%% and the derived files
+%% mathtools.sty, mathtools.pdf, mathtools.ins, mathtools.drv.
%%
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{mathtools}
- [2004/10/10 v1.01a mathematical typesetting tools (MH)]
+\ProvidesPackage{mathtools}%
+ [2007/12/03 v1.03 mathematical typesetting tools (MH)]
\RequirePackage{keyval,calc}
-\RequirePackage{mhsetup}[2004/10/10]
+\RequirePackage{mhsetup}[2007/12/03]
\MHInternalSyntaxOn
\def\MT_options_name:{mathtools}
\newcommand*\mathtoolsset[1]{\setkeys{\MT_options_name:}{#1}}
@@ -117,11 +121,11 @@
\def\MT_extended_tagform:n #1{
\MH_set_boolean_F:n {raw_maketag}
\if_meaning:NN \df@label\@empty
- \MH_if_boolean:nT {manual_tag}
- { \MH_if_boolean:nTF {show_manual_tags}
- { \MT_prev_tagform:n {#1} }
- { \stepcounter{equation} }
- }
+ \MH_if_boolean:nTF {manual_tag}% this was \MH_if_boolean:nT before
+ { \MH_if_boolean:nTF {show_manual_tags}
+ { \MT_prev_tagform:n {#1} }
+ { \stepcounter{equation} }
+ }{\kern1sp}% this last {\kern1sp} is new.
\else:
\MH_if_boolean:nTF {manual_tag}
{ \MH_if_boolean:nTF {show_manual_tags}
@@ -255,9 +259,9 @@
\kern-\wd0 \lower.22ex\box0}}
\providecommand*\xrightleftharpoons[2][]{\mathrel{%
\raise.22ex\hbox{%
- $\ext@arrow 3095\MT_rightharpoonup_fill:{\phantom{#1}}{#2}$}%
+ $\ext@arrow 0359\MT_rightharpoonup_fill:{\phantom{#1}}{#2}$}%
\setbox0=\hbox{%
- $\ext@arrow 0359\MT_leftharpoondown_fill:{#1}{\phantom{#2}}$}%
+ $\ext@arrow 3095\MT_leftharpoondown_fill:{#1}{\phantom{#2}}$}%
\kern-\wd0 \lower.22ex\box0}}
\providecommand*\xhookleftarrow[2][]{%
\ext@arrow 3095\MT_hookleft_fill:{#1}{#2}}
@@ -376,6 +380,7 @@
\providecommand*\colonsim{\vcentcolon\mkern-1.2mu\sim}
\providecommand*\Colonsim{\dblcolon\mkern-1.2mu\sim}
}
+\let \AMS@math@cr@@ \math@cr@@
\MH_new_boolean:n {mult_firstline}
\MH_new_boolean:n {outer_mult}
\newcount\g_MT_multlinerow_int
@@ -511,7 +516,7 @@
\MT_start_mult:N \MT_mult_default_pos:
}
\newenvironment{multlined}[1][]
- {
+ {\MH_group_align_safe_begin:
\MT_test_for_tcb_other:nnnnn {#1}
{\def\MT_mult_default_pos:{#1}}
{\def\MT_mult_default_pos:{#1}}
@@ -525,7 +530,7 @@
\MT_multlined_second_arg:w
}
{
- \hfilneg \endaligned
+ \hfilneg \endaligned \MH_group_align_safe_end:
}
\MHPrecedingSpacesOn
\define@key{\MT_options_name:}
@@ -545,14 +550,15 @@
\def\MT_gobblelabel:w #1{}
\newcommand*\DeclarePairedDelimiter[3]{%
\@ifdefinable{#1}{
- \edef\MT_next: {\MH_cs_to_str:N #1}
- \@namedef{MT_delim_\MT_next: _star:}##1
+ \@namedef{MT_delim_\MH_cs_to_str:N #1 _star:}##1
{\left#2 ##1 \right #3}%
\@xp\@xp\@xp
\newcommand
- \@xp\csname MT_delim_\MT_next: _nostar:\endcsname[2][\\@gobble]
- { \edef\MT_next: {\MH_cs_to_str:N ##1}
- \@nameuse {\MT_next: l} #2 ##2 \@nameuse {\MT_next: r} #3}
+ \@xp\csname MT_delim_\MH_cs_to_str:N #1 _nostar:\endcsname
+ [2][\\@gobble]
+ {
+ \mathopen{\@nameuse {\MH_cs_to_str:N ##1 l} #2} ##2
+ \mathclose{\@nameuse {\MH_cs_to_str:N ##1 r} #3}}
\newcommand{#1}{
\@ifstar
{\@nameuse{MT_delim_\MH_cs_to_str:N #1 _star:}}
@@ -560,31 +566,38 @@
}
}
}
-\def\MT_start_cases:nn #1#2{
- \RIfM@\else
- \nonmatherr@{\begin{\@currenvir}}%
- \fi
- \left\lbrace
- \vcenter \bgroup
- \Let@ \chardef\dspbrk@context\@ne \restore@math@cr
- \spread@equation
- \ialign\bgroup
- \strut@$\m@th\displaystyle{##}$\hfil&#1\strut@
- #2
- \crcr
-}
-\newcommand*\newcases[3]{
- \newenvironment{#1}
- {\MT_start_cases:nn {#2}{#3}}
- {\endaligned\right.}
-}
-\newcommand*\renewcases[3]{
- \renewenvironment{#1}
- {\MT_start_cases:nn {#2}{#3}}
- {\endaligned\right.}
-}
-\newcases{dcases}{\quad}{$\m@th\displaystyle{##}$\hfil}
-\newcases{dcases*}{\quad}{{##}\hfil}
+\def\MT_start_cases:nnn #1#2#3{ % #1=sep,#2=preamble,#3=delim
+ \RIfM@\else
+ \nonmatherr@{\begin{\@currenvir}}
+ \fi
+ \MH_group_align_safe_begin:
+ \left#3
+ \vcenter \bgroup
+ \Let@ \chardef\dspbrk@context\@ne \restore@math@cr
+ \let \math@cr@@\AMS@math@cr@@
+ \spread@equation
+ \ialign\bgroup
+ \strut@$\m@th \displaystyle{##}$\hfil &#1\strut@
+ #2
+ \crcr
+}
+\def\MH_end_cases:{\crcr\egroup
+ \restorecolumn@
+ \egroup
+ \MH_group_align_safe_end:
+}
+\newcommand*\newcases[5]{% #1=name, #2=sep, #3=preamble, #4=left, #5=right
+ \newenvironment{#1}
+ {\MT_start_cases:nnn {#2}{#3}{#4}}
+ {\MH_end_cases:\right#5}
+}
+\newcommand*\renewcases[5]{
+ \renewenvironment{#1}
+ {\MT_start_cases:nnn {#2}{#3}{#4}}
+ {\MH_end_cases:\right#5}
+}
+\newcases{dcases}{\quad}{$\m@th\displaystyle{##}$\hfil}{\lbrace}{.}
+\newcases{dcases*}{\quad}{{##}\hfil}{\lbrace}{.}
\def\MT_matrix_begin:N #1{%
\hskip -\arraycolsep
\MH_let:NwN \@ifnextchar \MH_nospace_ifnextchar:Nnn
diff --git a/Master/texmf-dist/tex/latex/mh/mhsetup.sty b/Master/texmf-dist/tex/latex/mh/mhsetup.sty
index de71af7767c..e85b4b86b3a 100644
--- a/Master/texmf-dist/tex/latex/mh/mhsetup.sty
+++ b/Master/texmf-dist/tex/latex/mh/mhsetup.sty
@@ -6,24 +6,28 @@
%%
%% mhsetup.dtx (with options: `package')
%%
-%% It may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2003/12/01 or later.
+%% This is a generated file.
+%%
+%% Copyright (C) 2002-2007 by Morten Hoegholm <mh.ctan@gmail.com>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status "maintained".
%%
-%% The Current Maintainer of this work is Morten H\o gholm.
+%% This Current Maintainer of this work is Morten Hoegholm.
%%
-%% This work consists of the files mhsetup.dtx and mhsetup.ins and
-%% the derived file mhsetup.sty.
+%% This work consists of the main source file mhsetup.dtx
+%% and the derived files
+%% mhsetup.sty, mhsetup.pdf, mhsetup.ins, mhsetup.drv.
%%
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{mhsetup}
- [2004/10/10 v1.0b programming setup (MH)]
+\ProvidesPackage{mhsetup}%
+ [2007/12/03 v1.2 programming setup (MH)]
\def\MHInternalSyntaxOn{
\edef\MHInternalSyntaxOff{%
\catcode`\noexpand\~=\the\catcode`\~\relax
@@ -161,6 +165,8 @@
\providecommand*\MHPrecedingSpacesOn{
\MH_let:NwN \@xargdef \MH_kernel_xargdef:nwwn
}
+\def \MH_group_align_safe_begin: {\iffalse{\fi\ifnum0=`}\fi}
+\def \MH_group_align_safe_end: {\ifnum0=`{}\fi}
\endinput
%%
%% End of file `mhsetup.sty'.
diff --git a/Master/texmf-dist/tex/latex/mh/ntheorem.fix b/Master/texmf-dist/tex/latex/mh/ntheorem.fix
deleted file mode 100644
index fb310ef9c57..00000000000
--- a/Master/texmf-dist/tex/latex/mh/ntheorem.fix
+++ /dev/null
@@ -1,402 +0,0 @@
-%%
-%% This is file `ntheorem.fix',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% empheq.dtx (with options: `ntheorem')
-%%
-%% It may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2003/12/01 or later.
-%%
-%% This work has the LPPL maintenance status "maintained".
-%%
-%% The Current Maintainer of this work is Morten H\o gholm.
-%%
-%% This work consists of the files empheq.dtx and empheq.ins and the
-%% derived files empheq.sty and ntheorem.fix
-%%
-\ProvidesFile{ntheorem.fix}
- [2004/10/10 v2.11a
- empheq support and fixes for ntheorem (MH)
- ]
-\def\default_raisetag:{\nobreak}
-\def\raisetag#1{
- \skip@#1\relax
- \xdef\raise@tag{\default_raisetag:
- \vskip\iftagsleft@\else:-\fi:\the\skip@\relax}}
-\MH_let:NwN\raise@tag\default_raisetag:
-\def\displ@y@{\@display@init{%
- \global\column@\z@ \global\dspbrk@lvl\m@ne
- \global\tag@false \global\MH_let:NwN\raise@tag\default_raisetag:
-}}
-\def\MT_gobblelabel:w #1{\@ifnextchar[{\EQ_gobbleoptional:w}{}}
-\def\EQ_gobbleoptional:w [#1]{}
-\def\gmeasure@#1{%
- \begingroup
- \measuring@true
- \totwidth@\z@
- \global\MH_let:NwN\tag@lengths\@empty
- \savecounters@
- \setbox\@ne\vbox{%
- \everycr{\noalign{\global\tag@false
- \global\MH_let:NwN\raise@tag\default_raisetag:
- \global\column@\z@}}%
- \MH_let:NwN\label\MT_gobblelabel:w
- \halign{%
- \setboxz@h{$\m@th\displaystyle{##}$}%
- \if_dim:w \wdz@>\totwidth@
- \global\totwidth@\wdz@
- \fi:
- &\setboxz@h{\strut@{##}}%
- \savetaglength@
- \crcr
- #1%
- \math@cr@@@
- }%
- }%
- \restorecounters@
- \if@fleqn
- \global\advance\totwidth@\@mathmargin
- \fi:
- \iftagsleft@
- \if_dim:w \totwidth@>\displaywidth
- \global\MH_let:NwN\gdisplaywidth@\totwidth@
- \else:
- \global\MH_let:NwN\gdisplaywidth@\displaywidth
- \fi:
- \fi:
- \endgroup
-}
-\def\measure@#1{%
- \begingroup
- \measuring@true
- \global\eqnshift@\z@
- \global\alignsep@\z@
- \global\MH_let:NwN\tag@lengths\@empty
- \global\MH_let:NwN\field@lengths\@empty
- \savecounters@
- \global\setbox0\vbox{%
- \MH_let:NwN\math@cr@@@\math@cr@@@align@measure
- \everycr{\noalign{\global\tag@false
- \global\MH_let:NwN\raise@tag\default_raisetag:
- \global\column@\z@}}%
- \MH_let:NwN\label\MT_gobblelabel:w
- \global\row@\z@
- \tabskip\z@
- \halign{\span\align@preamble\crcr
- #1%
- \math@cr@@@
- \global\column@\z@
- \add@amps\maxfields@\cr
- }%
- }%
- \restorecounters@
- \ifodd\maxfields@
- \global\advance\maxfields@\@ne
- \fi:
- \if_num:w \xatlevel@=\tw@
- \if_num:w \maxfields@<\thr@@
- \MH_let:NwN\xatlevel@\z@
- \fi:
- \fi:
- \setbox\z@\vbox{%
- \unvbox\z@ \unpenalty \global\setbox\@ne\lastbox
- }%
- \global\totwidth@\wd\@ne
- \if@fleqn \global\advance\totwidth@\@mathmargin \fi:
- \global\MH_let:NwN\maxcolumn@widths\@empty
- \begingroup
- \MH_let:NwN\or:\relax
- \loop
- \global\setbox\@ne\hbox{%
- \unhbox\@ne \unskip \global\setbox\thr@@\lastbox
- }%
- \ifhbox\thr@@
- \xdef\maxcolumn@widths{ \or: \the\wd\thr@@ \maxcolumn@widths}%
- \repeat
- \endgroup
- \dimen@\displaywidth
- \advance\dimen@-\totwidth@
- \if_case:w \xatlevel@
- \global\alignsep@\z@
- \MH_let:NwN\minalignsep\z@
- \@tempcntb\z@
- \if@fleqn
- \@tempcnta\@ne
- \global\eqnshift@\@mathmargin
- \else:
- \@tempcnta\tw@
- \global\eqnshift@\dimen@
- \global\divide\eqnshift@\@tempcnta
- \fi:
- \or:
- \@tempcntb\maxfields@
- \divide\@tempcntb\tw@
- \@tempcnta\@tempcntb
- \advance\@tempcntb\m@ne
- \if@fleqn
- \global\eqnshift@\@mathmargin
- \global\alignsep@\dimen@
- \global\divide\alignsep@\@tempcnta
- \else:
- \global\advance\@tempcnta\@ne
- \global\eqnshift@\dimen@
- \global\divide\eqnshift@\@tempcnta
- \global\alignsep@\eqnshift@
- \fi:
- \or:
- \@tempcntb\maxfields@
- \divide\@tempcntb\tw@
- \global\advance\@tempcntb\m@ne
- \global\@tempcnta\@tempcntb
- \global\eqnshift@\z@
- \global\alignsep@\dimen@
- \if@fleqn
- \global\advance\alignsep@\@mathmargin\relax
- \fi:
- \global\divide\alignsep@\@tempcntb
- \fi:
- \if_dim:w \alignsep@<\minalignsep\relax
- \global\alignsep@\minalignsep\relax
- \if_dim:w \eqnshift@>\z@
- \if@fleqn\else:
- \global\eqnshift@\displaywidth
- \global\advance\eqnshift@-\totwidth@
- \global\advance\eqnshift@-\@tempcntb\alignsep@
- \global\divide\eqnshift@\tw@
- \fi:
- \fi:
- \fi:
- \if_dim:w \eqnshift@<\z@
- \global\eqnshift@\z@
- \fi:
- \calc@shift@align
- \global\tagshift@\totwidth@
- \global\advance\tagshift@\@tempcntb\alignsep@
- \if@fleqn
- \if_num:w \xatlevel@=\tw@
- \global\advance\tagshift@-\@mathmargin\relax
- \fi:
- \else:
- \global\advance\tagshift@\eqnshift@
- \fi:
- \iftagsleft@ \else:
- \global\advance\tagshift@-\displaywidth
- \fi:
- \dimen@\minalignsep\relax
- \global\advance\totwidth@\@tempcntb\dimen@
- \if_dim:w \totwidth@>\displaywidth
- \global\MH_let:NwN\displaywidth@\totwidth@
- \else:
- \global\MH_let:NwN\displaywidth@\displaywidth
- \fi:
- \endgroup
-}
-\def\EQ_multline_labelhack:n #1{%
- \begingroup\measuring@false\label@in@display{#1}\endgroup}
-\def\EQ_multline_labelhack_opt:nw #1[#2]{%
- \begingroup\measuring@false\label@in@display{#1}[#2]\endgroup}
-\def\multline@#1{%
- \Let@
- \@display@init{\global\advance\row@\@ne \global\dspbrk@lvl\m@ne}%
- \chardef\dspbrk@context\z@
- \restore@math@cr
- \MH_let:NwN\tag\tag@in@align
- \global\tag@false \global\MH_let:NwN\raise@tag\default_raisetag:
- \mmeasure@{#1}%
- \MH_let:NwN\tag\gobble@tag
- \MH_let:NwN\label\MT_gobblelabel:w
- \tabskip \if@fleqn \@mathmargin \else: \z@skip \fi:
- \totwidth@\displaywidth
- \if@fleqn
- \advance\totwidth@-\@mathmargin
- \fi:
- \halign\bgroup
- \hbox to\totwidth@{%
- \if@fleqn
- \hskip \@centering \relax
- \else:
- \hfil
- \fi:
- \strut@
- $\m@th\displaystyle{}##\endmultline@math
- \hfil
- }%
- \crcr
- \if@fleqn
- \hskip-\@mathmargin
- \def\multline@indent{\hskip\@mathmargin}% put it back
- \else:
- \hfilneg
- \def\multline@indent{\hskip\multlinegap}%
- \fi:
- \iftagsleft@
- \iftag@
- \begingroup
- \ifshifttag@
- \rlap{\vbox{%
- \normalbaselines
- \hbox{%
- \strut@
- \make@display@tag
- }%
- \vbox to\lineht@{}%
- \raise@tag
- }}%
- \multline@indent
- \else:
- \setbox\z@\hbox{\make@display@tag}%
- \dimen@\@mathmargin \advance\dimen@-\wd\z@
- \if_dim:w \dimen@<\multlinetaggap
- \dimen@\multlinetaggap
- \fi:
- \box\z@ \hskip\dimen@\relax
- \fi:
- \endgroup
- \else:
- \multline@indent
- \fi:
- \else:
- \multline@indent
- \fi:
- #1%
-}
-\def\mmeasure@#1{%
- \begingroup
- \measuring@true
- \def\label##1{%
- \@ifnextchar[
- {\EQ_multline_labelhack_opt:nw {##1}}
- {\EQ_multline_labelhack:n {##1}}
- }
- \def\math@cr@@@{\cr}%
- \MH_let:NwN\shoveleft\@iden \MH_let:NwN\shoveright\@iden
- \savecounters@
- \global\row@\z@
- \setbox\@ne\vbox{%
- \global\MH_let:NwN\df@tag\@empty
- \halign{%
- \setboxz@h{\@lign$\m@th\displaystyle{}##$}%
- \iftagsleft@
- \if_num:w \row@=\@ne
- \global\totwidth@\wdz@
- \global\lineht@\ht\z@
- \fi:
- \else:
- \global\totwidth@\wdz@
- \global\lineht@\dp\z@
- \fi:
- \crcr
- #1%
- \crcr
- }%
- }%
- \if_meaning:NN
- \df@tag\@empty
- \else:
- \global\tag@true
- \fi:
- \if@eqnsw\global\tag@true\fi:
- \iftag@
- \setboxz@h{%
- \if@eqnsw
- \stepcounter{equation}%
- \tagform@\theequation
- \else:
- \df@tag
- \fi:
- }%
- \global\tagwidth@\wdz@
- \dimen@\totwidth@
- \advance\dimen@\tagwidth@
- \advance\dimen@\multlinetaggap
- \iftagsleft@\else:
- \if@fleqn
- \advance\dimen@\@mathmargin
- \fi:
- \fi:
- \if_dim:w \dimen@>\displaywidth
- \global\shifttag@true
- \else:
- \global\shifttag@false
- \fi:
- \fi:
- \restorecounters@
- \endgroup
-}
-\newlength\mintagvsep
-\mintagvsep5pt
-\def\EQ_only_endmark:{%
- \MH_set_boolean_T:n {show_manual_tags}
- \global\tag@true
- \iftagsleft@
- \gdef\df@tag{%
- \hbox to \displaywidth{%
- \hss
- \raisebox{-\normallineskip
- -\depthof{\EQ_outerbox:{}}
- -\heightof{\EQ_outerbox:{}}
- -\dp\EQ_mathdisplay_box
- -\ht\EQ_mathdisplay_box}
- [0pt][0pt]{\PotEndMark{\maketag@@@}}}}
- \else:
- \gdef\df@tag{%
- \raisebox{-\dp\EQ_mathdisplay_box
- -\depthof{\EQ_outerbox:{}}}
- {\PotEndMark{\maketag@@@}}}%
- \fi:}
-\def\EQ_tag_plus_endmark:{%
- \iftagsleft@
- \gdef\maketag@@@##1{%
- \hfuzz\displaywidth
- \makebox[\widthof{##1}][l]{%
- \hbox to \displaywidth{\m@th\normalfont##1\hss
- \raisebox{-\dp\EQ_mathdisplay_box
- -\depthof{\EQ_outerbox:{}}}
- {\PotEndMark{\hss}}}}}%
- \else:
- \gdef\maketag@@@##1{%
- \hbox{\m@th\normalfont##1\llap{\hss\PotEndMark{%
- \settoheight{\@tempdima}{\@nameuse{\InTheoType Symbol}}%
- \MH_addtolength:dn \@tempdima
- {\g_EQ_bottomtag_depth_dim+\mintagvsep}
- \setlength{\@tempdimb}
- {\g_EQ_bottomrow_depth_dim+\depthof{\EQ_outerbox:{}}
- +\depthof{\EQ_innerbox:{}}}
- \if_dim:w \@tempdima>\@tempdimb
- \MH_setlength:dn \@tempdima{-\dp\EQ_mathdisplay_box
- -\@tempdima+\g_EQ_bottomrow_depth_dim}
- \addtolength{\@tempdima}{\depthof{\EQ_innerbox:{}}}%
- \def\EQ_next:{\raisebox{\@tempdima}}%
- \else:
- \def\EQ_next:{
- \raisebox{-\dp\EQ_mathdisplay_box
- -\depthof{\EQ_outerbox:{}}}}%
- \fi:\EQ_next:}}}}%
- \fi:}
-\MH_let:NwN \MT_nonumber: \nonumber
-\def\g_EQ_latest_nonzerodepth_row_fint{\z@}
-\renewcommand*\nonumber{
- \@tempcnta=\row@
- \if_num:w \l_EQ_equationtype_int=\thr@@
- \advance\@tempcnta\m@ne
- \else:
- \if_num:w \l_EQ_equationtype_int=4\relax
- \advance\@tempcnta\m@ne
- \fi:
- \fi:
- \if_num:w \g_EQ_latest_nonzerodepth_row_fint=\@tempcnta
- \else:
- \global\g_EQ_bottomtag_depth_dim=-\baselineskip
- \fi:
- \MT_nonumber:
-}
-\endinput
-%%
-%% End of file `ntheorem.fix'.
diff --git a/Master/tlpkg/bin/ctan2tds b/Master/tlpkg/bin/ctan2tds
index ad6076e5d40..be35ca9fb8e 100755
--- a/Master/tlpkg/bin/ctan2tds
+++ b/Master/tlpkg/bin/ctan2tds
@@ -220,7 +220,6 @@ chdir $startdir || die "chdir($startdir) failed: $!"; # back to raw
'metauml', "&MAKEmetauml",
'mflogo', "&MAKEmflogo",
'mfpic', "&MAKEflatten",
- 'mh', "&MAKEflatten",
'minitoc', "&MAKEunzip",
'misc', "&MAKEmisc",
'mkbangtex', "die 'skipping, no copyright (and python)'",
@@ -707,6 +706,7 @@ $standarddocfmt='latex';
'lettre', 'NULL',
'localloc', 'localloc.dtx',
'makecell', 'makecell.dtx',
+ 'mh', '.*\.dtx',
'minitoc', 'NULL', # takes forever, and files are pregenerated
'namespc', 'namespc.dtx',
'paper', 'install.02',
@@ -720,12 +720,13 @@ $standardins='\.ins';
%specialinsrunner = (
'bullcntr', 'latex', # requires interaction, ugh
+ 'mh', 'etex',
);
$standardinsrunner="latex -interaction=nonstopmode";
%specialins_postdelete = (
'dateiliste', 'dateiliste.README*', # already in dist
- 'ednotes', 'perpage.sty', # copy from bigfoor
+ 'ednotes', 'perpage.sty', # copy from bigfoot
'gfsartemisia', 'A*Specimen.pdf', # nonfree
'gfsbodoni', 'B*Specimen.pdf', # nonfree
'gfscomplutum', 'C*Specimen.pdf', # nonfree
@@ -734,6 +735,7 @@ $standardinsrunner="latex -interaction=nonstopmode";
'jknapltx', 'ubbold.fd', # clashes with Ubbold.fd from bbold,
# plus sauter bbold doesn't work?
'mathexam', 'sample.tex~',
+ 'mh', '*.drv *.ins', # derived from dtx's
);
%specialmakeindex= (
@@ -812,7 +814,6 @@ $standardtex='\.cfg|\.sty|\.clo|\.ldf|\.cls|\.def|\.fd$';
'metatex', 'metatex.tex',
'mff', '\.sty|mf[^f].*\.tex',
'mfpic', 'mfpic.tex|mfpic.sty|mfppatch.tex',
- 'mh', '\.sty|\.cls|\.fix',
'minitoc', "\.ml[do]|$standardtex",
'misc', '\.sty|\.ltx|\.cls',
'mkpattern', 'mkpatter.tex',
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 87d2300d57e..7c4d6003e4c 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -111,7 +111,7 @@ my @WorkingTLP = qw(
makeplot maple marginnote marvosym mathdots mathexam
mathmode maybemath
mcaption mceinleger mdwtools memoir MemoirChapStyles mentis
- menu metaobj metaplot metatex metauml mff mfpic mftinc mhchem
+ menu metaobj metaplot metatex metauml mff mfpic mftinc mh mhchem
mhs microtype minipage-marginpar minitoc minutes mkpattern
mla-paper mlist mnsymbol
moderncv mongolian-babel moreverb movie15 mp3d ms msg multicap