Можно ли получить нумерацию заголовков в Документах Google?

33

Есть ли способ автоматически нумеровать заголовки в Документах Google?

Раньше это было возможно с CSS, но эта функция больше не поддерживается в новой версии Google Docs.

Мартин Делиль
источник
Добавлен google-apps-script, потому что принятый ответ использует его.
Рубен

Ответы:

6

Что ж, кажется, проще сделать это, написав документ так:

var pars = DocumentApp.getActiveDocument().getBody().getParagraphs();
var counterh1 = 0;
for(var i=0; i < pars.length; i++) {
    var par = pars[i];
    var hdg = par.getHeading();
    if (hdg == DocumentApp.ParagraphHeading.HEADING1) {
          counterh1++; 
          var content = par.getText();
          var chunks = content.split('\t');
          if(chunks.length > 1) { 
              par.setText(counterh1+'.\t'+chunks[1]); 
          } else {
              par.setText(counterh1+'.\t'+chunks[0]); 
          }
    }
}
robert77
источник
1
Вы правы, сценарии Google настолько мощные!
Мартин Делиль
13

На самом деле это возможно даже без редактирования HTML / CSS. Я приведу пример с пустым документом, но как только вы поймете, как он работает, вы сможете сделать это на уже существующем документе. Также, если вы еще не используете сочетания клавиш, я бы посоветовал вам начать их использовать (в этом примере я использую сочетания клавиш Mac, но вы легко можете найти подходящие для вашей собственной ОС).

  1. Создать новый документ
  2. Применить заголовок 1 ( ⌘⌥1)
  3. Применить нумерованный список ( ⌘⇧7)
  4. Введите «Первый» и нажмитеReturn
  5. Примените Заголовок 1 ( ⌘⌥1), введите «Второй» и нажмитеReturn
  6. Примените Заголовок 1 ( ⌘⌥1), введите «Третий» и нажмитеReturn

В этот момент у вас должно быть что-то похожее на это:

Нумерованные заголовки в Документах Google

  1. Получите ваш курсор в конце первого заголовка
  2. Нажмите Returnдважды
  3. Типа "Привет, мир!"
  4. Повторите процедуру для остальных заголовков

Теперь ваш документ должен выглядеть примерно так:

Нумерованные заголовки с дополнительным текстом между

Как вы могли заметить, автоматическая нумерация все еще существует, и вы можете легко экспериментировать, добавляя больше заголовков, сколько хотите, и даже нумерованные подзаголовки, если это необходимо. Я не буду вдаваться в подробности, но здесь вы можете проверить пример с вложенными нумерованными списками с правильным форматированием для заголовков:

Полный пример для пронумерованных заголовков

Lipis
источник
1
Это выглядит красиво, но, кажется, не полностью функционально: как мне добавить новый заголовок 1 в конце документа? Если я устанавливаю заголовок 1, а затем применяю список номеров, он начинает нумерацию с 1 ...
Мартин Делиль
3
@tinmaru Это немного сложно ... но все же выполнимо. Перейдите в конец предыдущего заголовка, в котором вы хотите продолжить нумерацию, нажмите ввод и затем примените заголовок. Затем обрежьте это (не говоря уже о числе, оставленном позади), перейдите в конец документа и вставьте его. Теперь вы увидите, что число верное, поэтому просто перейдите и исправьте предыдущую ошибку, удалив пустой заголовок, если он есть.
Липис
1
Ницца! Это хитрость;)
Мартин Делиль
@tinmaru, если ответ полезен, не забудьте пометить его;)
Lipis
1
да, извини, я совсем забыл! Спасибо за вашу помощь :)
Martin Delille
2

Я знаю, что это может больше не относиться к OP, но теперь есть возможность использовать дополнения. В дополнении «Оглавление» есть функция, в которой можно выбрать схему нумерации для заголовка, и она выполняет необходимые действия:

1
1.1
2
2.1
2.1.1

Я надеюсь, что это будет полезно для чего-то.

Ссылка на дополнение

Отказ от ответственности: Это может работать только на Chrome, но, по крайней мере, это работает.

Как использовать: с правой стороны есть виджет, а в верхней части вы можете выбрать схему нумерации и обновить заголовки с помощью обычной кнопки обновления.

Так что просто установите схему нумерации и обновите заголовок после того, как вы закончите редактирование, и у вас будут правильные и обновленные section/subsection/...номера.

GNS-апк
источник
Превосходно. Для меня это "ответ". Работает на Firefox для меня.
AronVanAmmers,
2

Теперь есть дополнение под названием « Номера заголовков», которое можно использовать для добавления любого пользовательского стиля нумерации. Позволяет выбирать / определять, обновлять и удалять автоматические номера заголовков.

Предопределенные стили:

  • 1.2.3 - цифры без запятой
  • 1.2.3. - цифры с конечной точкой
  • abc - строчные буквы
  • ABC - заглавные буквы
  • i.ii.ii - строчные буквы
  • I.II.III - Прописные римские
  • 1) a) i) - изменение стиля с последующими скобками

Я выпустил это дополнение пару недель назад. Проверьте это на моей домашней странице или в магазине дополнений .

Кристоффер
источник
Запись FAQ для Как добавить автоматическую нумерацию заголовков? «Если надстройка установлена, выберите« Дополнения »->« Номера заголовков », а затем выберите свой стиль». Но при добавлении его в документ это не показывалось. Мне пришлось перезагрузить документ, прежде чем в меню появилось «Номера заголовков». Вероятно, это ошибка Google, а не ошибка в приложении «Номера заголовков».
bgoodr
1

Надеюсь это поможет

/*
Credits: 

https://productforums.google.com/forum/#!topic/docs/w4MXeqJaefU
http://webapps.stackexchange.com/questions/23861/header-numbering-in-google-docs

Instructions to use:

In a Google Doc

Go to Tools > Script Editor 
Select the option to create the script for Google Docs.
Replace the Content of Code.gs with the code below.
Save it and name the project as say addHeaderNumbering.
Click play icon for the function addHeaderNumbering (authorize it when asked).

*/

function addHeaderNumbering () {
  var pars = DocumentApp.getActiveDocument().getBody().getParagraphs();
  var counterHeader = [0, 0, 0, 0, 0, 0];

  for(var i=0; i<pars.length; i++) {
    var par = pars[i];
    var hdg = par.getHeading();
    if (hdg == DocumentApp.ParagraphHeading.HEADING1) {

      _addNumberingForHeaderType(DocumentApp.ParagraphHeading.HEADING1, par, 0, counterHeader);
    } else if (hdg == DocumentApp.ParagraphHeading.HEADING2) {
      _addNumberingForHeaderType(DocumentApp.ParagraphHeading.HEADING2, par, 1, counterHeader);
    } else if (hdg == DocumentApp.ParagraphHeading.HEADING3) {
      _addNumberingForHeaderType(DocumentApp.ParagraphHeading.HEADING3, par, 2, counterHeader);
    } else if (hdg == DocumentApp.ParagraphHeading.HEADING4) {
      _addNumberingForHeaderType(DocumentApp.ParagraphHeading.HEADING4, par, 3, counterHeader);
    } else if (hdg == DocumentApp.ParagraphHeading.HEADING5) {
      _addNumberingForHeaderType(DocumentApp.ParagraphHeading.HEADING5, par, 4, counterHeader);
    } else if (hdg == DocumentApp.ParagraphHeading.HEADING6) {
      _addNumberingForHeaderType(DocumentApp.ParagraphHeading.HEADING6, par, 5, counterHeader);
    }
  }
}


function _addNumberingForHeaderType(headerType, paragraph, initIndex, counterHeader) {
  counterHeader[initIndex] = counterHeader[initIndex] + 1;
  var currCounter = _getCurrenNumbering(initIndex, counterHeader);
  for(var ii = initIndex + 1; ii < counterHeader.length; ii++) {
    counterHeader[ii] = 0;
  }
  var content = paragraph.getText();
  var chunks = content.split('. ')

  var result = 'ok'
  if(chunks.length > 1) {

    paragraph.setText(currCounter+'. '+chunks[1]); 
  } else { 
    paragraph.setText(currCounter+'. '+chunks[0]);
  }
}


function _getCurrenNumbering(initIndex, counterHeader) {
  var value = '';
  for ( var i = 0; i <= initIndex; i++) {
    if (value) {
      value += '.';
    }
    value += counterHeader[i];
  }

  return value;
}
Sai
источник
1

Я провел быстрое сравнение между приложением Оглавление и приложениями Numbered Headings с помощью Firefox. Правда, эта информация станет устаревшей, если ситуация улучшится для обоих приложений:

  1. Нет онлайн-справки по использованию приложения «Оглавление» (ни разу не было, или оно было удалено). Кнопка «Справка» указывает на страницу, которая пытается продать вам пробную версию http: //lumapps-www.appspot. com / en / вместо предоставления помощи. Заголовок Numbers содержит часто задаваемые вопросы по адресу http://www.lorut.no/add-ons/heading-numbers-for-google-docs/faq/ .
  2. Приложения «Оглавление» и «Номера заголовков» плохо взаимодействуют друг с другом с точки зрения нумерации заголовков: я создал пронумерованные заголовки, используя номера заголовков, и применил аналогичные заголовки, используя оглавление, и добавил два набора чисел в заголовки. То же самое в случае, если вы измените порядок, применив заголовки, используя сначала оглавление, а затем номера заголовков.
  3. Оглавление не имеет такое же количество стилей заголовков, как у номеров заголовков.
  4. Но наличие боковой панели в оглавлении все еще удобно. Я выбираю «Как есть» на боковой панели «Оглавление» и могу нажать кнопку «Обновить» для просмотра и навигации по оглавлению.
  5. Заголовок номера имеет операцию очистки. Оглавление не делает. Операция Очистки никак не решить проблему взаимодействия описанной выше, который является весьма болезненным , потому что вы должны вручную исправить их.
  6. Ни одно из приложений не обновляет оглавление, вставленное в документ (через меню «Вставка / оглавление»).
bgoodr
источник