diff --git a/packages/preview/exzellenz-tum-thesis/0.2.1/LICENSE b/packages/preview/exzellenz-tum-thesis/0.2.1/LICENSE
new file mode 100644
index 0000000000..f19aaa6d09
--- /dev/null
+++ b/packages/preview/exzellenz-tum-thesis/0.2.1/LICENSE
@@ -0,0 +1,14 @@
+MIT No Attribution
+
+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.
+
+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/exzellenz-tum-thesis/0.2.1/README.md b/packages/preview/exzellenz-tum-thesis/0.2.1/README.md
new file mode 100644
index 0000000000..ee2d4e131b
--- /dev/null
+++ b/packages/preview/exzellenz-tum-thesis/0.2.1/README.md
@@ -0,0 +1,32 @@
+# exzellenz-tum-thesis
+This is a Typst template for a thesis at TU Munich. I made it for my thesis in the School CIT, but I think it can be adapted to other schools as well.
+
+## Usage
+You can use this template in the Typst web app by clicking "Start from template"
+on the dashboard and searching for `exzellenz-tum-thesis`.
+
+Alternatively, you can use the CLI to kick this project off using the command
+```
+typst init @preview/exzellenz-tum-thesis
+```
+
+Typst will create a new directory with all the files needed to get you started.
+
+## Configuration
+This template exports the `exzellenz-tum-thesis` function with the following named arguments:
+
+- `degree`: String - e.g. Bachelor, Master
+- `program`: String - e.g. Informatics, Electrical Engineering
+- `school`: String - e.g. School of Computation, Information and Technology
+- `examiner`: String - Your TUM professor
+- `supervisors`: Array of Strings - The official advisors and supervisors
+- `author`: String
+- `title-en`: String
+- `title-de`: String
+- `abstract-text`: Content block
+- `acknowledgements`: Content block - optional, if you have thanks to give
+- `submission-date`: String
+- `show-title-in-header`: Boolean - Should author and title appear in the header of each content page?
+- `draft`: Boolean - Set to false when finalizing the thesis
+
+The template will initialize your package with a sample call to the `exzellenz-tum-thesis` function.
\ No newline at end of file
diff --git a/packages/preview/exzellenz-tum-thesis/0.2.1/TUM_logo.svg b/packages/preview/exzellenz-tum-thesis/0.2.1/TUM_logo.svg
new file mode 100644
index 0000000000..ca9d1300e1
--- /dev/null
+++ b/packages/preview/exzellenz-tum-thesis/0.2.1/TUM_logo.svg
@@ -0,0 +1,58 @@
+
+
+
diff --git a/packages/preview/exzellenz-tum-thesis/0.2.1/abstract.typ b/packages/preview/exzellenz-tum-thesis/0.2.1/abstract.typ
new file mode 100644
index 0000000000..ca31f6ee57
--- /dev/null
+++ b/packages/preview/exzellenz-tum-thesis/0.2.1/abstract.typ
@@ -0,0 +1,25 @@
+#let abstract(body) = {
+
+ set text(
+ size: 12pt,
+ lang: "en"
+ )
+
+ set par(leading: 1em)
+
+
+ v(1fr)
+
+ align(center, text(1.2em, weight: 600, "Abstract"))
+
+ align(
+ left,
+ text[
+ #body
+ ]
+ )
+
+ v(1fr)
+
+ pagebreak()
+}
\ No newline at end of file
diff --git a/packages/preview/exzellenz-tum-thesis/0.2.1/acknowledgement.typ b/packages/preview/exzellenz-tum-thesis/0.2.1/acknowledgement.typ
new file mode 100644
index 0000000000..5cbe5f2f55
--- /dev/null
+++ b/packages/preview/exzellenz-tum-thesis/0.2.1/acknowledgement.typ
@@ -0,0 +1,15 @@
+#let acknowledgement(body) = {
+ set text(
+ size: 12pt,
+ lang: "en",
+ )
+
+ set par(leading: 1em)
+
+
+ v(25mm)
+ // --- Acknowledgements ---
+ align(center, text(1.5em, weight: 700, "Acknowledgements"))
+ body
+ pagebreak()
+}
diff --git a/packages/preview/exzellenz-tum-thesis/0.2.1/cover.typ b/packages/preview/exzellenz-tum-thesis/0.2.1/cover.typ
new file mode 100644
index 0000000000..e27d0d7cd9
--- /dev/null
+++ b/packages/preview/exzellenz-tum-thesis/0.2.1/cover.typ
@@ -0,0 +1,40 @@
+#let covertitel(
+ degree: "",
+ program: "",
+ school: "",
+) = {
+ // --- Cover ---
+ v(1cm)
+ align(center, image("TUM_logo.svg", width: 26%))
+
+ upper(align(center, text(font: "New Computer Modern", 1.75em, weight: 700, school)))
+ upper(align(center, text(font: "New Computer Modern", 1.45em, weight: 500, program)))
+ upper(align(center, text(font: "New Computer Modern", 1.45em, weight: 500, "Technische Universität München")))
+
+ v(15mm)
+
+ align(center, text(1.3em, weight: 100, degree + "’s Thesis in " + program))
+
+ v(15mm)
+}
+
+
+#let cover(
+ title: "",
+ degree: "",
+ program: "",
+ author: "",
+ school: "",
+) = {
+
+ covertitel(degree: degree, program: program, school: school)
+
+ align(center, text(2em, weight: 700, title))
+
+ v(10mm)
+ align(center, text(2em, weight: 500, author))
+
+ pagebreak()
+}
+
+
diff --git a/packages/preview/exzellenz-tum-thesis/0.2.1/disclaimer.typ b/packages/preview/exzellenz-tum-thesis/0.2.1/disclaimer.typ
new file mode 100644
index 0000000000..ca7fdf3731
--- /dev/null
+++ b/packages/preview/exzellenz-tum-thesis/0.2.1/disclaimer.typ
@@ -0,0 +1,31 @@
+#let disclaimer(
+ title: "",
+ degree: "",
+ author: "",
+ submission-date: "",
+) = {
+ // --- Disclaimer ---
+ v(1fr)
+ text("Disclaimer", weight: 600, size: 1.4em)
+
+ v(1.5em)
+
+ text(
+ "I confirm that this "
+ + lower(degree)
+ + "’s thesis is my own work and I have documented all sources and material used.",
+ size: 1.1em,
+ )
+
+ v(25mm)
+ grid(
+ columns: 2,
+ gutter: 1fr,
+ overline[#sym.wj #sym.space #sym.space #sym.space #sym.space Munich, #submission-date #sym.space #sym.space #sym.space #sym.space #sym.wj],
+ overline[#sym.wj #sym.space #sym.space #sym.space #sym.space #sym.space #author #sym.space #sym.space #sym.space #sym.space #sym.space #sym.wj],
+ )
+
+ v(15%)
+
+ pagebreak()
+}
diff --git a/packages/preview/exzellenz-tum-thesis/0.2.1/template.typ b/packages/preview/exzellenz-tum-thesis/0.2.1/template.typ
new file mode 100644
index 0000000000..ecbfeaa54e
--- /dev/null
+++ b/packages/preview/exzellenz-tum-thesis/0.2.1/template.typ
@@ -0,0 +1,93 @@
+#import "cover.typ": *
+#import "titlepage.typ": *
+#import "disclaimer.typ": *
+#import "acknowledgement.typ": *
+#import "abstract.typ": *
+
+
+#let exzellenz-tum-thesis(
+ degree: "The Degree",
+ program: "The Program",
+ school: "The School",
+ examiner: "Your Supervisor",
+ supervisors: ("The first supervisor", "The second supervisor"),
+ author: "The Author",
+ title-en: "English Title",
+ title-de: "German Title",
+ abstract-text: none,
+ acknowledgements: none,
+ submission-date: "(Handover Date)",
+ show-title-in-header: true,
+ draft: true,
+ body,
+) = {
+
+ let draft_string = ""
+ if draft{
+ draft_string = "DRAFT - "
+ }
+
+ set document(author: author, title: draft_string + title-en)
+ set page(
+ numbering: "1",
+ number-align: center,
+ margin: (left: 25mm, right: 25mm, top: 30mm, bottom: 30mm),
+ header: {
+ set text(8pt)
+ h(1fr)
+ if draft [
+ DRAFT
+ ]
+ },
+ )
+
+ set page(numbering: none)
+
+ cover(
+ title: draft_string + title-en,
+ degree: degree,
+ program: program,
+ author: author,
+ school: school
+ )
+
+ titlepage(
+ title: draft_string + title-en,
+ title-de: title-de,
+ degree: degree,
+ program: program,
+ school: school,
+ examiner: examiner,
+ supervisors: supervisors,
+ author: author,
+ submission-date: draft_string + submission-date
+ )
+
+ disclaimer(
+ title: title-en,
+ degree: degree,
+ author: author,
+ submission-date: submission-date
+ )
+ if acknowledgements != none {
+ acknowledgement(acknowledgements)
+ }
+
+ abstract(abstract-text)
+
+ set page(
+ header: {
+ set text(8pt)
+ if show-title-in-header [
+ #author - #title-en
+ ]
+ h(1fr)
+ if draft [
+ DRAFT
+ ]
+ },
+ )
+
+ body
+
+}
\ No newline at end of file
diff --git a/packages/preview/exzellenz-tum-thesis/0.2.1/template/chapters/1_Introduction.typ b/packages/preview/exzellenz-tum-thesis/0.2.1/template/chapters/1_Introduction.typ
new file mode 100644
index 0000000000..bccc6ce7bb
--- /dev/null
+++ b/packages/preview/exzellenz-tum-thesis/0.2.1/template/chapters/1_Introduction.typ
@@ -0,0 +1,99 @@
+#import "../utils.typ": todo
+
+= Introduction
+This is the first chapter of your thesis. Chapters are marked with = and should be contained in their own .typ file for cleanliness.
+Chapters, sections, etc. Can be referenced like @chapter_introduction and @section_drafting
+== Drafting, Citing and Abbreviating
+This is a section. Each = after the first denotes the level of the heading (== section, === subsection).
+
+If there are things you haven't gotten to yet, it's useful to mark them as a TODO like this: #todo[Find the motivation]. TODOs are enabled when inwriting is enabled and will disappear if you disable it in utils.typ
+
+This is likely the first place you have to list your citations. You can cite a paper in your items.bib like this @turing2021computing. While you are in inwriting mode, this will show up as chicago style so you can see the author and date directly, when you disable inwriting (e.g. when handing in a draft to your supervisor), or manually override the style, it will show as #cite(, style: "association-for-computing-machinery") (@acm:short style). A list of available styles and how to use them can be found at the #link("https://typst.app/docs/reference/model/cite/#parameters-style")[Typst documentation]. It is best to double check with your advisor which style to use. If you need to use a different style, change it in the call to the cite function in main.typ.
+
+Another useful concept is the glossary (especially if your thesis is longer). A glossary contains a list of abbreviations, acronyms, etc. In standard fashion, an abbreviation needs to be established in its long version before it can be used. For example: this is a thesis written at the @tum and not @lmu and Typst automatically knows that these acronyms are now established and now I can use @tum and @lmu. However, if I wanted to have it written out in long form again, I can simply write @tum:long. The Glossarium package has a lot of features that might be useful and others that might be overkill, you can read about them on #link("https://typst.app/universe/package/glossarium/")[the package site].
+
+Fun facts can often be expanded upon in footnotes #footnote[These go here and can contain #link("https://google.com")[links to somewhere]] if they don't really fit the bibliography.
+
+== Equations and Code
+Equations are either fully expanded and numbered:
+
+$
+E = m c^2
+$
+
+so that you can cite @eq_einstein in your text, or inline if it's something brief or trivial like $F=m * a$.
+These are, of course, simple examples, and if you are not familiar with typst equations, take a look at #link("https://typst.app/docs/reference/math/")[the Typst math reference]. Though if you understand LaTeX, this should not be that hard.
+
+Sometimes it makes sense to write a pseudocode if you want to display the working of an algorithm. This is analogous to many other typesetting systems and supports syntax highlighting for different languages:
+
+```python
+def main():
+ print('This is python')
+```
+```java
+public static void main(String[] args) {
+ System.out.println("This is Java")
+}
+```
+
+These are blocks, but you can also use inline referencing to certain variables or functions with `main`, which makes it clear that they are not normal text.
+
+Some more math examples:
+$
+W_l = cases(
+ c dot W_l thick \/ thick hat(lambda) #h(2em) & "if" c < hat(lambda) ,
+ W_l & thick "otherwise")
+$
+
+$ mat(
+ r_(1,1),r_(1,1), r_(1,1), t_x;
+ r_(2,1),r_(2,1), r_(2,1), t_y;
+ r_(3,1),r_(3,1), r_(3,1), t_z;
+ 0,0,0, 1
+) $
+
+== Figures and Tables
+Figures can be referenced easily with @figure_dummy and numbering is automatic based on the order in which they are defined (not referenced).
+
+
+#figure(
+ grid(
+ columns: 3, // 3 auto-sized columns
+ row-gutter: 2mm, // space between rows
+ column-gutter: 2mm, // space between columns
+ [#image("../figures/dummy_image.jpg", width: 90%)],
+ [#image("../figures/dummy_image.jpg", width: 90%)],
+ [#image("../figures/dummy_image.jpg", width: 70%)],
+ [#image("../figures/dummy_image.jpg", width: 70%)],
+ [#image("../figures/dummy_image.jpg", width: 70%)],
+ [#image("../figures/dummy_image.jpg", width: 100%)],
+ ),
+ caption: [
+ A grid figure made up of the same sample image with varying scales.
+ ]
+)
+
+#figure(
+ {
+ set text(size: 0.8em, hyphenate: false, weight: "medium");
+ set par(justify: false);
+ let gut(it) = [#text(fill: rgb("006600"))[#it]];
+ let mittel(it) = [#text(fill: rgb("333300"))[#it]];
+ let schlecht(it) = [#text(fill: rgb("660000"))[#it]];
+ table(
+ columns: (12.2em, 1fr, 1fr, 1fr, 1fr),
+ rows: 5em,
+ fill: (col, row) => if row == 0 or col == 0 { luma(240) } else { none },
+ inset: 5pt,
+ align: horizon,
+ [], [*Method A*], [*Method B*], [*Method C*], [*Method D*],
+ [_property_], [#schlecht[No] #footnote[#lorem(10)] ], [#gut[Yes] #footnote[#lorem(10)] ], [#gut[Yes] #footnote()], [#gut[Yes] #footnote()],
+ [_memory_], [#schlecht[No] #footnote()], [#gut[Yes] #footnote()], [#gut[Yes] #footnote()], [#gut[Yes] #footnote()],
+ [_complexity_], [#gut[Low] #footnote[#lorem(10)] ], [#gut[Low] #footnote()], [#schlecht[High] #footnote()], [#schlecht[High] #footnote()],
+ [_runtime_], [#gut[Low] #footnote()], [#gut[Low] #footnote()], [#schlecht[High] #footnote[#lorem(10)] ], [#schlecht[High] #footnote()],
+ )
+ },
+ caption: [
+ A complex table. Tables need to be inside of figures to make them referenceable.
+ ]
+)
\ No newline at end of file
diff --git a/packages/preview/exzellenz-tum-thesis/0.2.1/template/chapters/Appendix.typ b/packages/preview/exzellenz-tum-thesis/0.2.1/template/chapters/Appendix.typ
new file mode 100644
index 0000000000..4b95c8987f
--- /dev/null
+++ b/packages/preview/exzellenz-tum-thesis/0.2.1/template/chapters/Appendix.typ
@@ -0,0 +1,7 @@
+#import "../utils.typ": todo
+
+#heading(numbering: none)[Appendix A: Supplementary Material]
+
+-- Supplementary Material --
+
+#todo[Your appendix content goes here]
\ No newline at end of file
diff --git a/packages/preview/exzellenz-tum-thesis/0.2.1/template/figures/dummy_image.jpg b/packages/preview/exzellenz-tum-thesis/0.2.1/template/figures/dummy_image.jpg
new file mode 100644
index 0000000000..72b31e7585
Binary files /dev/null and b/packages/preview/exzellenz-tum-thesis/0.2.1/template/figures/dummy_image.jpg differ
diff --git a/packages/preview/exzellenz-tum-thesis/0.2.1/template/glossary.typ b/packages/preview/exzellenz-tum-thesis/0.2.1/template/glossary.typ
new file mode 100644
index 0000000000..a7c1fa771c
--- /dev/null
+++ b/packages/preview/exzellenz-tum-thesis/0.2.1/template/glossary.typ
@@ -0,0 +1,50 @@
+// this is an example. Check https://typst.app/universe/package/glossarium
+
+#let glossary = (
+ (
+ key: "tum",
+ short: "TUM",
+ long: "Technical University Munich",
+ group: "Universities"
+ ),
+ (
+ key: "lmu",
+ short: "LMU",
+ long: "Ludwig-Maximilians-Universität München",
+ group: "Universities"
+ ),
+ (
+ key: "ieee",
+ short: "IEEE",
+ long: "Institute of Electrical and Electronics Engineers",
+ ),
+ (
+ key: "acm",
+ short: "ACM",
+ long: "Association for Computing Machinery",
+ ),
+ // Add a PLURAL form
+ (
+ key: "potato",
+ short: "potato",
+ // "plural" will be used when "short" should be pluralized
+ plural: "potatoes",
+ ),
+ // Add a LONGPLURAL form
+ (
+ key: "dm",
+ short: "DM",
+ long: "diagonal matrix",
+ // "longplural" will be used when "long" should be pluralized
+ longplural: "diagonal matrices",
+ description: "Probably some math stuff idk",
+ ),
+ // Add a CUSTOM entry
+ (
+ key: "c",
+ short: $c$,
+ description: "Speed of light in vacuum",
+ // The custom key will be ignored by the default print-glossary function
+ custom: (unit: $op("m s")^(-1)$),
+ ),
+)
\ No newline at end of file
diff --git a/packages/preview/exzellenz-tum-thesis/0.2.1/template/items.bib b/packages/preview/exzellenz-tum-thesis/0.2.1/template/items.bib
new file mode 100644
index 0000000000..d175044069
--- /dev/null
+++ b/packages/preview/exzellenz-tum-thesis/0.2.1/template/items.bib
@@ -0,0 +1,33 @@
+@Comment{
+ from https://api.zotero.org/users/{xxx}/collections/{xxx}/items/top?key={xxx}&format=biblatex
+ --> you can use the following shell script to copy the data to the clipboard
+
+#!/bin/bash
+
+limit=25
+start=0
+your_user_id="98765"
+your_collection_id="ABC123"
+your_zotero_key="xxxxxx"
+
+# Retrieve data from the link
+while true; do
+ response=$(curl -s "https://api.zotero.org/users/$your_user_id/collections/$your_collection_id/items/top?key=$your_zotero_key&format=biblatex&limit=$limit&start=$start")
+ if [ -z "$response" ]; then
+ break
+ fi
+ echo "$response"
+ start=$((start + limit))
+done | pbcopy
+
+}
+
+@article{turing2021computing,
+ title={Computing machinery and intelligence (1950)},
+ author={Turing, Alan M},
+ journal={Mind},
+ volume={59},
+ number={236},
+ pages={33--60},
+ year={2021}
+}
diff --git a/packages/preview/exzellenz-tum-thesis/0.2.1/template/main.typ b/packages/preview/exzellenz-tum-thesis/0.2.1/template/main.typ
new file mode 100644
index 0000000000..2d370a28dd
--- /dev/null
+++ b/packages/preview/exzellenz-tum-thesis/0.2.1/template/main.typ
@@ -0,0 +1,186 @@
+#import "@preview/exzellenz-tum-thesis:0.2.1": exzellenz-tum-thesis
+
+#import "utils.typ": inwriting, draft, todo
+#import "glossary.typ": glossary
+#import "@preview/glossarium:0.5.10": make-glossary, register-glossary, print-glossary, gls, glspl
+
+
+/** Introduction
+
+ The philosophy of this template is that the template file itself only contains the template of the first pages of the thesis, that are the same for all thesis.
+
+ The formatting for the main part of the thesis is done here in the main.typ file. This looks less clean in the first place but has the advantage that you can easily change the formatting of the thesis, without the need to change the unreachable template file.
+
+**/
+
+/** Drafting
+
+ Set inwriting and draft inside utils.typ.
+
+ The "draft" variable is used to show DRAFT in the header and the title. This should be true until the final version is handed-in.
+
+ The "inwriting" is used to change the appearance of the document for easier writing. Set to true for yourself but false for handing in a draft or so.
+
+**/
+
+
+// Global Settings //
+#set text(lang: "en", size: 12pt)
+#set text(ligatures: false)
+#set text(font: "New Computer Modern Sans")
+
+#show: exzellenz-tum-thesis.with(
+ degree: "Master",
+ program: "Informatics",
+ school: "School of Computation, Information and Technology",
+ examiner: "Prof. Dr. Albert Einstein",
+ supervisors: ("Claude Elwood Shannon", "Kurt Gödel",), // A list of your supervisors. If you have just one, keep it as ("Name",) The template will automatically make it singular
+ author: "Max Mustermann",
+ title-en: "This is the Title of the Thesis",
+ title-de: "Das ist der Titel der Arbeit",
+ abstract-text: [
+ #lorem(60)
+ ],
+ acknowledgements: [
+ These are the acknowledgements. Remove this argument if you don't need them.
+
+ Alternatively, you can list people, institutions or other entities that contributed to the successful completion of this thesis.
+ ],
+ submission-date: datetime.today().display("[day].[month].[year]"),
+ show-title-in-header: true,
+ draft: draft, // Do not change this here, rather change it in utils.typ
+)
+
+// Settings for Body //
+// Set fonts
+#set text(font: "New Computer Modern")
+#show raw: set text(font: "New Computer Modern Mono")
+#show math.equation: set text(font: "New Computer Modern Math")
+
+// Set font size
+#show heading.where(level: 3): set text(size: 1.05em)
+#show heading.where(level: 4): set text(size: 1.0em)
+#show figure: set text(size: 0.9em)
+#show figure.caption: set align(left)
+
+// Set spacing
+#set par(leading: 0.9em, first-line-indent: 1.8em, justify: true, spacing: 1em)
+#set table(inset: 6.5pt)
+#show table: set par(justify: false)
+#show figure: it => [#v(1em) #it #v(1em)]
+
+#show heading.where(level: 1): set block(above: 1.95em, below: 1em)
+#show heading.where(level: 2): set block(above: 1.85em, below: 1em)
+#show heading.where(level: 3): set block(above: 1.75em, below: 1em)
+#show heading.where(level: 4): set block(above: 1.55em, below: 1em)
+
+// Pagebreak after level 1 headings
+#show heading.where(level: 1): it => [
+ #pagebreak(weak: true)
+ #it
+]
+
+// Names for headings
+#set heading(supplement: it => {
+ if (it.has("depth")) {
+ if it.depth == 1 [Chapter]
+ else if it.depth == 2 [Section]
+ else [Subsection]
+ } else {
+ [ERROR, this should not happen]
+ }
+})
+
+// Set citation style - Change this if your advisor/field requires a different format
+#set cite(style: "association-for-computing-machinery")
+
+// Table stroke
+#set table(stroke: 0.5pt + black)
+
+// color links and references
+#show ref: set text(fill: color.olive)
+#show link: set text(fill: blue)
+
+// style table-of-contents
+#show outline.entry.where(
+ level: 1
+): it => {
+ v(1em, weak: true)
+ strong(it)
+}
+
+// Draft Settings //
+#show cite: set text(fill: blue) if inwriting
+#show footnote: set text(fill: purple) if inwriting
+#set cite(style: "chicago-author-date") if inwriting
+
+// Make and register Glossary //
+#show: make-glossary
+#register-glossary(glossary)
+
+// ------ Content ------
+
+// Table of contents.
+#outline(
+ title: {
+ text(1.3em, weight: 700, "Contents")
+ v(10mm)
+ },
+ indent: 2em,
+ depth: 3
+)
+#pagebreak(weak: false)
+
+// Set numbering mode (and restart for main content)
+#set page(numbering: "1")
+#counter(page).update(1)
+#set math.equation(numbering: "(1)")
+#set heading(numbering: "1.1")
+// --- Main Chapters ---
+
+#include "chapters/1_Introduction.typ"
+
+//#include "chapters/2_Background.typ"
+
+//#include "chapters/3_RelatedWork.typ"
+
+//#include "chapters/4_Methodology.typ"
+
+//#include "chapters/5_Results.typ"
+
+//#include "chapters/6_Discussion.typ"
+
+//#include "chapters/7_Conclusion.typ"
+
+
+// --- Appendices ---
+
+// restart page numbering using roman numbers
+#set page(numbering: "i")
+#counter(page).update(1)
+
+
+#include("chapters/Appendix.typ")
+
+// List of Acronyms.
+#heading(numbering: none)[Glossary]
+#print-glossary(glossary)
+
+// List of figures.
+#heading(numbering: none)[List of Figures]
+#outline(
+ title: none,
+ target: figure.where(kind: image),
+)
+
+// List of tables.
+#heading(numbering: none)[List of Tables]
+#outline(
+ title: none,
+ target: figure.where(kind: table)
+)
+
+// --- Bibliography ---
+
+#set par(leading: 0.7em, first-line-indent: 0em, justify: true)
+#bibliography("items.bib", style: "apa")
\ No newline at end of file
diff --git a/packages/preview/exzellenz-tum-thesis/0.2.1/template/utils.typ b/packages/preview/exzellenz-tum-thesis/0.2.1/template/utils.typ
new file mode 100644
index 0000000000..fadacc3202
--- /dev/null
+++ b/packages/preview/exzellenz-tum-thesis/0.2.1/template/utils.typ
@@ -0,0 +1,14 @@
+#let inwriting = true
+#let draft = true
+
+#assert(not(inwriting and not(draft)), message: "If inwriting is true, draft should be true as well.")
+
+#let todo(it) = [
+ #if inwriting [
+ #text(size: 0.8em)[#emoji.pencil] #text(it, fill: red, weight: 600)
+ ]
+]
+
+#let silentheading(level, body) = [
+ #heading(outlined: false, level: level, numbering: none, bookmarked: true)[#body]
+]
diff --git a/packages/preview/exzellenz-tum-thesis/0.2.1/thumbnail.png b/packages/preview/exzellenz-tum-thesis/0.2.1/thumbnail.png
new file mode 100644
index 0000000000..a52f90651d
Binary files /dev/null and b/packages/preview/exzellenz-tum-thesis/0.2.1/thumbnail.png differ
diff --git a/packages/preview/exzellenz-tum-thesis/0.2.1/titlepage.typ b/packages/preview/exzellenz-tum-thesis/0.2.1/titlepage.typ
new file mode 100644
index 0000000000..1cd4cbda61
--- /dev/null
+++ b/packages/preview/exzellenz-tum-thesis/0.2.1/titlepage.typ
@@ -0,0 +1,38 @@
+#import "cover.typ": covertitel
+
+#let titlepage(
+ title: "",
+ title-de: "",
+ degree: "",
+ program: "",
+ school: "",
+ examiner: "",
+ supervisors: (),
+ author: "",
+ submission-date: none,
+) = {
+
+ covertitel(degree: degree, program: program, school: school)
+
+ align(center, text(2em, weight: 700, title))
+
+
+ align(center, text(2em, weight: 500, title-de))
+
+ v(1fr)
+
+ align(
+ center,
+ table(
+ align: left,
+ columns: 2,
+ stroke: none,
+ strong("Author: "), author,
+ strong("Examiner: "), examiner,
+ strong(if supervisors.len() == 1 { "Supervisor: " } else { "Supervisors: " }), supervisors.join(", \n"),
+ strong("Submission Date: "), submission-date,
+ )
+ )
+
+ pagebreak()
+}
\ No newline at end of file
diff --git a/packages/preview/exzellenz-tum-thesis/0.2.1/typst.toml b/packages/preview/exzellenz-tum-thesis/0.2.1/typst.toml
new file mode 100644
index 0000000000..6e83177ab0
--- /dev/null
+++ b/packages/preview/exzellenz-tum-thesis/0.2.1/typst.toml
@@ -0,0 +1,17 @@
+[package]
+name = "exzellenz-tum-thesis"
+version = "0.2.1"
+entrypoint = "template.typ"
+authors = ["Fabian Scherer ", "Sebastian Oßner "]
+license = "MIT-0"
+description = "Customizable template for a thesis at the TU Munich"
+categories = ["thesis"]
+homepage = "https://github.com/Fabioni/Typst-TUM-Thesis-Template"
+keywords = ["TUM", "München", "Munich", "TU München", "TU Munich", "Technische Universität München", "Technical University of Munich", "Thesis", "Masterarbeit", "Bachelorarbeit", "Final Thesis", "Bachelor's Thesis", "Master's Thesis"]
+disciplines = []
+compiler = "0.14.0"
+
+[template]
+path = "template"
+entrypoint = "main.typ"
+thumbnail = "thumbnail.png"
\ No newline at end of file