Here is some "bold" code disabling and enabling float placement:
\DeferAllFloats stops float placement from that point onwards for all floats that are not yet placed (i.e., already deferred or encountered later).
\AllowFloats reallows float placement.
In a two-column document those commands act on the column level, e.g., if \AllowFloats is placed somewhere in the first column of the page the second column may receive floats again. Similar to ensure that the next page is not getting any floats one may has to place \DeferAllFloats somewhere near the end of the previous page (to prevent any floats already waiting to be set from being placed).
So perhaps not perfect, but ... (I probably could have gotten away with less settings but that would have required a bit more thinking on dependencies).
\documentclass[twocolumn]{article}
\makeatletter
\newif\if@nofloats
\def\AllowFloats{\global\let\if@nofloats\iffalse}
\def\DeferAllFloats{\global\let\if@nofloats\iftrue\@floatplacement}
\AllowFloats
\AtEndDocument\AllowFloats
\def\@floatplacement{%
\if@nofloats
\global\@topnum\z@
% Textpage bit, global:
\global\@toproom \z@
\global\@botnum \z@
\global\@botroom \z@
\global\@colnum \z@
% Floatpage bit, local:
\@fpmin 1.1\@colht
\else
\global\@topnum\c@topnumber
% Textpage bit, global:
\global\@toproom \topfraction\@colht
\global\@botnum \c@bottomnumber
\global\@botroom \bottomfraction\@colht
\global\@colnum \c@totalnumber
% Floatpage bit, local:
\@fpmin \floatpagefraction\@colht
\fi
}
\def \@dblfloatplacement {%
\if@nofloats
\global \@dbltopnum \z@
\global \@dbltoproom \z@
\@textmin \@colht
\@fpmin 1.1\textheight
\else
\global \@dbltopnum \c@dbltopnumber
\global \@dbltoproom \dbltopfraction\@colht
\@textmin \@colht
\advance \@textmin -\@dbltoproom
\@fpmin \dblfloatpagefraction\textheight
\@fptop \@dblfptop
\@fpsep \@dblfpsep
\@fpbot \@dblfpbot
\fi
}
\makeatother
%%% remainder is for testing
\usepackage{lipsum}
\newcommand\Afloat[1]{\begin{figure}A float\hrulefill\caption{#1}\end{figure}}
\newcommand\Wfloat[1]{\begin{figure*}A wide float\hrulefill\caption{#1}\end{figure*}}
\begin{document}
\lipsum[1]
\Afloat{A}
\Wfloat{B}
\DeferAllFloats
\Afloat{C}
\lipsum[2-21]
XXXX --- here we allow floats again ---
\AllowFloats
\lipsum[3-10]
\end{document}
placeinspackage and\FloatBarrier. Related/duplicate question? – Mike Renfro May 18 '14 at 13:16\FloatBarrierbetween two paragraphs near the end of the first page. Second, using the[section]option to theplaceinspackage will force floats defined in a particular section to be placed in that section. If the first section of a chapter has no floats, and takes up around one page, you'll get no floats there. – Mike Renfro May 18 '14 at 16:17figureortableenvironment around a specific graph ortabularenvironment. You could place them basically everywhere and do not bother with floats in this case – May 18 '14 at 21:09