From f028dde18dc81dfe5db6f3312a38b81e9f605350 Mon Sep 17 00:00:00 2001 From: orangerot Date: Fri, 5 Sep 2025 07:09:47 +0200 Subject: feat(lib, mathe): template lib for Pruefungsfragebogen Mathematik --- muendliche-pruefung-mathematik/lib.typ | 110 +++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 muendliche-pruefung-mathematik/lib.typ (limited to 'muendliche-pruefung-mathematik/lib.typ') diff --git a/muendliche-pruefung-mathematik/lib.typ b/muendliche-pruefung-mathematik/lib.typ new file mode 100644 index 0000000..efc0b87 --- /dev/null +++ b/muendliche-pruefung-mathematik/lib.typ @@ -0,0 +1,110 @@ +#let KIND = (: + "DIPLOM": "Diplomprüfung", + "STAATSEXAM": "Staatsexamensprüfung", + "STUDIENBEGLEITEND": "Studienbegleitende Prüfung", + "BACHELOR": "Bachelorprüfung", + "MASTER": "Masterprüfung", + "NONE": "" +) + +#let oral-exam( + study: "", // Studiengang + lecture: "", // Fach + kind: KIND.NONE, // Prüfungsart (Diplom, Staatsexam, Studienbegleitend, Bachelor, Master) + date: datetime(year: 0, month: 1, day: 1), // Prüfungsdatum + examiner: "", // PrüferIn (Prof) + grade_received: 0.0, // Note + grade_reasonable: "", // War die Note angemessen? + exam_duration: duration(minutes: 0), // Prüfungsdauer + checked_knowledge_gaps: none, // Wurde Unwissen abgeprüft? + attendance: ( + // Titel der Vorlesung, Dozent, Wann gehört, SWS, ECTS, LP + (lecture: "", lecturer: "", year: "", sws: "", ects: "", lp: ""), + (lecture: "", lecturer: "", year: "", sws: "", ects: "", lp: ""), + (lecture: "", lecturer: "", year: "", sws: "", ects: "", lp: ""), + (lecture: "", lecturer: "", year: "", sws: "", ects: "", lp: ""), + (lecture: "", lecturer: "", year: "", sws: "", ects: "", lp: ""), + ), + attendance_worth: [ + // Wie regelmäßig hast du die Lehrveranstaltungen besucht? Hat sich der + // Besuch/Nichtbesuch in der Prüfung positiv/negativ ausgewirkt? + ], + literature: [ + // Welche Literatur hast du benutzt (Bücher, Skripten, Vorlesungsmitschriften)? + ], + preparation_time: [ + // Hast du dich alleine/zu mehreren auf die Prüfung vorbereitet? Wie lange? + // Hat es etwas gebracht? + ], + agreements: [ + // Fanden vor der Prüfung Absprachen statt (Form, Inhalt, ...)? + // Wenn ja, welche? Wurden sie eingehalten? + ], + preparations: [ + // Welche Tipps zur Vorbereitung kannst du geben? + // (wichtige/unwichtige Teile des Stoffs, gute Literatur, Lernstil) + ], + examiner_behavior: [ + // Was kannst du zum Prüfungsstil des/der Prüfenden sagen? + // (Prüfungsatmosphäre, (un)klare Fragestellungen, Fragen nach Einzelheiten + // oder eher gröÿere Zusammenhänge, gezielte Zwischenfragen oder lässt + // er/sie dich erzählen, Weiterhelfen bei Unsicherheiten ...) + ], + examiner_recommendation: (none, [ + // Kannst du die Prüfenden weiterempfehlen? + ]), + examinee_behavior: [ + // Welche Ratschläge für das Verhalten in der Prüfung kannst du geben? + ], + doc +) = [ + #let checkbox(checked: false) = if (checked) {$times.square$} else {$square$} + #let input(width: 1fr, name: "", body) = box(width: width, height: 1em, inset: (bottom: 2pt), baseline: 2pt, stroke: (bottom: 0.5pt),align(right, [#body #label(name)])) + #let grid_arguments(it) = { + let g = it.fields() + let _ = g.remove("label") + let _ = g.remove("children") + return g + } + + #show : study + #show : lecture + #show : if date.year() > 0 {date.display("[day].[month].[year]")} + #show : examiner + #show : literature + #show : preparation_time + #show : attendance_worth + #show : agreements + #show : preparations + #show : if exam_duration.minutes() > 0 {exam_duration.minutes()} + #show : examiner_behavior + #show : examinee_behavior + #show : if grade_received > 0.0 {str(grade_received+0.01).slice(0,3).replace(".",",")} + #show : grade_reasonable + #show : examiner_recommendation.at(1) + #show : it => grid(..grid_arguments(it), + ..KIND.values().filter(it => it != KIND.NONE).map(exam_kind => [ + #checkbox(checked: kind == exam_kind) #exam_kind + ]), + [#checkbox(checked: kind not in KIND.values() and kind != "") + #input(width: 1fr)[ #if kind not in KIND.values() [#kind] ] + ] + ) + #show : it => table(..grid_arguments(it), + ..it.fields().children.at(0).children, + ..(attendance.map(lecture => lecture.values()).flatten() + 5*6*([],)).slice(0,count: 5*6) + ) + #show : [ + #h(1fr) + #checkbox(checked: checked_knowledge_gaps == true) ja + #h(0.8cm) + #checkbox(checked: checked_knowledge_gaps == false) nein + ] + + #include "muendliche-pruefung.typ" + + #doc +] + +#oral-exam()[] + -- cgit v1.2.3