Une alternative à MathJax ?

a marqué ce sujet comme résolu.

Un système mixte, avec un parseur maison qui passerait la main à MathJax-SVG pour les formules les plus complexes serait sûrement le plus léger, mais ça rend naturellement le code côté serveur plus compliqué.

Sauf que le problème se présente sur des pages chargées en maths, avec des formules "compliquées". Donc il y a deux problèmes, déterminer à l'avance ce qu'est une formule compliquée ou pas est un problème lui-même compliqué, et surtout il y a de fortes chances pour que ça ne change strictement rien du tout (ou très peu) au problème du temps de chargement des pages.

Sauf que le problème se présente sur des pages chargées en maths, avec des formules "compliquées".

Oui et non. Une part non négligeable du temps de chargement vient de tous les petits bouts de maths disséminés autour des grosses formules.

déterminer à l'avance ce qu'est une formule compliquée ou pas est un problème lui-même compliqué

Je pensais à un truc tout bête, en fait : si le parseur maison rencontre un truc qu’il ne comprend pas, c’est une formule compliquée.

et surtout il y a de fortes chances pour que ça ne change strictement rien du tout (ou très peu) au problème du temps de chargement des pages.

Je n’ai peut-être pas été assez explicite : je parle bien évidemment de passer la main à MathJax côté serveur et de n’envoyer à l’utilisateur que le HTML généré, réduisant le temps de chargement supplémentaire des maths à zéro (nonobstant ma remarque de plus haut sur le poids plus important).

+0 -0

Une part non négligeable du temps de chargement vient de tous les petits bouts de maths disséminés autour des grosses formules.

On a déjà été obligé de mettre en place des contournements comme écrire a (**a**) plutôt que $a$ ($a$) bien que ça fasse une mise en page différente dans les formules.

Typiquement, on écrit :

À l'époque, on connait déjà la loi des gaz parfait, à savoir

$$PV=NkT$$

P est la pression du gaz, V son volume, T sa température (en Kelvin), N le nombre de particules et k une constante, qui vaut $1,\!3810^{−23}J K^{−1}$.

plutôt que

À l'époque, on connait déjà la loi des gaz parfait, à savoir

$$PV=NkT$$

$P$ est la pression du gaz, $V$ son volume, $T$ sa température (en Kelvin), $N$ le nombre de particules et $k$ une constante, qui vaut $1,\!3810^{−23}J K^{−1}$.

Ce qui dégrade le rendu.

+0 -0

On a node dans la stack dev, c'est à dire qu'il est utilisé pour générer des trucs à la mise en prod, mais il ne me semble pas qu'on ai un serveur node qui tourne en permanence (ce qu'il faudrait pour traiter tous les messages)

Sinon, pour ceux qui veulent essayer Katex, pour information la dernière mouture de Zest Writer l'utilise pour le rendu des formules mathématiques.

C'est l'occasion pour certains de voir les limites de l'outil. Mais de ce que j'ai pu voir, il est diablement plus léger/fluide que MathJax.

Est-ce qu'on a des nouvelles ?

Juste pour rire, je vous copie-colle un échange entre la validation et moi :

Valido : Je ne suis vraiment pas fan du gras pour les maths à la sauce inline. Ça rend les notations moins claires à mon avis, parce qu'on doute quand on les voit en rendu « math ». (Note : c'est ce dont je parle 6 message plus haut, on contourne MathJax, ce qui donne un rendu différent dans les équations et le texte).

Moi : Si tu pense qu'il est préférable d'utiliser une autre notation, d'accord. Cependant, je ne peux pas utiliser la balise maths : MathJax est lent et, en partie à cause de l'annexe, la page est déjà assez lente à charger avec un PC pas tout récent. Si je lui demande de parser une vingtaine de petit truc en plus, je crains que le tuto devienne illisible (on a eu le cas avec Holosmos) — le ralentissement vient aussi bien de nombreux petites formules que de quelques grosses.

Mon parti pris est de mettre du gras partout où c'est possible, et de réserver les maths aux formules et au nombre avec une puissance de 10. Si tu pense qu'il est préférable de les mettre en italique, ou sans rien, ok, mais utiliser la balise math, ça ne va pas techniquement marcher. J'en suis le premier désolé. :(

Valido : Ouais, c'est ce que je craignais. Tu peux peut-être alléger avec les idées suivantes :

  • pour les puissances de dix, un mélange Unicode pour le point multiplicatif et exposant markdown : 2·10^25^ donne ça : 2·1025
  • pareil pour les petites multiplication avec la croix ⨯ qui est dans Unicode.
  • ℓ existe aussi dans unicode, comme Δt (la police est différente, mais on peut mettre en italique et ça passe bien je trouve). Ça peut s'appliquer aussi à sigma, etc.

Si le rendu te convient, ça peut être une solution pour alléger, ou mettre un peu de inline là où l'italique à une sale tête. Par exemple W ne ressemble pas trop à $W$ à cause de la police sérif des maths.

On est d'accord pour dire que cet échange est ubuesque, j'imagine.

Et à chaque fois que quelqu'un propose d'ajouter une option super fun au rendu math (comme la numérotation des équations — que j'ai du demandé de faire à la main lors d'une validation pour aider à la lisibilité), il faut s'assurer que ça ne bouffe pas encore plus de ressources, ce qui est souvent le cas.

Bref, en deux semaines, MathJax m'a encore enquiquiner trois fois, et de manière original à chaque fois.

+0 -0

Sinon, pour avoir implémenté Katex dans Zest Writer, j'ai essayer de faire un essai sur les tutoriels du site en ouvrant celui-ci dans mon éditeur, et grosso modo, il y'a "presque" tout qui passe. On peut le voir sur les images ci-dessous :

Tous les symboles sont reconnus

Même ceux qu'on ne soupçonne guère

Par contre, là ou je n'ai pas le rendu qui va bien c'est des formules du tutoriel comme :

$$\underbrace{2+2-4}_0$$
ou encore
$$\overbrace{2+2}-4$$
ou même
$$\mathrm \LaTeX$$

Un exemple de mauvais rendu avec $\mathrm \LaTeX$

Il se peut que je n'ait pas configuré Katex correctement non plus pour les formules qui ne marchent pas (vraiment pas beaucoup). Par contre, celles qui fonctionnent bien, c'est diablement plus rapide que Mathjax

Ça peut être pratique que tu liste des exemples qui ne fonctionnent pas pour se faire une idée.

De mémoire la Kahn academy utilisent katex avec un mathjax en fallback quand ce premier ne fonctionne pas. Je ne sais pas si c'est automatique mais si c'est le cas, ce serai là solution. Tu peux creuser ça ?

Ça peut être pratique que tu liste des exemples qui ne fonctionnent pas pour se faire une idée.

Les fonctionnalités supportés par KaTeX sont ici. Par contre ce sont celles de la branche master et pas nécessairement de la dernière version en release.

La majorité des symboles fréquemment utilisés sont supportés, je regarde ce que j’obtiens sur ZestWriter avec le tutoriel «  Comment rédiger des maths sur Zeste de Savoir ? ».

De mémoire la Kahn academy utilisent katex avec un mathjax en fallback quand ce premier ne fonctionne pas.

Ce serait une très bonne chose.

EDIT : dans le tutoriel sur la rédaction des maths, voici ce qui ne passe pas.

  • \LaTeX.
  • \overbrace.
  • \underbrace.
  • array.
  • \nexists (le symbole n’est pas bon).
  • \measuredangle (le symbole n’est pas bon).
  • \sphericalangle (le symbole n’est pas bon).
  • \overrightarow.
  • \complement (le symbole n’est pas bon).
+0 -0

De mémoire la Kahn academy utilisent katex avec un mathjax en fallback quand ce premier ne fonctionne pas. Je ne sais pas si c'est automatique mais si c'est le cas, ce serai là solution.

+1. Quand je vois la liste des trucs manquant, je me dis qu'une immense partie des maths passera, et presque tout les tuto.

+0 -0

Une autre solution serait une activation sur demande, comme JsFiddle. En effet, MathJax marche pour la plupart des tuto, et les rares à avoir eu de vrais problèmes avec sont à ma connaissance Holosmos et moi. Si on pouvait dire que c'est katex pour un contenu, et MathJax par défaut, ça pourrait permettre de tester, sans avoir de fallback à mettre en place.

Je propose dans l'hypothèse où ce serait plus simple à mettre en place.

+2 -0

On laisse MathJax.

Le problème de MathJax, c'est sa lourdeur. Le plus sensible, c'est quand il y a beaucoup de formules sur la même page, ce qui est très rare sur le forum (ou des maths mal formées, ce qui est plus fréquent).

Si c'est moins compliqué à mettre en place, ce serait l'occasion d'essayer sans tout péter. :D

+0 -0

Ça peut être pratique que tu liste des exemples qui ne fonctionnent pas pour se faire une idée.

Kje

Je crois que Karnaj a tout relevé.

De mémoire la Kahn academy utilisent katex avec un mathjax en fallback quand ce premier ne fonctionne pas. Je ne sais pas si c'est automatique mais si c'est le cas, ce serai là solution. Tu peux creuser ça ?

Kje

Aujourd'hui ce n'est pas quelque chose d'automatique, il existe une même une issue (sans réponse chez MathJax) pour intégrer Katex pour améliorer les perfs. Mais il est possible de faire le fallback nous même avec un poil de JS (voir ce codepen pour un début de solution).

Donc je pense que ça serait la solution toute indiquée ici (Katex par défaut avec MathJax en fallback quand Katex ne fait pas le job). Quelqu'un voit un souci avec cette façon de faire ?

Je remonte ce sujet car au boulot on a mit en place katex (on a beaucoup d’équations de math aussi). Ça va beaucoup plus vite et mathjax est lancé en fallback quand katex n’y arrive pas.

On pourrait faire de même sur zds, non ?

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte