Creating a C.V. with LaTeX and moderncv

by on February 18, 2015
  • cv
  • featured
  • latex
  • technical

This article hasn't been updated for over a year.

The moderncv document class provides an easy way to create a good looking curriculum vitae in LaTeX. Unfortunately, documentation for the package seems to be non-existent. As usual, questions on Stack Exchange were the best resource for finding out how the package works. While I didn’t use every function moderncv provides, I hope this article explains enough for you to create the same basic c.v. as I did.

Example CV generated with moderncv.

Start out with a similar structure like any other LaTeX document:


\section{Work Experience}

Personal data

Your personal data has to be set above the \begin{document} block. Most properties can be ignored if you don’t use them, just remove them from your source.

\title{Resumé title (optional)}
\address{street and number}{postcode city}
\extrainfo{additional information}
\quote{Some quote (optional)}

Depending on the theme, this information is shown in a block at the top or the bottom of the page.


We’ll be using the cventry command to list educational items. This command requires 6 arguments in the order listed below. Note that the appearance of these arguments on the generated C.V. depends on the selected theme. Try not swap arguments because you think they look better that way, it may look even worse if you ever decide to use another theme. The last 3 arguments may be empty.


A Master’s degree from Thunderwood College could look like:

\cventry{2009-2012}{M.Sc Internet Technologies}{Thunderwood College}{}{}{}

In case you need a longer description:

\cventry{2009-2012}{M.Sc Internet Technologies}{Thunderwood College}{}{}{%
	I clicked some buttons and all I got was this silly degree.\\
	Another line here.}

Work experience

The same cventry command is used to list work experience. Some arguments have a different meaning when used for work experience:


An example job would be:

\cventry{2012-2015}{Teacher}{Thunderwood College}{}{}{}


The cvlanguage command allows you to define the different languages you are able to communicate in. Some people prefer to split this in their ability to read, write, speak and listen. As far as I know, moderncv does not support this by default. You’ll have to do the additional markup yourself.


For example:

\cvlanguage{dutch}{mother tongue}{}
\cvlanguage{english}{good}{written and spoken}

Other information

The document class also provides a few generic commands to list other data on your resume. I suggest using the cventry and cvlanguage commands if possible, as themes may apply special markup for those. That said, try out the commands listed below:


Setting the theme

In case you do care about the looks of your c.v. and don’t like the defaults: change the theme! The moderncvtheme command sets a theme and color scheme for the generated curriculum vitae. Four usable themes are shipped by default, a fifth empty theme can be used to create your own.

Every theme supports 7 color schemes. Note that some themes don’t use much color at all, so setting the color scheme may not change much.