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


Ответы:


100

Если вам нужно что-то более легкое, есть надстройка Google под названием «Оглавление» , которая позволит вам пронумеровать заголовки.

Чтобы установить это дополнение:

  1. Щелкните надстройки> Получить надстройки.
  2. Щелкните значок «Оглавление» или найдите это дополнение, чтобы установить его.

После этого на боковой панели должно появиться оглавление. Щелкните меню «Формат номеров заголовков» и выберите «1.2.3».

Вы должны переформатировать свой документ, если у вас есть старый, чтобы «обновить» числа, но на самом деле надстройка работает очень хорошо.

Я видел ответ на этом форуме .


4
Если боковая панель не отображается, перейдите в «Надстройки-> Оглавление-> Показать на боковой панели» .
Стивен Джеурис

3
Думаю, любой может назвать свое дополнение «Оглавление». Так что ссылка на фактическое дополнение будет полезна. Я предполагаю, что вы имеете в виду это: chrome.google.com/webstore/detail/table-of-contents/…
nealmcb

Как устанавливается плагин - на компьютер / браузер, на документ, на пользователя в документах Google? Что произойдет, если другие захотят отредактировать документ?
Сибилла Питерс,

1
К сожалению, этот плагин не работает. Не удается установить из-за проблемы с авторизацией. Другие получают такой же результат?
gavdotnet

1
@gavdotnet У меня это сработало, поэтому они, должно быть, исправили это.
codefreak

50

Обновление: теперь доступно в github .

Обновление 2: теперь обрабатываются пустые заголовки и пустые строки благодаря 2 запросам на перенос на github.

Обновление 3: github и код ниже исправлены для обработки новой идентификации ЗАГОЛОВКИ ДОКУМЕНТОВ.


Я изменил сценарий, упомянутый Микко Отамаа, и создал сценарий Google Apps, который добавляет меню документа инструментов заголовков, которое позволяет:

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

Как автоматически пронумеровать заголовки документов Google:

  1. Откройте документ> Инструменты> Редактор скриптов ...
  2. Начать пустой проект
  3. Вставьте код ниже и сохраните с вашим предпочтительным именем
  4. Выберите Выполнить> onOpen и авторизуйте скрипт в первый раз.
  5. Выберите Выполнить> onOpen.
  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 Диска. Я планирую это сделать, но сейчас у меня нет времени ..
Лучано

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

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

10

Все, что вам нужно сделать, это скопировать / вставить предыдущие заголовки.

Если вы копируете и вставляете любой элемент нумерованного списка, он сохраняет свою нумерацию и автоматически меняет номер в соответствующих случаях.


Насколько прагматично, это решение недооценивается.
Somethis

Действительно, это самое простое, РОДСТВЕННОЕ решение (если вы все еще на этапе редактирования)!
Демис

1
Насколько я могу судить, это требует, чтобы вы делали отступ на каждом уровне заголовка, на который вы спускаетесь. Так ли это или есть другой способ?
gavdotnet

1
Проблема в том, что вам нужно скопировать заголовки из одного и того же документа . Если вы скопируете «заголовок 1», например, из другого html-документа, несмотря на сохранение форматирования «заголовок x», он не будет иметь номера. Это означает, что если у вас уже есть другой документ с кучей текста, который вы хотите скопировать и вставить, ваше решение потребует слишком много ручной работы. Или на самом деле: это то же самое, если у вас уже есть документ, и вы просто хотите, чтобы в нем были перечислены заголовки.
Hi-Angel

5

С момента написания (апрель 2020 г.) многие предлагаемые приложения устарели или больше не работают.

Я нашел работающим метод для нумерованных заголовков:

  1. Перейти в Получить дополнения
  2. Найдите и установите инструменты Markdown

В Markdown Tools есть возможность использовать пронумерованные заголовки. Прекрасно работает со встроенным Оглавлением Google.

Чтобы создать оглавление:

  1. Перейдите в пункт меню « Вставить» и выберите «Оглавление».

Это очень полезно! Я бы не подумал, что простая функция нумерации оглавления будет в инструменте уценки, но он отлично работает, спасибо!
prrao

1

Я написал версию для заголовков уценки, но она также поддерживает простые номера заголовков. Источник находится здесь https://github.com/jordan2175/markdown-tools и доступен через G Suite Marketplace как «Инструменты разметки».


Привет @ jordan2175, надстройка отличная. Было бы хорошо, если бы в создаваемом оглавлении были номера страниц.
Дэвид Лопес,

0

Ранее упомянутое дополнение «Оглавление» на сегодняшний день недоступно. Я установил тот, который называется « Инструменты разметки ». После установки вы должны применить собственные стили заголовков, а затем перейти в « Дополнения»> «Инструменты разметки»> «Номера заголовков» и выбрать желаемый стиль нумерации, который будет применен ко всем заголовкам в документе.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.