Awesome
About
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 and outputs LaTeX and Markdown by using Jinja templates.
Building and running
This requires a Python 3 installation,
and the hashbang of generate.py
assumes an executable named
python3
is available on the path.
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 latexmk
and biber
.
2023-05-16 update
I recently set this up again on my MacOS. Here are the additional steps I had to follow to get the dependencies for LaTeX in particular:
- Missing
latexmk
- this is a nice guide for setting up on MacOS
brew update
andbrew install --cask basictex
latexmk
was missing so I installed it withsudo tlmgr install latexmk
- had to update
tlmgr
withsudo tlmgr update --self
- had to update
make
was missing a bunch of.cls
and.sty
files.sudo tlmgr install moderncv
sudo tlmgr install fontawesome
- Then install fonts with
sudo fmtutil-sys --all
sudo tlmgr install fontawesome5
becausefontawesome5.sty
was missing stillsudo tlmgr install multirow
then necessarysudo tlmgr install arydshln
sudo tlmgr install biblatex
sudo tlmgr install biber
sudo tlmgr path add
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
.
What to modify
Change the content in cv.yaml
.
You should also look through the template files to make sure there isn't any
special-case code that needs to be modified.
The Makefile
can also start a Jekyll server and push the
new documents to another repository.
To use the Jekyll integration,
review the BLOG_DIR
variable and the jekyll
and push
targets.
Warnings
- Strings in
cv.yaml
should be LaTeX (though, the actual LaTeX formatting should be in the left in the templates as much as possible). - If you do include any new LaTeX commands, make sure that one of the
REPLACEMENTS
ingenerate.py
converts them properly. - The LaTeX templates use modified Jinja delimiters to avoid overlaps with
normal LaTeX. See
generate.py
for details.
Publications
All publications are stored as BibTeX in publications. The entries can be obtained from Google Scholar. The order in the BibTeX file will be the order in the output files.
BibTeX is built for integration with LaTeX, but producing Markdown is not traditionally done from BibTeX files. This repository uses BibtexParser to load the bibliography into a map. The data is manually formatted to mimic the LaTeX IEEE bibliography style.
Licensing
This work is distributed under the MIT license (LICENSE-bamos.mit
)
with portions copyright Ellis Michael from
emichael/resume.
Ellis' portions are also distributed under the MIT license
(LICENSE-emichael.mit
) and include
a re-write of generate.py
and template restructuring.
Similar Projects
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.
<!-- To generate the following list, install https://github.com/jacquev6/PyGithub and download the `github-repo-summary.py` script from https://github.com/bamos/python-scripts/blob/master/python3/github-repo-summary.py. Please add projects to the list in the comment and in the table below. github-repo-summary.py \ ajn123/CV \ cies/resume \ divad12/resume \ emichael/resume \ icco/Resume \ jsonresume/resume-schema \ kaeluka/cv \ masasin/resume \ mwhite/resume \ prat0318/json_resume \ qutebits/resume_42 \ raphink/CV \ sc932/resume \ terro/CV \ there4/markdown-resume \ zellux/resume \ Maples7/barn -->Name | Stargazers | Description |
---|---|---|
ajn123/CV | 13 | My resume in Latex |
cies/resume | 261 | My resume as a PDF including the well commented LaTeX source and build instructions. |
divad12/resume | 40 | Yaml resume compiled into multiple formats (such as LaTeX, HTML (TODO), etc.) |
emichael/resume | 2 | Generate LaTeX and Markdown resume from YAML with Python. |
icco/Resume | 258 | A markdown port of my resume |
jsonresume/resume-schema | 644 | JSON-Schema is used here to define and validate our proposed resume json |
kaeluka/cv | 68 | My CV. |
masasin/resume | 2 | Automatically generate your résumé and various cover letters from YAML files. |
mwhite/resume | 707 | Markdown -> PDF/HTML resumé generator |
prat0318/json_resume | 1123 | Generates pretty HTML, LaTeX, markdown, with biodata feeded as input in JSON |
QuteBits/resume_42 | 14 | Python script that generates a beautiful resume from YAML data |
raphink/CV | 77 | My CV |
sc932/resume | 337 | My CV/resume in LaTeX. |
terro/CV | 27 | My cv template |
there4/markdown-resume | 749 | Generate a responsive CSS3 and HTML5 resume with Markdown, with optional PDF output. |
zellux/resume | 134 | My resume, generated with moderncv |
Maples7/barn | 10 | A resume/CV generator, parsing information from YAML file to generate a static website which you can deploy on the Github Pages. Exactly like resume-version Hexo. |