Writing my curriculum in LaTeX was a task that has been on my TODO-list for quite a while. I liked the style of my Word-written CV and I believed it would take hours to come up with a reasonable CV in LaTeX. Nevertheless, I recently sat down, began writing, and after not too long, I came up with a presentable result that I would like to share.
A complete minimal example can be found at the end of this post.
The Title
In order to even spacing all around, we change the page margins to 3cm using the geometry package. We further make use of the standard article maketitle command, printing the person’s name (title field) and e-mail address (author field).
\documentclass[10pt]{article} \usepackage[margin=3cm]{geometry} \title{\bfseries\Huge Tom T. Texblog} \author{texblog+cv@gmail.com} \date{} \begin{document} \maketitle \end{document}
In case you prefer to add a photo to your CV, try the following slightly more complex code, using minipage:
\documentclass[10pt]{article} \usepackage[margin=3cm]{geometry} \title{\bfseries\Huge Tom T. Texblog} \author{texblog+cv@gmail.com} \date{} \begin{document} \begin{minipage}{0.65\textwidth} \begingroup \let\center\flushleft \let\endcenter\endflushleft \maketitle \endgroup \end{minipage} \begin{minipage}{0.3\textwidth} \flushright{\rule{3.5cm}{4.5cm}} \end{minipage} \end{document}
Address and Personal Information
We use minipage again to split the page into two parts, one for the address and the second for some personal information if that’s required. Straight forward.
\begin{minipage}[ht]{0.48\textwidth} Main Road 25\\ City 12345\\ State of Sabotage \end{minipage} \begin{minipage}[ht]{0.48\textwidth} Nonlandian\\ January 3rd, 2020\\ +12 34 56 789 \end{minipage}
The space between the title and the address is just about right. To add more space, use:
\vspace{2em}
The Content
After the cosmetics, we now add the actual content. We use the standard article section with a star to omit numbering. Sections may include: Objective (of the CV), Professional Experience, Education, Languages, Publications, Programming Languages, etc. We will show a few examples here, the structure is always the same.
Let’s first prepare the content with some code in the preamble. We use the tabular environment to divide the page into two columns, a small column for the year/title and a wide column for the description. In order to minimize typing, we define two new columntypes in the preamble, “L” and “R” as well as a thin light-gray line in between, \VRule.
\usepackage{array, xcolor} \definecolor{lightgray}{gray}{0.8} \newcolumntype{L}{>{\raggedleft}p{0.14\textwidth}} \newcolumntype{R}{p{0.8\textwidth}} \newcommand\VRule{\color{lightgray}\vrule width 0.5pt}
Now we can start creating content sections using the tabular environment as follows:
\section*{Heading} \begin{tabular}{L!{\VRule}R} 2012&Some text\\[5pt] 2011&Some other text\\ \end{tabular}
For better readability, we add small vertical spaces between rows in the tabular.
Education
Let’s start by looking at the example with education. We highlighted the parts in bold which are most recent or most important.
\section*{Education} \begin{tabular}{L!{\VRule}R} 2005--2007&{\bf MSc in Computer Science, Great University, Country.}\\[5pt] 2001--2005&BSc in Life Science, Great University, Country.\\ \end{tabular}
Languages
Here, we use the left column for the language and the right column for the level of proficiency.
\section*{Languages} \begin{tabular}{L!{\VRule}R} Klingon&Mother tongue\\ {\bf English}&{\bf Fluent}\\ French&Fluent (DELF 2010)\\ Japanese&Fair\\ \end{tabular}
Professional Experience
\usepackage{lipsum} ... \section*{Professional Experience} \begin{tabular}{L!{\VRule}R} 2011--today&{\bf Work at company XY.}\\ &\lipsum[66]\\[5pt] 2008--2010&{\bf Trainee at company ZY.}\\ &\lipsum[66]\\ \end{tabular}
Publications
We use the bibentry package to generate an inline list of publications. The references are stored in a bibtex file.
\usepackage{bibentry} ... \bibliographystyle{plain} \nobibliography{publication.bib} \section*{Publications} \begin{tabular}{L!{\VRule}R} 2006&\bibentry{knuth2006art}\\[5pt] 1968&\bibentry{lamport1986latex}\\ \end{tabular}
Minimal Example CV
\documentclass[10pt]{article} \usepackage{array, xcolor, lipsum, bibentry} \usepackage[margin=3cm]{geometry} \title{\bfseries\Huge Tom T. Texblog} \author{texblog+cv@gmail.com} \date{} \definecolor{lightgray}{gray}{0.8} \newcolumntype{L}{>{\raggedleft}p{0.14\textwidth}} \newcolumntype{R}{p{0.8\textwidth}} \newcommand\VRule{\color{lightgray}\vrule width 0.5pt} \begin{filecontents}{publication.bib} @article{lamport1986latex, title={LaTEX: User's Guide \& Reference Manual}, author={Lamport, L.}, year={1986}, publisher={Addison-Wesley} } @book{knuth2006art, title={The art of computer programming: Generating all trees: history of combinatorial generation}, author={Knuth, D.E.}, volume={4}, year={2006}, publisher={addison-Wesley} } \end{filecontents} \begin{document} \maketitle \vspace{1em} \begin{minipage}[ht]{0.48\textwidth} Main Road 25\\ City 12345\\ State of Sabotage \end{minipage} \begin{minipage}[ht]{0.48\textwidth} Nonlandian\\ January 3rd, 2020\\ +12 34 56 789 \end{minipage} \vspace{20pt} \section*{Objective} Find a job. \section*{Professional Experience} \begin{tabular}{L!{\VRule}R} 2011--today&{\bf Work at company XY.}\\ &\lipsum[66]\\ \end{tabular} \section*{Education} \begin{tabular}{L!{\VRule}R} 2005--2007&{\bf MSc in Computer Science, Great University, Country.}\\[5pt] 2001--2005&BSc in Life Science, Great University, Country.\\ \end{tabular} \section*{Languages} \begin{tabular}{L!{\VRule}R} Klingon&Mother tongue\\ {\bf English}&{\bf Fluent}\\ French&Fluent (DELF 2010)\\ Japanese&Fair\\ \end{tabular} \bibliographystyle{plain} \nobibliography{publication} \section*{Publications} \begin{tabular}{L!{\VRule}R} 2006&\bibentry{knuth2006art}\\[5pt] 1986&\bibentry{lamport1986latex}\\ \end{tabular} {\vspace{20pt}\newline\newline \vspace{20pt} \scriptsize\hfill Created by http://texblog.org} \end{document}
Additional Resources
- Typeset your CV (xetexCV) by Rob Oakes
- A LeTeX template for a CV by Rob J Hyndman
- LaTeX example resumé/CV by Ted Pavlic
LaTeX resumé/CV template by Chris Paciorek- moderncv: A modern curriculum vitae class
- Unofficial class for European curricula vitae
- Typesetting your academic CV in LATEX
CVs on LaTeX templates- CurVe: A class for making curriculum vitae
Drop me a comment if you know of other resources and I will add them to the list.
Update
A few days after publishing this post, a vivid discussion took place with lots of interesting CV examples on hackerne.ws.
jeroendehaas
For the last three years I’ve used the moderncv package to typeset my CV: http://www.ctan.org/pkg/moderncv. Well worth checking out if you’re considering writing your CV in LaTeX.
tom
Nice, thanks! I was not aware of the package. I will add it to the list. Best, Tom.
sarvesh
I want to positioned Curriculum Vitae in the center (from left to center).
and also want to split contact information in two parts. one part just down to Applicant Name. Another part to left side of photo.
Here is the code…Please help me.
tom
Hi Sarvesh,
Thanks for your question. Please try to reduce your code to a minimal example next time. You can add another
minipage
environment to theauthor
macro and use\hfill
to center the title.Hope this helps. Best, Tom.
sarvesh
Thanks Tom
sarvesh
Dear Tom,
Is it possible to include symbol for Email, Mobile, Phone, web, Twitter etc. in this CV?
How to do this?
tom
Dear Sarvesh,
The fontawesome package has a good collection of symbols.
HTH, Tom
sarvesh
It’s working…Thanks Tom!!!
P
NIce article. For Europe CV, I use the europecv package: http://www.ctan.org/tex-archive/macros/latex/contrib/europecv.
Cheers, P.
tom
I tried the europecv package quite some time ago and forgot to add it. Thanks for the link! Cheers, Tom.
nignasi
I’ve never used but here you have two more links to CV tex templates
http://nitens.org/taraborelli/cvtex
http://www.latextemplates.com/cat/curricula-vitaes
tom
Thanks for the links. The latter has a few interesting templates. Best, Tom.
henningninneh
excellent. this looks exactly like my word-typeset cv. now i must give it a try in LaTex. thanks for this post.
tom
Thanks for your comment and have fun typing your CV in LaTeX. Cheers, Tom.
copiancestral
It looks good, but I would go with the
cv
or themoderncv
packages. They’re quite easy to use, and yet produce simple but elegant résumés.tom
Thanks for your thoughts on that topic. Appreciate it. Best, Tom.
Didier Verna
Out of completeness, you should also mention the CurVe class (shameless plug). Available on CTAN.
tom
Very nice, thanks Didier.
Here is the link: CurVe
Best, Tom.
Gergely Schmidt (@sgergely)
that is not mother tongue it is native language 😀
tom
Thanks for your remark. I guess both work. It depends on your preference. Thanks, Tom.
Bala
beautiful!!!
Professional Resume Using Latex Templates « Abstract Confusions
[…] Here is an another excellent post discussing resume. 13.060416 80.249634 Rate this: Sharing is fun:MoreLike this:LikeBe the first to like this post. […]
akmkat
Very nice, but the address/personal information does not come as two separate columns. How to fix? Please help.
tom
Hi!
Thanks for your comment. Did you use the
minipage
environment as in the example above? Please provide a minimal example and I’ll try to help.Best, Tom.
Helios
For my CV in LaTeX I used another template: http://www.tedpavlic.com/post_resume_cv_latex_example.php
tom
Thanks for your link. It’s already in the list (3rd position). Cheers, Tom.
Learning Latex – Resumes | blog.fejes.ca
[…] In any case, what got me started on a resume was a Google+ post that linked to this page: http://texblog.org/2012/04/25/writing-a-cv-in-latex/ […]
eiselekd
The layout is nice however there a problems I think:
When using tabular and you have a long list, i.e.
in the “Practical Experience” section, tabular will
not break across multiple pages. Also when you add
footnotes inside tables you need to be an expert. A simpler
2 column layout would be, it misses the vertical ruler however:
tom
Thanks for the sample code. I agree, one may run into problems, but LaTeX almost always provides a reasonable solution. I wrote about footnotes in tables in one of my previous posts. Concerning the multipage issue, often one can arrange things with margins, font size, line spacing, etc. Another possibility would be to use the longtable package instead, which allows tables to span across multiple pages.
Best, Tom.
Daniel
Thanks for a great post and blog!
I’m wondering about how to change the indentation of the dates in the first column. Suppose you want to specify the month e.g. 201203 – 201206. This causes a line-break but it seems there is more space to use to the left. What would you do?
tom
Hi Daniel,
Thanks for your comment. What you would do is to change the width of the manually defined columns. Try for example
0.25\textwidth
for L and0.6\textwidth
for R as in the code below.Best, Tom.
Daniel
Thanks! By the way, is there a way to let the red line come before the first column?
tom
Hi Daniel,
Do you mean a vertical red line? You could color a
vrule
with thexcolor
package:Changes are highlighted.
Best, Tom.
Daniel
Nice! Yes, that’s what I meant:), (of course I mean the lightgray line which I changed to red, thus the confusion). I changed \tabular to \tabu and then everything worked perfectly.
Cheers, Daniel
tom
Got it, sorry I misunderstood you initially. I’m happy it worked out though! Best, Tom.
crlsmrgf
Thank u very much!
It was also something in my TO-DO list for too long, and it was much ore easy than I thought!
tom
Great to hear you found my post useful, thanks. Tom.
Alex
I’m having trouble getting the publications section to work… Even if I copy your source code exactly, I get and error: “Citation ‘knuth2006art’ undefined”. Any idea how to fix this?
tom
Hi Alex,
Two things:
latex, bibtex, latex, latex
?publication.bib
file containing the bib-entries?In case you use the complete example provided in the post, the file will be created when you typeset the document (
latex
) the first time.Hope this helps.
Best, Tom
Luís Martins
Hi, I was testing your example and the same error appeared. In line 69 – \nobibliography{publication.bib}, I just removed the extension and the error disappeared.
tom
Changed, thanks! Tom.
Matt Brown
With the publications list, I get a vertical space in front of each of my \bibentry bits, so that the year is a line above the text. If I add some text or “\hspace{0pt}” ahead of it, it jumps back on the right line. This is an ugly hack, though. Any suggestions?
tom
Hi Matt,
Unfortunately, I wasn’t able to reproduce what you describe above. Could you provide a minimal working example? Something similar to the code below would do.
Thanks, Tom.
Matthew J. Brown
Hi Tom,
In the process of eliminating things to give a minimal example, I discovered the culprit: the hyperref package. (This is crucial for me if we’re going to be posting the CV online or sending it electronically.) I also managed to find a solution: use the longtable package instead of the ordinary tabular environment.
Best,
Matt
tom
Thanks for the feedback. I appreciate it. Best, Tom.
Pablo
Hi Matthew, the hyperref package was causing trouble to me too. Would you mention what you did to have publications AND the hyperref package both work? Thanks!
tom
Did you try using the longtable package as Matt proposed? Cheers, Tom.
Pablo
I don’t understand how longtable can help me to enable href. Do you mean to use it instead of the array package, and that will allow using the href package?
tom
Yep. Let me know if you run into problems and I will try my best to help. Best, Tom.
resume formats
interesting,thanks for sharing.
tom
thanks! cheers, tom.
Martin Vogel
Hi,
Thanks for your nice CV template.
I just wonder how to modify the code to include properly a photo in the beginning. I am not very familiar with the minipage environment.
Thanks in advance
Martin
tom
Thanks for your question, Martin. That’s fairly simple. Copy-paste the code above in the post which has the photo black box and replace:
with
You’ll have to load the
graphicx
package to make use of the width option.Let me know if you have any problems with that and if you provide the code, I’ll most certainly be able to help.
Cheers, Tom.
Preparing an Academic CV in LaTeX using Mendeley | Monkeyologist
[…] Blog’s Writing a CV in LaTeX (where I found out about the bibentry […]
Jolyon Bloomfield
Heya,
Just wanted to point out that the use of “\vspace{5pt}\\” to get nice spacing in the tables can backfire if the \vspace will cause a new line to be added to that row (if your text is _just_ the wrong length). Better is to use “\\[5pt]” which doesn’t have this problem.
Best,
Jolyon
tom
Hi Jolyon,
Thanks for taking the time to point this out. I changed the code accordingly.
Thanks,
Tom.
Phil
Hi there.
I’m very new to latex so forgive me naive question.
I noticed that when a section was a bit long it started on a new page leaving sometime a lot of extra white page after the previous section.
Is it something that can be changed easily?
Otherwise, thank for the excellent post.
tom
Hi Phil,
Thanks for your question. You probably have to play around to find the optimal arrangement. However, in general, I would not expect a section to be automatically moved to the next page if there is blank space left on the current page. Unless you add
\clearpage
or\newpage
of course.Could you provide a minimal example for illustration?
Thanks, Tom.
Phil
Thank Tom for your answer.
Here’s a quick example.
http://www.yourfilelink.com/get.php?fid=827927
Regards,
Phil
tom
Hi Phil,
Thanks for the example! Jolyon suggested using the longtable package which I posted an article on here.
Best,
Tom.
jolyonbloomfield
Hi there,
This happens because LaTeX tries to fit a tabular environment on a single page; it won’t break it across pages. I ran into this same issue recently. The fix is to use the longtable package:
You probably also want to use these commands in the preamble (otherwise the spacing gets a little big):
Then, wherever \begin{tabular} … \end{\tabular} appears, change it to the following.
I hope this helps!
Jolyon
Phil
Thank you very much everyone. I’ll try it once I’m back to the office and will let you know how it works!
Thank again,
Phil
Phil
Just a quick reply to let you it worked like a charm. Thank guys!
tom
Great, thanks for the feedback! Tom.
Ben
Dear All,
Thank you for this template. It works really great.
But I want to add a foot note stating the date and company for wich this Resume is made.
I’ve been searching the net for how to do this, but I can’t figure out how to get a footer on the first page …
Is there any good trick to do this?
Thank you!
tom
Hi Ben,
Assuming you are using the fancyhdr package and redefined the header/footer according to your needs. Now to get a header/footer on the first page, just add the following line after
\maketitle
:You can find more information on redefining header/footer here.
Best, Tom.
Johnathan
Just wanted to say this is a great guide, many thanks for this.
Cheers,
Johnathan
Rivka
Hi,
I used this as a template to write my CV, thanks!
dottag
Thank you for the awesome CV! This was exactly my Word-style but my limited knowledge of LaTeX did not allow me to do the same.
One question: how do I make the second column left-justified? I’d loke to do it because I don’t like that LaTeX stretches out the between-words spaces (it’s not an article, so the right margin looks “ragged” anyway).
tom
Hello!
Left-align the right side is done similarly to right-align the left side using
\raggedright
in the column definition. I attached a minimal working example below.peddrim
Thank you very much! Your CV template is the most beautiful I could find 😉
tom
Thanks, glad you like it. Best, Tom.
Tom Walton
Hi Tom,
Have you seen the LaTeX CV template on http://www.writelatex.com – you can open it for editing in their online editor with one click. Is pretty neat (the original template is from howtotex)
cheers,
Tom
tom
Yup, saw it. Thanks! Pretty neat indeed. Tom
Chaanakya
This post was really nice. Thank you 🙂 One suggestion/improvement: for the address/other info, you could use this code instead, which would put the address and other info flush against the left/right side respectively:
tom
Hi!
Thanks for the code! Indeed a nice way to place the address. Best, Tom.
lazhar
hello everybody , please can you give me a different links to download Latex
tom
Hi!
You can download the LaTeX distribution from TUG. I put together a few direct links for different operating systems on my resources page.
HTH,
Tom
Katia Consani
Hello, I saw this CV online
http://stat.genopole.cnrs.fr/_media/members/jchiquet/cv_fr_chiquet_20121106.pdf
I like it and I would like to create one similar. Can anyone give me some suggestions on its structure?
tom
Hi Katia,
Thanks for getting in touch. It seems that similar ideas were used in the CV in question than what I published here. Still, I wouldn’t want to re-engineer the CV in question. Why don’t you ask the person directly for a LaTeX template? That would make it much easier for you. Also, I’d be more than happy to help, should you get stuck preparing your CV with the template.
Tom
Katia Consani
Hi Tom, thanks for the quick reply, I asked the author of that CV for a latex template but I got not reply. I’d appreciate if you can suggest me a basic skeleton to obtain a similar output
tom
Hi Katia, I will give it a try and post it here…
Katia Consani
Thanks Tom, I’ll look forward to your post!
tom
Hi Katia,
Please find below code for some elements of the CV you liked. You picked the font using the LaTeX font catalogue. LaTeX lets you mix different fonts as it was done in the example CV. I wouldn’t recommend it, there are other ways to highlight certain words or sentences.
I hope with that you’ll be able to prepare your CV.
Cheers, Tom
Katia Consani
Great Tom! Your code will help me a lot in preparing the cv.
Thank you very much for your help.
tom
You are welcome. Good luck with your CV.
Allen
Very good codes. Helps me alot. My question is, can I move the title(my name) a bit upper? Since I wanna keep my CV in one page, the extra blank above title is not that good.
tom
Hi Allen,
Thanks for your question. I used the geometry package to set the margins to 3cm. You can change or use
top
,bottom
,left
,right
to set the margins individually. See the package documentation for more details.Cheers, Tom.
lchriste
Hi Tom,
first of all, thanks for a really nice CV template. I’ve tried to tweak it somewhat for my own purposes, but I can’t seem to get footnotes to work properly in the document. Specifically, the the footnote text does not show at the bottom of the page, when I compile the document. I wonder whether this has something to do with that it is overwritten by the tabular environment or something.
Any ideas of how to solve this?
Best,
tom
Hi there,
From your description, I assume you are trying to place footnote marks within a tabular. You might find this post helpful. If that doesn’t solve your problem, please post a minimal example and I’ll be better able to help.
Cheers, Tom
Algore
Best CV made in Latex. I swear, I looked up all other template (moderncv etc.). They are way too overloaded for a proper academic CV. Thanks a lot!
tom
Thanks for the feedback. Tom.
Daniel
Hey Tom,
first of all, thanks for that great code! But I have one question…do you have any idea how to insert a picture that is exactly right of e.g. the “education” section, so that it doesn’t shift the text down?
Thank you very much in advance,
Daniel
tom
Hi Daniel,
I’d use
minipage
to split the page into two columns locally. Give the code below a try and change it according to what you had in mind.Cheers, Tom.
Daniel
It works, thanks a lot!
tom
Great to hear! Thanks, Tom.
प्रेम राज (@npniti)
Hi I get following error while compiling the minimal example.
! Undefined control sequence.
l.2 \abx@aux@sortscheme
{nty}
Am I missing anything?
tom
It seems you are sorting citations (nty: name, title, year). So you might want to look for the line where you do that. I can’t recall having that in my original code.
Cheers, Tom
Shanmukharao
Very very useful. I am happy with this format. Thanks a lot.
tom
Good to hear, thanks!
Amine
http://www.seeveeze.com has web interface to do that
tom
Cool, I wasn’t aware of this. Thanks for the link!
dannelidan
Hi Tom. I want to be able to insert images in the left column instead of the time spans. My problem is then that the left column doesn’t span the rows in the right column but the content on the right begins below the left content. Is there an easy way to fix this with some “multirow-command” in the tabu package?
tom
Interesting question, thanks!
You can use the
multirow
command. Also, change to columntypem
instead ofp
to vertically center the content.dannelidan
Thanks a lot Tom!
I actually came up with an alternative solution but yours may be prettier!
Tomáš Sláma
Thanks for the tutorial! Helped a lot when creating my own CV template.
Jack
This was massive, thanks a lot!