Creating a designer’s CV in LaTeX

I got some requests of people that wanted to see a LaTeX template for a curriculum vitae (CV) or resume, even after I wrote a guide to building a plain and simple LaTeX CV. Therefore I’ve decided to write another guide. This post will teach you how to get creative with LaTeX and build a designer’s CV (that’s what I call it). If you just want a CV template, scroll down to find it.

This CV will be set up in a similar way to the previous one. However, the big difference is that this designer’s CV makes use of a two column layout, where the left column’s width is smaller than that of the right.

What you’ll be creating

Document properties and packages

Probably for the first time on this blog, we will be using the memoir documentclass. The reason for this are the endless possibilities that this class offers. I do not expect you to read the full documentation of memoir, as we will only be using a small part of it. The first line of your document:

\documentclass[a4paper,12pt,final]{memoir}

Next, some design specifications are required. Add the following lines to the preamble:

\renewcommand{\familydefault}{bch}
\pagestyle{empty}
\setlength{\parindent}{0pt}

The first line changes the document’s font to the modern looking Charter font. The second line tells LaTeX not to print page numbers etc. and the last line removes the indentation of paragraphs.

Also, quite a few package are required for this CV.

\usepackage{flowfram}
\usepackage[top=1cm,left=1cm,right=1cm,bottom=1cm]{geometry}
\usepackage{graphicx}
\usepackage{url}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{multicol}
	\setlength{\multicolsep}{0pt}
\usepackage{paralist}
\usepackage{tikz}

Most of them should be known: geometry for layout settings, graphicx for figures, url for hyper refs and xcolor for colors. The flowfram package is the most important one, as this package allows you to create the special two column layout. The multicol and paralist packages will be used to create a two column list. Note that the latter package was also used in my post about how to create compact lists in LaTeX. Lastly, the TikZ is used to create the dotted vertical line in the template (more on that in the next section).

Create column layout

The unevenly spaced columns in the CV are created with the flowfram package. This package is rather complicated, so if you don’t follow what’s going on in the following I suggest you read the flowfram documentation.

First, two length commands will be defined:

\setlength{\vcolumnsep}{\baselineskip}
\setlength{\columnsep}{\vcolumnsep}

For the frame setup we use:

% left frame
\newflowframe{0.2\textwidth}{\textheight}{0pt}{0pt}[left]
	\newlength{\LeftMainSep}
	\setlength{\LeftMainSep}{0.2\textwidth}
	\addtolength{\LeftMainSep}{2\columnsep}

In order to change the left column width find the two lengths that say 0.2\textwidth and adjust them. For the right frame, we add:

% right frame
\newflowframe{0.7\textwidth}{\textheight}{\LeftMainSep}{0pt}[main01]

To change this frame’s width adjust the 0.7\textwidth length.

Lastly, creating the vertical line between the columns using TikZ:

\renewcommand{\ffvrule}[3]{%
\hfill
\tikz{%
	\draw[loosely dotted,color=RoyalBlue,line width=1.5pt,yshift=-#1] 
	(0,0) -- (0pt,#3);}%
\hfill\mbox{}}
\insertvrule{flow}{1}{flow}{2}

Now, the above might be a bit difficult to understand. No problem, because all you might want to change here is the width of the columns.

Define macros (for convience)

Let’s define some commands that will make typesetting the CV a lot easier. First two vertical spacing commands to make the spacing between sections and item consistent. Note that we’ve also used these commands in the previous CV tutorial.

\newcommand{\Sep}{\vspace{1.5em}}
\newcommand{\SmallSep}{\vspace{0.5em}}

We’ll also define an environment for the ‘About me’ section:

\newenvironment{AboutMe}
	{\ignorespaces\textbf{\color{RoyalBlue} About me}}
	{\Sep\ignorespacesafterend}

Hence this environment is called AboutMe and can be used with \begin{AboutMe}...\end{AboutMe}.

Two more commands are introduced to create a new section (\CVSection) and to create a new item/entry (\CVItem).

\newcommand{\CVSection}[1]
	{\Large\textbf{#1}\par
	\SmallSep\normalsize\normalfont}
\newcommand{\CVItem}[1]
	{\textbf{\color{RoyalBlue} #1}}

That’s it for the preamble part!

Begin document

My advice now would be to open the downloaded .tex file and see how the left and right frames are filled with content. I’ll give a very brief explanation on what is done.

Left frame

The left frame consists of a figure environment for a photo of yourself, if wanted. Just remove the corresponding lines if you’d like a CV without photo. Thereafter, your name, phone and email are printed. This text is right-aligned with the flushright environment.

Right frame

The right frame is set up similar to the plain CV I wrote about earlier. First, the previously define AboutMe environment is used. Thereafter, several sections are created. This all speaks for itself I hope, but if not: feel free to leave a comment!

One thing worth mentioning is the two column list in the template. This is done by creating a two column minipage with the multicols environment. Within this environment, a list is created with compactitem. This is part of the paralist package, which you might remember from an earlier post.

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.

UPDATE

Thanks to the comment of Rosario below, a fix is found for the problem when you want to use this template for a multi page CV. This fix replaces the dotted vertical line by one that is created with TikZ. I’ll quote Rosario here:

Instead of defining the dotted line as a vertical rule (\insertvrule), I placed in a dedicated static frame.
Replace the frame definitions and the definition of the dotted line by the following code:

% left frame
\newflowframe{0.2\textwidth}{\textheight}{0pt}{0pt}[left]
	\newlength{\LeftMainSep}
	\setlength{\LeftMainSep}{0.2\textwidth}
	\addtolength{\LeftMainSep}{1\columnsep}
 
% small static frame for the vertical line
\newstaticframe{1.5pt}{\textheight}{\LeftMainSep}{0pt}
 
% content of the static frame
\begin{staticcontents}{1}
\hfill
\tikz{%
	\draw[loosely dotted,color=RoyalBlue,line width=1.5pt,yshift=0]
	(0,0) -- (0,\textheight);}%
\hfill\mbox{}
\end{staticcontents}
 
% right frame
\addtolength{\LeftMainSep}{1.5pt}
\addtolength{\LeftMainSep}{1\columnsep}
\newflowframe{0.7\textwidth}{\textheight}{\LeftMainSep}{0pt}[main01]

At the end of each page, you still need to “jump” frame as Frits proposed:

\clearpage
\framebreak
\framebreak

28 Comments

  1. Jedrzej says:

    Hi,

    Thanks for this template. However, I do encounter an issue when I try to use regional letters (polish in this specific case) and it yields the loss of “bold” editing. I use such packages:

    \usepackage[utf8]{inputenc}
    \usepackage{polski}
    \usepackage[polish]{babel}

    Does anyone know the solution for this issue?

    BR
    Jedrzej

  2. Eagleservicecompany.com – offers plumbing, heating & air conditioning repairs in Birmingham AL. For more information visit our website.

  3. […] am writing a multi-page CV using a modified template from howtotex.com. However, I get a short line of dots at the top left of the second page. How can I get rid of this? […]

  4. Manikandan says:

    how to continue the contents of the left frame to a new page?

  5. I savour, lead to I discovered exactly what I used to be taking a look for.
    You have ended my 4 day long hunt! God Bless you man. Have a nice day.
    Bye

  6. Awesome! Its truly remarkable paragraph, I have got much clear
    idea about from this post.

  7. Mohammad says:

    Hi,
    In the method you described for multipage CVs, one needs to insert at the end of each page. I manipulated that method slightly to overcome this problem. The main idea is to use a static frame for the left column. Here is the left column definition change:

    % left frame
    \newstaticframe[1]{....

    That [1] is for having the content of left column only on the first page (not every page). Furthermore, the content of the left column should be corrected:

    % Left frame
    %%%%%%%%%%%%%%%%%%%%
    \begin{staticcontents}{1}
    \vspace{-20.5cm}
    \begin{flushright}\small
    \includegraphics[width=0.8\textwidth]{ME.jpg}
    Mohammad Elmi\\School of Civil Eng.\\University of Tehran\\Enghelab St.\\ Tehran, Iran\\

    \url{m.elmi@ut.ac.ir}\\
    \url{http://melmi.ir/}
    \end{flushright}\normalsize
    \end{staticcontents}
    %\framebreak

    Please note that I remove the figure environment.

    • John says:

      Hi Mohammad!

      I tried your method and it’s awesome, but I have a little issue. I can’t produce the vertical line on the second page. What should I do?

      Thanks in advance!

  8. Mir says:

    Hello, I really like the look of your CV and I’d like to use it. Do you know an easy way to add there required text “I hereby agree for my personal data, included in my job application, to be processed in line with the needs of recruitment, in accordance with the Law on Personal Data Protection of 29 August 1997 (Law Gazette from 2002, No.101, heading 926, as amended).” in a foot (whereas we turned off the options connected with this area)?

  9. Julian says:

    Thanks so much, this looks great!
    Unfortunately I have one problem with the Photo. If I use the given file and use the line
    \includegraphics[width=0.6\columnwidth]{photo}
    I get a “Latex Error: ./designers-cv-howtotex.tex:83 LaTeX Error: File `photo’ not found.”

    If I, however, change the line to
    \includegraphics[width=0.6\columnwidth]{photo.pdf}
    or any other file name, I receive the error
    “Latex Error: ./designers-cv-howtotex.tex:83 LaTeX Error: Cannot determine size of graphic in photo.pdf (no BoundingBox).”

    Are there any hints on how to fix this?

    Cheers,
    Julian

    • Frits says:

      What happens if you use a photo other than the given photo.pdf?

    • Rosario says:

      The problem might be that you are running latex on the source code, but I guess you’ll need to run pdflatex instead (I don’t remember whether latex can handle included pdf files, but I believe it can include only ps/eps graphics).

    • Otavio Augusto says:

      Hi Julian. pdfLatex needs the the photo is in .PDF format. My hint to solve it, is just add the epstopdf package in your Latex source.

      \usepackage{epstopdf}

      However, you must be using .eps format in your source.

      Another way, is just convert your .eps or another photo format, in .pdf format, and after include in your latex source.

      I hope it was helpful!

  10. Manu says:

    hello, I really liked the design of the curriculum so I decided to apply.
    but when compiling it generates this error:
    Running miktex-makemf.exe…
    miktex-makemf: The bchr7t source file could not be fount.
    Running hbf2gf.exe…

    hbf2gf (CJK ver. 4.8.0)

    Couldn’t find ‘bchr.cfg’
    miktex-maketfm: No creation rule for font bchr7t.

    ! Font OT1/bch/m/n/12=bchr7t at 12.0pt not loadable: Metric (TFM) file not foun
    d.

    relax
    l.77 \begin{document}

    ?
    ! Emergency stop.

    relax
    l.77 \begin{document}

    ?

    why this happens? could help me.
    I use MiKTeX on Windows 7 and vim as text editor.

    • Frits says:

      It looks like MiKTeX is not able to find certain font files. This should not occur. I’ve tried to run the template with MiKTeX 2.9/Windows 7, and I do not get the error message.

      It might help if you reinstall MiKTeX, if that’s not too much trouble.

  11. what is a cv says:

    It’s in reality a nice and helpful piece of info. I am happy that you just shared this useful information with us. Please stay us informed like this. Thanks for sharing.

  12. Araújo says:

    this is so beautiful i have to congratulate you for this.

  13. Marios says:

    I have a question.
    When the content is more than one page,the right frame in the second page is not displayed correctly.
    Is this template only for 1 page CVs?
    By the way very nice template!

    • Frits says:

      Hi Marios,

      Thanks for the heads up. Originally, the CV was intended to have only one page, but I see I forgot to mention that.

      Anyway, in order to get the content right in the second page, add the following in the place where you want to start your second page:

      \vfill % skip to end of page
      \framebreak % go to next frame (left frame again)
      \hbox{} % insert imaginairy content in left frame
      \framebreak % go to next frame (right frame)

      Problem is that the vertical rule gets displayed incorrectly now. I’ve tried to fix that, but so far without luck. Maybe some of the readers here know a solution?

      • Iris says:

        Hi,

        I had the same issue (about the line being wrong when using multiple pages).

        After a lot of attempts I gave up and created two documents that I later combined (in their pdf format).

        If anyone knows a solution I’d be very interested.

        Great template by the way!

        • Manu says:

          I have the same problem, damn, I really like the design.

        • Rosario says:

          The design seems to be alright on all pages with odd page numbers, so another solution would be to leave every second page empty and then print only odd pages.

          Still, I’d be happy if someone finds a solution for getting even pages right, too.

          Anyway, very nice design!

        • Rosario says:

          I guess I found a solution …

          Instead of defining the dotted line as a vertical rule (\insertvrule), I placed in a dedicated static frame.

          Replace the frame definitions and the definition of the dotted line by the following code:

           
          % left frame
          \newflowframe{0.2\textwidth}{\textheight}{0pt}{0pt}[left]
          	\newlength{\LeftMainSep}
          	\setlength{\LeftMainSep}{0.2\textwidth}
          	\addtolength{\LeftMainSep}{1\columnsep}
          
          % small static frame for the vertical line
          \newstaticframe{1.5pt}{\textheight}{\LeftMainSep}{0pt}
          
          % content of the static frame
          \begin{staticcontents}{1}
          \hfill
          \tikz{%
          	\draw[loosely dotted,color=RoyalBlue,line width=1.5pt,yshift=0] 
          	(0,0) -- (0,\textheight);}%
          \hfill\mbox{}
          \end{staticcontents}
          
          % right frame
          \addtolength{\LeftMainSep}{1.5pt}
          \addtolength{\LeftMainSep}{1\columnsep}
          \newflowframe{0.7\textwidth}{\textheight}{\LeftMainSep}{0pt}[main01]
          

          At the end of each page, you still need to “jump” frame as Frits proposed above. Alternatively, this works for me, too:

           
          \clearpage
          \framebreak
          \framebreak
          

          Have fun!

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=""> <s> <strike> <strong>