diff --git a/ecrire/inc_texte.php3 b/ecrire/inc_texte.php3 index 546d583ae1a78ec09b16ee2e3785f5e0db13a887..a463e419af3f1d24ee1562fd0afb73fc41ede67a 100644 --- a/ecrire/inc_texte.php3 +++ b/ecrire/inc_texte.php3 @@ -552,7 +552,7 @@ function typo($letexte) { // -// Traitement des listes +// Traitement des listes (merci a Michael Parienti) // function traiter_listes ($texte) { $parags = split ("\n[[:space:]]*\n", $texte); @@ -582,21 +582,27 @@ function traiter_listes ($texte) { $change_type = ($type AND ($type <> $nouv_type)) ? 1 : 0; $type = $nouv_type; - if ($niveau == $profond && !$change_type) { - $ajout = "</li>"; - } + // d'abord traiter les descentes while ($niveau > $profond - $change_type) { $ajout .= $pile_li[$niveau]; $ajout .= $pile_type[$niveau]; - $niveau --; if (!$change_type) unset ($pile_li[$niveau]); + $niveau --; } + + /// puis les identites (y compris en fin de descente) + if ($niveau == $profond && !$change_type) { + $ajout .= "</li>"; + } + + // puis les montees (y compris apres une descente un cran trop bas) while ($niveau < $profond) { $niveau ++; $ajout .= "<$type class=\"spip\">"; $pile_type[$niveau] = "</$type>"; } + $ajout .= "<li class=\"spip\">"; $pile_li[$profond] = "</li>"; }