diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f08278d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.pdf \ No newline at end of file diff --git a/res/svg/ABB.svg b/res/svg/ABB.svg new file mode 100644 index 0000000..4f75516 --- /dev/null +++ b/res/svg/ABB.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/res/svg/DHBW.svg b/res/svg/DHBW.svg new file mode 100644 index 0000000..66a81b8 --- /dev/null +++ b/res/svg/DHBW.svg @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/info.yaml b/src/info.yaml new file mode 100644 index 0000000..5da1db0 --- /dev/null +++ b/src/info.yaml @@ -0,0 +1,30 @@ + +autor: Sven Vogel +titel: Konfiguration & Integration von PROFINET +untertitel: für die AC500 SPS +typ: T2000 +semester: 3 +fakultät: Technik +studiengang: Informationstechnik +universität: DHBW Mannheim +matrikelnummer: 1191225 +betrieb: ABB AG +betreuer: Florian Miedniak +abgabe: 20. März 2024 +bearbeitungszeitraum: 1. Januar 2024 - 20. März 2024 +stichwörter: + - informatik + - profinet + +# Berechent automatisch die Wochen Anzahl +# Start- und Endzeit müssen im Format dd-mm-yyyy sein. +arbeits-pakete: + - thema: Konfiguration des Stacks + start: 08.01.2024 + ende: 31.01.2024 + - thema: Integration in die Laufzeit + start: 01.02.2024 + ende: 01.03.2024 + - thema: Testen und Evaluation + start: 04.03.2024 + ende: 20.03.2024 \ No newline at end of file diff --git a/src/main.typ b/src/main.typ new file mode 100644 index 0000000..be8378c --- /dev/null +++ b/src/main.typ @@ -0,0 +1,73 @@ + +// style text +#set text( + ligatures: true, + size: 12pt // global font size +) + +// page geometry +#set page( + margin: (left: 3cm, right: 2cm, top: 2cm + 2em + 2em, bottom: 2cm), + paper: "a4", +) + +#let info = yaml("info.yaml") + +// set PDF meta information +#set document( + author: info.autor, + date: datetime.today(), + keywords: info.stichwörter +) + +#include "pages/titel.typ" +#include "pages/selbständigkeitserklärung.typ" +#include "pages/sperrvermerk.typ" +#include "pages/gender-hinweis.typ" +#include "pages/übersicht-arbeitspakete.typ" + +#set page( + binding: left, + header-ascent: 2em, + header: locate(loc => { + align(right, counter(page).display("I.")) + v(-0.75em) + line(length: 100%) + }), + footer: "" +) + +// vorwort + +#outline(title: "Inhaltsverzeichnis") + +#pagebreak() + +#outline( + title: [Abbildungsverzeichnis], + target: figure.where(kind: image), +) + +#pagebreak() + +#outline( + title: [Tabellensverzeichnis], + target: figure.where(kind: table), +) + +#pagebreak() + +#outline( + title: [Quelltextverzeichnis], + target: figure.where(kind: raw), +) + +#pagebreak() + +#set page( + header: locate(loc => { + align(right, counter(page).display("1.")) + line(length: 100%) + }), + footer: "" +) diff --git a/src/pages/gender-hinweis.typ b/src/pages/gender-hinweis.typ new file mode 100644 index 0000000..8592683 --- /dev/null +++ b/src/pages/gender-hinweis.typ @@ -0,0 +1,21 @@ + +// load general information from YAML +#let info = yaml("../info.yaml") + +#v(8em) + +// title +#text(size: 2em, weight: "semibold", align(center, "Gender-Hinweis")) + +#v(3em) + +#set par(justify: true) + +#text(size: 1.25em)[ + Zur besseren Lesbarkeit wird in dieser Hausarbeit das gene- + rische Maskulinum verwendet. Die in dieser Arbeit verwendeten + Personenbezeichnungen beziehen sich - sofern nicht anders kennt- + lich gemacht - auf alle Geschlechter. +] + +#pagebreak() diff --git a/src/pages/selbständigkeitserklärung.typ b/src/pages/selbständigkeitserklärung.typ new file mode 100644 index 0000000..fac60d0 --- /dev/null +++ b/src/pages/selbständigkeitserklärung.typ @@ -0,0 +1,46 @@ + +// load general information from YAML +#let info = yaml("../info.yaml") + +#set align(center) + +// title +#pad(top: 7em, text(size: 2em, weight: "semibold", "Selbständigkeitserklärung")) + +#pad(top: 7em, text(size: 1.25em)[ + Ich versichere hiermit, dass ich meine #linebreak() Prüfung mit dem Thema +]) + +#pad( + top: 4em, + { + text(size: 1.5em, weight: "semibold", info.titel) + linebreak() + text(size: 1.5em, info.untertitel) + } +) + +#pad(top: 6em, text(size: 1.5em)[ + selbständig verfasst und keine anderen als die angegebenen + Quellen und Hilfsmittel benutzt habe. Ich versichere zudem, dass die + eingereichte elektronische Fassung mit der gedruckten Fassung + übereinstimmt. +]) + +#set align(bottom) + +#pad( + top: 3em, + grid( + // set width of columns + // we need two, so make both half the page width + columns: (50%, 50%), + row-gutter: 0.75em, + align(left, {line(length: 16em)}), + align(left, {line(length: 16em)}), + align(left, "Ort, Datum"), + align(left, "Unterschrift") + ) +) + +#pagebreak() \ No newline at end of file diff --git a/src/pages/sperrvermerk.typ b/src/pages/sperrvermerk.typ new file mode 100644 index 0000000..2d80509 --- /dev/null +++ b/src/pages/sperrvermerk.typ @@ -0,0 +1,34 @@ + +// load general information from YAML +#let info = yaml("../info.yaml") + +#box(height: 7em) + +// title +#text(size: 2em, weight: "semibold", align(center, "Sperrvermerk")) + +#box(height: 2em) + +#set par(justify: true) + +#text(size: 1.25em)[ + Der Inhalt dieser Arbeit darf weder als Ganzes noch in + Auszügen Personen außerhalb des Prüfungsprozesses + und des Evaluationsverfahrens zugänglich gemacht werden, + sofern keine anders lautende Genehmigung der Ausbildungsstätte vorliegt. +] + +#box(height: 7em) + +#grid( + // set width of columns + // we need two, so make both half the page width + columns: (50%, 50%), + row-gutter: 0.75em, + align(left, {line(length: 16em)}), + align(left, {line(length: 16em)}), + align(left, "Ort, Datum"), + align(left, "Unterschrift") +) + +#pagebreak() diff --git a/src/pages/titel.typ b/src/pages/titel.typ new file mode 100644 index 0000000..bc2bd03 --- /dev/null +++ b/src/pages/titel.typ @@ -0,0 +1,88 @@ + +// load general information from YAML +#let info = yaml("../info.yaml") + +#set align(center) + +// logo of ABB and DHBW +#pad( + top: 3em, + grid( + // set width of columns + // we need two, so make both half the page width + columns: (50%, 50%), + // left align logo of ABB + align(left, image("../../res/svg/ABB.svg", height: 35pt)), + // right align logo of DHBW + align(right, image("../../res/svg/DHBW.svg", height: 40pt)) + ) +) + +// title +#pad(top: 4em, text(size: 2em, weight: "semibold", info.titel)) + +// subtitle +#pad(top: 1em, text(size: 1.5em, info.untertitel)) + +// subtitle +#pad(top: 4em, text(size: 1.5em, weight: "bold", info.typ)) + +// number of semester +#pad(top: 2em)[ + Praxisphase des #info.semester Studienjahrs +] + +// fakulty +#pad(top: 0.5em)[ + an der Fakultät für #info.fakultät + #linebreak() + im Studiengang #info.studiengang +] + +// university +#pad(top: 1.5em)[ + an der + #linebreak() + #info.universität +] + +#set align(bottom + left) + +#table( + columns: 2, + align: left, + stroke: none, + + "Verfasser:", + info.autor, + + "Bearbeitungszeitraum:", + info.bearbeitungszeitraum, + + "Matrikelnummer, Kurs:", + str(info.matrikelnummer) + ", " + info.studiengang, + + "Ausbildungsbetrieb:", + info.betrieb, + + "Betr. Betreuer:", + info.betreuer, + + "Abgabedatum:", + info.abgabe +) + +#pad( + top: 3em, + grid( + // set width of columns + // we need two, so make both half the page width + columns: (50%, 50%), + align(left, "Unterschrift des betrieblichen Betreuers"), + align(right, {line(length: 16em)}) + ) +) + +#pagebreak() + +#counter(page).update(1) diff --git a/src/pages/übersicht-arbeitspakete.typ b/src/pages/übersicht-arbeitspakete.typ new file mode 100644 index 0000000..b6aab43 --- /dev/null +++ b/src/pages/übersicht-arbeitspakete.typ @@ -0,0 +1,34 @@ + +#box(height: 7em) + +// title +#text(size: 2em, weight: "semibold", align(center, "Übersicht Arbeitspakete")) + +#box(height: 5em) + +#let info = yaml("../info.yaml") + +#figure( + kind: table, + caption: "Übersicht Arbeitspakete", + table( + columns: 3, + align: right, + inset: 1em, + [*Thema*], [*Zeitraum*], [*Dauer (Wochen)*], + ..for packet in info.arbeits-pakete { + + let start_split = packet.start.split(".") + let start = datetime(day: int(start_split.at(0)), month: int(start_split.at(1)), year: int(start_split.at(2))) + + let end_split = packet.ende.split(".") + let end = datetime(day: int(end_split.at(0)), month: int(end_split.at(1)), year: int(end_split.at(2))) + + let dur = end - start + + (packet.thema, packet.start + " - " + packet.ende, str(calc.round(dur.weeks()))) + } + ) +) + +#pagebreak() \ No newline at end of file