Skip to main content
PyPi Download stats

vitae

A Python module for building curriculum vitae and other documents from a BibTeX file. vitae leverages bibtexparser, LaTeX, and pandoc to streamline getting citations of your papers into the formats you need quickly without manual intervention. Of course, with many settings, it can be a bit tedious. I personally recommend setting up a Jupyter notebook with the commands you regularly execute available there. Alternatively, you can call it from the terminal which allows it to work inside a more complex workflow.

Purpose

I hate formatting citations. It’s tedious, and error-prone. Further, when I build my CV, I tend to muck it up and leave something out, mis-sort it, duplicate it accidentally, etc. So, I need a tool to do a better job with what is a menial task.

Install

pip install vitae

or

pip install --user vitae

Usage

Please see the brief demo Jupyter notebook. It’s very brief. I need to add more. The whole package is basically two functions. Please read the help:

makemycv

To do anything useful here, you must have LaTeX with BibTeX installed. If you don’t use LaTeX, this module isn’t the place to start. Sorry.

The first function here, makemycv, will take a few arguments and put sorted \bibentry commands into .tex files with names corresponding to BibTeX entry types. In doing so, you can then simply use an \input command to embed all of these citations right in your document in an enumerated environment.

You’ll need the following in the header of your LaTeX cv file.

\usepackage{bibentry}
\newcommand{\enquote}[1]{``#1''}
\makeatletter\let\saved@bibitem\@bibitem\makeatother
\usepackage[colorlinks=true]{hyperref}
\makeatletter\let\@bibitem\saved@bibitem\makeatother

The last 3 lines are only necessary if you want to use the hyperref package, which has some compatibility issues with bibentry.

Then put:

\input{articles.tex}

where you want articles listed, etc.

Then, with your maintained .bib file, in the same location as your cv (for now), and within the same directory as your cv and cv.bib file open a python terminal and type.

>>> import vitae
>>> vitae.makemycv()

Alternatively, you can type:

> python -c  "import vitae; vitae.makemycv()"

in your terminal (Anaconda Terminal if you are using Anaconda Python on Windows).

This will make your article.tex file along with the other defaults (see the help on makemycv).

Note that that are a ton of options for makemycv. Please use:

>>> import vitae
>>> help(vitae.makemycv)

To see how to tweak it to your needs.

If you try vitae, please understand:

  1. No warrantee. This is still a work in progress.

  2. Please provide your feedback.

  3. Please help! I can use help with additional portions.

If you don’t use LaTeX, this isn’t easy enough for you yet. It’s a long ways away. However, texblog has a decent start in writing a Résumé in LaTeX . It doesn’t include the paper inclusion trick being used by vitae.

write_bibs

The second function is write_bibs. This allows you to convert bibs with a bunch of constraints into a format that pandoc can output. It REQUIRES a full LaTeX and pandoc installation that works in your terminal environment.

Constraints include:

  1. Since a year

  2. Number

  3. Types of publications

For instance:

>>> import vitae
>>> vitae.write_bibs(bibfile = '/Users/jslater/Documents/Resumes/cv.bib',
                     bibliographystyle='aiaa',
                     outfile_name='try.html',
                     since_year=2008)

Alternatively, from a command line:

> python -c  "import vitae; vitae.write_bibs(bibfile='cv.bib',
                                             bibliographystyle='aiaa',
                                             outfile_name = 'bibs.html',
                                             since_year=2008)"

How I use it

I have a Makefile that I use for tasks that I am creating. The first is a simple one for building my cv, the contents of which are:

help:
        @echo "Please use \`make <target>' where <target> is one of"
        @echo "  cv         to make standard pdf cv"
        @echo "  pdf        see cv"

cv:
        python -c  'import vitae; vitae.makemycv(silent = True)'
        pdflatex cv
        bibtex cv
        pdflatex cv

pdf:
        cv

Summary

Please see the full help on each function.

Vitae is on pypi but you can pip install the latest, and possibly non-working, version right now from github (I love bug reports!):

pip install git+https://github.com/josephcslater/vitae

Help

vitae uses luatex to enable unicode characters. On Ubuntu, the base tetex install doesn’t include the necessary file luaotfload. To resolve this open a terminal and type:

sudo apt install texlive-luatex

Release notes:

See the CHANGELOG for the full history of releases.

Future plans

  1. Preferences.

  1. Reader (doesn’t overwrite specified arguments)

  2. Writer (configurator on call or when it doesn’t exist)

  3. Editor?

  1. Bug fixes when I find them. Any other suggestions?

What else would be nice?

Release files for vitae 1.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vitae 1.1.4
File Size Uploaded
vitae-1.1.4.tar.gz 12.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vitae 1.1.4
File Interpreter ABI Platform
vitae-1.1.4-py35-none-any.whl Python 3.5 none any Details

Total release size: 174.6 kB

Release files / vitae-1.1.4.tar.gz

Download URL vitae-1.1.4.tar.gz
Size 12.7 kB
Tags Source
SHA-256 checksum
How to use checksums
3426ad142506ad68835f48ded89ca6e44e84cbc26f8ac6e335872018d81aa59a
BLAKE2b-256 checksum
How to use checksums
7a41203fb0b083fc4dee070efc6ba6af3a24ad9e4ee17341710dd4681e084259
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release files / vitae-1.1.4-py35-none-any.whl

Download URL vitae-1.1.4-py35-none-any.whl
Size 161.9 kB
Tags Python 3.5
SHA-256 checksum
How to use checksums
72c4efe158fc91fbe799f37ac31f3c94998b1e2c95e93c0ab347423c169ce475
BLAKE2b-256 checksum
How to use checksums
1a7c530c274329f350a08dfaee4dc17517bf24c839de5fc4ce4f8fe46175c4dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release history Release notifications | RSS feed

1.2.1

2 release files

This release

1.1.4 This release

2 release files

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.0

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page