Je montre dans ce tutoriel comment faire du LateX sous les forums PUNBB à l’aide de l’utilitaire mimetex en utilisant un système de cache. En lisant de nombreux forums, une question récurrente est posée:

comment permettre aux utilisateurs de faire du LaTeX ? Cela s’avère bien utile dans de nombreux cas, notamment lorsque des problèmes d’ordre mathématique ou physique sont posés par les utilisateurs.

Préambule

Dans un premier temps, il est nécessaire de télécharger l’utilitaire mimetex. Dans un second temps, je suppose que vous avez installé une version récente de Punbb dans le répertoire {forum} de votre site, autrement dit: https://yoursite/forum mène à  votre forum Punbb, si ce n’est pas le cas à  vous d’adapter ce qui va suivre en changeant en conséquence les chemins des répertoires.

Mimetex est un script cgi, pour qu’il fonctionne votre hébérgeur doit vous autoriser à  lancer des scripts cgi. Si ce n’est pas le cas, vous ne pourrez pas utiliser mimetex.

Points importants: à  la racine de votre site

  • créer un répertoire cgi-bin
  • créer un répertoire latex
  • créer un répertoire latex/pictures
  • vérifier les droits de latex/pictures: ce répertoire doit àªtre en mode écriture (writable), c’est dans ce répertoire que l’on va stocker les images déja généré par mimetex, de cette manière on va crée un système de cache pour ne pas relancer notre script cgi. J’ai vu pas mal de contribution qui proposait l’installation de mimetex néanmoins dans toutes ces contributions personne ne propose un système de cache, les conséquences sont que le site est alors surchargé puisque à  chaque fois qu’un forum est édité ou lu, toutes les formules latex sont de nouveau compilées par mimetex …

Compilation de mimetex

Supposons que votre domaine soit: www.mondomaine.com ou www.mondomaine.net … Nous allons compiler mimetex pour obtenir le script cgi que nous placerons ensuite dans le répertoire cgi-bin à  la racine de notre site. Vous devez compiler votre fichier {mimetex.c}:

gcc -static -DAA -DREFERER=\"mondomaine\" -DCACHEPATH=\"../latex/pictures/\" mimetex.c gifsave.c -lm -o latex.cgi

où Quelques explications:où

  • l’option -DREFERER permet de spécifier votre nom de domaine cela s’avère important dans la mesure o๠vous ne voulez pas que l’on utilise votre script en dehors de votre site, en effet parfois certaines personnes voudront utiliser votre script et j’en ai vu croyez-moi !!!
  • l’option -DCACHEPATH spécifie le répertoire o๠seront stockées les images générées par mimetex
  • latex.cgi est le fichier généré par la compilation, vous devez placer ce fichier dans le répertoire cgi-bin.

Donc n’oubliez pas de placer latex.cgi dans le répertoire cgi-bin.

Modification du parseur PUNBB

Nous allons à  présent modifier le code de Punbb pour qu’il prenne en compte le latex: tout ce qui sera mis entre les balises [tex] et [/tex] sera considéré comme du latex. Dans le répertoire {include} de votre forum Punbb, se trouve le fichier parser.php.

  • à‰diter le parser.php
  • Rechercher la fonction function do_bbcode($text)
  • la fin de cette fonction se termine par return $text;
  • juste avant return $text; insérez le code suivant, sans oublier d’ajuster la section Configuration:
//----PunBB 1.2.12 Module latex Nadir SOUALEM ----
//------------------------Configuration----------------------
//ajuster ici en spécifiant votre cgi-bin 
$latex="http://www.votredomaine.com/cgi-bin/latex.cgi?";
//----------------------FIN Configuration-------------------
preg_match_all("#\[tex\](.*?)\[/tex\]#si",$text,$tex_matches);
for ($i=0; $i < count($tex_matches[0]); $i++)
{
	$pos = strpos($text, $tex_matches[0][$i]);
	$formula = html_entity_decode($tex_matches[1][$i]);			
	$formula = str_replace("\r","",$formula);
	$formula = str_replace("\n","",$formula);
	$formula = preg_replace("/ {2,}/", " ", $formula);
	$img_url = $latex.$formula;
	$text=substr_replace($text,"<img src=\"$img_url\" title=\"$formula\" alt=\"$formula\" align=\"absmiddle\" \>",$pos,strlen($tex_matches[0][$i]));
}
//---------------------------------------------------------------