Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
7ce6712
[Typship] Add typst.toml
joshuabeny1999 Sep 16, 2025
9621ed0
[Typship] Add LICENSE
joshuabeny1999 Sep 16, 2025
ed2d5e3
[Typship] Add layout/abstract.typ
joshuabeny1999 Sep 16, 2025
fb9fe76
[Typship] Add layout/disclaimer.typ
joshuabeny1999 Sep 16, 2025
f6f5fed
[Typship] Add layout/directory_writing_aids.typ
joshuabeny1999 Sep 16, 2025
56a93ee
[Typship] Add layout/titlepage.typ
joshuabeny1999 Sep 16, 2025
44669a9
[Typship] Add template/metadata.typ
joshuabeny1999 Sep 16, 2025
40df958
[Typship] Add template/content/abstract.typ
joshuabeny1999 Sep 16, 2025
672b399
[Typship] Add template/content/directory_writing_aids.typ
joshuabeny1999 Sep 16, 2025
39d2e6c
[Typship] Add template/content/01_content.typ
joshuabeny1999 Sep 16, 2025
02da8fa
[Typship] Add template/content/02_content.typ
joshuabeny1999 Sep 16, 2025
a7c1719
[Typship] Add template/content/acknowledgement.typ
joshuabeny1999 Sep 16, 2025
6b8f1b9
[Typship] Add template/content/appendix.typ
joshuabeny1999 Sep 16, 2025
c012c89
[Typship] Add template/thesis.typ
joshuabeny1999 Sep 16, 2025
c3c1f20
[Typship] Add template/figures/unisg_logo.png
joshuabeny1999 Sep 16, 2025
30c604f
[Typship] Add template/bibliography.bib
joshuabeny1999 Sep 16, 2025
5134f57
[Typship] Add utils/print_page_break.typ
joshuabeny1999 Sep 16, 2025
f0b1a89
[Typship] Add utils/todo.typ
joshuabeny1999 Sep 16, 2025
02caac6
[Typship] Add utils/formfield.typ
joshuabeny1999 Sep 16, 2025
90ba5ef
[Typship] Add README.md
joshuabeny1999 Sep 16, 2025
58bd900
[Typship] Add thesis_template.typ
joshuabeny1999 Sep 16, 2025
8e1d7ce
[Typship] Add template-hsg.webp
joshuabeny1999 Sep 16, 2025
48e7e23
Update to kebab-case and small fixes Readme.md
joshuabeny1999 Sep 18, 2025
66b3dea
Change package reference from local to preview
joshuabeny1999 Sep 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions packages/preview/gallus-hsg/1.0.0/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
MIT License

Original Copyright (c) 2023 TUM Applied Software Engineering

Copyright (c) 2024 Joshua Beny Hürzeler

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.

---

### Modifications made by Joshua Beny Hürzeler (2024)

This version of the template has been modified for use with the University of St. Gallen (HSG) thesis guidelines. The following changes were made:
- Removed not needed proposal and registration_certificate templates
- Adjusted the title page, meta data files, etc to fit the HSG guidelines
- Adjusted the readme file to reflect the changes made
41 changes: 41 additions & 0 deletions packages/preview/gallus-hsg/1.0.0/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# thesis-template-typst
This repository provides a unofficial Typst template for writing your Bachelor's or Master's thesis at the HSG (University of St. Gallen). It includes a thesis template. For more information about writing a thesis at the HSG, please visit the [HSG Student Web (Login required)](https://universitaetstgallen.sharepoint.com/sites/PruefungenDE/SitePages/en/Master-Arbeiten.aspx?web=1).

**Note:** This is only a template. You have to adapt the template to your thesis and discuss the structure of your thesis with your supervisor!

---
## Guidelines

Please thorougly read the guidelines and hints on [:wq
website](https://www.unisg.ch/fileadmin/user_upload/HSG_ROOT/_Kernauftritt_HSG/Universitaet/Schools/SOM/Faculty/Chair_of_Organization_Studies/Guideline_HSG.pdf)

---
## Usage
You can use this template in the Typst web app by clicking "Start from template" on the dashboard and searching for `gallus-hsg`.

Locally, you can use the following command to start with this templates:

```
typst init @preview/gallus-hsg:1.0.0
```

### Set thesis metadata
Fill in your thesis details in the `metadata.typ` file:
* The language of the document (en or de)
* Title
* Subtitle
* Type of thesis (Bachelor's, Master's, etc.)
* Professor
* Your name (without e-mail address or matriculation number)
* Matriculation number
* The submission date

### Write your thesis
For the actual content of your thesis, there is a dedicated folder named `/content` which includes all the chapters and sections of your thesis.
You can add or remove chapters as needed (adapt the `thesis.typ` with the `#include(...)` accordingly).

---
## Further Resources

- [Typst Documentation](https://typst.app/docs/)
- [Typst Guide for LaTeX Users](https://typst.app/docs/guides/guide-for-latex-users/)
27 changes: 27 additions & 0 deletions packages/preview/gallus-hsg/1.0.0/layout/abstract.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#let abstract(body, lang: "en") = {
let title = (en: "Abstract", de: "Zusammenfassung")

set page(
margin: (left: 2.5cm, right: 2.5cm, top: 2.5cm, bottom: 2.5cm),
numbering: none,
number-align: center,
)

let body-font = "Libertinus Serif"

set text(
font: body-font,
size: 12pt,
lang: lang
)

set par(
leading: 1em,
justify: true
)

// --- Abstract ---
align(top + center, text(font: body-font, 1em, weight: "semibold", title.at(lang)))

body
}
68 changes: 68 additions & 0 deletions packages/preview/gallus-hsg/1.0.0/layout/disclaimer.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#let disclaimer(
title: "",
author: "",
language: "en",
submission-date: datetime,
) = {
set page(
margin: (left: 30mm, right: 30mm, top: 40mm, bottom: 40mm),
numbering: none,
number-align: center,
)

let body-font = "New Computer Modern"
let sans-font = "New Computer Modern Sans"

set text(
font: body-font,
size: 10pt,
lang: "en"
)

set par(leading: 1em)


// --- Disclaimer ---
v(10%)
let title = (en: "Declaration of Authorship", de: "Eigenständigkeitserklärung")
heading(title.at(language), numbering: none)
let disclaimer = (
en: [
«I hereby declare,
- that I have written this thesis independently,
- that I have written the thesis using only the aids specified in the index;
- that all parts of the thesis produced with the help of aids have been declared;
- that I have handled both input and output responsibly when using AI. I confirm that I have therefore only read in public data or data released with consent and that I have checked, declared and comprehensibly referenced all results and/or other forms of AI assistance in the required form and that I am aware that I am responsible if incorrect content, violations of data protection law, copyright law or scientific misconduct (e.g. plagiarism) have also occurred unintentionally;
- that I have mentioned all sources used and cited them correctly according to established academic citation rules;
- that I have acquired all immaterial rights to any materials I may have used, such as images or graphics, or that these materials were created by me;
- that the topic, the thesis or parts of it have not already been the object of any work or examination of another course, unless this has been expressly agreed with the faculty member in advance and is stated as such in the thesis;
- that I am aware of the legal provisions regarding the publication and dissemination of parts or the entire thesis and that I comply with them accordingly;
- that I am aware that my thesis can be electronically checked for plagiarism and for third-party authorship of human or technical origin and that I hereby grant the University of St. Gallen the copyright according to the Examination Regulations as far as it is necessary for the administrative actions;
- that I am aware that the University will prosecute a violation of this Declaration of Authorship and that disciplinary as well as criminal consequences may result, which may lead to expulsion from the University or to the withdrawal of my title.»

By submitting this thesis, I confirm through my conclusive action that I am submitting the Declaration of Authorship, that I have read and understood it, and that it is true.
],
de: [
«Ich erkläre hiermit,
- dass ich die vorliegende Arbeit eigenständig verfasst habe,
- dass ich die Arbeit nur unter Verwendung der im Verzeichnis angegebenen Hilfsmittel verfasst habe;
- dass alle mit Hilfsmitteln erbrachten Teile der Arbeit deklariert wurden;
- dass ich bei der Nutzung von KI verantwortungsvoll mit dem Input wie auch mit dem Output umgegangen bin. Ich bestätige, dass ich somit nur öffentliche oder per Einwilligung freigegebene Daten eingelesen und sämtliche Resultate und/oder andere Formen von KI-Hilfeleistungen in verlangter Form überprüft, deklariert und nachvollziehbar referenziert habe und ich mir bewusst bin, dass ich die Verantwortung trage, falls es auch unbeabsichtigt zu fehlerhaften Inhalten, zu Verstössen gegen das Datenschutzrecht, Urheberrecht oder zu wissenschaftlichem Fehlverhalten (z.B. Plagiate) gekommen ist;
- dass ich sämtliche verwendeten Quellen erwähnt und gemäss gängigen wissenschaftlichen Zitierregeln korrekt zitiert habe;
- dass ich sämtliche immateriellen Rechte an von mir allfällig verwendeten Materialien wie Bilder oder Grafiken erworben habe oder dass diese Materialien von mir selbst erstellt wurden;
- dass das Thema, die Arbeit oder Teile davon nicht bereits Gegenstand eines Leistungsnachweises einer anderen Veranstaltung oder Kurses waren, sofern dies nicht ausdrücklich mit der Referentin oder dem Referenten im Voraus vereinbart wurde und in der Arbeit ausgewiesen wird;
- dass ich mir über die rechtlichen Bestimmungen zur Publikation und Weitergabe von Teilen oder der ganzen Arbeit bewusst bin und ich diese entsprechend einhalte;
- dass ich mir bewusst bin, dass meine Arbeit elektronisch auf Plagiate und auf Drittautorschaft menschlichen oder technischen Ursprungs überprüft werden kann und ich hiermit der Universität St.Gallen laut Prüfungsordnung das Urheberrecht soweit einräume, wie es für die Verwaltungshandlungen notwendig ist;
- Dass ich mir bewusst bin, dass die Universität einen Verstoss gegen diese Eigenständigkeitserklärung verfolgt und dass daraus disziplinarische wie auch strafrechtliche Folgen resultieren können, welche zum Ausschluss von der Universität resp. zur Titelaberkennung führen können.»

Mit Einreichung der schriftlichen Arbeit stimme ich mit konkludentem Handeln zu, die Eigenständigkeitserklärung abzugeben, diese gelesen sowie verstanden zu haben und, dass sie der Wahrheit entspricht.
])
text(disclaimer.at(language))

v(15mm)
grid(
columns: 2,
gutter: 1fr,
"St. Gallen, " + submission-date.display("[day]/[month]/[year]"), author
)
}
68 changes: 68 additions & 0 deletions packages/preview/gallus-hsg/1.0.0/layout/titlepage.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#let titlepage(
title: "",
subtitle: "",
type: "",
professor: "",
author: "",
matriculation-number: "",
submission-date: datetime,
abstract: "",
language: "en",
) = {
set page(
margin: (left: 2.5cm, right: 2.5cm, top: 2.5cm, bottom: 2.5cm),
numbering: none,
number-align: center,
)

let body-font = "Libertinus Serif"

set text(
font: body-font,
size: 12pt,
lang: language,
)

set par(leading: 0.5em)


// --- Title Page ---
align(center, image("/template/figures/unisg_logo.png", width: 15%))
let universityName = (en: "University of St. Gallen", de: "Universität St. Gallen")
align(center, text(font: body-font, 18pt, weight: 500, upper(universityName.at(language))))
let universityHeader = (
en: "School of Management, Economics,\n Law, Social Sciences, International Affairs and Computer Science",
de: "Hochschule für Wirtschafts-, Rechts- und Sozialwissenschaften,\n Internationale Beziehungen und Informatik",
)
align(center, text(font: body-font, 11pt, weight: 500, universityHeader.at(language)))

v(1fr)
line(length: 100%, stroke: 0.5pt + gray)
align(center, text(font: body-font, 16pt, weight: 400, type))
align(center, text(font: body-font, 20pt, weight: 700, title))
align(center, text(font: body-font, 16pt, weight: 400, subtitle))
line(length: 100%, stroke: 0.5pt + gray)
v(1fr)


let submittedBy = (en: "Submitted by", de: "Eingereicht von")
let approvedBy = (en: "Approved on Application by:", de: "Genehmigt auf Antrag von:")
let submission-dateText = (en: "Date of Submission:", de: "Einreichungsdatum:")
align(
center,
text(font: body-font, 12pt, weight: 400, submittedBy.at(language) + ": \n" + author + "\n" + matriculation-number),
)
align(center, text(font: body-font, 12pt, weight: 400, approvedBy.at(language) + "\n" + professor))
v(5mm)
align(
center,
text(
font: body-font,
12pt,
weight: 400,
submission-dateText.at(language)
+ "\n"
+ submission-date.display("[day padding:zero].[month padding:zero].[year repr:full]"),
),
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#let writing-aids-directory(language: "en", body) = {
set page(
margin: (left: 30mm, right: 30mm, top: 40mm, bottom: 40mm),
numbering: none,
number-align: center,
)

let body-font = "New Computer Modern"
let sans-font = "New Computer Modern Sans"

set text(
font: body-font,
size: 12pt,
lang: "en"
)

set par(leading: 1em)

// --- AI Usage ---
let title = (en: "Directory of writing aids", de: "Verzeichnis der Schreibhilfsmittel")
heading(title.at(language), numbering: none)
v(12pt)

body
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions packages/preview/gallus-hsg/1.0.0/template/bibliography.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
@book{bruegge2004object,
title = {Object Oriented Software Engineering Using UML, Patterns, and Java},
author = {Bruegge, Bernd and Dutoit, Allen H},
year = {2009},
publisher = {Prentice Hall}
}
15 changes: 15 additions & 0 deletions packages/preview/gallus-hsg/1.0.0/template/content/01-content.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#import "@preview/gallus-hsg:1.0.0": *

= Heading 1 <chapter1>
== Heading 2
=== Heading 3
==== Heading 4
This is a biblography cite: #cite(<bruegge2004object>)

This is an image.
#figure(
image("../figures/unisg_logo.png"),
caption: "The HSG Logo",
) <Figure1>

Can be referenced: @Figure1
13 changes: 13 additions & 0 deletions packages/preview/gallus-hsg/1.0.0/template/content/02-content.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#import "@preview/gallus-hsg:1.0.0": *

= Heading 1
== Heading 2
=== Heading 3
==== Heading 4

There are also some utils. Like Todo:

#TODO("This is a todo")

Or formfield:
#formfield("Label", "Test", length: 3cm)
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#import "@preview/gallus-hsg:1.0.0": *

#TODO[
1. *paragraph:* What is the motivation of your thesis? Why is it interesting from a scientific point of view? Which main problem do you like to solve?
2. *paragraph:* What is the purpose of the document? What is the main content, the main contribution?
3. *paragraph:* What is your methodology? How do you proceed?
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#import "@preview/gallus-hsg:1.0.0": *

First, I'd like to thank coffee for fueling my brain cells and making this thesis possible.

A big shoutout to my advisor for your patience and for not laughing (too hard) at my wild ideas.

To my family, your snack supplies and constant reminders to "just finish it already" were invaluable.

Finally, to my pet, your keyboard sit-ins ensured I took breaks, whether I wanted to or not.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#import "@preview/gallus-hsg:1.0.0": *

-- Supplementary Material --
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#import "@preview/gallus-hsg:1.0.0": *

#TODO[
Update this paragraph to reflect the tools you used in your thesis. Please see Guide in #link("https://universitaetstgallen.sharepoint.com/sites/PruefungenDE/SitePages/ChatGPT.aspx")[StudentWeb] for more information. (HSG Account required)
]

In preparing this thesis, I utilized Grammarly for grammar and style correction across the Abstract, Introduction, and Conclusion sections, ensuring clarity and coherence in my writing. I used DeepL to enhance language quality and translate parts of the Literature Review. I used ChatGPT to generate initial drafts and expand on ideas in the Introduction and Discussion sections, providing valuable suggestions and examples. Additionally, I used GitHub Copilot to generate code snippets for the developed functionality and code snippets in the Methodology section.

#figure(
caption: "Directory of writing aids",
table(
columns: (1fr, 1fr, 1fr),
"Aid", "Usage / Application", "Affected Areas",
"ChatGPT 4.0",
[
- Brainstorming Structure
- Mindmaps
- Rewriting Text
],
[All chapters \ See Promt Dictionary \ \ @chapter1 #ref(<chapter1>, form: "page")],

"Grammarly",
[
- Grammar and Style Correction
- Clarity and Coherence
],
[Abstract, Introduction, Conclusion \ \ @chapter1 #ref(<chapter1>, form: "page") ],
),
)
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 9 additions & 0 deletions packages/preview/gallus-hsg/1.0.0/template/metadata.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// Enter your thesis data here:
#let language = "en" // "en" or "de"
#let title = "Title of paper"
#let subtitle = "Subtitle of paper"
#let type = "Type of paper"
#let professor = "Name and full title of professor"
#let author = "First name Last name"
#let matriculation-number = "Matriculation number"
#let submission-date = datetime(day: 1, month: 1, year: 2024)
23 changes: 23 additions & 0 deletions packages/preview/gallus-hsg/1.0.0/template/thesis.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#import "@preview/gallus-hsg:1.0.0": *
#import "./metadata.typ": *

#set document(title: title, author: author)

#show: thesis.with(
language: language,
title: title,
subtitle: subtitle,
type: type,
professor: professor,
author: author,
matriculation-number: matriculation-number,
submission-date: submission-date,
abstract: include "./content/abstract.typ",
acknowledgement: include "./content/acknowledgement.typ",
writing-aids-directory: include "./content/writing-aids-directory.typ",
appendix: include "./content/appendix.typ",
bibliography-as-bytes: read("./bibliography.bib", encoding: none),
)

#include "./content/01-content.typ"
#include "./content/02-content.typ"
Loading