![[Univ of Cambridge]](https://www.eng.cam.ac.uk/images/house_style/uniban-s.gif) 
    
   ![[Dept of Engineering]](https://www.eng.cam.ac.uk/images/house_style/engban-s.gif) 
[original document at https://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
- Page Layout
- \columnsep: gap between columns
- \topmargin: gap above header
- \topskip: between header and text
- \textheight:  height of main text
- \textwidth: width of text
- \oddsidemargin: odd page left margin
- \evensidemargin : even page left margin 
 
- Paragraphs
- \parindent: indentation of paragraphs
- \parskip: gap between paragraphs
 
- Floats (tables and figures)
-  \floatsep: space left between floats.
-  \textfloatsep: space between last top float or first bottom float
                     and the text.
-  \intextsep : space left on top and bottom of an in-text float.
-  \dbltextfloatsep is \textfloatsep for 2 column output.
-  \dblfloatsep is \floatsep for 2 column output.
-  \abovecaptionskip: space above caption
-  \belowcaptionskip: space below caption
 
- Maths
-  \abovedisplayskip: space before maths
-  \belowdisplayskip: space after maths
- \arraycolsep: gap between columns of an array
 
- Lists
-  \topsep: space between first item and preceding paragraph.
-  \partopsep: extra space added to \topsep when 
environment starts
                 a new paragraph.
-  \itemsep: space between successive items.
 
Environments
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}
\renewcommand\floatpagefraction{.9}
\renewcommand\topfraction{.9}
\renewcommand\bottomfraction{.9}
\renewcommand\textfraction{.1}   
\setcounter{totalnumber}{50}
\setcounter{topnumber}{50}
\setcounter{bottomnumber}{50}
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.
Headings
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
\begin{spacing}{0.9}
\tableofcontents
\end{spacing}
...
\begin{spacing}{0.9}
\bibliographystyle{plain}
\bibliography{refs}
\end{spacing}
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
  \let\oldthebibliography=\thebibliography
  \let\endoldthebibliography=\endthebibliography
  \renewenvironment{thebibliography}[1]{%
    \begin{oldthebibliography}{#1}%
      \setlength{\parskip}{0ex}%
      \setlength{\itemsep}{0ex}%
  }%
  {%
    \end{oldthebibliography}%
  }
You can use the same idea to modify other environments - theglossary,
etc. 
[LaTeX][Help] 
Updated July 2002
Tim Love