MathJax pour SPIP

Plugin pour prendre en charge les expressions Tex dans une balise dans le contenu éditoral de SPIP à l’aide de la librairie Javascript MathJax

Mode d’emploi

Le plugin prend en charge les formules mathématiques au format Tex dans les contenus SPIP.

Par exemple

Si on note $dm$ la masse du tronçon et $\ddot{y}$ son accélération alors le principe de la dynamique nous donne une première relation :
$$
d\vec{F} = dm \ddot{\vec{y}}
$$

Mais comme le signe $ qui délimite les formules au format Tex est un signe commun qui peut être présent dans du contenu éditorial sans indiquer une formule mathématique, il faut encadrer les contenus que l’on veut traiter par une balise <math>...</math>

La plupart du temps, si vous n’avez pas de signe $ autre dans votre texte, vous pouvez encadrer tout le texte

<math>
Si on note $dm$ la masse du tronçon et $\ddot{y}$ son accélération alors le principe de la dynamique nous donne une première relation :
$$
d\vec{F} = dm \ddot{\vec{y}}
$$
</math>

Et les formules seront ainsi transformées comme suit

Par ailleurs sur chaque formule un menu contextuel disponible au clic droit vous permet d’exporter la formule dans le format Tex ou MathML, ainsi que d’accéder à d’autres options

Modèle <math|f=...>

Alternativement à la syntaxe historique de SPIP, il est possible aussi d’utiliser un modèle pour insérer des formules inline sour la forme <math|f=...votre_formule en latex...>

Exemple

<math|f=t=\frac{d}{V_{A}+V_{B}}=\frac{70}{80+60}=\frac{70}{140}=0,5\ h=30\ minutes→12h\ 30\ min>

donne

Cette syntaxe est issue du plugin mathjax_latex, qui devient obsolète par la même occasion, tous les utilisateurs pouvant utiliser ce plugin MathJax et l’une ou l’autre syntaxe selon leur préférence

Configuration

Le plugin peut-être configuré pour utiliser la version CDN de mathjax (par défaut) ou une version téléchargée dans le dossier lib/ de votre site

Configuration avancée de MathJax 3

Si vous voulez utiliser la librairie MathJax de façon avancée, au delà de ce qui est prévu par le plugin, vous pouvez surcharger le fichier js/mathjax-config.json en en mettant une copie dans votre dossier squelettes/ et le modifier à votre guise pour y ajouter les options que vous souhaitez.

Par ailleurs, le plugin utilise par défaut le composant tex-chtml via le fichier tex-chtml.js https://docs.mathjax.org/en/latest/web/components/combined.html#tex-chtml Si votre usage le nécessite vous pouvez utiliser un autre composant, via un define dans votre fichier mes_options.php

define('_MATHJAX_LIB_COMPONENTS','tex-svg.js');
Le plugin chargera alors ce composant à la place de celui par défaut

Discussion

19 discussions

  • 13
    Michel Suquet

    Bonjour,

    je viens de passer à spip4.1(et à php8.1 pour cette occasion)) et votre plugin est compatible, après avoir changé sa borne de compatibilité, il fonctionne ; avec cependant sans doute encore le problème que j’ai signalé quand on met du LaTeX dans une description d’une image.

    Pouvez-vous faire le changement de bornes de compatibilité, [3.0.0 ;4.1.*] ?

    Merci encore une fois pour ce plugin qui nous permet d’utiliser de belles formules mathématiques.

    Cordialement,

    Répondre à ce message

  • 3
    Michel Suquet

    Bonjour,

    je viens de mettre à jour, sur un spip4.1, le plugin en version 1.5 (c’est celui qui est proposé pour la mise à jour) et il y a une erreur :
    Erreur d’exécution ../prive/objets/contenu/article.html | File […]/plugins/auto/mathjax/v1.5.0/inc/math.php Line 87 : Call to undefined function str_contains()

    Sur cette page :
    https://test.apmep.fr/Concours-Advance

    je vois qu’il y a un problème avec le squelette qu’on utilise :
    Erreur d’exécution plugins/spipr-dane-noisettes/noisettes/article-contenu.html | File […]/plugins/auto/mathjax/v1.5.0/inc/math.php Line 87 : Call to undefined function str_contains()

    Ainsi que sur cette page :
    https://test.apmep.fr/Annales-des-concours-niveau-Terminale

    1 Erreur d’exécution plugins/spipr-dane-noisettes/noisettes/rubrique-texte.html | File […]/plugins/auto/mathjax/v1.5.0/inc/math.php Line 87 : Call to undefined function str_contains() 2         Erreur d’exécution plugins/auto/metasplus/v2.4.5/inclure/metasplus/dist.html | File […]/plugins/auto/mathjax/v1.5.0/inc/math.php Line 87 : Call to undefined function str_contains()

    S’il faut plus de détails, merci de m’indiquer lesquels sont nécessaires.

    Cordialement,

    Michel Suquet

    • Hop,

      effectivement c’est une fonction disponible uniquement en PHP 8 ou spip 4.2, mais pas en SPIP 4.1 + PHP 7.4.

      J’ai ouvert un ticket en ce sens, pour que cerdic qui a bossé dessus il y a peu soit au courant.

    • Michel Suquet

      Pour résoudre ce problème, si on passe en php8 cela suffit ?

      À+,

      Michel Suquet

    • Michel Suquet

      on est passé en php8.1 sur notre site de test et avec la version 2.0.0 du plugin : c’est bon, plus d’erreur. On va faire de même sur le site officiel.

      Qu’apporte la 2.0.0 par rapport à la 1.5.0 ?

    Répondre à ce message

  • Bonjour,

    Je viens de faire une mise à jour de SPIP 4.0 vers 4.1 puis 4.2 et je me retrouve dans une configuration où MathJax ne fonctionne que si je désactive la compression des scripts javascript.
    J’héberge en local ma bibliothèque MathJax dans lib/mathjax/ (sans passer par un CDN).

    Dans le cas où je désactive la compression des scripts, je n’ai aucune erreur dans la console du navigateur (juste un warning)

    Dans le cas où j’active la compression des scripts, j’ai deux erreurs 404 qui apparaissent.
    GET https://poivron-robotique.fr/extensions/MathMenu.js?V=2.7.8
    GET https://poivron-robotique.fr/extensions/MathZoom.js?V=2.7.8
    Au lieu d’aller chercher les scripts dans example.com/lib/mathjax/extension, la requête pointe vers example.com/extension

    Quelqu’un a une solution pour ce soucis ?

    Répondre à ce message

  • 5
    Michel Suquet

    Bonjour,

    je viens de mettre à jour le site de l’APMEP Île-de-France en spip4. Votre plugin continue à fonctionner : on peut donc considérer qu’il est compatible avec la version 4.0.0.

    Un bémol toutefois : dans la description des images, il fonctionne en partie, comme vous pouvez le constater pour les figures 54 et 55 par exemple, les fractions ne sont pas reconnues alors que dans le texte il n’y a pas de problème. Pour la version précédente 3.2 de spip, cela fonctionnait.
    https://www.apmep-iledefrance.fr/Le...

    Voyez-vous où se situe le problème ?

    Cordialement,

    Michel Suquet

    • Bonjour,
      j’ai tenté l’installation sous spip 4.0.0 en modifiant la compatibilité dans le fichier paquet.xml mais j’ai toujours « version incompatible ».
      Comment l’avez-vous installé ?
      Merci d’avance

    • Michel Suquet

      Bonjour,

      tout d’abord, vous pouvez lire cet article que je viens de voir :
      Migrer de SPIP 3.2 à SPIP 4.0 : le livre de cuisine

      En ce qui me concerne, j’ai mis en place une sorte de rétro-compatibilité en attendant que tous les plugins se mettent à spip 4, j’ai suivi ce qui est dit dans la FAQ de cet article :https://blog.spip.net/O-mega-c-est-...

      Cordialement,

      Michel Suquet

    • Merci Michel,
      j’ai finalement réussi à installer ce plugin. Je n’avais pas mis 4.0.0 avant 4.0.x dans paquet.xml.
      Au passage, j’ai le même problème avec les légendes : les accolades empêchent l’appel à mathjax.
      Un contournement possible est d’écrire \{ et \} si besoin d’accolades.
      J’ai un autre problème avec mon site : dans la partie privée, les formules sont à la bonne taille mais pas dans la partie publique, Exemple : https://cmath.xyz/spip.php?article132
      Je suppose qu’il faut que je fouille dans les feuilles de style...
      Cdt

    • Michel Suquet

      Bonjour Christophe,

      Un grand merci pour cette astuce des accolades ! Cela fonctionne.

      Heureusement que ce n’est que dans les légendes que le problème se pose !

      Je me demande si cela est dû au plugin ou à spip 4 car avec spip 3.2 il n’y avait pas ce problème. Par contre, je ne sais pas le corriger :-(

      Pour le problème de la taille de la formule affichée, je me demande s’il ne faut pas rajouter un d à \frac qui devient \dfrac, ou alors un \displaystyle ?

      Quel squelette utilises-tu ? ← c’est juste par curiosité. J’ai remarqué que selon les squelettes utilisés, l’affichage peut varier.

      Cordialement,

      Michel Suquet

    • Je pense qu’il doit s’agir d’un problème d’interprétation des accolades dans les légendes (les accolades signifient italique en spip) qui passe avant la transmission des formules à mathjax, ce qui fait que la formule n’est pas syntaxiquement correcte et donc non interprétée.
      Je crains qu’il faille modifier des fonctions internes de spip et donc transmettre ce bug aux développeurs.

      Pour la taille, cela concerne toutes les formules, pas seulement les fractions. En comparant le code source des parties privée et publiques, j’ai constaté des différences de . Mais je suis incapable de savoir qui influence la taille : spip ? mathjax ? le plugin ? Bref c’est pas gagné.

      Mon squelette est spipr : https://spipr.nursit.com/
      A+

    Répondre à ce message

  • 3
    Michel Suquet

    Bonjour,

    pour utiliser votre plugin, il est nécessaire d’apporter une modification en mettant https à la place de http dans le fichier suivant :
    https://git.spip.net/spip-contrib-extensions/mathjax/src/branch/master/mathjax_pipelines.php#L26

    Cordialement,

    Michel Suquet

    Répondre à ce message

  • Bonjour,

    J’ai un peu galérer pour faire fonctionner le plugin :

    • L’utilisation du plugin avec le cdn proposé ne fonctionnait pas. Apparemment ça bloque pour les sites en httpS
    • En l’utilisant sans le CDN mais avec la lib proposée, j’avais des soucis et des formules ne s’affichaient pas.

    Finalement, je suis revenu au réglage « Par CDN » et ai corrigé le fichier mathjax_pipelines.php ligne 26 pour changer l’appel du js.
    //cdn.mathjax.org/mathjax/latest/MathJax.js
    à la place de :
    http://cdn.mathjax.org/mathjax/latest/MathJax.js

    Du coup ça fonctionne.

    Seul souci : lors de l’enregistrement d’un contenu SPIP les formules ne sont pas interprétées. Il faut actualiser la page pour qu’elle le soit.

    Répondre à ce message

  • Bonjour,
    Existe-t’il une version compatible SPIP 3.2

    Répondre à ce message

  • 12
    Jean-Eric

    Bonjour,
    Existe-t’il une version compatible SPIP 3.1.1 [22913]
    Merci
    JE

    Répondre à ce message

  • 4
    Jean-Eric

    Est-ce que ce code marche chez vous ?

    <math>
    $$
    \begin{tabular}{rcl} 
    X_F & =& R_F \cos\theta_F \\ 
    Y_F & =& R_F \sin\theta_F
    \end{tabular} 
    $$
    </math>
    • en LaTeX même ce code ne marche pas.

      ca oui

      \begin{tabular}{rcl} 
      $X_F$ & $=$& $R_F \cos\theta_F$ \\ 
      $Y_F$ & $=$& $R_F \sin\theta_F$
      \end{tabular}

      (même si l’emploi de l’environnement align de amsmath serait mieux).

      Après je n’ai pas ’install du plugin pour tester…

    • Jean-Eric
      • le code tel quel dépend de l’environnement
      • si amslatex est compris par MAthJax Super !

      Merci
      JE

    • aucune idée…

    • Jean-Eric

      si ca marche nettement mieux
      \begin{align*} \end{align*}
      En 2008 qd j’avais ecrit mes articles ca ne fonctionnait pas.

    Répondre à ce message

  • Yves Biton

    Bonjour.

    Je suis l’auteur du logiciel MathGrap32. Ce logiciel permet l’exportation de figures en html dans un SVG. La bibliothèque JavaScript utilisée pour l’exportation la librairie MathJax (en fait une copie sur le site de Sesamath) mais en mode SVG pour la sortie.
    Elle est donc pour le moment incompatible avec votre plugin qui utilise me semble-t-il par défaut une sortie en html.

    Ma question : Est-il possible de configurer soi-même La façon dont MathJax est utilisé par votre plugin ? (J’espère que oui). Et si ou comment ?

    Merci d’avance de votre réponse.

    Yves Biton.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom