Chapitre 3.13 · Partie II · Le métier
Configuration : exercices
Les styles d’exercice (exerciseStyles) et les réglages d’exercices du livre (exercises) : pastilles de numéro, caractère de la consigne, lettres et cases des propositions, trous, réponses vrai/faux, exercices à relier, banques de mots, zones d’écriture, grilles, division posée, marques de difficulté, icônes, couleur des réponses, emplacement des solutions, livre du professeur et éditions à l’écran
En bref
Cette page liste tous les réglages de l’aspect des exercices. Un style d’exercice décide comment s’imprime le numéro, comment les propositions sont désignées, à quoi ressemble un trou à compléter, quelle réglure ont les lignes où écrire et comment se dessinent les grilles et les opérations posées. Les réglages du livre décident où s’impriment les solutions et si le livre est l’édition de l’élève ou celle du professeur. Ils décident aussi comment le lecteur répond aux exercices à l’écran. La page Exercices explique comment écrire les exercices eux-mêmes.
#Styles d’exercice
La propriété exerciseStyles déclare les styles nommés qu’un exercice choisit avec :::exercise{style="…"}. Un style est la forme d’une famille d’exercices ; les questions et les réponses restent dans le Markdown (voir Exercices). Un style, exercise, est fourni par défaut : le délimiteur fonctionne donc sans aucune configuration. Déclarer exerciseStyles le remplace, et le premier style déclaré est celui que prend un exercice sans style. Tous les champs sont facultatifs, et les valeurs par défaut suivent la langue du document là où les usages scolaires diffèrent : lettres des propositions, lettres vrai/faux, disposition de la division posée, mots imprimés.
const config: PostextConfig = {
exerciseStyles: [
{
id: 'activite',
box: 'cadre-activite',
number: { shape: 'disc', background: { hex: '#2a5ea8', model: 'hex' } },
instruction: { fontFamily: 'Source Sans 3' },
options: { marker: 'circle' },
blank: { look: 'dots', width: 'answer' },
area: { kind: 'seyes', lines: 4 },
level: { glyph: '★', empty: '☆' },
icons: { binome: { glyph: '👥' } },
},
{ id: 'qcm', extends: 'activite', options: { layout: 'row', columns: 4 } },
],
};| Propriété | Type | Par défaut | Description |
|---|---|---|---|
id | string | — | Identifiant choisi par :::exercise{style="…"}. Un identifiant inconnu se replie sur le premier style et est signalé (exerciseUnknownStyle). |
name | string | id | Nom lisible (interface de l’éditeur seulement). |
extends | string | — | L’identifiant du style sur lequel celui-ci se base. Chaque groupe (number, options, blank…) est fusionné champ par champ, icons identifiant par identifiant. |
box | string | — | Un identifiant de calloutStyles pour le cadre de l’exercice : fond, bordure, bande, marge intérieure, placement, coupure. Sans lui, l’exercice est composé dans le texte courant, sans cadre, et reste entier sur une page. |
number | object | — | L’impression du numéro. Voir Numéro. |
instruction | object | — | Le caractère de la consigne. Voir Consigne. |
options | object | — | Les propositions d’une question à choix. Voir Propositions. |
blank | object | — | L’impression d’un [[…]]. Voir Trous. |
trueFalse | object | — | Les réponses d’une affirmation vrai/faux. Voir Vrai ou faux. |
match | object | — | Deux colonnes à relier. Voir Relier. |
bank | object | — | La banque de mots. Voir Banque de mots. |
area | object | — | Les zones d’écriture. Voir Zone d’écriture. |
grid | object | — | Les cases des mots mêlés, des mots croisés et des opérations. Voir Grilles. |
arithmetic | object | — | Les opérations posées. Voir Calcul posé. |
level | object | — | Les marques de difficulté. Voir Difficulté. |
icons | Record<string, ExerciseIcon> | {} | Les icônes d’activité par identifiant, nommées par l’attribut icon d’un délimiteur. Voir Icônes. |
answers | object | — | L’impression des réponses dans un livre du professeur, dans un item modèle et dans les solutions. Voir Réponses. |
solutions | ExerciseSolutionsConfig | — | Les exercises.solutions du livre pour les exercices de ce style : seuls les champs fixés ici changent. |
digital | object | — | Les couleurs des éditions à l’écran. Voir Couleurs à l’écran. |
marginTop | Dimension | 1em | Espace au-dessus d’un exercice sans box. |
marginBottom | Dimension | 1em | Espace au-dessous d’un exercice sans box. |
itemSpacing | Dimension | 0.25em | Espace entre deux items : propositions, questions, affirmations, paires. |
#Numéro
number règle le numéro de l’exercice. Un numéro nu est en gras, dans la couleur principale, suivi d’un point ; un numéro dans une forme est un chiffre blanc dans un disque, un carré ou un carré arrondi de la couleur principale, sans rien après.
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
show | boolean | true | Imprimer le numéro. Le compte avance dans tous les cas. |
label | boolean | string | false | Un mot devant le numéro : true prend le mot de la langue du document (Exercice, Exercise, Ejercicio, Übung, 练习, 練習, تمرين…), une chaîne est le mot lui-même ('Activité'). |
shape | 'none' | 'disc' | 'square' | 'rounded' | 'none' | La forme dans laquelle le numéro est composé. |
color | ColorValue | blanc sur une forme, sinon la couleur principale | La couleur du numéro. |
background | ColorValue | la couleur principale | Le remplissage de la forme. |
fontFamily | string | celle du texte environnant | La famille du numéro. |
fontSize | Dimension | 1em | Le corps du numéro, l’em étant celui de la consigne. |
fontWeight | number | 700 | À partir de 600, le numéro est en gras. |
suffix | string | '.', rien sur une forme | Imprimé après un numéro nu et son mot : '.', ')', '、'. |
template | string | '{n}' | Ce que dit le numéro : {n} le compte de l’exercice, {h1} et {h2} les numéros du chapitre et de la section ('{h1}.{n}' imprime 3.4). |
resetOn | 'never' | 'h1' … 'h6' | 'h1' | Le niveau de titre qui fait repartir le compte ; 'never' compte sur tout le livre. |
counter | string | 'exercise' | Le compteur que le style fait avancer. Les styles qui nomment un même compteur le partagent ; un style doté de son propre compteur ('revision') numérote ses exercices à part. |
format | ResourceCounterFormat | 'decimal' | Les chiffres de {n}, comme pour un compteur de ressources : 'roman-upper', 'alpha-lower', 'simp-chinese-informal' (一, 二), 'circled-decimal' (①, ②), 'arabic-indic'… |
#Consigne
instruction règle les paragraphes qui ouvrent l’exercice. Les champs non définis prennent la valeur du texte courant.
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
bold | boolean | true | Composer la consigne en gras. |
italic | boolean | false | La composer en italique. |
color | ColorValue | celle du texte | Sa couleur, passages en gras compris. |
fontFamily | string | celle du texte | Sa famille : une consigne en linéale sur un texte à empattements est courante dans les manuels scolaires. |
fontSize | Dimension | celle du texte | Son corps. |
#Propositions
options règle les propositions d’une question à choix (- [ ] …).
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
labels | ResourceCounterFormat | 'none' | selon la langue | La façon de désigner les propositions : 'alpha-lower' (a, b, c), 'alpha-upper' en chinois (A, B, C), 'katakana' en japonais (ア, イ, ウ), 'abjad' en arabe (أ, ب, ج). Aussi 'decimal', 'katakana-iroha', 'circled-decimal'… 'none' n’imprime aucune lettre. |
prefix | string | '' | Avant la lettre : '(' pour (a). |
suffix | string | ')' ; '.' en chinois, rien en japonais | Après la lettre. |
marker | 'none' | 'box' | 'circle' | 'none' | Une case ou un rond à cocher devant chaque proposition. Avec 'none', le lecteur entoure la lettre. |
layout | 'stack' | 'row' | 'stack' | 'stack' : une proposition par ligne, ses lignes suivantes alignées sous son texte. 'row' : les propositions côte à côte. L’attribut columns=n d’un délimiteur les met aussi en rangées. |
columns | number | toutes | Propositions par rangée dans la disposition 'row' (6 au plus). |
shuffle | boolean | false | Imprimer les propositions mélangées, dans le même ordre dans toutes les sorties et dans le corrigé. |
indent | Dimension | 1em | Le retrait des propositions depuis le bord du texte, pour une question sans énoncé. |
bracket | boolean | false | Des parenthèses ( ) à la fin de l’énoncé de chaque question pour y écrire la lettre, comme dans les contrôles chinois et japonais. Un livre du professeur y écrit la lettre. |
#Trous
blank règle l’impression d’un [[…]] dans le texte de l’élève : un espace à la taille de la réponse, avec une ligne, des pointillés ou une case, la réponse elle-même n’étant pas peinte.
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
look | 'line' | 'dots' | 'box' | 'none' | 'line' | Une ligne où écrire, une ligne de points, une case ou un espace vide. |
width | 'answer' | 'longest' | Dimension | 'longest' | 'longest' : tous les trous de l’exercice ont la largeur de sa plus longue réponse, et aucun trou ne trahit sa réponse. 'answer' : chacun a la largeur de sa propre réponse. Une longueur : cette largeur pour tous. Le {width=N} d’un trou l’emporte. |
extra | Dimension | 1.5em | Espace ajouté à la largeur de la réponse, en em entiers. |
minWidth | Dimension | 3em | La largeur minimale d’un trou. |
color | ColorValue | noir | La couleur de la ligne, des points ou de la case. Quand elle est définie, elle colore aussi les cases et les ronds à cocher et les cadres des mots de la banque, qui sont sinon dans la couleur principale. |
weight | Dimension | 0.6pt | L’épaisseur de la ligne. |
#Vrai ou faux
trueFalse règle les réponses en fin d’affirmation.
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
labels | [string, string] | selon la langue | Les deux réponses : ['V', 'F'] en français, en espagnol, en catalan, en italien et en portugais ; T F en anglais ; R F en allemand ; √ × en chinois ; ○ × en japonais ; صح خطأ en arabe. |
look | 'boxes' | 'bracket' | 'boxes' | 'boxes' : chaque lettre suivie d’une case à cocher, en bout de ligne. 'bracket' : un seul espace où écrire la réponse. |
#Relier
match règle un exercice de paires.
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
look | 'dots' | 'letters' | 'dots' | 'dots' : deux colonnes avec un point à côté de chaque élément, à relier par un trait. 'letters' : la colonne de droite reçoit des lettres et chaque élément de gauche un espace pour la lettre. |
gap | Dimension | 4em | L’espace entre les deux colonnes. |
dotSize | Dimension | 0.35em | Le diamètre des points. |
color | ColorValue | la couleur principale | Les points, et le cadre de la banque de mots. |
#Banque de mots
bank règle la boîte de mots d’un exercice à trous avec bank ou ::bank[…], et de tout exercice de classement. La boîte se place là où est écrite la ligne ::bank, sinon sous la consigne.
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
box | string | un cadre dans la couleur de match | Un identifiant de calloutStyles pour la boîte de la banque. |
order | 'shuffle' | 'alpha' | 'written' | 'shuffle' | Les mots mélangés (à partir de la graine), dans l’ordre alphabétique de la langue du document ou dans l’ordre écrit. |
separator | string | une espace cadratin | Entre deux mots. Chaque mot est composé dans une pastille au cadre fin. |
#Zone d’écriture
area règle l’espace sous une question à réponse libre, sous une phrase en désordre et dans les colonnes d’un exercice de classement.
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
kind | 'lines' | 'dots' | 'grid' | 'seyes' | 'tianzige' | 'box' | 'none' | 'lines' | Des lignes, une rangée de points, du papier quadrillé, la réglure Seyès des cahiers français, des carrés 田字格, un cadre vide ou un espace blanc. L’attribut area d’un délimiteur l’emporte. |
lines | number | 3 | La hauteur en lignes. L’attribut lines d’un délimiteur l’emporte. |
spacing | Dimension | 1,35 fois l’interligne du texte (1,2 pour les grilles) | La distance entre deux lignes. |
color | ColorValue | un gris clair | La couleur de la réglure. |
weight | Dimension | 0.5pt | L’épaisseur de la réglure. |
#Grilles
grid règle les cases des mots mêlés, des mots croisés et des opérations posées.
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
cell | Dimension | 1.6em | Le côté d’une case. |
fontFamily | string | celle du texte | La famille des lettres et des chiffres. |
fontSize | Dimension | 0,58 du côté de la case | La taille des lettres et des chiffres, un em étant celui du texte. |
color | ColorValue | celle du texte | La couleur des lettres et des chiffres. |
rule | ColorValue | un gris moyen | Les filets des cases. |
ruleWidth | Dimension | 0.6pt | Leur épaisseur. |
blocked | ColorValue | — | Le fond des cases de la grille de mots croisés qu’aucun mot n’occupe. Sans lui, la grille n’imprime que les cases de ses mots. |
uppercase | boolean | true | Composer en capitales les lettres des mots mêlés et des mots croisés, selon les règles de casse de la langue du document. |
#Calcul posé
arithmetic règle les opérations posées.
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
division | 'bracket' | 'potence' | 'inline' | selon la langue | La division posée. 'bracket' : le diviseur à gauche du dividende, un crochet au-dessus de celui-ci, le quotient en haut (anglais, chinois, japonais, arabe, et toute langue sans usage propre). 'potence' : le diviseur à droite du dividende sous la potence, le quotient sous le diviseur (français, espagnol, catalan, italien, portugais). 'inline' : 864 : 4 = avec le quotient sur la ligne et les étapes en dessous (allemand). |
columns | number | 4 | Opérations par rangée, moins quand la colonne est trop étroite. |
#Difficulté
level règle les marques que l’attribut level d’un délimiteur imprime après le numéro, en plus petit corps.
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
glyph | string | '●' | Un niveau atteint : '★', '■'. |
empty | string | '○' | Un niveau non atteint ; '' n’en imprime aucun. |
max | number | 3 | Le niveau le plus haut : level=2 avec max: 3 imprime ●●○. |
color | ColorValue | la couleur principale | La couleur des marques. |
#Icônes
icons associe un identifiant à une icône d’activité (oral, écrit, travail en binôme, écoute, calculatrice), imprimée après le numéro quand un délimiteur la nomme : icon="binome".
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
glyph | string | — | Un caractère à imprimer : '✎', '🎧', un glyphe d’une police d’icônes. |
fontFamily | string | — | La famille d’une police d’icônes. |
color | ColorValue | — | La couleur de l’icône. |
resourceId | string | — | Une ressource bitmap ou SVG pour l’icône. |
alt | string | — | Ce que représente l’icône, pour les lecteurs d’écran et le PDF balisé. |
size | number | 0.75 | La hauteur de l’icône en em de la consigne : par défaut, celle d’une capitale. |
Une icône s’imprime comme un symbole en ligne après le numéro : l’image de resourceId si elle en nomme une, sinon le glyph dans fontFamily et en color (celle du texte par défaut). Elle repose sur la ligne de base de la consigne, haute de size em, et son alt est lu à sa place.
#Réponses
answers règle les réponses partout où elles apparaissent : livre du professeur, item modèle d’un exercice avec example, ronds et cases noircies, traits entre les paires, lettres et chiffres dans les grilles.
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
color | ColorValue | #d6246e, un rouge magenta | La couleur des réponses, en surimpression comme dans un livre du professeur. |
fontFamily | string | celle du texte | Un caractère pour les réponses : une écriture manuscrite est courante. |
italic | boolean | false | Composer en italique les réponses écrites dans les trous. |
#Couleurs à l’écran
digital règle l’affichage d’une réponse vérifiée dans la visionneuse HTML et les livres EPUB.
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
correctColor | ColorValue | un vert (#1e8e3e) | Une bonne réponse. |
wrongColor | ColorValue | un rouge (#c5221f) | Une mauvaise réponse. |
#Réglages du livre
La propriété exercises contient les réglages de tout le livre : l’édition, l’emplacement des solutions, la graine de tous les mélanges et les éditions à l’écran. Un livre qui ne fixe ni exercises ni exerciseStyles se met en page et se hache comme avant.
const config: PostextConfig = {
exercises: {
edition: 'student',
solutions: { placement: 'chapterEnd', layout: 'key' },
seed: 3,
digital: { check: 'instant' },
},
};| Propriété | Type | Par défaut | Description |
|---|---|---|---|
edition | 'student' | 'teacher' | 'student' | 'teacher' imprime chaque réponse à sa place, dans la couleur de answers : un livre du professeur tiré du texte de l’élève. |
solutions | ExerciseSolutionsConfig | — | Où et comment s’impriment les solutions. Voir Solutions. |
seed | number | 1 | La graine de tous les mélanges : propositions, colonnes de droite, items à ordonner, mots en désordre, banques, lettres de remplissage des mots mêlés. Changez-la pour obtenir un autre sujet d’un contrôle ; l’imprimé, l’écran et le corrigé restent d’accord. |
digital | object | — | La visionneuse HTML et les livres EPUB. Voir Éditions à l’écran. |
#Solutions
exercises.solutions, et le solutions d’un style par-dessus pour les exercices de ce style.
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
placement | 'none' | 'after' | 'inverted' | 'chapterEnd' | 'directive' | 'none' | 'none' : aucune solution à l’impression. 'after' : après chaque exercice, en plus petit corps. 'inverted' : après chaque exercice, tête-bêche. 'chapterEnd' : en fin de chapitre, sous heading. 'directive' : là où se trouve une ligne :::solutions. |
box | string | un encadré sans cadre, en plus petit corps | Un identifiant de calloutStyles pour l’encadré d’une solution et pour la liste des solutions d’un chapitre. |
heading | string | le mot de la langue du document | Le titre des solutions en fin de chapitre : Corrigés, Solutions, Soluciones, Solucions, Lösungen, Soluzioni, Gabarito, 参考答案, 解答, الحلول. Une ligne :::solutions{title="…"} fixe le sien. |
layout | 'key' | 'full' | 'full' | 'key' : les réponses seules (1 b · 2 eau). 'full' : le corrigé, puis la :::solution de l’exercice. |
#Éditions à l’écran
exercises.digital règle le comportement des exercices dans la visionneuse HTML et dans les livres EPUB.
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
interactive | boolean | true | Des exercices auxquels le lecteur peut répondre. false les montre tels qu’imprimés. |
persist | boolean | true | Conserver les réponses du lecteur dans le navigateur, livre par livre. |
check | 'button' | 'instant' | 'button' | 'button' : les réponses sont vérifiées quand le lecteur le demande. 'instant' : chaque réponse est vérifiée dès qu’elle est donnée. |
L’écran peut avoir ses propres réglages d’exercices : htmlViewer.overrides accepte aussi exercises et exerciseStyles, fusionnés avec ceux du livre avant la mise en page de la visionneuse HTML. L’imprimé peut ainsi garder ses solutions en fin de chapitre pendant que l’écran les cache, ou l’écran peut supprimer les zones d’écriture dont un lecteur n’a que faire.
const config: PostextConfig = {
htmlViewer: {
overrides: {
exercises: { solutions: { placement: 'none' } },
exerciseStyles: [{ id: 'exercise', area: { kind: 'none' }, blank: { minWidth: { value: 6, unit: 'em' } } }],
},
},
};