Universe

Create project in app

๐Ÿ“˜ HTLium

A clean, modern Typst template for school protocols and reports.
Built for the HTL Salzburg โ€” adaptable to any school or course.

Title page preview Callout boxes preview


โœจ Features

  • ๐ŸŽจ Eye-catching cover page with a geometric, color-themed design that you can switch off with a single flag.
  • ๐ŸŒˆ Any color scheme โ€” pass any Typst color and the whole document (headings, accents, tables, cover) adapts.
  • ๐ŸŒ Bilingual โ€” built-in German (de) and English (en) labels for the cover, outlines and bibliography.
  • ๐Ÿ“‘ Automatic front matter โ€” table of contents, list of figures, list of tables and an IEEE bibliography, each toggleable.
  • ๐Ÿ’ฌ Ready-made callout boxes โ€” info, warning, note, tip and important, plus a fully custom box.
  • ๐ŸŽฏ Styled tables & code โ€” striped, rounded tables out of the box and syntax highlighting via codly.
  • ๐Ÿ–ผ๏ธ Custom logo & header โ€” drop in your school logo; it appears on the cover and in the running header.

๐Ÿš€ Quick start

Create a new project from the template:

typst init @preview/htlium:1.6.0

Or import it into an existing document:

#import "@preview/htlium:1.6.0": *

#show: body => template(
  body,
  author: "Your Name",
  title: "Sorting Algorithms",
  subtitle: "A comparison of common approaches",
  logo: image("logo.png"),
  class: "3AHIF",
  subject: "Software Engineering",
  school: "HTL Salzburg",
  department: "Computer Science",
)

= My first heading
#lorem(40)

Sensible defaults are set for every option, so the template compiles even with no arguments โ€” but youโ€™ll want to fill in your own details.

โš™๏ธ Configuration

template accepts the following named arguments:

Argument Type Default Description
lang str "de" Document language โ€” "de" or "en" for labels.
color-scheme color red Accent color applied across the whole document.
author str "Your Name" Full name of the author.
title str "Title" Main title on the cover page.
subtitle str "Subtitle" Subtitle shown beneath the title.
class-long str "Protokoll" Centered text in the running header.
logo image โ€” Your logo, e.g. image("logo.png"). Use none to omit.
school-year str "2025/26" School year, shown on the cover and in the footer.
task-title str "Task Title" Heading of the assignment/task block.
task-content str "Task Content" Description of the assignment/task.
class str "Class" Your school class.
date str today Date of the protocol.
subject str "Subject" School subject.
school str "School" School name.
department str "Department" Department / branch.
teachers array(str) sample names List of teachers, e.g. ("Ms. Smith", "Mr. Doe").
do-lof bool true Include a list of figures.
do-lot bool true Include a list of tables.
do-bib bool true Include a bibliography.
bib-src str (path) "refs.bib" Path to your bibliography file.
fancy-design bool true Toggle the decorative cover graphics & header bar.
before-logo-info array () Extra cover rows shown above the logo.
after-logo-info array () Extra cover rows shown below the logo.

๐ŸŒˆ Color schemes

The color-scheme argument accepts any Typst color and re-themes the entire document โ€” cover graphics, headings, accent bar, and table striping all follow it. Pass a built-in color, build one with rgb("#..."), or use any color expression.

#show: body => template(body, color-scheme: blue)
red (default) blue green
Red scheme Blue scheme Green scheme
purple orange teal
Purple scheme Orange scheme Teal scheme

Want a school-branded look? Try a custom color such as color-scheme: rgb("#0a5c36").

๐Ÿ’ฌ Callout boxes

The template ships with a set of ready-to-use callouts:

#info-box([Helpful background information.])
#warning-box([Watch out for this!])
#note-box([A small note.])
#tip-box([A handy tip.])
#important-box([Don't miss this.])

Need your own? Build one with custom-box:

#custom-box(
  icon("star", solid: false),  // any heroic icon, or none
  purple,                      // the box color
  "My custom box",             // the title
  [Your content goes here.],   // one or more content blocks
  [$a^2 + b^2 = c^2$],
)

Callout boxes

Cover Contents Figures & tables
Cover page Table of contents Figures and tables

The full example lives in example/main.typ. Compile it yourself with:

typst compile --root . example/main.typ "example/preview-{p}.png"

๐Ÿ“ฆ Local installation

To use the template without publishing it, copy all files into your Typst local package directory:

~/AppData/Local/typst/packages/local/htlium/1.6.0/   # Windows
~/.local/share/typst/packages/local/htlium/1.6.0/    # Linux
~/Library/Application Support/typst/packages/local/htlium/1.6.0/  # macOS

Then import it with the @local namespace:

#import "@local/htlium:1.6.0": *
#show: body => template(body)

๐Ÿ“š Resources

๐Ÿ“„ License

Released under the MIT License ยฉ 2026 Elias Pรถschl.