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

3 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

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