details.yml | ||
makefile | ||
output.pdf | ||
preview.png | ||
README.md | ||
template.tex | ||
TODO.md |
CV Boilerplate
I consider LaTeX resumes to be a secret handshake of sorts, something that makes me significantly more likely to be inclined to hire a candidate.
—zackelan on HN
A boilerplate to ease the pain of building and maintaining a CV or résumé using LaTeX.
Intro
Separating presentation from content makes life easier. The typical content of a CV is a perfect fit for a YAML file due to its structured nature:
---
name: Friedrich Nietzsche
address:
- Humboldtstraße 36
- 99425 Weimar
- Prussia
email: friedrich@thevoid.de
# ...
experience:
- years: 1879--1889
employer: Freiberufler
job: Freier Philisoph
city: Sils-Maria
- years: 1869–-1879
employer: Universität Basel
job: Professor für klassische Philologie
city: Basel
That makes super easy to update a CV while keeping a consistent structure.
Thanks to pandoc, we can then access our data from template.tex
using a special notation. Iterating on repetitive data structures becomes trivial:
$for(experience)$
$experience.years$\\
\textsc{$experience.employer$}\\
\emph{$experience.job$}\\
$experience.city$\\[.2cm]
$endfor$
LaTeX takes then care of the typesetting with its usual elegance. Below a preview of the final result. Check out the output to see the compiled PDF.
With this method, you can keep your entire CV encoded in a single YAML file, put it under version control (into a gist, for instance), and generate a PDF on the fly when needed. You can also easily export it to other formats, like HTML for web publishing. Convenient, portable and time-proof.
Dependencies
- LaTeX with the following extra packages:
fontspec
geometry
multicol
xunicode
xltxtra
marginnote
sectsty
ulem
hyperref
polyglossia
- Pandoc
To install LaTeX on Mac OS X, I recommend getting the smaller version BasicTeX from here and installing the additional packages with tlmgr
afterwards. Same goes for Linux: install texlive-base
with your package manager and add the needed additional packages later.
To install pandoc on Mac OS X, run brew install pandoc
. To install it on Linux, refer to the official docs.
Getting started
-
Run this in your terminal to clone the repo, move into the right directory and delete all the git stuff:
git clone git@github.com:mrzool/cv-boilerplate.git && cd cv-boilerplate && rm -rf .git
-
Open
details.yml
with your text editor and fill it with your personal details, work experience, education, and desired settings. -
Run
make
to compile the PDF. -
Tweak on
template.tex
until you're satisfied with the result.
Note: this template needs to be compiled with XeTeX.
Available settings
mainfont
: Hoefler Text is the default, but every font installed on your system should work out of the box (thanks, XeTeX!)fontsize
: Possible values here are 10pt, 11pt and 12pt.lang
: Sets the main language through thepolyglossia
package. This is important for proper hyphenation, among other things.geometry
: A string that sets the margins throughgeometry
. Read this to learn how this package works.
Recommended readings
- Why I do my résumé in LaTeX by Dan McGee
- What are the benefits of writing resumes in TeX/LaTeX? on TeX Stack Exchange
- Typesetting your academic CV in LaTeX by Dario Taraborelli
- Résumé advices from Butterick's Practical Typography
Resources
- Refer to pandoc's documentation to learn more about how templates work.
- If you're not familiar with the YAML syntax, here's a good overview.
- If you want to edit the template but LaTeX scares you, this docs put together by ShareLaTeX cover most of the basics and are surprisingly kind to the beginner.
- Odds are your question already has an answer on TeX Stack Exchange. Also, pretty friendly crowd in there.
See also
- invoice-boilerplate — Simple automated LaTeX invoicing system
- letter-boilerplate — Typeset your important letters without leaving your text editor
License
This repository contains a modified version of Dario Taraborelli's cvtex template.
License: CC BY-SA 3.0