๐ HTLium
A clean, modern Typst template for school protocols and reports.
Built for the HTL Salzburg โ adaptable to any school or course.
โจ 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 |
|---|---|---|
![]() |
![]() |
![]() |
purple |
orange |
teal |
![]() |
![]() |
![]() |
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$],
)
๐ผ๏ธ Gallery
| Cover | Contents | Figures & 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.







