Show HN: CV Boilerplate – Easing the Process of Building a CV Using LaTeX

A boilerplate to ease the pain of building and maintaining a CV or résumé using LaTeX. The perfect companion to letter-boilerplate.


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
  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 by using a special notation. Iterating on repetitive data structures becomes trivial:


Below a preview of the final result. Check out the output to see the compiled PDF.



  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 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

  1. Edit content.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.

Refer to pandoc’s documentation to learn more about how templates work.

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 to learn how this package works.

Recommended readings

See also

  • letter-boilerplate — Quickly and painlessly generate high-quality letters from markdown through LaTeX


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

License: CC BY-SA 3.0

Original URL:

Original article

Comments are closed.

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑

%d bloggers like this: