"
+}
diff --git a/packages/preview/kthesis/0.1.7/template/acronyms.typ b/packages/preview/kthesis/0.1.7/template/acronyms.typ
new file mode 100644
index 0000000000..33a69aa45f
--- /dev/null
+++ b/packages/preview/kthesis/0.1.7/template/acronyms.typ
@@ -0,0 +1,15 @@
+#let acronyms = (
+ (
+ key: "kth",
+ short: "KTH",
+ long: "KTH Royal Institute of Technology",
+ description: "A university in Stockholm",
+ ),
+ (
+ key: "os",
+ short: "OS",
+ plural: "OSes",
+ long: "Operating System",
+ longplural: "Operating Systems",
+ ),
+)
diff --git a/packages/preview/kthesis/0.1.7/template/content/abstract-1-en.typ b/packages/preview/kthesis/0.1.7/template/content/abstract-1-en.typ
new file mode 100644
index 0000000000..d83d8aaab9
--- /dev/null
+++ b/packages/preview/kthesis/0.1.7/template/content/abstract-1-en.typ
@@ -0,0 +1 @@
+#lorem(300)
diff --git a/packages/preview/kthesis/0.1.7/template/content/abstract-2-sv.typ b/packages/preview/kthesis/0.1.7/template/content/abstract-2-sv.typ
new file mode 100644
index 0000000000..d83d8aaab9
--- /dev/null
+++ b/packages/preview/kthesis/0.1.7/template/content/abstract-2-sv.typ
@@ -0,0 +1 @@
+#lorem(300)
diff --git a/packages/preview/kthesis/0.1.7/template/content/abstract-3-pt.typ b/packages/preview/kthesis/0.1.7/template/content/abstract-3-pt.typ
new file mode 100644
index 0000000000..d83d8aaab9
--- /dev/null
+++ b/packages/preview/kthesis/0.1.7/template/content/abstract-3-pt.typ
@@ -0,0 +1 @@
+#lorem(300)
diff --git a/packages/preview/kthesis/0.1.7/template/content/acknowledgements.typ b/packages/preview/kthesis/0.1.7/template/content/acknowledgements.typ
new file mode 100644
index 0000000000..f31891a38e
--- /dev/null
+++ b/packages/preview/kthesis/0.1.7/template/content/acknowledgements.typ
@@ -0,0 +1,5 @@
+#lorem(100)
+
+#lorem(150)
+
+#lorem(35)
diff --git a/packages/preview/kthesis/0.1.7/template/content/ch01-introduction.typ b/packages/preview/kthesis/0.1.7/template/content/ch01-introduction.typ
new file mode 100644
index 0000000000..fda3c2031d
--- /dev/null
+++ b/packages/preview/kthesis/0.1.7/template/content/ch01-introduction.typ
@@ -0,0 +1,21 @@
+= Introduction
+
+See @bg:a1 for more information.
+
+#lorem(50)
+
+== Problem
+
+#lorem(100)
+
+== Purpose
+
+#lorem(50)
+
+== Goals
+
+#lorem(100)
+
+== Structure of the Thesis
+
+#lorem(50)
diff --git a/packages/preview/kthesis/0.1.7/template/content/ch02-background.typ b/packages/preview/kthesis/0.1.7/template/content/ch02-background.typ
new file mode 100644
index 0000000000..b9a4cf9b6a
--- /dev/null
+++ b/packages/preview/kthesis/0.1.7/template/content/ch02-background.typ
@@ -0,0 +1,25 @@
+= Background
+
+#lorem(50)
+
+== Major Background Area 1
+
+=== Subarea 1.1
+
+As mentioned in @intro, ...
+
+=== Subarea 1.2
+
+This is explained in @usage.
+
+== Major Background Area 2
+
+#lorem(20)
+
+== Related Work Area
+
+#lorem(50)
+
+== Summary
+
+#lorem(20)
diff --git a/packages/preview/kthesis/0.1.7/template/content/ch03-method.typ b/packages/preview/kthesis/0.1.7/template/content/ch03-method.typ
new file mode 100644
index 0000000000..13d7df05b8
--- /dev/null
+++ b/packages/preview/kthesis/0.1.7/template/content/ch03-method.typ
@@ -0,0 +1,27 @@
+= Method or Methods
+
+#lorem(50)
+
+== Research Process
+
+#lorem(30)
+
+== Data Collection
+
+#lorem(10)
+
+=== Sampling
+
+#lorem(20)
+
+=== Sample Size
+
+#lorem(25)
+
+=== Target Population
+
+#lorem(30)
+
+== Evaluation Framework
+
+#lorem(20)
diff --git a/packages/preview/kthesis/0.1.7/template/content/ch04-the-thing.typ b/packages/preview/kthesis/0.1.7/template/content/ch04-the-thing.typ
new file mode 100644
index 0000000000..5bf0ba9337
--- /dev/null
+++ b/packages/preview/kthesis/0.1.7/template/content/ch04-the-thing.typ
@@ -0,0 +1,15 @@
+= The Thing
+
+== Software Design
+
+#lorem(50)
+
+== Implementation
+
+#lorem(1250)
+
+=== An Example Listing
+
+#figure(caption: [An innocuous command], raw("rm -rf /"))
+
+#lorem(30)
diff --git a/packages/preview/kthesis/0.1.7/template/content/ch05-results.typ b/packages/preview/kthesis/0.1.7/template/content/ch05-results.typ
new file mode 100644
index 0000000000..83b5eb009b
--- /dev/null
+++ b/packages/preview/kthesis/0.1.7/template/content/ch05-results.typ
@@ -0,0 +1,5 @@
+= Results and Analysis
+
+As supported by @bevet, ...
+
+#lorem(100)
diff --git a/packages/preview/kthesis/0.1.7/template/content/ch06-discussion.typ b/packages/preview/kthesis/0.1.7/template/content/ch06-discussion.typ
new file mode 100644
index 0000000000..e7731e7ad8
--- /dev/null
+++ b/packages/preview/kthesis/0.1.7/template/content/ch06-discussion.typ
@@ -0,0 +1,9 @@
+= Discussion
+
+Let's talk about acronyms: when referring to a single @os, the first time we mention it the @os gets expanded, but not any further.
+
+We can also discuss multiple @os:pl at once, in plural.
+
+#line(length: 50%)
+
+#lorem(200)
diff --git a/packages/preview/kthesis/0.1.7/template/content/ch07-conclusion.typ b/packages/preview/kthesis/0.1.7/template/content/ch07-conclusion.typ
new file mode 100644
index 0000000000..35515cdcc8
--- /dev/null
+++ b/packages/preview/kthesis/0.1.7/template/content/ch07-conclusion.typ
@@ -0,0 +1,5 @@
+= Conclusions and Future Work
+
+In conclusion, execute @thing:impl:cmd.
+
+This is another reference to @os:pl.
diff --git a/packages/preview/kthesis/0.1.7/template/content/zz-a-usage.typ b/packages/preview/kthesis/0.1.7/template/content/zz-a-usage.typ
new file mode 100644
index 0000000000..53f9a92f89
--- /dev/null
+++ b/packages/preview/kthesis/0.1.7/template/content/zz-a-usage.typ
@@ -0,0 +1,5 @@
+= Usage Instructions
+
+Hmm...
+
+#lorem(1000)
diff --git a/packages/preview/kthesis/0.1.7/template/content/zz-b-else.typ b/packages/preview/kthesis/0.1.7/template/content/zz-b-else.typ
new file mode 100644
index 0000000000..f26d61f45f
--- /dev/null
+++ b/packages/preview/kthesis/0.1.7/template/content/zz-b-else.typ
@@ -0,0 +1,3 @@
+= Something Else
+
+Whoa!
diff --git a/packages/preview/kthesis/0.1.7/template/references.yaml b/packages/preview/kthesis/0.1.7/template/references.yaml
new file mode 100644
index 0000000000..c094f8bc16
--- /dev/null
+++ b/packages/preview/kthesis/0.1.7/template/references.yaml
@@ -0,0 +1,18 @@
+# Hayagriva: https://github.com/typst/hayagriva/blob/main/docs/file-format.md
+
+bevet:
+ type: article
+ title: 'You can''t "nudge" nuggets: An investigation of college late-night dining with behavioral economics interventions'
+ author:
+ - Samuel Bevet
+ - Meredith T. Niles
+ - Lizzy Pope
+ date: 2018-05-31
+ serial-number:
+ doi: "10.1371/journal.pone.0198162"
+ parent:
+ type: periodical
+ title: "PLoS ONE"
+ volume: 13
+ issue: 5
+ publisher: Public Library of Science
diff --git a/packages/preview/kthesis/0.1.7/template/thesis.typ b/packages/preview/kthesis/0.1.7/template/thesis.typ
new file mode 100644
index 0000000000..cd790e1726
--- /dev/null
+++ b/packages/preview/kthesis/0.1.7/template/thesis.typ
@@ -0,0 +1,195 @@
+#import "@preview/kthesis:0.1.7": kth-thesis, setup-appendices
+
+// The template is extensible and plays well with other dependencies;
+// For example, a table of acronyms can be generated using glossarium
+#import "@preview/glossarium:0.5.10": (
+ make-glossary, print-glossary, register-glossary,
+)
+#import "./acronyms.typ": acronyms
+#show: make-glossary
+#register-glossary(acronyms)
+
+// Configure formatting options before invoking the template;
+// For example, uncomment below to set another font (except for covers)
+// #set text(font: "New Computer Modern")
+
+// --------------------------------------------------------------------- //
+// ---------- MAIN THESIS TEMPLATE ENTRYPOINT & CONFIGURATION ---------- //
+// --------------------------------------------------------------------- //
+#show: kth-thesis.with(
+ // Primary document language; either "en" or "sv"
+ primary-lang: "en",
+ // Language-specific title, subtitle, abstract, and keywords.
+ // Grouped by language, with only values for "en" and "sv" being mandatory.
+ // Localized abstract/keywords headings may be omitted only for "en" and "sv".
+ // Field "alpha-3" is the language's ISO 639-3 code, for non-"en"/"sv" langs.
+ // If desired, any "subtitle" field may be set to none (to omit it entirely).
+ localized-info: (
+ en: (
+ title: "How to Abandon Dinosaur-Age TypeSetting Software",
+ subtitle: "A Modern Approach to Problem-Solving",
+ abstract: include "./content/abstract-1-en.typ",
+ keywords: ("Dogs", "Chicken nuggets"),
+ ),
+ sv: (
+ title: "Svenska Översättningen av Titeln",
+ subtitle: "Svenska Översättningen av Undertiteln",
+ abstract: include "./content/abstract-2-sv.typ",
+ keywords: ("Hundar", "Kycklingnuggets"),
+ ),
+ pt: (
+ alpha-3: "por",
+ title: "Tradução em Português do Título",
+ subtitle: "Tradução em Português do Subtítulo",
+ abstract-heading: "Resumo",
+ keywords-heading: "Palavras-chave",
+ abstract: include "./content/abstract-3-pt.typ",
+ keywords: ("Cães", "Nuggets de frango"),
+ ),
+ ),
+ // Ordered author information; only first and last names fields are mandatory
+ authors: (
+ (
+ first-name: "John",
+ last-names: "Doe",
+ email: "john.doe@example.com",
+ user-id: "jod",
+ school: "School of Electrical Engineering and Computer Science",
+ department: "Department of Typesetting Sanity",
+ ),
+ (
+ first-name: "Jane",
+ last-names: "Doe",
+ ),
+ ),
+ // Ordered supervisor information; "external-org" replaces userid/school/dept
+ supervisors: (
+ (
+ first-name: "Alice",
+ last-names: "Smith",
+ email: "alice@example.com",
+ user-id: "alice",
+ school: "School of Electrical Engineering and Computer Science",
+ department: "Department of Loyal Supervision",
+ ),
+ (
+ first-name: "Bob",
+ last-names: "Jones",
+ email: "bob@example.com",
+ external-org: "Företag AB",
+ ),
+ ),
+ // Thesis examiner; must be internal to the school so all fields are mandatory
+ examiner: (
+ first-name: "Charlie",
+ last-names: "Johnson",
+ email: "charlie@example.com",
+ user-id: "chj",
+ school: "School of Electrical Engineering and Computer Science",
+ department: "Department of Fair Examination",
+ ),
+ // Degree project course within which the thesis is being conducted.
+ // All fields are mandatory; credits are the course's ECTS credits (hp).
+ course: (
+ code: "DA237X",
+ credits: 30,
+ ),
+ // Degree as part of which the thesis is conducted; all fields are mandatory.
+ // Subject area is main field of study as listed in the second dropdown here:
+ // https://www.kth.se/en/student/studier/examen/examensregler-1.5685
+ // Kind is the degree title conferred as listed in the third dropdown above.
+ // Cycle is either 1 (Bachelor's) or 2 (Master's), per Bologna.
+ degree: (
+ code: "TCYSM",
+ name: "Master's Program, Cybersecurity",
+ subject-area: "Computer Science and Engineering",
+ kind: "Master of Science",
+ cycle: 2,
+ ),
+ // National subject category codes; mandatory for DiVA classification.
+ // One or more 3-to-5 digit codes, with preference for 5-digit codes, from:
+ // https://www.scb.se/dokumentation/klassifikationer-och-standarder/standard-for-svensk-indelning-av-forskningsamnen/
+ // ^ (select from that page the most recent PDF)
+ national-subject-categories: ("10201", "10206"),
+ // School that the thesis is part of (abbreviation)
+ school: "EECS",
+ // TRITA number assigned to thesis after final examiner approval
+ trita-number: "2026:0000",
+ // Host company collaborating for this thesis; may be none
+ host-company: "Företag AB",
+ // Host organization collaborating for this thesis; may be none
+ host-org: none,
+ // Names of opponents for this thesis; may be none until they're assigned
+ opponents: ("Mary Ignatia", "Alexander Smith"),
+ // Thesis presentation details; may be none until it's scheduled and set.
+ // Either "online" or "location" fields may be none, but not both.
+ presentation: (
+ language: "en",
+ slot: datetime(
+ year: 2026,
+ month: 6,
+ day: 14,
+ hour: 13,
+ minute: 0,
+ second: 0,
+ ),
+ online: (service: "Zoom", link: "https://kth-se.zoom.us/j/111222333"),
+ location: (
+ room: "F1 (Alfvénsalen)",
+ address: "Lindstedtsvägen 22",
+ city: "Stockholm",
+ ),
+ ),
+ // Optional image to show on the front cover.
+ // This should either be none, or an "image" element. For example,
+ // cover-image: image("./assets/cover.png", width: 100%)
+ // If provided, the image can be formatted arbitrarily to look however desired
+ // (especially its height, width, and fit mode). However, the recommended
+ // styles are (width: 100%) or (width: 16cm, height: 10cm, fit: "contain").
+ cover-image: none,
+ // Acknowledgements body
+ acknowledgements: include "content/acknowledgements.typ",
+ // Additional front-matter sections, each with keys "heading" and "body"
+ extra-preambles: (
+ (heading: "Acronyms and Abbreviations", body: print-glossary(acronyms)),
+ ),
+ // Document date; hardcode for determinism/reproducibility
+ doc-date: datetime.today(),
+ // Document city (where it's being signed/authored/submitted)
+ doc-city: "Stockholm",
+ // Extra keywords, embedded in document metadata but not listed in text
+ doc-extra-keywords: ("master thesis",),
+ // Whether to include trailing "For DiVA" metadata structure section
+ with-for-diva: true,
+ // Miscellaneous settings affecting the document's appearance
+ style: (
+ // Whether the proprietary Arial font should be used in Sans-Serif contexts.
+ // While this is the font prescribed by the official KTH covers, it is often
+ // preferable to use an open, metric-compatible alternative. If this is set
+ // to `false`, Liberation Sans will be used instead of Arial. Otherwise, if
+ // this is set to `true`, Typst will issue a warning if Arial is not found
+ // on the system at compile-time.
+ // Graceful font fallback is not possible until issue typst#6010 is fixed.
+ use-arial: false,
+ // Whether front matter, headings, and headings should use a Sans-Serif font
+ more-sans-serif: false,
+ // Whether to make top-level headings stand out more and look less plain
+ fancy-chapters: false,
+ ),
+)
+
+// Tip: when tagging elements, scope labels like
+
+#include "./content/ch01-introduction.typ"
+#include "./content/ch02-background.typ"
+#include "./content/ch03-method.typ"
+#include "./content/ch04-the-thing.typ"
+#include "./content/ch05-results.typ"
+#include "./content/ch06-discussion.typ"
+#include "./content/ch07-conclusion.typ"
+
+#bibliography("references.yaml", title: "References")
+
+#show: setup-appendices
+#include "./content/zz-a-usage.typ"
+#include "./content/zz-b-else.typ"
diff --git a/packages/preview/kthesis/0.1.7/thumbnail.png b/packages/preview/kthesis/0.1.7/thumbnail.png
new file mode 100644
index 0000000000..fa50361f1a
Binary files /dev/null and b/packages/preview/kthesis/0.1.7/thumbnail.png differ
diff --git a/packages/preview/kthesis/0.1.7/typst.toml b/packages/preview/kthesis/0.1.7/typst.toml
new file mode 100644
index 0000000000..136a995269
--- /dev/null
+++ b/packages/preview/kthesis/0.1.7/typst.toml
@@ -0,0 +1,17 @@
+[package]
+name = "kthesis"
+version = "0.1.7"
+entrypoint = "src/lib.typ"
+authors = ["Rafael Oliveira <@RafDevX>"]
+license = "MIT AND MIT-0"
+description = "Unofficial thesis template for KTH Royal Institute of Technology"
+repository = "https://github.com/RafDevX/kthesis-typst"
+categories = ["thesis", "layout"]
+keywords = ["KTH", "Kungliga Tekniska högskolan", "exjobb", "master", "thesis"]
+compiler = "0.13.0"
+exclude = [".gitignore", "*.sh", "shell.nix", ".envrc"]
+
+[template]
+path = "template"
+entrypoint = "thesis.typ"
+thumbnail = "thumbnail.png"