Google Docs / Drive - numérotez les en-têtes


Réponses:


93

Si vous voulez quelque chose de plus simple, il existe un module complémentaire Google appelé "Table des matières" qui vous permettra de numéroter vos titres.

Pour installer ce module complémentaire:

  1. Cliquez sur Add-Ons> Get Add-Ons.
  2. Cliquez sur l'icône "Table des matières" ou recherchez cet addon pour l'installer

Ensuite, votre table des matières devrait apparaître dans votre barre latérale. Cliquez sur le menu Format des numéros de titre et choisissez 1.2.3

Vous devez reformater votre document si vous en avez un ancien afin de «rafraîchir» les chiffres, mais en fait, l'addon fonctionne très bien.

J'ai vu la réponse dans ce forum .


4
Si la barre latérale n'est pas affichée, allez dans "Modules complémentaires-> Table des matières-> Afficher dans la barre latérale" .
Steven Jeuris

3
Je pense que n'importe qui peut appeler son module complémentaire "Table of Contents". Un lien vers le module complémentaire est donc utile. Je suppose que vous voulez dire celui-ci: chrome.google.com/webstore/detail/table-of-contents/…
nealmcb

Comment le plugin est-il installé - par machine / navigateur, par document, par utilisateur sur Google Docs? Que se passe-t-il si d'autres souhaitent modifier le document?
Sybille Peters le

1
Malheureusement, ce plugin semble être cassé. L'installation échoue en raison d'un problème d'autorisation. Les autres obtiennent-ils le même résultat?
gavdotnet

1
@gavdotnet Cela a fonctionné pour moi, ils ont donc dû le réparer.
codefreak

49

Mise à jour: maintenant disponible dans github .

Mise à jour 2: gère désormais les en-têtes vides et les lignes vides grâce à 2 pull requests sur github.

Mise à jour 3: github et code ci-dessous corrigés pour gérer la nouvelle identification Docs HEADING.


J'ai modifié le script mentionné par Mikko Ohtamaa et créé un script Google Apps qui ajoute un menu Outils de titres qui vous permet de:

  • Titre automatique
  • effacer les numéros de titres

Comment numéroter automatiquement les en-têtes de documents Google:

  1. Ouvrez votre document> Outils> Editeur de script ...
  2. Démarrer un projet vierge
  3. Collez le code ci-dessous et enregistrez-le avec votre nom préféré
  4. Sélectionnez Exécuter> onOpen et autorisez le script pour la première fois
  5. Sélectionnez Exécuter> onOpen
  6. Passez à votre document et essayez les fonctions du menu personnalisé des outils de titres créé.

~~ Clause de non-responsabilité: vous pouvez avoir des problèmes avec les titres vides. Mais vous pouvez toujours les résoudre et exécuter à nouveau l'action. ~~

Code à copier et coller:

function onOpen() {
  DocumentApp.getUi().createMenu('Headings Tools')
  .addItem('Auto Number Headings', 'numberHeadingsAdd')
  .addItem('Clear Heading Numbers', 'numberHeadingsClear')
  .addToUi();
}

function numberHeadingsAdd(){
  numberHeadings(true);
}

function numberHeadingsClear(){
  numberHeadings(false);
}

function numberHeadings(add){
  var document = DocumentApp.getActiveDocument();
  var body = document.getBody();
  var paragraphs = document.getParagraphs();
  var numbers = [0,0,0,0,0,0,0];
  for (var i in paragraphs) {
    var element = paragraphs[i];
    var text = element.getText()+'';
    var type = element.getHeading()+'';

    // exclude everything but headings
    if (!type.match(/HEADING\d/)) {
      continue;
    }

    // exclude empty headings (e.g. page breaks generate these)
    if( text.match(/^\s*$/)){
      continue;
    }

    if (add == true) {
      var level = new RegExp(/HEADING(\d)/).exec(type)[1];
      var numbering = '';

      numbers[level]++;
      for (var currentLevel = 1; currentLevel <= 6; currentLevel++) {
        if (currentLevel <= level) {
          numbering += numbers[currentLevel] + '.';
        } else {
          numbers[currentLevel] = 0;
        }
      }
      Logger.log(text);
      var newText = numbering + ' ' + text.replace(/^[0-9\.\s]+/, '');
      element.setText(newText);
      Logger.log([newText]);
    } else {
      Logger.log(text);
      element.setText(text.replace(/^[0-9\.\s]+/, ''));
    }
  }

}

Je suis heureux de savoir @IvanCachicatari Je prévois de faire une version améliorée à lancer en tant qu'add-on de cette façon, nous n'avons pas besoin d'ouvrir l'éditeur de script à chaque fois ...
Luciano

2
@IvanCachicatari Excellente idée, vous l'avez! github.com/lpanebr/autoNumberHeadings
Luciano

2
@MrGravity le moyen d'y parvenir est de convertir le script en un module complémentaire pour Google Drive. Je prévois de le faire, mais je n'ai plus de temps maintenant ..
Luciano

1
Hou la la! J'ai l'impression que c'est à nouveau 90-cravates. Avons-nous vraiment besoin d'un script pour accomplir une chose aussi basique que la numérotation des titres? Maintenant, je comprends pourquoi il y a toutes ces initiatives de programmation - nos enfants ont vraiment besoin de connaître leur JavaScript pour écrire n'importe quel document de travail; P
Janusz Skonieczny

1
@Luciano ça marche un peu . Je vois une chose étrange se produire. Si je coupe et colle le code de git, j'obtiens l'un des deux résultats: rien ne se passe ou une erreur d'analyse de regex à la ligne 38. Pour que cela fonctionne, je dois 1) couper et coller le code git de 10/16 / 17, 2) enregistrer, 3) effectuer manuellement les modifications nsof suggérées, 4) enregistrer et exécuter comme indiqué ci-dessus. J'ai remarqué une légère différence: la ligne 38 de votre version supprime la parenthèse autour de \ d.
Ginger McMurray

10

Tout ce que vous avez à faire est de copier / coller les en-têtes précédents.

Si vous copiez et collez un élément de la liste numérotée, il conserve sa numérotation et change automatiquement le numéro dans les cas appropriés.


Quelle pragmatique, cette solution est sous-estimée.
parfois le

En effet, c'est la solution NATIVE la plus simple (si vous êtes encore en phase d'édition)!
Demis

1
Pour autant que je sache, cela nécessite que vous indentiez chaque niveau de titre dans lequel vous descendez. Est-ce le cas ou y a-t-il un autre moyen?
gavdotnet

1
Le problème est que vous devez copier les en-têtes du même document . Si vous copiez un "titre 1" par exemple à partir d'un autre document html, malgré le formatage "titre x" conservé il n'aura pas le numéro. Cela signifie que si vous avez déjà un autre document avec beaucoup de texte que vous souhaitez copier-coller, votre solution nécessiterait trop de travail manuel. Ou en fait: c'est la même chose si vous avez déjà un document et que vous voulez juste y énumérer les titres.
Hi-Angel

3

Depuis l'écriture (avril 2020), de nombreuses applications proposées sont obsolètes ou ne fonctionnent plus.

La méthode pour les en-têtes numérotés que j'ai trouvés fonctionnels est la suivante:

  1. Accéder à Obtenir des modules complémentaires
  2. Rechercher et installer les outils Markdown

Markdown Tools a une option pour utiliser des en-têtes numérotés. Fonctionne comme un charme avec la table des matières intégrée de Google.

Pour créer une table des matières:

  1. Accédez à l'élément de menu Insérer et sélectionnez Table des matières

C'est super utile! Je n'aurais pas pensé qu'une simple fonctionnalité de numérotation de table des matières serait dans un outil de démarque, mais cela fonctionne très bien, merci!
prrao

1

J'ai écrit une version pour faire des en-têtes de démarque, mais elle prend également en charge les numéros de titre simples. La source est ici https://github.com/jordan2175/markdown-tools et est disponible via G Suite Marketplace en tant que "Markdown Tools".


Salut @ jordan2175 l'add-on est génial. Ce serait bien si la table des matières qu'il génère avait des numéros de page.
David Lopez le

0

Le module complémentaire "Table des matières" mentionné précédemment n'est pas disponible à partir d'aujourd'hui. J'ai installé celui appelé " Markdown Tools " Une fois installé, vous devez appliquer des styles de titres natifs, puis aller dans Add-Ons> Markdown Tools> Heading numbers et choisir le style de numérotation souhaité qui sera appliqué à tous les titres du doc.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.