Activer le rendu LaTeX sur un site sans MathJax
par Damien Mégy latex mathématiques web
Table des matiĂšres
Rendre du LaTeX sur nâimporte quelle page web
Cet article, comme beaucoup d'autres articles du blog, n'est qu'un simple aide-mémoire pour l'auteur :-)
ProblĂ©matique : on tombe sur une page web qui contient des mathĂ©matiques, Ă©crites en LaTeX, mais le LaTeX n'est pas compilĂ©, ce qui rend la lecture pĂ©nible, comme par exemple sur https://blog.kleinproject.org/fr/comment-empiler-des-oranges-la-conjecture-de-kepler-sur-lempilement-des-spheres/. (Ceci peut ĂȘtre dĂ» Ă plusieurs raisons : mathjax/katex non inclus ou supportĂ©, problĂšme de lancement de mathjax etc.)
Solution : dans cette entrée, on explique ici comment relancer le rendu LaTeX sur n'importe quel site,
- soit Ă partir de la console,
- soit, mieux, d'un simple clic à l'aide d'un petit script javascript placé en favori,
- soit mĂȘme en fabriquant une petite extension chrome/firefox pour pouvoir simplement cliquer sur un bouquon "Executer Latex sur cette page".
Exécuter MathJax ou KaTeX depuis la console
MathJax (config + chargement + typeset)
Copier-coller dans la console :
(() => {
if (window.MathJax) {
MathJax.typesetPromise && MathJax.typesetPromise();
return;
}
window.MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']],
displayMath: [['$$', '$$'], ['\\[', '\\]']]
},
svg: { fontCache: 'global' },
startup: { typeset: false }
};
const s = document.createElement('script');
s.src = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js";
s.async = true;
s.onload = () => {
window.MathJax?.typesetPromise
? MathJax.typesetPromise()
: MathJax.typeset && MathJax.typeset();
};
document.head.appendChild(s);
})();
Transformer en bookmarklet
Un bookmarklet est un favori contenant du JavaScript.
Ătapes
- Créer un favori
- Remplacer son URL par une version « minifiée » sur une seule ligne précédée de
javascript:
Exemple (MathJax)
javascript:(()=>{if(window.MathJax){MathJax.typesetPromise&&MathJax.typesetPromise();return;}window.MathJax={tex:{inlineMath:[['$','$'],['\\(','\\)']],displayMath:[['$$','$$'],['\\[','\\]']]},svg:{fontCache:'global'},startup:{typeset:false}};var s=document.createElement('script');s.src='https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js';s.async=true;s.onload=()=>{window.MathJax?.typesetPromise?MathJax.typesetPromise():MathJax.typeset&&MathJax.typeset()};document.head.appendChild(s);})();
Cliquer sur ce favori exécute le script sur la page courante.
Test (Klein project blog)
Tester les différentes méthodes sur https://blog.kleinproject.org/fr/comment-empiler-des-oranges-la-conjecture-de-kepler-sur-lempilement-des-spheres/.
En cas de problÚme, vérifier la présence du javascript: au début, et vérifier que les caractÚres spéciaux n'ont pas été échappés lors sur copier-coller.
Tranformer ceci en extension Chrome / Firefox
Structure minimale
extension/
âââ manifest.json
âââ content.js
manifest.json (Manifest V3)
{
"manifest_version": 3,
"name": "Math Renderer",
"version": "1.0",
"permissions": ["scripting", "activeTab"],
"action": {
"default_title": "Render LaTeX"
},
"background": {
"service_worker": "background.js"
}
}
background.js
chrome.action.onClicked.addListener((tab) => {
chrome.scripting.executeScript({
target: { tabId: tab.id },
files: ["content.js"]
});
});
content.js
Réutiliser le code MathJax ou KaTeX de la section I.
Installation
- Chrome :
chrome://extensionsâ mode dĂ©veloppeur â charger le dossier - Firefox :
about:debuggingâ charger un module temporaire
Publier l'extension
Dans un prochain épisode !