apatypstcv

Docs

This package provides helper functions for creating academic CVs with APA-style formatting using Typst and Quarto. It extends and modifies kazuyanagimoto/quarto-awesomecv-typst with specialized entry functions for academic CVs.

This work is inspired by:

  • Byungjin Park’s Awesome-CV — A beautiful LaTeX template of CV
  • Paul Tsouchlos’s modern-cv — A Typst implementation of Awesome-CV
  • Mitchell O’Hara-Wild and Rob Hyndman’s vitae — R package for modern CV, including Awesome-CV
  • kazuyanagimoto’s typstcv — Original R package for Typst CVs

Installation

You can install the development version of apatypstcv from GitHub with:

# install.packages("devtools
devtools::install_github("emmarshall/apatypstcv")

Features

  • Specialized entry functions for education, teaching, workshops, awards, and service
  • Built-in link handling — no manual paste0() required for URLs
  • APA-style bibliography sections with proper hanging indents
  • Date-first entry format for service and awards
  • Icon support for website and document links

Usage

library(apatypstcv)

Use Template

Install the Quarto extension in your project:

quarto add emmarshall/quarto-awesomecv-typst

YAML Configuration

Set author information in your QMD YAML header:

---
title: "CV"
author:
  firstname: Paris
  lastname: Geller
  address: "123 Chilton Lane, Hartford, CT 06101"
  position: "JD, MA, DDS"
  contacts:
    - icon: fa envelope
      text: paris.geller@yale.edu
      url: "mailto:paris.geller@yale.edu"
    - icon: fa globe
      text: parisgeller.com
      url: "https://www.parisgeller.com"
brand:
  typography:
    fonts:
      - family: Sora
        source: google
        weight: [400, 600, 700]
        style: [normal]
      - family: IBM Plex Sans
        source: google
        weight: [400, 500, 600, 700]
        style: [normal, italic]
    base: IBM Plex Sans
  color:
    primary: "#d00000"
    link: "#202b47"
  defaults:
    awesomecv-typst:
      font-header: Sora
format:
  awesomecv-typst: default
---

Entry Functions

Education Entry

education_entry(educ)

The education_entry() function automatically: - Links institutions when institution_url is provided - Formats thesis/concentration information

Teaching Entry

teaching_entry(
  teaching,
  links = list(c("website", "globe"), c("syllabus", "file-pdf"))
)

The teaching_entry() function: - Combines title and course name - Formats institution, course number, size, and modality - Adds icon links for websites and syllabi

Workshop Entry

workshop_entry(
  workshop,
  links = list(c("website", "globe"), c("slides", "file-powerpoint"))
)

The workshop_entry() function: - Combines type and title (e.g., “Guest Lecturer: Topic”) - Adds venue information - Includes icon links for materials

Date-First Entry (for Service, Memberships, Awards)

For entries where the date should appear on the left:

date_first_entry(
  service,
  date = "date",
  title = "title",
  description = "organization",
  description_url = "organization_url"
)

Output format:

2023 - 2025    Committee Member
               American Psychology-Law Society

Generic Resume Entry

For custom entries or sections not covered by specialized functions:

resume_entry(
  data,
  title = "title",
  title_url = "title_url",
  location = "location",
  date = "date",
  description = "description",
  description_url = "description_url",
  description2 = "description2"
)

APA Bibliography Sections

For publications and presentations using a .bib file:

# Publications

::: {.apa-bib}
[@citation_key1]

[@citation_key2]
:::

# Presentations

::: {.apa-bib mentee-note="true"}
[@presentation1]

[@presentation2]
:::

The mentee-note="true" option adds “† Denotes undergraduate mentee” above the section.

Date Formatter

Format date ranges from Date columns:

work |>
  format_date(
    start = "start",
    end = "end",
    date_format = "%Y",
    sep = " - ",
    sort_by = "start"
  ) |>
  resume_entry()