Typeset Your Curriculum Vitae – Part 3: Automatically Generate a List of Publications
Rob Oakes | December 2, 2009 11:19 am
Publications are the currency of ideas. Through them the experts, thinkers and dreamers of this world can share their thoughts and insights. A good publication is not only influential, but it’s even capable of shifting the course of a whole society, as Martin Luther King demonstrated with his “Letter from a Birmingham Jail”.
Since publications are so important to the dissemination of knowledge, there is a rather high expectation that an academic author should publish prolifically. The mantra “Publish or Perish” is not just a clever quip, but a very serious way of life.
It is ironic, then, that the most prolific of academic writers can suffer from a surprising problem: it can be very difficult to keep track of all of their work. Yet, an up to date CV is very important. After all, publishing your work in influential journals is an important first step toward establishing tenure!
Members of a research team or those who collaborate outside of their institution experience this same problem, only more so. Such a person may work on many projects at once, but only have direct responsibility for one or two of them. This places the researcher in the unenviable position of trying to track the work of others. This situation becomes even more complicated if the collaborator refuses to play by the rules of common decency.
It would be nice, for example, if the primary author of a publication would notify the co-authors of its progress, or when it has been submitted. But … that doesn’t always happen. Academic researchers are busy people and soliciting feedback from all of your collaborators can be difficult … and there is a tendency for difficult things to go undone. Thus, if you don’t follow what your team mates are working on, it is quite possible that an abstract might have gotten submitted while your back was turned.
To stay on top of the “delightful chaos”, you need to have some kind of system. Personally, I keep my list of projects and publications in three places. The first (and perhaps most important) is the hand-written list in my experimental notebook. Any time I hear about a new project, it gets added to this list. I keep track of what I’ve contributed, what papers or abstracts have been created from the data, and what their status is. When I know that an abstract or paper has been accepted, I then create an entry for the item in my bibliography manager. Once in the bibliography manager, I can cite the reference in other documents such as proposals or related papers.
About once a year, I go through the tedious process of updating my CV. This typically involves manually sorting through both my project list and my reference database and account for new items or reconcile differences. Every time I do this, it’s painful; and because I’ve historically formatted the reference list by hand, it’s not uncommon for a typo to sneak its way in or for an author to accidentally get left off of a citation. These mistakes are never intentional, but they do happen.
When I find such an error in the reference database, I fix it. But since I often import these references from websites, the errors tend to be few and far between. Moreover, my reference database is something that I use every day; as a result, it gets a lot of scrutiny. My CV, on the other hand, gets updated much less frequently and errors tend to persist longer.
For a very long time, I’ve wanted to automate the process. Instead of keeping three separate lists – active projects, reference database, and CV – I’d prefer to keep only one (or two). But I’ve never found a really satisfactory way of doing so. Or at least I hadn’t found a system until quite recently.
In my last review of different ways to typeset a CV, I came across an interesting article by Dario Taraborelli. In it, he described how to create a CV based on the standard “article” document class. It was well designed, elegant, simple and attractive. From his work, I created the xetexCV document class. Additional research turned up an add-on module that makes it convenient to automatically generate a list of publications. So, for the first time in a great while, I have finally found a way to automatically generate a publications list in a simple and automated manner. In this article, I will demonstrate how that is done.
The Basic Requirements
For any automated solution to be successful, it needs to meet three primary criteria:
- When generating a list of references, bibliographic details should be pulled from the database. This ensures that the information is always up to date.
- The citation style must be customizable. I want the ability to specify whether my CV includes page numbers and hyperlinks. Not all citation styles do.
- The publication list should be broken into different categories. Book chapters should not be listed with peer-reviewed journal articles, nor should abstracts be listed amongst the books.
cvsplitbib and xetexCV
All three of these requirements can be met by using the xetexCV document class and the cvsplitbib style (both are provided in this zipped directory). cvsplitbib is a version of regular splitbib, a package that makes it possible to create categories in your bibliography. While all of the main features work as described in the splitbib manual, the macros have been changed to use the \cvsection and \cvsubsection macros of the xetexCV document class. This ensures that formatting and indentation of the publications list is consistent with the rest of the document.
This combination also has an additional benefit. Because cvsplitbib works entirely through LaTeX, any bibtex citaiton style can be used. In the example below, I’ve used the the “plain” style, though it would have been just as easy to use ama, MLA, chicago or any other style in my distribution.
Note: There is an important difference between cvsplitbib and splitbib. In the standard version of splitbib, it is possible to create subsubcategories (a second level of nested references). Cvsplitbib does not support this as xetexCV does not define a \cvsubsubsection macro.
Creating a Categorized List
Creating different bibliography sections is achieved through the use of the “category” environment. The arguments of the environment define the title of the section while the \SBentries macro is used to specify the citation key of any reference that should be included in that particular list.
Note: Citation keys should be added as a list separated by commas, any spaces will result in an error.
The following example creates a categorized bibliography with three different sections (Novels, Children’s Literature and Comics, Graphic Novels). The bibliography data is pulled from the file “NeilGaiman-Publications.bib”, part of the xetexCV examples (see below):
\begin{category}[A]{Novels}
\SBentries{Gaiman2001-American-Gods,Gaiman2005-Anansi,
Gaiman1990-Good-Omens,Gaiman1996-Neverwhere,
Gaiman1999a-Stardust,Gaiman1985-Ghastly}
\end{category}\begin{category}[B]{Children’s Literature}
\SBentries{Gaiman1998a-Goldfish,Gaiman2008-Graveyard}
\end{category}\begin{category}[C]{Comics and Graphic Novels}
\SBentries{Gaiman1994b-Angela,Gaiman1993-Angels,
Gaiman1989-Black-Orchid,Gaiman1993a-
Books-Magic,Gaiman1994a-Death-Living,Gaiman1997-Death-Time-Life,
Gaiman2000a-Green-Lantern,Gaiman2003-Marvel-1602,
Gaiman1999-Midnight-Days,Gaiman1994-Anthology-Virus,
Gaiman2000-End-World,Gaiman1992-Signal-to-Noise,
Gaiman1998b-Smoke-Mirrors,Gaiman1998-Inkeeper,
Gaiman1991-Sandman,Gaiman1987-Violent-Cases}
\end{category}
Any reference that is not included in a specified category will be added to a fourth category, titled: “Miscellaneous”.
Generating the Bibliography
Once the various references have been categorized, you can generate the bibliography as you would in any other document:
\nocite{*}\bibliographystyle{plain}
\bibliography{NeilGaiman-Publications}
Here the \nocite{*} command is used to list all of the publications in the .bib database. \bibliographystyle{plain} specifies the BibTeX style to use, and \bibliography{Database-Name} tells BibTeX which database file to pull the information from. Part of the formatted output from the example is shown below.

Examples and Class Files
- Document Class and Examples (.zip). This file contains the document class, cvsplitbib package, examples and other supporting files.
- Neil Gaiman (Automatic Bibliography). LaTeX Source, PDF Output, Reference Database
- Albert Einstein. LaTeX Source, PDF Output
- Isaac Newton. LaTeX Source, PDF Output
______________________________________________________
Acknowledgements and Further Reading
The xetexCV document style is based on work from Dario Taraborelli’s website. The cvsplitbib package is a modified version of splitbib, by Nicolas Markey.
This article is part 3 of a four part series. Part 1 introduces the xetexCV document class and describes its use. Part 2 dissects the code and explains how it works. Part 4 describes how to use the document class and a corresponding layout file with LyX
Similar Posts:
- Typeset Your Curriculum Vitae – Part 1: The xetexCV Document Class
- Filing Bugs for Time Drive or LyX-Outline
- Typeset Your Curriculum Vitae – Part 2: Extending and Customizing an Existing Document Class
- Learning IronPython – Part 7 – A Summary of Lessons Learned
- Install Time Drive On Ubuntu and Other Debian Linux Distributions
Tags: Curiculum Vitae,LaTeX,Typesetting
Categories: Computer, Writing and Literature, rapidBOOKS
2 Comments »























![Blackwater: The Rise of the World’s Most Powerful Mercenary Army [Revised and Updated]](http://ecx.images-amazon.com/images/I/41ZopVuqGsL._SL160_.jpg)

2 Responses to “Typeset Your Curriculum Vitae – Part 3: Automatically Generate a List of Publications”
[...] and explain how it works. I will also provide hints on how it might be modified. In part 3, I will show how to generate a publications list through the use of a .bib database and custom [...]
[...] « Typeset Your Curiculum Vitae – Part 1: The xetexCV Document Class Typeset Your Curiculum Vitae – Part 3: Automatically Generate a List of Publications [...]