diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3 index 3af2bb0ffd4e295d5c52634def4b3cdb46f0ae11..aeeb244c38ce80bd4f8e56a3acd23d080828d9df 100644 --- a/ecrire/inc_filtres.php3 +++ b/ecrire/inc_filtres.php3 @@ -587,6 +587,7 @@ function post_autobr($texte, $delim="\n_ ") { return $texte; } + // // Gestion des blocs multilingues // @@ -668,4 +669,38 @@ function ajoute_popup_multi($langue_demandee, $trads, $texte) { return $texte; } +// +// Gestion du raccourci <math>...</math> en client-serveur +// +function image_math($tex) { + // Regarder dans le repertoire local des images TeX + $dir = ($GLOBALS['flag_ecrire'] ? '../' : '').'IMG/TeX'; + if (!@is_dir($dir)) + @mkdir ($dir); + $fichier = "$dir/".md5(trim($tex)).'.png'; + + if (!@file_exists($fichier)) { + // Aller chercher l'image sur le serveur + if ($server = $GLOBALS['spip_server']['math']) { + 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)) { + list(,,,$size) = @getimagesize($fichier); + $alt = "alt=\"$tex\" title=\"$tex\""; + return "<img src=\"$fichier\" align=\"middle\" $size $alt />"; + } else + return "<tt><span class='spip_code' dir='ltr'>$tex</span></tt>"; +} + ?> diff --git a/ecrire/inc_texte.php3 b/ecrire/inc_texte.php3 index 953cfa680d06ba03928cec159ec49e5b8b26ee0c..6af616ac55aa11353b4a11cf24407a0cbace7ef7 100644 --- a/ecrire/inc_texte.php3 +++ b/ecrire/inc_texte.php3 @@ -135,14 +135,16 @@ function echappe_html($letexte, $source, $no_transform=false) { $regexp_echap_code = "<code>((.*?))<\/code>"; $regexp_echap_cadre = "<(cadre|frame)>((.*?))<\/(cadre|frame)>"; $regexp_echap_poesie = "<(poesie|poetry)>((.*?))<\/(poesie|poetry)>"; - $regexp_echap = "/($regexp_echap_html)|($regexp_echap_code)|($regexp_echap_cadre)|($regexp_echap_poesie)/si"; + $regexp_echap_math = "<math>((.*?))<\/math>"; + $regexp_echap = "/($regexp_echap_html)|($regexp_echap_code)|($regexp_echap_cadre)|($regexp_echap_poesie)|($regexp_echap_math)/si"; } else { //echo creer_echappe_sans_pcre("cadre"); $regexp_echap_html = "<html>(([^<]|<[^/]|</[^h]|</h[^t]|</ht[^m]|</htm[^l]|<\/html[^>])*)<\/html>"; $regexp_echap_code = "<code>(([^<]|<[^/]|</[^c]|</c[^o]|</co[^d]|</cod[^e]|<\/code[^>])*)<\/code>"; $regexp_echap_cadre = "(<[cf][ar][da][rm]e>(([^<]|<[^/]|</[^cf]|</[cf][^ar]|</[cf][ar][^da]|</[cf][ar][da][^rm]|</[cf][ar][da][rm][^e]|<\/[cf][ar][da][rm]e[^>])*)<\/[cf][ar][da][rm]e>)()"; // parentheses finales pour obtenir meme nombre de regs que pcre $regexp_echap_poesie = "(<poe[st][ir][ey]>(([^<]|<[^/]|</[^p]|</p[^o]|</po[^e]|</poe[^st]|</poe[st][^ir]|</poe[st][ir][^[ey]]|<\/poe[st][ir][ey][^>])*)<\/poe[st][ir][ey]>)()"; - $regexp_echap = "($regexp_echap_html)|($regexp_echap_code)|($regexp_echap_cadre)|($regexp_echap_poesie)"; + $regexp_echap_math = "<math>(([^<]|<[^/]|</[^m]|</m[^a]|</ma[^t]|</mat[^h]|<\/math[^>])*)<\/math>"; + $regexp_echap = "($regexp_echap_html)|($regexp_echap_code)|($regexp_echap_cadre)|($regexp_echap_poesie)|($regexp_echap_math)"; } while (($flag_pcre && preg_match($regexp_echap, $letexte, $regs)) @@ -191,6 +193,10 @@ function echappe_html($letexte, $source, $no_transform=false) { $lecode = "<div class=\"spip_poesie\"><div>".ereg_replace("\n+", "</div>\n<div>", $lecode)."</div></div>"; $les_echap[$num_echap] = "</p>".propre($lecode)."<p class=\"spip\">"; + } else + if ($regs[17]) { + $lecode = $regs[19]; + $les_echap[$num_echap] = image_math($lecode); } $pos = strpos($letexte, $regs[0]); @@ -386,7 +392,7 @@ function typo_fr($letexte) { $cherche1 = array( /* 1 '/{([^}]+)}/', */ /* 2 */ '/((^|[^\#0-9a-zA-Z\&])[\#0-9a-zA-Z]*)\;/', - /* 3 */ '/»| -,|:([^0-9]|$)/', + /* 3 */ '/»| --?,|:([^0-9]|$)/', /* 4 */ '/([^<!?])([!?])/', /* 5 */ '/«|(M(M?\.|mes?|r\.?)|[MnN]°) /' ); @@ -401,10 +407,12 @@ function typo_fr($letexte) { $letexte = ereg_replace(" *~+ *", "~", $letexte); $cherche2 = array( + '/--/', '/(http|https|ftp|mailto)~:/', '/~/' ); $remplace2 = array( + '—', '\1:', ' ' ); @@ -413,20 +421,32 @@ function typo_fr($letexte) { return $letexte; } -// rien sauf les ~ {} +// rien sauf les "~" et "-," function typo_en($letexte) { $cherche1 = array( - /* 1 */ '/{([^}]+)}/' + '/ --?,/' ); $remplace1 = array( - /* 1 */ '<i class="spip">\1</i>' + '~\0' ); - // $letexte = ereg_remplace($cherche1, $remplace1, $letexte); + $letexte = ereg_remplace($cherche1, $remplace1, $letexte); $letexte = str_replace(" ", "~", $letexte); + $letexte = ereg_replace(" *~+ *", "~", $letexte); + + $cherche2 = array( + '/--/', + '/~/' + ); + $remplace2 = array( + '—', + ' ' + ); - return ereg_replace(" *~+ *", " ", $letexte); + $letexte = ereg_remplace($cherche2, $remplace2, $letexte); + + return $letexte; } // Typographie generale : francaise si la langue est 'cpf', 'fr' ou 'eo', diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3 index 799d6e61f4aa171d9e1ebdf8f4bc3b2dc40eed8e..cb9c69ae37205f504b8b84081f6448ddd9d45338 100644 --- a/ecrire/inc_version.php3 +++ b/ecrire/inc_version.php3 @@ -150,6 +150,12 @@ $champs_extra_proposes = false; $ignore_auth_http = false; $ignore_remote_user = false; +// serveurs externes +$spip_server = array ( + 'math' => 'http://math.spip.org/tex.php', + 'ortho' => 'http://ortho.spip.net/ortho_serveur.php' +); + // // *** Fin du parametrage *** //