A Typst template for University Hagen documents like Bachelor theses
  • Typst 90.6%
  • Python 8.7%
  • TeX 0.7%
Find a file
2026-04-16 17:44:41 +02:00
docs Improve user docs (README etc.) 2025-02-03 13:51:28 +01:00
template last minor changes before first release 2026-04-16 17:44:41 +02:00
tools Add local deployment script 2025-04-17 15:50:10 +02:00
check-attributes.typ add date and company attributes to check-attributes and let it check within lib.typ 2026-04-11 19:45:14 +02:00
confidentiality-statement.typ remove attribute university-location 2026-04-04 19:25:24 +02:00
declaration-of-authorship.typ moved gender notice to the preface 2026-04-04 19:33:40 +02:00
lib.typ last minor changes before first release 2026-04-16 17:44:41 +02:00
LICENSE Fix date in LICENSE 2025-01-12 01:44:10 +01:00
locale.typ moved gender notice to the preface 2026-04-04 19:33:40 +02:00
logo-fernuni-hagen.svg titlepage adjusted and some changes to the confidentiality statement 2026-04-03 01:42:32 +02:00
logo_fernuni_hagen.svg titlepage adjusted and some changes to the confidentiality statement 2026-04-03 01:42:32 +02:00
README.md last minor changes before first release 2026-04-16 17:44:41 +02:00
shared-lib.typ Fix is-in-dict --> assert-in-dict 2025-02-24 17:34:13 +01:00
thumbnail.png changed thumbnail 2026-04-11 18:55:03 +02:00
titlepage.typ Remove university-short attribute from various templates and adjust related logic in confidentiality statement and main template 2026-04-03 23:33:20 +02:00
typst.toml last minor changes before first release 2026-04-16 17:44:41 +02:00

FUH Typst Template

A clean Typst template for theses at FernUni Hagen (Bachelor and Master). It is tailored to FernUni structure and wording, but can also be used for similar academic reports.

Quick Start

Typst web app

You can use this template in the Typst web app by clicking "Start from template" on the dashboard and searching for fuh.

Typst CLI

Alternatively (if you use Typst on your local computer), you can use the CLI to kick this project off using the command

typst init @preview/fuh MyThesis

If you work directly from this repository, start with template/main.typ.

Minimal Usage

The template exports fuh and is typically applied with #show: fuh.with(...):

#import "@preview/fuh:0.1.0": *
#import "glossary.typ": glossary-entries

#show: fuh.with(
  title: "Evaluation of Typst for Thesis Writing",
  authors: (
    (
      name: "Max Mustermann",
      student-id: "1234567",
      degree: "M.Sc.",
      course-of-studies: "Praktische Informatik",
    ),
  ),
  language: "de", // "de" or "en"
  type-of-thesis: "Masterarbeit",
  university: "FernUniversitaet in Hagen",
  faculty: "Mathematik und Informatik",
  supervisor: (first: "Dr. Jane Doe", second: "Prof. Dr. John Doe"),
  date: datetime.today(),
  bibliography: bibliography("sources.bib"),
  glossary: glossary-entries,
)

= Introduction
#lorem(80)

Configuration (Short)

Required arguments:

  • title: string
  • authors: array of dictionaries (each needs name, student-id, and course-of-studies)
  • language: "de" or "en"
  • university: string
  • faculty: string
  • supervisor: dictionary with at least first or second
  • date: a datetime or an array with two datetime values

Common optional arguments:

  • type-of-thesis
  • bibliography and bib-style
  • glossary
  • show-gender-notice (default: true)
  • show-confidentiality-statement, show-declaration-of-authorship, show-table-of-contents, show-abstract
  • startdate and enddate (time frame on title page)
  • companies (needed for the generated confidentiality statement)
  • logo (custom title-page logo)

For a complete runnable example, see template/main.typ.

Glossary

Glossary support is provided by glossarium. Define your glossary entries in a separate file and pass them to glossary.

#let glossary-entries = (
  (key: "API", description: "Application Programming Interface"),
  (key: "HTTP", description: "Hypertext Transfer Protocol"),
)

Fonts

This template uses the following fonts (from Google fonts):

If you want to use typst locally, you can download the fonts from the links above and install them on your system (Hint: You need the TTF-files located within the static subfolders of both font-distributions). Otherwise, when using the web version, add the fonts to your project.

For further information on how to add fonts to your project, please refer to the Typst documentation.

Source Serif 4 (formerly known as Source Serif Pro) has been chosen for the body text as it is a high-quality font especially made for on-screen use and the reading of larger quantities of text. It was designed in 2014 by Frank Grießhammer for Adobe as a companion to Source Sans Pro, thus expanding their selection of Open Source fonts. It belongs to the category of transitional style fonts. Its relatively large x-height is typical for on-screen fonts and adds to the legibility even at small sizes. The font ist constantly being further developed. In the meantime there are special variants available e.g. for small print (Source Serif Caption, Source Serif Small Text) or large titles (Source Serif Display) and headings (Source Serif Headings). For people with a Computer Science background, the font might be familiar as it is used for the online documentation of the Rust programming language.

For the headlines as well as for other guiding elements of the document, the font Source Sans 3 has been chosen. It comes as a natural choice since Source Serif 4 has been especially designed for this combination. But it has its virtues of its own, e.g. its reduced run length which permits more characters per line. This helps to avoid line-breaks within headings in our use case. Source Sans 3 (originally named Source Sans Pro) has been designed by Paul D. Hunt in 2012 as Adobes first Open Source font. It has its roots in the family of Gothic fonts thus belonging to a different category than Source Serif 4. But under Robert Slimbachs supervision, both designers succeeded to create a combination that fits well and at the same time the different rootings make the pairing not too "boring".

Packages Used

This template uses the following packages:

  • codelst: To create code snippets
  • hydra: To display the current heading within the header.
  • glossarium: For the glossary of the document.

Local Development

For local package testing in this repository:

./tools/local-deployment

Compile with local Typst:

typst compile template/main.typ main.pdf

Or with Docker:

docker run --rm -v "$PWD":/work -v "$HOME/.local/share/typst":/root/.local/share/typst -w /work ghcr.io/typst/typst:latest compile --root /work template/main.typ /work/main.pdf

Support

If you find a bug or want to propose an improvement, open an issue in this repository. For general Typst questions, see the Typst docs and the Typst forum.