feat: made template for nachprufung in lib.typ

This commit is contained in:
orangerot 2025-08-25 09:16:07 +02:00
parent a30053190f
commit 9bbbdb4512
2 changed files with 209 additions and 0 deletions

169
lib.typ Normal file
View file

@ -0,0 +1,169 @@
#let nachprufung(
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
attendence: (:
/* 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
) = [
#set page("a4", margin: (top: 1cm, bottom: 0cm, rest: 1.55cm))
#set text(lang: "de", size: 10.5pt)
#page[
#set par(justify: true, leading: .5em, spacing: 0.5em)
#set block(spacing: 0pt)
#set table(inset: (top: 2pt, bottom: 4pt, x: 8pt), stroke: .5pt)
#set grid(inset: (y: 3pt, x: 6pt))
#set grid.vline(stroke: .5pt)
#set linebreak(justify: true)
#let checkbox(b) = if (b) {$times.square$} else {$square$}
#let input(width: 1fr, body) = box(width: width, inset: (bottom: 2pt), baseline: 2pt, stroke: (bottom: (dash: "dotted")),align(right, body))
#show emoji.pencil: "✎"
#grid(columns: (2cm, 15cm), align: bottom,
box(inset: (x: 3pt), image(width: 1.3cm, "fsmi-logo.svg")),
[
#set text(size: 15pt)
#set par(spacing: 3pt)
Fragebogen der Fachschaft zu
*mündlichen Vordiplomsprüfungen* im Informatikstudium
])
#grid(columns: 2*(1fr,), grid.vline(x:1), [
Dieser Fragebogen gibt den KommilitonInnen, die nach
Dir die Prüfung ablegen wollen, einen Einblick in Ab-
lauf und Inhalt der Prüfung. Das erleichtert die Vorbe-
reitung.
Bitte verwende zum Ausfüllen einen schwarzen Stift.
Das erleichtert das Einscannen.
#let pruefungsrahmen = (
"Prüfungsdatum": if date.year() > 0 {date.display("[day].[month].[year]")},
"PrüferIn (Prof.)": examiner,
"BeisitzerIn": assistant,
)
#for (key,value) in pruefungsrahmen {
box(height: 2em, align(bottom)[*#key:*#input(value)])
}
],
[
#block(width: 7cm, inset: (top: 1.5em, bottom: .3cm, rest: .2cm), align(center,
[
Barcode: #v(2pt)
#grid(
columns: (.1cm, 7.8cm, .1cm),
rows: (.1cm, 2.5cm, .1cm),
stroke: (x,y) => (:
top: if (x != 1 and y == 0) {.5pt},
bottom: if (x != 1 and y == 2) {.5pt},
left: if (y != 1 and x == 0) {.5pt},
right: if (y != 1 and x == 2) {.5pt},
))
]))
*Fach:* \
#v(-2pt)
#let modules = if lecture.len() > 0 {(lecture,)} else {(
"Algo I",
"Algo II",
"Betriebssysteme",
"GdI",
"HM",
"KomDat",
"Programmierparadigmen",
"SWT I",
"Theoretische Grundlagen der Informatik",
"TI",
)}
#for module in modules.flatten() {
box(height: .5em, inset: (left: 5pt))[#checkbox(lecture.len() > 0) #module]
}
])
#let events = (
"Vorlesung": (year: "", did_attend: ""),
"Übung": (year: "", did_attend: ""),
"Tutorium": (year: "", did_attend: ""),
..attendence
)
#table(columns: (7.4cm,2.4cm,8.2cm),
table.header(
[Veranstaltung ],[Jahr],[regelmäßig besucht?]),
..events.pairs().map(((location, (year, did_attend))) =>
(box(height: 1.2em)[*#location*], [#year], [#did_attend])
).flatten()
)
#grid(columns: 2*(1fr,), grid.vline(x:1), inset: (y: .5cm),
[*Bestanden? #checkbox(did_pass == true) Ja / #checkbox(did_pass == false) Nein*],
box(width: 6cm)[
*Prüfungsdauer: #input[
#if (exam_duration.minutes() > 0) {exam_duration.minutes()}
]
Minuten*
])
#grid(columns: 2*(1fr,), rows: (3.5cm,2.8cm,7.3cm), grid.vline(x:1),
[
#emoji.pencil Wie lange und wie hast Du Dich \
#underline[alleine bzw. mit anderen vorbereitet]?
#preparation_time
],
grid.cell(rowspan: 2)[
#emoji.pencil Welche #underline[Tips zur Vorbereitung] kannst Du geben? \
#text(size: 8.5pt)[(Wichtige / Unwichtige Teile des Stoffes, gute Bücher / Skripten, Lernstil)]
#preparations
],
[
#emoji.pencil Fanden vor der Prüfung #underline[Absprachen] zu Form oder
Inhalt statt? Wurden sie #underline[eingehalten]?
#agreements
],
[
#emoji.pencil Kannst Du Ratschläge für das \ #underline[Verhalten in der Prüfung] geben?
#examinee_behavior
],
[
#emoji.pencil Wie war der #underline[Prüfungsstil des Prüfers / der Prüferin?] \
#text(size: 8.5pt)[(Prüfungsathmosphäre, (un)klare Fragestellungen, Fragen nach \
Einzelheiten oder eher größeren Zusammenhängen, kamen häufiger Zwischenfragen
oder ließ er/sie Dich erzählen, wurde Dir weitergeholfen, wurde in Wissenslücken
gebohrt?)]
#examiner_behavior
])
#line(length: 100%, stroke: .5pt)
#v(2pt)
#text(size: 13pt)[*Inhalte der Prüfung:*] $-->$ Bitte auf die Rückseite und weitere Blätter!
#v(1.2em)
#set list(spacing: 1.2em, indent: 1.5em)
- Schreibe bitte möglichst viele Fragen und Antworten auf.
- Wo wurde nach Herleitungen oder Beweisen gefragt oder sonstwie nachgehakt?
- Worauf wollte der Prüfer / die Prüferin hinaus?
- Welche Fragen gehörten nicht zum eigentlichen Stoff?
]
#doc
]

40
nachprufung.typ Normal file
View file

@ -0,0 +1,40 @@
#import "lib.typ": nachprufung
#show: nachprufung.with(
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
attendence: (:
/* 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?
// Hier ist Platz für deinen Kommentar
],
agreements: [
// Fanden vor der Prüfung Absprachen zu Form oder Inhalt statt? Wurden sie eingehalten?
// Hier ist Platz für deinen Kommentar
],
preparations: [
// Welche Tips zur Vorbereitung kannst Du geben?
// Hier ist Platz für deinen Kommentar
],
examiner_behavior: [
// Wie war der Prüfungsstil des Prüfers / der Prüferin?
// Hier ist Platz für deinen Kommentar
],
examinee_behavior: [
// Kannst Du Ratschläge Verhalten in der Prüfung geben?
// Hier ist Platz für deinen Kommentar
],
)
// Schreibe bitte möglichst viele Fragen und Antworten auf.
// Hier ist Platz für deinen Kommentar