Rev 609 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/***************************************************************************\* SPIP, Systeme de publication pour l'internet ** ** Copyright (c) 2001-2005 ** Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James ** ** Ce programme est un logiciel libre distribue sous licence GNU/GPL. ** Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *\***************************************************************************///// Ce fichier ne sera execute qu'une foisif (defined("_ECRIRE_INC_MATH")) return;define("_ECRIRE_INC_MATH", "1");//// Gestion du raccourci <math>...</math> en client-serveur//function image_math($tex) {global $traiter_math;switch ($traiter_math) {// Attention: mathml desactiv'e pour l'instantcase 'mathml':$ext = '.xhtml';$server = $GLOBALS['mathml_server'];break;default:$ext = '.png';$server = $GLOBALS['tex_server'];break;}// Regarder dans le repertoire local des images TeX et blocs MathMLif (!@is_dir(_DIR_TeX))@mkdir (_DIR_TeX, 0777);$fichier = _DIR_TeX .md5(trim($tex)).$ext;if (!@file_exists($fichier)) {// Aller chercher l'image sur le serveurif ($server) {spip_log($url = $server.'?'.urlencode($tex));include_ecrire('inc_sites.php3');if ($image = recuperer_page($url)) {if ($f = @fopen($fichier, 'w')) {@fwrite($f, $image);@fclose($f);}}}}// Composer la reponse selon presence ou non de l'image$tex = entites_html($tex);if (@file_exists($fichier)) {// MathMLif ($traiter_math == 'mathml') {return join(file("$fichier"),"");}// TeXelse {list(,,,$size) = @getimagesize($fichier);$alt = "alt=\"$tex\" title=\"$tex\"";return "<img src=\"$fichier\" style=\"vertical-align:middle;\" $size $alt />";}}else // pas de fichierreturn "<tt><span class='spip_code' dir='ltr'>$tex</span></tt>";}// Fonction appelee par propre() s'il repere un mode <math>function traiter_math($letexte, &$les_echap, &$num_echap, $source) {$texte_a_voir = $letexte;while (($debut = strpos($texte_a_voir, "<math>")) !== false) {if (!$fin = strpos($texte_a_voir,"</math>"))$fin = strlen($texte_a_voir);$texte_debut = substr($texte_a_voir, 0, $debut);$texte_milieu = substr($texte_a_voir,$debut+strlen("<math>"), $fin-$debut-strlen("<math>"));$texte_fin = substr($texte_a_voir,$fin+strlen("</math>"), strlen($texte_a_voir));while((ereg("[$][$]([^$]+)[$][$]",$texte_milieu, $regs))) {$num_echap++;$les_echap[$num_echap] = "\n<p class=\"spip\" style=\"text-align: center;\">".image_math($regs[1])."</p>\n";$pos = strpos($texte_milieu, $regs[0]);$texte_milieu = substr($texte_milieu,0,$pos)."@@SPIP_$source$num_echap@@".substr($texte_milieu,$pos+strlen($regs[0]));}while((ereg("[$]([^$]+)[$]",$texte_milieu, $regs))) {$num_echap++;$les_echap[$num_echap] = image_math($regs[1]);$pos = strpos($texte_milieu, $regs[0]);$texte_milieu = substr($texte_milieu,0,$pos)."@@SPIP_$source$num_echap@@".substr($texte_milieu,$pos+strlen($regs[0]));}$texte_a_voir = $texte_debut.$texte_milieu.$texte_fin;}return $texte_a_voir;}?>