// template-pack-maths-brevet.jsx // PACK MATHS BREVET 3e — Allo Education Books v1.2 // 15 templates pour générer le livre « Objectif Brevet Maths 3e ». // Strictement composés à partir des blocs verrouillés (PageShell, PageTitle, // Box, Cols, KettyBubble, QRBlock, TableBlock, FigureBlock, etc.) + helpers // math (MathExpr, Frac, StepBlock, GridCalc, AxisGrid, BarChart, TriangleFigure). // Aucun emoji. Tous pictos via iconKey. const MB_FR = React.Fragment; /* ════════════════════════════════════════════════════════════════════════ 01 · math-lesson-exercise — Leçon maths avec exemple guidé ════════════════════════════════════════════════════════════════════════ */ function MBLessonExercise({ density, qrVisible, scoreVisible, scale = 1 }) { return ( On multiplie le facteur k par chaque terme dans la parenthèse, sans oublier les signes, puis on regroupe les termes semblables. Développer et réduire A = 4(2x − 3) + 5.
A = 4 · 2x + 4 · (−3) + 5, note: "je distribue" }, { expr: A = 8x − 12 + 5 }, { expr: A = 8x − 7, note: "réduit" }, ]} />
3(x + 5), 2(4x − 1) + 3, 5(2x + 3) − 4x, −2(x − 7), ]} />
); } /* ════════════════════════════════════════════════════════════════════════ 02 · math-progressive-exercise — Exercices progressifs ════════════════════════════════════════════════════════════════════════ */ function MBProgressive({ density, qrVisible, scoreVisible, scale = 1 }) { return ( 1. Je regroupe les x à gauche, les nombres à droite. 2. Je réduis. 3. Je divise par le coefficient de x. 3x + 5 = 17 }]} /> 5x − 7 = 2x + 8 }]} /> 2(3x − 4) = 5x + 1, note: "distribue d'abord" }]} /> ); } /* ════════════════════════════════════════════════════════════════════════ 03 · math-guided-problem — Problème guidé ════════════════════════════════════════════════════════════════════════ */ function MBGuidedProblem({ density, qrVisible, scoreVisible, scale = 1 }) { return ( Pour son concert, le club organise 180 places. Le tarif adulte est de 12 € et le tarif jeune de 7 €. La recette totale s'élève à 1 660 €.
Question : combien de places adultes ont été vendues ?
  • Total places : 180
  • Tarif adulte : 12 €
  • Tarif jeune : 7 €
  • Recette : 1 660 €
Ne pas oublier (180 − x) dans l'équation : c'est le nombre de places jeunes, pas une seule place !
); } /* ════════════════════════════════════════════════════════════════════════ 04 · math-grid-practice — Calculs en grille ════════════════════════════════════════════════════════════════════════ */ function MBGridPractice({ density, qrVisible, scoreVisible, scale = 1 }) { return ( Effectue les calculs sans calculatrice. Tu disposes de 10 minutes . Si tu hésites, passe au suivant. + , , × , ]} /> ); } /* ════════════════════════════════════════════════════════════════════════ 05 · math-qcm — QCM maths ════════════════════════════════════════════════════════════════════════ */ function MBQCM({ density, qrVisible, scoreVisible, scale = 1 }) { return ( Le nombre (−3)² est égal à :} options={["−6", "9", "−9"]} /> L'écriture scientifique de 0,000 42 est :} options={[4,2 × 10−4, 42 × 10−5, 4,2 × 104]} /> Une augmentation de 20 % puis une baisse de 20 % donne :} options={["aucun changement", "une baisse de 4 %", "une baisse de 20 %"]} /> L'image de 3 par f tel que f(x) = 2x − 5 est :} options={["1", "−1", "11"]} /> Si ABC est rectangle en A avec AB = 3, AC = 4, alors BC =} options={["5", "7", "√7"]} /> La médiane de la série 4 ; 7 ; 9 ; 12 ; 15 est :} options={["7", "9", "9,4"]} /> ); } /* ════════════════════════════════════════════════════════════════════════ 06 · algebra-equation-page — Équations / calcul littéral ════════════════════════════════════════════════════════════════════════ */ function MBAlgebra({ density, qrVisible, scoreVisible, scale = 1 }) { return ( A = 3(2x − 5) A = 3 · 2x + 3 · (−5) }, { expr: A = … }]} /> B = 4x + 7 − 2x + 3 B = (4x − 2x) + (7 + 3) }, { expr: B = … }]} /> C = 6x + 9 C = 3 · 2x + 3 · 3, note: "facteur 3" }, { expr: C = 3 · (…) }]} /> 5(x − 2) = 3x + 4 ); } /* ════════════════════════════════════════════════════════════════════════ 07 · proportionality-table — Tableau de proportionnalité ════════════════════════════════════════════════════════════════════════ */ function MBProportionality({ density, qrVisible, scoreVisible, scale = 1 }) { return ( Dans un tableau de proportionnalité, on passe d'une ligne à l'autre en multipliant par un même nombre k appelé coefficient. Je calcule le prix de 1 kg (ici : 5 ÷ 2 = 2,50 €), puis je multiplie par la quantité voulue. C'est souvent le chemin le plus rapide. 12 kg coûtent €. ); } /* ════════════════════════════════════════════════════════════════════════ 08 · percentage-scale-page — Pourcentages / échelles ════════════════════════════════════════════════════════════════════════ */ function MBPercentage({ density, qrVisible, scoreVisible, scale = 1 }) { return ( Pour une hausse de t %, on multiplie par 1 + t/100. Pour une baisse de t %, on multiplie par 1 − t/100. Une échelle 1/25 000 signifie que 1 cm sur la carte représente 25 000 cm = 250 m dans la réalité.
a. 1 cm sur la carte = combien de m en vrai ?
b. Une rivière mesure 4,5 cm sur la carte. Sa longueur réelle est de .
Toujours convertir avant de comparer : 1 m = 100 cm, 1 km = 1 000 m. Une réponse en cm ou en km change la note !
); } /* ════════════════════════════════════════════════════════════════════════ 09 · function-table-graph — Fonctions ════════════════════════════════════════════════════════════════════════ */ function MBFunctions({ density, qrVisible, scoreVisible, scale = 1 }) { return ( Image : on calcule f(x) en remplaçant.
Antécédent : on cherche x tel que f(x) = … (équation).
2 * x - 1} xMin={-3} xMax={4} yMin={-5} yMax={5} />
Image de 4 par f : Antécédent de 7 : f(x) = 0 pour x =
); } /* ════════════════════════════════════════════════════════════════════════ 10 · stats-probability-page — Statistiques / probabilités ════════════════════════════════════════════════════════════════════════ */ function MBStatsProba({ density, qrVisible, scoreVisible, scale = 1 }) { return (
Moyenne : Médiane : Étendue : P(rouge) = P(non bleue) = P(verte ou rouge) =
); } /* ════════════════════════════════════════════════════════════════════════ 11 · geometry-figure-page — Géométrie générique avec figure ════════════════════════════════════════════════════════════════════════ */ function MBGeometry({ density, qrVisible, scoreVisible, scale = 1 }) { return (
  • ABC est rectangle en C
  • AC = 3 cm, BC = 4 cm
Calcule AB. Le triangle ABC est-il isocèle ? Justifie.
AB = , donc .
); } /* ════════════════════════════════════════════════════════════════════════ 12 · geometry-theorem-page — Pythagore / Thalès / Trigo (variants) ════════════════════════════════════════════════════════════════════════ */ function MBTheorem({ variant = "pythagoras", density, qrVisible, scoreVisible, scale = 1 }) { const cfg = { "pythagoras": { eyebrow: "Théorème de Pythagore", title: "Calculer une longueur dans un triangle rectangle", page: "Page 60", condition: "Si le triangle ABC est rectangle en C…", formula: "AB² = AC² + BC²", hyp: "AB est l'hypoténuse (opposée à l'angle droit).", figLabels: { AB: "?", AC: "5 cm", BC: "12 cm" }, pitfall: "L'hypoténuse est le côté OPPOSÉ à l'angle droit. Ne jamais confondre.", qrSlug: "AE-3E-MATH-001-2026-V1-P060", }, "pythagoras-converse": { eyebrow: "Réciproque de Pythagore", title: "Démontrer qu'un triangle est rectangle", page: "Page 62", condition: "Si AB² = AC² + BC², alors le triangle est rectangle en C.", formula: "comparer AB² et AC² + BC²", hyp: "On prend toujours le plus grand côté comme « hypoténuse » candidate.", figLabels: { AB: "13 cm", AC: "5 cm", BC: "12 cm" }, pitfall: "Toujours calculer AB² ET AC² + BC² séparément, puis comparer.", qrSlug: "AE-3E-MATH-001-2026-V1-P062", }, "thales": { eyebrow: "Théorème de Thalès", title: "Reporter des rapports égaux", page: "Page 65", condition: "Si (MN) // (AB) et O, M, A alignés, O, N, B alignés…", formula: "OM/OA = ON/OB = MN/AB", hyp: "Trois rapports égaux. On utilise les deux qu'il nous faut.", figLabels: {}, pitfall: "Vérifier l'alignement et le parallélisme avant de poser les rapports.", qrSlug: "AE-3E-MATH-001-2026-V1-P065", }, "trigonometry": { eyebrow: "Trigonométrie", title: "SOH · CAH · TOA", page: "Page 68", condition: "Dans un triangle rectangle, à partir d'un angle aigu α…", formula: "sin α = opp/hyp · cos α = adj/hyp · tan α = opp/adj", hyp: "Le côté opposé est en face de l'angle, l'adjacent est à côté de l'angle.", figLabels: { AB: "hyp", AC: "adj", BC: "opp", angle: "α" }, pitfall: "Toujours identifier l'angle de référence avant de nommer les côtés.", qrSlug: "AE-3E-MATH-001-2026-V1-P068", }, }[variant]; const figVariant = variant === "thales" ? "thales" : (variant === "trigonometry" ? "trigonometry" : "pythagoras"); return ( {cfg.condition} {cfg.formula}
{cfg.pitfall}
); } /* ════════════════════════════════════════════════════════════════════════ 13 · math-formula-sheet — Formulaire express ════════════════════════════════════════════════════════════════════════ */ function MBFormulaSheet({ density, qrVisible, scoreVisible, scale = 1 }) { const Row = ({ label, expr, note }) => (
{label} {expr} {note && · {note}}
); return ( k(a + b) = ka + kb} /> (a + b)² = a² + 2ab + b²} /> (a + b)(a − b) = a² − b²} /> aᵐ × aⁿ = aᵐ⁺ⁿ} /> (aᵐ)ⁿ = aᵐⁿ} /> a × 10ⁿ avec 1 ≤ |a| < 10} /> BC² = AB² + AC²} note="rectangle en A" /> OM/OA = ON/OB = MN/AB} /> sin α = opp / hyp} /> cos α = adj / hyp} /> tan α = opp / adj} /> π × r²} /> V = c³} /> V = L × ℓ × h} /> V = π × r² × h} /> 1 L = 1 dm³ = 1 000 cm³} /> 1 m³ = 1 000 dm³ = 1 000 L} /> (somme) / (effectif)} /> valeur centrale (série rangée)} /> max − min} /> P(A) = favorables / possibles} />
Méthode · lire 2× · vérifier l'unité · faire un schéma · conclure par une phrase.
); } /* ════════════════════════════════════════════════════════════════════════ 14 · brevet-mini-exam — Mini-sujet brevet ════════════════════════════════════════════════════════════════════════ */ function MBMiniExam({ density, qrVisible, scoreVisible, scale = 1 }) { return ( 45 min. · 15 min par exercice maximum. Exo 1 · 5 pts
Exo 2 · 7 pts
Exo 3 · 8 pts
Total · 20 pts
Commence par ce qui te paraît le plus simple. Garde 5 min pour relire.
); } /* ════════════════════════════════════════════════════════════════════════ 15 · math-compact-correction — Correction compacte ════════════════════════════════════════════════════════════════════════ */ function MBCompactCorrection({ density, qrVisible, scoreVisible, scale = 1 }) { const CorrectionRow = ({ refId, title, steps, answer }) => (
{refId}
{title}
{steps}
Réponse {answer}
); return (
); } /* ════════════════════════════════════════════════════════════════════════ 16 · solids-volume-page — Solides & volumes (P071-P074) ════════════════════════════════════════════════════════════════════════ */ function MBSolidsVolume({ density, qrVisible, scoreVisible, scale = 1 }) { const SolidIcon = ({ kind }) => { if (kind === "cube") return ( ); if (kind === "pave") return ( ); return ( ); }; const SolidCard = ({ kind, name, formula }) => (
{name}
V = {formula}
); return ( c³} /> L × ℓ × h} /> π × r² × h} /> Cube de côté 5 cm : V = cm³ Pavé droit 4 × 3 × 6 cm : V = cm³ Cylindre r = 2 cm, h = 10 cm : V = cm³ Le volume d'un cylindre s'écrit π × r² × h, pas π × r × h. Pense à élever r au carré avant de multiplier par h. ); } /* ════════════════════════════════════════════════════════════════════════ 17 · volume-units-page — Conversions L / cm³ / dm³ / m³ (P073-P075) ════════════════════════════════════════════════════════════════════════ */ function MBVolumeUnits({ density, qrVisible, scoreVisible, scale = 1 }) { return ( Le litre est une unité de capacité. Il correspond exactement à un dm³ . Pour passer du m³ au cm³, on traverse 3 zéros par étage. 2,5 L = cm³ 1 500 cm³ = L 0,75 m³ = L 4 200 mL = dm³ ); } /* ════════════════════════════════════════════════════════════════════════ 18 · geometry-transformations-page — Translation, rotation, sym., agrand. (P076-P078) ════════════════════════════════════════════════════════════════════════ */ function MBTransformations({ density, qrVisible, scoreVisible, scale = 1 }) { const TransformIcon = ({ kind }) => { if (kind === "translation") return ( ); if (kind === "rotation") return ( ); if (kind === "symmetry") return ( ); return ( ); }; const TCard = ({ kind, name, def }) => (
{name}
{def}
); return ( Translation, rotation et symétrie conservent longueurs et angles. L'homothétie de rapport k multiplie les longueurs par |k| et conserve les angles. Le triangle A'B'C' est l'image de ABC après un glissement de 3 cm vers la droite. → Une figure est réfléchie par rapport à une droite. → Une photo est agrandie 2 fois. → Une horloge tourne autour de son axe central. → ); } /* ════════════════════════════════════════════════════════════════════════ 19 · algorithm-tableur-page — Scratch / programmes de calcul / tableur (P078-P080) ════════════════════════════════════════════════════════════════════════ */ function MBAlgoTableur({ density, qrVisible, scoreVisible, scale = 1 }) { const propCellHead = { padding: "0.07in 0.1in", fontFamily: "var(--ae-font-title)", fontWeight: 600, textAlign: "center", color: "var(--ae-primary-deep)" }; const propCell = { padding: "0.08in 0.1in", textAlign: "center", fontFamily: '"Cambria Math", Georgia, serif', fontStyle: "italic" }; const ScratchBlock = ({ kind, children }) => { const colors = { event: { bg: "#FFB22A", fg: "#3A2700" }, ctrl: { bg: "#FFA13F", fg: "#3A2700" }, op: { bg: "#59C059", fg: "#0F2E0F" }, var: { bg: "#FF8C1A", fg: "#3A2700" }, }[kind] || { bg: "#4C97FF", fg: "white" }; return (
{children}
); }; return (
  1. Choisir un nombre.
  2. Le multiplier par 3.
  3. Ajouter 5.
  4. Soustraire le nombre choisi.
  5. Annoncer le résultat.
Q1. Avec 4, on obtient :
Q2. Avec x, on obtient :
quand drapeau cliqué demander « Choisis un nombre » et attendre mettre n à : réponse mettre résultat à : (n × 3) + 5 − n dire (résultat)
A
B
C
n
résultat
vérif.
4
= A2 * 3 + 5 − A2
); } // Variant exports — for the 4 theorem variants, build small wrappers function MBPythagoras(p) { return ; } function MBPythagorasConverse(p){ return ; } function MBThales(p) { return ; } function MBTrigonometry(p) { return ; } Object.assign(window, { MBLessonExercise, MBProgressive, MBGuidedProblem, MBGridPractice, MBQCM, MBAlgebra, MBProportionality, MBPercentage, MBFunctions, MBStatsProba, MBGeometry, MBTheorem, MBPythagoras, MBPythagorasConverse, MBThales, MBTrigonometry, MBSolidsVolume, MBVolumeUnits, MBTransformations, MBAlgoTableur, MBFormulaSheet, MBMiniExam, MBCompactCorrection, });