Answers:
好吧,通过像这样编写文档脚本似乎更容易做到这一点:
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
),键入“ Second”,然后按Return
⌘⌥1
),键入“ Third”,然后按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;
}
我使用Firefox在目录应用程序和编号标题应用程序之间进行了快速比较。诚然,如果两个应用程序的情况都得到改善,则此信息将过时: