vorlagen-muendliche-pruefungen

git clone git://source.orangerot.dev/university/vorlagen-muendliche-pruefungen.git
Log | Files | Refs | README

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