Academics need various forms of their CV, depending on what purpose it's being used for. In my case, here are reasons I've had to re-format or have a different version of my CV:

  • promotion and tenure,
  • research proposals (each grant program requires a different format),
  • program accreditation for engineering universities,
  • my official web page at my university (with a French and English version).

It's a lot of busy work to maintain these CVs, especially as they evolve.

In Canada, there's a program in government-funded research to have a common format for CVs, called the Canadian Common CV. It's a great idea, but doesn't really solve the global problems. Not all funding organizations support it (or the same version of it).

Can anyone recommend tools that help in preparing academic CVs in various formats? Probably this means centralizing the information in one place and having it output in customizable formats. Obviously, there needs to be some understanding of the elements of an academic CV: publications, students supervised, grants awarded, community service, courses taught, distinguished awards, etc.

  • 2
    I see two questions here - your title refers to maintaining various versions, but your question seems to referring to wanting a tool that makes it easy to prepare. I'm guessing you're really looking for something that lets you input all the info once, and then select which elements/order you want them in, w/o doing a lot of manual work/formatting?
    – ernie
    Oct 22 '12 at 18:36
  • @ernie Thanks - The title is probably the state of how things are done by most folks (not ideal). Yes, it should ideally only be entered once. Editing the question now. Oct 22 '12 at 19:14
  • 1
    I've never found a good solution for this, and wound up writing my own LaTeX class to do it.
    – David Z
    Oct 23 '12 at 4:11
  • 2
    @David, would you post a link to your custom class? Oct 25 '12 at 13:04
  • 1
    @J.C.Salomon The class is here: gist.github.com/4024555 I'm not posting it as an answer just yet because I don't have time to document it right now.
    – David Z
    Nov 6 '12 at 12:57

In addition to using LaTeX with a makefile, I find that using the LaTeX package splitbib is very useful. It allows you to format your publications with different subtitles for different category of publications, and you can pick and choose which entries from your publications (which I maintain as a BiBTeX file) should be included.

Since LaTeX allows you to include files, it's relatively easy to create separate files that contain the base material and then include them as needed in different formats.

  • You probably don't need a makefile, but I'd prefer doing the distinction in a (forest of) LaTeX file(s), too.
    – Raphael
    Oct 25 '12 at 8:49
  • I'm curious to know if you use this approach for multi-lingual versions of your CV? In my case, I have to have French/English versions, and some things could be translated in a template (e.g., major headings of the CV, formats of dates, months, etc.) but other things are content variants (e.g., job titles, explanations of responsibilities, etc.) requiring 2 copies of the data. Oct 30 '12 at 15:40
  • I don't have multilingual versions of my CV :). But I have different bibilographic formats for different purposes, and different content that is included for different settings.
    – Suresh
    Oct 30 '12 at 20:58

I maintain CV of various lengths (with more or less details) and in two languages. For a long time, I have used LaTeX for that task, along with a Makefile that can do conditional compilation of my argument: basically, the LaTeX code was set up so that, depending on the job name of the compilation, different bits of the CV would be included or not (this is not TeX.SE, so I won't go into the full details).

I used it for some years, but as time passed I progressed along the career track, and now I need more and more types of CV, customized in different ways. Basically, I end up having to manually select the bits and pieces I want to include for each specific use of my CV. Thus, I now maintain:

  • a very brief CV (for which I use the NSF “biographical sketch” as a template)
  • a full CV in English
  • a full CV in French
  • a list of publications, because these pretty much don't need translation apart from the section titles

I use my word processor (MS Word or Apple’s Pages) for the first three, as it allows me to customize a specific CV from each template, and it also allows then pasting the CV into a larger Word document (often a requirement for grants).

I still use a custom-made LaTeX processing of my publication list, from which I produce either PDF (if used on its own) or a HTML file, which I then copy into my MS Word CV.


There's also the idea of using a version control (or management) system such as Git, Subversion, or Mercurial. These tools will allow you to keep track of changes to your CV over time. If you use text-based files, it's a much lower overhead than keeping multiple versions of the different files floating all over the place, especially having different filenames for different dates of creation and editing, and so on.

  • 2
    If you're unfamiliar with any of these tools, many would recommend Git. Subversion is a much older and less capable tool, and Mercurial—while practically equivalent to Git functionally—is much less popular than Git.
    – eykanal
    Oct 22 '12 at 19:17
  • 1
    Git and systems like it allow for flexible merging and even "changing of the past". While it would be somewhat of an abuse of the system to use it for this purpose, it can be done.
    – Suresh
    Oct 22 '12 at 22:21
  • 8
    This is completely wrongheaded. These tools will allow you to fork different versions of your CV, among which you will then have to migrate patches to keep them in sync. A CV that is tailored is more similar to a program that can be built in different configurations. You would generally not branch a program just for different build configurations. (Unless, say, you're developing an experimental new configuration that could break the others and needs to be developed in isolation. But then you have the other configurations available in your branch; you're not using branching to do the switch.)
    – Kaz
    Oct 22 '12 at 23:41
  • 3
    +1 @Kaz VCS is important to use... but this isn't really the place for that. Keeping 4 branches of a project isn't the same as keeping 4 versions of a CV. If I update my work history in CV1, I doubt VCS would update the work history in CV2-4 easily.
    – WernerCD
    Oct 23 '12 at 2:47
  • 3
    All that said, there is no good reason not to use Git (or another VCS) to manage whatever good (LaTeX?) solution you come up with.
    – Raphael
    Oct 25 '12 at 8:47

In 2003 or so, I had a senior-project student try to influence the XMLRésuméLibrary project to support academic CV types, but the project didn't move forward.

There's a related project called HR-XSL, designed to convert XML-formatted CVs into various formats using command-line tools. But I have not used it. The examples (HTML, PDF) are for a university professor, implying it might be useful to academics. It's customizable, according to the and has pretty decent documentation.

Edit: I gave HR-XSL a shot and it works easily in Eclipse (you need Ant and Java). The CV data is stored in an XML file that can easily be edited using a text (or more interestingly) an XML editor (Eclipse has a built-in one that is spiffy). Customizing the output is pretty easy, even though it's DOCBOOK and I've never used it before. I didn't carry out the exercise to the end (creating multiple formats), but feel it is going to pay off.

Some limitations of the XML schema are that there are no data types for things like "Research interests" or "Grants and Contracts". However, there's a ResumeAdditionalItem that supports a user-defined type, e.g., "Grants and Contracts" and all entries there get grouped under that heading.

There is also an internationalization dimension, but I don't think it will work to prevent duplicate XML sources for different languages (e.g., English and French). The reason is that the internationalization works to customize headings, such as "Table of contents" and "Table des matières". I haven't yet found a way to specify a Job Title in English vs. French, for example.


I have never tried it, but yst was created to do this. There was a nice statement of the problem here:

Using yst, I can main­tain a data­base of my arti­cles, talks, ser­vice, aca­d­e­mic posi­tions, etc. as a set of YAML text files. I can edit these in any edi­tor. yst then pro­duces my web­site and var­i­ous ver­sions of my CV from this data, using a set of cus­tomized templates.

A similar statement by someone else can be found here

I can have, say, my list of publications or my list of conference talks as yaml data. I can then use yst to build a CV page for my website. I can also use yst to generate a .tex file for a pdf version of my CV. This way, I don't need to make the same edits in two different places when I give another talk.

  • 1
    Second link is broken. Sep 15 '13 at 10:55
  • @AriB.Friedman That is exactly why I included the key quote from the site. I found another person who says almost exactly the same thing. As I said, I don't use yst, and I have not found a yst template for making a CV, but it sounds like it is possible.
    – StrongBad
    Sep 16 '13 at 9:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.