Awesome
About
Here you'll find the source code to automatically generate my CV and Webpage from YAML and BibTeX input.
This repo is the main one, but it is intended to work together with the website repo. So make sure you clone it as well and put it in the same parent directory of this repo. That is, the directory structure looks like this:
parent-dir
cv
renan-souza.github.io
The script generate.py reads from cv.yaml and publications and outputs LaTeX and Markdown by using Jinja templates.
Requirements
-
Python 3.8
-
Docker
-
Latexmk
Installation
Website repo:
Ruby is used to generate the website and we use a Docker image to use the right Ruby (and dependencies) versions that work for this website.
- Build the Docker image for the website:
cd cv
make web_build
This repo:
cd cv
# Assuming you use conda
conda create -n cv python=3.8
conda activate cv
pip install -r requirements.txt
Building and Running
The Makefile contains the instructions to build both the pdf and the webpage. Take a look at it.
On Mac or Linux, make
command will call generate.py to
build the LaTeX documents with latexmk
and biber
.
make
will then generate the _config.yml
of the Website repo and call the
target web
to start the server using Docker (docker run -p 4444:4444 -it website
) so that the server will start at localhost:4444 (port is specified in the _config.yml
).
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.
Warnings and further instructions
- 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. - If you see errors like:
Or if you change the structure of the website like CSS styles, you might need to runCould not find unf_ext-0.0.7.7 in any of the sources Run `bundle install` to install missing gems.
make web_build
to rebuild the Docker image for the website.
Publications
All publications are stored as BibTeX in publications. The entries can be obtained from Google Scholar.
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.
Useful info and docs
The variables and code in the files under templates use Jinja2 whose syntax, for the variables, is similar to python.
The variables and code in the files under in the website's repo use Jekyll. This doc is handy if you need to manipulate variables in the Jekyll's template.
Licensing
This repo is a fork from Brandon Amos's repo for building CV and personal webpage. Based on Brandon's code, I have made several changes here to customize for my own template.
This work is distributed under the MIT license with portions copyright Brandon Amos and Ellis Michael. This work includes major refactorings done in and after the commit 685a7a7 which is compliant to the website repo's commit 8cd893a.