// choose the type of the declaration according to your server settings (some servers don't accept the dirname(__FILE__) command for security reasons).
// NEW in 0.3 version : no more / at the end of $dirfonts and $dirimg
// absolute path to the fonts directory
class GlobalVar
{
    public static $dirfonts;
    public static $dirimg;
    public static $symboles;
    public static $fontesmath;
}
GlobalVar::$dirfonts = __DIR__ . "/fonts";
// absolute path to the images directory
GlobalVar::$dirimg = __DIR__ . "/img";
//******************************************************************
GlobalVar::$symboles = array('~' => ' ', 'alpha' => '&#174;', 'beta' => '&#175;', 'gamma' => '&#176;', 'delta' => '&#177;', 'epsilon' => '&#178;', 'varepsilon' => '&#34;', 'zeta' => '&#179;', 'eta' => '&#180;', 'theta' => '&#181;', 'vartheta' => '&#35;', 'iota' => '&#182;', 'kappa' => '&#183;', 'lambda' => '&#184;', 'mu' => '&#185;', 'nu' => '&#186;', 'xi' => '&#187;', 'pi' => '&#188;', 'varpi' => '&#36;', 'rho' => '&#189;', 'varrho' => '&#37;', 'sigma' => '&#190;', 'varsigma' => '&#38;', 'tau' => '&#191;', 'upsilon' => '&#192;', 'phi' => '&#193;', 'varphi' => '&#39;', 'chi' => '&#194;', 'psi' => '&#195;', 'omega' => '&#33;', 'Gamma' => '&#161;', 'Lambda' => '&#164;', 'Sigma' => '&#167;', 'Psi' => '&#170;', 'Delta' => '&#162;', 'Xi' => '&#165;', 'Upsilon' => '&#168;', 'Omega' => '&#173;', 'Theta' => '&#163;', 'Pi' => '&#166;', 'Phi' => '&#169;', 'infty' => '&#8734;', 'ne' => '&#8800;', '*' => '&#215;', 'in' => '&#8712;', 'notin' => '&#8713;', 'forall' => '&#8704;', 'exists' => '&#8707;', 'notexists' => '&#8708;', 'partial' => '&#8706;', 'approx' => '&#8776;', 'left' => '&#8592;', 'right' => '&#8594;', 'leftright' => '&#8596;', 'doubleleft' => '&#8656;', 'doubleright' => '&#8658;', 'doubleleftright' => '&#8660;', 'nearrow' => '&#8599;', 'searrow' => '&#8601;', 'pm' => '&#177;', 'bbR' => '&#8477;', 'bbN' => '&#8469;', 'bbZ' => '&#8484;', 'bbC' => '&#8450;', 'inter' => '&#8898;', 'union' => '&#8899;', 'ortho' => '&#8869;', 'parallel' => '&#8741;', 'backslash' => '&#92;', 'prime' => '&#39;', 'wedge' => '&#8896;', 'vert' => '&#8741;', 'subset' => '&#8834;', 'notsubset' => '&#8836;', 'circ' => '&#8728;', 'varnothing' => '&#248;', 'cdots' => '&#8943;', 'vdots' => '&#8942;', 'ddots' => '&#8945;', 'le' => '&#54;', 'ge' => '&#62;', '<' => '&#60;', '>' => '&#62;', '(' => '&#179;', ')' => '&#180;', '[' => '&#104;', ']' => '&#105;', 'lbrace' => '&#40;', 'rbrace' => '&#41;', '_hat' => '&#99;', '_racine' => '&#113;', '_integrale' => '&#82;', '_dintegrale' => '&#8748;', '_tintegrale' => '&#8749;', '_ointegrale' => '&#72;', '_produit' => '&#81;', '_somme' => '&#80;', '_intersection' => '&#84;', '_reunion' => '&#83;', '_lim' => 'lim', 'arccos' => 'arccos', 'ker' => 'ker', 'arcsin' => 'arcsin', 'lg' => 'lg', 'arctan' => 'arctan', 'arg' => 'arg', 'cos' => 'cos', 'cosh' => 'cosh', 'ln' => 'ln', 'cot' => 'cot', 'log' => 'log', 'coth' => 'coth', 'max' => 'max', 'csc' => 'csc', 'min' => 'min', 'deg' => 'deg', 'det' => 'det', 'sec' => 'sec', 'dim' => 'dim', 'sin' => 'sin', 'exp' => 'exp', 'sinh' => 'sinh', 'gcd' => 'gcd', 'sup' => 'sup', 'hom' => 'hom', 'tan' => 'tan', 'inf' => 'inf', 'tanh' => 'tanh');
GlobalVar::$fontesmath = array('~' => 'FreeSerif', 'alpha' => 'cmmi10', 'beta' => 'cmmi10', 'gamma' => 'cmmi10', 'delta' => 'cmmi10', 'epsilon' => 'cmmi10', 'varepsilon' => 'cmmi10', 'zeta' => 'cmmi10', 'eta' => 'cmmi10', 'theta' => 'cmmi10', 'vartheta' => 'cmmi10', 'iota' => 'cmmi10', 'kappa' => 'cmmi10', 'lambda' => 'cmmi10', 'mu' => 'cmmi10', 'nu' => 'cmmi10', 'xi' => 'cmmi10', 'pi' => 'cmmi10', 'varpi' => 'cmmi10', 'rho' => 'cmmi10', 'varrho' => 'cmmi10', 'sigma' => 'cmmi10', 'varsigma' => 'cmmi10', 'tau' => 'cmmi10', 'upsilon' => 'cmmi10', 'phi' => 'cmmi10', 'varphi' => 'cmmi10', 'chi' => 'cmmi10', 'psi' => 'cmmi10', 'omega' => 'cmmi10', 'Gamma' => 'cmr10', 'Lambda' => 'cmr10', 'Sigma' => 'cmr10', 'Psi' => 'cmr10', 'Delta' => 'cmr10', 'Xi' => 'cmr10', 'Upsilon' => 'cmr10', 'Omega' => 'cmr10', 'Theta' => 'cmr10', 'Pi' => 'cmr10', 'Phi' => 'cmr10', 'infty' => 'FreeSerif', 'ne' => 'FreeSerif', '*' => 'FreeSerif', 'in' => 'FreeSerif', 'notin' => 'FreeSerif', 'forall' => 'FreeSerif', 'exists' => 'FreeSerif', 'notexists' => 'FreeSerif', 'partial' => 'FreeSerif', 'approx' => 'FreeSerif', 'left' => 'FreeSerif', 'right' => 'FreeSerif', 'leftright' => 'FreeSerif', 'doubleleft' => 'FreeSerif', 'doubleright' => 'FreeSerif', 'doubleleftright' => 'FreeSerif', 'nearrow' => 'FreeSerif', 'searrow' => 'FreeSerif', 'pm' => 'FreeSerif', 'bbR' => 'FreeSerif', 'bbN' => 'FreeSerif', 'bbZ' => 'FreeSerif', 'bbC' => 'FreeSerif', 'inter' => 'FreeSerif', 'union' => 'FreeSerif', 'ortho' => 'FreeSerif', 'parallel' => 'FreeSerif', 'backslash' => 'FreeSerif', 'prime' => 'FreeSerif', 'wedge' => 'FreeSerif', 'vert' => 'FreeSerif', 'subset' => 'FreeSerif', 'notsubset' => 'FreeSerif', 'circ' => 'FreeSerif', 'varnothing' => 'FreeSerif', 'cdots' => 'FreeSerif', 'vdots' => 'FreeSerif', 'ddots' => 'FreeSerif', 'le' => 'msam10', 'ge' => 'msam10', '<' => 'cmmi10', '>' => 'cmmi10', '(' => 'cmex10', ')' => 'cmex10', '[' => 'cmex10', ']' => 'cmex10', 'lbrace' => 'cmex10', 'rbrace' => 'cmex10', '_hat' => 'cmex10', '_racine' => 'cmex10', '_integrale' => 'cmex10', '_dintegrale' => 'FreeSerif', '_tintegrale' => 'FreeSerif', '_ointegrale' => 'cmex10', '_produit' => 'cmex10', '_somme' => 'cmex10', '_intersection' => 'cmex10', '_reunion' => 'cmex10', '_lim' => 'cmr10', 'arccos' => 'cmr10', 'ker' => 'cmr10', 'arcsin' => 'cmr10', 'lg' => 'cmr10', 'arctan' => 'cmr10', 'arg' => 'cmr10', 'cos' => 'cmr10', 'cosh' => 'cmr10', 'ln' => 'cmr10', 'cot' => 'cmr10', 'log' => 'cmr10', 'coth' => 'cmr10', 'max' => 'cmr10', 'csc' => 'cmr10', 'min' => 'cmr10', 'deg' => 'cmr10', 'det' => 'cmr10', 'sec' => 'cmr10', 'dim' => 'cmr10', 'sin' => 'cmr10', 'exp' => 'cmr10', 'sinh' => 'cmr10', 'gcd' => 'cmr10', 'sup' => 'cmr10', 'hom' => 'cmr10', 'tan' => 'cmr10', 'inf' => 'cmr10', 'tanh' => 'cmr10');
function est_nombre($str)
{
    return preg_match("/^[0-9]/", $str);
}
function tableau_expression($expression)
{
    $e = str_replace('_', ' _ ', $expression);
    $e = str_replace('{(}', '{ }', $e);
    $e = str_replace('{)}', '{ }', $e);
    $t = token_get_all("<?php \$formula={$e} ?" . ">");
    $extraits = array();
    $result = array();
    //stupid code but token_get_all bug in some php versions
    $d = 0;
    for ($i = 0; $i < count($t); $i++) {