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}}}