latex — professional Résumé layout made simple 
Résumé, Curriculum Vitae or simply CV is an important brief about your professional life. It is likely to be one of the first contacts with a prospective employer. Curriculum Vitae means course of life in Latin. So what exactly should a Résumé contain and how detailed should it be? There is no silver bullet answer. A fair amount of variability exists in Résumé expectations across different employers and different countries. For instance, career advisors in Australia tend to recommend three to four page resumes and that is what I have used for a while. Recently however, I have switched to a European style single-page resume. This article is not so much about the actual Résumé content, as it is about professional layout and formating. This is where the LATEX Project comes into the picture. LATEX is a programming language used for technical publications. Simply put, it uses the TEX engine (a set of complex rules) to figure out how to make your publications look great! Given a good document class file all you need to provide is the actual content.
To get started download the LATEX Résumé source: resume.tex as well as this Résumé document class: resume.cls. The credit for these files goes to Michael DeCorte for the Résumé style file and to Chris Paciorek for the Résumé template. Lets compile these LATEX sources using the LATEX interpreter from the Bash shell as follows.
latex resume.tex
The above command produces number of auxiliary files as well as an output device independent file format (DVI) file, resume.dvi. To view this file you can use KDE DVI file viewer, KDVI. To convert the DVI file into a PostScript (PS) file or a PDF file the following commands are used, respectively.
dvips resume.dvi dvipdf resume.dvi
The output of the first command should be resume.ps while the output of the second command should be resume.pdf. However, on some Linux systems the output of the dvips, for example, gets redirected by default to the printer (via a lpr pipe) as is shown below.
This is dvips(k) 5.95a Copyright 2005 Radical Eye Software (www.radicaleye.com) 'TeX output 2007.12.19:2107' -> |lpr <tex.pro><texps.pro>. <cmmi10.pfb><cmr7.pfb><cmsl10.pfb><cmsy10.pfb> <cmbx10.pfb><cmr10.pfb><cmcsc10.pfb><cmbx12.pfb>[1] [2]
You can overcome this by explicitly specifying the output PostScript or PDF file and using the following commands instead.
dvips resume.dvi -o resume.ps dvipdf resume.dvi resume.pdf
OK, lets take a look at what the output looks like. Here is a preview of the Résumé format I use.
Getting to this point successfully should be easy. Lets move on to editing of LATEX sources. Any ASCII file editor will do the job, but to make your job considerably easier I recommend a KDE app called Kile. Kile is a great choice especially if you prefer GUI-based editors over console ones. Kile offers many great features, such as:
- Rich and easy to use GUI with syntax high-lighting
- Advanced highly configurable compilation and build tools
- Auto-completion of LATEX commands
- Various LATEX document templates and wizards
- Project management very useful for larger LATEX publications
- Access to various help resources
Use your favourite package manager to install Kile, f.e.
sudo yast2 --install kile # in Novell's openSUSE sudo yum install kile # in RedHat's Fedora sudo apt-get install kile # in Ubuntu
Once installed, run Kile from Office » Kile applications menu, or simply from your shell as follows.
kile resume.tex
Kile GUI screenshot is shown below.
To compile the resume in Kile use Build » QuickBuild as shown below.

If messing around with a GUI IDE is not your cup-a-tea, then I recommend the console-based Vim editor. If it is not already installed, use one of the following commands to install it.
sudo yast2 --install vim* # in Novell's openSUSE sudo yum install vim* # in RedHat's Fedora sudo apt-get install vim* # in Ubuntu
Then, to open the Résumé source code in the Vim editor, simply type the following command.
vim resume.tex
Granted, Vim does take a little getting used to, especially at first. This is truly offset by how quick things get done in Vim after you gain some proficiency with it. I highly recommend it. Here is a Vim screenshot.
So what's left? Ahhh, just learning the LATEX programming language. Easy! For this purpose there is an excellent, popular and best of all free LATEX reference entitled The Not So Short Introduction To LATEX2e, which I also host locally for your convenience: lshort.pdf. Whilst for some topics it is possible and enjoyable to learn simply by reading about them (from start to end), LATEX is not one of them. The simplest and most effective way to learn LATEX is to start writing articles and look-up concepts as they come-up. The other way is so boring that you'll get disinterested very quickly.
Note that LATEX2e sources are platform independent and (at least in theory) should compile without problems on non-Linux hosts. If you succeed at this, please leave a comment below.
To finish up, here are the compiled files and LATEX sources again, as well as a some useful links:
-
CV files mentioned in this article:
resume.dvi,resume.ps,resume.pdf,resume.tex,resume.cls -
A neat LATEX Résumé by Nicolas Favre-Félix:
cv.pdf,cv-nff.tar.bz2 -
XML/XSLT based Résumé idea by Marcio Ribeiro:
cv.xml,cv.pdf,source -
Some interesting articles by Dario Taraborelli on:
Typesetting your academic CV in LATEX and The beauty of LATEX - Some useful LaTeX Resume Tips by Matthew M. Boedicker
- LaTeX Example :: Résumé/Curriculum Vitae (CV) (plus useful links) by Ted Pavlic
-
The web server stats for this article after it was posted on reddit.com:
the power of reddit: spreddit — detailed web server statistics
Hope you have enjoyed this brief introduction to Résumés with LATEX!
Did you find the above information useful and interesting? If so, please support this site by using the blog directory links at the bottom of this page. Thanks for your support!
If you have any Linux related problems or questions then please feel free to post them on our Linux Forums: http://linux.dsplabs.com.au/forums.




May 24th, 2008 at 7:03 pm
I see in your tex document you have used a horizontal fill to space out the Contact Information details. I think a nicer solution than specifying a static horizontal fill is to use the following:
Your line 22-26:
\begin{tabular}{@{} l @{\hspace{38mm}} r}
Signal Processing Laboratory & +61 4 1215 1771 \\
Griffith School of Engineering & kwojcicki@griffith.edu.au \\
Griffith University, Nathan Q4111, Australia & http://kamil.dsplabs.com.au\\
\end{tabular}
Replacing this with a more "proper" alignment can allow you more flexibility with paper-sizes etc:
\begin{tabular*}{1.0\textwidth}%
{@{\extracolsep{\fill}}lr}
Signal Processing Laboratory & +61 4 1215 1771 \\
Griffith School of Engineering & kwojcicki@griffith.edu.au \\
Griffith University, Nathan Q4111, Australia & http://kamil.dsplabs.com.au\\
\end{tabular*}
August 4th, 2008 at 8:18 pm
Great article (although a little bit complex for me).
September 26th, 2008 at 1:54 am
Great-looking resume. However, I want to change the paper size to "letter" or 215.9 mm x 279.4 mm (yep, I'm in the US
I couldn't find any place to change it in resume.cls. How do I do that?
October 6th, 2008 at 3:09 am
[…] linux.dsplabs.com.au (Great tutorial!) […]
November 11th, 2008 at 4:57 pm
For letterpaper, use /LoadClass[letterpaper]{article} instead of /LoadClassWithOptions{article} in resume.cls. Then, add letterpaper in \documentclass[margin,line,letterpaper]{resume} in resume.tex.
November 27th, 2008 at 1:42 am
Nice resume. Any idea why the resume class doesn't work with bibtex? I have all my publications in a bibtex database and would rather it format them than do it manually. All I get is:
LaTeX2e
Babel and hyphenation patterns for english, usenglishmax, dumylang, noh
yphenation, arabic, basque, bulgarian, coptic, welsh, czech, slovak, german, ng
erman, danish, esperanto, spanish, catalan, galician, estonian, farsi, finnish,
french, greek, monogreek, ancientgreek, croatian, hungarian, interlingua, ibyc
us, indonesian, icelandic, italian, latin, mongolian, dutch, norsk, polish, por
tuguese, pinyin, romanian, russian, slovenian, uppersorbian, serbian, swedish,
turkish, ukenglish, ukrainian, loaded.
(/Users/tim/texmf/tex/latex/resume/resume.cls
Document Style `resume' .
Document Class: resume 2000/05/19 v1.4b Resume class
(/opt/local/share/texmf-dist/tex/latex/base/article.cls
Document Class: article 2005/09/16 v1.4f Standard LaTeX document class
(/opt/local/share/texmf-dist/tex/latex/base/size10.clo))
No auxiliary output files.
)
No file resume.aux.
No file resume.bbl.
…
…
[1{/opt/local/share/texmf/fonts/map/pdftex/updmap/pdftex.map}]
LaTeX Warning: There were undefined references.
…
Any help would be greatly appreciated.
November 27th, 2008 at 2:20 am
The problem lies on line 203:
\nofiles % resume's don't need .aux files
Comment out this line so it looks like:
%\nofiles % resume's don't need .aux files
or simply delete it and voila bibtex works.
November 27th, 2008 at 3:00 am
Thanks Tim.
November 27th, 2008 at 7:21 pm
Hi, thanks for the stuff. this is indeed helpful. There is however a problem when i use bibtex to generate the publication list. I have of course, done the needful to generate the aux file. After running bibtex and latex, i get a "*" all by itself on the next line after the publications header. Then the list of publications comes without any mistake. How do i remove this lonely "*"?
November 27th, 2008 at 10:55 pm
Hi Krishnan, have a look at Tim's comments above. Cheers, Kamil
January 13th, 2009 at 9:56 pm
Excellent layout. I've had to change a few things around. But I'm also looking for a way to insert page numbers. I've tried modifying the .cls pagestyle, and in the .tex as well. But so far no results. Any advice would be appreciated.
Thanks
January 16th, 2009 at 2:59 am
[…] bad. Any word doc would have easily put this Resume to shame. Thus, looking around, and found this excellent guide to writing Resumes in […]
May 6th, 2009 at 8:20 am
Excellent resume layout you have there. It's definitely a great share to IT job seekers.
June 2nd, 2009 at 10:15 pm
I would like to add page numbers, except on the first page. Suggestions would be greatly appreciated.
Thanks
June 3rd, 2009 at 3:28 am
Hi Ana, try setting the \pagestyle{} option like so:
\pagestyle{empty}
…
\pagestyle{plain}
…
see: http://web.image.ufl.edu/help/latex/intext.shtml
June 15th, 2009 at 7:13 am
Thanks for posting this! The template produces an absolutely beautiful layout, the best I've seen anywhere.
June 18th, 2009 at 5:44 am
Wonderful example. thanks
I was wondering if there is a way to add a footer or a header bellow or above the main text. Please let me know the way to do it.
Thanks
June 18th, 2009 at 6:37 am
Hi Mouna, to be able to add header or foother you'll have to modify resume.tex and/or resume.cls … and to do that you'll need some proficiency with LaTeX — take a look at 'Not so short introduction to LaTeX'. A quick and dirty hack for a footer would be to place \vspace{1cm} command to achieve vertical space of 1 cm at the end of last section on each page (adjust 1cm manually to suit). This is obviously quite painful — to do it properly you'll need to learn LaTeX.
June 20th, 2009 at 3:41 pm
Thanks Kamil, looks great.