Cette contrib’ est dérivée de Génération automatique de numérotation, table des matières et références écrit par mortimer et chtitux.
Je l’ai mise sous forme de plugin, adaptée à SPIP>1.9 et fait quelques modifications [1].
Elle permet :
d’utiliser des intertitres hiérarchisés (plusieurs niveaux de titres) dans vos articles grâce à de nouveaux raccourcis typographiques,
d’afficher grâce à un modèle une table des matières dans vos articles et/ou vos squelettes,
d’afficher des renvois vers certaines parties d’un article dans vos articles,
d’afficher des extraits plus ou moins longs et plus ou moins ciblés d’un article
d’extraire des éléments signifiants d’un article.
Actuellement ce plugin est en développement. Cependant il est assez stable pour être utilisé. Il est utilisé par un site plutôt beaucoup visité.
Installation du plugin
Vous trouverez la dernière version du paquet du plugin dans la zone ou ci-dessous :

- Archive du plugin Intertitres hiérarchisés et table des matières
- Cette archive, présente sur la zone est mise-à-jour lors des nouveaux développements.
Dézippez (décompressez) cette archive, puis suivez les instructions traditionnelles pour installer un plugin : Installer un plugin
Des intertitres hiérarchisés
Ce plugin rajoute des raccourcis typographiques pour gérer des niveaux d’intertitres. Ces raccourcis, imaginés par mortimer, s’inspirent des listes et des énumérations de SPIP. C’est à dire que les intertitres utilisent désormais des * ou des # pour que soit déterminé leur niveau :
{{{*exemple de premier niveau}}} est un titre de premier niveau (équivalent à {{{exemple de premier niveau}}}),
{{{**exemple de titre de second niveau}}} est un titre de second niveau.
Ainsi ce type de contenu dans un article :
{{{*Les outils}}}
{{{**Les trucs qui vissent}}}
Il y en a plein !
{{{***À la main}}}
{{{****Tourne-vis}}}
- cruciforme
- plat
- etc.
{{{***Assisté}}}
{{{****Visseuse}}}
- à fil
- sans fil
{{{**Les trucs qui coupent}}}
snip...
{{{***Ciseaux}}}
{{{****À bois}}}
c'est dangereux ça !
{{{**Les trucs qui frappent (aïe)}}}
{{{***Marteau}}}
trop dangereux pour moi...Va donner :
Les outils
Les trucs qui vissent
Il y en a plein !
À la main
Tourne-vis
cruciforme
plat
etc.
Assisté
Visseuse
à fil
sans fil
Les trucs qui coupent
snip...
Ciseaux
À bois
c’est dangereux ça !
Les trucs qui frappent (aïe)
Marteau
trop dangereux pour moi...
Si à la place des *, vous utilisez des #, les intertitres seront numérotés en utilisant une numérotation scientifique du genre x.y.z.... Ex. :
{{{#Avec des numéros}}}
{{{##de plusieurs niveaux}}}
{{{##C'est une notation scientifique...}}}
{{{#Qui s'incrémentent automatiquement}}}donne :
1- Avec des numéros
1.1- de plusieurs niveaux
1.2- C’est une notation scientifique...
2- Qui s’incrémentent automatiquement
Donc, l’utilisation des * et/ou des # après le raccourci classique pour les intertitres {{{ permet de hiérarchiser.
Coté HTML, les intertitres hiérarchisés sont transformés en headlines de type <hx class="spip"> où x est un chiffre allant de 3 à 6. De plus, chaque intertitre (numéroté ou non) contient une ancre <a name='x.y.z...'></a> où x.y.z... est le numéro de l’intertitre. Cette ancre est utilisée par les modèles qui accompagnent ce plugin.
Un fichier CSS installé avec le plugin permet de gérer l’aspect des intertitres dans la partie privée de SPIP. Pour la partie publique, il vous suffit de définir hx.spip {} dans vos propres fichiers CSS pour déterminer comment ces intertitres s’affichent.
Notez que les intertitres des enluminures typographiques sont compatibles avec ce plugin.
Une table des matières
Ce plugin fourni un modèle <table_des_matieres> que l’on peut utiliser dans les articles ou dans les squelettes pour afficher une table des matières qui renvoie vers les intertitres. Elle se présente sous la forme d’une liste de puces (hiérarchisées) avec les intertitres sous forme de liens. Cette table des matières est précédée d’une ancre nommée « table_des_matières » (<a name="table_des_matières"></a>), elle est dans un bloc ayant pour identifiant « tablematiere » (<div id="tablematieres">blabla</div>
).
Dans les articles, le modèle s’utilise ainsi :
<table_des_matieresXXX> où XXX est le numéro de l’article dont vous souhaitez afficher la table des matières.
Dans les squelettes, vous pouvez utiliser :
[(#MODELE{table_des_matieres}{id=XXX})] où XXX est le numéro de l’article dont vous souhaitez afficher la table des matières. Notez que XXX peut aussi être une balise comme #ID_ARTICLE.
Comme indiqué précédemment, notez que les intertitres des enluminures typographiques sont compatibles avec ce modèle.
Des renvois vers un intertitre (ou autre)
Ce plugin fournit un autre modèle <renvoi>. Il permet d’afficher l’intertitre d’une sous-partie précise d’un article avec un lien vers elle.
Dans les articles il s’utilise ainsi :
<renvoiXXX|partie=YYY> où XXX est le numéro de l’article et YYY est le numéro de la sous-partie. Que l’intertitre soit numéroté ou non, le numéro de la sous-partie est de la forme x.y.z... [2].
À partir de L’exemple des outils qui est présenté au début de cet article : <renvoi2567|partie=1.2.3.3> donnera :
(2567 est le numéro de cet article et 1.2.3.3 correspond à la sous-partie sur le ciseau à bois... Si si ! comptez...)
Donc, écrire <renvoiXXX|partie=YYY> équivaut à écrire [intertitre de la sous-partie YYY|un extrait avec les 20 premiers mots de la sous-partie (...)->XXX#YYY] sauf que l’intertitre et l’extrait sont déterminés automatiquement par le modèle (et modifiés automatiquement si quelqu’un modifie l’article auquel on renvoie).
Dans les squelettes, le principe est le même, et la syntaxe est :
[(#MODELE{renvoi}{id=XXX}{partie=YYY})]
Comme indiqué précédemment, notez que les intertitres des enluminures typographiques sont compatibles avec ce modèle.
Des extraits d’articles ou de sous-parties d’articles
Voici deux modèles <extrait> et <extrait|partie> qui permettent d’afficher des morceaux d’articles ou de sous-parties d’articles.
Pour afficher un extrait d’article dans un autre article, il faut utiliser le modèle <extraitXXX|debut=YY|taille=ZZ> où XXX est le numéro de l’article. debut et taille sont optionnels [3]. taille permet de fixer le nombre de mots à afficher dans l’extrait. debut permet de déterminer à partir de quel mot commencer l’extrait (debut est le n° de ce mot, la numérotation commence à 0).
Ex. : <extrait2567|debut=55|taille=38> permet d’afficher un extrait de 38 mots de l’article n°2567 (c’est celui-ci) à partir du 55ème mot.
Notez pour la présentation et l’aspect sémantique que les extraits sont affichés entre balises <quote>extrait de l'article</quote>. Ils sont précédés de « (...) » si l’extrait ne commence pas au mot 0, et toujours terminés par « (...) ».
Les raccourcis typographiques qui étaient présents dans les extraits sont retirés automatiquement (le texte passe dans le filtre textebrut).
Il est aussi possible de faire des extraits d’une sous-partie du texte d’un article. Une sous-partie est un morceau du texte délimité par des intertitres de même niveau.
Le principe à peu près le même que pour le modèle précédent.
Pour afficher un extrait d’une sous-partie dans un autre article, il faut utiliser <extraitXXX|partie|partie=x.y.z|debut=YY|taille=ZZZ> qui fonctionne comme précédemment sauf que partie=x.y.z correspond au numéro de l’intertitre de la sous-partie dont on souhaite afficher l’extrait. Voir la documentation des renvois ci-dessus.
Ex. : <extrait2567|partie|partie=1.2.3.3|debut=4|taille=5> permet d’afficher un extrait de 5 mots de la partie sur le ciseau à bois (n°1.2.3.3) de l’article n°2567 (c’est celui-ci) à partir du 4ème mot.
Comme précédemment la citation est dépourvue de raccourci typographique. Sauf l’intertitre qui est rajouté au début de la citation.
Bien sûr, ces deux modèles peuvent être utilisés dans les squelettes :
[(#MODELE{extrait}{id=XXX}{debut=YY}{taille=ZZZ})]
[(#MODELE{extrait_partie}{id=XXX}{partie=x.y.z}{debut=YY}{taille=ZZZ})]
Comme indiqué précédemment, notez que les intertitres des enluminures typographiques sont compatibles avec ce modèle.
Quelques filtres pour afficher des morceaux signifiants d’un article
Ces filtres sont tirés de la contrib’ Résumé d’article automatique.
Compatibilité
Les intertitres fournis par le plugin Plugin Enluminures typographiques pour 1.9.2 et suivantes de RealET qui s’écrivent {2{, {3{, {4{, etc. sont pris en compte par ce plugin avec les équivalences : {1{={{{*={{{, {2{={{{**, etc.
Le plugin les transforme à la volée, si bien qu’ils fonctionnent pour tous les modèles, comme si ils étaient écrits avec des {{{*(...)*.
Les utilisateurs de la contrib’ de mortimer et chtitux dont est tiré ce plugin (Génération automatique de numérotation, table des matières et références) auront peu de changements à faire car il y a une certaine compatibilité ascendante.
Il faut noter cependant que :
dans la contrib’ originelle, les intertitres étoilés ({{{*(...)*) généraient une numérotation automatique des titres. Désormais, cette numérotation est réservée aux intertitres avec des #. Donc, si vous souhaitez conserver la numérotation, il faudra transformer les * en # dans les articles.
La balise #TABLEMATIERES qui placée dans les articles, affichait la table des matières est remplacée par le modèle <table_des_matières> (ce qui permet de choisir entre mettre une table des matières dans les articles ou dans les squelettes). Dans ce plugin #TABLEMATIERES affiche un lien vers la table des matières présente dans la page (lien vers l’ancre « table_des_matières ») et non la table des matières elle-même.
Dans la contrib’ originelle, les raccourcis des intertitres étaient remplacés par des <h3 class="spipheadx">
où x est le niveau de titre. Ce plugin les remplace par des <hx class="spip"> ce qui est plus correct du point de vue sémantique/accessibilité.
La contrib’ permettait de personnaliser les ancres présentes dans les intertitres (ex. : {{{**mon titre <mon_ancre_à_moi>}}}). Cela reste fonctionnel dans ce plugin et fonctionne avec les modèles.
Développements futurs
intégration dans la barre typo V2
faire des modèles supplémentaires (notamment pour exploiter les filtres de Résumé d’article automatique), et documenter tout ça ici même.
faire en sorte que les intertitres hiérarchisés soient pris en compte par les contribs/plugin qui produisent autre chose que du HTML (du PDF par exemple).
Ce plugin sous licence GPL est développé dans SPIP-Zone, vous êtes donc les bienvenus pour prendre part à son développement.

