Automated reference and abstract creation

2019/07/05

I don’t enjoy updating my CV, and I really don’t enjoy updating multiple versions of my CV. To miinimize some of this pain, I’m always on the lookout for ways to automate this process. This post covers my current process and alternatives I’m considering. This is a work in progress, so I don’t have a better version of the current process yet, but I’ve written this post in part for myself so that I can remember what I’ve tried (since I inevitably forget about this project whenever more compelling tasks come along and won’t return to it until 3-4 months later).

Current version

The current version of how I do this can be found in this GitHub repo. In short, it uses a makefile and multiple runs of pandoc (with custom templates) to create both my CV (a PDF) and my research page.

But I’m still not fully satisfied with it. What is it missing?

  1. Because of a limitation in pandoc-citeproc, I can’t use the LaTeX \fullcite command to automatically include publications in a way that would also allow me to list related items (links to working paper, media, et cetera) below. This means that when I add a new publication, I have to manually input all of the relevant fields.
  2. Potential inconsistency in citation style.
  3. PDF creation can be ugly: because this is an automated process, I’m finding that sometimes weird page breaks occur in my CV.
  4. Unable to easily show-hide abstract. This could in principle be fixed within the current setup, but it would require more manual work.

Because of all of this, I don’t update very often. However, I have yet to find a perfect alternative.

Alternative A: RefManageR

RefManageR is a package that facilitates R interaction with bibliography files. The example below borrows from their vignette, but it’s easy enough to read in .bib files and print their citations.

library(RefManageR)
ref <- BibEntry("misc", key = "mclean2013bayesian", author = "McLean, M. W. and
Scheipl, F. and Hooker, G. and Greven, S. and Ruppert, D.",
title = "Bayesian Functional Generalized Additive Models
with Sparsely Observed Covariates", urldate = "2013-10-06",
date = "2013", eprinttype = "arxiv", eprintclass = "stat.ME",
eprint = "1305.3585", pubstate = "submitted")
print(ref,
      .opts = list(style = "markdown", 
                   bib.style = "authoryear",
                   dashed = FALSE,
                   no.print.fields = c("issn", "doi", "url", "isbn")))

McLean, M. W., F. Scheipl, G. Hooker, et al. (2013). Bayesian Functional Generalized Additive Models with Sparsely Observed Covariates. arXiv: 1305.3585 [stat.ME]. (Visited on Oct. 06, 2013). Submitted.

This is a good start, but I ran into issues when trying to incoporate this into, say, a markdown list that could also include other information for each citation. I’m sure there’s a way to do it, but I wasn’t willing to invest the time since it seemed like it might require quite a bit of manual work.

Alternative B: Vitae

vitae is a relatively new package designed for exactly this task. I could (probably) get exactly what I want by setting up some custom vitae templates. Since most of the issues are with creating research.md, I could even start by focusing on that. Why haven’t I done this yet?

  1. The package is a little intimidating, and it seems like it might take me a lot of time to get everything figured out.
  2. I’m not 100% certain this will work, even if I do put in a lot of work.
  3. vitae is still under development, so some of what I do could become obsolete.
  4. With R, there are often better/more elegant solutions showing up every few months or so.