Changing the margins of a page populated with floats

27 views
Skip to first unread message

Igor

unread,
Apr 29, 2011, 11:46:43 AM4/29/11
to
Hello,

I am trying to suppress the "Float too large for page"-warning
(exceeding the text-height by merely a few baseline skips).

Is there a way to specifically target the margins (e.g. with
\newgeometry) of a page occupied only by a large float without
breaking the preceding text with \clearpage?

My only working example is

\newdimen\deftextheight
\setlength{\deftextheight}{\textheight}
\addtolength{\textheight}{2em} % set temporarily smaller bottom
margin
\begin{figure}[!p]
...
\end{figure}
\afterpage{ \setlength{\textheight}{\deftextheight} }

But it apparently disrupts the default layout set with \geometry{} in
the preamble (the bottom margin remains quite small and even
\restoregeometry does not help).

Many thanks in advance,

Igor

Robin Fairbairns

unread,
May 1, 2011, 5:13:42 AM5/1/11
to
Igor <chi...@yandex.ru> writes:

> I am trying to suppress the "Float too large for page"-warning
> (exceeding the text-height by merely a few baseline skips).

note that the warning occurs at the time you specify the float, not when
it's placed. fixing the float page doesn't help, since at the time the
page is put onto the defer list, the actual page isn't known.

> Is there a way to specifically target the margins (e.g. with
> \newgeometry) of a page occupied only by a large float without
> breaking the preceding text with \clearpage?
>
> My only working example is
>
> \newdimen\deftextheight
> \setlength{\deftextheight}{\textheight}
> \addtolength{\textheight}{2em} % set temporarily smaller bottom
> margin
> \begin{figure}[!p]
> ...
> \end{figure}
> \afterpage{ \setlength{\textheight}{\deftextheight} }
>
> But it apparently disrupts the default layout set with \geometry{} in
> the preamble (the bottom margin remains quite small and even
> \restoregeometry does not help).

i'm not surprised.

using the fancyhdr package (and no doubt classes that incorporate it
like memoir and koma*) you can create a different page style for a
float, so you can modify the positions of the page number, etc., for
floats.

you fool the float code by putting the actual float in box that's too
small for it, inside the actual \begin/\end{figure} (or whatever) --
something like

\begin{minipage}[t][\textheight]{\textwidth}
<your float and its caption>
\vss % hides extra height
\end{minipage}

if your problem comes from the caption, alone, you might consider the
fltpage package, which allows you to put the body of the float on one
page, and the caption on an adjacent one in a two-page spread.
--
Robin Fairbairns, Cambridge
my address is @cl.cam.ac.uk, regardless of the header. sorry about that.

Igor

unread,
May 4, 2011, 4:34:30 PM5/4/11
to Igor
Dear Robin,

Thanks a lot! The plain TeX \vss plus minipage do the trick with a bit
of tweaking:

\begin{figure}[!p]
\vspace{-1em}
\centering


\begin{minipage}[t][\textheight]{\textwidth}

\includegraphics[width=0.95\textwidth]{example.eps}
\vspace{-0.5em}
\caption{...}


\vss % hides extra height
\end{minipage}

\label{fig:example}
\end{figure}

GL

unread,
May 4, 2011, 4:36:22 PM5/4/11
to
Le 04/05/2011 22:34, Igor a écrit :
> Dear Robin,
>
> Thanks a lot! The plain TeX \vss plus minipage do the trick with a bit

The plain TeX primitive \vss ;-)

Reply all
Reply to author
Forward
0 new messages