Bonjour,
Bonjour,
En remplaçant le code $formule$ par <span class="math">formule</span>
et $$formule$$ par <p><div class="math">formule</span></p> (sans
introduire de balises <html> et </html>) il semble que les commandes de
mise en forme ne viennent pas perturber le texte entre ces balises (en
tout cas sur mon site testé en local).
J'ai en effet constaté cette disparition des espaces après les formules,
sans pouvoir l'expliquer ... mais quand je fais comme tu suggères, SPIP
continue à transformer les accolades en italiques. Une solution serait
de faire un truc du genre
<span class="math><html>u_{n+1}</html></span>
en espérant que l'espace après </span> reste. Mon code pour l'instant
est le suivant :
function vb_filtre ($texte) {
$texte = preg_replace ('/\$\$([^$]+)\$\$/s', '\\[\1\\]', $texte);
$texte = preg_replace ('/\$([^$]+)\$/s', '\\(\1\\)', $texte);
$texte = preg_replace ('/\\\\\\(/', '<html>$', $texte);
$texte = preg_replace ('/\\\\\\)/', '$</html>', $texte);
$texte = preg_replace ('/\\\\\\[/', '<html>$$', $texte);
$texte = preg_replace ('/\\\\\\]/', '$$</html>', $texte);
while (preg_match ('/<html>[$]+[^$]+</s', $texte)) {
$texte = preg_replace ('/(<html>[$]+[^$]+)</s', '\1<', $texte);
}
$texte = clean_TeX($texte);
return $texte;
}
(clean_TeX fait des trucs du genre \'e -> é etc.) Ça marche à peu près
bien, cf. le site en travaux ici : http://images.math.cnrs.fr/ (sous-repertoire
spip/ de la racine du site - merci de ne pas rendre ce lien public tant qu'il
est en travaux ...) On y perd la possibilité de mettre des '$' dans le texte,
si on veut la conserver il suffit de supprimer les deux premières lignes
et de se limiter à la notation \(x+y\).
Dernière chose, j'ai activé tex2math dans jsMath - pour que le code
source de la page ressemble à du TeX, ce qui est agréable pour la
lecture en mode texte / sans javascript. Mais vu qu'on fait un
traitement automatique, c'est facile de passer à <span>/<div> à la fin.
Juste la traduction de < en < devient un peu pénible.
Reste le coup de la mise automatique en pipeline. En mettant le filtre
dans pre_propre OU dans pre_typo, il manque des champs ; en le mettant
dans les deux, il est appliqué deux fois, et ça m'a posé des problèmes
...
À la réflexion (et à la lecture du code de SPIP, où on se noie
facilement) le mieux serait de transformer $x+y$ en <span
class="base64_encoded">29872937492847982734982738</span> où enfin je ne
sais plus exactement mais enfin ce que fait <html>. Du coup ça ne
s'applique qu'une fois, ça protège les maths de toute la suite, ça me
semble un bon compromis.
Reste à implémenter !
À suivre, donc.
/v
En revanche, les formules n'apparaissent pas dans la partie privée du
site, et pour cause, le script (javascript) qui s'en charge n'est pas
chargé (il l'est dans la partie publique en rajoutant ce qu'il faut
dans les squelettes...)
Pas trop grave, tant que les formules apparaissent en prévisualisation
on peut faire avec ...
--
Vincent Beffara
UMPA - ENS-Lyon
46 allée d'Italie
69364 Lyon Cedex 07
Tél : 04 72 72 85 25