Carnet Wiki

Évolutions Table des matières / Intertitres hiérarchisés

Version 4 — Février 2013 Beurt

Suite aux discussions amorcées en janvier 2011 sur la liste SPIP Zone, ci-joint une proposition concernant la question d’une table des matières automatiques et des intertitres hiérarchisés.

Il s’agit de reprendre des fonctionnalités actuellement présente dans Table des Matières, Des intertitres hiérarchisés et des outils pour les manipuler, Enluminures typographiques V3 et Un sommaire pour vos articles. L’ensemble des fonctionnalités (qui seront décrites en détail ci-après) seront séparées en deux plugins. Un premier plugin qui se contente d’ajouter les intertitres hiérarchisés à SPIP (ajout des nouveaux raccourcis) et un second plugin reprenant les fonctionnalités concernant la création d’une table des matières, la gestion des ancres et de la navigation dans l’article, les modèles d’extraction de contenu basé sur le plan de l’article, etc. Ce second plugin devra pouvoir fonctionner de manière autonome (c’est-à-dire sans intertitres hiérarchisés, simplement avec les intertitres de base de SPIP), avec le plugin Intertitres Hiérarchisés ou bien encore avec le plugin Enluminures Typographiques [1].

L’ensemble des fonctionnalités de l’actuel plugin Intertitres hiérarchisés et table des matières serait disponible en utilisant conjointement les deux plugins ci-dessous.

Plugin Intertitre Hiérarchisé

  • Ajoutera la fonctionnalité des intertitres hiérarchisés à SPIP
    • Utilisera par défaut la notation {{{* }}}, {{{** }}}, {{{*** }}} etc. pour les intertitres non numérotés de niveau 1, 2, 3...
    • Utilisera la notation {{{# }}}, {{{## }}}, {{{### }}}, etc. pour les intertitres NUMEROTES AUTOMATIQUEMENT de niveau 1, 2, 3, etc.
    • Traitera également les raccourcis {1{ }1}, {2{ }2}, {3{ }3} afin d’assurer la compatibilité avec l’existant.
    • Traitera également la notation == ==, === ===, ==== ====, etc. à la wiki..
    • En fait, faudrait peut-être qu’on puisse configurer l’usage d’autres balises quelque part (peut-être des $GLOBALS['ouvre_intertitre'] et $GLOBALS['ferme_intertitre'] ?
  • Par défaut, les intertitres de niveau 1 seront en <h3 class="spip">.
    • Il sera possible de spécifier le niveau de démarrage et la classe des intertitres avec les variables $GLOBALS['debut_intertitre'] et $GLOBALS['fin_intertitre'], les niveaux suivants étant déduit de ce niveau initial.
  • Ajoutera au porte-plume des boutons additionnels correspondant aux intertitres des différents niveaux, non numérotés et numérotés.

Plugin Table des Matières

Je propose de faire évoluer le plugin homonyme actuel. Un tag serait posé dessus avant de le passer en version 3. (il est actuellement en version 2). Il permettra la génération automatisée d’une table des matières et reprendra les modèles d’extraction de contenu de Des intertitres hiérarchisés et des outils pour les manipuler.

Une première pièce à cet édifice est le plugin Sommaire automatique de Cerdic.

  • Ajoutera automatiquement des ancres aux intertitres (systématiquement, que la table des matières soit affichée ou non).
  • Fournira un modèle <table_des_matieresXXX|titre=oui|profondeur=2|minimum=5|longueur_max=40> fournissant la table des matières de l’article XXX.
    • titre permettra de spécifier si on doit afficher le titre Table des matières ou non, oui par défaut
    • profondeur permettra de spécifier le niveau des intertitres à afficher (profondeur=2 signifie intertitres de niveau 1 et 2 seulement), si non spécifié, tous les intertitres
    • minimum indiquera le nombre minimum d’intertitres pour que la table des matières soit affiché (si non spécifié, toujours affiché)
    • longueur_max : longueur maximum des intertitres (tronqués sinon), non tronqués si non spécifié
    • le modèle par défaut utilisera une syntaxe en liste (<ul><li>) mais pourra être surchargé par les utilisateurs.
  • La balise #TABLE_MATIERES (pour compat avec Table des Matières) appelée dans une boucle article renverra le dit modèle. Les mêmes paramètres pourront lui être passée.
  • Le formulaire de configuration permettra de choisir si la table des matières doit être automatiquement ajoutée ou non au début du texte des articles.
    • Le cas échéant, on pourra indiquer si on doit afficher le titre pour cette table automatique, la profondeur minimum, le minimum d’intertitres et la longueur max des titres.
  • À la différence de la version actuelle de Table des Matières, on pourra décider ou non dans le formulaire de configuration d’ajouter ou non au texte des retours à la table des matières. Cette option ne sera disponible que si on a activé la table des matières automatique.
    • Pour les retours, on pourra choisir s’ils doivent être placés à la fin de l’intertitre ou bien à la fin de la partie.
    • On pourra spécifier la profondeur d’affichage des retours à la table des matières.
    • Bien sur, ils ne seront ajoutés automatiquement que si la table des matières aura été ajoutée automatiquement.
    • Quand les retours sont affichés en fin de section, une option permettra de sire s’il faut les aligner à droite.
  • Pour les squelettes qui utilisent la balise #TABLE_MATIERES, un filtre ajout_retours_table sera disponible pour être appliqué, là où il y a besoin, au texte des articles. Ce filtre prendra les mêmes paramètres que la balise #TABLE_MATIERES pour que les retours ne soient ajoutés qu’en cas de besoin.
  • Un modèle <retour|table> (syntaxe choisie pour être correctement interprétée par SPIP) pour afficher un retour à la table des matières à l’endroit de son choix.
    • C’est ce modèle qui serait utilisé par les autres fonctions (filtre et ajout automatique), ce qui permettra une surcharge facile.
  • Reprise des modèles <renvoi>, <extrait> et <extrait|partie> de Des intertitres hiérarchisés et des outils pour les manipuler.
  • Ajout d’une compatibilité avec le Plugin Insérer Modèles pour l’ensemble des modèles fournis par le plugin.