How do I …?
Short answers, with a link to where each is explained. Commands are shown for pnpm; with npm, write npx vitakit and npm run.
Content
… add a section vitakit does not have? Write content/<name>.yml, then pnpm vitakit add section <name>: it drafts the schema from your entries and puts the section on a page and in the PDF. Tutorial, chapter 5
… add a field to a section?pnpm vitakit add field teaching evaluation --type number. Accepting a field does not show it yet; see the next question. Schemas
… show a field that is accepted but not shown?pnpm vitakit customize teaching --web --pdf --field evaluation. Tutorial, chapter 6
… see which fields a section accepts?pnpm vitakit explain <section>. Built-in sections
… write a date that is not a single day?2024, 2024-03, { from: 2019, to: 2023 }, { from: 2023, to: present }. Field types
… link an institution?institution: { name: University of Graz, url: https://www.uni-graz.at }. Field types
… use mathematics in a title?$…$, as in LaTeX, in any field of type formatted text — titles of talks, theses, courses, publications. Field types
… keep my phone number, address or referees off the website?visibility: cv on the entry (in the PDF, not on the website), or private (only in documents that ask for it). Privacy
… find out what is wrong?pnpm vitakit validate lists every problem, with file, entry and field. Troubleshooting
Website
… add a page? A Markdown file in content/pages/, and a line in nav in content/profile.yml. For a page that shows sections: pnpm vitakit add page <name>. Pages and routes
… put a section on another page, or a second time?pnpm vitakit add section <section> --page /<page>/, or one line <VitaSection id="<section>" title="…" /> in the page. Placing sections
… change the order of sections on the CV page? Move the lines in app/pages/cv.vue.
… show only some entries, say invited talks?<VitaSection id="talks" title="Invited talks" :where="{ kind: 'invited' }" />. Placing sections
… show the three latest talks on the home page? The scaffold's home page does: <VitaSection :entries="talks" :limit="3" />. Placing sections
… change colours and fonts? The @theme block at the top of app/assets/css/main.css. Styling
… link slides or a PDF from an entry? Put the file in public/, e.g. public/slides/talk.pdf, and write slides: /slides/talk.pdf. The website shows a Slides link; the default PDF template for talks does not. If you change the template to show that link, also set your site's url in content/profile.yml so the PDF can link to its full address. Field types
Publications
… use my Zotero (or JabRef, or arXiv) export? Export it as BibTeX and replace content/publications.bib. Add status = {preprint} (or accepted, software, other) to what is not published. Tutorial, chapter 4
… show more or fewer of my newest publications on the home page? In content/publication-lists.yml, change limit: 3 in the list recent. Lists
… show only my preprints, or only my selected papers? Add a list: pnpm vitakit add publication-list preprints --where status=preprint, or --where keywords=selected for papers tagged selected in Zotero. It asks where to show it. add publication-list
… choose exactly which papers, in my order? A list with keys: [berger2024trees, berger2022urns], the citation keys from publications.bib. Lists
… group my publications by year instead of by status?groupBy: year in the list, e.g. all: { groupBy: year }. Settings
… put only recent publications in one PDF? A list with since: 2020, and \vitapublications[Publications]{<list>} in that document. Tutorial, chapter 7
… rename "Preprints" to "Submitted"?pnpm vitakit customize publications, then change the label of preprint in schemas/publications.ts. Statuses
… find out why a paper is not in a list?pnpm vitakit explain <list> shows how many each setting removed, and the citation keys of those it shows.
… change how references read on the website? Save a CSL style as content/publications.csl. Citation style
PDF
… change the order or headings of the PDF? The \vitasection[Heading]{section} lines in cv-tex/cv.tex. Documents
… leave old or minor entries out of the PDF? In cv-tex/cv.yml: sections: { talks: { since: 2020, limit: 10 } }. Selection options
… find out why an entry is missing from the PDF?pnpm vitakit explain <section> shows, per document, how many entries are included and which option removed the others.
… make a version of my CV for one application? Copy cv-tex/cv.tex (and cv.yml), change \vitadocument{…} to the new name, and edit the copy. Tutorial, chapter 7
… add a cover letter or a research statement? Plain LaTeX in cv-tex/prose/, included with \input{prose/…}. Variants and prose
… change fonts and spacing in the PDF?cv-tex/preamble.tex. PDF styling
… build the PDF without installing LaTeX?pnpm pdf --tex-only, then any TeX installation, Overleaf, or the scaffold's CI workflow. Building
Publishing
… publish the site?Publishing; the creator sets up a workflow for your host.
… keep my repository private? Choose a host that serves sites from private repositories, e.g. Cloudflare Workers or GitLab Pages. Publishing
… serve the site from a subdirectory, like ~username/? Set NUXT_APP_BASE_URL=/~username/ for the build. Publishing
Recipes
A few tasks that combine several steps.
Two lists from one section
Lena's talks are scientific and public ones. Rather than two files, one file with a field that tells them apart:
# content/talks.yml
- date: 2025-06-16
title: The shape of large random $k$-ary trees
kind: invited
- date: 2024-03-12
title: What is a random tree?
kind: outreachand two lines on the page, one per kind:
<VitaSection id="talks" title="Scientific talks" :where="{ kind: ['invited', 'contributed', 'seminar'] }" />
<VitaSection id="talks" title="Public talks" :where="{ kind: 'outreach' }" />In the PDF, the same selection is where in cv-tex/cv.yml. A section appears only once per document, so for both lists in one PDF, use two sections instead: content/talks-science.yml and content/talks-public.yml, sharing a schema (pnpm vitakit add section talks-public --like talks-science).
Group entries by term
Courses grouped under a heading per semester:
pnpm vitakit customize teaching --web --list --group-by termwrites app/components/TeachingList.vue with one heading per value of term, in the order of the entries, and shows teaching with it. In the PDF, grouping means writing the loop of cv-tex/templates/teaching.eta yourself; see templates.
Bring an existing CV over
If your CV is already data — YAML for another tool, a spreadsheet exported to YAML — it can usually be brought over with light changes:
- Use the built-in field names where a built-in section fits:
position(employment),degree(education),title,institution.vitakit explain <section>lists them. - Dates in vitakit's form:
05/2015→2015-05;[2012, 2014]→{ from: 2012, to: 2014 };since 2023→{ from: 2023, to: present }. Every entry needs adateto be sorted. - Links as
{ name, url }: a name in one field and its web address in another (institution,institution-url) become one field. - Lists where there may be several: a field that is sometimes one value and sometimes a list is always a list,
[Lecture]. - Run
pnpm vitakit add section <name>for each file. It drafts the fields a schema is missing, and lists every entry that still needs a change, with what to change.
pnpm vitakit status then shows what is where; pnpm vitakit validate what is left to fix.