It is time-consuming to goes through the LaTeX file every time you want to update your CV. Therefore, I have an idea to use some python scripts and GitHub Actions to automatically generate LaTeX fragments to be imported at those sections. The data that is used for input is in form of a simple YAML file.
To read the original README, see liantze/AltaCV
- pdflatex + biber + pdflatex
- AltaCV uses
fontawesome5
andacademicons
; they're included in both TeX Live 2016 and MikTeX 2.9. - Loading
academicons
is optional: enable it by adding theacademicons
option to\documentclass
. - Use the
normalphoto
option to get normal (i.e. non-circular) photos. - As of v1.2 you can add multiple photos on the left or right:
\photoL{2cm}{logo1}
and\photoR{2.5cm}{logo2,photo}
. (\photo
will work like\photoR
.) Separate your image filenames with commas without spaces. - Use the
ragged2d
option to activate hyphenations while keeping text left-justified; line endings will thus be less jagged and more aesthetically pleasing. - As of v1.3 the
withhyper
document class option will make the "personal info" fields into clickable hyperlinks (where it makes sense). See below for more details. - Can now be compiled with pdflatex, XeLaTeX and LuaLaTeX!
- However if you're using
academicons
, you must use either XeLaTeX or LuaLaTeX. If the doc then compiles but the icons don't show up in the output PDF, try compiling with LuaLaTeX instead. - The samples here use the Lato and Roboto Slab fonts. Feel free to use a different typeface package instead—often a different typeface will change the entire CV's feel.
- Install required dependencies from requirements.txt
- Rewrite data.yml according to your need
- Run generate_tex.py
- Run pdflatex + biber + pdflatex
- Check if there is any error
The data.yml
file looks like:
...
column-1:
- section:
heading: 'Section heading'
items:
- item: description
- item:
prop-1: property
prop-2: another property
description: Description
column-2:
- section:
divider: no
items:
- item: description
- item: description
Following are 4 types of sections, with their properties:
event
:title
: The name or title of the eventorg
: The organization related to this eventtime
: The time from start to finishlocation
: The location where the even occureddescription
: a short abstract if is a string, a bulleted list if is a list- Used for life/career events like education/jobs
quote
:quote
: the quote
badge
:- List of items that are showed as badges
dividertag
is to insert divider between groups of badges
scale
:- List of items that are showed on scale 0-5
referee
:- List of referees
name
: name of the refereeinstitute
: name of the instituteemail
: referee's email addressaddresses
: list of email addresses
Here is what I'm planning to do on this fork:
We have these branches:
* master - this branch, containing template and data files
pdf - where the pdf files are generated
working - optional branch for pushing works in progress before pulling to master
├── altacv.cls -- the core functions for the template
├── data.yml -- data here
├── customized-colorschema.sty -- color schema for the file
├── personal-info.tex -- Personal info in header of the file
├── column-1.tex -- LaTeX file for column 1
├── column-2.tex -- LaTeX file for column 2
├── data.yml -- data here
├── generate_tex.py -- this generates tex from yaml
├── Globe_High.png -- this is a picture from the original repo, replace this with your photo for CV
├── LICENSE.md
├── nicethings_icons_readme.txt
├── README.md
├── requirements.txt
├── sample.bib -- for books and publication
└── sample.tex -- the template
- You push/PR to master
- GA runs the
generate_tex.py
to generate LaTeX fragments intofragments/
- These fragments are imported in sample.tex (or any file that is supposed to be your main file), using package
import
- https://github.com/xu-cheng/latex-action runs to compile the TeX file and push to
pdf
branch
- Try compiling the template
- Describe the YAML file
- Write a Python script generate fragments from the YAML file
- Remove those parts from the template and try to recompile if it works
- Write docs for the steps
- Set up GH Actions to automate the tasks