Making a Resume in LaTeX

Why LaTeX

The first time I ever did a resume was in 8th grade. That was my first experience with the horror of mixing content and presentation--a lesson I've never forgotten. The problem was that if I wanted to change the font or spacing of something, I had to change it in 50 different spots on the page to make it match. It was awful.

Microsoft Word has styles which can take care of some of this, but it's still not my preferred solution. Even with styles, it's hard to tell exactly what text or spacing is in which style, it's inconvenient to switch back and forth between different styles, and it's easy to have stray format settings in a document without noticing them. If you're going to do a resume in Word, make sure you use styles, but I personally prefer using LaTeX to separate content and presentation, since you can see exactly what's there. For example, to make text bold-faced in LaTeX, you do "\textbf{insert here the bold text}". In WYSIWYG editors ("what you see is what you get"), it can still be hard on a monitor, especially at a lower screen resolution, to tell whether text is bold or just a larger font size than the surrounding text. In LaTeX, there's no ambiguity. Of course, even in LaTeX, it would be better to decide why the text is bold and create an appropriately-named macro because later you might want to put it in italics instead.

Eventually I got around to doing my resume in LaTeX. I looked at a bunch of resumes out there, and though I borrowed some elements or inspiration from several of them (including Matt Boedicker's), I ended up starting mostly from scratch. I now have a resume that's incredibly maintainable and tweakable.

LaTeX gives me beautiful output as a PDF file, which is perfect for printing. One potential drawback of using LaTeX is that lots of places are looking for particular formats, such as plain text or Word files. I figure that if I ever end up in a situation where I'm applying for a job at such a company, I will either use one of the many latex2xxxxx programs out there or just look somewhere else. I really have no desire to work at a place where they just scan your resume for buzzwords. But keep that in mind.

The LaTeX File

I ended up deciding to create a single self-contained LaTeX file. The main reasons against making a new style file are that it would more complex and less tweakable. Every resume looks different, and having everything in one template file encourages tweaking. I might change my mind later.

Click here for the source file (I've taken my resume and blotted out contact information). Here is the final PDF output of the resume, created by pdflatex.

Note that the commands that are used are all clumped together in one section. If you want to tweak the look, most of what you'll to change is in there.

To make a resume, just change the contact information, which is all lumped together towards the top of the file, and then change the contents of the resume at the bottom of the file.

The Resume Commands and Environments

Several custom-made commands environments are available in the file:

\begin{ressection}{Section Name}
A ressection makes a top-level section, such as Education or Experience. Valid commands inside a ressection are resitem and resbigitem. Valid environments in a ressection are ressubsec and reslist.
\resitem{Sentence or two.}
A \resitem is a very simple item with a bullet. It should only go directly in the ressection and never in a sublist (see ressubitem).
\ressubitem{Sentence or two.}
A \ressubitem is a very simple item with a bullet. It's for secondary levels and should only go in a sublist of a ressection (see resitem).
\resbigitem{Name}{Location}{Title and/or date range}
A \resbigitem is a complicated item with a bullet which is ideal for a job or university. It's arguments are the name of the company or university, followed by the location, and finally the job title, date range, and/or description.
\begin{ressubsec}{Name}{Location}{Title and/or date range}
A ressubsec prints out a \resbigitem while defining a sublist that you can put a \ressubitem in.
\begin{reslist}{List name}
A reslist defines a simple list with a title. Within the environment are \ressubitem's.

Conclusion

I've found that doing my resume this way makes things so much easier, especially when I make changes. If you find this useful, drop me a line. I'd like to hear what worked well and what you changed. I may even post examples of alternate resumes based on the same basic template. Good luck.