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 | |
parent | f028dde18dc81dfe5db6f3312a38b81e9f605350 (diff) |
style(lib, nachpruefung): reduce redundancy by include bachelor.typ in lib
-rw-r--r-- | muendliche-nachpruefung/bachelor.typ | 230 | ||||
-rw-r--r-- | muendliche-nachpruefung/lib.typ | 163 |
2 files changed, 165 insertions, 228 deletions
diff --git a/muendliche-nachpruefung/bachelor.typ b/muendliche-nachpruefung/bachelor.typ index b753b38..a70aacc 100644 --- a/muendliche-nachpruefung/bachelor.typ +++ b/muendliche-nachpruefung/bachelor.typ @@ -2,123 +2,157 @@ #set text(lang: "de", size: 10.5pt) #set par(justify: true, leading: .5em, spacing: 0.5em) #set block(spacing: 0pt) -#set table(inset: (top: 2pt, x: 8pt), stroke: .5pt) +#set table(inset: (top: 2pt, bottom: 4pt, x: 8pt), stroke: .5pt) #set grid(inset: (y: 3pt, x: 6pt)) #set grid.vline(stroke: .5pt) -#let checkbox(b) = if (b) {$times.square$} else {$square$} #set linebreak(justify: true) -#show underline: it => box(it) +#let checkbox(checked: false) = if (checked) {$times.square$} else {$square$} +#let input(width: 1fr, name: "", body) = box(width: width, inset: (bottom: 2pt), baseline: 2pt, stroke: (bottom: (dash: "dotted")),align(right, [#body #label(name)])) +#let textarea(name: "", body) = [#body #label(name)] #show emoji.pencil: "✎" -#let pruefungsrahmen = ( - "Prüfungsdatum": [], - "PrüferIn (Prof.)": [], - "BeisitzerIn": [], -) - -#let modul = "" -#let bestanden = none -#let pruefungsdauer_minuten = 0 - #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 + 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. + *mündlichen Vordiplomsprüfungen* im Informatikstudium + ] +) -Bitte verwende zum Ausfüllen einen schwarzen Stift. +#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. -Das erleichtert das Einscannen. + Bitte verwende zum Ausfüllen einen schwarzen Stift. -#for (key,value) in pruefungsrahmen {box(inset: (top: 1.2em), [*#key:*#box(width: 1fr, repeat[.])#value])} + Das erleichtert das Einscannen. -], -[ -#block(width: 7cm, inset: .3cm, align(center, [ - Barcode: -#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:* \ -#let modules = ( - "Algo I", - "Algo II", - "Betriebssysteme", - "GdI", - "HM", - "KomDat", - "Programmierparadigmen", - "SWT I", - "Theoretische Grundlagen der Informatik", - "TI", + #box(height: 2em, align(bottom)[ + *Prüfungsdatum:*#input(name: "date")[ + // Hier ist Platz für deinen Kommentar. + ] + ]) + #box(height: 2em, align(bottom)[ + *PrüferIn (Prof.):*#input(name: "examiner")[ + // Hier ist Platz für deinen Kommentar. + ] + ]) + #box(height: 2em, align(bottom)[ + *BeisitzerIn:*#input(name: "assistant")[ + // Hier ist Platz für deinen Kommentar. + ] + ]) + ], + [ + #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:* \ + #set box(height: .5em, inset: (left: 5pt)) + #textarea(name: "lecture", { + // box[#checkbox(checked: true) Dein Fach] + box[#checkbox() Algo I] + box[#checkbox() Algo II] + box[#checkbox() Betriebssysteme] + box[#checkbox() GdI] + box[#checkbox() HM] + box[#checkbox() KomDat] + box[#checkbox() Programmierparadigmen] + box[#checkbox() SWT I] + box[#checkbox() Theoretische Grundlagen der Informatik] + box[#checkbox() TI] + }) + ] ) -#for (module) in modules {box(inset: (right: 5pt))[#checkbox(false) #module]} -]) -#table(columns: (7.4cm,2.4cm,8.2cm), -table.header( + +#table(columns: (7.4cm,2.4cm,8.2cm), table.header( [Veranstaltung ],[Jahr],[regelmäßig besucht?]), - [*Vorlesung*#v(.2cm)],[ ],[ ], - [*Übung* #v(.2cm)],[ ],[ ], - [*Tutorium* #v(.2cm)],[ ],[ ], -) + [Vorlesung ],[ ],[ ], + [Übung ],[ ],[ ], + [Tutorium ],[ ],[ ], +) <attendance> -#grid(columns: 2*(1fr,), grid.vline(x:1), inset: (y: .5cm), - [*Bestanden? #checkbox(bestanden == true) Ja / #checkbox(bestanden == false) Nein*], +#grid(columns: 2*(1fr,), inset: (y: .5cm), grid.vline(x:1), + textarea(name: "did_pass")[ + *Bestanden? + #checkbox(checked: false) Ja / + #checkbox(checked: false) Nein* + ], box(width: 6cm)[ - *Prüfungsdauer: #box(width: 1fr, repeat[.]) - #if (pruefungsdauer_minuten > 0) {pruefungsdauer_minuten} + *Prüfungsdauer: #input(name: "exam_duration")[ + // Hier ist Platz für deinen Kommentar. + ] 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]? -], -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)] -], -[ - #emoji.pencil Fanden vor der Prüfung #underline[Absprachen] zu Form oder - Inhalt statt? Wurden sie #underline[eingehalten]? -], -[ - #emoji.pencil Kannst Du Ratschläge für das #underline[Verhalten in der Prüfung] geben? -], -[ - #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?)] -] + [ + #emoji.pencil Wie lange und wie hast Du Dich \ + #underline[alleine bzw. mit anderen vorbereitet]? + #textarea(name: "preparation_time")[ + // Hier ist Platz für deinen Kommentar. + ] + ], + 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)] + #textarea(name: "preparations")[ + // Hier ist Platz für deinen Kommentar. + ] + ], + [ + #emoji.pencil Fanden vor der Prüfung #underline[Absprachen] zu Form oder + Inhalt statt? Wurden sie #underline[eingehalten]? + #textarea(name: "agreements")[ + // Hier ist Platz für deinen Kommentar. + ] + ], + [ + #emoji.pencil Kannst Du Ratschläge für das \ #underline[Verhalten in der Prüfung] geben? + #textarea(name: "examinee_behavior")[ + // Hier ist Platz für deinen Kommentar. + ] + ], + [ + #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?) + ] + #textarea(name: "examiner_behavior")[ + // Hier ist Platz für deinen Kommentar. + ] + ] ) #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) +#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? - #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? -] +#colbreak() +// Hier ist Platz für deinen Kommentar. 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 ] |