我可以在Google文档中获取标题编号吗?


Answers:


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

1
没错,Google脚本是如此强大!
马丁·德利

13

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

  1. 建立新文件
  2. 应用标题1⌘⌥1
  3. 套用编号清单⌘⇧7
  4. 键入“第一”并按Return
  5. 应用标题1⌘⌥1),键入“ Second”,然后按Return
  6. 应用标题1⌘⌥1),键入“ Third”,然后按Return

在这一点上,您应该具有如下所示的内容:

Google文件中的编号标题

  1. 将光标移到First标头的末尾
  2. Return两次
  3. 键入“ Hello World!”
  4. 对其余标题重复该过程

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

带编号的标题,中间还有一些额外的文字

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

标头的完整示例


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

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

1
真好!那是个把戏;)
Martin Delille

@tinmaru如果答案有用的话,别忘了标记它;)
Lipis

1
是的,我很抱歉我完全忘记了!感谢您的帮助:)
Martin Delille 2012年

2

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

1
1.1
2
2.1
2.1.1

我希望它对某些事情有用。

链接到附加组件

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

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

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


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

2

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

预定义样式:

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

我几周前发布了这个插件。在我的主页附加商店中查看


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

1

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

  1. 没有使用目录应用程序的在线帮助(从未使用过或被取消)帮助按钮指向尝试通过http://lumapps-www.appspot进行向上销售的页面。 com / en /而不是提供帮助。标题编号提供了一个常见问题解答,网址http://www.lorut.no/add-ons/heading-numbers-for-google-docs/faq/
  2. 目录和标题编号应用程序在重新编号标题方面不能很好地发挥作用:我使用标题编号创建了编号的标题,并使用目录使用了相似的标题,并且在标题中添加了两组数字。如果通过先使用目录然后使用标题编号来应用标题来反转顺序,则情况相同。
  3. 目录的标题样式数量与标题编号不同。
  4. 但是在目录中有侧边栏仍然很方便。我从“目录”侧栏中选择“原样”,然后能够单击“刷新”按钮查看和浏览目录。
  5. 标题编号具有清除操作。目录没有。清除操作不没有上述固定的交互问题,因为你必须手动修复它们这是相当痛苦的。
  6. 这两个应用程序都不会更新插入到文档中的目录(通过“插入/目录”菜单)。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.