diff options
author | orangerot <orangerot@orangerot.dev> | 2025-09-05 07:09:47 +0200 |
---|---|---|
committer | orangerot <orangerot@orangerot.dev> | 2025-09-05 07:17:39 +0200 |
commit | f028dde18dc81dfe5db6f3312a38b81e9f605350 (patch) | |
tree | 49f7969999b4090bfb32875513cd8134b849dc9d | |
parent | f8b904e1a56b8a41e2a8022c200b14cf4c65b3a4 (diff) |
feat(lib, mathe): template lib for Pruefungsfragebogen Mathematik
-rw-r--r-- | muendliche-pruefung-mathematik/lib.typ | 110 | ||||
-rw-r--r-- | muendliche-pruefung-mathematik/muendliche-pruefung.typ | 53 |
2 files changed, 138 insertions, 25 deletions
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>: study + #show <lecture>: lecture + #show <date>: if date.year() > 0 {date.display("[day].[month].[year]")} + #show <examiner>: examiner + #show <literature>: literature + #show <preparation_time>: preparation_time + #show <attendance_worth>: attendance_worth + #show <agreements>: agreements + #show <preparations>: preparations + #show <exam_duration>: if exam_duration.minutes() > 0 {exam_duration.minutes()} + #show <examiner_behavior>: examiner_behavior + #show <examinee_behavior>: examinee_behavior + #show <grade_received>: if grade_received > 0.0 {str(grade_received+0.01).slice(0,3).replace(".",",")} + #show <grade_reasonable>: grade_reasonable + #show <examiner_recommendation>: examiner_recommendation.at(1) + #show <kind>: 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 <attendance>: 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 <checked_knowledge_gaps>: [ + #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()[] + diff --git a/muendliche-pruefung-mathematik/muendliche-pruefung.typ b/muendliche-pruefung-mathematik/muendliche-pruefung.typ index 377087e..fceb0ff 100644 --- a/muendliche-pruefung-mathematik/muendliche-pruefung.typ +++ b/muendliche-pruefung-mathematik/muendliche-pruefung.typ @@ -8,7 +8,8 @@ #show heading: it => box(inset: (bottom: 1em), it) #let checkbox(checked: false) = if (checked) {$times.square$} else {$square$} -#let input(width: 1fr, body) = box(width: width, height: 1em, inset: (bottom: 2pt), baseline: 2pt, stroke: (bottom: 0.5pt),align(right, body)) +#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 textfield(..args, name: "", body) = block(..args)[#body #label(name)] #v(4em) #align(center)[ @@ -17,7 +18,7 @@ #text(size: 16pt)[der Fachschaft Mathematik] #v(3.5em) - #block(width: 14cm)[ + #textfield(width: 14cm)[ #align(left)[ #par(first-line-indent: (amount: 0.5em, all: true))[ Dieser Fragebogen dient dazu, den Studierenden, die nach dir die Prüfung @@ -36,15 +37,15 @@ [ _Welchen Studiengang/Profl studierst du?_ ], - input[ + input(name: "study")[ // Hier ist Platz für deinen Kommentar. ], [ _Wann hast du die Prüfung abgelegt (Monat/Jahr)?_ ], - input[ + input(name: "date")[ // Hier ist Platz für deinen Kommentar. - ] + ], ) _Was war es für eine Prüfung?_ @@ -70,14 +71,14 @@ _Was war es für eine Prüfung?_ // Hier ist Platz für deinen Kommentar. ] ] -) +) <kind> -_Wer hat die Prüfung abgenommen?_ #input[ +_Wer hat die Prüfung abgenommen?_ #input(name: "examiner")[ // Hier ist Platz für deinen Kommentar. ] _Welche Vorlesungen wurden geprüft und bei wem hast du sie gehört?_ -#block(height: 1em)[ +#textfield(height: 1em, name: "lecture")[ // Hier ist Platz für deinen Kommentar. ] @@ -96,13 +97,13 @@ _Welche Vorlesungen wurden geprüft und bei wem hast du sie gehört?_ )}, rows: (auto,) + 5 * (2.5em,), table.header[Titel der Vorlesung][Dozent][Wann gehört][SWS][ECTS][LP], ..(lectures + 5*6*([hi],)).slice(0,5*6) -) +) <attendance> #pagebreak() _Wie *regelmäßig* hast du die Lehrveranstaltungen besucht? Hat sich der Besuch/Nicht- besuch in der Prüfung positiv/negativ ausgewirkt?_ -#block(height: 1cm)[ +#textfield(height: 1cm, name: "attendance_worth")[ // Hier ist Platz für deinen Kommentar. ] @@ -110,25 +111,25 @@ Hat sich der Besuch/Nicht- besuch in der Prüfung positiv/negativ ausgewirkt?_ == Vorbereitung auf die Prüfung _Welche *Literatur* hast du benutzt (Bücher, Skripten, Vorlesungsmitschriften)?_ -#block(height: 2cm)[ +#textfield(height: 2cm, name: "literature")[ // Hier ist Platz für deinen Kommentar. ] _Hast du dich *alleine/zu mehreren* auf die Prüfung vorbereitet? Wie lange? Hat es etwas gebracht?_ -#block(height: 1cm)[ +#textfield(height: 1cm, name: "preparation_time")[ // Hier ist Platz für deinen Kommentar. ] _Fanden vor der Prüfung *Absprachen* statt (Form, Inhalt ...)? Wenn ja, welche? Wur- den sie eingehalten?_ -#block(height: 3cm)[ +#textfield(height: 3cm, name: "agreements")[ // Hier ist Platz für deinen Kommentar. ] _Welche *Tipps* zur Vorbereitung kannst du geben? (wichtige/unwichtige Teile des Stoffs, gute Literatur, Lernstil)_ -#block(height: 3cm)[ +#textfield(height: 3cm, name: "preparations")[ // Hier ist Platz für deinen Kommentar. ] @@ -142,7 +143,7 @@ Beweisen gefragt wurde, wo besonders nachgehakt wurde. Schreibe wenn möglich auch auf, worauf der Prüfer hinaus wollte. Kennzeichne bitte Fragen, die eigentlich nicht direkt zum Stoff gehören._ -_Dauer der Prüfung?_ #input[ +_Dauer der Prüfung?_ #input(name: "exam_duration")[ // Hier ist Platz für deinen Kommentar. ] @@ -150,18 +151,20 @@ _Was kannst du zum *Prüfungsstil* des/der Prüfenden sagen? (Prüfungsatmosphä (un)klare Fragestellungen, Fragen nach Einzelheiten oder eher gröÿere Zusammenhänge, gezielte Zwischenfragen oder lässt er/sie dich erzählen, Weiterhelfen bei Unsicherhei- ten...)_ -#block(height: 3cm)[ +#textfield(height: 3cm, name: "examiner_behavior")[ // Hier ist Platz für deinen Kommentar. ] _Wurde an Stelle deines Wissens auch dein Unwissen abgeprüft?_ -#h(1fr) -#checkbox(checked: false) ja -#h(0.8cm) -#checkbox(checked: false) nein +#[ + #h(1fr) + #checkbox(checked: false) ja + #h(0.8cm) + #checkbox(checked: false) nein +] <checked_knowledge_gaps> _Welche *Ratschläge für das Verhalten* in der Prüfung kannst du geben?_ -#block(height: 3.5cm)[ +#textfield(height: 3.5cm, name: "examinee_behavior")[ // Hier ist Platz für deinen Kommentar. ] @@ -171,20 +174,20 @@ _Welche *Ratschläge für das Verhalten* in der Prüfung kannst du geben?_ [ _Welche Note hast du bekommen?_ ], - input[ + input(name: "grade_received")[ // Hier ist Platz für deinen Kommentar. ], [ _Empfandest du sie als angemessen?_ ], - input[ + input(name: "grade_reasonable")[ // Hier ist Platz für deinen Kommentar. ], [ _Kannst du die Prüfenden weiterempfehlen?_ ], - input[ + input(name: "examiner_recommendation")[ // Hier ist Platz für deinen Kommentar. - ] + ], ) |