From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Mon, 2 Sep 2019 13:46:59 +0900
Subject: Initial commit

---
 macros/latex/contrib/sttools/stfloats.dtx | 923 ++++++++++++++++++++++++++++++
 1 file changed, 923 insertions(+)
 create mode 100644 macros/latex/contrib/sttools/stfloats.dtx

(limited to 'macros/latex/contrib/sttools/stfloats.dtx')

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
-- 
cgit v1.2.3

