summaryrefslogtreecommitdiff
path: root/macros/lamstex/inputs/islands.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/lamstex/inputs/islands.tex')
-rw-r--r--macros/lamstex/inputs/islands.tex579
1 files changed, 579 insertions, 0 deletions
diff --git a/macros/lamstex/inputs/islands.tex b/macros/lamstex/inputs/islands.tex
new file mode 100644
index 0000000000..f23b835640
--- /dev/null
+++ b/macros/lamstex/inputs/islands.tex
@@ -0,0 +1,579 @@
+\catcode`\@=11
+\def\Figureproofing{\figproofing@true}
+\def\noFigureproofing{\figproofing@false}
+\def\Hbyw#1{\global\Hby@true\hbyw\vsize{#1}}
+\def\hbyw#1#2{%
+ \hbox{%
+ \ifHby@
+ \else
+ \iffigproofing@
+ \setbox\z@\vbox{\hrule\width5\p@}\ht\z@\z@
+ \vbox to#1{\hrule\height5\p@\width.4\p@\vfil\hrule\height5\p@\width.4\p@}%
+ \kern-.4\p@\rlap{\copy\z@}\raise#1\hbox{\rlap{\copy\z@}}%
+ \fi
+ \fi
+ \vbox to#1{\hbox to#2{}\vfil}%
+ \ifHby@
+ \else
+ \iffigproofing@
+ \vbox to#1{\hrule\height5\p@\width.4\p@\vfil\hrule\height5\p@\width.4\p@}%
+ \kern-.4\p@\llap{\copy\z@}\raise#1\hbox{\llap{\boxz@}}%
+ \fi
+ \fi}}
+\def\island@@@P{\csname\exxx@\islandtype@ @P\endcsname}
+\def\island@@@Q{\csname\exxx@\islandtype@ @Q\endcsname}
+\def\island@@@S{\csname\exxx@\islandtype@ @S\endcsname}
+\def\island@@@N{\csname\exxx@\islandtype@ @N\endcsname}
+\def\island@@@F{\csname\exxx@\islandtype@ @F\endcsname}
+\def\island@@@C{\csname island@C\islandclass@\endcsname}
+\def\island{%
+ \ifplace@
+ \DN@{\let\islandclass@\empty\def\islandtype@{\island}\FN@\island@}%
+ \else
+ \long\DN@##1\endisland{\Err@{\noexpand\island must be used after some
+ type of \string\...place}}%
+ \fi
+ \next@}
+\def\island@{\ifx\next\c\let\next@\island@c\else
+ \DN@{\FN@\island@@}\fi\next@}
+\def\island@@{\ifcat\bgroup\noexpand\next\let\next@\island@@@\else
+ \DN@{\Err@{\noexpand\island must be followed by a {prefix} for
+ \string\caption's}}\fi\next@}
+\def\island@@@#1{\def\captionprefix@{#1}\captioncount@\z@
+ \global\setbox\islandbox@\vbox\bgroup}
+\def\island@c\c#1{%
+ \ifplace@
+ \DN@{\def\islandclass@{#1}%
+ \expandafter\ifx\csname island@C#1\endcsname\relax
+ \expandafter\newcount@\csname island@C#1\endcsname
+ \global\csname island@C#1\endcsname\z@\fi
+ \FNSS@\island@c@}%
+ \else
+ \DN@{\edef\next@{\long\def\noexpand\next@########1\expandafter\noexpand
+ \csname end\exxx@\islandtype@\endcsname{\noexpand\Err@{\noexpand\noexpand
+ \expandafter\noexpand
+ \islandtype@ must be used after some type of \noexpand\string
+ \noexpand\...place}}}\next@\next@}%
+ \fi
+ \next@}
+\def\island@c@{%
+ \ifcat\bgroup\noexpand\next
+ \let\next@\island@c@@
+ \else
+ \DN@{\Err@{\noexpand\island\string\c{\expandafter\string\islandclass@} must
+ be followed by a {prefix} for \string\caption's}}%
+ \fi\next@}
+\def\island@c@@#1{\def\captionprefix@{#1}%
+ \captioncount@\z@\global\setbox\islandbox@\vbox\bgroup}
+\def\caption{%
+ \ifnum\captioncount@=\z@
+ \ifnopunct@
+ \DN@{\egroup\nopunct@true}%
+ \else
+ \let\next@\egroup
+ \fi
+ \else
+ \let\next@\relax
+ \fi
+ \next@
+ \advance\captioncount@\@ne
+ \FN@\caption@}
+\def\caption@{\ifx\next"\expandafter\caption@q\else\expandafter\caption@@\fi}
+\def\caption@q"#1"{\quoted@true
+ {\noexpands@
+ \let\pre\island@@@P\let\post\island@@@Q
+ \let\style\island@@@S\let\numstyle\island@@@N
+ \Qlabel@{#1}\let\style\relax\xdef\Qlabel@@@@{#1}}%
+ \finishcaption@}
+\def\caption@@{\quoted@false
+ \global\advance\island@@@C\@ne
+ {\noexpands@
+ \xdef\Thelabel@@@{\number\island@@@C}%
+ \xdefThelabel@\island@@@N
+ \xdef\Thelabel@@@@{\island@@@P\Thelabel@\island@@@Q}%
+ \xdefThelabel@@\island@@@S
+ \xdef\Thepref@{\Thelabel@@@@}}%
+ \finishcaption@}
+\long\def\widerthanisland@#1#2#3{\test@true\setbox\z@\vbox{\hsize\maxdimen
+ \noindent@@\captionformat@{#1}{#2}{#3}\par\setboxzl@}%
+ \ifdim\wdz@=\z@
+ \global\setbox\captionbox@\hbox{\noset@\unlabel@
+ \captionformat@{#1}{#2}{#3}}%
+ \ifdim\wd\captionbox@>\wd\islandbox@\else\test@false\fi
+ \fi}
+\long\def\captionformat@@#1#2#3{\widerthanisland@{#1}{#2}{#3}%
+ \iftest@
+ \global\setbox\captionbox@\vbox{\hsize\wd\islandbox@
+ \vskip-\parskip\noindent@@\noset@\unlabel@
+ \captionformat@{#1}{#2}{#3}\par}%
+ \else
+ \global\setbox\captionbox@
+ \hbox to\wd\islandbox@{\hfil\box\captionbox@\hfil}%
+ \fi}
+\long\def\finishcaption@#1{\def\entry@{#1}%
+ {\locallabel@
+ \captionformat@@
+ {\expandafter\ignorespaces\captionprefix@\unskip}%
+ {\ifx\thelabel@@\empty\unskip\else\thelabel@@\fi}%
+ {\ignorespaces#1\unskip}%
+ \ifnum\captioncount@=\@ne
+ \global\setbox\islandbox@\vbox{\ticwrite@\vbox{\box\islandbox@}}%
+ \global\setbox\Captionbox@\vbox{\box\captionbox@}%
+ \else
+ \global\setbox\islandbox@\vbox{\unvbox\islandbox@\setboxzl@
+ \ticwrite@\boxz@}%
+ \global\setbox\Captionbox@\vbox{\unvbox\Captionbox@
+ \smallskip\box\captionbox@}%
+ \fi}%
+ \nopunct@false\nospace@false}
+\def\Sixtic@{\ifx\macdef@\empty\else
+ \DN@##1##2\next@{\def\macdef@{##1##2}}%
+ \expandafter\next@\macdef@\next@
+ \edef\next@
+ {\noexpand\six@\tic@\macdef@
+ \space\space\space\space\space\space\space\space\space\space\space\space
+ \noexpand\six@}%
+ \next@\let\macdef@\relax\fi}
+\def\ticwrite@{%
+ \iftoc@
+ {\noexpands@\let\style\relax
+ \DN@{\island}%
+ \edef\next@{\write\tic@{%
+ \ifnopunct@\noexpand\noexpand\noexpand\nopunct\fi
+ \ifx\islandtype@\next@\noexpand\noexpand\noexpand\island
+ \noexpand\string\noexpand\c{\islandclass@}{\captionprefix@}%
+ {\QorThelabel@@@@}\else\noexpand\noexpand\expandafter\noexpand
+ \islandtype@{\QorThelabel@@@@}}\fi}%
+ \next@}%
+ \expandafter\unmacro@\meaning\entry@\unmacro@
+ \Sixtic@
+ \write\tic@{\noexpand\Page{\number\pageno}{\page@N}{\page@P}{\page@Q}^^J}%
+ \fi}
+\def\Htrim@#1{%
+ \ifHby@
+ \dimen@\vsize
+ \ifnum\captioncount@=\z@
+ \else
+ \advance\dimen@-\ht\Captionbox@
+ \advance\dimen@-#1%
+ \fi
+ \global\Hby@false
+ \dimen@ii\wd\islandbox@
+ \global\setbox\islandbox@\vbox
+ {\unvbox\islandbox@\setboxzl@
+ \vbox to\z@{\vss\boxz@}\nointerlineskip\hbyw\dimen@\dimen@ii}%
+ \global\Hby@true
+ \fi}
+\def\iclasstest@#1{\DN@{#1}\ifx\next@\islandclass@
+ \test@true\else\test@false\fi}
+\def\endisland{\ifnum\captioncount@=\z@\expandafter\egroup\fi
+ \ifdata@
+ \else
+ \iclasstest@{T}%
+ \iftest@
+ {\rm\global\skipi@-\dp\strutbox}\global\advance\skipi@\bigskipamount
+ \Htrim@\skipi@
+ \global\setbox\islandbox@\vbox
+ {\ifnum\captioncount@=\z@\else
+ \box\Captionbox@
+ \nointerlineskip
+ \vskip\skipi@\fi
+ \box\islandbox@}%
+ \else
+ {\rm\global\skipi@\dp\strutbox}\global\advance\skipi@\medskipamount
+ \Htrim@\skipi@
+ \global\setbox\islandbox@\vbox
+ {\box\islandbox@
+ \ifnum\captioncount@=\z@\else
+ \nointerlineskip
+ \vskip\skipi@
+ \box\Captionbox@
+ \fi}%
+ \fi
+ \ifHby@
+ \else
+ \dimen@\ht\islandbox@\advance\dimen@\dp\islandbox@
+ \ifdim\dimen@>\vsize
+ \DN@{\island}%
+ \Err@{%
+ \ifx\islandtype@\next@\noexpand\island\else
+ \expandafter\noexpand\islandtype@\fi
+ \ifnum\captioncount@=\z@\else
+ with \noexpand\caption\fi
+ is larger than page}%
+ \ht\islandbox@=\vsize
+ \fi
+ \fi
+ \fi
+ \global\Hby@false\island@true}
+\def\newisland#1\c#2#3{\define#1{}%
+ \iftoc@\immediate\write\tic@{\noexpand\newisland\noexpand#1%
+ \string\c{#2}{#3}^^J}\fi
+ \expandafter\def\csname\exstring@#1@S\endcsname{\island@S}%
+ \expandafter\def\csname\exstring@#1@N\endcsname{\island@N}%
+ \expandafter\def\csname\exstring@#1@P\endcsname{\island@P}%
+ \expandafter\def\csname\exstring@#1@Q\endcsname{\island@Q}%
+ \expandafter\def\csname\exstring@#1@F\endcsname{\island@F}%
+ \expandafter\def\csname end\exstring@#1\endcsname{\endisland}%
+ \expandafter
+ \ifx\csname island@C#2\endcsname\relax
+ \expandafter\newcount@\csname island@C#2\endcsname
+ \global\csname island@C#2\endcsname\z@
+ \fi
+ \edef\next@{\noexpand\expandafter\noexpand\let\noexpand
+ \csname\exstring@#1@C\noexpand\endcsname
+ \csname island@C#2\endcsname}%
+ \next@
+ \def#1{\def\islandtype@{#1}\island@c\c{#2}{#3}}}
+\newisland\Figure\c{F}{Figure}
+\newisland\Table\c{T}{Table}
+\long\def\islandpairdata#1#2{{\data@true
+ \place@true
+ #1%
+ \global\setbox\islandboxi\box\islandbox@
+ \global\setbox\captionboxi\box\Captionbox@
+ #2%
+ \global\setbox\islandboxii\box\islandbox@
+ \global\setbox\captionboxii\box\Captionbox@
+ }}
+\long\def\islandpairbox#1#2{\islandpairdata{#1}{#2}%
+ \dimen@\ht\captionboxi
+ \ifdim\ht\captionboxii>\dimen@\dimen@\ht\captionboxii\fi
+ \ifdim\dimen@>\z@
+ \ifdim\ht\captionboxi<\dimen@
+ \global\setbox\captionboxi\vbox to\dimen@{\unvbox\captionboxi\vfil}\fi
+ \ifdim\ht\captionboxii<\dimen@
+ \global\setbox\captionboxii\vbox to\dimen@{\unvbox\captionboxii\vfil}\fi
+ \fi
+ \global\setbox\islandbox@\vbox
+ {\hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil}%
+ \ifdim\dimen@>\z@\nointerlineskip
+ {\rm\global\skipi@\dp\strutbox}\global\advance\skipi@\medskipamount
+ \vskip\skipi@
+ \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil}\fi}}
+\long\def\islandpairboxa#1#2{\islandpairdata{#1}{#2}%
+ \dimen@\ht\captionboxi
+ \ifdim\ht\captionboxii>\dimen@\dimen@\ht\captionboxii\fi
+ \ifdim\dimen@>\z@
+ \ifdim\ht\captionboxi<\dimen@
+ \global\setbox\captionboxi\vbox to\dimen@{\vfil\unvbox\captionboxi}\fi
+ \ifdim\ht\captionboxii<\dimen@
+ \global\setbox\captionboxii\vbox to\dimen@{\vfil\unvbox\captionboxii}\fi
+ \fi
+ \dimen@ii\ht\islandboxi
+ \ifdim\ht\islandboxii>\dimen@ii \dimen@ii\ht\islandboxii\fi
+ \ifdim\dimen@ii>\z@
+ \ifdim\ht\islandboxi<\dimen@ii
+ \global\setbox\islandboxi\vbox to\dimen@ii{\box\islandboxi\vfil}\fi
+ \ifdim\ht\islandboxii<\dimen@ii
+ \global\setbox\islandboxii\vbox to\dimen@ii{\box\islandboxii\vfil}\fi
+ \fi
+ \global\setbox\islandbox@\vbox{\ifdim\dimen@>\z@
+ \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil}%
+ \nointerlineskip{\rm\global\skipi@-\dp\strutbox}%
+ \global\advance\skipi@\bigskipamount\vskip\skipi@\fi
+ \hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil}}}
+\long\def\islandtripledata#1#2#3{{\data@true\place@true
+ #1%
+ \global\setbox\islandboxi\box\islandbox@
+ \global\setbox\captionboxi\box\Captionbox@
+ #2%
+ \global\setbox\islandboxii\box\islandbox@
+ \global\setbox\captionboxii\box\Captionbox@
+ #3%
+ \global\setbox\islandboxiii\box\islandbox@
+ \global\setbox\captionboxiii\box\Captionbox@
+ }}
+\long\def\islandtriplebox#1#2#3{\islandtripledata{#1}{#2}{#3}%
+ \dimen@\ht\captionboxi
+ \ifdim\ht\captionboxii>\dimen@ \dimen@\ht\captionboxii\fi
+ \ifdim\ht\captionboxiii>\dimen@ \dimen@\ht\captionboxiii\fi
+ \ifdim\dimen@>\z@
+ \ifdim\ht\captionboxi<\dimen@
+ \global\setbox\captionboxi\vbox to\dimen@{\unvbox\captionboxi\vfil}\fi
+ \ifdim\ht\captionboxii<\dimen@
+ \global\setbox\captionboxii\vbox to\dimen@{\unvbox\captionboxii\vfil}\fi
+ \ifdim\ht\captionboxiii<\dimen@
+ \global\setbox\captionboxiii\vbox to\dimen@{\unvbox\captionboxiii\vfil}\fi
+ \fi
+ \global\setbox\islandbox@\vbox
+ {\hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil
+ \box\islandboxiii\hfil}%
+ \ifdim\dimen@>\z@\nointerlineskip
+ {\rm\global\skipi@\dp\strutbox}\global\advance\skipi@\medskipamount
+ \vskip\skipi@
+ \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil
+ \box\captionboxiii\hfil}\fi}}
+\def\islandtripleboxa#1#2#3{\islandtripledata{#1}{#2}{#3}%
+ \dimen@\ht\captionboxi
+ \ifdim\ht\captionboxii>\dimen@ \dimen@\ht\captionboxii\fi
+ \ifdim\ht\captionboxiii>\dimen@ \dimen@\ht\captionboxiii\fi
+ \ifdim\dimen@>\z@
+ \ifdim\ht\captionboxi<\dimen@
+ \global\setbox\captionboxi\vbox to\dimen@{\vfil\unvbox\captionboxi}\fi
+ \ifdim\ht\captionboxii<\dimen@
+ \global\setbox\captionboxii\vbox to\dimen@{\vfil\unvbox\captionboxii}\fi
+ \ifdim\ht\captionboxiii<\dimen@
+ \global\setbox\captionboxiii\vbox to\dimen@{\vfil\unvbox\captionboxiii}\fi
+ \fi
+ \dimen@ii\ht\islandboxi
+ \ifdim\ht\islandboxii>\dimen@ii \dimen@ii\ht\islandboxii\fi
+ \ifdim\ht\islandboxiii>\dimen@ii \dimen@ii\ht\islandboxiii\fi
+ \ifdim\dimen@ii>\z@
+ \ifdim\ht\islandboxi<\dimen@ii
+ \global\setbox\islandboxi\vbox to\dimen@ii{\box\islandboxi\vfil}\fi
+ \ifdim\ht\islandboxii<\dimen@ii
+ \global\setbox\islandboxii\vbox to\dimen@ii{\box\islandboxii\vfil}\fi
+ \ifdim\ht\islandboxiii<\dimen@ii
+ \global\setbox\islandboxiii\vbox to\dimen@ii{\box\islandboxiii\vfil}\fi
+ \fi
+ \global\setbox\islandbox@\vbox
+ {\ifdim\dimen@>\z@
+ \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil
+ \box\captionboxiii\hfil}%
+ \nointerlineskip{\rm\global\skipi@-\dp\strutbox}%
+ \global\advance\skipi@\bigskipamount\vskip\skipi@\fi
+ \hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil
+ \box\islandboxiii\hfil}}}
+\def\Figurepair#1\and#2\endFigurepair{\island@true
+ \islandpairbox{\Figure#1\endFigure}{\Figure#2\endFigure}}
+\def\Figuretriple#1\and#2\and#3\endFiguretriple{\island@true
+ \islandtriplebox{\Figure#1\endFigure}{\Figure#2\endFigure}%
+ {\Figure#3\endFigure}}
+\def\Tablepair#1\and#2\endTablepair{\island@true
+ \islandpairboxa{\Table#1\endTable}{\Table#2\endTable}}
+\def\Tabletriple#1\and#2\and#3\endTabletriple{\island@true
+ \islandtripleboxa{\Table#1\endTable}{\Table#2\endTable}%
+ {\Table#3\endTable}}
+\def\place#1{\place@true\island@false
+ #1%
+ \ifisland@
+ \box\islandbox@
+ \else
+ \Err@{Whoa ... there's no \string\Figure, \string\Table,
+ etc., here}%
+ \fi
+ \place@false}
+\def\storedim@{\global\setbox\topinsdims@
+ \vbox{\hbox to\dimen@{}\unvbox\topinsdims@}}
+\def\advancedimtopins@{%
+ \ifnum\pageno=\@ne
+ \else
+ \advance\dimen@\dimen\topins
+ \global\dimen\topins\dimen@
+ \fi}
+\def\Par{\par\global\csname Parprev1\endcsname\prevdepth
+ \global\Parcount@\@ne
+ \global\Par@true\global\let\Parlist@\empty
+ \global\setbox\Parbox@\vbox\bgroup\break}
+\def\place@#1#2{%
+ \ifisland@
+ \ifhmode
+ \ifPar@
+ \ifnum\Parcount@>5
+ \Err@{Only 5 \string\place's allowed per
+ \string\Par...\noexpand\endPar paragraph}%
+ \else
+ \expandafter\expandafter\expandafter
+ \global\expandafter\setbox
+ \csname Parfigbox\number\Parcount@\endcsname\box\islandbox@
+ \global\advance\Parcount@\@ne
+ \xdef\Parlist@{\Parlist@#1}%
+ \fi
+ \else
+ \vadjust{#2}%
+ \fi
+ \else
+ #2%
+ \fi
+ \else
+ \Err@{Whoa ... there's no \string\Figure,
+ \string\Table, etc., here}%
+ \fi
+ \place@false}
+\long\def\Aplace#1{\prevanish@
+ \place@true\island@false
+ #1%
+ \place@ a\Aplace@
+ \postvanish@}
+\long\def\AAplace#1{\prevanish@\place@true\island@false
+ #1%
+ \place@ A\AAplace@
+ \postvanish@}
+\def\AAplace@{\AA@true\Aplace@\AA@false}
+\def\Aplace@{\allowbreak
+ \dimen@=\ht\islandbox@
+ \advance\dimen@\abovebotfigskip
+ \ht\islandbox@\dimen@
+ \advance\dimen@\dp\islandbox@
+ \storedim@
+ \ifAA@
+ \xdef\AAlist@{\AAlist@1}%
+ \advancedimtopins@
+ \else
+ \xdef\AAlist@{\AAlist@0}%
+ \ifnum\topinscount@>\@ne\else\advancedimtopins@\fi
+ \fi
+ \insert\topins{\penalty\z@\splittopskip\z@\floatingpenalty\z@
+ \box\islandbox@}%
+ \global\advance\topinscount@\@ne}
+\long\def\Bplace#1{\prevanish@\place@true\island@false
+ #1%
+ \place@ b\Bplace@
+ \postvanish@}
+\def\Bplace@{\allowbreak
+ \ifnum\topinscount@=\z@
+ \setbox\z@\vbox{\vbox to-\belowtopfigskip{}}%
+ \dimen@-\skip\topins
+ \ht\z@\dimen@
+ \storedim@
+ \advancedimtopins@
+ \insert\topins{\boxz@}%
+ \global\advance\topinscount@\@ne
+ \xdef\AAlist@{\AAlist@0}%
+ \fi
+ \dimen@\ht\islandbox@
+ \advance\dimen@\abovebotfigskip
+ \ht\islandbox@\dimen@
+ \advance\dimen@\dp\islandbox@
+ \storedim@
+ \xdef\AAlist@{\AAlist@0}%
+ \ifnum\topinscount@>\@ne\else\advancedimtopins@\fi
+ \insert\topins{\penalty\z@\splittopskip\z@
+ \floatingpenalty\z@
+ \box\islandbox@}%
+ \global\advance\topinscount@\@ne}
+\def\Place@#1#2{%
+ \ifisland@
+ \ifhmode
+ \ifPar@
+ \ifnum\Parcount@>5
+ \Err@{Only 5 \string\place's allowed per
+ \string\Par...\noexpand\endPar paragraph}%
+ \else
+ \expandafter\expandafter\expandafter\global\expandafter\setbox
+ \csname Parfigbox\number\Parcount@\endcsname\box\islandbox@
+ \global\advance\Parcount@\@ne
+ \xdef\Parlist@{\Parlist@#1}%
+ \vadjust{\break}%
+ \fi
+ \else
+ \Err@{\noexpand#2allowed only in a \string\Par...\noexpand\endPar
+ paragraph}%
+ \fi
+ \else
+ #2%
+ \fi
+ \else
+ \Err@{Who ... there's no \string\Figure, \string\Table,
+ etc., here}%
+ \fi
+ \place@false}
+\long\def\Cplace#1{\prevanish@\place@true\island@false
+ #1%
+ \Place@ c\Cplace@
+ \postvanish@}
+\def\Cplace@{\allowbreak
+ \ifnum\topinscount@>\z@\else
+ \global\C@true\global\Cdim@\pagetotal\fi
+ \Aplace@}
+\long\def\Mplace#1{\prevanish@\place@true\island@false
+ #1%
+ \Place@ m\Mplace@
+ \postvanish@}
+\long\def\MXplace#1{\prevanish@\place@true\island@false
+ #1%
+ \Place@ M\MXplace@
+ \postvanish@}
+\def\MXplace@{\MX@true\Mplace@\MX@false}
+\def\Mplace@{\allowbreak
+ \dimen@\ht\islandbox@\advance\dimen@\dp\islandbox@
+ \ifdim\pagetotal=\z@\else
+ \ifdim\lastskip<\abovebotfigskip\advance\dimen@\abovebotfigskip
+ \advance\dimen@-\lastskip\fi
+ \fi
+ \advance\dimen@\pagetotal
+ \ifdim\dimen@>\pagegoal
+ \Aplace@
+ \else
+ \nointerlineskip
+ \ifdim\lastskip<\abovebotfigskip\removelastskip\vskip\abovebotfigskip\fi
+ \setbox\z@\vbox{\unvbox\islandbox@
+ \breakisland@}%
+ \printisland@
+ \ifnum\topinscount@=\z@
+ \setbox\z@\vbox{\vbox to-\belowtopfigskip{}}%
+ \dimen@-\skip\topins
+ \ht\z@\dimen@
+ \storedim@
+ \advancedimtopins@
+ \insert\topins{\boxz@}%
+ \global\advance\topinscount@\@ne
+ \xdef\AAlist@{\AAlist@0}%
+ \fi
+ \ifMX@
+ \ifnum\topinscount@=\@ne
+ \setbox\z@\vbox{\vbox to-\abovebotfigskip{}}%
+ \ht\z@\z@
+ \dimen@\z@
+ \storedim@
+ \advancedimtopins@
+ \insert\topins{\boxz@}%
+ \global\advance\topinscount@\@ne
+ \xdef\AAlist@{\AAlist@0}%
+ \fi
+ \fi
+ \nointerlineskip
+ \vskip\belowtopfigskip
+ \fi}
+\def\endPar{\egroup
+ \count@\@ne
+ {\vbadness\@M\vfuzz\maxdimen\splitmaxdepth\maxdimen\splittopskip\ht\strutbox
+ \setbox\z@\vsplit\Parbox@ to\ht\Parbox@
+ \loop
+ \ifnum\count@<\Parcount@
+ \expandafter\expandafter\expandafter\global\expandafter\setbox
+ \csname Parbox\number\count@\endcsname\vsplit\Parbox@ to\ht\Parbox@
+ \count@@\count@\advance\count@@\@ne
+ \global\csname Parprev\number\count@@\endcsname
+ \dp\csname Parbox\number\count@\endcsname
+ \advance\count@\@ne
+ \repeat}%
+ \vskip\parskip
+ \count@\@ne
+ \def\nextv@##1##2\nextv@{\DN@{##1}\gdef\Parlist@{##2}}%
+ \loop
+ \ifnum\count@<\Parcount@
+ \dimen@\csname Parprev\number\count@\endcsname
+ \advance\dimen@\ht\strutbox
+ \ifdim\dimen@<\baselineskip
+ \advance\dimen@-\baselineskip\vskip-\dimen@
+ \else
+ \vskip\lineskip
+ \fi
+ \unvbox\csname Parbox\number\count@\endcsname
+ \global\setbox\islandbox@\box\csname Parfigbox\number\count@\endcsname
+ \expandafter\nextv@\Parlist@\nextv@
+ \if a\next@\Aplace@\else
+ \if A\next@\AAplace@\else
+ \if b\next@\Bplace@\else
+ \if c\next@\Cplace@\else
+ \if m\next@\Mplace@\else
+ \if M\next@\MXplace@\fi\fi\fi\fi\fi\fi
+ \advance\count@\@ne
+ \repeat
+ \global\Par@false
+ \ifvoid\Parbox@
+ \prevdepth\csname Parprev\number\count@\endcsname
+ \else
+ \dimen@\csname Parprev\number\count@\endcsname\advance\dimen@\ht\strutbox
+ \ifdim\dimen@<\baselineskip
+ \advance\dimen@-\baselineskip\vskip-\dimen@
+ \else
+ \vskip\lineskip
+ \fi
+ \dimen@\dp\Parbox@
+ \unvbox\Parbox@
+ \prevdepth\dimen@
+ \fi}
+\catcode`\@=\active