以前可以在CSS中使用自动编号标题吗?

新的Google Docs版本不再支持此功能。

评论

添加了google-apps-script,因为接受的答案使用了它。

#1 楼

嗯,通过像这样编写文档脚本似乎更容易做到:

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]); 
          }
    }
}


评论


没错,Google脚本是如此强大!

– Martin Delille
13年7月22日在16:53

#2 楼

实际上,即使不编辑HTML / CSS也是可能的。我将为您提供一个带有空白文档的示例,但是一旦您弄清楚了它是如何工作的,您将能够在已经存在的文档上进行操作。另外,如果您尚未使用键盘快捷键,我建议您开始使用它们(在本示例中,我使用的是Mac的快捷键,但您可以轻松找到适合您自己操作系统的正确快捷键)。


创建一个新文档
应用标题1(⌘⌥1
应用编号列表(⌘⇧7
键入“ First”,然后按Return

应用标题1(⌘⌥1),键入“ Second”,然后按Return

应用标题1(⌘⌥1),键入“ Third”,然后按Return



应该具有如下所示的内容:




将光标置于第一个标题的末尾
按两次Return
键入“ Hello World!”。

重复其余标题的过程

现在您的文档应如下所示:



您可能会注意到自动编号仍然存在,并且可以通过添加更多标头来轻松进行实验您希望,甚至在需要时也可以编号子标题。我不打算讨论更多细节,但是在这里您可以检查一个示例,该示例包含带有正确格式的标头的嵌套编号列表:



评论


这看起来不错,但似乎不能完全发挥作用:如何在文档末尾添加新的标题1?如果我设置标题1,然后应用编号列表,它将从1开始编号...

– Martin Delille
2012年2月29日在16:54

@tinmaru有点棘手..但是还是可行的。转到要继续编号的前一个标题的末尾,按Enter键,然后应用标题。然后将其剪切(不要紧记剩下的数字),转到文档末尾并粘贴。您现在会看到该数字是正确的,因此只需删除空标头(如果有的话)来修复先前的错误。

– Lipis
2012年2月29日在19:04

真好!那是个把戏;)

– Martin Delille
2012年3月1日19:00

@tinmaru如果答案是有用的,请不要忘记对其进行标记;)

– Lipis
2012年3月2日于13:57

是的,我很抱歉我完全忘记了!谢谢你的帮助 :)

– Martin Delille
2012年3月4日18:05

#3 楼

希望对您有所帮助

/*
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;
}


#4 楼

我知道这可能不再适用于OP,但是现在可以使用附加组件了。目录附件中有一个功能,您可以在其中选择标题的编号方案,并且可以执行以下操作:

1
1.1
2
2.1
2.1.1


我希望它

附加组件的链接

免责声明:这可能仅在Chrome上有效,但是,至少它可以工作。

使用方法:右侧有一个小部件,在它的顶部,您可以选择编号方案并使用通常的刷新按钮刷新标题。

因此只需进行设置编号方案并完成编辑后更新标题,您将获得正确和更新的section/subsection/...号。

评论


优秀的。对我来说,这就是“答案”。我可以在Firefox上使用。

– AronVanAmmers
2014-09-22 11:38

该应用程序(尽管安装了超过一百万)已死。

–负责人
20年1月23日在23:24

#5 楼

现在有一个名为标题编号的加载项,您可以使用它添加任何自定义编号样式。它允许您选择/定义,更新和删除自动标题编号。

预定义样式:


1.2.3 –不带点号的数字
1.2.3。 –带尾号的数字
abc –小写字母
ABC –大写字母
i.ii.ii –小写罗马字母
I.II.III –大写罗马字母
1 )a)i)–更改样式,后跟括号。

两周前,我发布了此插件。在我的主页或附加商店中查看。

评论


如何添加自动标题编号的常见问题解答条目?说:“如果安装了附加组件,请选择“附加组件”->“标题编号”,然后选择您的样式。”但是,当将其添加到文档中时,并没有显示出来。在菜单中出现“标题编号”之前,我不得不重新加载文档。可能是Google错误,而不是标题编号应用程序中的错误。

–更好
2015年9月20日15:41

#6 楼

我一直在寻找这样的标题:

1
1.1
1.1.1
1.1.1.1
etc


我找不到任何东西,所以我做了自己的脚本,我把它张贴在这里
http://productforums.google.com/forum/#!topic/docs/w4MXeqJaefU

#7 楼

我使用Firefox在目录应用程序和编号标题应用程序之间进行了快速比较。诚然,如果两个应用程序的情况都得到改善,则此信息将过时:


没有在线帮助可用于使用目录应用程序(从未使用过或已被移除)帮助按钮指向的页面试图通过试用版http://lumapps-www.appspot.com/en/向您进行向上销售,而不是提供帮助。标题编号提供了一个常见问题解答,网址为http://www.lorut.no/add-ons/heading-numbers-for-google-docs/faq/。
目录和标题编号应用程序不能很好地运行在重新命名标题方面:我使用标题编号创建了编号的标题,并使用目录应用了相似的标题,并且在标题中添加了两组数字。如果先通过使用目录先应用标题,然后再应用标题编号来反转顺序,则情况相同。
目录的标题样式数量与标题编号不同。
但是在目录中有侧边栏仍然很方便。我从目录侧面栏中选择了原样,然后单击刷新按钮即可查看和浏览目录。
标题编号具有清除操作。目录没有。 “清除”操作无法解决上述交互问题,这非常痛苦,因为您必须手动修复它们。
两个应用程序都不会更新插入到文档中的目录(通过“插入/目录”菜单)。