! [spip-dev] raccourci <math>...</math>

Coucou,

Deux nouveautés :

1) le -- fait un semi-cadratin (&mdash;) et gère l'insécable s'il est suivi
   d'une virgule.

2) plus important : le raccourci <math>...</math> est intégré en standard
   dans les fonctions typo() et propre()

Ca raccourci permet d'éditer des formules mathématiques et les transforme en
image via le programme TeX (http://www.tug.org/)

Ainsi par exemple <math>\int_1^\infty \frac{1}{x^2} dx</math> va vous donner
une jolie intégrale.

Evidemment, nous n'avons pas intégré TeX dans la distribution de SPIP ; en
cela, ce raccourci représente une énorme nouveauté : il fonctionne en mode
"client/serveur", ce qui nécessite quelques explications.

Lorsque le moteur de SPIP voit une formule, il regarde d'abord s'il n'a pas
déjà l'image correspondante dans le répertoire IMG/TeX/ (les images sont
stockées en png, une image par formule).

Si l'image n'est pas là, il se connecte à un serveur extérieur (défini dans
ecrire/inc_version.php3) et demande à ce serveur de lui composer l'image
correspondant à la formule. Si le serveur répond (!!), le moteur de SPIP
enregistre l'image en local. Cela ne se produit donc qu'une fois.

Si l'image n'est toujours pas là (pas de serveur défini, ou erreur de
transmission), la formule s'affiche "en clair" avec la feuille de style
spip_code.

Pour résumer :

* si vous utilisez des formules, le site devient dépendant du bon
  fonctionnement d'un serveur extérieur, mais seulement au moment où vous
  visualisez la formule pour la première fois.

* si quelqu'un entre une formule pour la première fois dans le site (espace
  privé ou forum) cette formule est envoyée à un serveur extérieur : si vous
  n'avez pas confiance dans ce serveur, ou si vous fonctionnez en local, ça
  peut être un problème : il faut alors mettre, dans
  ecrire/mes_options.php3, une ligne disant :
        $spip_server['math'] = '';

* si vous avez un usage intensif de ce raccourci (université de maths...),
  et que vous ne voulez pas dépendre de ‘math.spip.org’, le serveur proposé
  en standard, vous pouvez configurer votre propre serveur et l’indiquer à
  SPIP en mettant, dans ecrire/mes_options.php3, une ligne disant :
        $spip_server[‘math’] = ‘http://mon.serveur.a.moi/tex.php’;

  Le code du serveur se trouve ici :
        http://wiki.rezo.net/test/TeX

* Dernière remarque importante : math.spip.org est un serveur public, et à
  ce titre :
        - il faut le "respecter" : ne pas lui envoyer 2000 formules juste
          pour voir, ne pas essayer de le craquer (si vous voulez tester
          la sécurité, installez-le chez vous et dites-nous où sont les
          trous), etc.
        - vous pouvez contribuer des ressources (si vous avez installé un
          serveur de TeX, et que vous souhaitez le mettre dans le pool des
          serveurs utilisables par la communauté, merci de nous écrire).

Ce passage en mode client/serveur a des chances d'être une des nouvelles
pistes de développement de SPIP : le correcteur d'orthographe qui est sur
les rails sera lui aussi livré sous cette forme ; l'aide en ligne pourrait
passer en client/serveur, etc. Il est donc important d'en étudier les
conséquences (privacy, communauté, etc).

-- Fil

Lorsque le moteur de SPIP voit une formule, il regarde d'abord s'il n'a pas
déjà l'image correspondante dans le répertoire IMG/TeX/

  Et si on change la formule, il le détecte ? y'à un hash dessus comme
pour le cache ?

* si vous utilisez des formules, le site devient dépendant du bon
  fonctionnement d'un serveur extérieur,

Et il faut donc que le serveur ou tourne spip sache aller à l'extérieur
=> peut nécessité de spécifier un proxy sortant.
=> nécessite aussi de lister les hébergeurs qui l'autorise.

* Dernière remarque importante : math.spip.org est un serveur public, et à
  ce titre :
        - il faut le "respecter" : ne pas lui envoyer 2000 formules juste
          pour voir, ne pas essayer de le craquer (si vous voulez tester
          la sécurité, installez-le chez vous et dites-nous où sont les
          trous), etc.

  Avec LaTeX, dès qu'un formule est un peu compliquée, il faut
l'essayer 40 fois avant d'obtenir ce qu'on veut. Du coup, le serveur
risque d'être pas mal tabassé sans que ce soit volontaire.

À+, Pif.

> Lorsque le moteur de SPIP voit une formule, il regarde d'abord s'il n'a pas
> déjà l'image correspondante dans le répertoire IMG/TeX/
  Et si on change la formule, il le détecte ? y'à un hash dessus comme
pour le cache ?

Oui : md5(trim($formule)).".png"

Par contre pas d'effacement prévu même quand on "vide le cache" (à faire,
peut-être, mais ça a d'autres implications, notamment parce que si on met
ces images dans le CACHE/ il faut un système pour les lire, vu que le
répertoire CACHE n'est pas censé être accessible de l'extérieur).

> * si vous utilisez des formules, le site devient dépendant du bon
> fonctionnement d'un serveur extérieur,
Et il faut donc que le serveur ou tourne spip sache aller à l'extérieur
=> peut nécessité de spécifier un proxy sortant.

ça utilise le même proxy que la syndication de sites.

=> nécessite aussi de lister les hébergeurs qui l'autorise.

Il faut peut-être gérer une période de "retrait" quand la connexion au
serveur n'a pas réussi ? Une date dans la table spip_meta ?

> * Dernière remarque importante : math.spip.org est un serveur public, et à
> ce titre :
> - il faut le "respecter" : ne pas lui envoyer 2000 formules juste
> pour voir, ne pas essayer de le craquer (si vous voulez tester
> la sécurité, installez-le chez vous et dites-nous où sont les
> trous), etc.
  Avec LaTeX, dès qu'un formule est un peu compliquée, il faut
l'essayer 40 fois avant d'obtenir ce qu'on veut. Du coup, le serveur
risque d'être pas mal tabassé sans que ce soit volontaire.

Tant que tu tapes tes formules à la main, ça va. Là où ça devient méchant
c'est si tu envoies l'annuaire ligne par ligne au serveur :slight_smile:

-- Fil

Bon, promis, la prochaine fois je commence par regarder le code ...
        $fichier = "$dir/".md5(trim($texte)).'.png';

Par contre, si on modife 12 fois une formule, les 11 exemplaires
précédents restent sur le disque.

À+, Pif.

Bonjour,

Ce passage en mode client/serveur a des chances d'être une des nouvelles
pistes de développement de SPIP : le correcteur d'orthographe qui est sur
les rails sera lui aussi livré sous cette forme ; l'aide en ligne pourrait
passer en client/serveur, etc. Il est donc important d'en étudier les
conséquences (privacy, communauté, etc).

Ce nouveau fonctionnement est tout à fait épatant !

Par contre, attention à tous ceux qui sont en local ou sur des réseaux locaux, notamment pour des fonctionnalités telles que l'aide en ligne.

-Nicolas

Hi,
I wrote a contrib about resizing images and, with some good suggestions I
received from Jean Luc Girard, I added a routine that deletes unused resized
images. Maybe this delete strategy can be usefull for unused tex images too.

The concept is simple:
-you set the delay between two maint routine calls.
-you touch used images once per delay (file time<last maint time). This
could be done in spip "calcul" code that matches the <math> tag.
-when it's maint time, you delete images in IMG/TeX you didn't touch (file
time<last maint time)

So used images won't be deleted. Not used images will be deleted...together
with images still usefull but not requested for a long time (the delay
between two maints).

This delay should be long enough to minimize the effect of deleting rarely
viewed images (let's say about a week or two).

If someone is interested in this code you can find it on
http://www.spip-contrib.net/ecrire/articles.php3?id_article=572

Renato

-----Messaggio originale-----

Fil a écrit :

le raccourci <math>...</math> est intégré en standard
   dans les fonctions typo() et propre()

Hello,

C'est vraiment génial.

J'ai rencontré un petit problème en l'installant: le répertoire IMG/TeX ne se crée pas. En remplaçant @mkdir par mkdir dans la fonction image_math(), j'obtiens l'erreur suivante:

Warning: Wrong parameter count for mkdir() in /home/schreuer/www/spip.agora.eu.org/ecrire/inc_filtres.php3 on line 679

Je ne sais pas à quoi c'est dû (ça vient peut-être de chez moi).

J'ai donc créé le repértoire TeX à la main et ça fonctionne.

Autre (petit) problème: j'ai placé quelques formules dans un article avec peu de texte et, en utilisant la balise #INTRODUCTION, spip me renvoie le code latex: http://francois.schreuer.org/IMG/png/spip_tex.png (je ne vois pas trop ce qu'on pourrait faire d'autre mais ce n'est pas très joli).

Une question quand même: pourquoi ne pas utiliser l'option proposée par tex2im permettant de renvoyer les images sur fond transparent plutôt que sur fond blanc? Ca passerait sans doute mieux dans certaines mises en page.

François

Fil a écrit :

2) plus important : le raccourci <math>...</math> est intégré en standard
   dans les fonctions typo() et propre()

Tiens, au passage, on vient de gagner l'antispam le plus efficace qui soit.

François

>2) plus important : le raccourci <math>...</math> est intégré en standard
> dans les fonctions typo() et propre()

Tiens, au passage, on vient de gagner l'antispam le plus efficace qui soit.

Ca va pas la tête ?? "Ne pas abuser" : c'est pour faire des maths...

-- Fil

J'ai rencontré un petit problème en l'installant: le répertoire IMG/TeX
ne se crée pas. En remplaçant @mkdir par mkdir dans la fonction
image_math(), j'obtiens l'erreur suivante:

Argh, peut-être creer_repertoire() serait plus indiqué...

Autre (petit) problème: j'ai placé quelques formules dans un article
avec peu de texte et, en utilisant la balise #INTRODUCTION, spip me
renvoie le code latex: http://francois.schreuer.org/IMG/png/spip_tex.png
(je ne vois pas trop ce qu'on pourrait faire d'autre mais ce n'est pas
très joli).

Ah oui, en effet. Aucune meilleure idée...

Une question quand même: pourquoi ne pas utiliser l'option proposée par
tex2im permettant de renvoyer les images sur fond transparent plutôt que
sur fond blanc? Ca passerait sans doute mieux dans certaines mises en page.

Euh, oui, en effet, je n'y avais pas pensé. Ca ne fera pas du blanc sur fond
noir, mais bon... pourquoi pas.

-- Fil

> Tiens, au passage, on vient de gagner l'antispam le plus efficace qui soit> Ca va pas la tête

??

"Ne pas abuser" : c'est pour faire des maths...

Vous pouvez toujours mettre un filtre qui récupère les email à l'entrée du serveur latex, ça
devrait permettre de payer la connexion du serveur ....

Julien

Créez gratuitement votre Yahoo! Mail avec 100 Mo de stockage !
Créez votre Yahoo! Mail sur http://fr.benefits.yahoo.com/

Dialoguez en direct avec vos amis grâce à Yahoo! Messenger !Téléchargez Yahoo! Messenger sur http://fr.messenger.yahoo.com

> "Ne pas abuser" : c'est pour faire des maths...

Vous pouvez toujours mettre un filtre qui récupère les email à l'entrée du serveur latex, ça
devrait permettre de payer la connexion du serveur ....

Excellente remarque ! :slight_smile:

-- Fil

Fil wrote:

Coucou,

Deux nouveautés :

1) le -- fait un semi-cadratin (&mdash;) et gère l'insécable s'il est suivi
   d'une virgule.

2) plus important : le raccourci <math>...</math> est intégré en standard
   dans les fonctions typo() et propre()

Ca raccourci permet d'éditer des formules mathématiques et les transforme en
image via le programme TeX (http://www.tug.org/)

Ainsi par exemple <math>\int_1^\infty \frac{1}{x^2} dx</math> va vous donner
une jolie intégrale.

Génial!

J'ai même essayé une astuce de windozien paresseux, et elle marche:

1) j'installe TexAide (Create and edit math equations with MathType | Wiris), proposé gratuitement par MathType (désolé pour la pub pour un produit propriétaire),
2) j'édite ma formule (même interface que l'éditeur d'équation de MachinSchose),
3) je sélectionne toute ma formule, et je la copie dans mon article en cours d'édition sous SPIP, entre <math> et </math> que je viens de taper.

Et c'est tout. Je n'ai même pas eu besoin d'effacer toutes les saletés que mathtype a ajoutées avant le tex. Je l'ai fait pour que ce soit plus propre, mais ça marche même en les laissant.

Salutations

Yves Grenier

Renato Formato wrote:

Hi,
I wrote a contrib about resizing images and, with some good suggestions I
received from Jean Luc Girard, I added a routine that deletes unused resized
images. Maybe this delete strategy can be usefull for unused tex images too.

Oui ce serait utile et adapté.
A tester largement aussi.
JLuc

Fil wrote:

Coucou,

Deux nouveautés :

1) le -- fait un semi-cadratin (&mdash;) et gère l'insécable s'il est suivi
   d'une virgule.

Oui mais alors ---- ne devient plus le trait de séparation horizontal, puisque ce sont deux &mdash; l'un derrière l'autre. Ou alors il y a un autre raccourci pour le <hr> (je n'ai peut-être pas tout suivi).

Cordialement

Yves Grenier

Yves Grenier wrote:

Et c'est tout. Je n'ai même pas eu besoin d'effacer toutes les saletés que mathtype a ajoutées avant le tex. Je l'ai fait pour que ce soit plus propre, mais ça marche même en les laissant.

Je me réponds pour dire qu'il vaut quand même mieux les effacer, car au survol, ce n'est pas très joli ces insanités qui apparaissent au lieu de la formule en tex (logée dans l'attribut "alt" ou "title").

Yves Grenier

> 1) le -- fait un semi-cadratin (&mdash;) et gère l'insécable s'il est suivi
> d'une virgule.

Oui mais alors ---- ne devient plus le trait de séparation horizontal,
puisque ce sont deux &mdash; l'un derrière l'autre. Ou alors il y a un
autre raccourci pour le <hr> (je n'ai peut-être pas tout suivi).

Non, c'est juste un petit bug. Il suffit de considérer que seuls deux
tirets consécutifs (et pas plus) constituent un tiret long (cf. patch
sur spip-lab).

a+

Antoine.