Proposition php pur
Je trouve que le fait de devoir utiliser un logiciel externe à php n'est vraiment pas pratique: non seulement cela ne fonctionne que sous GNU/Linux, mais en plus cela nécessite les droits d'exécution depuis php. En pratique il n'y a pratiquement aucun hébergeur qui accepte cela... (question de sécurité)
La solution à ce problème est une gestion complète via php. Au niveau de
WikiNi, je pense que le mieux est la création d'une action, qui serait en même temps capable de générer l'image:
- Côté utilisateur, elle fonctionnerait (par exemple) comme ceci: {{math formule="\frac{9 \cdot a_1^3}{b}"}}
- A noter que l'utilisateur devra faire attention à ne pas placer deux accolades fermantes d'affilée. Placer un espace entre ne devrait normalement pas poser de problème.
- Côté programmation, le fichier de l'action aurait deux modes de fonctionnement (ou alors il faudrait deux fichiers)
- en tant qu'action, il s'agirait juste de placer une image dans la page, quelque chose du genre
- <img src="actions/math.php?formule="La formle, urlencodée" title="..."> (pour le title, je propose soit simplement "formule mathématique", soit la formule telle quelle en LaTeX)
- en tant qu'"image", elle travaillerait de façon modulaire: tout d'abord elle parse la chaine pour repérer les appels de fonctions, ensuite elle inclut d'autres fichiers, contenant (à voir) des classes ou des fonctions servant à génerer de plus petites images. Le travail est ainsi divisé en de plus petites tâches, dans mon exemple:
- On évalue le premier couple d'accolades: 9 \cdot a_1^3:
- des fonctions internes permettent de générer des images pour une chaine de carractère (à la bonne taille), ainsi que les indices et les exposants
- On appèle une fonction modulaire, par exemple Latexcdot, qui va générer une image du point
- On recolle les trois images ensemble.
- On évalue le deuxième couple d'accolades pour obtenir une image de "b"
- On passe les deux images générées en argument d'une fonction modulaire, par exemple Latexfrac, qui s'occupe entièrement de générer une nouvelle image sur base de celles-ci.
- Il est certain que ce ne sera pas aussi beau que de vraies images LaTeX, et que ça pourrait dans certains cas s'avérer assez lourd (je n'ai aucune idée des performances de php en matière de création dimage, mais je ne pense pas qu'elles soient vraiment mauvaises...), mais au moins ça fonctionnera, normalement, chez tous les hébergeurs. Par ailleurs rien n'empêche de mettre les images générées en cache (par exemple dans des fichiers dont le nom est la formule, encodée en base 64). (l'idéal étant que ces images ne soient pas mises en cache lors de la prévisualisation, mais seulement lors du premier affichage)
- Je n'ai aucune d'idée de la faisabilité, il est d'ailleurs possible que certaines fonctions LaTeX soient vraiment difficiles à rendre sur base de ce modèle. Il faudrait aussi vérifier la synthaxe des fonctions math, par exemple si les crochets sont parfois utilisés etc.
- Cela m'intéresserait pas mal de me lancer là-dedans, mais PatrikPaul? voulait aussi apparemment travailler là-dessus (voir EnCoursDeDeveloppement) et il ne précise ni ce qu'il a fait, ni où il en est... -- LordFarquaad
Cela ressemble pas mal à mon
ActionLaTeX qui utilise
MimeTeX... par contre je comprends maintenant le problème que j'avais avec deux accolades qui se suivent.
Pour le title et alt de l'image je pense qu'il vaut mieux mettre la formule elle-même car cela permet de faire des copier-coller de formule facilement.
--
SebCls?
Pour faire ce genre de chose il faut utiliser la génération d'images avec PHP la lib GD permet de faire ça.
http://fr.php.net/gd
Encore faut-il qu'elle soit installée sur le serveur sur lequel on héberge son
WikiNi !
--
SebCls?
- Oui en effet, mais je pense que cette extension est installée la plupart du temps. -- DidierLoiseau
Voir aussi
- Dans ActionLaTeX, GulP? nous propose une action "math" en php pur, qui transforme le code LaTeX en html, en n'utilisant les images que pour les symboles qui ne peuvent être représentés autrement. Cette solution me paraît plus simple mais par contre le code HTML produit peut devenir relativement lourd... (on devrait consacrer une page à cette action je trouve, ou alors la ramener ici...) -- DidierLoiseau