Aller au contenu principal

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

Mis à jour 2026-10-2413 minDans le chapitre 3 Configurationenescadefritptzhjaar

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éTypePar défautDescription
idstring—Identifiant choisi par :::exercise{style="…"}. Un identifiant inconnu se replie sur le premier style et est signalé (exerciseUnknownStyle).
namestringidNom lisible (interface de l’éditeur seulement).
extendsstring—L’identifiant du style sur lequel celui-ci se base. Chaque groupe (number, options, blank…) est fusionné champ par champ, icons identifiant par identifiant.
boxstring—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.
numberobject—L’impression du numéro. Voir Numéro.
instructionobject—Le caractère de la consigne. Voir Consigne.
optionsobject—Les propositions d’une question à choix. Voir Propositions.
blankobject—L’impression d’un [[…]]. Voir Trous.
trueFalseobject—Les réponses d’une affirmation vrai/faux. Voir Vrai ou faux.
matchobject—Deux colonnes à relier. Voir Relier.
bankobject—La banque de mots. Voir Banque de mots.
areaobject—Les zones d’écriture. Voir Zone d’écriture.
gridobject—Les cases des mots mêlés, des mots croisés et des opérations. Voir Grilles.
arithmeticobject—Les opérations posées. Voir Calcul posé.
levelobject—Les marques de difficulté. Voir Difficulté.
iconsRecord<string, ExerciseIcon>{}Les icônes d’activité par identifiant, nommées par l’attribut icon d’un délimiteur. Voir Icônes.
answersobject—L’impression des réponses dans un livre du professeur, dans un item modèle et dans les solutions. Voir Réponses.
solutionsExerciseSolutionsConfig—Les exercises.solutions du livre pour les exercices de ce style : seuls les champs fixés ici changent.
digitalobject—Les couleurs des éditions à l’écran. Voir Couleurs à l’écran.
marginTopDimension1emEspace au-dessus d’un exercice sans box.
marginBottomDimension1emEspace au-dessous d’un exercice sans box.
itemSpacingDimension0.25emEspace 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éTypePar défautDescription
showbooleantrueImprimer le numéro. Le compte avance dans tous les cas.
labelboolean | stringfalseUn 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é.
colorColorValueblanc sur une forme, sinon la couleur principaleLa couleur du numéro.
backgroundColorValuela couleur principaleLe remplissage de la forme.
fontFamilystringcelle du texte environnantLa famille du numéro.
fontSizeDimension1emLe corps du numéro, l’em étant celui de la consigne.
fontWeightnumber700À partir de 600, le numéro est en gras.
suffixstring'.', rien sur une formeImprimé après un numéro nu et son mot : '.', ')', '、'.
templatestring'{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.
counterstring'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.
formatResourceCounterFormat'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éTypePar défautDescription
boldbooleantrueComposer la consigne en gras.
italicbooleanfalseLa composer en italique.
colorColorValuecelle du texteSa couleur, passages en gras compris.
fontFamilystringcelle du texteSa famille : une consigne en linéale sur un texte à empattements est courante dans les manuels scolaires.
fontSizeDimensioncelle du texteSon corps.

#Propositions

options règle les propositions d’une question à choix (- [ ] …).

PropriétéTypePar défautDescription
labelsResourceCounterFormat | 'none'selon la langueLa 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.
prefixstring''Avant la lettre : '(' pour (a).
suffixstring')' ; '.' en chinois, rien en japonaisAprè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.
columnsnumbertoutesPropositions par rangée dans la disposition 'row' (6 au plus).
shufflebooleanfalseImprimer les propositions mélangées, dans le même ordre dans toutes les sorties et dans le corrigé.
indentDimension1emLe retrait des propositions depuis le bord du texte, pour une question sans énoncé.
bracketbooleanfalseDes 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éTypePar défautDescription
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.
extraDimension1.5emEspace ajouté à la largeur de la réponse, en em entiers.
minWidthDimension3emLa largeur minimale d’un trou.
colorColorValuenoirLa 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.
weightDimension0.6ptL’épaisseur de la ligne.

#Vrai ou faux

trueFalse règle les réponses en fin d’affirmation.

PropriétéTypePar défautDescription
labels[string, string]selon la langueLes 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éTypePar défautDescription
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.
gapDimension4emL’espace entre les deux colonnes.
dotSizeDimension0.35emLe diamètre des points.
colorColorValuela couleur principaleLes 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éTypePar défautDescription
boxstringun cadre dans la couleur de matchUn 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.
separatorstringune espace cadratinEntre 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éTypePar défautDescription
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.
linesnumber3La hauteur en lignes. L’attribut lines d’un délimiteur l’emporte.
spacingDimension1,35 fois l’interligne du texte (1,2 pour les grilles)La distance entre deux lignes.
colorColorValueun gris clairLa couleur de la réglure.
weightDimension0.5ptL’é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éTypePar défautDescription
cellDimension1.6emLe côté d’une case.
fontFamilystringcelle du texteLa famille des lettres et des chiffres.
fontSizeDimension0,58 du côté de la caseLa taille des lettres et des chiffres, un em étant celui du texte.
colorColorValuecelle du texteLa couleur des lettres et des chiffres.
ruleColorValueun gris moyenLes filets des cases.
ruleWidthDimension0.6ptLeur épaisseur.
blockedColorValue—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.
uppercasebooleantrueComposer 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éTypePar défautDescription
division'bracket' | 'potence' | 'inline'selon la langueLa 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).
columnsnumber4Opé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éTypePar défautDescription
glyphstring'●'Un niveau atteint : '★', '■'.
emptystring'○'Un niveau non atteint ; '' n’en imprime aucun.
maxnumber3Le niveau le plus haut : level=2 avec max: 3 imprime ●●○.
colorColorValuela couleur principaleLa 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éTypePar défautDescription
glyphstring—Un caractère à imprimer : '✎', '🎧', un glyphe d’une police d’icônes.
fontFamilystring—La famille d’une police d’icônes.
colorColorValue—La couleur de l’icône.
resourceIdstring—Une ressource bitmap ou SVG pour l’icône.
altstring—Ce que représente l’icône, pour les lecteurs d’écran et le PDF balisé.
sizenumber0.75La 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éTypePar défautDescription
colorColorValue#d6246e, un rouge magentaLa couleur des réponses, en surimpression comme dans un livre du professeur.
fontFamilystringcelle du texteUn caractère pour les réponses : une écriture manuscrite est courante.
italicbooleanfalseComposer 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éTypePar défautDescription
correctColorColorValueun vert (#1e8e3e)Une bonne réponse.
wrongColorColorValueun 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éTypePar défautDescription
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.
solutionsExerciseSolutionsConfig—Où et comment s’impriment les solutions. Voir Solutions.
seednumber1La 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.
digitalobject—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éTypePar défautDescription
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.
boxstringun encadré sans cadre, en plus petit corpsUn identifiant de calloutStyles pour l’encadré d’une solution et pour la liste des solutions d’un chapitre.
headingstringle mot de la langue du documentLe 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éTypePar défautDescription
interactivebooleantrueDes exercices auxquels le lecteur peut répondre. false les montre tels qu’imprimés.
persistbooleantrueConserver 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' } } }],
    },
  },
};