cv-boilerplate/README.md

111 lines
6.1 KiB
Markdown
Raw Normal View History

2015-10-24 21:49:16 +00:00
# CV Boilerplate
2015-10-21 13:21:43 +00:00
2015-10-27 09:42:53 +00:00
> 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.
> &mdash;<cite>[zackelan](https://news.ycombinator.com/item?id=10452606)<cite> on HN
2015-10-26 20:54:41 +00:00
A boilerplate to ease the pain of building and maintaining a CV or résumé using LaTeX.
2015-10-25 17:39:46 +00:00
## Intro
2015-10-24 15:55:37 +00:00
2015-10-27 13:20:12 +00:00
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:
2015-10-24 15:55:37 +00:00
```YAML
---
name: Friedrich Nietzsche
address:
- Humboldtstraße 36
- 99425 Weimar
- Prussia
2015-10-24 16:04:22 +00:00
email: friedrich@thevoid.de
# ...
2015-10-24 15:55:37 +00:00
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
```
2015-10-30 15:54:26 +00:00
That makes super easy to update a CV while keeping a consistent structure.
2015-10-24 15:55:37 +00:00
2015-10-26 15:03:13 +00:00
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:
2015-10-24 15:55:37 +00:00
```latex
$for(experience)$
2015-10-24 16:29:02 +00:00
$experience.years$\\
\textsc{$experience.employer$}\\
\emph{$experience.job$}\\
$experience.city$\\[.2cm]
2015-10-24 15:55:37 +00:00
$endfor$
```
2015-10-21 13:21:43 +00:00
2015-10-26 20:32:11 +00:00
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.
2015-11-03 23:48:13 +00:00
![preview](preview.png)
2015-10-21 22:00:30 +00:00
2015-12-08 22:13:12 +00:00
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](http://jekyllrb.com/) likes YAML). Convenient, portable and time-proof.
2015-10-26 20:32:11 +00:00
2015-10-21 13:21:43 +00:00
## Dependencies
1. LaTeX with the following extra packages: `fontspec` `geometry` `multicol` `xunicode` `xltxtra` `marginnote` `sectsty` `ulem` `hyperref` `polyglossia`
2015-12-14 20:55:09 +00:00
2. [Pandoc](http://pandoc.org/), the universal document converter.
2015-10-21 13:21:43 +00:00
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.
2015-10-21 13:21:43 +00:00
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
2016-01-05 11:05:31 +00:00
1. Fill `details.yml` with your personal details, work experience, education, and desired settings.
2015-12-05 10:04:48 +00:00
2. Run `make` to compile the PDF.
3. Tweak on `template.tex` until you're satisfied with the result.
2015-10-21 13:21:43 +00:00
2015-10-24 16:29:02 +00:00
**Note**: this template needs to be compiled with XeTeX.
2015-10-21 13:21:43 +00:00
### Note for Windows users
2015-12-15 10:52:19 +00:00
Although I didn't test it, you can probably use this on Windows, too. Both [Pandoc](http://pandoc.org/installing.html) and LaTeX can be installed on Windows (I recommend [MiKTeX](http://miktex.org/) for that) and you should be able to run makefiles on Windows through [Cygwin](https://www.cygwin.com/). If that's too much hassle, this command should do the trick in Powershell:
2015-12-14 20:38:35 +00:00
2017-11-12 10:23:01 +00:00
pandoc details.yml -o output.pdf --template=template.tex --pdf-engine=xelatex
2015-12-14 20:38:35 +00:00
## Available settings
2015-10-24 16:29:02 +00:00
- **`mainfont`**: Hoefler Text is the default, but every font installed on your system should work out of the box (thanks, XeTeX!)
2015-10-21 16:18:23 +00:00
- **`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.
2015-10-24 15:55:37 +00:00
- **`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.
2015-10-25 18:51:48 +00:00
## Recommended readings
2015-10-21 13:21:43 +00:00
2015-12-09 09:12:15 +00:00
- [Typesetting Automation](http://mrzool.cc/writing/typesetting-automation/), my article about this project with in-depth instructions and some suggestions for an ideal workflow.
2015-10-21 16:35:03 +00:00
- [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
2015-10-21 13:21:43 +00:00
- [Résumé advices](http://practicaltypography.com/resumes.html) from Butterick's Practical Typography
- [Multichannel Text Processing](https://ia.net/topics/multichannel-text-processing/) by iA
- [Why Microsoft Word must Die](http://www.antipope.org/charlie/blog-static/2013/10/why-microsoft-word-must-die.html) by Charlie Stross
- [Word Processors: Stupid and Inefficient](http://ricardo.ecn.wfu.edu/~cottrell/wp.html) by Allin Cottrell
- [Proprietary Binary Data Formats: Just Say No!](http://www.podval.org/~sds/data.html) by Sam Steingold
2016-09-07 10:52:24 +00:00
- [Dimitrie Hoekstra](https://medium.com/@dimitrieh/a-curriculum-vitae-latex-typesetting-automation-adventure-with-gitlab-6ac233c0b66b#.v66feylcu) takes automation to the next level thanks to GitLab's continuous integration feats
2015-10-21 13:21:43 +00:00
2015-10-30 15:58:07 +00:00
## Resources
2015-10-30 15:54:26 +00:00
2017-01-15 14:52:22 +00:00
- Refer to [pandoc's documentation](http://pandoc.org/MANUAL.html#templates) to learn more about how templates work.
2015-11-03 08:52:23 +00:00
- If you're not familiar with the YAML syntax, [here](http://learnxinyminutes.com/docs/yaml/)'s a good overview.
2016-01-30 17:16:31 +00:00
- If you want to edit the template but LaTeX scares you, these [docs](https://www.sharelatex.com/learn/Main_Page) put together by ShareLaTeX cover most of the basics and are surprisingly kind to the beginner.
2015-10-30 15:54:26 +00:00
- 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.
2015-10-26 14:50:47 +00:00
## See also
2015-11-02 11:17:49 +00:00
- [invoice-boilerplate](https://github.com/mrzool/invoice-boilerplate) — Simple automated LaTeX invoicing system
2015-11-04 12:02:21 +00:00
- [letter-boilerplate](https://github.com/mrzool/letter-boilerplate) — Typeset your important letters without leaving your text editor
2015-10-26 14:50:47 +00:00
2015-10-21 13:21:43 +00:00
## License
2015-10-24 15:55:37 +00:00
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/)