Le passage de MathJax à KaTeX est génial pour plein de raison, ne serait-ce que pour la vitesse à laquelle les pages avec des maths se chargent (<3). Le "problème", c’est qu’en terme de fonctionnalité, kaTeX est légèrement en retard en terme de fonctionnalités, ce qui fait que le rendu est un peu bizarre.
Piti état de la situation
Voici une petite liste de ce que j’ai repéré. Hésitez pas à me dire si vous voyez autre chose, mais dans le doute, passez faire un tour par là, qui correspond normalement à ce que ZdS utilise (attention, vous pouvez tomber sur cette page, mais celle-ci présente les fonctionnalités de la version de développement). Il y a également la page "Things that KaTeX does not (yet) support" (pareil, dans ce qui est, je crois, la version actuellement utilisée).
-
Premier changement annoncé ici, l’apparition d’un mode
displayMath
. En gros, le code suivant ne fonctionne plus,$$\begin{array}{cc} a&b\\ c&d \end{array}$$
Par contre, le code suivant fonctionne:
$$ \begin{array}{cc} a&b\\ c&d \end{array} $$
En effet,
acbdC’est plus de peur que de mal, mais ça fait très peur la première fois.
-
Ensuite, c’est l’absence de
\newcommand
qui a fait du dégât chez moi (et chez d’autres, on dirait). La fonctionnalité est déjà présente dans KaTeX depuis le 7 juin, mais je n’ai aucune idée de quand elle sera dans la version stable. Donc pour le moment, c’est non. -
\begin{align}
n’est plus valide (et ne l’a jamais été en LaTeX standard entre dollars). Par contre, il suffit d’utiliser\begin{aligned}
à la place. Du coup,$$ \begin{aligned} y &= m_1 x + p_1 \\ y &= m_2 x + p_2 \end{aligned} $$
Fait bien ce qu’on attend:
yy=m1x+p1=m2x+p2 -
\hline
n’est actuellement pas disponible. Pareil la fonctionnalité est déjà disponible depuis le 12 mai, mais pas dans la version stable. Et je n’ai aucune idée de comment tricher sur ce point (à part jouer avec\rule
, qui est disponible). -
Le point dont tout le monde ce fout, sauf moi, c’est que
\ce{}
n’est pas disponible non plus. La pull request existe, mais c’est pas pour tout de suite
Solution possible ?
On ne passera pas à la prochaine version de KaTeX tout de suite, encore une fois pour de bonnes raisons. En plus, ça ne changerais pas les point 1 et 2. Donc ce que je propose, c’est un "petit" script qui fait une partie du taf de correction (les points 1, 2 et 3, pour être précis).
C’est codé en python et ça s’installe comme tel (j’avoue que je sais pas trop comment faire sous Windows, mais pour Mac et Linux, ça devrait le faire):
pip3 install --user git+ssh://git@github.com/pierre-24/zds-fixcmd.git
(vous n’êtes pas obligé de mettre le --user
, mais alors il faudra avoir les droits administrateur, sinon n’oubliez pas de faire un truc du genre echo 'PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc
)
Une fois que c’est fait, et munis d’une archive d’un de vos contenus problématiques, disons contenu.zip
, vous utilisez simplement la commande:
fix-zdscmd contenu.zip
… Et si tout ce passe bien, vous devriez récupérer une archive nommée contenu.fix.zip
1, que vous pourrez réimporter. Sinon, ça lance un message d’erreur (parfois pas tout à fait explicite).
Ça fonctionne, à défaut de mieux, et ça m’a sauvé un contenu en rédaction dans lequel j’avais un peu abusé de la \newcommand
. Ça vaut probablement pas le temps que j’y ai passé dessus, mais c’est … Satisfaisant
Et pourquoi ne pas intégrer ça au code de zds ?
Pour plein de raisons, mais principalement parce que je ne garanti pas le résultat. Je n’ai aucune idée du nombre de contenu à problème actuellement (j’ai même pas envie de parler des MPs ou des posts, ça serait du suicide), mais si l’expérience de la ZEP-12 (et actuellement celle de la génération de pdf) m’a appris une chose, c’est que la réalité est terriblement moins drôle que les malheureux tests qu’on pourrais créer (et que le débug en prod, c’est pas drôle). D’ailleurs, je préfère encore fixer les contenus au cas par cas si besoin est, faites moi signe si il faut.
C’est tout pour moi
-
vous saviez que l’interface zip de python ne permettait pas de modifier directement un fichier dans une archive, et qu’il fallait absolument en créer une nouvelle ? Moi non. Ici, c’est plutôt une bonne chose, mais ça surprend quand on essaye innocemment.
↩