# How do I ensure that figures appear in the section they're associated with?

Often floats may land quite a bit later in the document than the point they are created, sometimes after a section break.

Is there a way to force a new section to start on a new page, after any unplaced floats?

-
See also the very related question How to avoid splitting tables between sections for more possible solutions. –  Martin Scharrer Jun 13 '11 at 11:34

Use the `placeins` package.

It gives you a `\FloatBarrier` command that you can use to prevent floats to appear beyond some point in your document. Use it as

``````% ... some floats here ...

\FloatBarrier
\section{My new section} % will not include floats from previous sections
``````
-
Instead of putting manually `\FloatBarrier` before each new section you can just use `section` option of placeins package. –  przemoc Jul 4 '11 at 11:14
@przemoc namely `\usepackage[section]{placeins}` –  Jodi Schneider Aug 4 '13 at 0:12
@przemoc Note, however, that this doesn't seem to work for subsections. –  Filipe Correia Jan 9 '14 at 13:10
worked, great, should I remove format specifier's if using the \FloatBarrier? –  Brian J Mar 3 at 14:38

The command `\clearpage` will not only start a new page, but will also force any unset floats to be set before the page break. For documents with a left and a right page, `\cleardoublepage` does the same, but also ensures that the next non-blank page is a right hand page.

This is all independent of the section break, save that if you are using a class that does not put a page break before section breaks, this method will force them. But, from your question, this doesn't seem to be a problem in your case.

-
This has been driving me nuts for 3 months. THANK YOU! –  PengOne Aug 29 '11 at 3:07

I'm now using:

``````\usepackage{placeins}

\let\Oldsection\section
\renewcommand{\section}{\FloatBarrier\Oldsection}

\let\Oldsubsection\subsection
\renewcommand{\subsection}{\FloatBarrier\Oldsubsection}

\let\Oldsubsubsection\subsubsection
\renewcommand{\subsubsection}{\FloatBarrier\Oldsubsubsection}
``````

This is shamelessly plugged from the union of this and other answers on the topic, plus this. As I can't comment yet (silly requirement, that..), I'm sharing it with via a new answer instead.

Edit: Plus, for the sake of copy-pastability for others, I've incorporated egregs excellent correction to use the non-argumented version of section redefinition (before, the snippet above read `\renewcommand{\section}[1]{\FloatBarrier\Oldsection{#1}}` etc. - Thanks, egreg

-
Don't redefine `\section` with an argument: `\renewcommand{\section}{\FloatBarrier\Oldsection}` is sufficient and better, as it allows to still use `\section*{title}` and `\section[Short]{Long title}`. The same for `\subsection` and `\subsubsection`. –  egreg Mar 27 at 10:29