examyv1.1.0

Cover pages

A cover page is ordinary content placed before the first question. Examy provides #maketitle(), #name-block(), and #points-table(), which may be used to construct a typical cover page.

Title blocks

A #maketitle() renders the exam’s details, which are set with the global config. It includes the institution, exam-name, term, and duration. Each detail can be overridden by passing arguments directly to #maketitle() (e.g. #maketitle(term: [Summer 2026])).

The exam’s duration can be a Typst duration such as duration(minutes: 150), or content.

#show: exam.with(
  institution: [University of Examples],
  exam-name: [MAT 101 Final Exam],
  term: [Winter 2026],
  duration: duration(minutes: 150),
)

#maketitle()

Name blocks

A #name-block() renders a fill-in block, with a Name and a Student ID row by default.

Customizing

Name blocks can be customized by setting the fields: (..) argument. The fields argument expects an array of content or dictionaries consisting of (prefix: .., suffix: ..). (prefix: .., suffix: ..) items will show before and after an underline.

#set text(font: "DejaVu Sans Mono")

// The default block: a Name row and a Student ID row.
#name-block()

#v(1.5em)

// Custom rows.
#name-block(fields: (
  (prefix: [#text(size: .85em)[(Given then Family)] \ NAME:]),
  (prefix: [Email address:], suffix: [`@university.edu`]),
  (prefix: [Student ID:]),
  {
    set align(center)
    text(size: .85em)[_Write legibly and darkly._]
  },
))

Presets

Institution-specific presets are available in presets. For example, the University of Toronto standard can be typeset with #name-block(fields: presets.utoronto.name-fields).

Putting together a cover page

With #show: exam at the top of the document, the cover page is part of the exam, so the options given to the exam apply to it too.

#show: exam.with(
  institution: [University of Examples],
  exam-name: [MAT 101 Final Exam],
  term: [Winter 2026],
  duration: duration(minutes: 150),
)

// The title and name blocks in the monospaced font bundled with Typst;
// the questions keep the document's font.
#{
  set text(font: "DejaVu Sans Mono")
  maketitle()
  name-block(fields: (
    (prefix: [#text(size: .85em)[(Given then Family)] \ NAME:]),
    // ..more fields
  ))
}

#underline[_Instructions:_]
- Fill out your name and student information at the top of this
  page.
- Answer each question in the box provided; work outside the
  boxes will not be graded.
- No calculators or other aids are permitted.

#v(1fr)
#align(center, points-table())
#pagebreak()

#question[..]

The repository’s examples include a minimal quiz, a complete exam with custom name fields, and an exam using the University of Toronto preset.