[spip-dev] sommaire dans un document

Bonjour,
j'ai besoin de la possiblité de générer des sommaires dans des (longs)
documents mais avant de le faire, je préfère en discuter pour si possible
arriver à un résultat qui pourrait s'intégrer dans le code de SPIP :

- Il s'agit donc de donner la possiblité de créer 9 niveaux de titres de la
forme {{{X|titre}}} où X est un chiffre de 1 à 9.
1 est le niveau le plus important et correspondrait aux titres {{{mon-titre}}}
actuels. On associe un style spip_titreX aux titres de niveau X.
Par exemple {{{2|mon titre}}} serait un titre de niveau 2 et s'afficherait en
utilisant spip_titre2.

- La balise #SOMMAIRE génère le sommaire du document. Dans ce sommaire les
titres de niveaux X s'affichent en utilisant le style spip_sommX.
Les titres sont évidemment des liens vers le titre dans le document (on
associe à chaque titre une ancre).

- L'ancre du N-ième titre du document est par défaut aN. Ainsi si le 2ème
titre du document est {{{3|un titre}}}
la page html générée donnera quelque chose comme :
<a name="a2" class="spip_titre3">un titre</a>

et dans le sommaire on trouvera :
<a href="/article.php3?id_article=672#a2" class="spip_somm3">un titre</a>

- Il est possible de spécifier explicitement l'ancre que l'on veut en écrivant
{{{X#une_ancre|un titre}}}.
Par exemple {{{3#partie1|un titre}}} dans le document 672 sera accessible par
le lien <a href="/article.php?id_article=672#partie1>.
Evidement il faut modifier le traitement des liens pour que [->art672#partie1]
renvoie vers cette ancre.

- On peut demander à ce qu'un titre n'apparaisse pas dans le sommaire en
plaçant un s :
{{{3s|ce titre n'apparait pas dans le sommaire}}}

- Il y a par défaut une numérotation automatique des titres.
Ainsi

{{{1|première partie}}}
{{{2|première sous-partie}}}
{{{2|deuxième sous-partie}}}

sera affichée

1. première partie
1.1 première sous-partie
1.2 deuxième sous-partie

On utilise deux fonctions numerotation_titre et numerotation_sommaire pour
l'affichage de la numérotation. Chacune de ces fonctions prend un tableau en
argument correspondant au numéro du titre et renvoie la chaine à afficher

Par exemple pour un titre 1.2.1 elles prendraient en argument array(1, 2, 1)
et seraient définie par défaut comme
function numerotation_titre($tableau) { return(implode(".", $tableau)); }

l'avantage est que l'on peut facilement créer une numérotation de la forme
I/ 1. 2.a par exemple.

- On peut demander qu'un titre ne soit pas numéroté en ajoutant une étoile :
{{{4*|ce titre n'est pas numéroté mais apparait dans le sommaire}}}
{{{4*s|ce titre n'est pas numéroté et n'apparait pas dans le sommaire}}}