Compare commits

..

No commits in common. "47bda566637b95569f3f4bee99828c59f70b2a8b" and "2df43f537b308433fc2285829631c9d52b8bed1c" have entirely different histories.

19 changed files with 275 additions and 163 deletions

View file

@ -1,8 +1,6 @@
![HKA Logo](./template/logo/hka_horizontal.svg)
# Typst Template HKA # Typst Template HKA
This is a thesis template written in [Typst](https://typst.app/), This is a thesis template written in [Typst](https://typst.app/),
based on the [template of the TU Munich](https://github.com/ls1intum/thesis-template-typst). based on the [template of the TU Munich](https://github.com/ls1intum/thesis-template-typst).
## Usage ## Usage
@ -13,7 +11,7 @@ on the dashboard and searching for `unofficial-hka-thesis`.
Locally, you can use the following command to start with this templates: Locally, you can use the following command to start with this templates:
```bash ```bash
typst init @preview/unofficial-hka-thesis:1.0.2 typst init @preview/unofficial-hka-thesis:1.0.0
``` ```
### Features ### Features
@ -49,7 +47,7 @@ In the intranet you can download the official titlepage. As Typst is not able to
Every header includes the heading of the current chapter, section or subsection. Every header includes the heading of the current chapter, section or subsection.
![Current Subsection](assets/image.png) ![Current Subsection](assets/image.png)
If a new section or subsection starts at the current page this one is chosen. If a new section or subsection starts at the current page this one is chosen.
![New Section](assets/image-1.png) ![New Section](assets/image-1.png)
If a new chapter starts at the current page, no header will be shown. If a new chapter starts at the current page, no header will be shown.
@ -65,4 +63,4 @@ Every footer is divided by a line from the main body. The footer contains the pa
**Anything Missing?** Please [create an issue](https://github.com/AnsgarLichter/unofficial-hka-thesis/issues/new) or open a Pull Request right away. **Anything Missing?** Please [create an issue](https://github.com/AnsgarLichter/unofficial-hka-thesis/issues/new) or open a Pull Request right away.
**Have Questions?** Please [open a discussion](https://github.com/AnsgarLichter/unofficial-hka-thesis/discussions). **Have Questions?** Please [open a discussion](https://github.com/AnsgarLichter/unofficial-hka-thesis/discussions).

BIN
assets/HKALogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

BIN
assets/company.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

114
assets/company.svg Normal file
View file

@ -0,0 +1,114 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="360.000000pt" height="360.000000pt" viewBox="0 0 360.000000 360.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,360.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M1670 2816 c-25 -13 -58 -42 -75 -65 -24 -35 -30 -54 -33 -111 -4
-60 -1 -75 22 -116 25 -44 26 -54 26 -185 0 -126 2 -139 18 -139 15 0 17 11
17 97 0 68 4 98 13 100 9 4 12 -20 12 -96 l0 -101 130 0 130 0 0 136 c0 116 3
140 18 162 78 112 41 261 -79 323 -55 28 -142 26 -199 -5z m199 -55 c35 -25
59 -74 67 -135 6 -38 4 -46 -10 -46 -12 0 -16 10 -16 40 0 70 -46 132 -107
145 -18 3 -33 11 -33 17 0 16 66 2 99 -21z"/>
<path d="M1316 2164 c-9 -8 -16 -24 -16 -35 0 -18 15 -19 470 -21 l470 -3 0
27 c0 17 -8 31 -19 38 -13 6 -174 10 -455 10 -382 0 -436 -2 -450 -16z"/>
<path d="M1670 1995 l0 -85 105 0 105 0 0 85 0 85 -105 0 -105 0 0 -85z"/>
<path d="M1900 1985 c0 -19 13 -40 40 -67 162 -162 4 -442 -220 -388 -70 17
-122 58 -154 121 -45 90 -32 187 36 264 34 39 51 85 30 85 -19 0 -80 -63 -106
-109 -102 -188 35 -414 250 -413 158 1 274 119 274 276 0 105 -37 173 -132
245 -16 12 -18 11 -18 -14z"/>
<path d="M1617 1902 c-25 -27 -57 -104 -57 -137 0 -80 58 -173 127 -202 76
-31 186 -9 240 49 69 73 71 209 4 286 -23 26 -31 28 -31 7 0 -13 -19 -15 -127
-13 -96 2 -127 6 -125 16 3 17 -12 15 -31 -6z"/>
<path d="M1850 1224 c0 -3 9 -22 20 -44 11 -22 20 -51 20 -65 0 -18 5 -25 20
-25 13 0 20 7 20 20 0 12 9 38 20 60 24 48 25 50 2 50 -11 0 -23 -11 -29 -27
l-10 -28 -11 26 c-8 21 -52 49 -52 33z"/>
<path d="M917 1202 c-22 -24 -22 -75 1 -95 20 -18 59 -22 81 -8 20 13 3 32
-23 25 -28 -7 -50 17 -41 46 5 17 13 20 38 18 23 -2 32 1 32 12 0 24 -67 25
-88 2z"/>
<path d="M1067 1202 c-38 -41 -10 -112 44 -112 30 0 43 9 58 37 33 64 -54 128
-102 75z m68 -23 c12 -19 -4 -59 -24 -59 -22 0 -34 25 -26 51 7 20 40 26 50 8z"/>
<path d="M1220 1155 c0 -51 3 -65 15 -65 10 0 15 10 15 33 l0 32 20 -25 c20
-26 21 -26 38 5 10 18 11 17 12 -12 0 -26 4 -33 20 -33 18 0 20 7 20 65 0 62
-1 65 -24 65 -18 0 -27 -8 -35 -32 l-12 -33 -16 33 c-9 19 -23 32 -34 32 -17
0 -19 -8 -19 -65z"/>
<path d="M1410 1155 c0 -51 3 -65 15 -65 8 0 15 9 15 19 0 14 8 21 27 23 19 2
30 11 37 30 13 37 -6 58 -55 58 l-39 0 0 -65z m60 20 c0 -8 -7 -15 -15 -15 -8
0 -15 7 -15 15 0 8 7 15 15 15 8 0 15 -7 15 -15z"/>
<path d="M1556 1168 c-10 -29 -21 -59 -23 -65 -3 -8 3 -13 15 -13 11 0 22 5
24 12 6 17 36 18 42 2 3 -8 14 -14 25 -14 18 0 18 3 -7 65 -32 81 -50 85 -76
13z m40 -25 c-11 -11 -19 6 -11 24 8 17 8 17 12 0 3 -10 2 -21 -1 -24z"/>
<path d="M1690 1155 c0 -58 2 -65 20 -65 16 0 20 7 20 33 l0 32 26 -32 c40
-52 54 -44 54 32 0 51 -3 65 -15 65 -10 0 -15 -10 -15 -30 0 -16 -4 -30 -8
-30 -4 0 -16 14 -25 30 -10 17 -27 30 -38 30 -17 0 -19 -7 -19 -65z"/>
<path d="M2050 1155 c0 -51 3 -65 15 -65 10 0 15 10 15 30 0 38 10 38 35 0 11
-16 28 -30 38 -30 14 0 17 10 17 65 0 58 -2 65 -20 65 -16 0 -20 -7 -20 -32
l0 -33 -26 33 c-40 51 -54 43 -54 -33z"/>
<path d="M2231 1161 c-26 -71 -26 -71 -1 -71 11 0 20 7 20 15 0 8 9 15 20 15
11 0 20 -7 20 -15 0 -8 9 -15 20 -15 25 0 25 0 -1 71 -15 41 -27 59 -39 59
-12 0 -24 -18 -39 -59z m45 -18 c-11 -11 -19 6 -11 24 8 17 8 17 12 0 3 -10 2
-21 -1 -24z"/>
<path d="M2370 1155 c0 -59 2 -65 21 -65 18 0 21 5 17 30 -5 33 7 41 15 10 3
-11 10 -20 17 -20 7 0 14 9 17 20 8 32 26 23 21 -10 -4 -24 -1 -30 14 -30 16
0 18 9 18 65 0 59 -2 65 -20 65 -12 0 -25 -10 -32 -25 -6 -14 -15 -25 -19 -25
-5 0 -11 11 -15 25 -4 18 -13 25 -30 25 -23 0 -24 -3 -24 -65z"/>
<path d="M2560 1155 l0 -65 50 0 c38 0 50 4 50 15 0 10 -10 15 -30 15 -16 0
-30 5 -30 10 0 6 11 10 25 10 16 0 25 6 25 15 0 9 -9 15 -24 15 -14 0 -28 5
-31 10 -4 6 6 10 23 10 17 0 32 6 36 15 4 12 -4 15 -44 15 l-50 0 0 -65z"/>
<path d="M1040 1014 c1 -5 6 -19 13 -31 l13 -23 11 30 c6 17 7 30 2 30 -5 0
-9 -5 -9 -11 0 -8 -5 -8 -15 1 -8 7 -15 9 -15 4z"/>
<path d="M1103 1004 c-3 -8 2 -23 11 -32 15 -15 17 -15 32 0 21 21 11 48 -16
48 -11 0 -23 -7 -27 -16z m37 -9 c0 -8 -4 -15 -10 -15 -5 0 -10 7 -10 15 0 8
5 15 10 15 6 0 10 -7 10 -15z"/>
<path d="M1183 995 c2 -23 7 -30 22 -30 14 0 21 8 23 28 2 15 -1 27 -7 27 -6
0 -11 -9 -11 -20 0 -27 -17 -25 -23 3 -4 15 -5 12 -4 -8z"/>
<path d="M1250 991 c0 -31 14 -42 23 -18 4 10 6 10 6 0 2 -26 17 -12 16 15 0
20 -6 28 -22 30 -20 3 -23 -1 -23 -27z"/>
<path d="M1338 1013 c6 -2 12 -16 12 -29 0 -34 17 -30 22 6 4 27 2 30 -21 29
-14 0 -20 -3 -13 -6z"/>
<path d="M1402 995 c-15 -33 -16 -32 17 -32 27 0 28 2 19 29 -12 35 -21 35
-36 3z"/>
<path d="M1464 1005 c-4 -8 -4 -22 0 -30 7 -20 46 -19 46 1 0 11 -6 14 -20 9
-28 -9 -26 13 3 25 l22 9 -23 0 c-12 1 -25 -6 -28 -14z"/>
<path d="M1530 990 c0 -23 4 -30 20 -30 11 0 20 5 20 10 0 6 -4 10 -10 10 -5
0 -10 9 -10 20 0 11 -4 20 -10 20 -5 0 -10 -13 -10 -30z"/>
<path d="M1590 990 c0 -16 5 -30 10 -30 6 0 10 14 10 30 0 17 -4 30 -10 30 -5
0 -10 -13 -10 -30z"/>
<path d="M1631 988 c1 -19 3 -25 6 -15 5 18 6 18 24 1 18 -17 19 -16 19 17 0
27 -3 31 -11 19 -8 -11 -12 -12 -16 -2 -9 24 -23 12 -22 -20z"/>
<path d="M1700 990 c0 -26 4 -30 26 -30 14 0 23 4 19 10 -4 6 -11 8 -16 5 -5
-4 -9 -1 -9 4 0 6 6 11 13 11 8 0 8 3 -2 9 -11 7 -10 10 5 14 13 3 11 5 -8 6
-25 1 -28 -3 -28 -29z"/>
<path d="M1785 994 c-24 -37 -11 -41 15 -5 12 17 17 31 12 31 -5 0 -17 -12
-27 -26z"/>
<path d="M1840 1009 c0 -7 8 -18 18 -26 16 -14 16 -14 0 -9 -10 3 -18 1 -18
-4 0 -12 37 -13 44 -1 3 5 -1 14 -10 21 -12 11 -12 15 -2 21 9 6 6 9 -9 9 -13
0 -23 -5 -23 -11z"/>
<path d="M1900 990 c0 -26 4 -30 28 -30 24 1 25 2 10 14 -10 7 -18 21 -18 30
0 9 -4 16 -10 16 -5 0 -10 -13 -10 -30z"/>
<path d="M1964 1005 c-8 -21 2 -45 19 -45 21 0 38 25 31 44 -8 20 -43 21 -50
1z m36 -10 c0 -8 -4 -15 -10 -15 -5 0 -10 7 -10 15 0 8 5 15 10 15 6 0 10 -7
10 -15z"/>
<path d="M2036 1004 c-4 -9 -1 -23 5 -30 16 -19 49 -18 49 2 0 11 -6 14 -20 9
-15 -5 -20 -2 -20 10 0 11 5 15 15 11 8 -3 15 -1 15 4 0 17 -37 11 -44 -6z"/>
<path d="M2124 1004 c3 -8 2 -13 -3 -10 -5 3 -11 -2 -13 -12 -4 -15 1 -19 22
-19 26 0 27 2 18 29 -6 15 -14 28 -20 28 -6 0 -7 -7 -4 -16z"/>
<path d="M2172 990 c0 -16 4 -30 9 -30 5 0 9 8 9 18 1 16 1 16 11 0 15 -27 29
-21 29 12 0 17 -4 30 -10 30 -5 0 -10 -5 -10 -12 0 -9 -3 -9 -12 0 -19 19 -25
14 -26 -18z"/>
<path d="M2271 990 c0 -30 1 -32 11 -16 11 19 11 19 24 1 13 -17 14 -16 13 16
0 19 -3 28 -6 22 -2 -7 -11 -13 -18 -13 -7 0 -16 6 -18 13 -3 6 -6 -4 -6 -23z"/>
<path d="M2340 990 c0 -26 4 -30 26 -30 14 0 23 4 19 10 -4 6 -11 8 -16 5 -5
-4 -9 -1 -9 4 0 6 6 11 13 11 8 0 8 3 -2 9 -11 7 -10 10 5 14 13 3 11 5 -8 6
-25 1 -28 -3 -28 -29z"/>
<path d="M2400 990 c0 -16 5 -30 10 -30 6 0 10 5 10 11 0 8 5 8 15 -1 13 -11
15 -8 15 19 0 26 -4 31 -25 31 -21 0 -25 -5 -25 -30z m40 16 c0 -3 -4 -8 -10
-11 -5 -3 -10 -1 -10 4 0 6 5 11 10 11 6 0 10 -2 10 -4z"/>
<path d="M2470 990 c0 -26 4 -30 26 -30 14 0 23 4 19 10 -4 6 -11 8 -16 5 -5
-4 -9 -1 -9 4 0 6 6 11 13 11 8 0 8 3 -2 9 -11 7 -10 10 5 14 13 3 11 5 -8 6
-25 1 -28 -3 -28 -29z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.8 KiB

132
lib.typ
View file

@ -1,6 +1,5 @@
#import "modules/titlepage.typ": * #import "modules/titlepage.typ": *
#import "@preview/glossarium:0.5.9": print-glossary #import "@preview/glossarium:0.5.1": print-glossary, register-glossary
#import "@preview/hydra:0.6.3": hydra
#let in-outline = state("in-outline", false) #let in-outline = state("in-outline", false)
#let flex-caption(long, short) = context { #let flex-caption(long, short) = context {
@ -8,27 +7,25 @@
} }
#let preface( #let preface(
settings: (), settings: ()
preface
) = { ) = {
// Page Setup // Page Setup
set page( set page(
margin: ( margin: (
left: settings.page-margins.left, left: settings.pageMargins.left,
right: settings.page-margins.right, right: settings.pageMargins.right,
top: settings.page-margins.top, top: settings.pageMargins.top,
bottom: settings.page-margins.bottom bottom: settings.pageMargins.bottom
), ),
header-ascent: 2%, numbering: "I",
numbering: "i", number-align: center
number-align: right
) )
counter(page).update(2) counter(page).update(2)
// Body Font Family // Body Font Family
set text( set text(
font: settings.font-body, font: settings.fontBody,
size: settings.font-body-size, size: settings.fontBodySize,
lang: "en" lang: "en"
) )
@ -36,29 +33,27 @@
// Headings // Headings
show heading: set block( show heading: set block(
below: settings.headings-spacing.below, below: settings.headingsSpacing.below,
above: settings.headings-spacing.above above: settings.headingsSpacing.above
) )
show heading: set text(font: settings.font-heading) show heading: set text(font: settings.fontBody, size: settings.fontHeadingSize)
show heading.where(level: 1): set text(font: settings.font-heading, size: settings.font-heading-size)
set heading(numbering: none) set heading(numbering: none)
// Paragraphs // Paragraphs
set par(leading: settings.distance-between-lines, justify: true) set par(leading: settings.distanceBetweenLines, justify: true)
// Figures // Figures
show figure: set text(size: settings.font-figures-subtitle-size) show figure: set text(size: settings.fontFiguresSubtitleSize)
//Indentation of Lists //Indentation of Lists
set list(indent: settings.list-indentation) set list(indent: settings.listIndentation)
set enum(indent: settings.list-indentation) set enum(indent: settings.listIndentation)
preface
} }
#let listings( #let listings(
abbreviations: () abbreviations: ()
) = { ) = {
register-glossary(abbreviations)
// Enable short captions to omit citations // Enable short captions to omit citations
show outline: it => { show outline: it => {
in-outline.update(true) in-outline.update(true)
@ -73,7 +68,7 @@
}, },
target: heading.where(supplement: [Chapter], outlined: true), target: heading.where(supplement: [Chapter], outlined: true),
indent: auto, indent: true,
depth: 3 depth: 3
) )
@ -120,12 +115,12 @@
) )
} }
#let main-body( #let mainBody(
settings: (), settings: (),
body body
) = { ) = {
// Main Body // Main Body
set heading(numbering: settings.headings-numbering-style, supplement: [Chapter]) set heading(numbering: settings.headingsNumberingStyle, supplement: [Chapter])
show heading.where(level: 1): it => { show heading.where(level: 1): it => {
if it.numbering == none { if it.numbering == none {
[ [
@ -144,39 +139,74 @@
} }
set figure(numbering: it => { set figure(numbering: it => {
let numbering-of-heading = counter(heading).display(); let numberingOfHeading = counter(heading).display();
let top-level-number = numbering-of-heading.slice(0, numbering-of-heading.position(".")) let topLevelNumber = numberingOfHeading.slice(0, numberingOfHeading.position("."))
[#top-level-number.#it] [#topLevelNumber.#it]
}) })
set page( set page(
// Header with current heading // Header with current heading
header: context { header: context {
grid(columns: (1fr, 1fr), let elements = query(
align(left, emph(hydra(1))), selector(heading.where(depth: 1)).after(here())
align(right, emph(hydra(2)))
) )
if hydra(1) != none {
line(length: 100%, stroke: 0.5pt, start: (0%, -1.8em)) // Don't show header if a new chapter is starting at the current page
if elements != () and elements.first().location().page() == here().page() and elements.first().depth == 1 {
return;
} }
let displayHeading
let displayNumbering
let element
elements = query(selector(heading).after(here()))
if elements != () and elements.first().location().page() == here().page() {
element = elements.first()
if element.has("numbering") and element.numbering != none {
displayNumbering = numbering(element.numbering, ..counter(heading).at(element.location()))
} else {
displayNumbering = numbering(settings.headingsNumberingStyle, ..counter(heading).at(element.location()))
}
displayHeading = element.body
} else {
// Otherwise take the next heading backwards
elements = query(
heading.where().before(here())
)
if elements != () {
element = elements.last()
if element.has("numbering") and element.numbering != none {
displayNumbering = numbering(element.numbering, ..counter(heading).at(element.location()))
} else {
displayNumbering = numbering(settings.headingsNumberingStyle, ..counter(heading).at(element.location()))
}
displayHeading = element.body
}
}
align(center, displayNumbering + " " + displayHeading)
line(length: 100%, stroke: (paint: gray))
}, },
// Footer with Page Numbering // Footer with Page Numbering
footer: context { footer: context {
let current-page = counter(page).display() let currentPage = counter(page).display()
let final-page = counter(page).final().first() let finalPage = counter(page).final().first()
align(right, current-page) line(length: 100%, stroke: (paint: gray))
align(center)[#currentPage / #finalPage]
} }
) )
set page( set page(
numbering: "1", numbering: "1/1",
number-align: center, number-align: center,
) )
counter(page).update(1) counter(page).update(1)
// Set after header and after all initial pages to just apply it to the acutal content // Set after header and after all initial pages to just apply it to the acutal content
set par(spacing: settings.space-before-paragraph, justify: true) set par(spacing: settings.spaceBeforeParagraph)
// Actual Content // Actual Content
body body
@ -190,39 +220,39 @@
heading("Appendix", outlined: true, numbering: none) heading("Appendix", outlined: true, numbering: none)
}, },
target: heading.where(supplement: [Appendix], outlined: true), target: heading.where(supplement: [Appendix], outlined: true),
indent: auto, indent: true,
depth: 3 depth: 3
) )
counter(heading).update(0) counter(heading).update(0)
set heading(numbering: "A.1", supplement: [Appendix]) set heading(numbering: "A.1.", supplement: [Appendix])
show heading: it => { show heading: it => {
let prefixed-numbering; let prefixedNumbering;
if it.level == 1 and it.numbering != none { if it.level == 1 and it.numbering != none {
prefixed-numbering = [#it.supplement #counter(heading).display()] prefixedNumbering = [#it.supplement #counter(heading).display()]
} else if it.numbering != none { } else if it.numbering != none {
prefixed-numbering = [#counter(heading).display()] prefixedNumbering = [#counter(heading).display()]
} }
block( block(
below: 0.85em, below: 0.85em,
above: 1.75em above: 1.75em
)[ )[
#prefixed-numbering #it.body #prefixedNumbering #it.body
] ]
} }
set figure(numbering: it => { set figure(numbering: it => {
let alphabet = ("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z") let alphabet = ("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z")
let numbering-of-heading = counter(heading).display(); let numberingOfHeading = counter(heading).display();
let top-level-number = numbering-of-heading.slice(0, numbering-of-heading.position(".")) let topLevelNumber = numberingOfHeading.slice(0, numberingOfHeading.position("."))
let index = alphabet.position((el) => { el == top-level-number}) let index = alphabet.position((el) => { el == topLevelNumber})
if index == none { if index == none {
let numberingToAlphabet = numbering("A", int(top-level-number)) let numberingToAlphabet = numbering("A", int(topLevelNumber))
[#numberingToAlphabet.#it] [#numberingToAlphabet.#it]
} else { } else {
[#top-level-number.#it] [#topLevelNumber.#it]
} }
}) })
@ -289,4 +319,4 @@
}).join()) }).join())
} }
} }
} }

View file

@ -1,4 +1,4 @@
#let open-title-page(settings: ()) = { #let openTitlePage(settings: ()) = {
set page( set page(
paper: "a4", paper: "a4",
margin: (left: 30mm, right: 30mm, top: 40mm, bottom: 40mm), margin: (left: 30mm, right: 30mm, top: 40mm, bottom: 40mm),
@ -8,58 +8,58 @@
) )
set text( set text(
font: settings.font-body, font: settings.fontBody,
size: settings.font-body-size, size: settings.fontBodySize,
lang: "en" lang: "en"
) )
set par(leading: 1em) set par(leading: 1em)
} }
#let finish-title-page( #let finishTitlePage(
settings: (), settings: (),
degree: "", degree: "",
program: "", program: "",
title: "", title: "",
subtitle: "", subtitle: "",
title-german: "", titleGerman: "",
subtitle-german: "", subtitleGerman: "",
author: "", author: "",
matriculation-number: "", matriculationNumber: "",
place-of-work: "", placeOfWork: "",
supervisor: "", supervisor: "",
advisor: "", advisor: "",
start-date: none, startDate: none,
submission-date: none, submissionDate: none,
) = { ) = {
v(5mm) v(5mm)
align(center, text(font: settings.font-heading, 1.9em, weight: 700, "University of Applied Sciences Karlsruhe")) align(center, text(font: settings.fontHeading, 1.9em, weight: 700, "University of Applied Sciences Karlsruhe"))
v(15mm) v(15mm)
align(center, text(font: settings.font-heading, 1.5em, weight: 100, degree + "s Thesis in " + program)) align(center, text(font: settings.fontHeading, 1.5em, weight: 100, degree + "s Thesis in " + program))
v(8mm) v(8mm)
if title-german.len() > 0 { if titleGerman.len() > 0 {
if subtitle.len() > 0 or subtitle-german.len() > 0 { if subtitle.len() > 0 or subtitleGerman.len() > 0 {
align(center, text(font: settings.font-heading, 1.2em, weight: 700, title)) align(center, text(font: settings.fontHeading, 1.2em, weight: 700, title))
align(center, text(font: settings.font-heading, 1.2em, weight: 500, subtitle)) align(center, text(font: settings.fontHeading, 1.2em, weight: 500, subtitle))
v(10mm) v(10mm)
align(center, text(font: settings.font-heading, 1.2em, weight: 700, title-german)) align(center, text(font: settings.fontHeading, 1.2em, weight: 700, titleGerman))
align(center, text(font: settings.font-heading, 1.2em, weight: 500, subtitle-german)) align(center, text(font: settings.fontHeading, 1.2em, weight: 500, subtitleGerman))
} else { } else {
align(center, text(font: settings.font-heading, 1.4em, weight: 700, title)) align(center, text(font: settings.fontHeading, 1.4em, weight: 700, title))
v(10mm) v(10mm)
align(center, text(font: settings.font-heading, 1.4em, weight: 700, title-german)) align(center, text(font: settings.fontHeading, 1.4em, weight: 700, titleGerman))
} }
} else { } else {
if subtitle.len() > 0 { if subtitle.len() > 0 {
align(center, text(font: settings.font-heading, 1.8em, weight: 700, title)) align(center, text(font: settings.fontHeading, 1.8em, weight: 700, title))
v(5mm) v(5mm)
align(center, text(font: settings.font-heading, 1.4em, weight: 500, subtitle)) align(center, text(font: settings.fontHeading, 1.4em, weight: 500, subtitle))
} else { } else {
align(center, text(font: settings.font-heading, 2.0em, weight: 700, title)) align(center, text(font: settings.fontHeading, 2.0em, weight: 700, title))
} }
} }
@ -73,12 +73,12 @@
columns: (3fr, 3fr), columns: (3fr, 3fr),
gutter: 1em, gutter: 1em,
strong("Author: "), author, strong("Author: "), author,
strong("Matriculation Number: "), matriculation-number, strong("Matriculation Number: "), matriculationNumber,
strong("Place of Work: "), place-of-work, strong("Place of Work: "), placeOfWork,
strong("Supervisor: "), supervisor, strong("Supervisor: "), supervisor,
strong("Advisor: "), advisor, strong("Advisor: "), advisor,
strong("Start Date: "), start-date, strong("Start Date: "), startDate,
strong("Submission Date: "), submission-date, strong("Submission Date: "), submissionDate,
) )
) )
} else { } else {
@ -90,11 +90,11 @@
columns: (3fr, 3fr), columns: (3fr, 3fr),
gutter: 1em, gutter: 1em,
strong("Author: "), author, strong("Author: "), author,
strong("Matriculation Number: "), matriculation-number, strong("Matriculation Number: "), matriculationNumber,
strong("Place of Work: "), place-of-work, strong("Place of Work: "), placeOfWork,
strong("Supervisor: "), supervisor, strong("Supervisor: "), supervisor,
strong("Start Date: "), start-date, strong("Start Date: "), startDate,
strong("Submission Date: "), submission-date, strong("Submission Date: "), submissionDate,
) )
) )
} }

View file

@ -1,6 +1,6 @@
#import "@preview/unofficial-hka-thesis:1.0.2": todo, flex-caption #import "@preview/unofficial-hka-thesis:1.0.0": todo, flex-caption
#import "@preview/glossarium:0.5.9": gls, glspl #import "@preview/glossarium:0.5.1": gls, glspl
= Introduction = Introduction

View file

@ -1,5 +1,5 @@
#import "@preview/unofficial-hka-thesis:1.0.2": todo, flex-caption #import "@preview/unofficial-hka-thesis:1.0.0": todo, flex-caption
#import "@preview/acrostiche:0.6.0": acr, acrpl #import "@preview/acrostiche:0.2.0": acr, acrpl
= Foundations = Foundations

BIN
template/logo/HKALogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

View file

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="227" height="59" viewBox="0 0 227 59" xmlns="http://www.w3.org/2000/svg">
<title>Hochschule Karlsruhe</title>
<desc>Hochschule Karlsruhe - University of Applied Sciences</desc>
<g transform="translate(0,0)">
<path fill="rgb(215, 35, 5)" fill-rule="evenodd" d="M74.79 0c.431 0 .791.37.791.814v57.67c0 .443-.36.814-.791.814h-8.205c-.398 0-.735-.316-.785-.714l-.006-.1V.813c0-.444.36-.814.791-.814h8.205zM34.942 0c.439 0 .804.37.804.815v24.297h24.928c.438 0 .804.37.767.852v7.481l-.006.101c-.05.398-.393.714-.798.714H35.71v24.223c0 .444-.366.815-.804.815h-8.334c-.438 0-.804-.37-.804-.815V34.186H.841c-.475.037-.841-.37-.841-.815v-7.445c0-.444.402-.814.84-.814h24.965V.815c0-.445.365-.815.804-.815z"/>
</g>
<g transform="translate(70,-74.109)">
<path fill="rgb(215, 35, 5)" fill-rule="evenodd" d="M74.602 74.109c.398-.258.833-.11.833.444v9.57c0 .518-.29.96-.688 1.257l-31.02 18.069 32.25 19.067c.471.258.725.739.688 1.22v9.496c0 .147-.036.258-.108.37-.181.258-.543.295-.797.11l-40.358-24.425v23.427l-.007.101c-.05.397-.389.712-.79.712h-8.252c-.435 0-.797-.37-.797-.813v-57.57c0-.443.362-.813.797-.813h8.252l.1.007c.388.056.697.434.697.843v22.356z"/>
</g>
<g transform="translate(140,-145.796)">
<path fill="rgb(215, 35, 5)" fill-rule="evenodd" d="M57.072 145.796c.474 0 .912.296 1.094.74l28.782 57.666c.037.11.073.221.037.37-.037.332-.328.554-.657.517H76.041c-.474-.037-.912-.296-1.167-.74l-8.537-17.273h-29L28.69 204.35c-.256.443-.694.702-1.204.74h-9.923c-.11 0-.255 0-.365-.075-.328-.148-.437-.555-.255-.85l29.549-57.63c.255-.443.693-.74 1.203-.74zm-5.364 11.088l-10.039 20.73H61.71l-10.002-20.73z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 20 KiB

View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg class="o-icon c-header__headercontainer--hkaIcon" width="87" height="206" viewBox="0 0 87 206" xmlns="http://www.w3.org/2000/svg">
<title>Hochschule Karlsruhe</title>
<desc>Hochschule Karlsruhe</desc>
<path fill="rgb(215, 35, 5)" fill-rule="evenodd" d="M57.072 145.796c.474 0 .912.296 1.094.74l28.782 57.666c.037.11.073.221.037.37-.037.332-.328.554-.657.517H76.041c-.474-.037-.912-.296-1.167-.74l-8.537-17.273h-29L28.69 204.35c-.256.443-.694.702-1.204.74h-9.923c-.11 0-.255 0-.365-.075-.328-.148-.437-.555-.255-.85l29.549-57.63c.255-.443.693-.74 1.203-.74zm-5.364 11.088l-10.039 20.73H61.71l-10.002-20.73zm22.894-82.775c.398-.258.833-.11.833.444v9.57c0 .518-.29.96-.688 1.257l-31.02 18.069 32.25 19.067c.471.258.725.739.688 1.22v9.496c0 .147-.036.258-.108.37-.181.258-.543.295-.797.11l-40.358-24.425v23.427l-.007.101c-.05.397-.389.712-.79.712h-8.252c-.435 0-.797-.37-.797-.813v-57.57c0-.443.362-.813.797-.813h8.252l.1.007c.388.056.697.434.697.843v22.356zM74.79 0c.431 0 .791.37.791.814v57.67c0 .443-.36.814-.791.814h-8.205c-.398 0-.735-.316-.785-.714l-.006-.1V.813c0-.444.36-.814.791-.814h8.205zM34.942 0c.439 0 .804.37.804.815v24.297h24.928c.438 0 .804.37.767.852v7.481l-.006.101c-.05.398-.393.714-.798.714H35.71v24.223c0 .444-.366.815-.804.815h-8.334c-.438 0-.804-.37-.804-.815V34.186H.841c-.475.037-.841-.37-.841-.815v-7.445c0-.444.402-.814.84-.814h24.965V.815c0-.445.365-.815.804-.815z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -1,14 +1,15 @@
#let degree = "Master" //Bachelor or Master #let degree = "Master" //Bachelor or Master
#let program = "Computer Science" #let program = "Computer Science"
#let title-english = "Title English" #let titleEnglish = "Title English"
#let subtitle-english = "Subtitle English" #let subtitleEnglish = "Subtitle English"
#let title-german = "Title German" #let titleGerman = "Title German"
#let subtitle-german = "Subtitle German" #let subtitleGerman = "Subtitle German"
#let author = "Max Mustermann" #let author = "Max Mustermann"
#let matriculation-number = "12345" #let matriculationNumber = "12345"
#let place-of-work = "ABC" #let placeOfWork = "ABC"
#let supervisor = "Prof Dr. Max Mustermann" #let supervisor = "Prof Dr. Max Mustermann"
#let advisor = "Prof Dr. John Doe" #let advisor = "Prof Dr. John Doe"
#let start-date = "01.03.2024" #let startDate = "01.03.2024"
#let submission-date = "31.08.2024" #let submissionDate = "31.08.2024"
#let submissionDateExposé = "29.02.2024"
#let place = "Karlsruhe" #let place = "Karlsruhe"

View file

@ -1,20 +1,20 @@
#let settings = ( #let settings = (
font-body: "New Computer Modern", fontBody: "New Computer Modern",
font-body-size: 12pt, fontBodySize: 12pt,
font-figures-subtitle-size: 0.85em, fontFiguresSubtitleSize: 0.85em,
// At the moment only used on the title page // At the moment only used on the title page
font-heading: "New Computer Modern Sans", fontHeading: "New Computer Modern Sans",
font-heading-size: 16pt, fontHeadingSize: 16pt,
headings-numbering-style: "1.1.", headingsNumberingStyle: "1.1.",
headings-spacing: ( headingsSpacing: (
below: 0.85em, below: 0.85em,
above: 1.75em above: 1.75em
), ),
citation-style: "ieee", citationStyle: "ieee",
space-before-paragraph: 24pt, spaceBeforeParagraph: 24pt,
distance-between-lines: 1em, distanceBetweenLines: 1em,
list-indentation: 2.5em, listIndentation: 2.5em,
page-margins: ( pageMargins: (
top: 4cm, top: 4cm,
bottom: 2.5cm, bottom: 2.5cm,
left: 2.5cm, left: 2.5cm,

View file

@ -1,4 +1,4 @@
#import "@preview/unofficial-hka-thesis:1.0.2": todo, flex-caption #import "@preview/unofficial-hka-thesis:1.0.0": todo, flex-caption
#heading(outlined: false, numbering: none, "Abstract") #heading(outlined: false, numbering: none, "Abstract")

View file

@ -1,4 +1,4 @@
#import "@preview/unofficial-hka-thesis:1.0.2": todo, flex-caption #import "@preview/unofficial-hka-thesis:1.0.0": todo, flex-caption
#heading(outlined: false, numbering: none, "Zusammenfassung") #heading(outlined: false, numbering: none, "Zusammenfassung")

Binary file not shown.

View file

@ -1,48 +1,43 @@
#import "@preview/unofficial-hka-thesis:1.0.2": * #import "@preview/unofficial-hka-thesis:1.0.0": *
#import "abbreviations.typ": abbreviations #import "abbreviations.typ": abbreviations
#import "settings/metadata.typ": * #import "settings/metadata.typ": *
#import "settings/settings.typ": * #import "settings/settings.typ": *
#import "@preview/glossarium:0.5.9": make-glossary, register-glossary #import "@preview/glossarium:0.5.1": make-glossary
#show: make-glossary #show: make-glossary
#register-glossary(abbreviations)
#set document(title: title-english, author: author) #set document(title: titleEnglish, author: author)
#open-title-page(settings: settings) #openTitlePage(settings: settings)
// Customize your company logo or just use the one from the university // Customize your company logo or just use the one from the university
#grid( #grid(
columns: (1fr, auto, 15pt, auto), columns: (1fr, 1fr),
align(left)[ align(left)[
#image("/logo/company.svg", height: 1.5cm) #image("/logo/company.svg", height: 1.5cm)
], ],
align(right)[ align(right)[
#image("/logo/hka_text.svg", height: 1.0cm) #image("/logo/HKALogo.png", height: 2cm)
],
box(width: auto),
align(right)[
#image("/logo/hka_horizontal.svg", height: 1.0cm)
] ]
) )
#finish-title-page( #finishTitlePage(
settings: settings, settings: settings,
degree: degree, degree: degree,
program: program, program: program,
title: title-english, title: titleEnglish,
subtitle: subtitle-english, subtitle: subtitleEnglish,
author: author, author: author,
matriculation-number: matriculation-number, matriculationNumber: matriculationNumber,
place-of-work: place-of-work, placeOfWork: placeOfWork,
supervisor: supervisor, supervisor: supervisor,
advisor: advisor, advisor: advisor,
start-date: start-date, startDate: startDate,
submission-date: submission-date, submissionDate: submissionDate,
) )
#show: preface.with(settings: settings) #preface(settings: settings)
// Citations - applied here so that you are able to use a local CSL file to define the citation style // Citations - applied here so that you are able to use a local CSL file to define the citation style
#set cite(style: settings.citation-style) #set cite(style: settings.citationStyle)
// Statutory Declaration // Statutory Declaration
#include "supplementary/statutoryDeclaration.typ" #include "supplementary/statutoryDeclaration.typ"
@ -58,7 +53,7 @@
#listings(abbreviations: abbreviations) #listings(abbreviations: abbreviations)
#show: main-body.with( #show: mainBody.with(
settings: settings settings: settings
) )
@ -75,4 +70,4 @@
#include "chapters/A1_Material.typ" #include "chapters/A1_Material.typ"
#include "chapters/A2_Transcripts.typ" #include "chapters/A2_Transcripts.typ"
] ]

View file

@ -1,6 +1,6 @@
[package] [package]
name = "unofficial-hka-thesis" name = "unofficial-hka-thesis"
version = "1.0.2" version = "1.0.0"
entrypoint = "lib.typ" entrypoint = "lib.typ"
authors = ["Ansgar Lichter <https://www.linkedin.com/in/ansgar-lichter-8532661b1>"] authors = ["Ansgar Lichter <https://www.linkedin.com/in/ansgar-lichter-8532661b1>"]
license = "MIT" license = "MIT"