Google文件/驱动器-标题编号


Answers:


93

如果您想要更简单的方法,可以使用一个名为“目录”的Google加载项,它可以为标题编号。

要安装此插件:

  1. 单击加载项>获取加载项。
  2. 单击“目录”图标或搜索此插件进行安装

然后,目录应该出现在侧边栏中。单击标题编号格式菜单,然后选择1.2.3

如果您的文档过旧,则必须重新格式化文档,以“刷新”数字,但实际上该插件效果很好。

我已经在这个论坛上看到了答案


4
如果未显示侧边栏,请转到“附加组件->目录->在侧边栏中显示”
史蒂文·杰里斯

3
我认为任何人都可以将其附加组件称为“目录”。因此,指向实际附加组件的链接将很有帮助。我猜你是这个意思:chrome.google.com/webstore/detail/table-of-contents/…–
nealmcb

如何安装插件-Google Docs上的每台机器/浏览器,每份文档,每位用户?如果其他人想要编辑文档会怎样?
Sybille Peters

1
可悲的是,这个插件似乎坏了。由于授权问题,它无法安装。其他人得到相同的结果吗?
gavdotnet

1
@gavdotnet它对我有用,所以他们必须修复它。
codefreak

49

更新:现在在github中可用。

更新2:由于在github上有2个pull请求,现在可以处理空标题和空白行。

更新3:修复了github和以下代码,以处理新的Docs HEADING标识。


我修改了Mikko Ohtamaa提到脚本,并创建了Google Apps脚本,该脚本添加了标题工具“文档”菜单,该菜单使您可以:

  • 自动编号标题
  • 清除标题编号

如何为Google文档标题自动编号:

  1. 打开文档>工具>脚本编辑器...
  2. 开始一个空白项目
  3. 粘贴下面的代码,并以您喜欢的名称保存
  4. 选择运行> onOpen并首次授权脚本
  5. 选择运行> onOpen
  6. 转到您的文档,然后尝试创建的标题工具自定义菜单上的功能。

~~ 免责声明:您可能会遇到空白标题的问题。但是您始终可以修复它们并再次执行操作。~~

复制和粘贴的代码:

function onOpen() {
  DocumentApp.getUi().createMenu('Headings Tools')
  .addItem('Auto Number Headings', 'numberHeadingsAdd')
  .addItem('Clear Heading Numbers', 'numberHeadingsClear')
  .addToUi();
}

function numberHeadingsAdd(){
  numberHeadings(true);
}

function numberHeadingsClear(){
  numberHeadings(false);
}

function numberHeadings(add){
  var document = DocumentApp.getActiveDocument();
  var body = document.getBody();
  var paragraphs = document.getParagraphs();
  var numbers = [0,0,0,0,0,0,0];
  for (var i in paragraphs) {
    var element = paragraphs[i];
    var text = element.getText()+'';
    var type = element.getHeading()+'';

    // exclude everything but headings
    if (!type.match(/HEADING\d/)) {
      continue;
    }

    // exclude empty headings (e.g. page breaks generate these)
    if( text.match(/^\s*$/)){
      continue;
    }

    if (add == true) {
      var level = new RegExp(/HEADING(\d)/).exec(type)[1];
      var numbering = '';

      numbers[level]++;
      for (var currentLevel = 1; currentLevel <= 6; currentLevel++) {
        if (currentLevel <= level) {
          numbering += numbers[currentLevel] + '.';
        } else {
          numbers[currentLevel] = 0;
        }
      }
      Logger.log(text);
      var newText = numbering + ' ' + text.replace(/^[0-9\.\s]+/, '');
      element.setText(newText);
      Logger.log([newText]);
    } else {
      Logger.log(text);
      element.setText(text.replace(/^[0-9\.\s]+/, ''));
    }
  }

}

我很高兴知道@IvanCachicatari,我正计划制作一个改进版本来作为附加组件启动,这样我们就不需要每次都打开脚本编辑器了……
Luciano 2014年

2
@IvanCachicatari好主意,你有!github.com/lpanebr/autoNumberHeadings
Luciano

2
@MrGravity实现的方法是将脚本转换为添加为谷歌驱动器我计划这样做,但我的时间了现在..
卢西亚诺

1
哇!我觉得又是90年代关系。我们真的需要脚本来完成诸如标题编号之类的基本工作吗?现在,我了解了为什么要采取所有这些编程措施-我们的孩子真的需要知道他们的JavaScript才能编写任何工作文档; P
Janusz Skonieczny

1
@Luciano 有点用。我看到一件奇怪的事情正在发生。如果我从git剪切并粘贴代码,则会得到以下两种结果之一:第38行没有任何反应或正则表达式解析错误。为了使其正常工作,我必须1)从10/16 /剪切并粘贴git代码17、2)保存,3)手动进行nsof建议的更改,4)保存并按上述方式运行。我注意到了一个细微的差别:您的版本中的第38行删除了\ d周围的括号。
生姜麦克默里

10

您要做的就是复制/粘贴以前的标头。

如果您复制并粘贴编号列表中的任何项目,则它将保留其编号,并在相关情况下自动更改编号。


这个解决方案多么实用,被低估了。
某某

确实,这是最简单的NATIVE解决方案(如果您仍处于编辑阶段)!
Demis

1
据我所知,这要求您缩进所属的每个标题级别。是这种情况还是另外一种方式?
gavdotnet

1
问题是:您需要从同一文档中复制标题。例如,如果您从另一个html文档中复制了“标题1”,尽管保留了“标题x”格式,它也没有编号。这意味着,如果您已经有另一个要复制粘贴的带有大量文本的文档,则解决方案将需要过多的手动工作。或实际上:如果您已经有一个文档,并且只想在其中列出标题,则它是相同的。
Hi-Angel

3

自编写(2020年4月)以来,许多建议的应用程序已过时或不再起作用。

我发现可以使用的编号标题方法如下:

  1. 转到获取加载项
  2. 搜索并安装Markdown工具

Markdown工具提供了使用编号标题的选项。内置的Google目录中的内容就像魅力一样。

要创建目录:

  1. 转到菜单项插入,然后选择目录

这超级有用!我本来以为Markdown工具中没有简单的目录编号功能,但是效果很好,谢谢!
prrao,0:34


0

前面提到的附加组件“目录”到今天为止不可用。我安装了一个名为“ Markdown Tools ”的工具,安装后,您必须应用本机标题样式,然后转到“ 附件”>“ Markdown工具”>“标题编号”,然后选择所需的编号样式,该样式将应用于文档中的所有标题。

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.