Skip to content

Commit

Permalink
First Version of Template
Browse files Browse the repository at this point in the history
  • Loading branch information
joshuabeny1999 committed Aug 31, 2024
0 parents commit 641ebc8
Show file tree
Hide file tree
Showing 30 changed files with 747 additions and 0 deletions.
Binary file added .DS_Store
Binary file not shown.
5 changes: 5 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
*.png filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.svg filter=lfs diff=lfs merge=lfs -text
12 changes: 12 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
# Check for updates to GitHub Actions every week
interval: "weekly"
47 changes: 47 additions & 0 deletions .github/workflows/build-release-thesis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Build and release thesis

on:
push:
branches:
- main

permissions:
contents: write

jobs:
build_release_thesis:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: "0"
lfs: true

- name: Create initial tag
run: |
if [ -z "$(git tag -l 'v*')" ]; then
git tag v0.0.0
fi
- name: Bump version and push tag
id: bump
uses: anothrNick/github-tag-action@1.70.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
WITH_V: true
DEFAULT_BUMP: "patch"

- uses: typst-community/setup-typst@v3
- run: typst compile thesis.typ thesis.pdf

- name: Create Release
id: create_release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.bump.outputs.new_tag }}
name: Version ${{ steps.bump.outputs.new_tag }}
draft: false
prerelease: false
files: |
thesis.pdf
18 changes: 18 additions & 0 deletions .github/workflows/build-typst.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Build typst
on:
pull_request:
branches:
- main

jobs:
build_release_thesis:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: "0"
lfs: true

- uses: typst-community/setup-typst@v3
- run: typst compile thesis.typ thesis.pdf
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.pdf
32 changes: 32 additions & 0 deletions 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
118 changes: 118 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# 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 CIT School, please visit the [official CIT website](https://www.cit.tum.de/en/cit/studies/students/thesis-completing-your-studies/informatics/).

**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 [website](https://www.unisg.ch/fileadmin/user_upload/HSG_ROOT/_Kernauftritt_HSG/Universitaet/Schools/SOM/Faculty/Chair_of_Organization_Studies/Guideline_HSG.pdf)

---
## Installation

For detailed installation instructions, please refer to the [official installation guide](https://github.com/typst/typst). Here, we provide basic steps for installing Typst's CLI:

- You can get sources and pre-built binaries from the [releases page](https://github.com/typst/typst/releases).
- Use package managers like `brew` or `pacman` to install Typst. Be aware that the versions in the package managers might lag behind the latest release.
- If you have a [Rust](https://rustup.rs/) toolchain installed, you can also install the latest development version.

Nix and Docker users, please refer to the official installation guide for detailed instructions.

## Usage
### Set thesis metadata
Fill in your thesis details in the [`metadata.typ`](/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`](/content) which includes all the chapters and sections of your thesis.
You can add or remove chapters as needed (adapt the [`thesis.typ`](/thesis.typ) with the `#include(...)` accordingly).
If you need to customize the layout of the template, you can do so by modifying the corresponding file in the [`layout`](/layout) directory.

### Build PDFs locally
Once you have installed Typst, you can use it like this:
```sh
# Creates `thesis.pdf` in working directory.
typst compile thesis.typ

# Creates PDF file at the desired path.
typst compile thesis.typ path/to/output.pdf
```

You can also watch source files and automatically recompile on changes. This is
faster than compiling from scratch each time because Typst has incremental
compilation.
```sh
# Watches source files and recompiles on changes.
typst watch thesis.typ
```

### Updating Your Repository to the Latest Template Version
If you have created your thesis repository using the Typst Thesis Template, you might want to update your repository to incorporate the latest changes from the template. Follow these steps to sync your repository with the latest version of the template.

**Steps to Update:**
1. Add the Template Repository as a Remote
First, navigate to your repository in the terminal and add the original template repository as a new remote:
```sh
git remote add template https://github.com/joshuabeny1999/unisg-thesis-template-typst.git
```

2. Fetch the latest updates from the template repository:
```sh
git fetch template
```

3. Merge the Changes into Your Repository
Merge the changes from the template's main branch into your current branch. This might require resolving merge conflicts if there are any differences between your customizations and the template's updates:
```sh
git merge template/main --allow-unrelated-histories
```

4. Resolve Merge Conflicts
If there are any merge conflicts, git will notify you. Open the conflicting files, resolve the conflicts, and then add the resolved files:
```sh
git add <resolved-file>
```

5. Commit the Merge
After resolving conflicts and adding the resolved files, commit the merge:
```sh
git commit -m "Merge updates from Typst Thesis Template"
```

6. Push the Changes to Your Repository
Finally, push the merged changes to your repository:
```sh
git push origin <branch-name>
```

## Working with the Typst Web Editor
If you prefer an integrated IDE-like experience with autocompletion and instant preview, the Typst web editor allows you to import files directly into a new or existing document. Here's how you can do this:

1. Navigate to the [Typst Web Editor](https://typst.app/).
2. Create a new blank document.
3. Click on "File" on the top left menu, then "Upload File".
4. Select all .typ and .bib files along with the figures provided in this template repository.

**Note:** You can select multiple files to import. The editor will import and arrange all the files accordingly. Always ensure you have all the necessary .typ, .bib, and figures files you need for your document.

## Working with VS Code
If you prefer to have a more integrated experience with your favorite code editor, you can use the Typst VS Code extension. The extension provides syntax highlighting, autocompletion, and error checking for Typst files. You can install the extension from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nvarner.typst-lsp).

1. Open your project in VS Code
2. Set the correct file (`thesis.typ` or `proposal.typ`) as the main file. This can be done by opening the respective file and running the command `Typst: Pin the main file to the currently opened document`. Just hit `CMD + Shift + P` and search for the command.


---
## Further Resources

- [Typst Documentation](https://typst.app/docs/)
- [Typst Guide for LaTeX Users](https://typst.app/docs/guides/guide-for-latex-users/)
- [Typst VS Code Extension (inofficial)](https://marketplace.visualstudio.com/items?itemName=nvarner.typst-lsp)
5 changes: 5 additions & 0 deletions content/01_content.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
= Heading 1 <chapter1>
== Heading 2
=== Heading 3
==== Heading 4
This is a biblography cite: #cite(<bruegge2004object>)
4 changes: 4 additions & 0 deletions content/02_content.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
= Heading 1
== Heading 2
=== Heading 3
==== Heading 4
7 changes: 7 additions & 0 deletions content/abstract.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#import "/utils/todo.typ": TODO

#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?
]
7 changes: 7 additions & 0 deletions content/acknowledgement.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
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.
1 change: 1 addition & 0 deletions content/appendix.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
-- Supplementary Material --
22 changes: 22 additions & 0 deletions content/transparency_ai_tools.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#import "/utils/todo.typ": TODO
#import "/utils/pageref.typ": pageref

#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: "AI Tools used in the thesis",
table(
columns: (1fr, 1fr, 2fr),
"Tool", "Usage", "Affected Sections",
"ChatGPT 3.5", [- Brainstorming Structure
- Mindmaps
- Rewriting Text], [All chapters \ See Promt Dictionary \ \ @chapter1 Page #pageref("chapter1") ],
"Grammarly", [- Grammar and Style Correction
- Clarity and Coherence], [Abstract, Introduction, Conclusion \ \ @chapter1 Page #pageref("chapter1") ],

)
)
3 changes: 3 additions & 0 deletions figures/tum_logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added figures/unisg_logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
27 changes: 27 additions & 0 deletions 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 = "Times new Roman"

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
}
38 changes: 38 additions & 0 deletions layout/disclaimer.typ
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#let disclaimer(
title: "",
author: "",
language: "en",
submissionDate: 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: 12pt,
lang: "en"
)

set par(leading: 1em)


// --- Disclaimer ---
v(75%)
let title = (en: "Declaration of Authorship", de: "Erklärung zur Urheberschaft")
heading(title.at(language), numbering: none)
let disclaimer = (en: "I confirm that this thesis is my own work and I have documented all sources and material used.", de: "Ich versichere, dass ich diese Arbeit selbständig verfasst und alle verwendeten Quellen und Materialien dokumentiert habe.")
text(disclaimer.at(language))

v(15mm)
grid(
columns: 2,
gutter: 1fr,
"St. Gallen, " + submissionDate.display("[day]/[month]/[year]"), author
)
}
Loading

0 comments on commit 641ebc8

Please sign in to comment.