1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
// SPDX-FileCopyrightText: 2025 Gero Beckmann <orangerot@orangerot.dev>
//
// SPDX-License-Identifier: MIT
#let oral-post-exam(
lecture: "", // Fach
date: datetime(year: 0, month: 1, day: 1), // Prüfungsdatum
examiner: "", // PrüferIn (Prof)
assistant: "", // BeisitzerIn
did_pass: none, // Bestanden? true || false
exam_duration: duration(minutes: 0), // Prüfungsdauer
attendance: (:
/* Veranstaltung, Jahr, regelmäßig besucht? */
"Vorlesung": (year: "", did_attend: ""),
"Übung": (year: "", did_attend: ""),
"Tutorium": (year: "", did_attend: ""),
),
preparation_time: [
// Wie lange und wie hast alleine bzw. mit anderen vorbereitet?
],
agreements: [
// Fanden vor der Prüfung Absprachen zu Form oder Inhalt statt? Wurden sie eingehalten?
],
preparations: [
// Welche Tips zur Vorbereitung kannst Du geben?
],
examiner_behavior: [
// Wie war der Prüfungsstil des Prüfers / der Prüferin?
],
examinee_behavior: [
// Kannst Du Ratschläge Verhalten in der Prüfung geben?
],
doc
) = [
#let checkbox(checked: false) = if (checked) {$times.square$} else {$square$}
#let events = (
"Vorlesung": (year: "", did_attend: ""),
"Übung": (year: "", did_attend: ""),
"Tutorium": (year: "", did_attend: ""),
..attendance
)
#show <date>: if date.year() > 0 {date.display("[day].[month].[year]")}
#show <examiner>: examiner
#show <assistant>: assistant
#show <exam_duration>: if exam_duration.minutes() > 0 [#exam_duration.minutes()]
#show <preparation_time>: preparation_time
#show <agreements>: agreements
#show <preparations>: preparations
#show <examinee_behavior>: examinee_behavior
#show <examiner_behavior>: examiner_behavior
#show <did_pass>: [
*Bestanden?
#checkbox(checked: did_pass == true) Ja /
#checkbox(checked: did_pass == false) Nein*
]
#show <lecture>: it => if lecture.len() > 0 {
box[#checkbox(checked: true) #lecture]
} else {it}
#show <attendance>: it => {
let g = it.fields()
let _ = g.remove("children")
let _ = g.remove("label")
table(..g,
..it.fields().children.at(0).children,
..events.pairs().map(((location, (year, did_attend))) =>
(box(height: 1.2em)[*#location*], [#year], [#did_attend])).flatten()
)
}
#include "bachelor.typ"
#doc
]
|