From 353b080a8546f9bef044ac75687eaad6842efd66 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 13 Jan 2006 00:02:45 +0000 Subject: placeins git-svn-id: svn://tug.org/texlive/trunk@1199 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/placeins/placeins.sty | 99 +++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/placeins/placeins.sty (limited to 'Master/texmf-dist/tex/latex') diff --git a/Master/texmf-dist/tex/latex/placeins/placeins.sty b/Master/texmf-dist/tex/latex/placeins/placeins.sty new file mode 100644 index 00000000000..84a28341e5c --- /dev/null +++ b/Master/texmf-dist/tex/latex/placeins/placeins.sty @@ -0,0 +1,99 @@ +% P L A C E I N S . S T Y ver 2.2 April 18, 2005 +% Donald Arseneau asnd@triumf.ca +% Keep floats `in their place'; don't let them float into another section. +% Instructions are below. +% +% placeins.sty is freely released to the public domain. + + +\def\@fb@botlist{\@botlist} +\def\@fb@topbarrier{\suppressfloats[t]} + +\catcode`\V=14 % `V' is a comment character unless [verbose] + +\@ifundefined{DeclareOption}{}% +{\DeclareOption{below}{\def\@fb@botlist{}} + \DeclareOption{above}{\def\@fb@topbarrier{}} + \DeclareOption{section}{\AtBeginDocument{% + \expandafter\renewcommand\expandafter\section\expandafter + {\expandafter\@fb@secFB\section}% + \newcommand\@fb@secFB{\FloatBarrier + \gdef\@fb@afterHHook{\@fb@topbarrier \gdef\@fb@afterHHook{}}} + \g@addto@macro\@afterheading{\@fb@afterHHook} + \gdef\@fb@afterHHook{} + }} + \DeclareOption{verbose}{\catcode`\V=9 }% Activate things after `V' + \ProvidesPackage{placeins}[2005/04/18 \space v 2.2] + \ProcessOptions +} % end of \@ifundefined + +\def\FloatBarrier{\par\begingroup \let\@elt\relax +V\edef\@tempa{\write\m@ne{Package placeins Info: Float barrier, from +V input line \the\inputlineno, processed on page \thepage, lands on +V page \noexpand\thepage. }}\@tempa + \edef\@tempa{\@fb@botlist\@deferlist\@dbldeferlist}% + \ifx\@tempa\@empty V\PackageInfo{placeins}{No floats held,}% + \else + \ifx\@fltovf\relax % my indicator of recursion + \if@firstcolumn V\PackageWarning{placeins}{Some floats are stuck,}% + \clearpage + \else V\PackageInfo{placeins}{Eject a column and check again:}% + \null\newpage\FloatBarrier + \fi + \else V\PackageInfo{placeins}{Must dump some floats}% + \newpage \let\@fltovf\relax V\PackageInfo{placeins}{Check again:}% + \FloatBarrier % recurse once only + \fi\fi \endgroup + \@fb@topbarrier } + +\catcode`\V=11 +\endinput + +%====================== BEGIN INSTRUCTIONS =========================== + + p l a c e i n s . s t y ver 2.2 April 18, 2005 + Donald Arseneau asnd@triumf.ca + + +Placeins.sty keeps floats `in their place', preventing them from floating +past a "\FloatBarrier" command into another section. To use it, declare +"\usepackage{placeins}" and insert "\FloatBarrier" at places that floats +should not move past, perhaps at every "\section". + +Option: [section] + +A more convenient way to stop floats at section boundaries is to change +the definition of "\section" to include "\FloatBarrier", either at the +beginning, before "\@startsection", or in the `style' specification (see +The LaTeX Companion, section 2.2.2; or 2.3 in the 1st ed). If you specify +"\usepackage[section]{placeins}", then the "\section" command will be +redefined with "\FloatBarrier" inserted at the beginning. + +Options: [above] [below] + +Something you may not like is that, by default, "\FloatBarrier" is very +strict, and will (try to) prevent a float from appearing above the start +of the current section or below the start of the next section, even +though the float is still on the same page as its intended section. +Each restriction can be relaxed separately by using the "[above]" and +"[below]" package options: "[above]" allows floats to appear above their +section, if on the same page; "[below]" allows below. + +NOTE! The original version of placeins.sty acted like it was loaded +with the option "[above]" specified. + +There is a problem with LaTeX's "\suppressfloats" being out of step with +the page breaking (see usenet msg and thread) +which sometimes allows a float to go above a "\FloatBarrier" placed near +the top of a page. Maybe placeins will fix it sometime later. + +Option: [verbose] + +There is a package option "[verbose]" that causes many messages to be +written in the log file. It might be used to answer the question: +`How did *that* get *there*?!?' + +%====================== END INSTRUCTIONS ======================== + +Test file integrity: ASCII 32-57, 58-126: !"#$%&'()*+,-./0123456789 +:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ -- cgit v1.2.3