Your curriculum in LaTeX - part four
This is the fourth part of the tutorial. You can find here the third part.
In the first part we took care of the title of the resume; in the second part we organized the sections, using an appropriate style; finally, in the third part, we formatted the footer, as a container for our contact data. Now it's time to tackle the Experiences entries, the place where to display infos about our past and current employments. The entries will look like the following

For more clarity, the following picture shows the used grid

It is basically a table, with two columns. The first one is 2cm wide and the second spans for the remaining space of the table. The total width of the table is slightly less than the width of the page body width (i.e. the page width minus the margins width.)
To achieve this, we will use the tabularx environment, which is able calculate automatically the column size depending on the total width of the table. The general form of the environment is the following:
\begin{tabularx}{width}{preamble}
[... table data ...]
\end{tabularx}
The width parameter is the total length of the table, whereas the preamble is used for the column specifications. For each column in the table we can use a symbol in the preamble to specify which kind of column we want. For example, to indicate that a column should have the width automatically calculated, we have to use the “X” symbol in the preamble. So, the code
\begin{tabularx}{5cm}{XX}
[... table data ...]
\end{tabularx}
will define a table 5cm wide featuring two columns, both with an automatic width (in this case each column will be 2.5cm wide.) Among the preamble options, we can use the “p” symbol, followed by a width specification, to force a column to that width. So we could write something like that
\begin{tabularx}{5cm}{p{2cm}X}
[... table data ...]
\end{tabularx}
In this case the table will be 5cm wide, with the first column spanning for 2cm and the second column automatically adjusted. There's a lot of options one could specify in the preamble, so I suggest to read the tabularx document to become aware of all the possibilities.
The data enclosed in the environment will be formatted as a table. To specify rows and columns the symbols & and \\ has to be used. For example the following
\begin{tabularx}{5cm}{p{2cm}X}
Name & Stefano \\
Surname & Kindoblue \\
City & Amsterdam
\end{tabularx}
will generate this table:

Back to our requirements: we need to define a table wide, say, 97% of the page body width. To calculate that length we can use the latex command \linewidth, which represents the length of a line of text in the document (nota a \textwidth) I think we are pretty much done. The following code will create the desired table
\begin{tabularx}{0.97\linewidth}{p{2cm}X}
[... table data ...]
\end{tabularx}
Finally we can write our first entry in the Experiences section.
-
\documentclass[a4paper, oneside, final]{scrartcl}
-
-
\usepackage{soul}
-
\usepackage{scrpage2}
-
\usepackage{titlesec}
-
\usepackage{marvosym}
-
\usepackage{tabularx}
-
-
\titleformat{\section}{\large\scshape\raggedright}{}{0em}{}[\titlerule]
-
-
\pagestyle{scrheadings}
-
-
\renewcommand{\headfont}{\normalfont\rmfamily\scshape}
-
-
% add the symbols for email and phone contact data
-
\cofoot{\so{Liefdestraat, 7 - 1234LI, Amsterdam, Nederland}\\
-
\so{ {\Large\Letter} jeff@gmail.com \ {\Large\Telefon} +31 (0)6 12345678}}
-
-
\begin{document}
-
\begin{center}
-
-
\textsc{\Huge{\so{Iulius Caesar}}}
-
-
\section{Experiences}
-
-
\begin{tabularx}{0.97\linewidth}{p{2cm}X}
-
Period & August 2004 --- September 2006\\
-
Employer & Layer BV \hfill Amsterdam, The Netherlands\\
-
Job Title & J2EE Analyst programmer\\
-
Languages & J2EE\\
-
& Non eram nescius, Brute, cum, quae summis ingeniis exquisitaque doctrina philosophi Graeco sermone tractavissent, ea Latinis litteris mandaremus, fore ut hic noster labor in varias reprehensiones incurreret.
-
\end{tabularx}
-
-
\section{Skills}
-
\section{Education}
-
\section{Publications}
-
\section{Personal Info}
-
\section{Languages}
-
\section{Interests}
-
-
\end{center}
-
\end{document}
Note the use of \hfill command, to push the “Amsterdam, The Netherlands” apart from the company name. The result will be this:

Nice. Now we need to format the first column, which should be ragged left and in small caps. To do so, we need to modify the preamble. Remember the symbols used to specify the column type? If we prefix those symbols with something like that
>{decl}
Then the decl will be put directly in front of the entry of the column. The decl can be a sequence of Latex commands, that will act on the column matter. We can write something like that:
\begin{tabularx}{0.97\linewidth}{>{\raggedleft\scshape}p{2cm}X}
[... table data ...]
\end{tabularx}
What we just did is to declare the text ragged left and small caps enabled for the first column. Let's go back to our curriculum and modify accordingly. I will also make bold some parts:
-
\documentclass[a4paper, oneside, final]{scrartcl}
-
-
\usepackage{soul}
-
\usepackage{scrpage2}
-
\usepackage{titlesec}
-
\usepackage{marvosym}
-
\usepackage{tabularx}
-
-
\titleformat{\section}{\large\scshape\raggedright}{}{0em}{}[\titlerule]
-
-
\pagestyle{scrheadings}
-
-
\renewcommand{\headfont}{\normalfont\rmfamily\scshape}
-
-
% add the symbols for email and phone contact data
-
\cofoot{\so{Liefdestraat, 7 - 1234LI, Amsterdam, Nederland}\\
-
\so{ {\Large\Letter} jeff@gmail.com \ {\Large\Telefon} +31 (0)6 12345678}}
-
-
\begin{document}
-
\begin{center}
-
-
\textsc{\Huge{\so{Iulius Caesar}}}
-
-
\section{Experiences}
-
-
\begin{tabularx}{0.97\linewidth}{>{\raggedleft\scshape}p{2cm}X}
-
Period & \textbf{August 2004 --- September 2006}\\
-
Employer & \textbf{Layer BV \hfill Amsterdam, The Netherlands}\\
-
Job Title & \textbf{J2EE Analyst programmer}\\
-
Languages & J2EE\\
-
& Non eram nescius, Brute, cum, quae summis ingeniis exquisitaque doctrina philosophi Graeco sermone tractavissent, ea Latinis litteris mandaremus, fore ut hic noster labor in varias reprehensiones incurreret.
-
\end{tabularx}
-
-
\section{Skills}
-
\section{Education}
-
\section{Publications}
-
\section{Personal Info}
-
\section{Languages}
-
\section{Interests}
-
-
\end{center}
-
\end{document}
The result is the following:

To highlight the salient data of the employment entry in respect of the job description, we can use a gray background for the first four rows of the table. The colortbl package provides several commands to colorize backgrounds in tables. For example, the command
\rowcolor[gray]{.90}
set the background color to 90% gray for a given row. We can define a custom command to be used as a shortcut, in this way
\newcommand{\gray}{\rowcolor[gray]{.90}}
Now in our resume, for the first four rows of the table we can use the command \gray. But don't forget to include the colortbl package!
-
\documentclass[a4paper, oneside, final]{scrartcl}
-
-
\usepackage{soul}
-
\usepackage{scrpage2}
-
\usepackage{titlesec}
-
\usepackage{marvosym}
-
\usepackage{tabularx,colortbl}
-
-
\titleformat{\section}{\large\scshape\raggedright}{}{0em}{}[\titlerule]
-
-
\pagestyle{scrheadings}
-
-
\renewcommand{\headfont}{\normalfont\rmfamily\scshape}
-
-
% add the symbols for email and phone contact data
-
\cofoot{\so{Liefdestraat, 7 - 1234LI, Amsterdam, Nederland}\\
-
\so{ {\Large\Letter} jeff@gmail.com \ {\Large\Telefon} +31 (0)6 12345678}}
-
-
\begin{document}
-
\begin{center}
-
-
\textsc{\Huge{\so{Iulius Caesar}}}
-
-
\section{Experiences}
-
\newcommand{\gray}{\rowcolor[gray]{.90}}
-
\begin{tabularx}{0.97\linewidth}{>{\raggedleft\scshape}p{2cm}X}
-
\gray Period & \textbf{August 2004 --- September 2006}\\
-
\gray Employer & \textbf{Layer BV} \hfill Amsterdam, The Netherlands\\
-
\gray Job Title & \textbf{J2EE Analyst programmer}\\
-
\gray Languages & J2EE\\
-
& Non eram nescius, Brute, cum, quae summis ingeniis exquisitaque doctrina philosophi Graeco sermone tractavissent, ea Latinis litteris mandaremus, fore ut hic noster labor in varias reprehensiones incurreret.
-
\end{tabularx}
-
-
\section{Skills}
-
\section{Education}
-
\section{Publications}
-
\section{Personal Info}
-
\section{Languages}
-
\section{Interests}
-
-
\end{center}
-
\end{document}
Finally we obtain something like this:

Sweet, isn't it? We are able to define a table for our job entries, with style (at least, in my humble opinion). Only problem is there's a lot of boilerplate code to repeat for each job entry we would like to add to our document. So in the next part of the tutorial I will show how to define a custom environment that will format once for all of our job entries, regardless their number. Along the road there will be room also for some refinements.
See you in 7 seven years, then.
This looks interesting.
Can you please put up a downloadable version at the end of each tutorial, so the readers can play with it?
Why have just LaTeX when you can have it in any other format?
http://cv.b1n.org/cv-en.pdf
Liked it?
Check it out!
svn co http://b1n.googlecode.com/svn/cv/trunk/ cv
Downloadable version? It is text. Copy/paste, do you know it?
i would love to write my CV in LaTex, I really would.
But I just know that 90% of the recruiters I send my beautifully formatted PDF CV to will immediately reply with “plz resend as Word doc thx”
Sigh.
thanks for your tutorial, good work.
Neil Barlett is spot on!
I made my CV in Latex a few years ago, more or less like this blog post shows. If I send it as pdf to recruiters they just ask for a ‘MS Word version’ or worse, they ask for you to fill in their template …
Neverthless, Latex CVs are prettier and prove of some extr
I too get the “please resend as Word” response. However, I bring my LaTeX-produced CV in person during the on-site interview. One guy’s very first question was, “did you make this in LaTeX?!”
If you are living in a EU state you might take a look at this http://www.ctan.org/tex-archive/help/Catalogue/entries/europecv.html
It is a unofficial class to create european curricula.
Questo mi servirà, grazie
I’m getting crazy over this. I’m gonna make a resume in LaTeX whether anyone accepts it or not. It looks so perfect.
Btw, why do most recruiters need the resume in Word, why don’t they accept a pdf?
Nice tutorial, Stefano.
If you want to experiment with a cv in XeTeX, templates and instructions can be found here: http://nitens.org/taraborelli/cvtex
@Prabu
They want a Word version so they can make changes before sending it to the customer. Primarily they remove your contact details so the customer can’t get in touch with you directly (cutting the recruiter out of the deal), but also they like to tinker with your formatting, introduce spelling errors, add skills you don’t have… you get the picture.
Any reason why the marvosym package fonts (like \Letter and \Telefon) cannot be displayed in the pdf output (in adobe reader)? — helvetica fonts are substituted.
I checked the documentation for marvosym and it says nothing about interfering with other packages or needing others to run properly (like the KOMA you used…)
great articles, just what i have been looking for. There are a lot of crappy LaTex templates out there, but these examples show how it’s done.
The font in the output in this part is not Computer Modern (as it was in the parts before). How was that changed?
Indeed the screenshots are from different periods. The fonts may differ but I’ll tell about fonts later in the tutorial.
Bye
[…] Your curriculum in LaTeX - part four | Minimalia […]
marvellous work!!!
I am looking forward to how you will deal with the publications section. There are many types: journal articles, proceedings articles, posters, talks, invited lectures, workshop presentations, etc. It would be nice if it could be linked together somehow using bibtex. I am not so sure how to, but I found a couple of hints here
http://www.latex-community.org/viewtopic.php?f=5&p=11033
thanks for the good work!
for easier costumization it might be useful to introduce things like the following set of commands.
\newlength{\leftcolumnwidth}
\setlength{\leftcolumnwidth}{2cm}
you could then use it the newly defined length in each tabularx later on
Hi,
Thank you so much for the detailed tutorial on creating a good looking resume using LaTeX.
I have a question, may be you can address that in your next tutorial, how can I make the address shift from the bottom of the page to the top of the page? And, I want the address to show only on the first page of the resume.
Thank you in advance!
Dear Stefano:
Do you mind I translate your articles `Your curriculum in LaTeX` to Chinese ?
Thanks for reply.
Thanks for this - very nice and quite useful.
One question - the font displayed in the final version (on the first page) is smaller than the one you end with in the 4th tutorial. I was wondering what font it was and how to change the the latex file to reflect it?
Thanks again.
Thanks for the layout, it looks great! I second the question about the font, could you tell us what font you used?
For the lastest screenshots I used the pdf generated by xelatex; so I could use the opentype version of Garamond Pro by Adobe (which is not free) For more info about fonts and xelatex, you can read my other tutorial about cover letters
Bye
Thanks for clarifying that. On trying out different free fonts, I found Fontin to work out nicely with the layout. http://www.josbuivenga.demon.nl/fontin.html
In order to preserve the small caps formatting of the title and other parts the font itself has to have the smallcaps variant. On Linux, Fontin has it as well as Linux Liberation.