LaTeX CV formatting

I’ve recently spent quite a bit of time trying to get my CV formatted exactly the way I want, using LaTeX. Those who know me, know that I love LaTeX, probably the point of being a snob about it…so naturally my CV has to be made with LaTeX. The final product can be found here.

The bulk of the CV was pretty easy to work up, I just did most of it manually with the help of a just a few critical packages (e.g., tabularx, enumitem). What was important to me though was to develop an easily maintainable method for keeping my CV up to date with publications and presentations. I use Zotero to manage references, so exporting the references to a .bib file to be processed in my LaTeX CV seemed like an obvious place to start.

Below is a style file I have created, providing the package cvlist, in order to take the exported .bib file containing all of the papers and conferences I have been a part of and format them into a beautiful LaTeX list. To do so I’m using BibLaTeX to process the .bib file.

There were a few things that I wanted to have my CV list set up for:

  1. multiple sections for different types of “references”, e.g., peer reviewed, other publications, and conferences proceedings
  2. reverse counting of items within each section, such that the most recent items come first and have the highest number
  3. the ability to have publications in various states (e.g., submitted, in prep) and format them properly into the reference
  4. provide links (formatted as a clean single word “[link]”) for items which have a URL included in the .bib file

This is mostly achieved within the style file and package provided by cvlist. The code comes from various places all over the internet (mostly stackexchange though <3), and I have tried to attribute where possible. The package can be found here.

The only things required in the actual CV .tex file then are to call the package, add the bib resource, and define the section filters. I have chosen to define the section filters in the actual .tex file, but they could have been switched into the style file by default too.

\usepackage{cvlist}
\addbibresource{../CV_biblist.bib}
% define the filters that will separate out the sections printed
\defbibfilter{peer}{type=article and not subtype=nopeer}
\defbibfilter{nopeer}{not type=inproceedings and subtype=nopeer}
\defbibfilter{conf}{type=inproceedings}

Finally, the reference sections are printed with calls

\nocite{*}
\section*{Refereed Publications}
\printbibliography[filter=peer,heading=none]

\section*{Other Publications}
\printbibliography[filter=nopeer,heading=none,resetnumbers]

\section*{Scientific Presentations with Abstracts}
\printbibliography[filter=conf,heading=none,resetnumbers]

I don’t expect that my solution will solve the problems of anyone trying to do something similar to what I have done, but I do hope it provides a good starting point. The package can be found here.