Initial commit

This commit is contained in:
2025-06-29 21:21:46 +02:00
commit 42ff25ba01
3 changed files with 202 additions and 0 deletions

137
dhsn.typ Normal file
View File

@@ -0,0 +1,137 @@
#let statement(location) = context [
#pagebreak()
#set heading(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 Verwen-
dung 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(
columns: (50%, 50%),
column-gutter: 1cm,
row-gutter: 10pt,
[#location, #datetime.today().display("[day].[month].[year]")], align(bottom, line(length: 6cm, stroke: 0.75pt)),
[Ort, Abgabetermin], [Unterschrift des Verfassers],
)
]
#let dhsn(
topic: "Thema der Arbeit",
subtitle: [Art der Arbeit],
group: "0XY99-0",
company-data: [Praxispartner GmbH \ 01234 Stadt],
author: "Maxi Musterfrau",
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")
show figure.where(kind: raw): set figure(supplement: "Anhang")
set heading(numbering: (..nums) => nums.pos().map(str).join("."))
set bibliography(style: "springer-basic-author-date", title: "Literaturverzeichnis")
set cite(form: "prose")
set text(size: 12pt, lang: "de", region: "de")
set par(justify: true)
set page(
margin: (
top: 2cm,
bottom: 2cm,
left: 3cm,
right: 3cm,
),
footer: context [
#align(right)[#counter(page).display()]
],
)
context [
#set page(footer: none)
#set text(size: 14pt)
#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)))
outline(indent: 0%)
pagebreak()
{
show heading: none
heading(numbering: none)[Abbildungsverzeichnis]
}
outline(title: "Abbildungsverzeichnis", target: figure.where(kind: image))
{
show heading: none
heading(numbering: none)[Anhangverzeichnis]
}
outline(title: "Anhangverzeichnis", target: figure.where(kind: table).or(figure.where(kind: raw)))
pagebreak()
counter(page).update(1)
set page(numbering: (..nums) => numbering("1", counter(page).get().at(0)))
body
bib
statement(location)
}

52
example/paper.typ Normal file
View File

@@ -0,0 +1,52 @@
#import "../dhsn.typ": dhsn
#show: dhsn.with(
bib: bibliography("sources.yml"),
assignment-date: datetime(year: 2025, month: 7, day: 20)
)
= Kapitel 1
Im Fließtext kann ich auf #ref(<data>) verweisen.
== Definition
Leider muss ich auf das tolle Buch verweisen #footnote[Vgl. @makeityourself, S. 10]
Google #footnote[Vgl. @google]
Hier ist eine Komplizierte Formel:
$ I(t) = (d Q(t)) / (d t) $
...aber es geht noch schlimmer:
$ arrow(F_L) &= q dot arrow(v) times arrow(B) \
|arrow(F_L)| &= q |arrow(v)| dot |arrow(B)| dot sin(phi)
$
#pagebreak()
#set heading(numbering: "A")
#counter(heading).update(0)
= Anhang
#grid(
columns: (50%, 50%),
align: bottom,
figure(
```go
import fmt
func main() {
fmt.Println("Hallo Welt")
}
```,
caption: "Beispiel-Programm in golang",
),
[#figure(
table(
columns: 2,
"A", $overline("A")$,
"0", "1",
"1", "0",
),
caption: "Beispieldaten",
)<data>],
)

13
example/sources.yml Normal file
View File

@@ -0,0 +1,13 @@
google:
type: web
author: Google LLC
date: 2025
url:
value: https://google.com
date: 2025-06-23
makeityourself:
type: book
author: NODE
date: 2025
title: Make It Yourself - 100 Useful Things to Make