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

  • 1

    Autant pour moi ; dans mon dernier message, dernière phrase, je voulais parler de la balise
    <math>.

    • Bonjour, effectivement ce serait mieux sans cette balise ...

      J’utilise pour l’instant le plugin Jsmath qui reconnaît dans un article spip une formule mathématique par la balise $ (comme pour latex). Je pense que ce plugin ne sera plus mis à jour mais remplacé par Mathjax ...

      Je ne sais si c’est possible mais un plugin Mathjax qui reconnaît la syntaxe $\sqrt2$ serait super !

    Répondre à ce message

  • 1
    Guillaume Blanc

    Bonjour,

    Je viens de passer de spip 2.1 à 3.0.17 ; mes articles avec les maths ne fonctionnent plus : si la balise math est là, les équations sont bien affichées, mais pas la mise en page : http://gblanc.fr/spip.php?article529 ; si j’enlève la balise math, la mise en page devient correct, mais évidemment les équations ne sont plus affichées. J’avais le plugin mathjax sous 2.1, je l’ai remis sous 3.0.

    Que puis-je faire ?

    Répondre à ce message

  • 1

    Bonjour,

    En fait, une fois arrangé pour fonctionner sous spip3, le plugin mathjax ne fonctionne pas complétement : il ne reconnait pas un certain nombre d’expression.

    Notamment toutes les expressions du type X_ ... ce qui est plus que génant.

    Quelqu’un a trouvé une solution ?

    Merci

    • Bonjour

      de mon coté X_1 ou X_a fonctionne bien. Par contre je n’arrive pas à exploiter la fonction \cancel, qui permet de barrer des caractères :

      $\require{cancel}
         \cancel{T} 
      $

      Ceci ne m’affiche que \cancelT
      Il en va de même avec le enclose.

      François-Marie

    Répondre à ce message

  • Bonjour,

    je fonctionne sous SPIP 3.0.13 (en local et à sur serveur).
    CFG pour SPIP 3 est installé.

    Pour le moment, j’essaye d’installer MathJax en local.
    Mais, le plugin n’apparaît pas dans l’espace privé/gestion des plugins ? Y-a-t-il quelque chose que je n’ai pas fait ?

    Merci de vos réponses.
    Franck.

    Répondre à ce message

  • Daniel Caillibaud

    Bonjour,

    Si le plugin cfg n’est pas installé, l’installation du module mathjax plante tout le site avec l’erreur

    PHP Fatal error : Call to undefined function lire_config() in .../plugins/auto/mathjax/mathjax_spip_pipelines.php on line 24

    Je suggère la modif suivante dans mathjax_spip_pipelines.php, remplacer

    if (lire_config(’mathjax/mode_dappel’, ’cdn’) == ’cdn’)

    par

    if (!function_exists(’lire_config’) || lire_config(’mathjax/mode_dappel’, ’cdn’) == ’cdn’)

    Répondre à ce message

  • 7

    it seems to work on spip 3.0 :)

    Why don’t you remove the limitation in plugin.xml ?

    • Hi,

      How did you proceed to install mathjax on Spip 3 please ?
      I tried to add to plugin.xml but it doesnt work.

      Thank you.

    • I’ve juste done it. Two steps :
      0) unzip the plugin zip file in a directory .../plugins/mathjax/
      1) unzip the content of https://github.com/mathjax/MathJax/zipball/master in the directory .../plugins/mathjax/lib/mathjax-1.1a/ (you’ll probably have to create it) ;
      2) comment the (near to) last line in plugin.xml :
      <!— —>
      3) Activate the plugin.

    • The « last line » in 2) should read :
      < !— <necessite id=« SPIP » version=« [3.0.3] » />—>

    • Hello,

      Thank you for your reply.

      I try it as soon as possible !

      Thanks

    • It works great, thanks.

      Mais c’est tout de même lent l’accès à http://cdn.mathjax.org/mathjax/latest/MathJax.js .

      Vous parlez de l’installer en local au lieu d’aller chercher le JS sur le site de mathjax, comment fait on ? Installer le Mathjax.js en local permettrait d’accéler l’affichage des pages ?

      merci

    • Oui, bien sûr, il faut l’installer en local. La racine du site spip étant /spip/, le plugin est dans le répertoire /spip/plugins/mathjax/, j’ai créé un répertoire /spip/plugins/mathjax/lib/mathjax-1.1a et y ai dézippé le contenu de la “zipball” https://github.com/mathjax/MathJax/zipball/master, ce qui crée les fichiers suivants :

       config extensions images LICENSE README.md unpacked

       docs fonts jax MathJax.js test

    • Ah d’accord, il est déjà installer comme ceci alors.

      Mais j’ai remarqué que l’accès à cette page : http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML demande toujours un peu de temps.

      Cette ligne est disponible dans le code source de n’importe quelle page quand on active le plugin.

    Répondre à ce message

  • 1

    Lorsque je veux écrire du code \LATEX entre accolade, spip ne calcule pas la formule et affiche le code entre accolade en italique.

    je veux écrire : f^{-1}

    j’obtient : f^-1, -1 en italique au lieu d’être en exposant.

    Merci d’avance !

    • Personnellement, j’utilise

      <math>$f^{-1}$</math>

      pour mettre en exposant.
      Après, sur quelle version de SPIP es-tu ? Tu sais si le javascript de MathJax est bien inclus ?

    Répondre à ce message

  • 3
    Vincent L.

    Bonjour,

    Apparemment, il y a eu du changement dans l’hébergement du projet MathJax.
    Il n’est plus hébergé par Sourceforge, le lien d’installation de la librairie n’est donc plus à jour.

    J’ai essayé de suivre le nouveau lien https://github.com/mathjax/MathJax/, mais la version a apparemment changé. J’ai donc l’impression que la nouvelle librairie et le plugin spip sont imcompatibles.

    • Vincent L.

      J’ai essayé de nouveau aujourd’hui, et ça ne marche toujours pas.

      J’ai essayé la révision du 09/09/2011, mais cela ne suffit pas.

      Il y a une erreur php quand j’active ce plugin.
      Fatal error: Call to undefined function lire_config() in C:\Program Files\EasyPHP-5.3.5.0\www\spip\plugins\mathjax\mathjax_spip_pipelines.php on line 24

      Je trouve aussi que la notice d’Installation de la librairie n’est plus à jour.
      Je ne suis pas sûr qu’il faille dézipper le fichier fonts.zip.

      D’ailleurs, on n’a peut-être plus besoin d’installer la librairie, puisqu’il y a un système de cdn proposé par MathJax.

      C’est moi qui n’ai rien compris ? Est-ce que quelqu’un arrive à faire fonctionner ce plugin ?

    • J’ai mis à jour entièrement le plugin il y a quelques semaines, avec la nouvelle possibilité d’utiliser le CDN de MathJax, il faut pour cela retélécharger la nouvelle version du plugin, tout est configurable avec CFG par la suite.

      Je vais mettre à jour l’article de documentation ;).

    • Vincent L.

      Merci beaucoup pour votre réactivité. Tout fonctionne à présent !

      J’ai trouvé ce qui ne marchait pas pour moi (grâce à votre commentaire) : je ne savais pas qu’il fallait au préalable installer le plugin CFG.

      J’ai relu la notice, elle me semble beaucoup plus claire maintenant. (Peut-être serait-il judicieux d’y souligner la dépendance envers le plugin CFG).

      Bravo à vous, et merci encore une fois. Je suis ravi de pouvoir profiter de MathJax dans mon site Spip.
      Bonne continuation.

    Répondre à ce message

  • 3

    Merci pour ce plugin très intéressant ; je ne connaissais pas MathJax ; c’est vraiment très bien.

    Toutefois il y a des erreurs dans le code du fichier « mathjax_spip_pipelines.php » :

    Lignes 24 et 25 :

    ["\\(","\\)"] et ["\\[","\\]"]
    Il faut coder (on est dans php pour produire du code JS):
    ["\\\(","\\\)"] et ["\\\[","\\\]"]

    Ligne 25 : supprimer la virgule en fin de ligne

    Ligne 29 : supprimer </script> qui est en trop.

    Je crois aussi qu’il faudrait soit supprimer les inputs du type [, ] et \(, \), soit (meilleure solution) les échapper dans la fonction « traiter_math ».

    Enfin une dernière remarque : la balise de SPIP est vraiment malvenue, car elle fait doublon avec celle de MathML ; cela empêche d’utiliser MathJax pour entrer du code MathML dans SPIP.

    • Merci beaucoup ! C’est corrigé par http://www.spip-contrib.net/MathJax-pour-SPIP#forum438553

      Je transmets ta remarque à un développeur :)

    • La balise de SPIP n’empêche rien : il reste possible de bloquer le traitement des raccourcis via <html><math>ici du MathML</math></html> ; autre solution éventuellement, un modèle <mathml | contenu= xxxx>.

    • Tout à fait d’accord.

      Finalement j’ai adopté ce plugin pour un de mes sites (merci encore aux auteurs).
      J’ai seulement rajouté la possibilité de coder le LaTeX entre les délimiteurs \(, )\ et [, ] en plus des $ et $$ (dans le fichier math.php).
      Les formules sont vraiment belles (même en mode HTML/CSS) et j’apprécie aussi la possibilité de faire coder facilement des formules LaTeX au visiteur en interactif.

      Seul inconvénient : l’affichage des formules est parfois trop lent (le JS s’exécute dans le navigateur donc pas de système de cache possible).

    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