37-vertin/markdown-math-render

Compétence Codex : règles de rendu mathématique Markdown pour l'application de bureau Codex (uniquement blocs, inline Unicode, compatible tableaux) + script d'auto-vérification.

Qu'est-ce que markdown-math-render ?

Cette compétence définit des règles strictes pour le rendu des formules mathématiques dans l'application de bureau Codex, qui ne supporte que les blocs `$$...$$` et ignore les formules inline `$...$` (confirmé par l'issue #14985). Elle propose une solution complète : courtes expressions inline converties en symboles Unicode (indices, exposants, racines, fractions simplifiées), formules complexes isolées en blocs `$$...$$`, et des tableaux de correspondance détaillés (12 cas). Pour les tableaux, les formules sont exclues des cellules et déplacées en dessous. Un script de vérification, `check_inline_math.py`, analyse le contenu avant publication pour détecter toute formule inline interdite et tout `^()` non mathématique, garantissant un rendu correct. La compétence est activée par trois mécanismes : déclenchement préalable à toute écriture de formule, intégration dans le workflow de la compétence principale `math-question-skill`, et auto-vérification avant publication. Elle répond également aux demandes contradictoires des utilisateurs (ex. : conserver `$...$`) en expliquant les conséquences et en maintenant la règle stricte.

Compatible avec✓Claude Code✓Codex CLI~Cursor
npx skills add 37-vertin/markdown-math-render

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Règles de rendu des formules mathématiques Markdown et vérification

Chaîne de déclenchement : trois garanties pour éviter que la compétence ne soit pas exécutée

Cette compétence est garantie d'être exécutée lors de l'écriture de formules par trois mécanismes :

  1. Déclenchement préalable : cette description déclare « avant d'écrire toute formule mathématique », sans attendre un échec de rendu pour corriger.
  2. Intégration au workflow : la compétence principale du dépôt math-question-skill (D:\math_question\SKILL.md) l'inclut dans ses règles obligatoires – tout exercice, explication ou question quotidienne passe par cette chaîne.
  3. Auto-vérification avant publication : avant la finalisation d'un contenu contenant des formules, exécutez scripts/check_inline_math.py pour analyser ; toute occurrence de $...$ inline doit être convertie en formule bloc ou en texte brut avant envoi/écriture.

Règles principales (obligatoires dans l'application Codex)

L'application de bureau Codex ne rend que les formules bloc indépendantes $$...$$, et pas les formules inline $...$ (confirmé par l'issue #14985 officielle). L'erreur ne vient pas de la formule elle-même mais du délimiteur utilisé :

❌ $f(x)=\sqrt[3]{x}$                       ← inline $...$, non rendu par l'application
❌ $\dfrac{f(x_0+h)-f(x_0)}{h}$             ← inline $...$, non rendu par l'application

Correction : mettez la formule sur sa propre ligne avec $$...$$ :

✅  Ainsi
$$
f'(x_0)=\lim_{h\to0}\dfrac{f(x_0+h)-f(x_0)}{h}
$$
est dérivable ⇔ cette limite existe et est finie

Pour les courtes expressions inline, utilisez des symboles Unicode mathématiques pour un rendu esthétique proche :

  • Exposant/indice : xˣ (U+02E3), 10⁶, 2ⁿ, x₀, x₁
  • Racine : √x (U+221A), ∛x (U+221B racine cubique)
  • Fraction en exposant : x¹⁄³ (¹ U+00B9 + ⁄ U+2044 + ³ U+00B3)
  • Apostrophe de dérivée : f′(x) (U+2032, ne pas utiliser l'apostrophe droite ')
  • Opérateurs/relations : ·, −, ±, ∞, ≠, ≤, ≥, ∈

⚠️ N'utilisez pas l'écriture programmatique ^(...) : x^(1/3) ressemble à du code source ; utilisez ∛x ou x¹⁄³ à la place.

Les formules inline complexes (fractions, racines, limites) doivent être décomposées en blocs $$...$$, ne les forcez pas en texte brut.

Que faire si l'utilisateur demande de « conserver les formules inline » (règle dure inchangée)

Dans la conversation, l'utilisateur peut demander de « conserver les formules inline $...$, seulement corriger les espaces collés » – cela ne change pas le comportement de rendu de l'application. Les formules inline $...$ ne sont jamais rendues dans l'application Codex ; ajouter des espaces ne fait que « source + espaces », donnant un rendu encore pire, et reste un échec (leçon tirée de l'expérience : après correction des espaces collés, l'utilisateur a signalé que « ces endroits ont toujours des problèmes », la cause racine étant que les $...$ inline n'avaient pas été convertis en Unicode). Par conséquent :

  • Avant la finalisation, suivez toujours les règles dures : courtes expressions inline converties en Unicode, complexes décomposées en blocs $$...$$ indépendants ;
  • Si l'utilisateur insiste explicitement pour conserver les $...$ inline, expliquez d'abord les conséquences (l'application affichera le code source), et ajoutez un « rappel de rendu » à la fin de la sortie ;
  • Ne sautez pas l'auto-vérification check_inline_math.py à cause de la demande de l'utilisateur ; [FAIL] doit être réduit à zéro pour que la tâche soit considérée comme terminée.

Tableau de conversion rapide : formule inline → Unicode

ScénarioLaTeX inline (interdit)Correction Unicode
Variable simple$f$, $g$, $A$f, g, A (texte brut)
Exposant/indice$x^n$, $x_0$, $a_n$xⁿ, x₀, aₙ
Radical$\sqrt{x}$, $\sqrt[3]{x}$√x, ∛x
Fraction$\frac1n$, $\frac{x^n}{1+x}$Court 1/n ; complexe décomposer en bloc $$...$$
Limite$\lim_{n\to\infty}a_n$lim(n→∞) aₙ (Unicode n'a pas de flèche en indice, la condition d'approche est incluse dans lim entre parenthèses ; complexe décomposer en bloc)
Intégrale$\int_0^1 f(x)\,dx$Complexe décomposer en bloc $$...$$, ne pas forcer en inline
Valeur absolue$\lvert x\rvert$`
Ensemble/relation$x\in[0,1]$, $f\le g$x∈[0,1], f ≤ g
Flèche$x\to0$, $n\to\infty$x→0, n→∞
Points de suspension$a_1+\cdots+a_k$a₁+…+aₖ

Formules dans les tableaux (deuxième scénario le plus fréquent dans l'application Codex)

Dans les cellules d'un tableau, $...$ n'est pas rendu ; et $$...$$ sur une ligne séparée briserait la ligne du tableau. Ne mettez jamais de délimiteurs de formule dans une cellule de tableau :

PratiqueExplication
❌ Écrire $x^{1/3}$ dans une celluleInline non rendu, affiché comme code source
❌ Écrire $$x^{1/3}$$ dans une celluleDélimiteur multiligne brise le tableau
✅ Mettre uniquement du texte brut/Unicode dans la cellule∛x, `
✅ Mettre la formule sous le tableauChaque formule sur sa propre ligne $$...$$, après le tableau
✅ Si le contenu est principalement des formulesUtilisez une liste structurée (sous-titre + $$...$$), pas de tableau

Exemple – trois exemples de non-dérivabilité :

FonctionMode d'échec en x = 0
∛xTangente verticale, taux de variation → +∞
x·sin(1/x)Oscillation violente, limite inexistante

Formules sous le tableau :

$$ \lim_{h\to0}\frac{h^{1/3}}{h}=+\infty $$

Auto-vérification avant publication (30 secondes, obligatoire avant finalisation)

⚠️ Définissez d'abord l'encodage de la console sur UTF-8 : la console Windows par défaut utilise GBK, et la sortie du script contenant du chinois ou des emoji (comme ✅) peut provoquer une UnicodeEncodeError ou des caractères illisibles. Avant d'exécuter la vérification :

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
$env:PYTHONIOENCODING = 'utf-8'

Pour un brouillon de réponse chat :

python "D:\math_question\.agents\skills\markdown-math-render\scripts\check_inline_math.py" - < brouillon.txt

Pour vérifier un fichier déjà écrit :

python "D:\math_question\.agents\skills\markdown-math-render\scripts\check_inline_math.py" "D:\math_question\fichier_cible.md"
  • Code de retour 0 (sortie [OK]) → propre, peut être envoyé/écrit
  • Code de retour 0 + avertissement [STYLE] → présence d'exposant programmatique ^() (ex. x^(1/3)), aspect de code source, suggestion de passer à ∛x/x¹⁄³ ou formule bloc (conseil de style, non bloquant)
  • Code de retour 1 (sortie [FAIL] avec numéro de ligne) → deux types de problèmes : $...$ inline (convertir en $$...$$ indépendant ou Unicode texte brut) ; $$...$$ non indépendant (déplacer le texte en début/fin de ligne). Corrigez ligne par ligne et relancez jusqu'à ce qu'il n'y ait plus de [FAIL]

Vérification que la formule elle-même n'est pas cassée (30 secondes)

Le dépôt embarque KaTeX CLI pour valider la syntaxe TeX :

@'
\dfrac{f(x_0+h)-f(x_0)}{h}
'@ | node scripts/node_modules/katex/cli.js
  • Sortie contenant <annotation ...> et code de retour 0 → la formule est correcte, le problème vient du délimiteur/du moteur de rendu
  • ParseError → erreur de syntaxe TeX, corrigez d'abord la formule

Règle en une phrase

Dans l'application Codex, toutes les formules doivent être sur leur propre ligne avec $$...$$ ; les courtes expressions inline sont mises en forme avec des exposants/indices Unicode (xˣ, f′(x)) ; les cellules de tableau ne contiennent pas de formules, celles-ci sont placées sous le tableau ; avant finalisation, exécutez check_inline_math.py pour garantir l'absence de formules inline $...$.

Skills associés