summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/sttools/stfloats.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-10-18 22:33:43 +0000
committerKarl Berry <karl@freefriends.org>2012-10-18 22:33:43 +0000
commit34c48d9566089694027f919d621fec0e075d1b84 (patch)
tree0d9a5e32bd2805eb15ed9a7444b9dfead77d58d9 /Master/texmf-dist/source/latex/sttools/stfloats.dtx
parentb2af3a5c5a7adb196a11e1d049a2162b4dd34a45 (diff)
sttools (19oct12)
git-svn-id: svn://tug.org/texlive/trunk@28013 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/sttools/stfloats.dtx')
-rw-r--r--Master/texmf-dist/source/latex/sttools/stfloats.dtx541
1 files changed, 541 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/sttools/stfloats.dtx b/Master/texmf-dist/source/latex/sttools/stfloats.dtx
new file mode 100644
index 00000000000..3b8b762649a
--- /dev/null
+++ b/Master/texmf-dist/source/latex/sttools/stfloats.dtx
@@ -0,0 +1,541 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2012 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-2012 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
+%% VTeX Ltd., Akademijos 4, Vilnius, Lithuania
+%% http://www.vtex.lt/tex/download/macros/
+%% --------------------------------------------------------------------------
+%% 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>
+ [2012/05/29 v1.1 Improve float mechanism and baselineskip settings]
+%</package>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{stfloats}[2012/05/29]
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{stfloats.dtx}
+ %%\PrintChanges
+ %%\PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{551}
+%
+% \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}
+%
+% \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.
+%
+% \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.
+% \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
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@addtodblcol}
+% With adds to support dblfoat(s) placement 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 \@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}{\@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}
+%
+%
+% \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
+ }
+% \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#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{%
+% \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