Squeezing things onto one page

One thing that you may want to do with LaTeX is write hand­outs for your classes. This imposes par­tic­u­lar con­straints on you. In par­tic­u­lar, you want the hand­out to only be one page (or two sides). Now, LaTeX’s stan­dard mar­gins are rather gen­er­ous, and the spac­ing it puts between items in lists and between sec­tion head­ings and body text are all like­wise rather gen­er­ous. And with good rea­son: it doesn’t do to make things too cramped. But for this par­tic­u­lar pur­pose, it might be desir­able to squish things just a lit­tle bit. So let’s look at some ways to do that.

I won’t be too judge­men­tal in what fol­lows, but just remem­ber: only make what mod­i­fi­ca­tions are nec­es­sary. White space is nor­mally a good thing.

The eas­i­est and quick­est way to fit more on a page is to go to a two col­umn approach.

\documentclass[twocolumn]{article}
\setlength{\columnsep}{2em}

This makes your whole doc­u­ment two columns. For more con­trol you might want to use the mul­ti­col pack­age to only have some parts in two columns. You can adjust the \columnsep length to suit. I find any­thing less that 2em a lit­tle cramped, but if you’re really pushed for space you could change this.

\usepackage[margin=1in,top=1.5in]{geometry}

Here’s another easy trick that’s eas­ily abused: change the document’s mar­gins! The geometry pack­age allows you to mod­ify LaTeX’s default gen­er­ous mar­gins in a very sim­ple way. For exam­ple, here I have set all mar­gins to one inch, and then mod­i­fied the top mar­gin to be slightly larger. You can like­wise change left,right,bottom mar­gins sep­a­rately. This is a pow­er­ful pack­age that allows much more involved changes, but for now, let’s leave it at that. If you use the KOMA script classes, they have their own pack­age with much the same func­tion­al­ity as geometry called typearea

\usepackage{enumitem}
\setlist{leftmargin=*,itemsep=0pt,parsep=0pt,topsep=.5\baselineskip}

Are your itemi­sa­tions and enu­mer­a­tions tak­ing up too much room? enumitem to the res­cue! This pack­age allows you to change many details of your list envi­ron­ments. Here I’ve just made spac­ing very min­i­mal. Per­son­ally, I think this is too cramped, but if you really need the space, this is one way to do it.

Now, that pesky title is tak­ing up alto­gether too much room. We can use the titling pack­age to fix that.

\usepackage{titling}
\pretitle{\noindent\Large\bfseries}
\posttitle{\\}
\preauthor{\itshape}
\postauthor{}
\predate{\itshape}
\postdate{}
\setlength{\droptitle}{-1in}

This pack­age com­pletely rede­fines the way the titles are done. So we can just make a very min­i­mal look­ing title by spec­i­fy­ing what code we want before and after each of the title ele­ments (title, author and date). The above exam­ple just sets the title large and bold, and the author and date on the next line in ital­ics. Takes up much less space now. The \droptitle is the length of space above the title. I’ve made in one inch less than the default to save more space.

Finally, and this is by far the least intru­sive and dam­ag­ing mod­i­fi­ca­tion, we can change the amount of space the sec­tion head­ings take up.

\usepackage[small,compact,sc]{titlesec}

The titlesec pack­age has already cropped up in a pre­vi­ous post of mine. But this time, we’re just using its pack­age options method for mod­i­fy­ing things. This is much eas­ier than get­ting into the nuts and bolts of how to change the sec­tion head­ings indi­vid­u­ally. The small option makes the sec­tion head­ing text smaller than nor­mal. The compact option reduces the ver­ti­cal space the head­ings take up. The sc option sets the sec­tion head­ings in small caps. I did this just to dif­fer­en­ti­ate them from the title text, which is now of a sim­i­lar size.

OK. That con­cludes this brief primer on break­ing LaTeX’s sen­si­ble rules on how much stuff you should fit on a page.

Post script

Since writ­ing this, boumol pointed out that the savetrees pack­age does a lot of the same things I achieve, and indeed goes fur­ther. For instance, it mod­i­fies the let­ter spac­ing and lead­ing (the space between lines). To quote Bringhurst: “in the world of dig­i­tal type, it is very easy for a designer … with no regard for let­ters to squish them into cat­tle trains and ship them to the slaugh­ter. When let­ters are mal­treated in this way, their reserve of leg­i­bil­ity is sapped. They can do lit­tle in return except short­change and bru­talise the reader”. savetrees does some other clever things like mak­ing LaTeX try harder to not have a para­graph end with a sin­gle word. You can, of course turn off the gen­uinely bru­tal things the pack­age does, and keep the less bru­tal ones.

I think the above tuto­r­ial serves, in part, as one way to achieve some squish­ing. But more broadly, it serves to point to some good pack­ages for mod­i­fy­ing the style and lay­out of the page more generally.

Posted Tuesday, October 18th, 2011 under formatting, LaTeX, packages, tutorial.

2 comments

  1. Try the pack­age “save­trees” (this is the best way to save space, per­haps too much)

  2. Ah yes. I’d for­got­ten about that pack­age! I’ve never used it myself. I’ll explore adding that to this tuto­r­ial. Thanks!

Leave a Reply