Google Docs / Drive - нумеруйте заголовки


Відповіді:


98

Якщо ви хочете чогось більш простого, існує надбудова Google під назвою «Зміст», яка дозволить вам нумерувати ваші заголовки.

Щоб встановити цю надбудову:

  1. Клацніть на Додатки> Отримати надбудови.
  2. Клацніть на піктограму "Зміст" або знайдіть цей аддон, щоб встановити його

Тоді ваш зміст повинен з’явитися на бічній панелі. Клацніть на меню Формат заголовків і виберіть 1.2.3

Вам доведеться переформатувати документ, якщо у вас є старий, щоб «оновити» номери, але насправді аддон працює дуже добре.

Я бачив відповідь на цьому форумі .


4
Якщо бічна панель не відображається, перейдіть до "Додатки-> Зміст-> Показати на бічній панелі" .
Steven Jeuris

3
Думаю, кожен може назвати свою надбудову "Зміст". Тож посилання на фактичну надбудову корисне. Думаю, ви маєте на увазі саме це: chrome.google.com/webstore/detail/table-of-contents/…
nealmcb

Як встановлюється плагін - на машину / браузер, на документ, на кожного користувача в google docs? Що станеться, якщо інші хочуть редагувати документ?
Sybille Peters

1
На жаль, цей плагін, здається, не працює. Не вдається встановити через проблему авторизації. Чи отримують інші однаковий результат?
gavdotnet

1
@gavdotnet Це спрацювало для мене, тому вони, мабуть, це виправили.
codefreak

50

Оновлення: тепер доступне у github .

Оновлення 2: тепер обробка порожніх заголовків і порожніх рядків завдяки 2 запитам на витягування на github.

Оновлення 3: Виправлено github та код нижче, щоб обробляти нові ідентифікаційні заголовки Документів.


Я змінив сценарій, згаданий Мікко Отамаа, і створив сценарій Google Apps, який додає меню Документи інструментів заголовків, що дозволяє вам:

  • Автозаголовок
  • очистити номери заголовків

Як автоматично нумерувати заголовки документів Google:

  1. Відкрийте документ> Інструменти> Редактор сценаріїв ...
  2. Почніть пустий проект
  3. Вставте наведений нижче код і збережіть із зазначеним попередньо назвою
  4. Виберіть Запустити> onOpen і вперше авторизуйте сценарій
  5. Виберіть Запустити> увімкнути
  6. Перейдіть у свій документ і спробуйте функції в створеному спеціальному меню Інструменти заголовків .

~~ Застереження: у вас можуть бути проблеми з порожніми заголовками .. Але ви завжди можете їх виправити і запустити дії знову. ~~

Код для копіювання та вставки:

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]+/, ''));
    }
  }

}

Я радий дізнатися @IvanCachicatari, я планую зробити вдосконалену версію для запуску як Додаток, таким чином нам не потрібно відкривати редактор сценаріїв щоразу ...
Лучано

2
@IvanCachicatari Чудова ідея, ось вам! github.com/lpanebr/autoNumberHeadings
Лучано

2
@MrGravity спосіб досягти цього - перетворити сценарій у надбудову для Google Drive. Я планую це зробити, але зараз у мене немає часу.
Лучано,

1
Оце Так! Я відчуваю, що це знову 90-й. Чи нам справді потрібен сценарій для виконання такої базової речі, як нумерація заголовків? Тепер я розумію, чому існують всі ці ініціативи щодо програмування - нашим дітям справді потрібно знати свій JavaScript, щоб писати будь-які робочі документи; P
Януш Сконечний

1
@Luciano що начебто працює. Я бачу дивне, що відбувається. Якщо я вирізаю та вставляю код із git, я отримую один із двох результатів: нічого не відбувається або помилка синтаксичного аналізу регулярного виразу в рядку 38. Щоб змусити його працювати, я повинен 1) вирізати та вставити git-код з 10/16 / 17, 2) зберегти, 3) внести вручну зміни, запропоновані, 4) зберегти та запустити, як зазначено вище. Я помітив невелику різницю: рядок 38 у вашій версії видаляє дужки навколо \ d.
Джинджер Макмюррей,

10

Все, що вам потрібно зробити, це скопіювати / вставити попередні заголовки.

Якщо скопіювати та вставити будь-який елемент нумерованого списку, він зберігає свою нумерацію та автоматично змінює номер у відповідних випадках.


Наскільки прагматичним, це рішення недооцінене.
небудь

Дійсно, це найпростіше, РІДНЕ рішення (якщо ви ще на стадії редагування)!
Деміс

1
Наскільки я можу зрозуміти, для цього потрібно, щоб ви робили відступ з кожним рівнем заголовка, на який опускаєтесь. Так це чи є інший шлях?
gavdotnet

1
Проблема полягає в тому, що вам потрібно скопіювати заголовки з того самого документа . Якщо ви скопіюєте "заголовок 1", наприклад, з іншого html-документа, незважаючи на збережене форматування "заголовок x", він не матиме номера. Це означає, що якщо у вас вже є інший документ із купою тексту, який ви хочете скопіювати-вставити, ваше рішення вимагатиме занадто багато ручної роботи. Або насправді: те саме, якщо у вас вже є документ, і ви просто хочете, щоб там були перелічені заголовки.
Hi-Angel

5

З моменту написання (квітень 2020 р.) Багато пропонованих програм застаріли або більше не працюють.

Метод нумерованих заголовків, який я знайшов робочим, такий:

  1. Перейдіть до розділу Отримати доповнення
  2. Шукайте та встановлюйте Markdown Tools

Markdown Tools має можливість використовувати пронумеровані заголовки. Працює як шарм із вбудованим Змістом Google.

Щоб створити зміст:

  1. Перейдіть до пункту меню Вставити та виберіть Зміст

Це надзвичайно корисно! Я б не думав, що проста функція нумерації TOC буде в інструменті розмітки, але це чудово працює, дякую!
пррао

1

Я написав версію для розміщення заголовків розмітки, але вона також підтримує звичайні номери заголовків. Джерело знаходиться тут: https://github.com/jordan2175/markdown-tools і доступне через G Suite Marketplace як "Інструменти розмітки".


Привіт @ jordan2175 надбудова чудова. Було б непогано, якби TOC, який він генерує, мали номери сторінок.
Девід Лопес,

0

Згаданий раніше додаток "Зміст" на сьогодні недоступний. Я встановив той, який називається " Інструменти розмітки ". Після встановлення ви повинні застосувати рідні стилі заголовків, а потім перейти до Додатки> Інструменти розмітки> Номери заголовків і вибрати бажаний стиль нумерації, який застосовуватиметься до всіх заголовків у документі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.