In the following example, the columns on page 1 and 3 "sit" perfectly on the frame, while on page 2 (with the large float) the columns end a bit above the frame. Does anyone have an idea what I could do to get around the problem? (If a perfect solution is not possible, then a difference of 1-2pt would be acceptable).
Using a \parskip with stretchable part helps naturally but is not what I'm looking for. Setting \dbltextfloatsep to a specific value helps, too (in this case to 24.8pt), but it's dependent on the size of the figure and it is tiresome to find the "correct" value.
\documentclass[a4paper,twocolumn]{book}
\usepackage{lipsum}
\usepackage[showframe,
textheight=\dimexpr\topskip+45\baselineskip\relax]{geometry}
%\parskip=0pt plus 1pt
\parskip=0pt
%\dbltextfloatsep=24.8pt
\begin{document}
\begin{figure*}
\rule{\textwidth}{5cm}
\caption{blub}
\end{figure*}
\lipsum \lipsum
\end{document}
\dbltextfloatsep, subtract\topskipand however many normal baselines will fit, and add the residue to\dbltextfloatsep(which appears to be what you've done for this one case). but it's not clear to me where one would add it to make it automatic. – barbara beeton Oct 16 '12 at 15:08\dbltextfloatsep=20.0pt plus 1\baselineskip minus 4.0ptthen it ought to pad things out so the descenders on the bottom row overhang the column, but it doesn't even though each column box ends with a -ve vskip to compensate for the descenders. Staring at latex.ltx.... – David Carlisle Oct 16 '12 at 16:15\dbltextfloatsep. But actually I don't see how it could do the "right" thing: The output routine has to put the float at the top (and insert\dbltextfloatsep) and then give back the smaller page rest to the normal page builder to fill it with text and so this rest must have the correct size. I think I must rephrase the question: How can I make sure that the figure has a total height which is a multiple of\baselineskip? – Ulrike Fischer Oct 17 '12 at 7:54