summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/sttools/stfloats.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/sttools/stfloats.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/sttools/stfloats.dtx')
-rw-r--r--macros/latex/contrib/sttools/stfloats.dtx923
1 files changed, 923 insertions, 0 deletions
diff --git a/macros/latex/contrib/sttools/stfloats.dtx b/macros/latex/contrib/sttools/stfloats.dtx
new file mode 100644
index 0000000000..bf5ab362df
--- /dev/null
+++ b/macros/latex/contrib/sttools/stfloats.dtx
@@ -0,0 +1,923 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2016 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
+% ---------------------------------------------------------------------------
+% 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 Sigitas Tolu\v{s}is.
+%
+% This work consists of the files stfloats.dtx and stfloats.ins
+% and the derived filebase stfloats.sty.
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{stfloats.dtx}
+%</driver>
+%<*package>
+%% Copyright (C) 1997-2017 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
+%% VTeX UAB, Mokslininku 2a, Vilnius, Lithuania
+%% --------------------------------------------------------------------------
+%% 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.
+%%
+%% PURPOSE: Improve float mechanism and baselineskip settings
+%%
+%</package>
+%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<package>\ProvidesPackage{stfloats}
+%<*package>
+ [2017/03/27 v3.3 Improve float mechanism and baselineskip settings]
+%</package>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{stfloats}[2017/03/27]
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{stfloats.dtx}
+ %%\PrintChanges
+ %%\PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{1186}
+%
+% \CharacterTable
+% {Upper-case \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
+% Lower-case \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
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%
+% \changes{v0.1}{1997/08/25}{first version}
+% \changes{v0.2}{1997/09/10}{standard LaTeX2e macros are used for dblfloats at top}
+% \changes{v1.0}{1997/10/01}{new commands: \cs{fnbelowfloat} and \cs{fnunderfloat}}
+% \changes{v2.0}{1998/09/21}{new commands: \cs{setbaselinefloat} and \cs{setbaselinefixed}}
+% \changes{v2.1}{1999/10/04}{changed dblfloat's output}
+% \changes{v2.2}{1999/10/22}{changed cs{output} for older LaTeX distributions}
+% \changes{v3.0}{2012/05/29}{Converted to DTX file}
+% \changes{v3.1}{2016/02/08}{Compatibility with 2015 latexrelease}
+% \changes{v3.2}{2016/06/28}{Compatibility bugfix with 2015 latexrelease}
+% \changes{v3.3}{2017/03/27}{Compatibility bugfix with 2017-05-01 latexrelease}
+%
+% \DoNotIndex{\newcommand,\newenvironment}
+%
+% \providecommand*{\url}{\texttt}
+% \GetFileInfo{stfloats.dtx}
+% \title{The \textsf{stfloats} package}
+% \author{Sigitas Tolu\v{s}is \\ \url{sigitas@vtex.lt}}
+% \date{\fileversion~from \filedate}
+%
+% \maketitle
+%
+% \section{Introduction}
+%
+% The package improves dblfloat(s) and footnotes placements mechanism and baselineskip
+% glue settings.
+%
+% With newer \LaTeX\ release from 2015/01/01 using this package two improvements are
+% available out of the box:
+% \begin{enumerate}
+% \item Float output keeps order for the
+% same type of floats even with top or bottom dblfloat items.
+% \item Dblfloats will appear on the same page where
+% they are defined if they are defined on left column and
+% enought free place is available on the current column/page.
+% \end{enumerate}
+%
+% \section{Usage}
+%
+% To place dblfloat(s) on top or bottom of the page just use optional
+% [t] or [b].
+%
+% \leftline{Example (to place figure at the page bottom):}
+%
+% \begin{verbatim}
+% \begin{figure*}[b]
+% ...
+% \end{figure*}
+% \end{verbatim}
+%
+% \DescribeMacro{\fnbelowfloat}
+% Puts footnotes below the bottom floats
+%
+% \medskip
+% \DescribeMacro{\fnunderfloat} (default and standard)
+% Puts footnotes under the bottom floats.
+%
+% \medskip
+% \DescribeMacro{\setbaselinefloat}
+% Allows |\baselineskip| to stretch and shrink if the |\baselineskip|
+% is set internally with command |\@setfontsize| (|\linespread| and
+% |\fontsize| at user level). The settings are calculated and activated
+% with command |\selectfont| (|\size@update|).
+%
+% \medskip
+% Example:
+%
+% \medskip
+% |\@setfontsize\normalsize\@xpt{12pt plus .1pt minus .1pt}| |\normalsize|%
+%
+% \medskip
+% \DescribeMacro{\setbaselinefixed} (default and standard)
+% Disables baselineskip to stretch and shrink even if the |\baselineskip|
+% is set with command |\@setfontsize| as in the previous example in case that
+% |\baselinestretch| is not empty.
+%
+% \medskip
+% Then line spreading is not used |\baselineskip| glue can be
+% controlled by ordinary |\baselinestretch| definition:
+%
+% \begin{itemize}
+% \item
+% |\def\baselinestretch{1}| - removes |\baselineskip| glue.
+% \item
+% |\def\baselinestretch{}| - keeps |\baselineskip| glue.
+% \end{itemize}
+%
+% \StopEventually{}
+%
+% \section{Implementation}
+%
+% \iffalse
+%<*package>
+% \fi
+%
+%
+% \begin{macro}{\@dblbotlist}
+% Used for dblfloat(s) to be placed at the page bottom.
+% \begin{macrocode}
+\gdef\@dblbotlist{}
+% \end{macrocode}
+% \end{macro}
+%
+% Additional counters for dblfloat(s) support at the page bottom.
+% \begin{macrocode}
+\newcount\@dblbotnum
+\newcount\c@dblbotnumber
+\setcounter{dblbotnumber}{2}
+% \end{macrocode}
+%
+% \begin{macro}{\@dbflt}
+% With extended set of default args: |[tp] -> [tbp]|
+% \begin{macrocode}
+\def\@dbflt#1{\@ifnextchar[{\@xdblfloat{#1}}{\@xdblfloat{#1}[tbp]}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@dblfloatplacement}
+% With adds to support dblfoat(s) placement at the page bottom.
+% From \LaTeX\ release 2015/01/01 |\f@depth| is used in |\@testwrongwidth| to look
+% for either column or dblcolumn floats. A value of 1sp signals the latter.
+% \begin{macrocode}
+\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\f@depth{1sp}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\if@before@latex@release}
+% This conditional code is used to check the \LaTeX\ release age.
+% \begin{macrocode}
+\newif\if@before@latex@release
+\def\tmp@reserved@a#1#2#3#4#5\@nil{%
+ \ifnum #1#2#3#4<2015\relax
+ \@before@latex@releasetrue
+ \else
+ \@before@latex@releasefalse
+ \fi
+ }
+\expandafter\tmp@reserved@a\fmtversion\@nil
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \LaTeX\ release version before 2015/01/01 support goes here.
+%
+%
+% \begin{macro}{\@addtodblcol}
+% With adds to support dblfoat(s) placement at the page bottom.
+% \begin{macrocode}
+\if@before@latex@release
+ %%% < 2015 start
+ \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
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@doclearpage}
+% With adds to support dblfoat(s) placement at the page bottom.
+% \begin{macrocode}
+ \def\@doclearpage{%
+ \ifvoid\footins
+ \ifvbox\@kludgeins
+ {\setbox \@tempboxa \box \@kludgeins}%
+ \fi
+ \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
+ }
+ %%% < 2015 end
+\else
+% \end{macrocode}
+% \end{macro}
+%
+% Newer \LaTeX\ release version from 2015/01/01 support goes here.
+%
+% \begin{macrocode}
+ %%% > 2015 start
+% \end{macrocode}
+%
+%
+% \begin{macro}{\@addtodblcol}
+% With adds to support dblfoat(s) placement on the current page and at the page bottom.
+% \begin{macrocode}
+ \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 \@deferlist
+ \@testwrongwidth\@currbox
+ \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 \@deferlist
+ \@testwrongwidth\@currbox
+ \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\@deferlist\@currbox
+ \fi
+ \fi
+ \endgroup
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@addtocurcol}
+% With adds to support dblfoat(s) placement on the current page and at the page bottom.
+% \begin{macrocode}
+ \def\@addtocurcol{%
+ \@insertfalse
+ \@setfloattypecounts
+ \ifnum \@fpstype=8
+ \else
+ \ifnum \@fpstype=24
+ \else
+ \@flsettextmin
+ \advance \@textmin \@textfloatsheight
+ \@reqcolroom \@pageht
+ \ifdim \@textmin>\@reqcolroom
+ \@reqcolroom \@textmin
+ \fi
+ \advance \@reqcolroom \ht\@currbox
+ \ifdim \@colroom>\@reqcolroom
+ \@flsetnum \@colnum
+ \ifnum \@colnum>\z@
+ \@bitor\@currtype\@deferlist
+ \if@test
+ \else
+ \@testwrongwidth\@currbox
+ \if@test
+ \if@firstcolumn
+ \@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{\@toplist\@midlist\@botlist\@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 \@colroom \@tempdima
+ \global \advance \@dbltopnum \m@ne
+ \@cons \@dbltoplist \@currbox
+ \@inserttrue
+ \fi
+ \fi
+ \fi
+ \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
+ \@tempdima -\ht\@currbox
+ \advance\@tempdima
+ -\ifx \@dblbotlist\@empty \dbltextfloatsep \else
+ \dblfloatsep \fi
+ \global \advance \@dbltoproom \@tempdima
+ \global \advance \@colht \@tempdima
+ \global \advance \@colroom \@tempdima
+ \global \advance \@dblbotnum \m@ne
+ \@cons \@dblbotlist \@currbox
+ \@inserttrue
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \else
+ \@bitor\@currtype\@botlist
+ \if@test
+ \@addtobot
+ \else
+ \ifodd \count\@currbox
+ \advance \@reqcolroom \intextsep
+ \ifdim \@colroom>\@reqcolroom
+ \global \advance \@colnum \m@ne
+ \global \advance \@textfloatsheight \ht\@currbox
+ \global \advance \@textfloatsheight 2\intextsep
+ \@cons \@midlist \@currbox
+ \if@nobreak
+ \nobreak
+ \@nobreakfalse
+ \everypar{}%
+ \else
+ \addpenalty \interlinepenalty
+ \fi
+ \vskip \intextsep
+ \box\@currbox
+ \penalty\interlinepenalty
+ \vskip\intextsep
+ \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
+ \outputpenalty \z@
+ \@inserttrue
+ \fi
+ \fi
+ \if@insert
+ \else
+ \@addtotoporbot
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \if@insert
+ \else
+ \@resethfps
+ \@cons\@deferlist\@currbox
+ \fi
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@addtotoporbot}
+% With adds to support dblfoat(s) placement on the current page and at the page bottom.
+% \begin{macrocode}
+ \def\@addtotoporbot{%
+ \@getfpsbit \tw@
+ \ifodd \@tempcnta
+ \@flsetnum \@topnum
+ \ifnum \@topnum>\z@
+ \@tempswafalse
+ \@flcheckspace \@toproom \@toplist
+ \if@tempswa
+ \@bitor\@currtype{\@midlist\@botlist\@dblbotlist}%
+ \if@test
+ \else
+ \@flupdates \@topnum \@toproom \@toplist
+ \@inserttrue
+ \fi
+ \fi
+ \fi
+ \fi
+ \if@insert
+ \else
+ \@addtobot
+ \fi
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@addtobot}
+% With adds to support dblfoat(s) placement on the current page and at the page bottom.
+% \begin{macrocode}
+ \def\@addtobot{%
+ \@getfpsbit 4\relax
+ \ifodd \@tempcnta
+ \@flsetnum \@botnum
+ \ifnum \@botnum>\z@
+ \@tempswafalse
+ \@flcheckspace \@botroom \@botlist
+ \if@tempswa
+ \@bitor\@currtype{\@dblbotlist}%
+ \if@test
+ \else
+ \global \maxdepth \z@
+ \@flupdates \@botnum \@botroom \@botlist
+ \@inserttrue
+ \fi
+ \fi
+ \fi
+ \fi
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@doclearpage}
+% With adds to support dblfoat(s) placement on the current page and at the page bottom.
+% \begin{macrocode}
+ \def\@doclearpage{%
+ \ifvoid\footins
+ \ifvbox\@kludgeins
+ {\setbox \@tempboxa \box \@kludgeins}%
+ \fi
+ \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\@deferlist{\@dbltoplist\@dblbotlist\@deferlist}%
+ \global \let \@dbltoplist \@empty
+ \global \let \@dblbotlist \@empty
+ \global \@colht \textheight
+ \begingroup
+ \@dblfloatplacement
+ \@makefcolumn\@deferlist
+ \@whilesw\if@fcolmade \fi{\@outputpage
+ \@makefcolumn\@deferlist}%
+ \endgroup
+ \else
+ \vbox{}\clearpage
+ \fi
+ \fi
+ \ifx\@deferlist\@empty \else\clearpage \fi
+ \else
+ \setbox\@cclv\vbox{\box\@cclv\vfil}%
+ \@makecol\@opcol
+ \clearpage
+ \fi
+ }
+ %%% > 2015 end
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@combinedblfloats}
+% Combines outputbox with top and bottom placed dblfloat(s).
+% \begin{macrocode}
+\def\@combinedblfloats{%
+ \ifx \@dbltoplist\@empty \else \@cdblflt \fi
+ \ifx \@dblbotlist\@empty \else \@cdblflb \fi
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@cdblflt}
+% Combines outputbox with top placed dblfloat(s).
+% \begin{macrocode}
+\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
+ }%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@cdblflb}
+% Combines outputbox with bottom placed dblfloat(s).
+% \begin{macrocode}
+\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
+ }%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% Makes |\@makecol| current definition copy to |\org@makecol|.
+% \begin{macrocode}
+\global\let\org@makecol\@makecol
+% \end{macrocode}
+%
+% \begin{macro}{\fn@makecol}
+% Redefined macro |\@makecol| which puts footnotes below the bottom floats.
+% \begin{macrocode}
+\gdef\fn@makecol{%
+ \setbox\@outputbox \box\@cclv
+ \let\@elt\relax
+ \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
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\fnbelowfloat}
+% Switch to put footnotes below the bottom floats.
+% \begin{macrocode}
+\def\fnbelowfloat{\global\let\@makecol\fn@makecol}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\fnunderfloat}
+% Switch to put footnotes under the bottom floats.
+% \begin{macrocode}
+\def\fnunderfloat{\global\let\@makecol\org@makecol}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\set@floatfontsize}
+% Such definition |\baselineskip\f@linespread\baselineskip| removes
+% any glue from the |\baselineskip| in the case |\f@linespread| is
+% not empty. To prevent this |\size@update| is redefined.
+% \begin{macrocode}
+\def\set@floatfontsize#1#2#3{%
+ \@defaultunits\@tempdimb#2\p@\relax\@nnil
+ \edef\f@size{\strip@pt\@tempdimb}%
+ \@defaultunits\@tempskipa#3\p@\relax\@nnil
+ \edef\f@baselineskip{\the\@tempskipa}%
+ \edef\f@linespread{#1}%
+ \let\baselinestretch\f@linespread
+ \def\size@update{%
+% \end{macrocode}
+% Saving of the |\baselineskip| glue.
+% \begin{macrocode}
+ \baselineskip\f@baselineskip
+ \@tempskipa\baselineskip\relax\baselineskip=1\baselineskip
+ \advance\@tempskipa by-\baselineskip\baselineskip\f@baselineskip
+% \end{macrocode}
+% Removes the |\baselineskip| glue in case |\f@linespread| not empty.
+% \begin{macrocode}
+ \baselineskip\f@linespread\baselineskip
+% \end{macrocode}
+% Restoring of the |\baselineskip| glue.
+% \begin{macrocode}
+ \advance\@tempskipa by\baselineskip\baselineskip\@tempskipa
+ \normalbaselineskip\baselineskip
+ \setbox\strutbox\hbox{%
+ \vrule\@height.7\baselineskip
+ \@depth.3\baselineskip
+ \@width\z@}%
+ \let\size@update\relax
+ }%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% Simple copy of the previous original |\set@fontsize| definition in |\set@@@fontsize|.
+%
+% \begin{macrocode}
+\let\set@@@fontsize\set@fontsize
+% \end{macrocode}
+%
+%
+% \begin{macro}{\setbaselinefloat}
+% It allows |\baselineskip| to be set to the value with glue.
+% \begin{macrocode}
+\def\setbaselinefloat{\let\set@fontsize\set@floatfontsize}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\setbaselinefixed}
+% It is used to restore macro definition |\set@fontsize| to the
+% original one. It means that |\baselineskip| is set to the value
+% without glue in the case |\baselinestretch| is not empty.
+% \begin{macrocode}
+\def\setbaselinefixed{%
+ \@tempdima=\baselinestretch\p@
+ \edef\baselinestretch{\strip@pt\@tempdima}%
+ \let\set@fontsize\set@@@fontsize
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\output}
+% It is removed from this package as the duplicate of the same
+% definition in kernel since the macro definition change
+% v.1.2c at 1997/11/09 in |ltoutput|.
+% \end{macro}
+%
+%
+% \begin{macrocode}
+%\endinput
+% \end{macrocode}
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale