Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

Background

A book with lots of images. All of the images are set to "here definitely" (as they must come after the text that introduces them).

Problem

The list types (enumerated and bullet) have too much space between them. The reason seems to be because the TeX engine wants to use up as much space on the page as possible, since the next page is essentially a large image that cannot fit on the current page. For example:

Related Links

Question

What can be done to keep the text in lists together (even if it means plenty of space at the bottom of the page)?

Other suggestions on tackling the problem are quite welcome.

share|improve this question

4 Answers 4

up vote 3 down vote accepted

As "plenty of space at the bottom of the page" seems to be acceptable to you, try to add \raggedbottom to your preamble (the default for the book class is \flushbottom).

A better solution is not to set every float to "here definitely", but to use \usepackage{flafter}. The flafter package ensures that floats won't be typeset before their in-text reference.

share|improve this answer
1  
Or just use [!hbp] (i.e. don't allow the t option which could put the image before the relevant text) –  Seamus Nov 28 '10 at 14:46
    
The problem with flafter is that the float could be placed on the next page (if it's too big). Will try the other suggestions, thank you. –  Dave Jarvis Nov 28 '10 at 16:19

My way of dealing with this situation is the "\itemsep"+length approach:

\begin{itemize} 
\itemsep0em 
\item one
\item two
\item three
\end{itemize}

where "length" can even be a negative value.

share|improve this answer
1  
Awesome! Is there a way to reduce the space before and after the itemization/enumeration? –  Jonas Apr 19 '13 at 13:24
1  
This should be the chosen answer! –  LondonRob Jul 11 at 16:55

You could try to add a \vfill after your list:

\end{enumerate}
\vfill

~
The picture

the ~ is needed because space at the end of the page might won't show.

Another way is to explicitly change the page with \newpage

share|improve this answer
    
Thanks, however there are a hundred pictures and a hundred lists. Doing this manually is not an option. –  Dave Jarvis Nov 28 '10 at 16:09

There is also a way to reduce the space before and after the itemization/enumeration:

\usepackage{enumitem}
\setlist{nolistsep}

Or you could renew some commands:

\renewcommand{\@listI}{%
\leftmargin=25pt
\rightmargin=0pt
\labelsep=5pt
\labelwidth=20pt
\itemindent=0pt
\listparindent=0pt
\topsep=0pt plus 2pt minus 4pt
\partopsep=0pt plus 1pt minus 1pt
\parsep=0pt plus 1pt
\itemsep=\parsep}

Check also this post on stackoverflow.

share|improve this answer
    
good answer. This solution applies to all lists. Using \itemsep0em requires one to add it to each list. So this solution is much easier actually. I am surprised no one up voted it before. –  Nasser Aug 9 at 19:25

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.