[Univ of Cambridge] [Dept of Engineering]
[original document at http://www-h.eng.cam.ac.uk/help/tpl/textprocessing/squeeze.html]

Squeezing Space in LaTeX

Here are some tips on how to squeeze a little more onto LaTeX pages. Note that these methods may adversely affect the appearance of the document, so use them with caution. Rephrasing and editing your text often leads to better results.

The savetrees package executes many of these methods, packing as much text as possible onto each page.

Page Layout

The a4 package will give you narrower margins. To have more control use the geometry package. If you use the layout package then \layout will produce a test page showing the values of the variables that control page layout.

Changing lengths

There are many variables in LaTeX determining lengths. Two commands to change them are \addtolength and \setlength. The dimensions understood by LaTeX include cm, mm, in and pt. Variables can be set to a negative value.

Example: \addtolength{\parindent}{-5mm}

Some useful variables are


The atbeginend.sty package provides \BeforeBegin{environment}{code-to-execute}, \AfterEnd ... etc. These commands can be used to remove space around and within environments. This can be useful in situations where the environment resets values that over-ride those you've created. For example, \AfterBegin{itemize}{\addtolength{\itemsep}{-\baselineskip}} in a LaTeX file squeezes items together by resetting \itemsep inside the environment.

The mdwlist package has a itemize* environment.

The paralist package offers a compactitem environment (that puts less space between items) and an inparaenum environment (that doesn't create new paragraphs for each item).

Figures and Tables

To save space, you can put more than one graphic inside a figure environment by using the subfigure package. It's also possible to wrap text around a figure using the floatflt package.

Using "\begin{figure} ... \centering ..." rather than "\begin{figure} ... \begin{center} ..." saves space. Sometimes excessive white space around a figure isn't LaTeX's fault. It may be that a postscript figure contains a big white border. ps2epsi can be used to produce a minimal bounding box, or you can use the clipping feature of the \includegraphics command of the graphicx package.

By default, LaTeX doesn't like to fill more than 0.7 of a text page with tables and graphics, nor does it like too many figures per page. This behaviour can be changed by placing lines like the following before \begin{document}

To reduce the size of captions use the caption package.

If you have a big table you might wish to bracket it by \begin{small} ... \end{small}.

You can reduce the gap between table columns by using \setlength{\tabcolsep}{1pt}. It may also be possible to scale a whole table as you can a piece of graphics, using \resizebox{!}{5cm}{\begin{tabular} ... \end{tabular}} though you need to view the output as postscript.


Vertical space around a heading depends on \parskip, \baselineskip and other parameters that LaTeX sends to the @startsection routine. Remember also that LaTeX doesn't like putting a heading right at the bottom of a page - it would rather leave space.

Unless you want to redefine the sectioning commands yourself, it's worth looking at the titlesec package, which offers space-saving alternatives to the standard sectioning commands (especially \chapter). Even just \usepackage[small,compact]{titlesec} might save you quite a lot.

Contents and bibliography

The mulitoc package lets you have a two column table of contents in a single column document.

To reduce the linespacing in a bibliography (the same idea works for contents pages) use the setspace package


If you're using the natbib package (recommended) then you can change the value of \bibsep to control the gap between items. Otherwise put the following (suggested by Axel Reichert) in the preamble
You can use the same idea to modify other environments - theglossary, etc.

Updated July 2002
Tim Love