CV output with typesetting

Bob Mottram 8a98d43787 Change output filename 6 months ago
.gitignore f9b243003d Ignore output pdf 3 years ago 3859ae8d1b font command 6 months ago
details.yml ae79f99208 Accurate quote 6 months ago
makefile 8a98d43787 Change output filename 6 months ago
preview.png 640343ab29 Update preview 6 months ago
template.tex 0b38cedc95 Change city to summary 6 months ago

CV Boilerplate

A boilerplate to ease the pain of building and maintaining a CV or résumé using LaTeX.


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
- Humboldtstraße 36
- 99425 Weimar
- Prussia
# ...
- years: 1879--1889
  employer: Freiberufler
  job: Freier Philisoph
  summary: Did something or other
- years: 1869–-1879
  employer: Universität Basel
  job: Professor für klassische Philologie
  summary: Pondered the meaning of soup

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:


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 (I've heard Jekyll likes YAML). Convenient, portable and time-proof.


On Arch/Parabola:

sudo pacman -S pandoc texlive-fontsextra texlive-core

Getting started

  1. Fill details.yml with your personal details, work experience, education, and desired settings.
  2. Run make to compile the PDF.
  3. Tweak on template.tex until you're satisfied with the result.

Note: this template needs to be compiled with XeTeX.

Available settings

  • mainfont: Gyre Schola is the default, but every font installed on your system should work out of the box (thanks, XeTeX!). You can view a jumbled list of fonts using the command fc-list.
  • 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 to learn how this package works.

Recommended readings


  • 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, these 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


This repository contains a modified version of Dario Taraborelli's cvtex template.

License: CC BY-SA 3.0