A tool that uses pandoc to generate a good looking CV in .pdf and .html formats from a vanilla markdown file.
Supports working with multiple markdown files at the same time (if, for example, you need your CV in multiple languages), and doesn't depend on jekyll nor LaTeX.
Absolutely no dependencies if you use GitHub CI to build the resulting files!. Just put your resume markdown file under src/, commit and push. You'll find a zip file with the output files in the CI workflow summary page.
Create a markdown file under src/ - on build it will be used to generate the corresponding .pdf and .html files under output/
You can use src/sample.md for reference and output/sample.pdf to see what it generates. Most of it should be self-explanatory. Other than that:
- The
titlevariable from the frontmatter gets set as the firsth1in the content - The
stylevariable in the front matter chooses the style to use (from thestyles/directory) - Some markdown elements might have a special function in a given style (like the
h4->codeused for time periods in the default style). Again, consult the samples to see how it fits together.
You'll need to install pandoc and wkhtmltopdf, optionally lmodern to use the default font. Afterwards just run make!
on Linux:
sudo apt install pandoc lmodern wkhtmltopdf
make
open output/sample.pdfTo have the output files automatically regenerated when you edit the source files:
sudo apt install pandoc lmodern wkhtmltopdf inotify-tools
make watchThe latter is Linux only, to use the same workflow on Mac, use the Docker workflow below.
If you have docker installed, you can run
make dockerWhile the docker container is running, the src/ and the output/ directories are mounted to it and pdfs will be re-generated whenever the markdown files are edited.
Note: the watching for changes doesn't seem to be working on MacOS (at least when using Podman)
In this version you don't compile the docker image - you use the :latest pushed to docker hub
It also doesn't do the filesystem watch thing - it just compiles all the source files once.
make docker-simpleHidden text
Check the bottom of src/sample.md for a hidden bonus feature 😉
- Markdown and css structure based on a Eliseo Papa's markdown-cv jekyll workflow
- Default theme based on Kamil Wójcicki's LaTex template I've been using for about 15 years
- The trick for fetching front matter variables in bash from u/cr0sh
Contributions welcome! Especially new styles and tweaks to the default style.
Create a directory under styles/ - the name of the directory will be the style name.
Any css files put in the directory will be included, in alphabetical order, in a resume compiled with that style.
- list out prereqs for the script to work locally
- dockerfile for local compilation
- CI with tests, compilation and output download
- working style selection
- multiple css files in a style (for vendored stuff)
- fontAwesome icons in the default styles
- default style tweaks (link colors?)
- add sample input / output files to the repo and gitignore
- credit the projects that inspired this one
- add pdf metadata using exiftool?
Why is there a hidden .Makefile in the root directory?
I left it as a reminder to never try to use hand-written Makefiles for anything non-trivial - it's not worth it.