% lollipop-floats.tex copyright 1992/3 Victor Eijkhout % copyright 2014 Vafa Khalighi % % % This program is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. % % This program is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. % % You should have received a copy of the GNU General Public License % along with this program. If not, see . % % % these macros handle inserts for the Lollipop format %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%% Floating insertions %%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \@GenericConstruct{Insertion} \NewTrace:ins \@InsertionOption{location}{ \switch {\if\EqualString{#1}} {top} {} {bot} {} {mid} {} {default} {\Wmessage{Unknown qualifier: }} \endswitch} \newif\ifsplit@insert \add@Insertion@default{\split@insertno} \@InsertionOption{split}{ \switch {\if\EqualString{#1}} {no} {\split@insertno} {default} {\split@insertyes} \endswitch} \def\@DefineInsertion{ \csarg\newinsert{\@name @ins} \csarg\edef{\@name}{\insert\CSname{\@name @ins} \ifsplit@insert\else\vbox\fi % make this a box if no split allowed \bgroup \the\before@coms } \@DefineStopCommand{\the\after@coms \egroup} } \endinput \newinsert\footins \def\footnote#1{\let\@sf\empty % parameter #2 (the text) is read later \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi #1\@sf\vfootnote{#1}} \def\vfootnote#1{\insert\footins\bgroup \interlinepenalty\interfootnotelinepenalty \splittopskip\ht\strutbox % top baseline for broken footnotes \splitmaxdepth\dp\strutbox \floatingpenalty\@MM \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip \textindent{#1}\footstrut\futurelet\next\fo@t} \def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t \else\let\next\f@t\fi \next} \def\f@@t{\bgroup\aftergroup\@foot\let\next} \def\f@t#1{#1\@foot} \def\@foot{\strut\egroup} \def\footstrut{\vbox to\splittopskip{}} \skip\footins=\bigskipamount % space added when footnote is present \count\footins=1000 % footnote magnification factor (1 to 1) \dimen\footins=8in % maximum footnotes per page \newif\ifp@ge \newif\if@mid \let\p@getrue=\p@geyes \let\p@gefalse=\p@geno \let\@midtrue=\@midyes \let\@midfalse=\@midno \def\topinsert{\@midfalse\p@gefalse\@ins} \def\midinsert{\@midtrue\@ins} \def\pageinsert{\@midfalse\p@getrue\@ins} \skip\topins=\z@skip % no space added when a topinsert is present \count\topins=1000 % magnification factor (1 to 1) \dimen\topins=\maxdimen % no limit per page \def\@ins{\par\begingroup\setbox\z@\vbox\bgroup} % start a \vbox \def\endinsert{\egroup % finish the \vbox \if@mid \dimen@\ht\z@ \advance\dimen@\dp\z@ \advance\dimen@12\p@ \advance\dimen@\pagetotal \ifdim\dimen@>\pagegoal\@midfalse\p@gefalse\fi\fi \if@mid \bigskip\box\z@\bigbreak \else\insert\topins{\penalty100 % floating insertion \splittopskip\z@skip \splitmaxdepth\maxdimen \floatingpenalty\z@ \ifp@ge \dimen@\dp\z@ \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero \else \box\z@\nobreak\bigskip\fi}\fi\endgroup} \endinput