Skip to content

Commit e4847a5

Browse files
authored
scribbling-hm:0.1.3 (#3341)
1 parent 5e1d20f commit e4847a5

File tree

18 files changed

+548
-0
lines changed

18 files changed

+548
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2025 fine-seat
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# scribbling-hm
2+
3+
Unofficial computer science Bachelor's thesis template for Munich University of Applied Sciences (Hochschule München).
4+
5+
## Installation
6+
You can use this template in the Typst web app by clicking "Start from template" on the dashboard and searching for ``scribbling-hm``.
7+
8+
Alternatively, you can use the CLI to initialize this project using the command:
9+
10+
```bash
11+
typst init @preview/scribbling-hm
12+
```
13+
14+
## Usage
15+
1. Open the ``main.typ`` file.
16+
2. Customize the properties.
17+
3. Write the content at the bottom of the file.
18+
4. Compile.
19+
20+
### Properties
21+
22+
| Property | Description |
23+
|----------|-------------|
24+
| `title` | The title of your thesis |
25+
| `title-translation` | English translation of the title |
26+
| `course-of-study` | Your course of study |
27+
| `author` | Your full name |
28+
| `gender` | Your gender |
29+
| `student-id` | Your student ID number |
30+
| `birth-date` | Your date of birth (optional) |
31+
| `study-group` | Your study group |
32+
| `semester` | Current semester |
33+
| `supervisors` | Array of supervisor names or single supervisor name |
34+
| `supervisor-gender` | Gender of supervisor |
35+
| `submission-date` | Date of thesis submission |
36+
| `abstract-two-langs` | Enable bilingual abstract (default: true) |
37+
| `abstract` | Your thesis abstract |
38+
| `abstract-translation` | English translation of abstract (if bilingual set to true) |
39+
| `blocking` | Enable blocking notice (default: false) |
40+
| `enable-header` | Show page headers (default: true) |
41+
| `draft` | Enable draft mode (default: true) |
42+
| `bib` | Bibliography file reference |
43+
| `abbreviations-list` | Abbreviations for the glossary |
44+
| `variables-list` | Pre-defined variables |
45+
46+
### Draft mode
47+
48+
If you set ``draft`` to true, your thesis will have written "ENTWURF" all over the place. This will help you to keep track of whether you're finished or not.
49+
50+
Additionally, if you're in draft mode, you can set todo texts in your document.
51+
52+
```typst
53+
#todo[Something to do]
54+
```
55+
56+
### Variables
57+
58+
The `variables-list` is helpful if you want to pre-define frequently-used phrases, including their formatting. You can use them just like the abbreviations.
59+
60+
IMPORTANT:\
61+
Your keys must be unique across all files (``abbreviations.typ`` and ``variables.typ``)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#import "src/scribbling-hm.typ": *
261 KB
Loading
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#let abbreviations-list = (
2+
(
3+
key: "cpu",
4+
short: "CPU",
5+
long: "Central Processing Unit",
6+
description: "Zentrale Recheneinheit im Computer"
7+
),
8+
)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#import "../utils.typ": *
2+
3+
#let abstract-page(
4+
two-langs: true,
5+
abstract: none,
6+
abstract-translation: none
7+
) = {
8+
heading("Zusammenfassung")
9+
10+
text(if abstract != none {abstract} else {todo[Zusammenfassung]})
11+
12+
if two-langs == true {
13+
heading("Abstract")
14+
15+
text(if abstract-translation != none {abstract-translation} else {todo[Abstract]})
16+
}
17+
18+
pagebreak()
19+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#let blocking-notice(
2+
gender: none
3+
) = {
4+
5+
let author = if gender == "w" [der Verfasserin] else if gender == "m" [des Verfassers] else [des Verfassenden]
6+
7+
v(1fr)
8+
9+
[
10+
Die vorliegende Bachelorarbeit beinhaltet vertrauliche Informationen und darf durch Dritte, mit Ausnahme der Gutachter und berechtigten Beteiligten im Prüfungsverfahren, ohne ausdrückliche schriftliche Zustimmung #author nicht eingesehen werden.
11+
12+
Insbesondere ist eine Vervielfältigung, weitere Verwendung und eine Veröffentlichung der Bachelorarbeit ohne ausdrückliche schriftliche Genehmigung #author, auch auszugsweise, untersagt.
13+
14+
]
15+
16+
v(1fr)
17+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#let declaration(
2+
name: none,
3+
birth-date: none,
4+
study-group: none,
5+
semester: none,
6+
student-id: none,
7+
submission-date: none,
8+
) = {
9+
v(1fr)
10+
11+
if name != none and study-group != none and semester != none and student-id != none {
12+
[
13+
#name#if birth-date != none {
14+
[, geb. #birth-date]
15+
} (#study-group, #semester)
16+
]
17+
}
18+
19+
v(1cm)
20+
21+
[
22+
Hiermit erkläre ich, dass ich die Bachelorarbeit selbständig verfasst, noch nicht anderweitig für Prüfungszwecke vorgelegt, keine anderen als die angegebenen Quellen oder Hilfsmittel benutzt sowie wörtliche und sinngemäße Zitate als solche gekennzeichnet habe.
23+
]
24+
25+
v(2cm)
26+
27+
[München, den #submission-date #h(1fr) #name]
28+
29+
v(1cm)
30+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#let outline-page() = {
2+
show outline.entry.where(level: 1): set outline.entry(fill: none)
3+
show outline.entry.where(level: 1): set text(weight: "bold")
4+
show outline.entry.where(level: 1): set block(above: 16pt)
5+
6+
outline(
7+
depth: 3,
8+
indent: auto
9+
)
10+
11+
pagebreak()
12+
}
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
#import "../utils.typ": *
2+
3+
#let titlepage(
4+
title: none,
5+
title-translation: none,
6+
date: none,
7+
author: none,
8+
id: none,
9+
supervisors: none,
10+
course-of-study: none,
11+
gender: none,
12+
supervisor-gender: none,
13+
draft: true,
14+
) = {
15+
align(center, [
16+
#v(1cm)
17+
18+
#image("../media/HM_logo.png", width: 45%)
19+
20+
Hochschule München \
21+
Fakultät für Informatik und Mathematik
22+
23+
#v(2cm)
24+
25+
#text(size: 14pt)[Bachelorarbeit \ zur Erlangung des akademischen Grades \ Bachelor of Science]
26+
27+
#text(size: 16pt, weight: "bold", if (title != none) {
28+
title
29+
} else {
30+
todo[Titel]
31+
})
32+
33+
#text(size: 14pt, if (title-translation != none) {
34+
title-translation
35+
} else { todo[Title] })
36+
37+
#v(0.5cm)
38+
39+
#text(size: 14pt)[
40+
#if draft {
41+
emph(text()[ENTWURF])
42+
} else {
43+
[
44+
Abgabetermin \
45+
#date
46+
]
47+
}
48+
]
49+
50+
#v(1fr)
51+
52+
#let gendered-author = ""
53+
54+
#if (author != none) {
55+
if gender == "m" {
56+
[Autor: ]
57+
} else if gender == "w" {
58+
[Autorin: ]
59+
} else if gender == "d" or gender == none {
60+
[Verfassende Person: ]
61+
}
62+
author
63+
} else { todo[Autor] }
64+
65+
#if (id != none) { [Matrikelnummer: #id] } else { todo[Matrikelnummer] }
66+
67+
#if (course-of-study != none) { [Studiengang: #course-of-study ] } else { todo[Matrikelnummer] }
68+
69+
#if (supervisors != none) {
70+
if type(supervisors) == array [
71+
[Prüfende Personen:]
72+
#supervisors.join(", ")
73+
] else [
74+
#if supervisor-gender == "m" {
75+
[Prüfer:]
76+
} else if supervisor-gender == "w" {
77+
[Prüferin:]
78+
} else if supervisor-gender == "d" or supervisor-gender == none {
79+
[Prüfende Person:]
80+
}
81+
#supervisors
82+
]
83+
} else {
84+
todo[Prüfer]
85+
}
86+
87+
])
88+
pagebreak()
89+
}

0 commit comments

Comments
 (0)