feat(lib, mathe): template lib for Pruefungsfragebogen Mathematik

This commit is contained in:
orangerot 2025-09-05 07:09:47 +02:00
parent 5411332768
commit 9c8819f3fe
2 changed files with 138 additions and 25 deletions

View file

@ -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()[]

View file

@ -8,7 +8,8 @@
#show heading: it => box(inset: (bottom: 1em), it) #show heading: it => box(inset: (bottom: 1em), it)
#let checkbox(checked: false) = if (checked) {$times.square$} else {$square$} #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) #v(4em)
#align(center)[ #align(center)[
@ -17,7 +18,7 @@
#text(size: 16pt)[der Fachschaft Mathematik] #text(size: 16pt)[der Fachschaft Mathematik]
#v(3.5em) #v(3.5em)
#block(width: 14cm)[ #textfield(width: 14cm)[
#align(left)[ #align(left)[
#par(first-line-indent: (amount: 0.5em, all: true))[ #par(first-line-indent: (amount: 0.5em, all: true))[
Dieser Fragebogen dient dazu, den Studierenden, die nach dir die Prüfung Dieser Fragebogen dient dazu, den Studierenden, die nach dir die Prüfung
@ -36,15 +37,15 @@
[ [
_Welchen Studiengang/Profl studierst du?_ _Welchen Studiengang/Profl studierst du?_
], ],
input[ input(name: "study")[
// Hier ist Platz für deinen Kommentar. // Hier ist Platz für deinen Kommentar.
], ],
[ [
_Wann hast du die Prüfung abgelegt (Monat/Jahr)?_ _Wann hast du die Prüfung abgelegt (Monat/Jahr)?_
], ],
input[ input(name: "date")[
// Hier ist Platz für deinen Kommentar. // Hier ist Platz für deinen Kommentar.
] ],
) )
_Was war es für eine Prüfung?_ _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. // 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. // Hier ist Platz für deinen Kommentar.
] ]
_Welche Vorlesungen wurden geprüft und bei wem hast du sie gehört?_ _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. // 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,), )}, rows: (auto,) + 5 * (2.5em,),
table.header[Titel der Vorlesung][Dozent][Wann gehört][SWS][ECTS][LP], table.header[Titel der Vorlesung][Dozent][Wann gehört][SWS][ECTS][LP],
..(lectures + 5*6*([hi],)).slice(0,5*6) ..(lectures + 5*6*([hi],)).slice(0,5*6)
) ) <attendance>
#pagebreak() #pagebreak()
_Wie *regelmäßig* hast du die Lehrveranstaltungen besucht? _Wie *regelmäßig* hast du die Lehrveranstaltungen besucht?
Hat sich der Besuch/Nicht- besuch in der Prüfung positiv/negativ ausgewirkt?_ 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. // 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 == Vorbereitung auf die Prüfung
_Welche *Literatur* hast du benutzt (Bücher, Skripten, Vorlesungsmitschriften)?_ _Welche *Literatur* hast du benutzt (Bücher, Skripten, Vorlesungsmitschriften)?_
#block(height: 2cm)[ #textfield(height: 2cm, name: "literature")[
// Hier ist Platz für deinen Kommentar. // Hier ist Platz für deinen Kommentar.
] ]
_Hast du dich *alleine/zu mehreren* auf die Prüfung vorbereitet? Wie lange? _Hast du dich *alleine/zu mehreren* auf die Prüfung vorbereitet? Wie lange?
Hat es etwas gebracht?_ Hat es etwas gebracht?_
#block(height: 1cm)[ #textfield(height: 1cm, name: "preparation_time")[
// Hier ist Platz für deinen Kommentar. // Hier ist Platz für deinen Kommentar.
] ]
_Fanden vor der Prüfung *Absprachen* statt (Form, Inhalt ...)? Wenn ja, welche? _Fanden vor der Prüfung *Absprachen* statt (Form, Inhalt ...)? Wenn ja, welche?
Wur- den sie eingehalten?_ Wur- den sie eingehalten?_
#block(height: 3cm)[ #textfield(height: 3cm, name: "agreements")[
// Hier ist Platz für deinen Kommentar. // Hier ist Platz für deinen Kommentar.
] ]
_Welche *Tipps* zur Vorbereitung kannst du geben? (wichtige/unwichtige Teile des _Welche *Tipps* zur Vorbereitung kannst du geben? (wichtige/unwichtige Teile des
Stoffs, gute Literatur, Lernstil)_ Stoffs, gute Literatur, Lernstil)_
#block(height: 3cm)[ #textfield(height: 3cm, name: "preparations")[
// Hier ist Platz für deinen Kommentar. // 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 auch auf, worauf der Prüfer hinaus wollte. Kennzeichne bitte Fragen, die
eigentlich nicht direkt zum Stoff gehören._ 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. // 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 (un)klare Fragestellungen, Fragen nach Einzelheiten oder eher gröÿere
Zusammenhänge, gezielte Zwischenfragen oder lässt er/sie dich erzählen, Zusammenhänge, gezielte Zwischenfragen oder lässt er/sie dich erzählen,
Weiterhelfen bei Unsicherhei- ten...)_ Weiterhelfen bei Unsicherhei- ten...)_
#block(height: 3cm)[ #textfield(height: 3cm, name: "examiner_behavior")[
// Hier ist Platz für deinen Kommentar. // Hier ist Platz für deinen Kommentar.
] ]
_Wurde an Stelle deines Wissens auch dein Unwissen abgeprüft?_ _Wurde an Stelle deines Wissens auch dein Unwissen abgeprüft?_
#h(1fr) #[
#checkbox(checked: false) ja #h(1fr)
#h(0.8cm) #checkbox(checked: false) ja
#checkbox(checked: false) nein #h(0.8cm)
#checkbox(checked: false) nein
] <checked_knowledge_gaps>
_Welche *Ratschläge für das Verhalten* in der Prüfung kannst du geben?_ _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. // 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?_ _Welche Note hast du bekommen?_
], ],
input[ input(name: "grade_received")[
// Hier ist Platz für deinen Kommentar. // Hier ist Platz für deinen Kommentar.
], ],
[ [
_Empfandest du sie als angemessen?_ _Empfandest du sie als angemessen?_
], ],
input[ input(name: "grade_reasonable")[
// Hier ist Platz für deinen Kommentar. // Hier ist Platz für deinen Kommentar.
], ],
[ [
_Kannst du die Prüfenden weiterempfehlen?_ _Kannst du die Prüfenden weiterempfehlen?_
], ],
input[ input(name: "examiner_recommendation")[
// Hier ist Platz für deinen Kommentar. // Hier ist Platz für deinen Kommentar.
] ],
) )