Bloc Formule
Notation mathématique et scientifique — fractions, exposants, indices, lettres grecques, et formules chimiques via \ce{...} — rendue côté serveur comme une image avec un vrai texte alternatif, puisqu'aucun client de messagerie ne compose de vraies mathématiques.
Comment ça fonctionne
Le bloc prend une petite chaîne de notation de type LaTeX (par exemple, \frac{-b \pm \sqrt{b^2-4ac}}{2a}) et la rend côté serveur en PNG via GET /api/formula. C'est un endpoint signé construit sur les mêmes primitives de rastérisation/encodage PNG faites maison que les blocs de graphiques d'analytique utilisent déjà : il n'y a jamais de bibliothèque mathématique côté client, et aucune dépendance npm derrière le moteur de rendu.
Le contenu d'une formule est figé une fois saisi, contrairement au GIF du compte à rebours, qui doit être régénéré à chaque visualisation pour rester à jour. Ainsi, toute la requête de rendu (notation, mode d'affichage, couleur) est signée dans l'URL elle-même, et l'endpoint n'a besoin d'aucune lecture Firestore — la réponse porte un en-tête de cache immuable de longue durée.
La syntaxe de notation couvre les fractions, exposants (^), indices (_), racines carrées, lettres grecques, fonctions nommées (\sin, \lim, \log, et d'autres), symboles d'ensembles/logique (\forall, \in, \cup, \neg, et d'autres), et opérateurs courants. \left(/\right( sont reconnus mais rendus à taille normale plutôt qu'automatiquement mis à l'échelle de leur contenu, car il s'agit d'un petit moteur de rendu bitmap, pas d'un moteur TeX complet. \text{...} revient à des mots simples au milieu d'une formule pour étiqueter un terme.
Les formules chimiques ont leur propre macro \ce{...} : un petit sous-ensemble de type mhchem. Les décomptes d'éléments passent automatiquement en indice (H2O se rend avec un indice 2), les charges ioniques finales passent automatiquement en exposant (H3O+, SO4^2-), et -> se rend comme une flèche de réaction. Cela signifie que \ce{2H2 + O2 -> 2H2O} ne nécessite pas d'écrire à la main ^/_ pour chaque décompte d'atomes et chaque charge.
La syntaxe que l'analyseur ne reconnaît pas — documents LaTeX complets, paquets, matrices, tableaux — ne casse jamais l'envoi. Elle se dégrade en rendant la chaîne de notation brute comme du texte littéral simple à la place. Cette garantie est appliquée à deux niveaux : l'analyseur lui-même dégrade les macros inconnues en texte littéral, et l'appel le plus externe du moteur de rendu ne lève jamais d'erreur, même face à un cas limite de mise en page.
L'image est disposée à une échelle adaptée à son mode d'affichage : plus grande pour Bloc, plus petite pour En ligne. Elle réduit automatiquement l'échelle si elle dépasserait le budget de taille sûr pour un email. La plupart des formules tiennent dès le premier essai ; seule une expression inhabituellement longue nécessite une échelle plus petite, et une expression pathologique se limite à l'échelle minimale plutôt que de boucler indéfiniment.
L'<img> rendue porte des attributs width/height explicites, dimensionnés à partir de cette passe de mise en page, de sorte qu'Outlook et les autres clients ne sautent ni ne réajustent la mise en page pendant le chargement de l'image. De façon essentielle, elle porte aussi un attribut alt réglé sur la chaîne de notation brute elle-même. Une formule n'est jamais enfermée dans une image sans équivalent textuel pour un client qui bloque les images ou un lecteur d'écran incapable d'interpréter un bitmap.
Champs configurables :
- Notation (type LaTeX) — le texte de la formule, plafonné à 300 caractères (une valeur trop longue est tronquée silencieusement avant le rendu, ne casse jamais l'envoi).
- Mode d'affichage — En ligne (petit, s'insère dans une ligne de texte) ou Bloc (plus grand, sur sa propre ligne).
- Alignement — Gauche, Centre, ou Droite (uniquement en mode Bloc).
- Couleur — la couleur de trait de la notation ; une valeur invalide ou vide revient à la valeur presque noire par défaut propre au moteur de rendu plutôt que d'atteindre l'endpoint signé avec une valeur qu'il rejetterait.
- Couleur de fond, marge intérieure, bordure et rayon de bordure sur la carte.
Une notation vide ne rend absolument rien plutôt qu'une image vide — le bloc n'émet simplement rien s'il n'y a pas de texte à composer.
Syntaxe prise en charge
Chaque exemple ci-dessous est une véritable image signée en direct provenant du véritable endpoint /api/formula, pas une maquette, donc ce que vous voyez ici est exactement ce que rend la boîte de réception d'un destinataire. Tout ce qui n'est pas dans cette liste (documents LaTeX complets, paquets, matrices, tableaux, accents comme \bar/\hat, points de suspension comme \dots) n'est pas reconnu. Cela se rend littéralement comme son propre texte tapé tel quel plutôt que de casser l'envoi, donc il est généralement évident dans un aperçu qu'une macro n'est pas prise en charge.
Fractions
\frac{a+b}{c-d}Exposants et indices
a_n = a_1 + (n-1)dRacines carrées, imbriquées avec une fraction
\sigma = \sqrt{\frac{1}{n}\sum (x_i - \mu)^2}La formule quadratique — fractions, ±, et une racine carrée ensemble
x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}Lettres grecques
\Delta = b^2 - 4acFonctions nommées et limites (droites, non italiques)
\lim_{x \to 0} \frac{\sin x}{x} = 1Symboles d'ensembles et de logique
\forall x \in S,\ x^2 \geq 0Délimiteurs \left(/\right) — reconnus, mais non mis à l'échelle automatique de leur contenu
y = \left(x+1\right)^2\text{...} pour un libellé au milieu d'une formule
d = 5\text{ mi}Formules chimiques via \ce{...} — décomptes d'atomes automatiquement en indice, flèche de réaction
\ce{2H2 + O2 -> 2H2O}\ce{...} — charges ioniques automatiquement en exposant
\ce{SO4^2-}Exemples
Subject
This week in study group: the quadratic formula
Un email récapitulatif de cours de chimie compose une réaction équilibrée en ligne dans une phrase : « Photosynthèse : \ce{6CO2 + 6H2O -> C6H12O6 + 6O2} » juste à côté du texte explicatif. Voir Éducation pour voir comment Formule s'intègre aux côtés des blocs Devoir, Quiz, et Jeu de cartes-éclair dans un digest de classe. Une série d'exercices de physique place la formule quadratique en mode Bloc sur sa propre ligne, dans une taille plus grande et centrée, avant un exemple résolu. Une newsletter de statistiques utilise une formule courte en ligne comme \mu = \frac{\sum x_i}{n} au milieu d'une phrase sans rompre le flux du paragraphe environnant. Notez qu'il s'agit de \mu, pas de \bar{x} : les macros d'accents comme \bar/\hat ne figurent pas dans la liste de syntaxe prise en charge ci-dessus, donc une simple lettre grecque est le substitut sûr pour une moyenne quand il en faut une.
À quoi ressemble l'alternative statique
<div style="margin:8px 0;text-align:left">
<img src="https://mailinapp.com/api/formula?d=eyJub3RhdGlvbiI6...&s=abc123..."
width="184" height="52" alt="E = mc^2"
style="display:inline-block;max-width:100%;height:auto;vertical-align:middle" />
</div>
Il n'y a qu'un seul niveau de rendu — une <img> signée dont le texte alt porte toujours la chaîne de notation exacte, de sorte que la formule communique toujours même là où l'image elle-même ne se charge pas.