Comment inclure KaTeX 0.16 dans Hugo (rendu LaTeX)
Ce post montre comment inclure la dernière version de KaTeX (0.16) dans Hugo pour le rendu mathématique LaTeX. Nous ne l’incluons pas depuis un CDN principalement pour des raisons de RGPD, mais aussi parce que c’est plus rapide à charger depuis le serveur local.
Nous inclurons katex.min.js, auto-render.min.js, katex.min.css depuis le dossier assets et fonts depuis le dossier static (afin que Hugo ajoute tout le répertoire).
Note : Dans les versions de Hugo avant v0.162.0, la création de liens symboliques de fichiers depuis
node_modulesvers les dossiersassetsetstaticétait une approche courante. Cependant, à partir de v0.162.0, Hugo rejette les entrées liées symboliquement dansresources.Getpour des raisons de sécurité (CVE-2026-50135), donc les montages de module sont maintenant l’approche correcte.
D’abord, installez katex via npm :
npm install --save katexEnsuite, ajoutez les montages de module à votre hugo.yaml pour monter le répertoire dist de katex dans assets/vendor/katex et les fonts dans static/css/fonts :
module:
mounts:
- source: assets
target: assets
- source: static
target: static
- source: node_modules/katex/dist
target: assets/vendor/katex
- source: node_modules/katex/dist/fonts
target: static/css/fontsImportant : Quand vous définissez
module.mounts, tous les montages par défaut sont remplacés — donc vous devez explicitement remonterassetsetstaticcomme montré ci-dessus.
Maintenant créez themes/your-theme/layouts/partials/katex.html :
<!-- Include library -->
<link rel="stylesheet" href="{{ (resources.Get "vendor/katex/katex.min.css").RelPermalink }}" />
<script defer src="{{ (resources.Get "vendor/katex/katex.min.js").RelPermalink }}"></script>
<!-- Include auto-render extension & render all KaTeX formulae !-->
<script defer src="{{ (resources.Get "vendor/katex/contrib/auto-render.min.js").RelPermalink }}" onload="renderMathInElement(document.body);"></script>Dans themes/your-theme/layouts/partials/footer.html, incluez conditionnellement le partial :
<!-- Include KaTeX if enabled in post-->
{{ if .Params.katex }}
{{ partial "katex.html" . }}
{{ end }}Ensuite, dans votre fichier de post .md, définissez
katex: truedans le frontmatter pour activer le rendu KaTeX.
Maintenant vous pouvez ajouter une formule telle que
$$\int_0^\infty e^{-x^2} dx = \frac{\sqrt{\pi}}{2}$$à votre post pour la voir rendue par KaTeX :
$$\int_0^\infty e^{-x^2} dx = \frac{\sqrt{\pi}}{2}$$