diff --git a/packages/preview/tgm-hit-protocol/0.2.0/.gitignore b/packages/preview/tgm-hit-protocol/0.2.0/.gitignore
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/CHANGELOG.md b/packages/preview/tgm-hit-protocol/0.2.0/CHANGELOG.md
new file mode 100644
index 0000000000..2041eca39d
--- /dev/null
+++ b/packages/preview/tgm-hit-protocol/0.2.0/CHANGELOG.md
@@ -0,0 +1,49 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [Unreleased]
+
+
+Migration guide from v0.1.x
+
+
+
+
+
+### Added
+
+### Changed
+
+### Deprecated
+
+### Removed
+
+### Fixed
+
+### Security
+
+## [0.2.0] - 2025-11-25
+
+### Changed
+- BREAKING: the minimum supported Typst version is now 0.13.1
+- Several packages were updated to their most recent versions, among them glossarium:
+ - for glossary entries, having only a `long` form is now permitted
+ - BREAKING: glossarium no longer supports keys containing `:` colons
+ - BREAKING: in `glossary-entry()`, the `desc` parameter is now named `description`
+ - BREAKING: glossary entries are now defined differently, see [the diff of the template](https://github.com/TGM-HIT/typst-protocol/commit/a9ce50817370262b33c583c7e84ab450e5516b93#diff-7c3fcb5c97b51160af4b4a26981b152d6995f8ec0077281456d3f51f4b0e9d84) for an example
+
+### Fixed
+- The template is now Typst 0.14 compatible
+
+## [0.1.0] - 2024-10-09
+
+- Initial version
+
+
+[Unreleased]: https://github.com/TGM-HIT/typst-protocol/compare/v0.2.0...HEAD
+[0.2.0]: https://github.com/TGM-HIT/typst-protocol/releases/tag/v0.2.0
+[0.1.0]: https://github.com/TGM-HIT/typst-protocol/releases/tag/v0.1.0
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/LICENSE b/packages/preview/tgm-hit-protocol/0.2.0/LICENSE
new file mode 100644
index 0000000000..eae6c389cf
--- /dev/null
+++ b/packages/preview/tgm-hit-protocol/0.2.0/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2024 Simon Gao, Clemens Koza
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/README.md b/packages/preview/tgm-hit-protocol/0.2.0/README.md
new file mode 100644
index 0000000000..86113cdacb
--- /dev/null
+++ b/packages/preview/tgm-hit-protocol/0.2.0/README.md
@@ -0,0 +1,17 @@
+# TGM HIT protocol template
+
+This is a port of the [LaTeX protocol template](https://github.com/TGM-HIT/latex-protocol/) available for students of the information technology department at the TGM technical secondary school in Vienna.
+
+## Getting Started
+
+Using the Typst web app, you can create a project by e.g. using this link: https://typst.app/?template=tgm-hit-protocol&version=latest.
+
+To work locally, use the following command:
+
+```bash
+typst init @preview/tgm-hit-protocol
+```
+
+## Usage
+
+The template ([rendered PDF](main.pdf)) contains thesis writing advice (in German) as example content. If you are looking for the details of this template package's function, take a look at the [manual](docs/manual.pdf).
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/docs/manual.pdf b/packages/preview/tgm-hit-protocol/0.2.0/docs/manual.pdf
new file mode 100644
index 0000000000..36934b0203
Binary files /dev/null and b/packages/preview/tgm-hit-protocol/0.2.0/docs/manual.pdf differ
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/example.pdf b/packages/preview/tgm-hit-protocol/0.2.0/example.pdf
new file mode 100644
index 0000000000..3a34587242
Binary files /dev/null and b/packages/preview/tgm-hit-protocol/0.2.0/example.pdf differ
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/src/assets/logo-left.png b/packages/preview/tgm-hit-protocol/0.2.0/src/assets/logo-left.png
new file mode 100644
index 0000000000..b55699f535
Binary files /dev/null and b/packages/preview/tgm-hit-protocol/0.2.0/src/assets/logo-left.png differ
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/src/assets/logo-right.png b/packages/preview/tgm-hit-protocol/0.2.0/src/assets/logo-right.png
new file mode 100644
index 0000000000..da84dd252b
Binary files /dev/null and b/packages/preview/tgm-hit-protocol/0.2.0/src/assets/logo-right.png differ
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/src/assets/mod.typ b/packages/preview/tgm-hit-protocol/0.2.0/src/assets/mod.typ
new file mode 100644
index 0000000000..273243c7c0
--- /dev/null
+++ b/packages/preview/tgm-hit-protocol/0.2.0/src/assets/mod.typ
@@ -0,0 +1,7 @@
+/// The TGM logo. This is a partially applied function and thus can accept most of the parameters
+/// that ```typc image()``` can.
+#let tgm-logo = image.with("logo-left.png")
+
+/// The HTL logo. This is a partially applied function and thus can accept most of the parameters
+/// that ```typc image()``` can.
+#let just-do-it-logo = image.with("logo-right.png")
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/src/glossary.typ b/packages/preview/tgm-hit-protocol/0.2.0/src/glossary.typ
new file mode 100644
index 0000000000..0851c9774e
--- /dev/null
+++ b/packages/preview/tgm-hit-protocol/0.2.0/src/glossary.typ
@@ -0,0 +1,85 @@
+#import "libs.typ": glossarium
+#import glossarium: make-glossary, gls, agls, glspl
+
+#let _glossary_entries = state("thesis-glossary-entries")
+
+/// Registers the passed entries with Glossarium.
+///
+/// -> content
+#let register-glossary(
+ /// The positional-only entries for the glossary
+ /// -> arguments
+ ..entries,
+) = {
+ assert.eq(entries.named(), (:), message: "no named arguments allowed")
+ let entries = entries.pos()
+ glossarium.register-glossary(entries)
+ _glossary_entries.update(entries)
+}
+
+/// Stores a glossary entry for this thesis. One call to this function is equivalent to one array
+/// entry in Glossarium's ```typc print-glossary()```'s main parameter.
+///
+/// -> dictionary
+#let glossary-entry(
+ /// The key with which the glossary entry can be referenced; must be unique.
+ /// -> string
+ key,
+ /// Mandatory; the short form of the entry shown after the term has been first defined.
+ /// -> string
+ short: none,
+ /// The long form of the term, displayed in the glossary and on the first citation of the term.
+ /// -> string | content
+ long: none,
+ /// The description of the term.
+ /// -> string | content
+ description: none,
+ /// The pluralized short form of the term.
+ /// -> string | content
+ plural: none,
+ /// The pluralized long form of the term.
+ /// -> string | content
+ longplural: none,
+ /// The group the term belongs to. The terms are displayed by groups in the glossary.
+ /// -> string
+ group: none,
+) = {
+ assert(short != none or long != none, message: "short or long form of glossary-entry is mandatory")
+
+ let entry = (
+ key: key,
+ short: short,
+ long: long,
+ description: description,
+ plural: plural,
+ longplural: longplural,
+ group: group,
+ )
+ let entry = for (k, v) in entry {
+ if v != none {
+ ((k): v)
+ }
+ }
+
+ entry
+}
+
+/// Displays a glossary of the entries added via @@glossary-entry().
+///
+/// -> content
+#let print-glossary(
+ /// A (level 1) heading that titles this glossary. If the glossary is empty, the title is not shown.
+ /// -> content
+ title: none,
+ /// Any extra parameters to the glossarium function of the same name.
+ /// -> arguments
+ ..args,
+) = context {
+ let entries = _glossary_entries.get()
+
+ if glossarium.there-are-refs() or args.named().at("show-all", default: false) {
+ title
+ }
+
+ glossarium.print-glossary(entries, ..args)
+}
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/src/l10n.toml b/packages/preview/tgm-hit-protocol/0.2.0/src/l10n.toml
new file mode 100644
index 0000000000..323f3ae9bc
--- /dev/null
+++ b/packages/preview/tgm-hit-protocol/0.2.0/src/l10n.toml
@@ -0,0 +1,38 @@
+[conf]
+default-lang = "en"
+
+[lang.en]
+supervisor = "Supervisor"
+grade = "Grade"
+version = "Version"
+started = "Started"
+finished = "Finished"
+
+figure = "Figure"
+table = "Table"
+listing = "Listing"
+
+contents = "Contents"
+bibliography = "Bibliography"
+list-of-figures = "List of Figures"
+list-of-tables = "List of Tables"
+list-of-listings = "List of Listings"
+glossary = "Glossary"
+
+[lang.de]
+supervisor = "Betreuer"
+grade = "Bewertung"
+version = "Version"
+started = "Begonnen"
+finished = "Beendet"
+
+figure = "Abbildung"
+table = "Tabelle"
+listing = "Auflistung"
+
+contents = "Inhaltsverzeichnis"
+bibliography = "Literaturverzeichnis"
+list-of-figures = "Abbildungsverzeichnis"
+list-of-tables = "Tabellenverzeichnis"
+list-of-listings = "Auflistungsverzeichnis"
+glossary = "Glossar"
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/src/l10n.typ b/packages/preview/tgm-hit-protocol/0.2.0/src/l10n.typ
new file mode 100644
index 0000000000..34e7303cd6
--- /dev/null
+++ b/packages/preview/tgm-hit-protocol/0.2.0/src/l10n.typ
@@ -0,0 +1,24 @@
+#import "libs.typ": linguify
+#import linguify: set-database as _set_database, linguify
+
+/// *Internal function.* Initializes Linguify with the template's translation file.
+///
+/// -> content
+#let set-database() = _set_database(toml("l10n.toml"))
+
+#let supervisor = linguify("supervisor")
+#let grade = linguify("grade")
+#let version = linguify("version")
+#let started = linguify("started")
+#let finished = linguify("finished")
+
+#let figure = linguify("figure")
+#let table = linguify("table")
+#let listing = linguify("listing")
+
+#let contents = linguify("contents")
+#let bibliography = linguify("bibliography")
+#let list-of-figures = linguify("list-of-figures")
+#let list-of-tables = linguify("list-of-tables")
+#let list-of-listings = linguify("list-of-listings")
+#let glossary = linguify("glossary")
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/src/lib.typ b/packages/preview/tgm-hit-protocol/0.2.0/src/lib.typ
new file mode 100644
index 0000000000..893546c0eb
--- /dev/null
+++ b/packages/preview/tgm-hit-protocol/0.2.0/src/lib.typ
@@ -0,0 +1,234 @@
+#import "libs.typ": ccicons, datify, outrageous
+
+#import "assets/mod.typ" as assets
+#import "glossary.typ": *
+#import "l10n.typ"
+
+#let parse-date(d) = {
+ toml(bytes("date = " + d)).date
+}
+
+#let display-date(d) = {
+ let date-formats = (
+ "en": "Month DD, YYYY",
+ "de": "DD. Month YYYY",
+ )
+ context if text.lang in date-formats {
+ datify.custom-date-format(d, pattern: date-formats.at(text.lang), lang: text.lang)
+ } else {
+ date.display()
+ }
+}
+
+#let start-page(
+ subject: none,
+ course: none,
+ title: none,
+ subtitle: none,
+ author: none,
+ teacher: none,
+ version: none,
+ begin: none,
+ finish: none,
+ date: none,
+) = [
+ // header images
+ #grid(
+ columns: (1fr, 1fr),
+ align: (left, right),
+ assets.tgm-logo(width: 3.2cm),
+ assets.just-do-it-logo(width: 3.2cm),
+ )
+
+ #v(1fr)
+
+ // middle part
+ #[
+ #set align(center)
+
+ #text(1.1em)[#subject]
+
+ #course
+
+ #text(2.5em, weight: "bold")[#title]
+
+ #text(1.4em)[#subtitle]
+
+ #author
+
+ #if date != none { display-date(date) }
+ ]
+
+ #v(1fr)
+
+ // footer table
+ #table(
+ columns: (1fr, 4fr, 1fr, 2fr),
+ align: (left, left, left, right),
+ stroke: none,
+ rows: 3,
+
+ [#l10n.grade:],
+ [],
+ [#l10n.version:],
+ version,
+
+ [#l10n.supervisor:],
+ teacher,
+ [#l10n.started:],
+ if begin != none { display-date(begin) },
+
+ [],
+ [],
+ [#l10n.finished:],
+ if finish != none { display-date(finish) },
+ )
+
+ #v(2cm)
+]
+
+/// The main template function. Your document will generally start with ```typ #show: template(...)```,
+/// which it already does after initializing the template. Although all parameters are named, most
+/// of them are really mandatory. Parameters that are not given may result in missing content in
+/// places where it is not actually optional.
+///
+/// -> function
+#let template(
+ /// The subject, displayed on the title page, above the course.
+ /// -> content | string
+ subject: none,
+ /// The course, displayed on the title page, above the title.
+ /// -> content | string
+ course: none,
+ /// The title, displayed on the title page.
+ /// -> content | string
+ title: none,
+ /// The subtitle, displayed on the title, under the title.
+ /// -> content | string
+ subtitle: none,
+ /// The author, displayed under the subtitle and in the footer.
+ /// -> content | string
+ author: none,
+ /// The name of the teacher, displayed on the title page.
+ /// -> content | string
+ teacher: none,
+ /// The version, displayed on the title page.
+ /// -> content | string
+ version: none,
+ /// The begin date of the protocol.
+ /// -> datetime
+ begin: none,
+ /// The finish date of the protocol.
+ /// -> datetime
+ finish: none,
+ /// The current date, displayed on the title page and in the header.
+ /// -> datetime
+ date: datetime.today(),
+ /// The bibliography (```typc bibliography()```) to use for the thesis.
+ /// -> content
+ bibliography: none,
+) = body => [
+ #set document(
+ ..if author != none {
+ (author: author)
+ },
+ title: title,
+ date: date,
+ )
+
+ #set heading(numbering: "1.1")
+ #show link: set text(fill: blue)
+
+ // setup linguify
+ #l10n.set-database()
+
+ #start-page(
+ subject: subject,
+ course: course,
+ title: title,
+ subtitle: subtitle,
+ author: author,
+ teacher: teacher,
+ version: version,
+ begin: begin,
+ finish: finish,
+ date: date,
+ )
+
+ // header and footer
+ #set page(
+ header: {
+ grid(
+ columns: (1fr, 1fr, 1fr),
+ align: (left, center, right),
+ inset: (bottom: 0.3em),
+ title,
+ subject,
+ if date != none { display-date(date) },
+ grid.hline(),
+ )
+ },
+ footer: {
+ grid(
+ columns: (1fr, 1fr, 1fr),
+ align: (left, center, right),
+ inset: (top: 0.3em),
+ grid.hline(),
+ [#author #ccicons.cc-by],
+ course,
+ context counter(page).display("1 / 1", both: true),
+ )
+ },
+ numbering: "1/1",
+ )
+
+ #show: make-glossary
+
+ #show outline.entry: outrageous.show-entry.with(
+ font: (auto,),
+ )
+
+ #outline()
+
+ #pagebreak()
+
+ #body
+
+ #pagebreak(weak: true)
+
+ #show outline.entry: outrageous.show-entry.with(
+ font: (auto,),
+ fill: (align(right, outrageous.repeat(gap: 6pt)[.]),),
+ )
+
+ #[
+ #set heading(outlined: true, numbering: none)
+ #print-glossary(title: [= #l10n.glossary])
+ ]
+
+ #[
+ #set std.bibliography(title: none)
+ #set heading(numbering: none)
+
+ = #l10n.bibliography
+
+ #bibliography
+ ]
+
+ #show outline: set heading(outlined: true)
+
+ #outline(
+ target: figure.where(kind: image),
+ title: l10n.list-of-figures,
+ )
+
+ #outline(
+ target: figure.where(kind: table),
+ title: l10n.list-of-tables,
+ )
+
+ #outline(
+ target: figure.where(kind: raw),
+ title: l10n.list-of-listings,
+ )
+]
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/src/libs.typ b/packages/preview/tgm-hit-protocol/0.2.0/src/libs.typ
new file mode 100644
index 0000000000..3fc79c6da1
--- /dev/null
+++ b/packages/preview/tgm-hit-protocol/0.2.0/src/libs.typ
@@ -0,0 +1,6 @@
+// import external packages here, so that package versions do not diverge
+#import "@preview/ccicons:1.0.1"
+#import "@preview/datify:1.0.0"
+#import "@preview/glossarium:0.5.9"
+#import "@preview/linguify:0.4.2"
+#import "@preview/outrageous:0.4.1"
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/template/assets.typ b/packages/preview/tgm-hit-protocol/0.2.0/template/assets.typ
new file mode 100644
index 0000000000..f8c28b1f05
--- /dev/null
+++ b/packages/preview/tgm-hit-protocol/0.2.0/template/assets.typ
@@ -0,0 +1 @@
+#import "assets/mod.typ": *
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/template/assets/just-do-it.png b/packages/preview/tgm-hit-protocol/0.2.0/template/assets/just-do-it.png
new file mode 100644
index 0000000000..da84dd252b
Binary files /dev/null and b/packages/preview/tgm-hit-protocol/0.2.0/template/assets/just-do-it.png differ
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/template/assets/mod.typ b/packages/preview/tgm-hit-protocol/0.2.0/template/assets/mod.typ
new file mode 100644
index 0000000000..c3e9950ab6
--- /dev/null
+++ b/packages/preview/tgm-hit-protocol/0.2.0/template/assets/mod.typ
@@ -0,0 +1 @@
+#let just-do-it-logo = image.with("just-do-it.png")
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/template/bibliography.bib b/packages/preview/tgm-hit-protocol/0.2.0/template/bibliography.bib
new file mode 100644
index 0000000000..ef4fa08344
--- /dev/null
+++ b/packages/preview/tgm-hit-protocol/0.2.0/template/bibliography.bib
@@ -0,0 +1,7 @@
+@online{ wiki:syt,
+ title = {Systemtechnik},
+ author = {Wikipedia Autoren},
+ url = {https://de.wikipedia.org/wiki/Systemtechnik},
+ organization = {Wikipedia},
+ note = {07.03.2018}
+}
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/template/glossaries.typ b/packages/preview/tgm-hit-protocol/0.2.0/template/glossaries.typ
new file mode 100644
index 0000000000..4f758d93cd
--- /dev/null
+++ b/packages/preview/tgm-hit-protocol/0.2.0/template/glossaries.typ
@@ -0,0 +1,16 @@
+#import "lib.typ": *
+
+#register-glossary(
+ glossary-entry(
+ "tgm",
+ short: "TGM",
+ long: "Technologisches Gewerbemuseum",
+ // group: "Accronyms",
+ ),
+ glossary-entry(
+ "syt",
+ short: "SYT",
+ long: "Systemtechnik",
+ description: ["Als Systemtechnik bezeichnet man verschiedene Aufbau- und Verbindungstechniken, aber auch eine Fachrichtung der Ingenieurwissenschaften. Er bedeutet in der Unterscheidung zu den Mikrotechnologien die Verbindung verschiedener einzelner Module eines Systems und deren Konzeption." @wiki:syt]
+ ),
+)
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/template/lib.typ b/packages/preview/tgm-hit-protocol/0.2.0/template/lib.typ
new file mode 100644
index 0000000000..e6efdda5e1
--- /dev/null
+++ b/packages/preview/tgm-hit-protocol/0.2.0/template/lib.typ
@@ -0,0 +1,3 @@
+#import "@preview/tgm-hit-protocol:0.2.0": *
+
+#import "assets.typ"
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/template/main.typ b/packages/preview/tgm-hit-protocol/0.2.0/template/main.typ
new file mode 100644
index 0000000000..e1426f5363
--- /dev/null
+++ b/packages/preview/tgm-hit-protocol/0.2.0/template/main.typ
@@ -0,0 +1,145 @@
+#import "lib.typ": *
+
+#set text(lang: "de")
+#show: template(
+ title: [Protokolle in Typst],
+ course: [5xHIT 20yy/yy],
+ subtitle: [Laborprotokoll],
+ subject: [Systemtechnik Labor],
+ author: "Arthur Dent",
+ teacher: [Michael Borko],
+ version: [1.0],
+ begin: parse-date("2024-10-07"),
+ finish: parse-date("2024-10-07"),
+ date: parse-date("2024-10-09"),
+ bibliography: bibliography("bibliography.bib"),
+)
+
+#include "glossaries.typ"
+
+= Einführung
+Diese Protokollvorlage soll helfen den Laborübungsteil entsprechend
+dokumentieren zu können. Diese Vorlage ist in Typst verfasst.
+
+== Ziele
+Hier werden die zu erwerbenden Kompetenzen und deren Deskriptoren beschrieben.
+Diese werden von den unterweisenden Lehrkräften vorgestellt.
+
+Dies kann natürlich auch durch eine Aufzählung erfolgen:
+- Dokumentiere wichtige Funktionen
+- Gib eine Einführung zur Verwendung von Typst
+
+== Voraussetzungen
+Welche Informationen sind notwendig um die Laborübung reibungslos durchführen zu
+können? Hier werden alle Anforderungen der Lehrkraft detailliert beschrieben und
+mit Quellen untermauert.
+
+== Aufgabenstellung
+Hier wird dann die konkrete Aufgabenstellung der Laborübung definiert.
+
+== Bewertung
+Hier wird die Bewertung für das Beispiel auf die jeweiligen Kompetenzen
+aufgeteilt. Diese soll zur leichteren Abnahme auch nicht entfernt werden.
+
+Nun kommt ein Seitenumbruch, um eine klare Trennung der Schülerarbeit zu
+bestimmen.
+
+#pagebreak()
+
+= Anwendung
+
+Hier sollen die Schritte der Laborübung erläutert werden. Hier sind alle
+Fragestellungen der Lehrkraft zu beantworten. Etwaige Probleme bzw.
+Schwierigkeiten sollten ebenfalls hier angeführt werden.
+
+In diesem Fall werden einige Typst-Elemente dokumentiert, welche bei der
+Kreation von Protokollen behilflich sein könnten.
+
+== Figures
+
+Wenn man etwas in ein figure packt, dann kann es in einem Abbildungsverzeichnis
+(oder ähnliches) später aufgelistet werden.
+
+#figure(
+ "Auch Text ist möglich!",
+ caption: [Figure mit Text],
+)
+
+Man kann ihnen Labels (\) geben, und referenzieren (@text-figure).
+
+Die folgenden Features können auch ohne figures verwendet werden.
+
+== Abbildungen
+
+#figure(
+ assets.just-do-it-logo(width: 50%),
+ caption: [Mit Beschreibung und Label],
+)
+
+== Mathe :)
+
+=== Inline
+Die coole Formel: $e^(i*pi)+1=0$
+
+=== Zentriert
+$ e^(i*pi)+1=0 $
+
+=== Figure
+#figure(
+ $ e^(i*pi)+1=0 $,
+ caption: [Eulersche Identität],
+)
+
+== Tabellen
+
+#figure(
+ table(
+ columns: (1fr, 9fr),
+ table.header([*Header*], [*Kopf*]),
+ [#lorem(2)], [#lorem(10)],
+ [#lorem(2)], [uwu],
+ ),
+ caption: [Tabellen],
+)
+
+== Aufzählung
+
+- Element einer Aufzählung
+ - Erstes eingerücktes Element einer Aufzählung
+ - Zweites eingerücktes Element einer Aufzählung
+
++ Element einer Aufzählung
+ + Erstes eingerücktes Element einer Aufzählung
+ + Zweites eingerücktes Element einer Aufzählung
+
+== Glossar
+
+Das Glossar enthält Erklärungen von Begriffen und Abkürzen, die im Fließtext keinen Platz haben. In der Datei `glossaries.typ` werden Begriffe -- oder in diesem Fall eine Abkürzung -- in der folgenden Form definiert:
+
+#figure(
+ ```typ
+ #glossary-entry(
+ "tgm",
+ short: "TGM",
+ long: "Technologisches Gewerbemuseum",
+ )
+ ```,
+ caption: [Eintrag einer Abkürzung in `glossaries.typ`],
+)
+
+Verwendet werden kann dieser Glossareintrag ähnlich einer Quellenangabe durch ```typ @tgm```. Bei der ersten Verwendung wird die Langform automatisch auch dargestellt: @tgm. Bei weiteren Verwendungen wird dagegen nur die Kurzform angezeigt: @tgm.
+
+Mit der Funktion ```typc gls()``` kann auch die Langform erzwungen werden: #gls("syt") ist beim ersten mal auch ausgeschrieben, aber hier wird es manuell erwirkt: #gls("syt", long: true).
+
+== Quelltext
+
+#figure(
+ ```cpp
+ #include
+ int main() {
+ // Ich bin ein Kommentar!
+ std::cout << "Hello World! :3\n";
+ }
+ ```,
+ caption: [C++ Code],
+)
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/thumbnail.png b/packages/preview/tgm-hit-protocol/0.2.0/thumbnail.png
new file mode 100644
index 0000000000..3244cc0e10
Binary files /dev/null and b/packages/preview/tgm-hit-protocol/0.2.0/thumbnail.png differ
diff --git a/packages/preview/tgm-hit-protocol/0.2.0/typst.toml b/packages/preview/tgm-hit-protocol/0.2.0/typst.toml
new file mode 100644
index 0000000000..2650862a65
--- /dev/null
+++ b/packages/preview/tgm-hit-protocol/0.2.0/typst.toml
@@ -0,0 +1,36 @@
+# for a description of available keys, see https://github.com/typst/packages/?tab=readme-ov-file#package-format
+
+[package]
+name = "tgm-hit-protocol"
+version = "0.2.0"
+entrypoint = "src/lib.typ"
+authors = [
+ "Simon Gao ",
+ "Clemens Koza ",
+]
+license = "MIT"
+description = "Protocol template for students of the HIT department at TGM Wien"
+# homepage = ""
+repository = "https://github.com/TGM-HIT/typst-protocol"
+keywords = ["TGM", "HIT", "protocol", "HTL", "SYT"]
+categories = ["report"]
+disciplines = ["computer-science"]
+compiler = "0.13.1"
+exclude = [
+ ".github",
+ "docs",
+ "gallery",
+ "scripts",
+ "tests",
+ ".typstignore",
+ "Justfile",
+ "example.pdf",
+]
+
+[template]
+path = "template"
+entrypoint = "main.typ"
+thumbnail = "thumbnail.png"
+
+# [tool.mytool]
+# foo = "bar"