source: spip-zone/_plugins_/_test_/jsMath/jsMath.php @ 19404

Last change on this file since 19404 was 19404, checked in by vbeffara+ml@…, 13 years ago

Ajout du plugin jsMath sur la zone

File size: 4.7 KB
Line 
1<?php
2
3function jsMath_accents ($texte) {
4  $acc_tex = array(); $acc_html = array();
5
6  $acc_tex[] = '\`a'; $acc_html[] = '&agrave;';
7  $acc_tex[] = '\`e'; $acc_html[] = '&egrave;';
8  $acc_tex[] = '\`i'; $acc_html[] = '&igrave;';
9  $acc_tex[] = '\`o'; $acc_html[] = '&ograve;';
10  $acc_tex[] = '\`u'; $acc_html[] = '&ugrave;';
11  $acc_tex[] = '\`y'; $acc_html[] = '&ygrave;';
12
13  $acc_tex[] = '\\\'a'; $acc_html[] = '&aacute;';
14  $acc_tex[] = '\\\'e'; $acc_html[] = '&eacute;';
15  $acc_tex[] = '\\\'i'; $acc_html[] = '&iacute;';
16  $acc_tex[] = '\\\'o'; $acc_html[] = '&oacute;';
17  $acc_tex[] = '\\\'u'; $acc_html[] = '&uacute;';
18  $acc_tex[] = '\\\'y'; $acc_html[] = '&yacute;';
19
20  $acc_tex[] = '\^a'; $acc_html[] = '&acirc;';
21  $acc_tex[] = '\^e'; $acc_html[] = '&ecirc;';
22  $acc_tex[] = '\^i'; $acc_html[] = '&icirc;';
23  $acc_tex[] = '\^o'; $acc_html[] = '&ocirc;';
24  $acc_tex[] = '\^u'; $acc_html[] = '&ucirc;';
25  $acc_tex[] = '\^y'; $acc_html[] = '&ycirc;';
26
27  $acc_tex[] = '\"a'; $acc_html[] = '&auml;';
28  $acc_tex[] = '\"e'; $acc_html[] = '&euml;';
29  $acc_tex[] = '\"i'; $acc_html[] = '&iuml;';
30  $acc_tex[] = '\"o'; $acc_html[] = '&ouml;';
31  $acc_tex[] = '\"u'; $acc_html[] = '&uuml;';
32  $acc_tex[] = '\"y'; $acc_html[] = '&yuml;';
33
34  $acc_tex[] = '\`A'; $acc_html[] = '&Agrave;';
35  $acc_tex[] = '\`E'; $acc_html[] = '&Egrave;';
36  $acc_tex[] = '\`I'; $acc_html[] = '&Igrave;';
37  $acc_tex[] = '\`O'; $acc_html[] = '&Ograve;';
38  $acc_tex[] = '\`U'; $acc_html[] = '&Ugrave;';
39  $acc_tex[] = '\`Y'; $acc_html[] = '&Ygrave;';
40
41  $acc_tex[] = '\\\'A'; $acc_html[] = '&Aacute;';
42  $acc_tex[] = '\\\'E'; $acc_html[] = '&Eacute;';
43  $acc_tex[] = '\\\'I'; $acc_html[] = '&Iacute;';
44  $acc_tex[] = '\\\'O'; $acc_html[] = '&Oacute;';
45  $acc_tex[] = '\\\'U'; $acc_html[] = '&Uacute;';
46  $acc_tex[] = '\\\'Y'; $acc_html[] = '&Yacute;';
47
48  $acc_tex[] = '\^A'; $acc_html[] = '&Acirc;';
49  $acc_tex[] = '\^E'; $acc_html[] = '&Ecirc;';
50  $acc_tex[] = '\^I'; $acc_html[] = '&Icirc;';
51  $acc_tex[] = '\^O'; $acc_html[] = '&Ocirc;';
52  $acc_tex[] = '\^U'; $acc_html[] = '&Ucirc;';
53  $acc_tex[] = '\^Y'; $acc_html[] = '&Ycirc;';
54
55  $acc_tex[] = '\"A'; $acc_html[] = '&Auml;';
56  $acc_tex[] = '\"E'; $acc_html[] = '&Euml;';
57  $acc_tex[] = '\"I'; $acc_html[] = '&Iuml;';
58  $acc_tex[] = '\"O'; $acc_html[] = '&Ouml;';
59  $acc_tex[] = '\"U'; $acc_html[] = '&Uuml;';
60  $acc_tex[] = '\"Y'; $acc_html[] = '&Yuml;';
61
62  $acc_tex[] = '\`{\i}';   $acc_html[] = '&igrave;';
63  $acc_tex[] = '\\\'{\i}'; $acc_html[] = '&iacute;';
64  $acc_tex[] = '\^{\i}';   $acc_html[] = '&icirc;';
65  $acc_tex[] = '\"{\i}';   $acc_html[] = '&iuml;';
66
67  return str_replace ($acc_tex, $acc_html, $texte);
68}
69
70function jsMath_typo ($texte) {
71  $texte = preg_replace ('/\\\head\{([^{}]+)\}/s',    '{{{\1}}}', $texte);
72  $texte = preg_replace ('/\\\textbf\{([^{}]+)\}/s',  '{{\1}}',   $texte);
73  $texte = preg_replace ('/\\\section\{([^{}]+)\}/s', '{{{\1}}}', $texte);
74
75  $texte = str_replace ('\ldots',    '...', $texte);
76  $texte = str_replace ('\medskip',  '',    $texte);
77  $texte = str_replace ('\newblock', '',    $texte);
78  $texte = str_replace ('\noindent', '',    $texte);
79  $texte = str_replace ('\emph',     '',    $texte);
80  $texte = str_replace ('\em',       '',    $texte);
81  $texte = str_replace ('\it',       '',    $texte);
82
83  return $texte;
84}
85
86function jsMath_protect_TeX ($texte) {
87  $texte = echappe_html ($texte); // To make example code easier.
88
89  $texte = str_replace ('\[', '$$', $texte);
90  $texte = str_replace ('\]', '$$', $texte);
91  $texte = str_replace ('\(', '$', $texte);
92  $texte = str_replace ('\)', '$', $texte);
93
94  $texte = preg_replace ('/\$\$([^$]+)\$\$/s', '<html>\[\1\]</html>', $texte);
95  $texte = preg_replace ('/\$([^$]+)\$/s', '<html>$\1$</html>', $texte);
96  $texte = str_replace ('\[', '$$', $texte);
97  $texte = str_replace ('\]', '$$', $texte);
98
99  while (preg_match ('/<html>[$]+[^$]+</s', $texte)) {
100    $texte = preg_replace ('/(<html>[$]+[^$]+)</s', '\1&lt;', $texte);
101  }
102
103  $texte = str_replace ('<html>$$', '<html><div class="math">', $texte);
104  $texte = str_replace ('$$</html>', '</div></html>', $texte);
105  $texte = str_replace ('<html>$', '<html><span class="math">', $texte);
106  $texte = str_replace ('$</html>', '</span></html>', $texte);
107
108  return echappe_html ($texte);
109}
110
111function jsMath_pre_typo ($texte) {
112  $texte = jsMath_protect_TeX ($texte);
113  $texte = jsMath_accents ($texte);
114  $texte = jsMath_typo ($texte);
115
116  return $texte;
117}
118
119function jsMath_insert_head ($texte) {
120  $texte .= '<script type="text/javascript" src="' . generer_url_public('jsMath_easy_load.js') . '"></script>' . "\n";
121  return $texte;
122}
123
124function jsMath_header_prive ($texte) {
125  return jsMath_insert_head ($texte);
126}
127
128function jsMath_affiche_milieu ($texte) {
129  return jsMath_pre_typo ($texte);
130}
131
132?>
Note: See TracBrowser for help on using the repository browser.