diff options
author | orangerot <orangerot@orangerot.dev> | 2025-09-07 10:28:58 +0200 |
---|---|---|
committer | orangerot <orangerot@orangerot.dev> | 2025-09-08 14:15:37 +0200 |
commit | a81e16b3e79fd1b6f2840de9635ca8a6eab8f7c8 (patch) | |
tree | 582547f91668da3a1b54146689c4b6bcedb22ef1 /muendliche-nachpruefung/lib.typ | |
parent | f028dde18dc81dfe5db6f3312a38b81e9f605350 (diff) |
style(lib, nachpruefung): reduce redundancy by include bachelor.typ in lib
Diffstat (limited to 'muendliche-nachpruefung/lib.typ')
-rw-r--r-- | muendliche-nachpruefung/lib.typ | 163 |
1 files changed, 33 insertions, 130 deletions
diff --git a/muendliche-nachpruefung/lib.typ b/muendliche-nachpruefung/lib.typ index 46b6452..5e725e8 100644 --- a/muendliche-nachpruefung/lib.typ +++ b/muendliche-nachpruefung/lib.typ @@ -32,142 +32,45 @@ ], 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: "✎" + #let checkbox(checked: false) = if (checked) {$times.square$} else {$square$} - #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: ""), + ..attendance + ) - #let events = ( - "Vorlesung": (year: "", did_attend: ""), - "Übung": (year: "", did_attend: ""), - "Tutorium": (year: "", did_attend: ""), - ..attendance - ) - #table(columns: (7.4cm,2.4cm,8.2cm), - table.header( - [Veranstaltung ],[Jahr],[regelmäßig besucht?]), + #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() + (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) + #include "bachelor.typ" - #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 ] |