Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Added placeins.sty

  • Loading branch information...
commit 8cab7dc57f815d693c9968fa5177d0a3fd1aa1f7 1 parent f8055c4
@butara authored
Showing with 99 additions and 0 deletions.
  1. +99 −0 placeins.sty
View
99 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 <yfi656pbsn0.fsf@triumf.ca> 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{|}~
Please sign in to comment.
Something went wrong with that request. Please try again.