This repo contains the source I use to automatically generate my curriculum vitae as a webpage and PDF from YAML and BibTeX input.
generate.py reads from cv.yaml and publications.bib and outputs LaTeX and Markdown by using Jinja templates. Statistics about my blog and github account are obtained using blog-info.py and github-info.py.
I chose to use YAML because it can be easily written and maintained by hand and it's easy to read into Python. Also, I chose YAML over JSON because YAML better supports comments, which I use a lot in my CV for experimental changes and archiving outdated information.
I use BibTeX to manage publications because I can easily copy and
paste from Google Scholar and so I can use the publications.bib
file
directly in new LaTeX papers.
I wrote the LaTeX template to be as minimal as possible because
I like making small changes.
The larger resume and templates I've seen are more difficult to modify.
I've also had problems with a multi-page CV when using other
templates, and I've added better support in these by
wrapping every section in a minipage
environment
so the sections are intelligently put on correct pages.
This is working well for small sections, but I'm not sure how
it will work for sections that are larger than a page in length.
I also added a Markdown template because an HTML CV blends better with my personal website than embedding a PDF CV.
The dependencies are included in requirements.txt
and can be installed
using pip
with pip3 install -r requirements.txt
.
On Mac or Linux, make
will call generate.py and build
the LaTeX documents with pdflatex
and biber
.
The Makefile will also:
- Stage to my website with
make stage
, - Start a local jekyll server of my website with updated
documents with
make jekyll
, and - Push updated documents to my website with
make push
.
- Read
cv.yaml
into Python as a map and loop through theorder
vector, which maps a section key to the title to display. This is done so sections can be moved and hidden without deleting them. - Generate the LaTeX or Markdown content for every section by using the
templates
cv-section.tmpl.tex and
cv-section.tmpl.md.
The conditional statements make the sections a little messy,
but using a template for each section lets the order be changed
solely by the
order
vector. - Generate the entire LaTeX or Markdown document by using the templates cv.tmpl.tex and cv.tmpl.md.
Currently, all publications are stored as BibTeX in publications.bib
.
These have to be in the order you want them to appear in the
output files.
Including this in LaTeX is straightforward,
but producing Markdown is slightly more complicated.
I use BibtexParser to load the bibliography into
a map and manually format the data to mimic the LaTeX IEEE bibliography style.
There are many approaches to managing a resume or CV in git, and this project uses unique Markdown and LaTeX templates. The following list shows a short sampling of projects, and I'm happy to merge pull requests of other projects.
Generated on 2014-11-02, see the Markdown source of this file for more details.
Name | Stargazers | Description |
---|---|---|
afriggeri/cv | 749 | CV, typesetted in Helvetica Neue, using XeTeX, TikZ and Biblatex |
cies/resume | 184 | My resume as a PDF including the well commented Latex sources and build instructions. |
deedydas/Deedy-Resume | 464 | A one page , two asymmetric column resume template in XeTeX that caters to an undergraduate Computer Science student |
divad12/resume | 22 | Yaml resume compiled into multiple formats (such as LaTeX, HTML (TODO), etc.) |
icco/Resume | 212 | A markdown port of my resume |
jsonresume/resume-schema | 303 | JSON-Schema is used here to define and validate our proposed resume json |
kaeluka/cv | 64 | My CV. |
mwhite/resume | 527 | Markdown -> PDF/HTML resumé generator |
prat0318/json_resume | 1002 | Generates pretty HTML, LaTeX, markdown, with biodata feeded as input in JSON |
QuteBits/resume_42 | 2 | It generates a beautiful resume from yaml data |
raphink/CV | 45 | My CV |
sc932/resume | 294 | My CV/resume in LaTeX. |
terro/CV | 17 | My cv template |
there4/markdown-resume | 353 | Generate a responsive CSS3 and HTML5 resume with Markdown, with optional PDF output. |
zellux/resume | 88 | My resume, generated with moderncv |