# 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](https://news.ycombinator.com/item?id=10452606) 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: ```YAML --- 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](http://pandoc.org/), we can then access our data from `template.tex` using a special notation. Iterating on repetitive data structures becomes trivial: ```latex $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](output.pdf) to see the compiled PDF. ![preview](preview.png) 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 1. LaTeX with the following extra packages: `fontspec` `geometry` `multicol` `xunicode` `xltxtra` `marginnote` `sectsty` `ulem` `hyperref` `polyglossia` 2. Pandoc To install LaTeX on Mac OS X, I recommend getting the smaller version BasicTeX from [here](https://tug.org/mactex/morepackages.html) 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](http://pandoc.org/installing.html). ## Getting started 1. 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 2. Open `details.yml` with your text editor and fill it with your personal details, work experience, education, and desired settings. 3. Run `make` to compile the PDF. 4. 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 the `polyglossia` package. This is important for proper hyphenation, among other things. - **`geometry`**: A string that sets the margins through `geometry`. Read [this](https://www.sharelatex.com/learn/Page_size_and_margins) to learn how this package works. ## Recommended readings - [Typesetting Automation](http://mrzool.cc/writing/typesetting-automation/), my article about this project with in-depth instructions for a typical workflow. - [Why I do my résumé in LaTeX](http://www.toofishes.net/blog/why-i-do-my-resume-latex/) by Dan McGee - [What are the benefits of writing resumes in TeX/LaTeX?](http://tex.stackexchange.com/questions/11955/what-are-the-benefits-of-writing-resumes-in-tex-latex) on TeX Stack Exchange - [Typesetting your academic CV in LaTeX](http://nitens.org/taraborelli/cvtex) by Dario Taraborelli - [Résumé advices](http://practicaltypography.com/resumes.html) from Butterick's Practical Typography ## Resources - Refer to [pandoc's documentation](http://pandoc.org/demo/example9/templates.html) to learn more about how templates work. - If you're not familiar with the YAML syntax, [here](http://learnxinyminutes.com/docs/yaml/)'s a good overview. - If you want to edit the template but LaTeX scares you, this [docs](https://www.sharelatex.com/learn/Main_Page) 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](https://www.sharelatex.com/learn/Main_Page). Also, pretty friendly crowd in there. ## See also - [invoice-boilerplate](https://github.com/mrzool/invoice-boilerplate) — Simple automated LaTeX invoicing system - [letter-boilerplate](https://github.com/mrzool/letter-boilerplate) — Typeset your important letters without leaving your text editor ## License This repository contains a modified version of Dario Taraborelli's [cvtex](https://github.com/dartar/cvtex) template. License: [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/)