diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/dblfloatfix/dblfloatfix.sty |
Initial commit
Diffstat (limited to 'macros/latex/contrib/dblfloatfix/dblfloatfix.sty')
-rw-r--r-- | macros/latex/contrib/dblfloatfix/dblfloatfix.sty | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/macros/latex/contrib/dblfloatfix/dblfloatfix.sty b/macros/latex/contrib/dblfloatfix/dblfloatfix.sty new file mode 100644 index 0000000000..63ae97d866 --- /dev/null +++ b/macros/latex/contrib/dblfloatfix/dblfloatfix.sty @@ -0,0 +1,251 @@ +%% This is the LaTeX package dblfloatfix which solves two problems: +%% a)~floats in a twocolumn document come out in the right order and +%% b)~allowed float positions are now [tbp]. +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% 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 +\ProvidesPackage{dblfloatfix}[2012/12/31 v1.0a (JAW)] +%% +%% USAGE: +%% +%% This package redefines internals of the LaTeX kernel by merging +%% the code of the packages fixltx2e (the fix2col part) and stfloats. +%% +%% If either of the packages stfloats or fix2col are loaded you will +%% get an error message and your document will probably not be able +%% to compile. So don't load them! +%% +%% When the new output routine for LaTeX3 is done, this package will +%% be obsolete. The sooner the better... +%% +%% If you're using the subfigure package this package will provide a +%% fix for \end@dblfloat by Steven Cochran (the author of subfigure). +%% +%% Morten H\o gholm, <moho0...@student.cbs.dk> +\RequirePackage{fixltx2e} +%% An error message for those who didn't read the instructions. +\newcommand*{\DBLFIXerrormessage}[1]{% + \PackageError{dblfloatfix}{% + Don't use the #1 package!^^J% + Didn't you read the instructions in dblfloatfix.sty?!^^J% + You're in big trouble now...^^J% + Quit immediately (type `X') and correct the mistake}% + {Type `X' dammit!}% +} +%% A check for those users who don't read manuals. +\AtBeginDocument{% + \@ifpackageloaded{stfloats}{\DBLFIXerrormessage{stfloats}}{}% + \@ifpackageloaded{fix2col}{\DBLFIXerrormessage{fix2col}}{}% +%% Here's a fix by Steven Douglas Cochran (the author of subfigure). +%% It is needed in order to make subfigure work with this package as +%% both packages redefine \end@dblfloat. + \@ifpackageloaded{subfigure}{% + \typeout{Redefining \string\end@dblfloat\ for use with subfigure}% + \def\end@dblfloat{% + \if@twocolumn + \@listsubcaptions{\@captype}% + \@endfloatbox + \ifnum\@floatpenalty <\z@ + \@largefloatcheck + \global\dp\@currbox1sp % + \expandafter\@gobble\subfig@end@float + \fi + \else + \end@float + \fi}% + }{}% +} +%% Here we go... +\def\@dblbotlist{} +\newcount\@dblbotnum +\newcounter{dblbotnumber} +\setcounter{dblbotnumber}{2} +\def\@dbflt#1{\@ifnextchar[{\@xdblfloat{#1}}{\@xdblfloat{#1}[tbp]}} + +\def \@dblfloatplacement {% + \global \@dbltopnum \c@dbltopnumber + \global \@dblbotnum \c@dblbotnumber + \global \@dbltoproom \dbltopfraction\@colht + \@textmin \@colht + \advance \@textmin -\@dbltoproom + \@fpmin \dblfloatpagefraction\textheight + \@fptop \@dblfptop + \@fpsep \@dblfpsep + \@fpbot \@dblfpbot + \def\f@depth{1sp}% +} + +\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 + % Test for twocolumn floats (2008/08/21 Mattias Nissler) + \@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 + \fi + \if@insert + \else + \@cons\@deferlist\@currbox + \fi + \endgroup +} + +\def\@combinedblfloats{% + \ifx \@dbltoplist\@empty \else \@cdblflt \fi + \ifx \@dblbotlist\@empty \else \@cdblflb \fi +} + +\def\@cdblflt{% + \setbox\@tempboxa \vbox{}% + \let \@elt \@comdblflelt + \@dbltoplist + \let \@elt \relax + \xdef \@freelist {\@freelist\@dbltoplist}% + \global\let \@dbltoplist \@empty + \setbox\@outputbox \vbox% to\textheight + {%\boxmaxdepth\maxdepth %% probably not needed, CAR + \unvbox\@tempboxa\vskip-\dblfloatsep + \ifnum \@dbltopnum>\m@ne + \dblfigrule + \fi + \vskip \dbltextfloatsep + \unvbox \@outputbox + }% +} + +\def\@cdblflb{% + \setbox\@tempboxa \vbox{}% + \let \@elt \@comdblflelt + \@dblbotlist + \let \@elt \relax + \xdef \@freelist {\@freelist\@dblbotlist}% + \global\let \@dblbotlist \@empty + \setbox\@outputbox \vbox% to\textheight + {%\boxmaxdepth\maxdepth %% probably not needed, CAR + \unvbox\@outputbox + \vskip \dbltextfloatsep + \ifnum \@dblbotnum>\m@ne + \dblfigrule + \fi + \unvbox\@tempboxa + \vskip -\dblfloatsep + }% +} + +\def \@doclearpage {% + \ifvoid\footins + \setbox\@tempboxa\vsplit\@cclv to\z@ \unvbox\@tempboxa + \setbox\@tempboxa\box\@cclv + \xdef\@deferlist{\@toplist\@botlist\@deferlist}% + \global \let \@toplist \@empty + \global \let \@botlist \@empty + \global \@colroom \@colht + \ifx \@currlist\@empty + \else + \@latexerr{Float(s) lost}\@ehb + \global \let \@currlist \@empty + \fi + \@makefcolumn\@deferlist + \@whilesw\if@fcolmade \fi{\@opcol\@makefcolumn\@deferlist}% + \if@twocolumn + \if@firstcolumn + \xdef\@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 +} + +\endinput
\ No newline at end of file |