%% stfloats.sty %% Copyright 1997, 1999 Sigitas Tolu\v sis %% VTeX Ltd., Akademijos 4, Vilnius, Lithuania %% e-mail sigitas@vtex.lt %% http://www.vtex.lt/tex/download/macros/ %% % This program can redistributed and/or modified under the terms % of the LaTeX Project Public License Distributed from CTAN % archives in directory macros/latex/base/lppl.txt; either % version 1 of the License, or (at your option) any later version. % % PURPOSE: Improve float mechanism and baselineskip settings % % SHORT DESCRIPTION: % % (It is rewritten version of stkernel package) % % Provides new commands: % % \dblfloatsatbottom, \dblfloatsattop (removed!) % ----------------------------------- % Use instead optional parameters [b] and [t] % for dblfloat environments (default = [tbp]). % % \fnbelowfloat % ------------- % Puts footnotes below the bottom floats % % \fnunderfloat (default and standard) % ------------- % Puts footnotes under the bottom floats % % \setbaselinefloat % ----------------- % Allows baselineskip to stretch and shrink if \baselineskip % is set with command \@setfontsize. % Example: \@setfontsize\normalsize\@xpt{12pt plus .1pt minus .1pt}% % % \setbaselinefixed (default and standard) % Disables baselineskip to stretch and shrink even if \baselineskip % is set with command \@setfontsize. % Example: \@setfontsize\normalsize\@xpt{12pt plus .1pt minus .1pt}% % % Allows to use optional parameters [t] or [b] for dblfloats. % % \changes{1997/08/25}{first version} % \changes{1997/09/10}{standard LaTeX2e macros are used for dblfloats at top} % \changes{1997/10/01}{new commands: \fnbelowfloat and \fnunderfloat} % \changes{1998/09/21}{new commands: \setbaselinefloat and \setbaselinefixed} % \changes{1999/10/04}{changed dblfloat's output} % \changes{1999/10/22}{changed \output for older LaTeX distributions} % \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{stfloats}[1999/10/22] \gdef\@dblbotlist{} \newcount\@dblbotnum \newcount\c@dblbotnumber \setcounter{dblbotnumber}{2} \def\@dbflt#1{\@ifnextchar[{\@xdblfloat{#1}}{\@xdblfloat{#1}[tbp]}} \def \@dblfloatplacement {% \global \@dbltopnum \c@dbltopnumber \global \@dblbotnum \c@dblbotnumber \global \@dbltoproom \dbltopfraction\@colht \@textmin \@colht \advance \@textmin -\@dbltoproom \@fpmin \dblfloatpagefraction\textheight \@fptop \@dblfptop \@fpsep \@dblfpsep \@fpbot \@dblfpbot } \def\@addtodblcol{% \begingroup \@insertfalse \@setfloattypecounts \@getfpsbit \tw@ \ifodd\@tempcnta \@flsetnum \@dbltopnum \ifnum \@dbltopnum>\z@ \@tempswafalse \ifdim \@dbltoproom>\ht\@currbox \@tempswatrue \else \ifnum \@fpstype<\sixt@@n \advance \@dbltoproom \@textmin \ifdim \@dbltoproom>\ht\@currbox \@tempswatrue \fi \advance \@dbltoproom -\@textmin \fi \fi \if@tempswa \@bitor \@currtype \@dbldeferlist \if@test \else \@bitor \@currtype \@dblbotlist \if@test \else \@tempdima -\ht\@currbox \advance\@tempdima -\ifx \@dbltoplist\@empty \dbltextfloatsep \else \dblfloatsep \fi \global \advance \@dbltoproom \@tempdima \global \advance \@colht \@tempdima \global \advance \@dbltopnum \m@ne \@cons \@dbltoplist \@currbox \@inserttrue \fi \fi \fi \fi \fi \if@insert \else \@getfpsbit 4\relax \ifodd\@tempcnta \@flsetnum \@dblbotnum \ifnum \@dblbotnum>\z@ \@tempswafalse \ifdim \@dbltoproom>\ht\@currbox \@tempswatrue \else \ifnum \@fpstype<\sixt@@n \advance \@dbltoproom \@textmin \ifdim \@dbltoproom>\ht\@currbox \@tempswatrue \fi \advance \@dbltoproom -\@textmin \fi \fi \if@tempswa \@bitor \@currtype \@dbldeferlist \if@test \else \@tempdima -\ht\@currbox \advance\@tempdima -\ifx \@dblbotlist\@empty \dbltextfloatsep \else \dblfloatsep \fi \global \advance \@dbltoproom \@tempdima \global \advance \@colht \@tempdima \global \advance \@dblbotnum \m@ne \@cons \@dblbotlist \@currbox \@inserttrue \fi \fi \fi \fi \if@insert \else \@cons\@dbldeferlist\@currbox \fi \fi \endgroup } \def\@combinedblfloats{% \ifx \@dbltoplist\@empty \else \@cdblflt \fi \ifx \@dblbotlist\@empty \else \@cdblflb \fi } \def\@cdblflt{% \setbox\@tempboxa \vbox{}% \let \@elt \@comdblflelt \@dbltoplist \let \@elt \relax \xdef \@freelist {\@freelist\@dbltoplist}% \global\let \@dbltoplist \@empty \setbox\@outputbox \vbox% to\textheight {%\boxmaxdepth\maxdepth %% probably not needed, CAR \unvbox\@tempboxa\vskip-\dblfloatsep \ifnum \@dbltopnum>\m@ne \dblfigrule \fi \vskip \dbltextfloatsep \unvbox \@outputbox }% } \def\@cdblflb{% \setbox\@tempboxa \vbox{}% \let \@elt \@comdblflelt \@dblbotlist \let \@elt \relax \xdef \@freelist {\@freelist\@dblbotlist}% \global\let \@dblbotlist \@empty \setbox\@outputbox \vbox% to\textheight {%\boxmaxdepth\maxdepth %% probably not needed, CAR \unvbox\@outputbox \vskip \dbltextfloatsep \ifnum \@dblbotnum>\m@ne \dblfigrule \fi \unvbox\@tempboxa \vskip -\dblfloatsep }% } \def \@doclearpage {% \ifvoid\footins \setbox\@tempboxa\vsplit\@cclv to\z@ \unvbox\@tempboxa \setbox\@tempboxa\box\@cclv \xdef\@deferlist{\@toplist\@botlist\@deferlist}% \global \let \@toplist \@empty \global \let \@botlist \@empty \global \@colroom \@colht \ifx \@currlist\@empty \else \@latexerr{Float(s) lost}\@ehb \global \let \@currlist \@empty \fi \@makefcolumn\@deferlist \@whilesw\if@fcolmade \fi{\@opcol\@makefcolumn\@deferlist}% \if@twocolumn \if@firstcolumn \xdef\@dbldeferlist{\@dbltoplist\@dblbotlist\@dbldeferlist}% \global \let \@dbltoplist \@empty \global \let \@dblbotlist \@empty \global \@colht \textheight \begingroup \@dblfloatplacement \@makefcolumn\@dbldeferlist \@whilesw\if@fcolmade \fi{\@outputpage \@makefcolumn\@dbldeferlist}% \endgroup \else \vbox{}\clearpage \fi \fi \else \setbox\@cclv\vbox{\box\@cclv\vfil}% \@makecol\@opcol \clearpage \fi } \global\let\org@makecol\@makecol \gdef \fn@makecol {% \setbox\@outputbox \box\@cclv \xdef\@freelist{\@freelist\@midlist}% \global \let \@midlist \@empty \@combinefloats \ifvoid\footins \else \setbox\@outputbox \vbox {% \boxmaxdepth \@maxdepth \unvbox \@outputbox \vskip \skip\footins \color@begingroup \normalcolor \footnoterule \unvbox \footins \color@endgroup }% \fi \ifvbox\@kludgeins \@makespecialcolbox \else \setbox\@outputbox \vbox to\@colht {% \@texttop \dimen@ \dp\@outputbox \unvbox \@outputbox \vskip -\dimen@ \@textbottom }% \fi \global \maxdepth \@maxdepth } \def\fnbelowfloat{\global\let\@makecol\fn@makecol} \def\fnunderfloat{\global\let\@makecol\org@makecol} \def\set@floatfontsize#1#2#3{% \@defaultunits\@tempdimb#2pt\relax\@nnil \edef\f@size{\strip@pt\@tempdimb}% \@defaultunits\@tempskipa#3pt\relax\@nnil \edef\f@baselineskip{\the\@tempskipa}% \edef\f@linespread{#1}% \let\baselinestretch\f@linespread \def\size@update{% \baselineskip\f@baselineskip \@tempskipa\baselineskip\relax\baselineskip=1\baselineskip \advance\@tempskipa by-\baselineskip\baselineskip\f@baselineskip \baselineskip\f@linespread\baselineskip \advance\@tempskipa by\baselineskip\baselineskip\@tempskipa \normalbaselineskip\baselineskip \setbox\strutbox\hbox{% \vrule\@height.7\baselineskip \@depth.3\baselineskip \@width\z@}% \let\size@update\relax }% } \let\set@@@fontsize\set@fontsize \def\setbaselinefloat{\let\set@fontsize\set@floatfontsize} \def\setbaselinefixed{\@tempdima=\baselinestretch\p@ \edef\baselinestretch{\strip@pt\@tempdima}\let\set@fontsize\set@@@fontsize} \output {% \let \par \@@par \ifnum \outputpenalty<-\@M \@specialoutput \else \@makecol \@opcol \@startcolumn \@whilesw \if@fcolmade \fi {% \@opcol\@startcolumn}% \fi \ifnum \outputpenalty>-\@Miv \ifdim \@colroom<1.5\baselineskip \ifdim \@colroom<\textheight \@latex@warning@no@line {Text page \thepage\space contains only floats}% \@emptycol \else \global \vsize \@colroom \fi \else \global \vsize \@colroom \fi \else \global \vsize \maxdimen \fi } \endinput