Énoncés : source / generated / validated
Pour qu'un livret PDF complet soit produit (énoncé + copie + note
- rapport), l'app a besoin d'un énoncé corrigé validé pour chaque devoir. Cet énoncé passe par trois états successifs.
État 1 — source
Tu déposes le fichier .tex du sujet brut (sans corrigé).
C'est l'énoncé tel que tes étudiants l'ont reçu, ou que tu vas
mettre en exergue dans le livret.
Section Énoncé de la fiche du devoir → « Déposer
l'énoncé source » → choisis ton .tex. L'app le stocke et
passe l'état à source.
Tu peux aussi sauter cet état et passer directement à
generated si tu te suffis du corrigé sans énoncé séparé — mais
c'est rarement souhaitable, l'élève reçoit alors un livret sans
le sujet rappelé.
Forme attendue du fichier source
L'app est volontairement tolérante sur la forme du .tex :
l'IA qui produit le corrigé sait gérer plusieurs styles
d'écriture. Tu n'as pas besoin de te plier à un gabarit. Les
règles essentielles sont décrites ci-dessous.
Ce qui est obligatoire
- Extension
.tex. - Encodage UTF-8 (les
é,à,ô… doivent s'afficher correctement dans ton éditeur). - Contenu LaTeX : au moins une commande LaTeX (
\…) dans les 4 premiers Kio. Un fichier de texte brut sans commandes est rejeté avecNOT_LATEX. - Taille : 512 Kio maximum (largement suffisant pour un sujet d'examen).
- Non vide : un fichier vide est rejeté.
Document complet ou corps seul : les deux marchent
L'app accepte indifféremment :
(a) Un document LaTeX complet, avec préambule et balises
\begin{document} / \end{document} — c'est typiquement ton
sujet imprimable tel quel :
\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{amsmath,amssymb}
\begin{document}
\section*{Exercice}
On considère le problème $y''(t)+y(t)=0$ pour $t\in(0,T]$, avec
$y(0)=\alpha$ et $y'(0)=\beta$.
\begin{enumerate}
\item Proposer un schéma centré pour $y''$.
\item Démontrer la convergence à l'ordre 2.
\end{enumerate}
\end{document}
(b) Le corps seul, sans préambule ni balises de document :
\section*{Exercice}
On considère le problème $y''(t)+y(t)=0$ pour $t\in(0,T]$, avec
$y(0)=\alpha$ et $y'(0)=\beta$.
\begin{enumerate}
\item Proposer un schéma centré pour $y''$.
\item Démontrer la convergence à l'ordre 2.
\end{enumerate}
Sous le capot, l'app retire automatiquement les balises
\begin{document} / \end{document} avant d'envoyer le contenu
à l'IA — donc la forme (a) ou (b) ne change rien au résultat.
Organisation interne : pas de convention imposée
Pour un sujet à un seul exercice, mets directement le contenu
mathématique. Inutile d'ajouter un titre \section*{Exercice 1}
de ton côté : l'IA en posera un dans le corrigé final.
Pour un sujet à plusieurs questions ou exercices, organise comme tu veux — l'IA détecte la structure et la reproduit dans le corrigé :
- avec des
\section*{Question 1},\section*{Question 2}, … ; - avec un seul
\section*{Exercice}puis un\begin{enumerate}; - avec des
\subsection*{Exercice 1},\subsection*{Exercice 2}; - en texte libre découpé par paragraphes.
Tous les styles ci-dessus produisent un corrigé bien structuré.
Ce qui est nettoyé silencieusement
L'app applique quelques nettoyages avant d'envoyer ton source à l'IA :
- Préambule + balises de document retirés :
\documentclass, tous les\usepackage, toutes tes\newcommand, ainsi que les balises\begin{document}/\end{document}sont jetés. L'IA reçoit uniquement le corps de l'énoncé. Elle reconstruit ensuite son propre préambule pour le corrigé (amsmath,amssymb, quelques macros standards\R,\N,\Z,\Q,\C). - Blocs Markdown (
latex ...) si tu as copié ton code depuis un éditeur Markdown. - Signatures d'email (lignes commençant par
--et tout ce qui suit) si tu as copié-collé un sujet reçu par mail.
Ces nettoyages ne modifient pas le fichier sur disque ; ils n'agissent que sur la copie envoyée à l'IA.
Attention — packages et macros perso. Comme ton préambule est jeté, tes packages exotiques (
tikz,circuitikz,esvect,pgfplots,siunitx,chemfig, etc.) et tes macros personnelles (\newcommand{\norme}[1]{\|#1\|}, etc.) ne se retrouvent pas automatiquement dans le.generated.tex. Si ton sujet utilise ces commandes dans son corps, l'IA essaie de deviner les packages nécessaires en voyant les\tikz{…}ou\SI{…}dans le corps — c'est une devinette, pas une reproduction fidèle. Conséquence pratique : si tu utilises du LaTeX inhabituel, vérifie la compile du.generated.tex(bouton Compiler) avant de valider. Si elle échoue, ajoute à la main les\usepackage{...}et\newcommand{...}manquants en éditant le.generated.texdans la textarea (état 2 ci-dessous).
Langue du corrigé
Le corrigé (solution + barème) est produit dans la langue de ta classe (paramétrée à sa création). Ton énoncé est reproduit tel que tu l'as déposé.
Exemple pédagogique commenté
Voici un sujet réel (test 15 min) tel que livré par l'enseignant :
\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{amsmath,amssymb}
\usepackage[a4paper,margin=2.5cm]{geometry}
\usepackage{enumitem}
\begin{document}
\begin{center}
{\Large \textbf{Test -- Schémas numériques}}\\[0.3cm]
Durée : 15 min
\end{center}
\section*{Exercice}
On considère le problème de Cauchy
\[
y''(t)+y(t)=0,
\qquad t\in(0,T],
\]
avec les conditions initiales $y(0)=\alpha$ et $y'(0)=\beta$.
\begin{enumerate}[label=\textbf{\arabic*.}]
\item Approximation centrée de $y''(t_n)$ → schéma explicite.
\item Initialisation de $y_1$ par Taylor.
\item Formule explicite pour $y_2$.
\item Définition de la convergence à un pas.
\item Théorème : consistance + stabilité $\Rightarrow$
convergence.
\end{enumerate}
\end{document}
Ce que produit l'IA dans le .generated.tex (extrait
schématique) :
\documentclass[11pt,a4paper]{article}
... (préambule reconstitué par l'IA) ...
\title{Correction du devoir}
\begin{document}
\maketitle
\section*{Exercice 1}
\subsection*{Énoncé}
... (recopie fidèle de ton sujet) ...
\subsection*{Solution}
... (résolution détaillée, justifiée, basée sur le cours) ...
\section*{Barème}
... (barème détaillé question par question) ...
\end{document}
Les sections \section*{Exercice <N>} et \section*{Barème}
sont des repères de structure internes : l'IA les produit
toujours, dans la langue de la classe. Tu peux les éditer
librement (renommer, réorganiser) tant que tu ne supprimes pas
le repère %%__GRADING SCALE__%% qui marque l'emplacement du
barème.
État 2 — generated
À partir du sujet source, l'app génère le corrigé via IA.
- Bouton « Générer le corrigé » sur la fiche du devoir.
- Sélectionne le cours à utiliser comme contexte (vois Cours pour la génération).
- L'app appelle l'IA. Compte ~30-60 secondes pour un sujet de
taille moyenne. Tu reçois le fichier
<slug>.generated.texéditable dans une textarea sur la fiche.
Tu peux :
- Éditer manuellement le LaTeX (correction d'une faute, ajout d'un détail).
- Demander à l'IA d'éditer via une instruction en langage naturel (« reformule l'exercice 2 », « ajoute le calcul de la question 3 », « simplifie la rédaction »). Vois Éditer l'énoncé par IA.
- Regénérer complètement (le bouton « Générer » devient « Regénérer »).
Tu peux faire autant d'aller-retours que tu veux. L'état reste
generated tant que tu n'as pas validé.
État 3 — validated
Quand tu es satisfait du .generated.tex, clique « Valider »
en haut de la section.
À partir de cet état :
- Le fichier est compilé automatiquement en PDF de référence
(
<slug>.pdf) qui sera intégré dans chaque livret étudiant. - Le pipeline de correction des copies peut tourner (le bouton « ▶ Tout lancer » devient actif).
- Toute édition postérieure remet l'état à
generatedet invalide la compilation.
Comprendre les statuts à l'écran
Sur la fiche du devoir, la section Énoncé affiche un badge d'état :
| État | Signification |
|---|---|
aucun |
Pas encore d'énoncé déposé ni généré. |
source |
Sujet brut déposé, pas encore généré. |
generated |
Corrigé généré, en cours d'édition ou non validé. |
validated |
Corrigé validé, PDF compilé, pipeline peut tourner. |
Compiler manuellement
Si tu veux compiler le .generated.tex pour voir le rendu PDF
avant validation (utile pour repérer une faute LaTeX), bouton
« Compiler » sur la section. L'app appelle pdflatex côté
serveur et affiche le PDF ou les erreurs de compilation.
Cas d'erreur
NOT_LATEX
Le fichier déposé en source n'est pas reconnu comme du LaTeX :
- soit il n'est pas encodé en UTF-8 (caractères mal lisibles dans l'éditeur) ;
- soit il ne contient aucune commande LaTeX (pas un seul
\dans les 4 premiers Kio) — typiquement un PDF, une image, un fichier Word, ou du texte brut sans formules.
Vérifie l'extension .tex et le contenu dans un éditeur de
texte.
EMPTY_FILE
Le fichier déposé est vide. Vérifie que tu pointes le bon fichier dans le sélecteur.
FILE_TOO_LARGE
Le fichier dépasse 512 Kio. Pour un sujet d'examen, c'est extrêmement rare ; vérifie que tu n'as pas inclus par erreur des images encodées en base64 ou un PDF embarqué.
INVALID_COURSE
Le cours sélectionné pour la génération est introuvable.
NOT_GENERATED
Tu cliques « Valider » sans avoir d'abord généré le corrigé.
PDFLATEX_NOT_FOUND
pdflatex n'est pas installé côté serveur. Erreur
d'administration — contacte l'admin de l'instance.
NOT_COMPILED
Tu cliques « Lancer le pipeline » alors que l'énoncé n'a pas encore été compilé.