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.

Latex Résumé Printout

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.

Kile Editor — Latex Résumé

To compile the resume in Kile use Build » QuickBuild as shown below.

Kile Editor — Latex Résumé

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.

Vim editor — Latex resume

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:

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.




VPS Hosting Referral Code DZZCC3

Add me to Technorati Favorites Vote for me on Blog Catalog

62 Responses to “latex — professional résumé layout made simple”

  1. Lunar_Lamp Says:

    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*}

  2. LaTeX Resume Tips - mmb Says:

    […] Linux Blog » latex — professional Résumé layout made simple […]

  3. Bourbonnais Says:

    Great article (although a little bit complex for me).

  4. Career Networking Says:

    I agree with this. Came to know about how to draft resume.

  5. Gargoyle Says:

    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?

  6. LaTeX Resume Examples | Derek Hildreth's Blog Says:

    […] linux.dsplabs.com.au (Great tutorial!) […]

  7. Solkeun Says:

    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.

  8. Tim Says:

    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.

  9. Tim Says:

    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.

  10. Kamil Says:

    Thanks Tim.

  11. Resume templates in Latex « Random Thoughts in Life Says:

    […] found a couple of pages giving nice templates for resume. Here is one suited for a job and one for academic applications. Thanks to the authors for the job well […]

  12. Krishnan Says:

    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 "*"?

  13. Kamil Says:

    Hi Krishnan, have a look at Tim's comments above. Cheers, Kamil

  14. Resume Docket Says:

    You can use this to write your resume or use the templates offered by so many websites online to write a job-winning resume. But I have to say that I enjoyed this brief introduction to Résumés with LATEX!

  15. josh Says:

    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

  16. Random Walk of Life » Blog Archive » Resume, Webpage and More Says:

    […] bad. Any word doc would have easily put this Resume to shame. Thus, looking around, and found this excellent guide to writing Resumes in […]

  17. Writing a CV in LaTeX | tjansson.dk Says:

    […] latex but a a friend of mine, Stine Kildegaard directed me in the direction of resume.cls file at http://linux.dsplabs.com.au/?p=54. This class is again based on the work found in […]

  18. Free Resume Maker | Blogger Says:

    Excellent resume layout you have there. It's definitely a great share to IT job seekers.

  19. Ana Says:

    I would like to add page numbers, except on the first page. Suggestions would be greatly appreciated.

    Thanks

  20. Kamil Says:

    Hi Ana, try setting the \pagestyle{} option like so:

    \pagestyle{empty}

    \pagestyle{plain}

    see: http://web.image.ufl.edu/help/latex/intext.shtml

  21. David Says:

    Thanks for posting this! The template produces an absolutely beautiful layout, the best I've seen anywhere.

  22. Mouna Says:

    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

  23. Kamil Says:

    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.

  24. Mouna Says:

    Thanks Kamil, looks great.

  25. Apolitically Incorrect » Typeset Your Curiculum Vitae – Part 1: The xetexCV Document Class Says:

    […] As noted above, this document class is based on a similar example available from Dario Taraborelli’s website.  Other examples of how to create a resume or CV are available from Matthew Boedicker and Kamil Wójcicki. […]

  26. LaTeX Resume Templates Says:

    […] LaTeX professional resume layout made simple -  This article showcases a very nicely done professional resume using LaTeX. […]

  27. tim Says:

    superb write up, and great resume file links. can't thank you enough for this!

  28. Vivek Says:

    Hi I could use bibtex to add publication list. But still I could not get rod of * and reference in the publication list.
    Any help would be great.
    Thanks in advance

  29. Robert Massaioli Says:

    Nice post and a I do this for my resume. I would just like to say that there is a nice command called 'pdflatex' on Ubuntu and likely every major *nix by now that does the whole 'to pdf' conversion in one step.

  30. LaTeX Resume Examples | The Linux Daily Says:

    […] linux.dsplabs.com.au (Great tutorial!) […]

  31. Hossein Says:

    Hi,

    I would like to have the header in all pages of my resume the same as the header generated in the first page. Is there anyway to do that with the current .tex and .cls file?

  32. Kamil Says:

    Hi Hossein,

    I just tried it, and it is possible. In the tex file, end the resume environment at the end of page 1 content. Then issue the \name{} command again (which will draw the header content again). Then start another resume environment. In my resume I have:

    \documentclass[margin,line]{resume}
    \begin{document}
    \name{{\Large\bf Kamil W\'ojcicki}{\footnotesize , BInfTech, BEng (Hons)}}
    \begin{resume}
    … % < - page 1 content goes here ...
    \end{resume}
    \vspace{-2mm}
    \name{{\Large\bf Kamil W\'ojcicki}{\footnotesize , BInfTech, BEng (Hons)}}
    \begin{resume}
    ... % <- page 2 content goes here ...
    \end{resume}
    \end{document}

    You may need to adjust the vertical spacing using the \vspace{} command in the above example.

    Note that the above approach is very hacky, there may be a much neater solution ;)

    Good luck!

  33. Kontonummer für den Lebenlauf ? | Spirofrog Blog Says:

    […] Nutzt evtl. eine Programmier Vorlage wie diese hier für Linux. Sollte es auch für Word […]

  34. Matt Williams Says:

    This is a great template! Like several other commenters, I'm trying to use BibTeX to produce a publication list (this time via the bibentry package). Unfortunately, for each instance of \bibentry I get the LaTeX error "Lonely \item–perhaps a missing list environment." I'm pretty sure this is related to the .cls file. Any idea on how to fix this?

  35. Matt Williams Says:

    In reference to my post earlier, I think the issue is actually a problem between hyperref and bibentry and doesn't have anything to do with the .cls file! Thanks for making such a great template — I am using it to update my resume right now.

  36. Kamil Says:

    Hi Matt, thanks for posting back and letting us know what the issue was.

  37. Kamil Says:

    For those wanting to use BibTeX for listing publications, but having trouble with it… it seem that there is a package clash—possibly due to a latex command getting redefined by multiple packages (?)—anyhow the following workaround should help:

    \makeatletter
    \let\saved@bibitem\@bibitem % < -- save to prevent problems due to the command getting redefined...
    \makeatother

    \usepackage{bibentry}
    \usepackage{hyperref}

    \begin{document}

    \begingroup
    \makeatletter
    \let\@bibitem\saved@bibitem % <-- restore the original command immediately before use :)
    \nobibliography{database}
    \endgroup
    ...

    Big thank you for finding the workaround: http://www.mofeel.net/809-comp-text-tex/12368.aspx and sharing it goes to Matt Williams!

  38. Vickie Anderson Says:

    How to write the best resume and cover letters for entry-level and established jobseekers: free samples & templates of resumes & cover letters.

  39. Apolitically Incorrect » Typeset Your Curriculum Vitae – Part 1: The xetexCV Document Class Says:

    […] As noted above, this document class is based on a similar example available from Dario Taraborelli’s website.  Other examples of how to create a resume or CV are available from Matthew Boedicker and Kamil Wójcicki. […]

  40. ukjobs Says:

    Hi Matt, thanks for posting back and letting us know what the issue was.

  41. Anthony Ricciardi Says:

    When I compile resumes with this set up I end up with page dimensions of 8.27x11.69. Can someone tell me how I can modify this so that the page dimensions are 8.5x11?

  42. Maylin Says:

    I am also trying to convert it to US letter size and I tried the following as responded:

    "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."

    Here are the warning messages that I get. Any ideas?

    (./resume.cls
    Document Style `resume' .
    Document Class: resume 2000/05/19 v1.4b Resume class
    (/usr/share/texmf/tex/latex/base/article.cls
    Document Class: article 2004/02/16 v1.4f Standard LaTeX document class
    (/usr/share/texmf/tex/latex/base/size12.clo)))
    (/usr/share/texmf/tex/latex/comment/comment.sty Excluding comment 'comment')
    (/usr/share/texmf/tex/latex/html/url.sty)

    LaTeX Warning: Unused global option(s):
    [letterpaper].

    (./resumemaylin.aux)
    Overfull \hbox (48.82149pt too wide) detected at line 16
    []

    Overfull \hbox (5.06703pt too wide) in paragraph at lines 87–88
    []\OT1/cmr/m/n/12 Advised the cre-ativ-ity pro-cess in the Reg-is-tra-tion, Spo
    rts and Me-dia sub-committees
    [1{/usr/share/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] [2]
    (./resumemaylin.aux) )

  43. Anthony Ricciardi Says:

    I added this and it adjusts the paper size.

    \usepackage[paper=letterpaper,
    %includefoot, % Uncomment to put page number above margin
    marginparwidth=1.2in, % Length of section titles
    marginparsep=.05in, % Space between titles and text
    margin=.5in, % 1 inch margins
    includemp]{geometry}

    The document compiles, for some reason it is giving me an error:
    ! Package keyval Error: No value specified for margin.

  44. Aswin S Says:

    Great post. I am learning latex and this helped me a lot.

  45. Gabe Says:

    Thanks for this!

  46. robert21742 Says:

    \documentclass[margin,line,12pt]{resume} also produces the similar error "LaTeX Warning: Unused global option(s): [12pt]." The workaround used in the "letterpaper" unused option error won't work here. Why is the resume.cls file not working? To wit:

    \PassOptionsToClass{11pt,12pt}{article}
    \LoadClassWithOptions{article}

    should it be "resume" instead of "article"?

  47. robert21742 Says:

    no that was NOT it; changing those lines to "resume" in resume.cls broke it good. BUT, using \documentclass[margin,line 12pt]{resume} without the "," in the option box next to "margin, line" worked. AND that is just the way TeX is. Don't add or subtract anything from the original code or it breaks. Makes sense to me.

  48. robert21742 Says:

    And withdraw that last comment; that did NOT work. So back to the original question. How to get bigger fonts 11pt, or 12pt in resume.tex

  49. robert21742 Says:

    \fontsize{12pt}{14} placed just after \begin{resume} seemed to turn the trick; I admit that this is elementary and I have been using LaTeX2e since 2002. Sorry for the multiple posts.

  50. Kamil Says:

    Robert, thanks for posting your findings.

  51. Cameron Says:

    Thanks for sharing!

  52. David Lisle Says:

    Thanks for sharing and excellent style. It is much appreciated as well as instructive.

  53. Mathieu Zhang Says:

    If you insert a publication list using thebibliography environment, to the left header "References", there is a "*" that I don't know how to get rid of. So if you use BiBTeX, it is there too.

    Anyone knows how to get rid of it?

  54. Piotek Says:

    Anyone know how to put clause at the bottom of page so it will be centered in full page mode? How to break this column view?

  55. resume format layout example 2011 - New Useful Documents – New Useful Documents Says:

    […] Lunar_Lamp Says: May 24th, 2008 at 7:03 pm. I see in your tex document you have used a …http://linux.dsplabs.com.au/re […]

  56. Gordon Says:

    Dear all,
    can somebody help in solving the Letter paper format problem? The suggestions above don't work, the resume is always in A4, but I need it in Letter format for US applications.
    Thanks,
    Gordon

  57. Logar Says:

    Hi,
    how does the letter paper format work? The above advice seems flawed. Please, I need support urgently.
    Best,
    Logar

  58. Armen Says:

    Hi everyone!

    I do like this style and I have already rewritten my resume turning from MS word into Latex.

    I have just got a question.
    Can someone answer how can I include my photo in the resume?
    On the first page, I have a free space on the upper-right corner.
    I would love to have my photo there.
    All my attempt to include a photo were not successful so far.

    All your suggestions are appreciated.
    Best,
    Armen

  59. Vijesh Says:

    Thanks for sharing. It helped me a lot!

  60. rapidtwiterfollowers Says:

    It's a pity you don't have a donate button! I'd most certainly donate to this superb blog! I guess for now i'll settle for bookmarking and adding your RSS feed to my Google account.
    I look forward to brand new updates and will share this website with my Facebook group.
    Chat soon!

  61. hjq1990 Says:

    Thanks, this really does me a favor.

  62. photon Says:

    I've been using this template since around 2006 or 2007 and it's worked great. Many thanks.

Leave a Reply