Curriculum Vitae for R Markdown

Provides templates and functions to simplify the production and maintenance of curriculum vitae.


CRANstatus Travis buildstatus

Templates and tools for making a Résumé/CV

The vitae package makes creating and maintaining a Résumé or CV with R Markdown simple. It provides a collection of LaTeX templates, with helpful functions to add content to the documents.


You can install the release version from CRAN.


You can install the development version from GitHub.

# install.packages("devtools")

Getting started

The vitae package currently supports 4 popular CV templates, and adding more is a relatively simple process (details in the creating vitae templates vignette).

Creating a new CV with vitae can be done using the RStudio R Markdown template selector:

These templates leverage the strength of rmarkdown to include common information in the YAML header (name, position, social links…) and extended information in the main body. The main body of the CV is written using markdown, and allows for data-driven generation of entries using the *_entries functions. This allows you to import your working history from other sources (such as ORCID, Google Scholar, or a maintained dataset), and include them programatically into your CV.

For example, the rorcid package can be used to extract Rob Hyndman’s education history:

orcid_data <- rorcid::orcid_educations("0000-0002-2140-5352")$`0000-0002-2140-5352`
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>     filter, lag
#> The following objects are masked from 'package:base':
#>     intersect, setdiff, setequal, union
#>                      role-title start-date.year.value end-date.year.value
#> 1                           PhD                  1990                1992
#> 2 Bachelor of Science (Honours)                  1985                1988
#> 1 University of Melbourne                 Melbourne
#> 2 University of Melbourne                 Melbourne

The package provides two types of entries from data, which are detailed_entries and brief_entries. Both functions provide sections for what, when, and with, and the detailed_entries additionally supports where and why. These arguments support operations, so for this example, we have used glue to combine the start and end years for our when input. Excluding any inputs is also okay (as is done for why), it will just be left blank in the CV.

orcid_data$`education-summary` %>%
    what = `role-title`,
    when = glue::glue("{`start-date.year.value`} - {`end-date.year.value`}"),
    with =,
    where =

Additional examples of using this package can be found in the slides presented at ozunconf2018:

Examples of using vitae

Add your vitae to the list using a PR.

Please note that the ‘vitae’ project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.


vitae 0.1.0

First release of the package, containing:

  • Four CV templates: hyndman, twentyseconds, awesomecv, moderncv.
  • Three CV entries functions: detailed_entries(), brief_entries() and bibliography_entries().
  • Two vignettes: Creating vitae templates and Introduction to vitae

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.4.2 by Mitchell O'Hara-Wild, 8 months ago,

Report a bug at

Browse source code at

Authors: Mitchell O'Hara-Wild [aut, cre] , Rob Hyndman [aut] , Yihui Xie [ctb] , Albert Krewinkel [cph] (Multiple bibliographies lua filter) , JooYoung Seo [ctb]

Documentation:   PDF Manual  

GPL-3 license

Imports rlang, glue, dplyr, rmarkdown, knitr, xfun, yaml, tibble, vctrs, pillar

Suggests covr, rorcid, testthat, stringr, htmltools

System requirements: pandoc (>= 2.7) -

See at CRAN