Есть ли способ автоматически нумеровать заголовки в Документах Google?
Раньше это было возможно с CSS, но эта функция больше не поддерживается в новой версии Google Docs.
Есть ли способ автоматически нумеровать заголовки в Документах Google?
Раньше это было возможно с CSS, но эта функция больше не поддерживается в новой версии Google Docs.
Ответы:
Что ж, кажется, проще сделать это, написав документ так:
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]);
}
}
}
На самом деле это возможно даже без редактирования HTML / CSS. Я приведу пример с пустым документом, но как только вы поймете, как он работает, вы сможете сделать это на уже существующем документе. Также, если вы еще не используете сочетания клавиш, я бы посоветовал вам начать их использовать (в этом примере я использую сочетания клавиш Mac, но вы легко можете найти подходящие для вашей собственной ОС).
⌘⌥1
)⌘⇧7
)Return
⌘⌥1
), введите «Второй» и нажмитеReturn
⌘⌥1
), введите «Третий» и нажмитеReturn
В этот момент у вас должно быть что-то похожее на это:
Return
дваждыТеперь ваш документ должен выглядеть примерно так:
Как вы могли заметить, автоматическая нумерация все еще существует, и вы можете легко экспериментировать, добавляя больше заголовков, сколько хотите, и даже нумерованные подзаголовки, если это необходимо. Я не буду вдаваться в подробности, но здесь вы можете проверить пример с вложенными нумерованными списками с правильным форматированием для заголовков:
Я знаю, что это может больше не относиться к OP, но теперь есть возможность использовать дополнения. В дополнении «Оглавление» есть функция, в которой можно выбрать схему нумерации для заголовка, и она выполняет необходимые действия:
1
1.1
2
2.1
2.1.1
Я надеюсь, что это будет полезно для чего-то.
Ссылка на дополнение
Отказ от ответственности: Это может работать только на Chrome, но, по крайней мере, это работает.
Как использовать: с правой стороны есть виджет, а в верхней части вы можете выбрать схему нумерации и обновить заголовки с помощью обычной кнопки обновления.
Так что просто установите схему нумерации и обновите заголовок после того, как вы закончите редактирование, и у вас будут правильные и обновленные section/subsection/...
номера.
Теперь есть дополнение под названием « Номера заголовков», которое можно использовать для добавления любого пользовательского стиля нумерации. Позволяет выбирать / определять, обновлять и удалять автоматические номера заголовков.
Предопределенные стили:
Я выпустил это дополнение пару недель назад. Проверьте это на моей домашней странице или в магазине дополнений .
То, что я искал, получало заголовки так:
1
1.1
1.1.1
1.1.1.1
etc
и я не смог найти ни одного, поэтому я сделал свой собственный сценарий, я разместил его здесь http://productforums.google.com/forum/#!topic/docs/w4MXeqJaefU
Надеюсь это поможет
/*
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;
}
Я провел быстрое сравнение между приложением Оглавление и приложениями Numbered Headings с помощью Firefox. Правда, эта информация станет устаревшей, если ситуация улучшится для обоих приложений: