source: spip-zone/_plugins_/latexwheel/wheels/latex/latex-listes.php @ 49343

Last change on this file since 49343 was 49343, checked in by maieul@…, 10 years ago

un peu d'aeration

File size: 2.1 KB
Line 
1<?php
2# not usefull as this file is include by the engine itself
3# require_once 'engine/textwheel.php';
4
5function latex_liste_init($t){
6        return latex_liste_item($t,'init');
7}
8
9function latex_liste_close($t){
10        return latex_liste_item($t,'close');
11}
12
13function latex_liste_item($t,$quoi='item'){
14        global $class_spip, $class_spip_plus;
15        static $niveau;
16        static $pile_li;
17        static $pile_type;
18        static $type;
19        switch ($quoi){
20                case 'init':
21                        $niveau = 0;
22                        $pile_li = array();
23                        $pile_type = array();
24                        $type = '';
25                        break;
26                case 'close':
27                        // retour sur terre
28                        $ajout = '';
29                        while ($niveau > 0) {
30                                $ajout .= $pile_li[$niveau];
31                                $ajout .= $pile_type[$niveau];
32                                $niveau --;
33                        }
34                        $t .= $ajout;
35                        break;
36
37                case 'ul':
38                case 'ol':
39                        $nouv_type = $quoi;
40                        break;
41               
42                case 'item':
43                default:
44                        if ($l=strlen($t[2])) {$profond=$l;$nouv_type='itemize';}
45                        elseif ($l=strlen($t[3])) {$profond=$l;$nouv_type='enumerate';}
46
47                        if ($profond > 0) {
48                                $ajout='';
49
50                                // changement de type de liste au meme niveau : il faut
51                                // descendre un niveau plus bas, fermer ce niveau, et
52                                // remonter
53                                $change_type = ($type AND ($type <> $nouv_type) AND ($profond == $niveau)) ? 1 : 0;
54                                $type = $nouv_type;
55
56                                // d'abord traiter les descentes
57                                while ($niveau > $profond - $change_type) {
58                                        $ajout .= $pile_li[$niveau];
59                                        $ajout .= $pile_type[$niveau];
60                                        if (!$change_type)
61                                                unset ($pile_li[$niveau]);
62                                        $niveau --;
63                                }
64
65                                // puis les identites (y compris en fin de descente)
66                                if ($niveau == $profond && !$change_type) {
67                                        $ajout .= $pile_li[$niveau];
68                                }
69
70                                // puis les montees (y compris apres une descente un cran trop bas)
71                                while ($niveau < $profond) {
72                                        if ($niveau == 0)
73                                                $ajout .= "\n\n";
74                                        elseif (!isset($pile_li[$niveau])) {
75                                                $ajout .= "\begin/debutitemize/fin";
76                                                $pile_li[$niveau] = "\n\end/debutitemize/fin\n";
77                                        }
78                                        $niveau ++;
79                                        $ajout .= "\begin/debut$type/fin";
80                                        $pile_type[$niveau] = "\n\begin/debut$type/fin\n";
81                                }
82
83                                $ajout .= "\n\item ";
84                                $pile_li[$profond] = "";
85                        }
86                        else {
87                                $ajout = $t[1]; // puce normale ou <hr>
88                        }
89
90                        $t = $ajout . $t[4];
91                        break;
92        }
93
94        return $t;
95}
Note: See TracBrowser for help on using the repository browser.