# LaTeX template for resume/curriculum vitae

If you have a TeX'ed resume, did you use a template or make your own? Are there any useful packages? What looks the most professional? How about special considerations for different areas of work (e.g. in academia)?

For my current CV, I ended up using moderncv. It doesn’t have many features but it is very easy to use and yields a very elegant output.

However, I also want to mention its drawbacks: customising it isn’t easy, especially since it doesn’t really use a clean, semantic markup. For example, to specify multi-column properties, you actually need to specify the items in an odd order (namely line by line instead of column wise).

• Another vote for moderncv. To my eye (after having read hundreds of CVs over the past year's hiring), it presents the information in a way that makes it easy for the reader to find what they are looking for. This is critical to getting past the first pass. – KeithB Jul 26 '10 at 20:28
• I’m attempted to downvote my own answer. I’ve recently had to change my CV slightly and it was imperative that everything fit on one page, which, from the available space, wasn’t a problem in principle. However, moderncv simply doesn’t accomodate such wishes. I ended up rewriting large parts of it, in an extremely quick&dirty way since I didn’t have a lot of time. In hindsight, creating my own class from scratch would have cost me less time. As soon as I’ve got time I’ll rewrite my CV without any template. – Konrad Rudolph Jan 27 '11 at 19:06
• moderncv actually has a new feature (or a related package) since yesterday: moderntimeline. – raphink Sep 30 '11 at 13:36
• @Konrad Any chance you could elaborate on the issue? Normally, you can simply change the margin of the pages through geometry, or decrease the inter-element spacing through the optional parameter of every command. – Xavier Feb 23 '12 at 0:54
• @Xavier Changing the margins wasn’t an option, and changing the inter-element spacing proved to be a major pain in the *ss. In particular though I tried putting some of the elements in two columns next to each other and that didn’t go down well with the package. – Konrad Rudolph Feb 23 '12 at 7:57

I made my own. In the end, it was much easier that way; you get what you want. Especially if you have situations in which you need to quickly prepare e.g. a 4-page CV, you know how to tweak your own layout to meet the requirements.

Some key tools:

• article class

• geometry package for margins

• hyperref to have a nice PDF (e.g., DOI hyperlinks in the list of publications, proper PDF metadata)

• enumitem for tweaking list layout; titlesec for section headings

• cite, url, microtype, babel, ...

• Keep layout and content separated; easy to do something like \input{layout2}\input{content} to produce yet another version with a different layout.

• multibib to get multiple lists of references in the CV (one for journal papers, another for conference papers, etc.):

\newcites{jrnl}{Journal Papers}
\newcites{conf}{Conference Papers}
...
\nocitejrnl{...}
\nociteconf{...}
...
\section{Scientific Publications}
{
\renewcommand{\section}[2]{\subsection{#2}}
\setbiblabelwidth{99}
\bibliographystylejrnl{yyy}
\bibliographyjrnl{xxx}
\setbiblabelwidth{99}
\bibliographystyleconf{yyy}
\bibliographyconf{xxx}
...
}


The "nocite" lists, etc., are automatically generated from a source file by using a Python script. The lists are actually in a separate file that I \input.

• A tweaked version of the unsrt Bibtex style: I added things like DOI links, etc., by using some ugly hacks.

• JabRef + some scripts to maintain the Bibtex database.

• Rubber (with % rubber: module pdftex) for compiling everything. It works OK with multibib.

• Could you share an example of this, and typical output, please? – Forkrul Assail Oct 1 '12 at 13:17
• +1 on the previous comment: unless your answer is an imperative: "Do it yourself!", I think it would be really nice to see (at least) an MWE... +2 on inputting layout, seems like an elegant way! – nutty about natty Jul 9 '13 at 10:52
• In 2020 you could check overleaf.com/learn/latex/… – Krzysztof Feb 19 '20 at 12:37

There are lots of resume examples here with source: http://rpi.edu/dept/arc/training/latex/resumes/.

Google can show a thousand other examples, but that's a good place to start.

• that's the one i use... pretty nice. – Mica Nov 12 '10 at 3:30
• Actually, these are all extremely space-y. Anything more compact? P.S. A google search puts this page at the top... – cheshirekow Aug 28 '12 at 19:00
• I didn't like the samples too much. Too simple and colorless! :) – Hosein Rahnama Nov 28 '17 at 11:17

ShareLaTeX provides a list of CV/Resume Templates, including:

• I second @Diego! Thank you @werner and +1 for the pictures! – Amar Sep 28 '16 at 23:51
• Wow, great collection with samples! I scrolled back the half-mile to upvote. – lmat - Reinstate Monica Apr 30 '20 at 10:26

I like europass and everyone seems impressed when they see the results... specially for Europe applications!

• The link is dead @YuppieNetworking. Can you post it somewhere else? – alekhine Dec 24 '12 at 7:39
• Updated the link for @alekhine – YuppieNetworking Dec 27 '12 at 11:16
• When you use it —and I wholeheartedly recommend it— just be sure to leave out the original "Europass" logo. If not, the Brits will have a good laugh with your Europ ass... – Serge Stroobandt Aug 25 '13 at 21:06

I will second the Taraborelli CV templates at http://nitens.org/taraborelli/cvtex. In the past I've used the curve and moderncv packages but, in the end, found the combination of his elegant templates + xelatex to be the simplest and most flexible solution. I wasn't constrained by particular sectioning, etc.

Personally, I use the Hoefler Text+Optima. I also like the Caslon.

My current resume is based on the article class; source hosted on GitHub and forked from kjhealy.

It uses fontspec for OpenType fonts (Adobe Garamond Pro and FontAwesome). Still working on the best way to selectively place content for different purposes/companies. I'm experimenting with linked external documents, under the supposition that the resume stands on its own (nothing is "missing" without linked content), but the reviewer can find extra information if he/she clicks on a link. I've had positive feedback on this so far. The ocgcolorlinks option is perfect for this; once the resume is printed, all traces of the links vanish. Special thanks to @ben-lerner for his improved code.

My publication list is short presently, but I'll probably need to add in some biblatex functionality for ease of use as it grows.

• Hi Paul, I wanted to make a simple cover letter as well using the same header part. is that possible? – masfenix Jan 8 '15 at 20:32
• Also, I am getting a font missing error. is there a way to change the font to something I Have? – masfenix Jan 8 '15 at 21:02
• @masfenix of course it is possible. And about the fonts: yes, of course. Just change the font setup commands to fonts that you have installed on your system... – Paul Gessler Jan 8 '15 at 21:49
• @masfenix if you're just beginning, I would recommend just starting with the base letter class. Get the content rock solid and the design/layout can come later as you build your experience. Besides, I don't really believe in passing these "templates" around online. It leads to too many people using code they don't understand, which later becomes dead or deprecated code. – Paul Gessler Jan 8 '15 at 21:55
• So how have you created the .tex file for your resume? I really like the style of it, however, I cannot seem to get it to compile correctly. – J Paul May 19 '16 at 19:15

The TeX Catalogue list CV packages in a category:

By the way: I wasn't satisfied by the results of such packages. So, I used scrartcl and tabularx to typeset my CV. This way I could match it to the design of my application letter done with scrlttr2. I used tabularx in macros, allowing easy adjustments for all parts of the CV at once. Simple and elegant, no fancy colored lines and the like.

Copied from here to this topic following a request.

• The link is not working anymore. – Roman Feb 25 '14 at 12:06
• @Roman (and Stefan, of course), I took the liberty of updating the link for a functional one. I hope it's OK. – Gonzalo Medina Jan 28 '15 at 23:47
• I don't know if this is a mirror of the link above, nonetheless here it is: texcatalogue.ctan.org/bytopic.html (Last modified: 10 June 2016) – Amar Nov 19 '16 at 13:42

This strikes me as a particularly good example of a CV or vita. The latex code can be seen here. As an example, see the author's vita.

For typesetting bidirectional resumes in languages other than english, the bidi package provides bidimoderncv2 class for typesetting resumés, which is the modified version of moderncv class. Two examples are presented in the doc folder of the package, namely test-casualcv.tex and test-classiccv.tex than you can look and learn how you can use it.

This is an example use of bidimoderncv with classic style:

and this one is with casual style:

Take note that both are taken from examples of the package and are typeset in persian, but works fine in any other languages (whether ltr or rtl).

• Can you tell me how can I compile the test-classiccv.tex file? should it be with pdfLatex or XeTex? – Ehsan Jun 4 '14 at 20:41
• It should be with xelatex, since it is based on bidi, and it only works with xelatex. – Hasan Zakeri Jul 27 '14 at 11:04

Recently added document class, cv4tw by Geoffrey Gouez, offers a "LaTeX CV class, with extended details".

The class offers entries for assets and social networks; customizable styles are provided. The class comes with no documentation, but a worked example offers some guidance.

This package is still under development but it shows great progress. Here is a sample screen shot of an example made using the class file.

Here is a direct link to the example above: sample-jules-verne. Note this requires XeLaTeX or LuaLaTeX to run. Also note that the example given does not compile directly because the samplepic.jpg file is not provided; just replace it with your own or download it here from GitHub under examples.

• It's a fantastic new solution for CV writing in Latex (+1). Unfortunately there is no reasonable documentation available. – Roman Feb 25 '14 at 18:25
• This is really a power house of new template. As a former moderncv user, it feels so much more versatile. – ojdo Jun 12 '16 at 11:12

I can offer you a video tutorial I made recently, which covers this topic using the article class. I just got hired for a lectureship position last week, so I think it is pretty good!

• The video was removed from youtube because it was too long. You should probably upload it somewhere else and update the link. – bodo Jul 10 '12 at 21:09
• I just noticed that and fixed it. Should be ready to go by the time you see this again. – Jonathan Komar Jul 10 '12 at 21:54
• Many Thanks! :) I think the best way is to use the article class since you can do what ever you want. :) – Hosein Rahnama Nov 28 '17 at 11:28
• That would be nice if you provided the source .tex file too. :) – Hosein Rahnama Nov 28 '17 at 13:20

I've been using a lightly tweaked version of Michael DeCorte's res.cls. No idea if it is best of breed (nor why I chose it), but if it ain't broke. . . .

Ted Pavlic's CV templates are minimalistic, uses the hyperref package extensively and elegant!

http://www.tedpavlic.com/post_resume_cv_latex_example.php

I found CurVe to be a nice package. Used it to get two student jobs and apparently, it worked :). The only drawback is that the default structure of the CV may need adjustments to your specific purposes.

I also ended up making my own style, however, I added one twist: I actually store my CV in XML format and then use an XSLT transform to convert it into a .tex file. While this required a lot more work upfront, the benefit is that I can use the same XML file to generate plain text, HTML, abridged, &c. versions without having to maintain n separate files. If you end up making your own LaTeX style for your CV, I would also suggest you seriously consider investing the time to use the XML/XSLT technique. You can see the results of this technique here (scroll to the bottom of the page to see the XML and HTML versions). It would take me a bit of time to clean them up, but I'd be happy to share my XSLTs with people if anyone is interested. This is an open source project that does something similar, however, it was started after I created my technique and I've never used it.

• I looked at the XML Resume Library a while back and noticed that it seems to be dead: last "news" is dated 2004. I also looked at HR-XML but then I decided I was spending too much time and used curve instead. :-) – Matthew Leingang Jan 30 '11 at 18:22

For my current one I just rolled my own. I use fancyhdr for the header and footer, and lastpage so that I can display  page x/y in the footer (so that the person reviewing it would know if they lost a page).

The entirety of the rest of the document is built from nested customized lists.

• +1 on fancyhdr. – Hober Jul 26 '10 at 21:48

I ended up making my own, but it took a while. Expect to have to fight LaTeX's defaults on a lot of things. That said, it's worth it. I learned a lot about LaTeX and have a good resume that I can say I wrote.

I wouldn't be surprised, but it seems like if you're going to use LaTeX for your resume, be prepared to answer truthfully whether you used a template or not, and be comfortable with the answer.

• It shouldn't be a problem even if you used a template, the purpose of the resume is to present the professional skills, not the low-level LaTeX skills. – wishihadabettername Aug 11 '10 at 15:05

Here's an example of a nice-looking "home-made" CV: http://nitens.org/taraborelli/cvtex

If you'd like to use LaTeX along with BibTeX, I have a template here:

http://pointsofsail.org/wikka.php?wakka=LatexCV

It is based on Dario Taraborelli's template (http://nitens.org/taraborelli/cvtex) and uses bibtex and the bibentry package to make the publications section.

Here is a Hacker News thread with many examples of resumes and CVs in (La)TeX:

I used curve to create my CV:

http://www.mhelvens.net/cv

Quite customizable by itself. But I added several hacks and convenience macros of my own:

• nicer rubric-title underlining
• separate bullet-shapes for [ongoing], [notable] and [other]
• separate year-styles for [period] and [event]
• separate year-styles for [past], [ongoing, known end-year], [ongoing, open end]
• for specific projects and papers: hyperlinked www or doi
• when printing, cross-refs, urls and e-mail are black; www and doi links are invisible

Someday soon I should make the code public. But for now it's a bit too chaotic to release.

I have made my CV using predominately BibLaTeX. I have gone way beyond just using BibLaTeX for my publications, but have added a number of custom entry types (e.g., funding, service, teaching, presentation, education), modified the biber data model to allow for new fields and written bibliography drivers to handle the formating of these new entry types. Everything except my contact information is stored in a bib file (and technically my contact information is stored in the @preamble entry). Each version of my CV is produced by a tex file that sets a few BibLaTeX booleans and defines a bunch of \defbibfiler and \defbibcheck.

I find this makes it much easier for me to reorganize/reorder my CV. Previously it was easy to move my "teaching" section before my "service" section, but with BibLaTeX I can have my teaching in a big list or divide it into undergraduate and graduate or University A and University B. Similarly I can divide my research presentations into internal/external or into talk/poster.

• Intersting approach! I would love to see the code for this :-) – Daniel Jul 4 '13 at 5:52

I adapted the resume class found in http://www.iro.umontreal.ca/~csuros/latex.html.

LaTeX Templates showcases several templates, ranging from conservative to fancy.

I ended up using Classicthesis-Styled CV. It caught my eye as most esthetically pleasing. And even with my poor LaTeX skills was very easy to adapt to my needs.

I have made this by adapting some parts of other curriculum, like the one called Alice. I used tcolorbox for the content. I also had great help from Alan Munn. Feel free to modify and use.

Save this file with this name: CV_g_Contents

Content file:

\documentclass[12pt]{article}
\usepackage{geometry}
\geometry{paperheight=42cm,paperwidth=9cm,margin=2mm,top=5cm,bottom=2cm}
\usepackage[many]{tcolorbox}
\usepackage[sfdefault]{ClearSans}
\usepackage[T1]{fontenc}
\usepackage{microtype}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\usepackage{lmodern}
\usepackage{tikz}
\usepackage{xcolor}
\usepackage{lipsum}
\usepackage{tabularx}
\def\tabularxcolumn#1{m{#1}}
\renewcommand{\arraystretch}{3}

\colorlet{DarkGray}{gray!20!black}
\colorlet{LightGray}{gray!20!white}
\pagenumbering{gobble}

%
\usepackage{fontawesome}
% Command for printing skill progress bars
\newcommand\skills[1]{
\begin{tikzpicture}[]
\foreach [count=\i] \x/\y in {#1}{
\begin{scope}[yshift=\i cm]
\draw[fill=LightGray,LightGray] (0,\i) rectangle (6,\i+0.4);
\draw[fill=white,cyan](0,\i) rectangle (\y,\i+0.4);
\node[above right] at (0,\i+0.4) {\x };
\end{scope}
}
\end{tikzpicture}
}

%
\tcbset{breakable,
enhanced jigsaw, colframe=DarkGray!70!cyan, colback=white, enhanced,boxed title style={colback=black,},sharp corners,boxrule=0pt,
%left=0.2cm,right=0.2cm,top=0.2cm,
}
\begin{document}
\clearlight
\begin{tcolorbox}[top=0pt]
\includegraphics[width=\linewidth,height=9cm]{example-image}
\end{tcolorbox}
\begin{tcolorbox}[]
\begin{tabularx}{\linewidth}{m{0.8cm} X}
\midrule
{\color{black!50!cyan} {\Huge \faStarO}} & {\large 17 November 1789}
\\
\midrule
{\color{black!50!cyan} {\Huge \faEnvelopeO}} & {\large your@email.com}
\\
\midrule
{\color{black!50!cyan} {\Huge \faPhoneSquare}} & {\large +37 (XX) 123456789}
\\
\midrule
\\
\midrule
\\
\midrule
{\color{black!50!cyan} {\Huge\faGlobe}} & {\large www.yoursite.com}
\\
\midrule
\end{tabularx}
\end{tcolorbox}
\begin{tcolorbox}[title=Skills]
\skills{{Skill four/5.8},{Skill three/3},{Skill two/4.3},{Skill one/4}}
\end{tcolorbox}
\begin{tcolorbox}[title=Languagues]
\skills{{Español/4.3},{English/4}}

Native language: Português
\end{tcolorbox}
%
%\begin{tcolorbox}[title=Tester]
%\lipsum[1-3]
%\end{tcolorbox}
%
\begin{tcolorbox}[title=Profile]
\lipsum[4]
\end{tcolorbox}
\renewcommand{\arraystretch}{1.2}
\begin{tabularx}{\linewidth}{m{0.3cm} X}
\midrule
\rotatebox{90}{1820} & Big Europe Company \\
& {\color{cyan}\textbf{Junior Janitor}}  \\
& \newcount\zz
\loop
Lorem ipsum dolor sit amet
\ifnum\zz<8
\repeat \\
\midrule
\end{tabularx}
\begin{tabularx}{\linewidth}{m{0.3cm} X}
\rotatebox{90}{1826} & \LaTeX \, Corporation \\
& {\color{cyan}\textbf{Great Janitor}}  \\
& \newcount\zz
\loop
Lorem ipsum dolor sit amet
\ifnum\zz<10
\repeat \\
\end{tabularx}
\begin{tabularx}{\linewidth}{m{0.3cm} X}
\midrule
\rotatebox{90}{1841} & 4D Printer Unlimited  \\
& {\color{cyan}\textbf{Senior Janitor}}  \\
&
\lipsum[4] \\
\midrule
\end{tabularx}
\end{tcolorbox}
\begin{tabularx}{\linewidth}{m{0.3cm} X}
\midrule
\rotatebox{90}{1820} & Random University \\
& {\color{cyan}\textbf{Hard Engineering}}  \\
& \newcount\zz
\loop
Lorem ipsum dolor sit amet
\ifnum\zz<5
\repeat \\
\midrule
\end{tabularx}
\begin{tabularx}{\linewidth}{m{0.3cm} X}
\rotatebox{90}{1826} & \LaTeX \, Corporation \\
& {\color{cyan}\textbf{Master in Janitor}}  \\
& \newcount\zz
\loop
Lorem ipsum dolor sit amet
\ifnum\zz<3
\repeat \\
\midrule
\end{tabularx}
\begin{tabularx}{\linewidth}{m{0.3cm} X}
\rotatebox{90}{1826} & \LaTeX \, Corporation \\
& {\color{cyan}\textbf{P.h.D in Janitor}}  \\
& \newcount\zz
\loop
Lorem ipsum dolor sit amet
\ifnum\zz<3
\repeat \\
\midrule
\end{tabularx}
\end{tcolorbox}
\begin{tcolorbox}[title=Background]
\lipsum[7-8]
\end{tcolorbox}
\end{document}


Then the layout page:

\documentclass[12pt]{article}
\usepackage[many]{tcolorbox}
\usepackage[sfdefault]{ClearSans}
\usepackage[T1]{fontenc}
\usepackage{microtype}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\usepackage{lmodern}
\usepackage{tikz}
\usepackage{tikzpagenodes}
\usepackage{xcolor}
\usepackage{lipsum}
\usepackage{tabularx}
\def\tabularxcolumn#1{m{#1}}
\renewcommand{\arraystretch}{1.8}
\colorlet{DarkGray}{gray!20!black}
\colorlet{LightGray}{gray!20!white}
\usepackage{geometry}
\geometry{paper=a4paper,top=4cm}
\usepackage{pdfpages}
\usepackage{atbegshi}
\colorlet{mygreen}{black!50!cyan}

\begin{tikzpicture}[remember picture,overlay]
\fill[mygreen]
(current page.north west) -- (current page.north east) --
([yshift=+20pt]current page.north east|-current page text area.north east) --
([yshift=+20pt]current page.north|-current page text area.north) --
([yshift=+20pt]current page.north|-current page text area.north) --
([yshift=+20pt]current page.north west|-current page text area.north west) -- cycle;
\node[font=\sffamily\bfseries\color{black},anchor=center] at ([yshift=-40pt]current page.north)
\node[font=\sffamily\bfseries\color{white},anchor=center] at ([yshift=-40pt, xshift=3.5cm]current page.north west)
{\fontsize{50}{60}\selectfont \clearlight --- {[}};
\node[font=\sffamily\bfseries\color{white},anchor=center] at ([yshift=-40pt, xshift=-3.5cm]current page.north east)
{\fontsize{50}{60}\selectfont \clearlight  {]} --- };
%
\node[font=\sffamily\bfseries\color{white},anchor=center] at ([yshift=-80pt]current page.north)
{{\Large Mechanical Janitor}};
\end{tikzpicture}%
}
\pagestyle{empty}
\begin{document}
%\begin{tcolorbox}[colback=black!40!cyan]\centering {\Huge Name} \\ \bigskip {\LARGE Mechanical Engineer}
%\end{tcolorbox}
\includepdf[,pages=-,nup=3x1,columnstrict=true,]{CV_g_Contents}
\end{document}


I maintain a Latex template targetted for Engineers on Github, you can find it at https://github.com/sb2nov/resume

As I haven't seen it here yet, I would like to mention limecv which is shipped with TeX Live (development on GitHub: https://github.com/opieters/limecv). Apart from your CV you can create a cover letter in a similar design with that package.

The following pictures are taken from the documentation.

An other quite recent style is available here: http://mrzool.cc/tex-boilerplates/