From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining 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 +% --------------------------------------------------------------------------- +% 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} +% +%<*package> +%% Copyright (C) 1997-2017 by Sigitas Tolu\v{s}is +%% 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 +%% +% +%\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%\ProvidesPackage{stfloats} +%<*package> + [2017/03/27 v3.3 Improve float mechanism and baselineskip settings] +% +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{stfloats}[2017/03/27] +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{stfloats.dtx} + %%\PrintChanges + %%\PrintIndex +\end{document} +% +% \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 +% +% \fi +% +% \Finale -- cgit v1.2.3