lib.typ (2393B)
1 // SPDX-FileCopyrightText: 2025 Gero Beckmann <orangerot@orangerot.dev> 2 // 3 // SPDX-License-Identifier: MIT 4 5 #let event(name: "", semester: "", did_attend: "") = ( 6 strong(name), semester, did_attend 7 ) 8 9 #let exam-report( 10 lecture: "", // Fach 11 date: datetime(year: 0, month: 1, day: 1), // Prüfungsdatum 12 examiner: "", // PrüferIn (Prof) 13 assistant: "", // BeisitzerIn 14 did_pass: none, // Bestanden? true || false 15 exam_duration: duration(minutes: 0), // Prüfungsdauer 16 attendance: ( 17 /* Veranstaltung, Jahr, regelmäßig besucht? */ 18 event(name: "Vorlesung", semester: "", did_attend: ""), 19 event(name: "Übung", semester: "", did_attend: ""), 20 event(name: "Tutorium", semester: "", did_attend: ""), 21 ), 22 preparation_time: [ 23 // Wie lange und wie hast Du Dich alleine bzw. mit anderen vorbereitet? 24 ], 25 agreements: [ 26 // Fanden vor der Prüfung Absprachen zu Form oder Inhalt statt? Wurden sie eingehalten? 27 ], 28 preparations: [ 29 // Welche Tips zur Vorbereitung kannst Du geben? 30 ], 31 examiner_behavior: [ 32 // Wie war der Prüfungsstil des Prüfers / der Prüferin? 33 ], 34 examinee_behavior: [ 35 // Kannst Du Ratschläge für das Verhalten in der Prüfung geben? 36 ], 37 doc 38 ) = [ 39 #let checkbox(checked: false) = if (checked) {$times.square$} else {$square$} 40 41 #show <date>: if date.year() > 0 {date.display("[day].[month].[year]")} 42 #show <examiner>: examiner 43 #show <assistant>: assistant 44 #show <exam_duration>: if exam_duration.minutes() > 0 [#exam_duration.minutes()] 45 #show <preparation_time>: preparation_time 46 #show <agreements>: agreements 47 #show <preparations>: preparations 48 #show <examinee_behavior>: examinee_behavior 49 #show <examiner_behavior>: examiner_behavior 50 #show <did_pass>: [ 51 *Bestanden? 52 #checkbox(checked: did_pass == true) Ja / 53 #checkbox(checked: did_pass == false) Nein* 54 ] 55 #show <lecture>: it => if lecture.len() > 0 { 56 box[#checkbox(checked: true) #lecture] 57 } else {it} 58 #show <attendance>: it => { 59 let g = it.fields() 60 let _ = g.remove("children") 61 let _ = g.remove("label") 62 table(..g, 63 ..it.fields().children.at(0).children, 64 ..(attendance + 3*(event(),)).slice(0,3).flatten() 65 ) 66 } 67 68 #include "muendliche-nachpruefung.typ" 69 70 #doc 71 ] 72