In my source document, I have an image and a code listing, separated by some text. When I generate PDF using pdflatex, the image is just above the listing, and it looks like the caption for the image is the caption for the listing, i.e., the caption for the image is closer to the listing than to the image. Here is the shortest example that I could recreate the problem with.
\documentclass{book}
\usepackage[pdftex]{graphicx}
\usepackage{listings} % code listings
\begin{document}
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
before before before before before before before before before before
\begin{figure}[!htbp]
\centering
\includegraphics[keepaspectratio,width=4cm,clip,trim = 0mm 6cm 15cm 0mm]
{Images/XMLElement}
\caption{Constructor removal in XMLElement}
\label{XMLElement}
\end{figure}
between between between between between between between between
between between between between between between between between
\begin{figure}[!htb]
\lstset{language=Java, showspaces=false,
showstringspaces=false, tabsize=2, breaklines=true}
\begin{lstlisting}[frame=single]
public IXMLElement createElement(String fullName) { }
\end{lstlisting}
\caption{Example2}
\end{figure}
after after after after after after after after after after after
after after after after after after after after after after after
after after after after after after after after after after after
after after after after after after after after after after after
\end{document}
The image below shows the output for the source above. In my full document, there is even less distance between the first caption and the code listing. How can I insert more space (as appropriate) between the first caption and the second figure? Depending on intervening edits, the two figures may or may not end up on the same page.