Files
definitely-not-dhsndd/dhsn.typ

234 lines
6.3 KiB
Typst

#import "@preview/acrostiche:0.6.0": *
#let statement(location, submission-date, gender) = context [
#pagebreak()
#set heading(numbering: none)
#set page(footer: none, numbering: none)
= Eidesstattliche Erklärung
Ich erkläre an Eides statt, dass ich die vorliegende Arbeit
selbständig und ohne unerlaubte fremde Hilfe angefertigt, andere als
die angegebenen Quellen und Hilfsmittel nicht benutzt habe. Die aus
fremden Quellen direkt oder indirekt übernommenen Stellen sind als
solche kenntlich gemacht.\
Die Zustimmung des Partnerunternehmens in der Praxis zur Verwendung betrieblicher Unterlagen habe ich eingeholt.\
Die Arbeit wurde bisher in gleicher oder ähnlicher Form keiner anderen
Prüfungsbehörde vorgelegt und auch nicht veröffentlicht.
#v(1.5cm)
#grid(
column-gutter: 1cm,
columns: (50%, 50%),
row-gutter: 10pt,
[#location, #submission-date.display("[day].[month].[year]")], align(bottom, line(length: 6cm, stroke: 0.75pt)),
[],
(
if gender == none {
[Unterschrift des Verfassers]
} else if (gender == "M") {
[Unterschrift des Verfassers]
} else if (gender == "F") {
[Unterschrift der Verfasserin]
}
),
)
]
#let addendum(body) = {
pagebreak()
counter(heading).update(0)
set heading(numbering: none)
context if query(selector(figure).after(here())).len() > 0 {
show regex("[\n,;.]? *Quelle:.*"): none
show ref: none
{
show heading: none
heading(numbering: none)[Anhangverzeichnis]
}
outline(title: "Anhangverzeichnis", target: selector(figure).after(here()))
pagebreak()
}
set figure(kind: raw, supplement: "Anhang")
counter(figure.where(kind: raw)).update(0)
[= Anhang <dhsn.addendum>]
body
pagebreak()
}
#let dhsn(
topic: "Thema der Arbeit",
subtitle: [Art der Arbeit],
group: "0XY99-0",
company-data: [Praxispartner GmbH \ 01234 Stadt],
author: "Maxi Musterfrau",
author_gender: none,
location: "Dresden",
consultants: (
(
gender: "M",
name: "Person Eins",
),
(
gender: "F",
name: "Person Zwei",
),
),
assignment-date: datetime.today(),
submission-date: datetime.today(),
bib: none,
body,
) = {
// show figure.where(kind: table): set figure(kind: raw, supplement: "Anhang")
set heading(numbering: (..nums) => nums.pos().map(str).join("."))
set bibliography(style: "harvard-cite-them-right", title: "Literaturverzeichnis")
set cite(form: "prose")
show cite: c => {
show "ohne Datum": "o.D."
show regex("ohne Datum \D\)"): it => {
show ")": "])"
show "ohne Datum ": "o.D.["
it
}
c
}
set text(size: 12pt, lang: "de", region: "de")
set par(justify: true, leading: 1.2em)
show heading: set block(below: 1.2em)
show figure: set par(leading: 0.8em)
show figure.caption: set text(size: 10pt)
show table: set par(leading: 0.8em)
show raw: it => {
if (it.lines.first().count > 1) {
set par(leading: 1em)
it
} else {
it
}
}
set page(
margin: (
top: 2cm,
bottom: 2cm,
left: 3cm,
right: 2cm,
),
footer: context [
#align(right)[#counter(page).display()]
],
)
context [
#set page(footer: none, margin: (left: 2cm))
#set text(size: 14pt)
#set par(leading: (1 / 1.2) * 1em)
#show heading.where(level: 1): it => {
set text(size: 24pt)
block(it.body)
}
#grid(
columns: (50%, 50%),
gutter: 5pt,
align(left + bottom)[Duale Hochschule Sachsen\
Staatliche Studienakademie Dresden\
#group],
align(right + bottom)[_Praxispartner:_\ #company-data],
)
#align(center + horizon)[
#block(width: 15cm, [#heading(level: 1, outlined: false, numbering: none)[#topic]
#v(1.5cm)
#subtitle
#v(1.5cm)
eingereicht von:\
#author])
]
#align(bottom)[
#for c in consultants {
if (c.keys().contains("gender") == false) {
[Gutachter/in: ]
} else if (c.gender == "M") {
[Gutachter: ]
} else if (c.gender == "F") {
[Gutachterin: ]
}
c.name
linebreak()
}
#v(1cm)
Tag der Themenübergabe: #assignment-date.display("[day].[month].[year]")
Tag der Einreichung: #submission-date.display("[day].[month].[year]")
#v(3cm)
]
#pagebreak()
]
set page(numbering: (..nums) => numbering("I", counter(page).get().at(0)))
{
show heading: none
heading(numbering: none)[Inhaltsverzeichnis]
}
outline(indent: 0%)
pagebreak()
context {
show regex("[\n,;.]? *Quelle:.*"): none
show ref: none
if query(selector(figure.where(kind: image).before(<dhsn.addendum>))).len() > 0 {
{
show heading: none
heading(numbering: none)[Abbildungsverzeichnis]
}
outline(title: "Abbildungsverzeichnis", target: selector(figure.where(kind: image)).before(<dhsn.addendum>))
}
if query(selector(figure.where(kind: table)).before(<dhsn.addendum>)).len() > 0 {
{
show heading: none
heading(numbering: none)[Tabellenverzeichnis]
}
outline(title: "Tabellenverzeichnis", target: selector(figure.where(kind: table)).before(<dhsn.addendum>))
}
if (
query(selector(figure.where(kind: table).or(figure.where(kind: table))).before(<dhsn.addendum>)).len() > 0
) {
pagebreak()
counter(footnote).update(0)
}
}
context {
if (acros.get() != none and acros.get().len() > 0) {
{
show heading: none
heading(numbering: none)[Abkürzungsverzeichnis]
}
print-index(title: "Abkürzungsverzeichnis", row-gutter: 1.2em)
pagebreak()
}
}
counter(page).update(1)
set page(numbering: (..nums) => numbering("1", counter(page).get().at(0)))
body
{
show "ohne Datum": "o.D."
show regex("ohne Datum \D\)"): it => {
show ")": "])"
show "ohne Datum ": "o.D.["
it
}
show regex(`Zugegriffen\: \d+`.text): it => {
let day = str.replace(it.text, "Zugegriffen: ", "")
"Abgerufen am " + day + "."
}
bib
}
statement(location, submission-date, author_gender)
}