Table des matières

Une table des matières de base (TOC) et des titres numérotés (NH) sont inclus dans PmWiki 2.2.119 and et peuvent être activés avec ce qui suit dans config.php:

$PmTOC['Enable'] = 1;

Usage

Cette fonctionnalité est basée sur la recette Cookbook:AutoTOC, mais elle est quelque peu simplifiée.

  • La table des matières est automatique, il n'est pas nécessaire d'ajouter de balisage à la page wiki.
  • Elle est insérée juste avant le premier titre de la page wiki.
  • Par défaut, seules les pages comportant au moins 3 titres auront une table des matières.
  • Les visiteurs peuvent ouvrir ou fermer la table des matières, et leur dernier choix sera mémorisé par leur navigateur dans le "localStorage". Ce choix sera ensuite utilisé pour les autres pages. Il sera conservé lors d'une visite ultérieure du wiki, tant que le "localStorage" n'aura pas été vidé entre-temps.
  • Cette fonctionnalité permet de numéroter automatiquement les titres de la page.
  • Les titres des sections masquées ("comment" wikistyle, "display:none") ne seront pas inclus dans la table des matières.
  • Les titres avec la classe %notoc% ne seront pas inclus dans la table des matières.
  • Les titres dans les blocs (:markup:) sont ignorés.

Les directives suivantes de la page wiki permettent de contrôler les fonctionnalités ci-dessus :

  • (:toc:) la table des matières sera insérée à cette position (plutôt qu'à la position par défaut), même s'il y a moins de 3 titres dans la page.
  • (:notoc:) Aucune table des matières n'apparaîtra sur la page, même s'il y a 3 titres ou plus, ou une directive (:toc:). Si votre page ne contient qu'un seul titre, vous pouvez utiliser (:notoc:) pour masquer la numérotation.
  • Ces deux directives peuvent être placées n'importe où dans une page, même dans des pages incluses comme une barre latérale ou un en-tête.
  • Sur une page contenant à la fois (:toc:) et (:notoc:), ce dernier l'emporte et il n'y aura pas de table des matières.

La table des matières utilisera les ancres ou les identifiants des titres de la page, s'ils existent; sinon, elle créera un nouvel identifiant (hash) basé sur la structure de la page. Les balises suivantes créeront toutes un lien avec l'ancre PageUrl#here :

  • !!#here En-tête avec id (à partir de PmWiki 2.5.5)
  • !! En-tête avec id %block id=here%
  • !! En-tête avec ancre en ligne [[#here]], or
  • !! [[#here]] En-tête avec ancre en ligne
  • [[#here]]
    !! Ancre précédant le titre

S'il n'y a pas d'identifiant ou d'ancre avec un titre, l'ancre sera sous la forme #toc-1.2.1 où 1.2.1 est le chemin structurel vers la section, dans cet exemple "Section 1, sous-section 2, sous-sous-section 1".

Configuration

La configuration locale suivante (dans local/config.php) permet de contrôler les paramètres par défaut :

  • $PmTOC['Enable'] = 1; # Activer la table des matières et/ou l'indexation, désactivé par défaut.
  • $PmTOC['Closed'] = 1; # Fermer/réduire la table des matières initialement; la valeur par défaut est 0 = ouverte.
    Notez que les visiteurs peuvent ouvrir ou fermer la table des matières et que leur dernier choix sera mémorisé par leur navigateur. Pour tester cette fonctionnalité, ouvrez une nouvelle fenêtre de navigation privée/incognito.
  • $PmTOC['MaxLevel'] = 6; # niveaux de titres inclus dans la table des matières
    Par défaut,
    <h1> à <h6> sont inclus. Définissez cette valeur à 3 pour n'inclure que les titres <h1> à <h3>.
  • $PmTOC['MinNumber'] = 3; # Nombre minimum de titres dans la page pour que la table des matières soit générée.
    Les pages avec peu de titres sont généralement courtes et n'ont pas besoin de table des matières.
    • $PmTOC['MinNumber'] = 2; # Les pages avec plus de 2 titres auront une table des matières
    • $PmTOC['MinNumber'] = 9999999; # La table des matières ne sera pas automatique ; seule la directive (:toc:) créera une table des matières dans la page.
  • $PmTOC['NumberedHeadings'] = '1.1.1.1.1.1'; # Les titres seront numérotés (désactivé par défaut).
    • Vous pouvez définir ici la numérotation des différents niveaux de titres : 1 (chiffre), I ou i (chiffres romains), A ou a (lettres A-Z ou a-z). Par exemple, la spécification suivante
      $PmTOC['NumberedHeadings'] = 'I.1.a';
      numérotera les titres de niveau supérieur d'une page en chiffres romains majuscules (I, II, ...), le deuxième niveau en chiffres, le troisième en lettres minuscules (a, b, ...) et les niveaux suivants (le cas échéant) en chiffres.
    • $PmTOC['MinNumber'] = 9999999; # Activez uniquement les titres numérotés sans créer de table des matières. Vous devez toujours définir $PmTOC['Enable'] = 1;
  • $PmTOC['MinNumberedHeadings'] = 2; # Les titres ne seront numérotés que s'il y en a au moins 2.
  • $PmTOC['EnableBacklinks'] = 1; # Insérer après les titres des chevrons "^" renvoyant à la table des matières (désactivé par défaut).
  • $PmTOC['ParentElement'] = "#wikitext"; # le sélecteur de requête de l'élément HTML parent où le bloc TOC doit être inséré
    par défaut, la table des matières est insérée avant le premier titre ; vous pouvez ici sélectionner un autre élément. Si vous sélectionnez cet élément, la table des matières sera insérée dans l'élément situé en haut. La directive
    (:toc:) dans la page peut remplacer cet élément.

Internationalisation

La chaîne de caractères suivante peut être traduite dans XLPage, par exemple en français :

  "Contents" => "Sommaire",

Styles

Pour modifier le caractère accent circonflexe "^" dans les liens de retour à la table des matières, vous pouvez ajouter le code suivant au fichier pub/css/local.css :

.back-arrow::after {
  /* Use one of the content: lines */
  content: "\2191"; /* ↑ Up arrow */
  content: "\21A9"; /* ↩ Return arrow */
  content: "\2934"; /* ⤴ Up-right arrow */
  content: "\2912"; /* ⤒ Upwards arrowhead */
  content: "\2303"; /* ⌃ Control symbol */
  content: "\21E7"; /* ⇧ Upwards white arrow */
  content: "\2302"; /* ⌂ House */
  content: "\21B0"; /* ↰ Upwards arrow with tip */
  content: "\21A5"; /* ↥ Upwards arrow from bar */
  content: "\25B2"; /* ▲ Black up-pointing triangle */
  content: "\261D"; /* ☝🏻 Up-pointing index emoji */
  /* Or some small text */
  content: "[Contents]"; font-size: 0.6rem; vertical-align: super;
}
Si vous préférez afficher la table des matières à droite, vous pouvez insérer le code suivant dans votre fichier local.css :
.PmTOCdiv {
  float: right;
  margin-left: 5px;
}

La taille de police par défaut est de 13 px et la hauteur maximale par défaut est de 40vh (40 % de la hauteur de l'écran). Lorsque la hauteur du tableau dépasse la valeur maximale, une barre de défilement apparaît (overflow:auto).

Vous pouvez modifier la taille de la police et la hauteur maximale du tableau en les définissant dans votre fichier local.css :
.PmTOCdiv { 
  font-size: 15px; 
  max-height: 600px;
}

La numérotation d'un titre inclut tous les niveaux "parents", comme "2.3.1". Pour n'afficher que le numéro du titre actuel, par exemple "1", ajoutez à local.css :

.pmnumwrap > span:not(:last-child) {
  display: none;
}

Voir aussi

Voir aussi : Cookbook:AutoTOC. Si vous avez déjà utilisé AutoTOC, vous devez le désactiver lors de l’activation de $PmTOC.


Traduction de PmWiki.TableOfContents Page originale sur PmWikiFr.TableOfContents - Référencé par
Dernières modifications:
PmWikiFr.TableOfContents: 18 mai 2026 à 12h15
PmWiki.TableOfContents: 17 mai 2026 à 16h05