Compare commits

3 Commits
main ... ieee

Author SHA1 Message Date
caee726e6b Fix Anhangverzeichnis 2026-02-24 08:00:55 +01:00
d0de6c74cc index anpassung quellen 2026-02-23 10:55:42 +01:00
a61caea508 use ieee, update dependencies 2026-02-11 16:10:30 +01:00

474
dhsn.typ
View File

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