A guide to building a plain and simple LaTeX CV

I got some requests of people that wanted to see a LaTeX template for a curriculum vitae (CV) or resume. Quite a lot of such templates can be found on the internet. However, the readers of this blog are probably interested in LaTeX as I am, so I decided to make some kind of ‘step-by-step’ guide. This post will enable you to build a plain and simple CV: nothing fancy, since I myself like minimalistic documents :) If you just want a CV template, scroll down to find it.

What you’ll be creating

Preamble

We will be using the KOMA article class as documentclass (scrartcl). Furthermore we will define the paper size to be A4.

\documentclass[paper=a4,fontsize=11pt]{scrartcl}

NOTE: If you’re not familiar with the KOMA class, you can get the same result with

\documentclass[a4paper,11pt]{article}

Next, we are going to add the most standard packages that everyone should at least have in his or her LaTeX preamble.

\usepackage{amsmath,amsfonts,amsthm} 
\usepackage[pdftex]{graphicx} 
\usepackage[svgnames]{xcolor} 
\usepackage{geometry} 
     \textheight=700px 
\usepackage{url} 
\usepackage{wrapfig}

Explaining these lines should not be necessary, but if you get lost here feel free to ask me a question or check the CTAN archives for the package manuals. As a sidenote: the \textheight command was added so that I could fit all the content on one page (to prevent widows and orphans).

Also, more specific commands/packages are added. First I enabled french spacing, which removes the extra spacing at the end of sentences. This might be a matter of taste. Next, I removed all possible headers, footers and page numbering, since you don’t want that on your CV:

\frenchspacing 
\pagestyle{empty}

Custom section headings

The CV is divided into several parts and the sectioning of those parts are customized using the sectsty package:

\usepackage{sectsty} 
    \sectionfont{% 
        \usefont{OT1}{phv}{b}{n}% 
        \sectionrule{0pt}{0pt}{-5pt}{3pt} }

The first line calls the package. The command thereafter defines the font that is used. First, \usefont is for the font Helvetica, bold. If you want another font, the possibilities are described here. Next, the \sectionrule command is for the horizontal line under the titles. I already wrote a post on the sectionrule command.

Custom spacing

Basically, a CV/resume can be seen as a large table. Therefore, we need to define some spacing commands in order to align all the content the same. Let’s call the spacing length spacebox. Next, we will use to LaTeX command \settowidth to define the spacing:

\newlength{\spacebox} 
\settowidth{\spacebox}{8888888888}

The width of this spacebox is thus equal to the space taken by the string 8888888888.

Similar, we will also define a command for the vertical spacing. This command is not for aligning text, so this one will be more easy to define. Let’s name this one sepspace:

\newcommand{\sepspace}{\vspace*{1em}}

The title

The title of your future resume consists of your name and a slogan underneath it. These two items will be defined with two new commands, similar to what I mostly do in my other templates:

\newcommand{\MyName}[1]{ 
    \Huge \usefont{OT1}{phv}{b}{n} \hfill #1 
    \par \normalsize \normalfont}

So, we use the \newcommand command to define a new command MyName (having one input entry). This MyName command will display text as defined in the second line: Huge text, with a font as talked about earlier. The \hfill command will make sure that the MyName text is aligned right. The last line is there to reset LaTeX to the default settings, as we do not want are complete document having huge text ;-)

The same will be done for a subtitle of your resume. We’ll call it MySlogan and render it as large, italic text (also aligned right). Take a look at the TeX file for this one.

The sections

The CV/resume will be divided into several parts. These parts are introduced with sections, which will be defined using another new command:

\newcommand{\NewPart}[1]{\section*{\uppercase{#1}}}

I think this one speaks for itself.

Personal details, Skills

As can be seen in the template preview, the personal details and the skills sections look very much alike. I’ll explain this type first, and the education and work experience sections later.
Let’s define a new environment, call it PersonalEntry with two input arguments:

\newcommand{\PersonalEntry}[2]{ 
    \noindent\hangindent=2em\hangafter=0 
    \parbox{\spacebox}{ 
    \textit{#1}} 
    \hspace{1.5em} #2 \par}

The second line makes sure all the lines will be indented by 2em. Then, the \parbox command will be the box that contains the first input argument: Birth, address, etc. This box will have a fixed width, defined by the earlier mentioned \spacebox. Thereafter, the second argument is printed 1.5em right of that box. Got it? ;-) The skills section will be similar to this one (have a look at the TeX file), this section will be named SkillsEntry.

Education, Work experience

The other parts of your future CV/resume should be pretty straight-forward by now. Let’s explain them quickly.

\newcommand{\EducationEntry}[4]{ 
    \noindent \textbf{#1} \hfill 
    \colorbox{Black}{% 
        \parbox{6em}{% 
        \hfill\color{White}#2}} \par 
    \noindent \textit{#3} \par 
    \noindent\hangindent=2em\hangafter=0 \small #4 
    \normalsize \par}

So we define a new environment: for the Education part we’ll call this EducationEntry. Then, on the second line we see that the first argument is printed in bold: this will be the name/type of the study. Note the \hfill command, meaning that whatever comes next will be aligned right. This will be the black \colorbox on line 3. This box has a fixed width, defined with \parbox{6em}. The second \hfill command makes sure that the text inside the box is aligned right. Thereafter comes the second input argument, which will be the duration of the study. This argument is printed in white inside the black box. Next, the \par command indicates that we’re starting on a new line. On this line, the third input argument will be printed: the name of the university. This one is printed italic. The fourth and last argument will be the description of the study, something I recommend adding to your resume/CV! The whole description will be indented by an amount of 2em, similar to Personal Details part (described above).

Guess what? We’re done! Well, almost ;-) The preamble part is done, and what remains (the document itself) will be described very briefly.

Adding a picture

I’m not sure why one wants to do this (unless you’re a model ;-)), but some people add a picture of themselves to their CV’s. Therefore I also made some space for this option. NOTE: If you do not want this, simply delete this part from the .tex file.

\begin{wrapfigure}{l}{0.5\textwidth} 
    \vspace*{-2em} 
    \includegraphics[width=0.15\textwidth]{photo} 
\end{wrapfigure}

I think this one is pretty straight-forward. But if you do not understand, have a look at the wrapfig package documentation.

The rest of the CV/resume

First, the previously defined commands \MyName and \MySlogan will be used to create the title. Followed by the \sepspace command, to create some vertical spacing. Hereafter, the different parts of the document are added. Have a look at the .tex file and if you don’t understand what it says, feel free to contact me!

The result

Download PDF
Download ZIP. This zip-archive contains the PDF, TEX and photo file that were used in this tutorial.

Want more?

If there are any templates you like me to add to this section, feel free to contact me.

10 Comments

  1. FJ says:

    A great introduction to make a CV in LaTeX. I made attempts with templates but they were not fulfilling and adapting them requires more knowledge from LaTeX than I have.

    Many thanks for this tutorial!

  2. Hi there to all, it’s really a nice for me to pay
    a visit this web page, it contains important Information.

  3. Leonardo says:

    Hi,

    I want to put on this template some items to describe a Work experience. Could you help me please, i try with that but it don’t work.

    \begin{itemize}
    \item bla bla bla.
    \end{itemize}

    Thanks in advance guys.

    Leonardo

  4. Mic says:

    hi! Thx much for your support! I have a question concering the text underneath the “huge” name, how to get this? because \MyName only supports one parameter, this would be name itself and what about the curriculum vitae text?, am I missing sth?

    • Frits says:

      The “Curriculum vitae” text is changed with the \MySlogan command. In the .tex file, it’s right underneath the \MyName command.

  5. [...] How to TeX’s Plain and Simple LaTeX CV [...]

  6. Alexandra says:

    Such a great site! Very useful and helpful, especially for me, as a beginner in LaTeX.

    This CV Template is great too! Simple and fancy. I already made my cv, using this Template.
    I also want to make it in Russian. Could you please give me hints on how to create it in Russian? I have tried to use packages and commands from the Template: billingual document, but it doesn’t work.

    Many thanks for the great site!

    All the best.

  7. rot says:

    This is what i have been looking for !! thnx a lot !

  8. Good site! I truly love how it is easy on my eyes and the data are well written. I’m wondering how I could be notified when a new post has been made. I have subscribed to your RSS which must do the trick! Have a nice day!

  9. Excellent goods from you, man. I have consider your stuff previous to and you’re simply extremely excellent. I really like what you’ve bought right here, certainly like what you are saying and the way through which you are saying it. You are making it enjoyable and you continue to take care of to keep it sensible. I cant wait to read much more from you. That is actually a great website.

Leave a Reply




XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>