Prototype better syntax for QCM
This commit is contained in:
parent
a04f6296cf
commit
f08c30f12b
BIN
exam/demo.pdf
BIN
exam/demo.pdf
Binary file not shown.
@ -1,4 +1,4 @@
|
|||||||
#import "@y-sec/exam:0.1.0": exam, question, reponse, choix
|
#import "@y-sec/exam:0.1.0": exam, question, reponse, qcm
|
||||||
#show: exam(
|
#show: exam(
|
||||||
title: "Examen en Typst",
|
title: "Examen en Typst",
|
||||||
subtitle: "Y-Security - Typst Essentials",
|
subtitle: "Y-Security - Typst Essentials",
|
||||||
@ -57,6 +57,12 @@ de la fonction `exam`. La valeur par défaut est:
|
|||||||
|
|
||||||
#question[Préféréz-vous les questions à choix multiples ?]
|
#question[Préféréz-vous les questions à choix multiples ?]
|
||||||
|
|
||||||
|
#qcm[
|
||||||
|
- Clairement oui <yes>
|
||||||
|
- Pas trop
|
||||||
|
- La réponse D <yes>
|
||||||
|
]
|
||||||
|
|
||||||
= Comptage des points
|
= Comptage des points
|
||||||
|
|
||||||
#question(points: 5)[Comment changer la valeur en points de la question ?]
|
#question(points: 5)[Comment changer la valeur en points de la question ?]
|
||||||
|
21
exam/lib.typ
21
exam/lib.typ
@ -9,6 +9,7 @@
|
|||||||
#let enable_notes = { compile_mode == "notes" };
|
#let enable_notes = { compile_mode == "notes" };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#let points_counter(h) = {
|
#let points_counter(h) = {
|
||||||
// Find the first heading at a level equal or lower (more important) than this one
|
// Find the first heading at a level equal or lower (more important) than this one
|
||||||
let headings_after = query(selector(heading)
|
let headings_after = query(selector(heading)
|
||||||
@ -26,10 +27,24 @@
|
|||||||
// Rend les réponses visibles seulement si compilé avec `--input mode=solution`
|
// Rend les réponses visibles seulement si compilé avec `--input mode=solution`
|
||||||
#let solution(content) = if enable_solutions { set text(fill: olive); content } else { hide(content) }
|
#let solution(content) = if enable_solutions { set text(fill: olive); content } else { hide(content) }
|
||||||
|
|
||||||
#let choix(rep, content) = {
|
#let qcm(qcm_list) = {
|
||||||
if rep and solution_mode { "☒ " } else { "☐ " }
|
//let checked_box = "☑";
|
||||||
content
|
//let unchecked_box = "☐";
|
||||||
|
let checked_box = box(stroke: black, outset: 0.2em, "X") + " ";
|
||||||
|
let unchecked_box = box(stroke: black, outset: 0.2em, hide("X")) + " ";
|
||||||
|
set list(marker: unchecked_box, indent: 2em)
|
||||||
|
if enable_solutions {
|
||||||
|
show <yes>: i => {
|
||||||
|
show box: b => checked_box;
|
||||||
|
set text(fill: olive);
|
||||||
|
i
|
||||||
|
};
|
||||||
|
qcm_list
|
||||||
|
} else {
|
||||||
|
qcm_list
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#let exam(title: "Exam", course: none, date: none, class: none,
|
#let exam(title: "Exam", course: none, date: none, class: none,
|
||||||
year: none, author: none, subtitle: none, indications: none,
|
year: none, author: none, subtitle: none, indications: none,
|
||||||
|
Loading…
Reference in New Issue
Block a user