7. The PDF
The same entries make a typeset CV. This chapter builds it, decides what goes in, and makes a second one for a job application.
Build it
pnpm pdfnpm run pdfcv: wrote cv-tex/generated/cv/ (7 files), running latexmk…
cv: ✓ cv-tex/cv.pdfcv-tex/cv.pdf is Lena's CV. This needs a TeX distribution with latexmk and biber; without one, pnpm pdf --tex-only writes the LaTeX files, which any TeX installation or Overleaf can typeset, and the scaffold's CI workflow builds the PDF for you (see building). When LaTeX fails, you see its own error and the line it happened on.
Order and headings: cv.tex
cv-tex/cv.tex is a LaTeX document, and it is yours. Its body lists the sections, in order, with their headings:
\begin{document}
\vitaheader
\vitasection[Employment]{employment}
\vitasection[Education]{education}
\vitasection[Grants]{grants}
\vitasection[Teaching]{teaching}
\vitapublications[Publications]{all}
\vitasection[Selected talks]{talks}
\end{document}\vitaheader is the name, position and contact line from profile.yml. \vitasection[Heading]{section} is a heading and the section's entries; a section without entries in this document is left out, heading included. \vitapublications[Heading]{list} does the same for a publication list. Move a line to move a section. Anything else LaTeX can do goes between them: a \newpage, a paragraph of your own.
Nothing in cv-tex/generated/ is yours: it is rewritten on every build.
What goes in: cv.yml
cv-tex/cv.yml selects entries for this document:
visibility: cv # include entries marked public and cv, not private
sections:
talks:
where: { kind: invited }
limit: 10visibility: cv is why the research stay marked cv in chapter 3 is in the PDF and not on the website. Under sections, each section can be narrowed: by its fields (where), by year (since, until), by number (limit). The CV lists invited talks only, the ten latest.
Lena wonders where her contributed talks went:
pnpm vitakit explain talksnpx vitakit explain talks pdf cv cv-tex/cv.tex:36 \vitasection[Selected talks]{talks}
template: vitakit's talks.eta
1 of 3 entries (where kind: invited −2)One of three talks is included; where kind: invited removed the other two. All selection options: documents.
A version for one application
ETH Zürich asks for a CV with referees and a cover letter. A document is a file, so a variant is a copy:
cp cv-tex/cv.tex cv-tex/application-eth.tex
cp cv-tex/cv.yml cv-tex/application-eth.ymlIn the copy, change \vitadocument{cv} to \vitadocument{application-eth} — it names the document. Forgetting it is a common slip, and vitakit explain application-eth points it out:
Problems
cv-tex/application-eth.tex:13
\vitadocument{cv} does not match the file name; expected \vitadocument{application-eth}Referees are a section of their own, marked private so that they only appear where a document asks for them:
# content/referees.yml
- title: Prof. Michael Fuchs
institution: { name: University of Klagenfurt, url: https://www.aau.at }
note: michael.fuchs@aau.at
visibility: privatevitakit add section referees --document application-eth drafts its schema and adds it to this document only. In application-eth.yml, visibility: private lets it in — and every other private entry; the website and cv.pdf still never include them.
Publications: ETH asks for those of the last five years. That is a list of its own, in content/publication-lists.yml:
recent-years:
since: 2021
groupBy: statusand in application-eth.tex, she changes \vitapublications[Publications]{all} to \vitapublications[Publications]{recent-years}. cv.pdf still shows all. (vitakit add publication-list recent-years --since 2021 --group-by status --document application-eth would declare the list and add the line, but she wants it in place of the other one.)
The cover letter is plain LaTeX in cv-tex/prose/, a directory the website never reads:
% cv-tex/application-eth.tex
\begin{document}
\input{prose/cover-eth.tex}
\newpage
\vitaheader
…
\vitasection[Referees]{referees}
\end{document}Build just this document:
pnpm pdf application-ethnpm run pdf -- application-ethEvery variant reads the same content/: a correction to an entry is in all of them at the next build. More in variants and prose.
Styling
The look of every document is in cv-tex/preamble.tex, which is yours: fonts, margins, how a heading or an entry is typeset. See PDF styling.
Next: check and publish.