diff --git a/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/LICENSE b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/LICENSE
new file mode 100644
index 000000000..cc848add1
--- /dev/null
+++ b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2024 Lasse Rosenow
+
+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.
diff --git a/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/README.md b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/README.md
new file mode 100644
index 000000000..ba012fff9
--- /dev/null
+++ b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/README.md
@@ -0,0 +1,47 @@
+# HAW Hamburg Typst Template
+
+This is an **`unofficial`** template for writing a bachelor thesis in the `HAW Hamburg` department of `Computer Science` design using [Typst](https://github.com/typst/typst).
+
+## Required Fonts
+
+To correctly render this template please make sure that the `New Computer Modern` font is installed on your system.
+
+## Usage
+
+To use this package just add the following code to your [Typst](https://github.com/typst/typst) document:
+
+```typst
+#import "@preview/haw-hamburg:0.4.0": bachelor-thesis
+
+#show: bachelor-thesis.with(
+ language: "en",
+
+ title-de: "Beispiel Titel",
+ keywords-de: ("Stichwort", "Wichtig", "Super"),
+ abstract-de: "Beispiel Zusammenfassung",
+
+ title-en: "Example title",
+ keywords-en: ("Keyword", "Important", "Super"),
+ abstract-en: "Example abstract",
+
+ author: "Example author",
+ faculty: "Engineering and Computer Science",
+ department: "Computer Science",
+ study-course: "Bachelor of Science Informatik Technischer Systeme",
+ supervisors: ("Prof. Dr. Example", "Prof. Dr. Example"),
+ submission-date: datetime(year: 1948, month: 12, day: 10),
+ include-declaration-of-independent-processing: true,
+)
+```
+
+## How to Compile
+
+This project contains an example setup that splits individual chapters into different files.\
+This can cause problems when using references etc.\
+These problems can be avoided by following these steps:
+
+- Make sure to always compile your `main.typ` file which includes all of your chapters for references to work correctly.
+- VSCode:
+ - Install the [Tinymist Typst](https://marketplace.visualstudio.com/items?itemName=myriad-dreamin.tinymist) extension.
+ - Make sure to start the `PDF` or `Live Preview` only from within your `main.typ` file.
+ - If problems occur it usually helps to close the preview and restart it from your `main.typ` file.
diff --git a/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/lib.typ b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/lib.typ
new file mode 100644
index 000000000..4cbb30b6b
--- /dev/null
+++ b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/lib.typ
@@ -0,0 +1 @@
+// This file is redundant, but required by the Typst packaging system
\ No newline at end of file
diff --git a/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/abbreviations.typ b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/abbreviations.typ
new file mode 100644
index 000000000..e823d48c8
--- /dev/null
+++ b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/abbreviations.typ
@@ -0,0 +1,7 @@
+#let abbreviations-entry-list = (
+ (
+ key: "cpu",
+ short: "CPU",
+ long: "Central Processing Unit",
+ ),
+)
diff --git a/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/bibliography.bib b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/bibliography.bib
new file mode 100644
index 000000000..a7d3d99a5
--- /dev/null
+++ b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/bibliography.bib
@@ -0,0 +1,8 @@
+@book{UN,
+ author = {{United Nations}},
+ title = {Universal Declaration of Human Rights},
+ year = {1948},
+ month = dec,
+ venue = {Paris},
+ month_numeric = {12}
+}
diff --git a/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/chapters/01_introduction.typ b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/chapters/01_introduction.typ
new file mode 100644
index 000000000..252b8d73a
--- /dev/null
+++ b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/chapters/01_introduction.typ
@@ -0,0 +1,19 @@
+#import "../dependencies.typ": *
+
+= Introduction
+
+== How to Use Abbreviations
+
+This is how to call an abbreviation such as @cpu for the first time.
+
+After that it will look different: @cpu.
+
+And for plurals: @cpu:pl.
+
+It is also call it using a different syntax: #gls("cpu") and #glspl("cpu").
+
+== How to Use Glossary Entries
+
+Glossary entries can be called the same way: @freedom or #gls("freedom").
+
+It is also possible to call plurals: @freedom:pl or #glspl("freedom").
diff --git a/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/chapters/02_background.typ b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/chapters/02_background.typ
new file mode 100644
index 000000000..8b8232ac8
--- /dev/null
+++ b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/chapters/02_background.typ
@@ -0,0 +1,11 @@
+#import "../dependencies.typ": *
+
+= Background
+
+== Subsection
+
+#lorem(400)
+
+== Another Subsection
+
+#lorem(300)
\ No newline at end of file
diff --git a/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/dependencies.typ b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/dependencies.typ
new file mode 100644
index 000000000..bbf3826ff
--- /dev/null
+++ b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/dependencies.typ
@@ -0,0 +1 @@
+#import "@preview/glossarium:0.5.3": *
\ No newline at end of file
diff --git a/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/glossary.typ b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/glossary.typ
new file mode 100644
index 000000000..1c14802b7
--- /dev/null
+++ b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/glossary.typ
@@ -0,0 +1,7 @@
+#let glossary-entry-list = (
+ (
+ key: "freedom",
+ short: "freedom",
+ description: "Freedom is the power or right to speak, act and change as one wants without hindrance or restraint. Freedom is often associated with liberty and autonomy in the sense of \"giving oneself one's own laws\"",
+ ),
+)
diff --git a/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/ieeetran.csl b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/ieeetran.csl
new file mode 100644
index 000000000..4d5f5b624
--- /dev/null
+++ b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/ieeetran.csl
@@ -0,0 +1,526 @@
+
+
diff --git a/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/main.typ b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/main.typ
new file mode 100644
index 000000000..0e12c919c
--- /dev/null
+++ b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/src/main.typ
@@ -0,0 +1,58 @@
+#import "@preview/haw-hamburg:0.4.0": bachelor-thesis
+#import "dependencies.typ": *
+
+// Take a look at the file `template.typ` in the file panel
+// to customize this template and discover how it works.
+#show: bachelor-thesis.with(
+ language: "en",
+
+ title-de: "Antwort auf die endgültige Frage nach dem Leben, dem Universum und dem ganzen Rest",
+ keywords-de: ("Leben", "Universum", "Alles"),
+ abstract-de: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae,
+felis. Curabitur dictum gravida mauris. Nam arcu lib
+ero, nonummy eget, consectetuer id, vulputate a, magna.",
+
+ title-en: "Answer to the Ultimate Question of Life, the Universe, and Everything",
+ keywords-en: ("Live", "Universe", "Everything"),
+ abstract-en: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae,
+felis. Curabitur dictum gravida mauris. Nam arcu lib
+ero, nonummy eget, consectetuer id, vulputate a, magna.",
+
+ author: "The Computer",
+ faculty: "Engineering and Computer Science",
+ department: "Computer Science",
+ study-course: "Bachelor of Science Informatik Technischer Systeme",
+ supervisors: ("Prof. Dr. Example", "Prof. Dr. Example"),
+ submission-date: datetime(year: 1948, month: 12, day: 10),
+ include-declaration-of-independent-processing: true,
+)
+
+// Enable glossary
+// Use: @key or @key:pl to reference and #print-glossary to print it
+// More documentation: https://typst.app/universe/package/glossarium/
+#show: make-glossary
+#import "glossary.typ": glossary-entry-list
+#import "abbreviations.typ": abbreviations-entry-list
+#register-glossary(glossary-entry-list)
+#register-glossary(abbreviations-entry-list)
+
+// Print abbreviations
+#pagebreak(weak: true)
+#heading("Abbreviations", numbering: none)
+#print-glossary(abbreviations-entry-list, disable-back-references: true)
+
+// Include chapters of thesis
+#pagebreak(weak: true)
+#include "chapters/01_introduction.typ"
+#include "chapters/02_background.typ"
+
+// Print glossary
+#pagebreak(weak: true)
+#heading("Glossary", numbering: none)
+#print-glossary(glossary-entry-list, disable-back-references: true)
+
+// Print bibliography
+#pagebreak(weak: true)
+#bibliography("bibliography.bib", style: "ieeetran.csl")
diff --git a/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/thumbnail.png b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/thumbnail.png
new file mode 100644
index 000000000..d6f10a54c
Binary files /dev/null and b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/thumbnail.png differ
diff --git a/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/typst.toml b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/typst.toml
new file mode 100644
index 000000000..f86beda25
--- /dev/null
+++ b/packages/preview/haw-hamburg-bachelor-thesis/0.4.0/typst.toml
@@ -0,0 +1,15 @@
+[package]
+name = "haw-hamburg-bachelor-thesis"
+entrypoint = "lib.typ"
+description = "Unofficial template for writing a bachelor-thesis in the HAW Hamburg department of Computer Science design."
+categories = ['thesis']
+version = "0.4.0"
+compiler = "0.13.0"
+authors = ['Lasse Rosenow']
+license = "MIT"
+repository = "https://github.com/LasseRosenow/HAW-Hamburg-Typst-Template"
+
+[template]
+path = "src"
+entrypoint = "main.typ"
+thumbnail = "thumbnail.png"
diff --git a/packages/preview/haw-hamburg-master-thesis/0.4.0/LICENSE b/packages/preview/haw-hamburg-master-thesis/0.4.0/LICENSE
new file mode 100644
index 000000000..cc848add1
--- /dev/null
+++ b/packages/preview/haw-hamburg-master-thesis/0.4.0/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2024 Lasse Rosenow
+
+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.
diff --git a/packages/preview/haw-hamburg-master-thesis/0.4.0/README.md b/packages/preview/haw-hamburg-master-thesis/0.4.0/README.md
new file mode 100644
index 000000000..d909973e1
--- /dev/null
+++ b/packages/preview/haw-hamburg-master-thesis/0.4.0/README.md
@@ -0,0 +1,47 @@
+# HAW Hamburg Typst Template
+
+This is an **`unofficial`** template for writing a master thesis in the `HAW Hamburg` department of `Computer Science` design using [Typst](https://github.com/typst/typst).
+
+## Required Fonts
+
+To correctly render this template please make sure that the `New Computer Modern` font is installed on your system.
+
+## Usage
+
+To use this package just add the following code to your [Typst](https://github.com/typst/typst) document:
+
+```typst
+#import "@preview/haw-hamburg:0.4.0": master-thesis
+
+#show: master-thesis.with(
+ language: "en",
+
+ title-de: "Beispiel Titel",
+ keywords-de: ("Stichwort", "Wichtig", "Super"),
+ abstract-de: "Beispiel Zusammenfassung",
+
+ title-en: "Example title",
+ keywords-en: ("Keyword", "Important", "Super"),
+ abstract-en: "Example abstract",
+
+ author: "The Computer",
+ faculty: "Engineering and Computer Science",
+ department: "Computer Science",
+ study-course: "Master of Science Computer Science",
+ supervisors: ("Prof. Dr. Example", "Prof. Dr. Example"),
+ submission-date: datetime(year: 1948, month: 12, day: 10),
+ include-declaration-of-independent-processing: true,
+)
+```
+
+## How to Compile
+
+This project contains an example setup that splits individual chapters into different files.\
+This can cause problems when using references etc.\
+These problems can be avoided by following these steps:
+
+- Make sure to always compile your `main.typ` file which includes all of your chapters for references to work correctly.
+- VSCode:
+ - Install the [Tinymist Typst](https://marketplace.visualstudio.com/items?itemName=myriad-dreamin.tinymist) extension.
+ - Make sure to start the `PDF` or `Live Preview` only from within your `main.typ` file.
+ - If problems occur it usually helps to close the preview and restart it from your `main.typ` file.
diff --git a/packages/preview/haw-hamburg-master-thesis/0.4.0/lib.typ b/packages/preview/haw-hamburg-master-thesis/0.4.0/lib.typ
new file mode 100644
index 000000000..4cbb30b6b
--- /dev/null
+++ b/packages/preview/haw-hamburg-master-thesis/0.4.0/lib.typ
@@ -0,0 +1 @@
+// This file is redundant, but required by the Typst packaging system
\ No newline at end of file
diff --git a/packages/preview/haw-hamburg-master-thesis/0.4.0/src/abbreviations.typ b/packages/preview/haw-hamburg-master-thesis/0.4.0/src/abbreviations.typ
new file mode 100644
index 000000000..e823d48c8
--- /dev/null
+++ b/packages/preview/haw-hamburg-master-thesis/0.4.0/src/abbreviations.typ
@@ -0,0 +1,7 @@
+#let abbreviations-entry-list = (
+ (
+ key: "cpu",
+ short: "CPU",
+ long: "Central Processing Unit",
+ ),
+)
diff --git a/packages/preview/haw-hamburg-master-thesis/0.4.0/src/bibliography.bib b/packages/preview/haw-hamburg-master-thesis/0.4.0/src/bibliography.bib
new file mode 100644
index 000000000..a7d3d99a5
--- /dev/null
+++ b/packages/preview/haw-hamburg-master-thesis/0.4.0/src/bibliography.bib
@@ -0,0 +1,8 @@
+@book{UN,
+ author = {{United Nations}},
+ title = {Universal Declaration of Human Rights},
+ year = {1948},
+ month = dec,
+ venue = {Paris},
+ month_numeric = {12}
+}
diff --git a/packages/preview/haw-hamburg-master-thesis/0.4.0/src/chapters/01_introduction.typ b/packages/preview/haw-hamburg-master-thesis/0.4.0/src/chapters/01_introduction.typ
new file mode 100644
index 000000000..252b8d73a
--- /dev/null
+++ b/packages/preview/haw-hamburg-master-thesis/0.4.0/src/chapters/01_introduction.typ
@@ -0,0 +1,19 @@
+#import "../dependencies.typ": *
+
+= Introduction
+
+== How to Use Abbreviations
+
+This is how to call an abbreviation such as @cpu for the first time.
+
+After that it will look different: @cpu.
+
+And for plurals: @cpu:pl.
+
+It is also call it using a different syntax: #gls("cpu") and #glspl("cpu").
+
+== How to Use Glossary Entries
+
+Glossary entries can be called the same way: @freedom or #gls("freedom").
+
+It is also possible to call plurals: @freedom:pl or #glspl("freedom").
diff --git a/packages/preview/haw-hamburg-master-thesis/0.4.0/src/chapters/02_background.typ b/packages/preview/haw-hamburg-master-thesis/0.4.0/src/chapters/02_background.typ
new file mode 100644
index 000000000..8b8232ac8
--- /dev/null
+++ b/packages/preview/haw-hamburg-master-thesis/0.4.0/src/chapters/02_background.typ
@@ -0,0 +1,11 @@
+#import "../dependencies.typ": *
+
+= Background
+
+== Subsection
+
+#lorem(400)
+
+== Another Subsection
+
+#lorem(300)
\ No newline at end of file
diff --git a/packages/preview/haw-hamburg-master-thesis/0.4.0/src/dependencies.typ b/packages/preview/haw-hamburg-master-thesis/0.4.0/src/dependencies.typ
new file mode 100644
index 000000000..bbf3826ff
--- /dev/null
+++ b/packages/preview/haw-hamburg-master-thesis/0.4.0/src/dependencies.typ
@@ -0,0 +1 @@
+#import "@preview/glossarium:0.5.3": *
\ No newline at end of file
diff --git a/packages/preview/haw-hamburg-master-thesis/0.4.0/src/glossary.typ b/packages/preview/haw-hamburg-master-thesis/0.4.0/src/glossary.typ
new file mode 100644
index 000000000..1c14802b7
--- /dev/null
+++ b/packages/preview/haw-hamburg-master-thesis/0.4.0/src/glossary.typ
@@ -0,0 +1,7 @@
+#let glossary-entry-list = (
+ (
+ key: "freedom",
+ short: "freedom",
+ description: "Freedom is the power or right to speak, act and change as one wants without hindrance or restraint. Freedom is often associated with liberty and autonomy in the sense of \"giving oneself one's own laws\"",
+ ),
+)
diff --git a/packages/preview/haw-hamburg-master-thesis/0.4.0/src/ieeetran.csl b/packages/preview/haw-hamburg-master-thesis/0.4.0/src/ieeetran.csl
new file mode 100644
index 000000000..4d5f5b624
--- /dev/null
+++ b/packages/preview/haw-hamburg-master-thesis/0.4.0/src/ieeetran.csl
@@ -0,0 +1,526 @@
+
+
diff --git a/packages/preview/haw-hamburg-master-thesis/0.4.0/src/main.typ b/packages/preview/haw-hamburg-master-thesis/0.4.0/src/main.typ
new file mode 100644
index 000000000..0d2586bc5
--- /dev/null
+++ b/packages/preview/haw-hamburg-master-thesis/0.4.0/src/main.typ
@@ -0,0 +1,58 @@
+#import "@preview/haw-hamburg:0.4.0": master-thesis
+#import "dependencies.typ": *
+
+// Take a look at the file `template.typ` in the file panel
+// to customize this template and discover how it works.
+#show: master-thesis.with(
+ language: "en",
+
+ title-de: "Antwort auf die endgültige Frage nach dem Leben, dem Universum und dem ganzen Rest",
+ keywords-de: ("Leben", "Universum", "Alles"),
+ abstract-de: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae,
+felis. Curabitur dictum gravida mauris. Nam arcu lib
+ero, nonummy eget, consectetuer id, vulputate a, magna.",
+
+ title-en: "Answer to the Ultimate Question of Life, the Universe, and Everything",
+ keywords-en: ("Live", "Universe", "Everything"),
+ abstract-en: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae,
+felis. Curabitur dictum gravida mauris. Nam arcu lib
+ero, nonummy eget, consectetuer id, vulputate a, magna.",
+
+ author: "The Computer",
+ faculty: "Engineering and Computer Science",
+ department: "Computer Science",
+ study-course: "Master of Science Computer Science",
+ supervisors: ("Prof. Dr. Example", "Prof. Dr. Example"),
+ submission-date: datetime(year: 1948, month: 12, day: 10),
+ include-declaration-of-independent-processing: true,
+)
+
+// Enable glossary
+// Use: @key or @key:pl to reference and #print-glossary to print it
+// More documentation: https://typst.app/universe/package/glossarium/
+#show: make-glossary
+#import "glossary.typ": glossary-entry-list
+#import "abbreviations.typ": abbreviations-entry-list
+#register-glossary(glossary-entry-list)
+#register-glossary(abbreviations-entry-list)
+
+// Print abbreviations
+#pagebreak(weak: true)
+#heading("Abbreviations", numbering: none)
+#print-glossary(abbreviations-entry-list, disable-back-references: true)
+
+// Include chapters of thesis
+#pagebreak(weak: true)
+#include "chapters/01_introduction.typ"
+#include "chapters/02_background.typ"
+
+// Print glossary
+#pagebreak(weak: true)
+#heading("Glossary", numbering: none)
+#print-glossary(glossary-entry-list, disable-back-references: true)
+
+// Print bibliography
+#pagebreak(weak: true)
+#bibliography("bibliography.bib", style: "ieeetran.csl")
diff --git a/packages/preview/haw-hamburg-master-thesis/0.4.0/thumbnail.png b/packages/preview/haw-hamburg-master-thesis/0.4.0/thumbnail.png
new file mode 100644
index 000000000..8ef6f2f9c
Binary files /dev/null and b/packages/preview/haw-hamburg-master-thesis/0.4.0/thumbnail.png differ
diff --git a/packages/preview/haw-hamburg-master-thesis/0.4.0/typst.toml b/packages/preview/haw-hamburg-master-thesis/0.4.0/typst.toml
new file mode 100644
index 000000000..e8cb948b7
--- /dev/null
+++ b/packages/preview/haw-hamburg-master-thesis/0.4.0/typst.toml
@@ -0,0 +1,15 @@
+[package]
+name = "haw-hamburg-master-thesis"
+entrypoint = "lib.typ"
+description = "Unofficial template for writing a master-thesis in the HAW Hamburg department of Computer Science design."
+categories = ['thesis']
+version = "0.4.0"
+compiler = "0.13.0"
+authors = ['Lasse Rosenow']
+license = "MIT"
+repository = "https://github.com/LasseRosenow/HAW-Hamburg-Typst-Template"
+
+[template]
+path = "src"
+entrypoint = "main.typ"
+thumbnail = "thumbnail.png"
diff --git a/packages/preview/haw-hamburg-report/0.4.0/LICENSE b/packages/preview/haw-hamburg-report/0.4.0/LICENSE
new file mode 100644
index 000000000..cc848add1
--- /dev/null
+++ b/packages/preview/haw-hamburg-report/0.4.0/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2024 Lasse Rosenow
+
+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.
diff --git a/packages/preview/haw-hamburg-report/0.4.0/README.md b/packages/preview/haw-hamburg-report/0.4.0/README.md
new file mode 100644
index 000000000..53751565e
--- /dev/null
+++ b/packages/preview/haw-hamburg-report/0.4.0/README.md
@@ -0,0 +1,36 @@
+# HAW Hamburg Typst Template
+
+This is an **`unofficial`** template for writing a report in the `HAW Hamburg` department of `Computer Science` design using [Typst](https://github.com/typst/typst).
+
+## Required Fonts
+
+To correctly render this template please make sure that the `New Computer Modern` font is installed on your system.
+
+## Usage
+
+To use this package just add the following code to your [Typst](https://github.com/typst/typst) document:
+
+```typst
+#import "@preview/haw-hamburg:0.4.0": report
+
+#show: report.with(
+ language: "en",
+ title: "Example title",
+ author:"Example author",
+ faculty: "Engineering and Computer Science",
+ department: "Computer Science",
+ include-declaration-of-independent-processing: true,
+)
+```
+
+## How to Compile
+
+This project contains an example setup that splits individual chapters into different files.\
+This can cause problems when using references etc.\
+These problems can be avoided by following these steps:
+
+- Make sure to always compile your `main.typ` file which includes all of your chapters for references to work correctly.
+- VSCode:
+ - Install the [Tinymist Typst](https://marketplace.visualstudio.com/items?itemName=myriad-dreamin.tinymist) extension.
+ - Make sure to start the `PDF` or `Live Preview` only from within your `main.typ` file.
+ - If problems occur it usually helps to close the preview and restart it from your `main.typ` file.
diff --git a/packages/preview/haw-hamburg-report/0.4.0/lib.typ b/packages/preview/haw-hamburg-report/0.4.0/lib.typ
new file mode 100644
index 000000000..4cbb30b6b
--- /dev/null
+++ b/packages/preview/haw-hamburg-report/0.4.0/lib.typ
@@ -0,0 +1 @@
+// This file is redundant, but required by the Typst packaging system
\ No newline at end of file
diff --git a/packages/preview/haw-hamburg-report/0.4.0/src/abbreviations.typ b/packages/preview/haw-hamburg-report/0.4.0/src/abbreviations.typ
new file mode 100644
index 000000000..e823d48c8
--- /dev/null
+++ b/packages/preview/haw-hamburg-report/0.4.0/src/abbreviations.typ
@@ -0,0 +1,7 @@
+#let abbreviations-entry-list = (
+ (
+ key: "cpu",
+ short: "CPU",
+ long: "Central Processing Unit",
+ ),
+)
diff --git a/packages/preview/haw-hamburg-report/0.4.0/src/bibliography.bib b/packages/preview/haw-hamburg-report/0.4.0/src/bibliography.bib
new file mode 100644
index 000000000..a7d3d99a5
--- /dev/null
+++ b/packages/preview/haw-hamburg-report/0.4.0/src/bibliography.bib
@@ -0,0 +1,8 @@
+@book{UN,
+ author = {{United Nations}},
+ title = {Universal Declaration of Human Rights},
+ year = {1948},
+ month = dec,
+ venue = {Paris},
+ month_numeric = {12}
+}
diff --git a/packages/preview/haw-hamburg-report/0.4.0/src/chapters/01_introduction.typ b/packages/preview/haw-hamburg-report/0.4.0/src/chapters/01_introduction.typ
new file mode 100644
index 000000000..252b8d73a
--- /dev/null
+++ b/packages/preview/haw-hamburg-report/0.4.0/src/chapters/01_introduction.typ
@@ -0,0 +1,19 @@
+#import "../dependencies.typ": *
+
+= Introduction
+
+== How to Use Abbreviations
+
+This is how to call an abbreviation such as @cpu for the first time.
+
+After that it will look different: @cpu.
+
+And for plurals: @cpu:pl.
+
+It is also call it using a different syntax: #gls("cpu") and #glspl("cpu").
+
+== How to Use Glossary Entries
+
+Glossary entries can be called the same way: @freedom or #gls("freedom").
+
+It is also possible to call plurals: @freedom:pl or #glspl("freedom").
diff --git a/packages/preview/haw-hamburg-report/0.4.0/src/chapters/02_background.typ b/packages/preview/haw-hamburg-report/0.4.0/src/chapters/02_background.typ
new file mode 100644
index 000000000..8b8232ac8
--- /dev/null
+++ b/packages/preview/haw-hamburg-report/0.4.0/src/chapters/02_background.typ
@@ -0,0 +1,11 @@
+#import "../dependencies.typ": *
+
+= Background
+
+== Subsection
+
+#lorem(400)
+
+== Another Subsection
+
+#lorem(300)
\ No newline at end of file
diff --git a/packages/preview/haw-hamburg-report/0.4.0/src/dependencies.typ b/packages/preview/haw-hamburg-report/0.4.0/src/dependencies.typ
new file mode 100644
index 000000000..bbf3826ff
--- /dev/null
+++ b/packages/preview/haw-hamburg-report/0.4.0/src/dependencies.typ
@@ -0,0 +1 @@
+#import "@preview/glossarium:0.5.3": *
\ No newline at end of file
diff --git a/packages/preview/haw-hamburg-report/0.4.0/src/glossary.typ b/packages/preview/haw-hamburg-report/0.4.0/src/glossary.typ
new file mode 100644
index 000000000..1c14802b7
--- /dev/null
+++ b/packages/preview/haw-hamburg-report/0.4.0/src/glossary.typ
@@ -0,0 +1,7 @@
+#let glossary-entry-list = (
+ (
+ key: "freedom",
+ short: "freedom",
+ description: "Freedom is the power or right to speak, act and change as one wants without hindrance or restraint. Freedom is often associated with liberty and autonomy in the sense of \"giving oneself one's own laws\"",
+ ),
+)
diff --git a/packages/preview/haw-hamburg-report/0.4.0/src/ieeetran.csl b/packages/preview/haw-hamburg-report/0.4.0/src/ieeetran.csl
new file mode 100644
index 000000000..4d5f5b624
--- /dev/null
+++ b/packages/preview/haw-hamburg-report/0.4.0/src/ieeetran.csl
@@ -0,0 +1,526 @@
+
+
diff --git a/packages/preview/haw-hamburg-report/0.4.0/src/main.typ b/packages/preview/haw-hamburg-report/0.4.0/src/main.typ
new file mode 100644
index 000000000..6eca76249
--- /dev/null
+++ b/packages/preview/haw-hamburg-report/0.4.0/src/main.typ
@@ -0,0 +1,41 @@
+#import "@preview/haw-hamburg:0.4.0": report
+#import "dependencies.typ": *
+
+// Take a look at the file `template.typ` in the file panel
+// to customize this template and discover how it works.
+#show: report.with(
+ language: "en",
+ title: "Answer to the Ultimate Question of Life, the Universe, and Everything",
+ author:"The Computer",
+ faculty: "Engineering and Computer Science",
+ department: "Computer Science",
+ include-declaration-of-independent-processing: true,
+)
+
+// Enable glossary
+// Use: @key or @key:pl to reference and #print-glossary to print it
+// More documentation: https://typst.app/universe/package/glossarium/
+#show: make-glossary
+#import "glossary.typ": glossary-entry-list
+#import "abbreviations.typ": abbreviations-entry-list
+#register-glossary(glossary-entry-list)
+#register-glossary(abbreviations-entry-list)
+
+// Print abbreviations
+#pagebreak(weak: true)
+#heading("Abbreviations", numbering: none)
+#print-glossary(abbreviations-entry-list, disable-back-references: true)
+
+// Include chapters of thesis
+#pagebreak(weak: true)
+#include "chapters/01_introduction.typ"
+#include "chapters/02_background.typ"
+
+// Print glossary
+#pagebreak(weak: true)
+#heading("Glossary", numbering: none)
+#print-glossary(glossary-entry-list, disable-back-references: true)
+
+// Print bibliography
+#pagebreak(weak: true)
+#bibliography("bibliography.bib", style: "ieeetran.csl")
diff --git a/packages/preview/haw-hamburg-report/0.4.0/thumbnail.png b/packages/preview/haw-hamburg-report/0.4.0/thumbnail.png
new file mode 100644
index 000000000..8fd86cd9d
Binary files /dev/null and b/packages/preview/haw-hamburg-report/0.4.0/thumbnail.png differ
diff --git a/packages/preview/haw-hamburg-report/0.4.0/typst.toml b/packages/preview/haw-hamburg-report/0.4.0/typst.toml
new file mode 100644
index 000000000..c93845689
--- /dev/null
+++ b/packages/preview/haw-hamburg-report/0.4.0/typst.toml
@@ -0,0 +1,15 @@
+[package]
+name = "haw-hamburg-report"
+entrypoint = "lib.typ"
+description = "Unofficial template for writing a report in the HAW Hamburg department of Computer Science design."
+categories = ['report']
+version = "0.4.0"
+compiler = "0.13.0"
+authors = ['Lasse Rosenow']
+license = "MIT"
+repository = "https://github.com/LasseRosenow/HAW-Hamburg-Typst-Template"
+
+[template]
+path = "src"
+entrypoint = "main.typ"
+thumbnail = "thumbnail.png"
diff --git a/packages/preview/haw-hamburg/0.4.0/LICENSE b/packages/preview/haw-hamburg/0.4.0/LICENSE
new file mode 100644
index 000000000..cc848add1
--- /dev/null
+++ b/packages/preview/haw-hamburg/0.4.0/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2024 Lasse Rosenow
+
+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.
diff --git a/packages/preview/haw-hamburg/0.4.0/README.md b/packages/preview/haw-hamburg/0.4.0/README.md
new file mode 100644
index 000000000..f52c2885c
--- /dev/null
+++ b/packages/preview/haw-hamburg/0.4.0/README.md
@@ -0,0 +1,98 @@
+# HAW Hamburg Typst Template
+
+This is an **`unofficial`** template for writing a report or thesis in the `HAW Hamburg` department of `Computer Science` design using [Typst](https://github.com/typst/typst).
+
+## Required Fonts
+
+To correctly render this template please make sure that the `New Computer Modern` font is installed on your system.
+
+## Usage
+
+To use this package just add the following code to your [Typst](https://github.com/typst/typst) document:
+
+### Report
+
+```typst
+#import "@preview/haw-hamburg:0.3.0": report
+
+#show: report.with(
+ language: "en",
+ title: "Example title",
+ author:"Example author",
+ faculty: "Engineering and Computer Science",
+ department: "Computer Science",
+ include-declaration-of-independent-processing: true,
+)
+```
+
+### Bachelor Thesis
+
+```typst
+#import "@preview/haw-hamburg:0.3.0": bachelor-thesis
+
+#show: bachelor-thesis.with(
+ language: "en",
+
+ title-de: "Beispiel Titel",
+ keywords-de: ("Stichwort", "Wichtig", "Super"),
+ abstract-de: "Beispiel Zusammenfassung",
+
+ title-en: "Example title",
+ keywords-en: ("Keyword", "Important", "Super"),
+ abstract-en: "Example abstract",
+
+ author: "Example author",
+ faculty: "Engineering and Computer Science",
+ department: "Computer Science",
+ study-course: "Bachelor of Science Informatik Technischer Systeme",
+ supervisors: ("Prof. Dr. Example", "Prof. Dr. Example"),
+ submission-date: datetime(year: 1948, month: 12, day: 10),
+ include-declaration-of-independent-processing: true,
+)
+```
+
+### Master Thesis
+
+```typst
+#import "@preview/haw-hamburg:0.3.0": master-thesis
+
+#show: master-thesis.with(
+ language: "en",
+
+ title-de: "Beispiel Titel",
+ keywords-de: ("Stichwort", "Wichtig", "Super"),
+ abstract-de: "Beispiel Zusammenfassung",
+
+ title-en: "Example title",
+ keywords-en: ("Keyword", "Important", "Super"),
+ abstract-en: "Example abstract",
+
+ author: "The Computer",
+ faculty: "Engineering and Computer Science",
+ department: "Computer Science",
+ study-course: "Master of Science Computer Science",
+ supervisors: ("Prof. Dr. Example", "Prof. Dr. Example"),
+ submission-date: datetime(year: 1948, month: 12, day: 10),
+ include-declaration-of-independent-processing: true,
+)
+```
+
+## How to Compile
+
+This project contains an example setup that splits individual chapters into different files.\
+This can cause problems when using references etc.\
+These problems can be avoided by following these steps:
+
+- Make sure to always compile your `main.typ` file which includes all of your chapters for references to work correctly.
+- VSCode:
+ - Install the [Tinymist Typst](https://marketplace.visualstudio.com/items?itemName=myriad-dreamin.tinymist) extension.
+ - Make sure to start the `PDF` or `Live Preview` only from within your `main.typ` file.
+ - If problems occur it usually helps to close the preview and restart it from your `main.typ` file.
+
+## Examples
+
+Examples can be found inside of the [examples](https://github.com/LasseRosenow/HAW-Hamburg-Typst-Template/tree/main/examples) directory
+
+- For Bachelor theses see: [Bachelor thesis example](https://github.com/LasseRosenow/HAW-Hamburg-Typst-Template/tree/main/examples/bachelor-thesis)
+- For Master theses see: [Master thesis example](https://github.com/LasseRosenow/HAW-Hamburg-Typst-Template/tree/main/examples/master-thesis)
+- For reports see: [Report example](https://github.com/LasseRosenow/HAW-Hamburg-Typst-Template/tree/main/examples/report)
diff --git a/packages/preview/haw-hamburg/0.4.0/assets/ieeetran.csl b/packages/preview/haw-hamburg/0.4.0/assets/ieeetran.csl
new file mode 100644
index 000000000..4d5f5b624
--- /dev/null
+++ b/packages/preview/haw-hamburg/0.4.0/assets/ieeetran.csl
@@ -0,0 +1,526 @@
+
+
diff --git a/packages/preview/haw-hamburg/0.4.0/assets/logo.svg b/packages/preview/haw-hamburg/0.4.0/assets/logo.svg
new file mode 100644
index 000000000..5a790a222
--- /dev/null
+++ b/packages/preview/haw-hamburg/0.4.0/assets/logo.svg
@@ -0,0 +1,16 @@
+
+
+
diff --git a/packages/preview/haw-hamburg/0.4.0/lib.typ b/packages/preview/haw-hamburg/0.4.0/lib.typ
new file mode 100644
index 000000000..50c1e912c
--- /dev/null
+++ b/packages/preview/haw-hamburg/0.4.0/lib.typ
@@ -0,0 +1,132 @@
+#let report(
+ language: "en",
+ title: "",
+ author: "",
+ faculty: "",
+ department: "",
+ include-declaration-of-independent-processing: false,
+ body,
+) = {
+ import "template.typ": template
+ template(
+ is-thesis: false,
+ is-master-thesis: false,
+ is-bachelor-thesis: false,
+ is-report: true,
+
+ language: language,
+
+ title-de: title,
+ keywords-de: none,
+ abstract-de: none,
+
+ title-en: title,
+ keywords-en: none,
+ abstract-en: none,
+
+ author: author,
+ faculty: faculty,
+ department: department,
+ study-course: none,
+ supervisors: (),
+ submission-date: none,
+ include-declaration-of-independent-processing: include-declaration-of-independent-processing,
+ body,
+ )
+}
+
+#let bachelor-thesis(
+ language: "en",
+
+ title-de: "",
+ keywords-de: none,
+ abstract-de: none,
+
+ title-en: none,
+ keywords-en: none,
+ abstract-en: none,
+
+ author: "",
+ faculty: "",
+ department: "",
+ study-course: "",
+ supervisors: (),
+ submission-date: none,
+ include-declaration-of-independent-processing: true,
+ body,
+) = {
+ import "template.typ": template
+ template(
+ is-thesis: true,
+ is-master-thesis: false,
+ is-bachelor-thesis: true,
+ is-report: false,
+
+ language: language,
+
+ title-de: title-de,
+ keywords-de: keywords-de,
+ abstract-de: abstract-de,
+
+ title-en: title-en,
+ keywords-en: keywords-en,
+ abstract-en: abstract-en,
+
+ author: author,
+ faculty: faculty,
+ department: department,
+ study-course: study-course,
+ supervisors: supervisors,
+ submission-date: submission-date,
+ include-declaration-of-independent-processing: include-declaration-of-independent-processing,
+ body,
+ )
+}
+
+#let master-thesis(
+ language: "en",
+
+ title-de: "",
+ keywords-de: none,
+ abstract-de: none,
+
+ title-en: none,
+ keywords-en: none,
+ abstract-en: none,
+
+ author: "",
+ faculty: "",
+ department: "",
+ study-course: "",
+ supervisors: (),
+ submission-date: none,
+ include-declaration-of-independent-processing: true,
+ body,
+) = {
+ import "template.typ": template
+ template(
+ is-thesis: true,
+ is-master-thesis: true,
+ is-bachelor-thesis: false,
+ is-report: false,
+
+ language: language,
+
+ title-de: title-de,
+ keywords-de: keywords-de,
+ abstract-de: abstract-de,
+
+ title-en: title-en,
+ keywords-en: keywords-en,
+ abstract-en: abstract-en,
+
+ author: author,
+ faculty: faculty,
+ department: department,
+ study-course: study-course,
+ supervisors: supervisors,
+ submission-date: submission-date,
+ include-declaration-of-independent-processing: include-declaration-of-independent-processing,
+ body,
+ )
+}
\ No newline at end of file
diff --git a/packages/preview/haw-hamburg/0.4.0/pages/abstract.typ b/packages/preview/haw-hamburg/0.4.0/pages/abstract.typ
new file mode 100644
index 000000000..1f6488327
--- /dev/null
+++ b/packages/preview/haw-hamburg/0.4.0/pages/abstract.typ
@@ -0,0 +1,41 @@
+#let abstract_page(
+ language: "en",
+ author: "",
+ title: "",
+ keywords: (),
+ abstract: "",
+) = {
+ // TODO Needed, because context creates empty pages with wrong numbering
+ set page(
+ numbering: "i",
+ )
+
+ let custom_title(title) = {
+ text(title, weight: "bold")
+ }
+
+ set par(justify: true)
+
+ stack(
+ spacing: 10mm,
+ custom_title(author),
+
+ v(9mm),
+
+ custom_title(if language == "en" {"Title of thesis"} else {"Thema der Arbeit"}),
+ v(6mm),
+ text(title),
+
+ v(9mm),
+
+ custom_title(if language == "en" {"Keywords"} else {"Stichworte"}),
+ v(6mm),
+ text(keywords.join(", ")),
+
+ v(9mm),
+
+ custom_title(if language == "en" {"Abstract"} else {"Kurzzusammenfassung"}),
+ v(6mm),
+ text(abstract),
+ )
+}
\ No newline at end of file
diff --git a/packages/preview/haw-hamburg/0.4.0/pages/cover.typ b/packages/preview/haw-hamburg/0.4.0/pages/cover.typ
new file mode 100644
index 000000000..5b659f619
--- /dev/null
+++ b/packages/preview/haw-hamburg/0.4.0/pages/cover.typ
@@ -0,0 +1,167 @@
+#import "../translations.typ": translations
+
+#let cover_page(
+ is-thesis: true,
+ is-master-thesis: false,
+ is-bachelor-thesis: true,
+ is-report: false,
+
+ title: "",
+ author: "",
+ faculty: "",
+ department: "",
+ study-course: "",
+ supervisors: (),
+ submission-date: none,
+) = {
+ // Set the document's basic properties.
+ set page(
+ margin: (left: 0mm, right: 0mm, top: 0mm, bottom: 0mm),
+ numbering: none,
+ number-align: center,
+ )
+
+ // HAW Logo
+ place(
+ top + right,
+ dx: -13mm,
+ dy: 10mm,
+ image("../assets/logo.svg", width: 164pt)
+ )
+
+ // Title etc.
+ pad(
+ left: 57mm,
+ top: 66mm,
+ right: 18mm,
+ stack(
+ // Type
+ if is-thesis {
+ let thesis-title = translations.bachelor-thesis
+ if is-master-thesis {
+ thesis-title = translations.master-thesis
+ }
+ upper(text(thesis-title, size: 9pt, weight: "bold"))
+ v(2mm)
+ },
+ // Author
+ text(author, size: 9pt),
+ v(13mm),
+ // Title
+ par(
+ leading: 9pt,
+ text(title, size: 31pt, weight: 500),
+ ),
+ v(5mm),
+ line(start: (0pt, 0pt), length: 30pt, stroke: 1mm),
+ v(12mm),
+ // Faculty
+ text(translations.faculty-of + " " + faculty, size: 10pt, weight: "bold"),
+ v(2mm),
+ // Department
+ text(translations.department-of + " " + department, size: 10pt),
+ )
+ )
+
+ // University name text
+ place(
+ right + bottom,
+ dx: -11mm,
+ dy: -35mm,
+ box(
+ align(
+ left,
+ stack(
+ line(start: (0pt, 0pt), length: 25pt, stroke: 0.9mm),
+ v(3mm),
+ text("HOCHSCHULE FÜR ANGEWANDTE", size: 9pt, weight: "bold"),
+ v(2mm),
+ text("WISSENSCHAFTEN HAMBURG", size: 9pt, weight: "bold"),
+ v(2mm),
+ text("Hamburg University of Applied Sciences", size: 9pt),
+ )
+ )
+ )
+ )
+
+ if is-thesis {
+ // Second cover page
+ pagebreak()
+
+ // Set the document's basic properties.
+ set page(
+ margin: (left: 31.5mm, right: 32mm, top: 55mm, bottom: 67mm),
+ numbering: none,
+ number-align: center,
+ )
+
+ // Title etc.
+ stack(
+ // Author
+ align(
+ center,
+ text(author, size: 14pt),
+ ),
+ v(23mm),
+ // Title
+ align(
+ center,
+ par(
+ leading: 13pt,
+ text(title, size: 18pt),
+ ),
+ ),
+ v(22mm),
+ )
+
+ v(1fr)
+
+ stack(
+ // Content
+ stack(
+ spacing: 3mm,
+ if is-bachelor-thesis {
+ text(translations.bachelor-thesis-submitted-for-examination-in-bachelors-degree)
+ },
+ if is-master-thesis {
+ text(translations.master-thesis-submitted-for-examination-in-masters-degree)
+ },
+ text(translations.in-the-study-course + " " + text(study-course, style: "italic")),
+ text(translations.at-the-department + " " + department),
+ text(translations.at-the-faculty-of + " " + faculty),
+ text(translations.at-university-of-applied-science-hamburg),
+ ),
+
+ v(4mm),
+ line(start: (0pt, 0pt), length: 25pt, stroke: 1mm),
+ v(4mm),
+
+ // Supervision
+ if supervisors.len() > 0 {
+ if type(supervisors) != array {
+ text(translations.supervising-examiner + ": " + text(upper(supervisors), weight: "bold"), size: 10pt)
+ } else {
+ text(translations.supervising-examiner + ": " + text(upper(supervisors.first()), weight: "bold"), size: 10pt)
+
+ if supervisors.len() > 1 {
+ linebreak()
+ text(translations.second-examiner + ": " + text(upper(supervisors.at(1)), weight: "bold"), size: 10pt)
+ }
+ }
+ },
+
+ // Submission date
+ if submission-date != none {
+ stack(
+ v(4mm),
+ line(start: (0pt, 0pt), length: 25pt, stroke: 1mm),
+ v(4mm),
+ text(
+ translations.submitted + ": " + submission-date.display("[day]. [month repr:long] [year]"),
+ size: 10pt,
+ ),
+ )
+ },
+ )
+ }
+}
diff --git a/packages/preview/haw-hamburg/0.4.0/pages/declaration_of_independent_processing.typ b/packages/preview/haw-hamburg/0.4.0/pages/declaration_of_independent_processing.typ
new file mode 100644
index 000000000..e13ce0775
--- /dev/null
+++ b/packages/preview/haw-hamburg/0.4.0/pages/declaration_of_independent_processing.typ
@@ -0,0 +1,25 @@
+#import "../translations.typ": translations
+
+#let declaration_of_independent_processing() = {
+ heading(
+ outlined: true,
+ numbering: none,
+ bookmarked: true,
+ translations.declaration-of-independent-processing,
+ )
+
+ text(translations.declaration-of-independent-processing-content)
+
+ v(40pt)
+
+ grid(
+ columns: 3,
+ gutter: 10pt,
+ line(length: 85pt, stroke: 1pt),
+ line(length: 85pt, stroke: 1pt),
+ line(length: 150pt, stroke: 1pt),
+ align(center, text(translations.place, size: 9pt)),
+ align(center, text(translations.date, size: 9pt)),
+ align(center, text(translations.signature, size: 9pt)),
+ )
+}
\ No newline at end of file
diff --git a/packages/preview/haw-hamburg/0.4.0/pages/list_of_figures.typ b/packages/preview/haw-hamburg/0.4.0/pages/list_of_figures.typ
new file mode 100644
index 000000000..8b30da95b
--- /dev/null
+++ b/packages/preview/haw-hamburg/0.4.0/pages/list_of_figures.typ
@@ -0,0 +1,17 @@
+#import "../translations.typ": translations
+
+#context {
+ if query(figure.where(kind: image)).len() > 0 {
+ // TODO Needed, because context creates empty pages with wrong numbering
+ set page(
+ numbering: "i",
+ )
+ heading(translations.list-of-figures, numbering: none)
+ outline(
+ title: none,
+ indent: true,
+ fill: repeat(text(". ")),
+ target: figure.where(kind: image),
+ )
+ }
+}
\ No newline at end of file
diff --git a/packages/preview/haw-hamburg/0.4.0/pages/list_of_tables.typ b/packages/preview/haw-hamburg/0.4.0/pages/list_of_tables.typ
new file mode 100644
index 000000000..f5549883d
--- /dev/null
+++ b/packages/preview/haw-hamburg/0.4.0/pages/list_of_tables.typ
@@ -0,0 +1,17 @@
+#import "../translations.typ": translations
+
+#context {
+ if query(figure.where(kind: table)).len() > 0 {
+ // TODO Needed, because context creates empty pages with wrong numbering
+ set page(
+ numbering: "i",
+ )
+ heading(translations.list-of-tables, numbering: none)
+ outline(
+ title: none,
+ indent: true,
+ fill: repeat(text(". ")),
+ target: figure.where(kind: table),
+ )
+ }
+}
\ No newline at end of file
diff --git a/packages/preview/haw-hamburg/0.4.0/pages/listings.typ b/packages/preview/haw-hamburg/0.4.0/pages/listings.typ
new file mode 100644
index 000000000..3232fd022
--- /dev/null
+++ b/packages/preview/haw-hamburg/0.4.0/pages/listings.typ
@@ -0,0 +1,17 @@
+#import "../translations.typ": translations
+
+#context {
+ if query(figure.where(kind: raw)).len() > 0 {
+ // TODO Needed, because context creates empty pages with wrong numbering
+ set page(
+ numbering: "i",
+ )
+ heading(translations.listings, numbering: none)
+ outline(
+ title: none,
+ indent: true,
+ fill: repeat(text(". ")),
+ target: figure.where(kind: raw),
+ )
+ }
+}
\ No newline at end of file
diff --git a/packages/preview/haw-hamburg/0.4.0/pages/outline.typ b/packages/preview/haw-hamburg/0.4.0/pages/outline.typ
new file mode 100644
index 000000000..3b306e8f2
--- /dev/null
+++ b/packages/preview/haw-hamburg/0.4.0/pages/outline.typ
@@ -0,0 +1,22 @@
+#let outline_page() = {
+ // TODO Needed, because context creates empty pages with wrong numbering
+ set page(
+ numbering: "i",
+ )
+
+ set outline.entry(fill: grid(
+ columns: 2,
+ gutter: 0pt,
+ repeat[~.],
+ h(11pt),
+ ))
+
+ show outline.entry.where(level: 1): set outline.entry(fill: none)
+ show outline.entry.where(level: 1): set text(weight: "bold")
+ show outline.entry.where(level: 1): set block(above: 16pt)
+
+ outline(
+ depth: 3,
+ indent: auto,
+ )
+}
diff --git a/packages/preview/haw-hamburg/0.4.0/template.typ b/packages/preview/haw-hamburg/0.4.0/template.typ
new file mode 100644
index 000000000..1d8905056
--- /dev/null
+++ b/packages/preview/haw-hamburg/0.4.0/template.typ
@@ -0,0 +1,230 @@
+#let template(
+ is-thesis: true,
+ is-master-thesis: false,
+ is-bachelor-thesis: true,
+ is-report: false,
+
+ language: "en",
+
+ title-de: "",
+ keywords-de: none,
+ abstract-de: none,
+
+ title-en: none,
+ keywords-en: none,
+ abstract-en: none,
+
+ author: "",
+ faculty: "",
+ department: "",
+ study-course: "",
+ supervisors: (),
+ submission-date: none,
+ include-declaration-of-independent-processing: false,
+ body,
+) = {
+ let THESIS_HEADING_EXTRA_TOP_MARGIN = 70pt
+ let PAGE_MARGIN_TOP = 37mm
+
+ let title = title-de
+ if language == "en" {
+ title = title-en
+ }
+
+ // Set the document's basic properties.
+ set document(author: author, title: title, date: submission-date)
+ set page(
+ margin: (left: 31.5mm, right: 31.5mm, top: PAGE_MARGIN_TOP, bottom: 56mm),
+ numbering: "1",
+ number-align: right,
+ binding: left,
+ header-ascent: 24pt,
+ header: context {
+ // Before
+ let selector_before = selector(heading.where(level: 1)).before(here())
+ let level_before = int(counter(selector_before).display())
+ let headings_before = query(selector_before)
+
+ if headings_before.len() == 0 {
+ return
+ }
+
+ // After
+ let selector_after = selector(heading.where(level: 1)).after(here())
+ let level_after = level_before + 1
+ let headings_after = query(selector_after)
+
+ if headings_after.len() == 0 {
+ return
+ }
+
+ // Get headings
+ let heading_before = headings_before.last()
+ let heading_after = headings_after.first()
+
+ // Decide on heading
+ let heading = heading_before
+ let level = level_before
+
+ if heading_after.location().page() == here().page() {
+ if heading_after.location().position().y == (THESIS_HEADING_EXTRA_TOP_MARGIN + PAGE_MARGIN_TOP) or heading_after.location().position().y == PAGE_MARGIN_TOP {
+ // Next header is first element of page
+ return
+ } else {
+ heading = heading_after
+ level = level_after
+ }
+ }
+
+ set text(size: 11.5pt)
+ grid(
+ rows: 2,
+ gutter: 5pt,
+ if heading.numbering != none {
+ emph(str(level) + " " + heading.body)
+ } else {
+ emph(heading.body)
+ },
+ line(length: 100%, stroke: 0.7pt),
+ )
+ }
+ )
+ set par(leading: 9pt)
+ set text(font: "New Computer Modern", lang: language, size: 10.85pt)
+ set heading(
+ numbering: "1.1",
+ )
+
+
+ // Configure headings
+ let font_size = 10pt
+ let top_margin = 0pt
+ let bottom_margin = 0pt
+
+ // Configure h1
+ if is-thesis {
+ font_size = 21pt
+ top_margin = 25pt
+ bottom_margin = 45pt
+ } else {
+ font_size = 18pt
+ top_margin = 30pt
+ bottom_margin = 25pt
+ }
+
+ show heading.where(level: 1): set block(above: top_margin, below: bottom_margin)
+ show heading.where(level: 1): set text(size: font_size, weight: 600)
+ show heading.where(level: 1): it => {
+ if is-thesis {
+ // New page if configured
+ pagebreak(weak: true)
+ v(THESIS_HEADING_EXTRA_TOP_MARGIN)
+ it
+ } else {
+ it
+ }
+ }
+
+ // Configure h2
+ if is-thesis {
+ font_size = 14pt
+ top_margin = 30pt
+ bottom_margin = 25pt
+ } else {
+ font_size = 13pt
+ top_margin = 30pt
+ bottom_margin = 25pt
+ }
+
+ show heading.where(level: 2): set block(above: top_margin, below: bottom_margin)
+ show heading.where(level: 2): set text(size: font_size)
+
+ // Configure h3
+ if is-thesis {
+ font_size = 11pt
+ top_margin = 20pt
+ bottom_margin = 15pt
+ } else {
+ font_size = 11pt
+ top_margin = 20pt
+ bottom_margin = 15pt
+ }
+
+ show heading.where(level: 3): set block(above: top_margin, below: bottom_margin)
+ show heading.where(level: 3): set text(size: font_size)
+
+ // Cover
+ import "pages/cover.typ": cover_page
+ cover_page(
+ is-thesis: is-thesis,
+ is-master-thesis: is-master-thesis,
+ is-bachelor-thesis: is-bachelor-thesis,
+ is-report: is-report,
+
+ title: title,
+ author: author,
+ faculty: faculty,
+ department: department,
+ study-course: study-course,
+ supervisors: supervisors,
+ submission-date: submission-date,
+ )
+
+ // Abstract
+ if abstract-de != none or abstract-en != none {
+ import "pages/abstract.typ": abstract_page
+ if (language == "en") {
+ abstract_page(
+ language: "en",
+ author: author,
+ title: title-en,
+ keywords: keywords-en,
+ abstract: abstract-en,
+ )
+ }
+ abstract_page(
+ language: "de",
+ author: author,
+ title: title-de,
+ keywords: keywords-de,
+ abstract: abstract-de,
+ )
+ }
+
+ // Table of contents.
+ import "pages/outline.typ": outline_page
+ outline_page()
+
+ // List of Figures
+ if is-thesis {
+ include "pages/list_of_figures.typ"
+ }
+
+ // List of Tables
+ if is-thesis {
+ include "pages/list_of_tables.typ"
+ }
+
+ // Listings
+ if is-thesis {
+ include "pages/listings.typ"
+ }
+
+ // Reset page numbering and set it to numbers
+ set page(
+ numbering: "1",
+ )
+ counter(page).update(1)
+
+ // Main body.
+ set par(justify: true)
+
+ body
+
+ // Declaration of independent processing
+ if include-declaration-of-independent-processing {
+ pagebreak(weak: true)
+ import "pages/declaration_of_independent_processing.typ": declaration_of_independent_processing
+ declaration_of_independent_processing()
+ }
+}
diff --git a/packages/preview/haw-hamburg/0.4.0/translations.typ b/packages/preview/haw-hamburg/0.4.0/translations.typ
new file mode 100644
index 000000000..c05b3f86a
--- /dev/null
+++ b/packages/preview/haw-hamburg/0.4.0/translations.typ
@@ -0,0 +1,121 @@
+#let value(en: "", de: "") = {
+ context {
+ if text.lang == "en" {
+ return en
+ }
+
+ if text.lang == "de" {
+ return de
+ }
+
+ return "Unknown language"
+ }
+}
+
+#let translations = (
+ bachelor-thesis: value(
+ en: "Bachelor thesis",
+ de: "Bachelorarbeit",
+ ),
+
+ master-thesis: value(
+ en: "Master thesis",
+ de: "Masterarbeit",
+ ),
+
+ faculty-of: value(
+ en: "Faculty of",
+ de: "Fakultät",
+ ),
+
+ department-of: value(
+ en: "Department of",
+ de: "Department",
+ ),
+
+ bachelor-thesis-submitted-for-examination-in-bachelors-degree: value(
+ en: "Bachelor thesis submitted for examination in Bachelor's degree",
+ de: "Bachelorarbeit eingereicht im Rahmen der Bachelorprüfung",
+ ),
+
+ master-thesis-submitted-for-examination-in-masters-degree: value(
+ en: "Master thesis submitted for examination in Master's degree",
+ de: "Masterarbeit eingereicht im Rahmen der Masterprüfung",
+ ),
+
+ in-the-study-course: value(
+ en: "in the study course",
+ de: "im Studiengang"
+ ),
+
+ at-the-department: value(
+ en: "at the Department",
+ de: "am Department"
+ ),
+
+ at-the-faculty-of: value(
+ en: "at the Faculty of",
+ de: "der Fakultät"
+ ),
+
+ at-university-of-applied-science-hamburg: value(
+ en: "at University of Applied Science Hamburg",
+ de: "der Hochschule für Angewandte Wissenschaften Hamburg"
+ ),
+
+ supervising-examiner: value(
+ en: "Supervising examiner",
+ de: "Betreuender Prüfer",
+ ),
+
+ second-examiner: value(
+ en: "Second examiner",
+ de: "Zweitgutachter",
+ ),
+
+ submitted: value(
+ en: "Submitted",
+ de: "Eingereicht am",
+ ),
+
+ list-of-figures: value(
+ en: "List of Figures",
+ de: "Abbildungsverzeichnis"
+ ),
+
+ list-of-tables: value(
+ en: "List of Tables",
+ de: "Tabellenverzeichnis"
+ ),
+
+ listings: value(
+ en: "Listings",
+ de: "Listings"
+ ),
+
+ declaration-of-independent-processing: value(
+ en: "Declaration of Independent Processing",
+ de: "Erklärung zur selbstständigen Bearbeitung",
+ ),
+
+ declaration-of-independent-processing-content: value(
+ en: "I hereby certify that I wrote this work independently without any outside help and only used the resources specified. Passages taken literally or figuratively from other works are identified by citing the sources.",
+ de: "Hiermit versichere ich, dass ich die vorliegende Arbeit ohne fremde Hilfe selbständig verfasst und nur die angegebenen Hilfsmittel benutzt habe. Wörtlich oder dem Sinn
+nach aus anderen Werken entnommene Stellen sind unter Angabe der Quellen kenntlich gemacht.",
+ ),
+
+ place: value(
+ en: "Place",
+ de: "Ort",
+ ),
+
+ date: value(
+ en: "Date",
+ de: "Datum",
+ ),
+
+ signature: value(
+ en: "Original Signature",
+ de: "Unterschrift im Original"
+ ),
+)
\ No newline at end of file
diff --git a/packages/preview/haw-hamburg/0.4.0/typst.toml b/packages/preview/haw-hamburg/0.4.0/typst.toml
new file mode 100644
index 000000000..b9cc3e082
--- /dev/null
+++ b/packages/preview/haw-hamburg/0.4.0/typst.toml
@@ -0,0 +1,10 @@
+[package]
+name = "haw-hamburg"
+entrypoint = "lib.typ"
+description = "Unofficial template for writing a report or thesis in the HAW Hamburg department of Computer Science design."
+categories = ['report', 'thesis']
+version = "0.4.0"
+compiler = "0.13.0"
+authors = ['Lasse Rosenow']
+license = "MIT"
+repository = "https://github.com/LasseRosenow/HAW-Hamburg-Typst-Template"