Knowledge base dedicated to Linux and applied mathematics.
Home > Linux > Software > How to make Latex under PUNBB forums using mimetex?
All the versions of this article: <English> <français>
I show in this tutorial how to make Latex under PUNBB forums using mimetex with a cache system. By reading many forums, a recurring question is asked: how to allow the users to make Latex? That proves quite useful in many cases, in particular when mathematical or physical problems are posed by the users.
Initially, it is necessary to download the mimetex utility. I suppose that you installed a recent version of Punbb in the repository forum of your site, in other words: http://yoursite/forum leads to your Punbb forum, if it is not the case
you must change the ways of the repositories consequently in the following parts.
Mimetex is a cgi script. If you can’t use cgi scripts on your site(Ask your provider), you will not be able to use mimetex.
Important points: in the root of your site
– create a repository cgi-bin
– create a repository latex
– create a repository latex/pictures
– check the rights of latex/pictures: this repository must be in mode writable, we will store in latex/pictures the images generated by mimetex: that’s the cache system. I saw lot of contributions which proposed to the installation of mimetex under PUNBB forums nevertheless in all these contributions anybody does not propose a cache system, the consequences are that the site is then overloaded since with each time a forum is published or read, all the latex formulas are again compiled by mimetex...
I suppose your domain is: www.mydomain.com ou www.mydomain.net ...
We will compile mimetex to obtain the cgi script which we will place in repository cgi-bin in the root of your site. You must compile your file mimetex.c:
gcc -static -DAA -DREFERER=\"mydomain\" -DCACHEPATH=\"../latex/pictures/\" mimetex.c gifsave.c -lm -o latex.cgi
Some explanations:
– the option -DREFERERmakes it possible to specify your domain name that proves to be important insofar as you do not want that one uses your script apart from your site
– the option -DCACHEPATH specifies the repository where the images generated by mimetex will be stored
– latex.cgi is the file generated by compilation, you must place this file in repository cgi-bin.
Do not forget to place latex.cgi in repository cgi-bin.
We now will modify the code of Punbb so that it takes into account latex:
all that will be put between [tex] and [/tex] will be latex.
In the repository include of your Punbb forum, you must find the file parser.php.
– Open up the file parser.php
– Locate the function function do_bbcode($text)
– This function end by return $text;
– Before return $text; insert the following code, without forgetting to adjust the Configuration section:
//----PunBB 1.2.12 Module latex NadirSOUALEM -----
//------------------------Configuration----------------------
// Adjust your cgi-bin
$latex="http://www.yourdomain.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]));
}
//---------------------------------------------------------------
You can visualize what that currently gives on my forum under construction:
Latex under PUNBB forums