132

是否可以对 Google Docs/Drive 文档中的标题进行编号?

4

6 回答 6

124

如果你想要一些更简单的东西,有一个名为“目录”的谷歌插件可以让你给你的标题编号。

要安装此插件:

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

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

如果您有旧文档,则必须重新格式化文档才能“刷新”数字,但实际上插件运行良好。

在这个论坛上看到了答案

于 2014-05-07T16:35:01.060 回答
53

更新:现在在github中可用。

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

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


我修改了Mikko Ohtamaa 提到的脚本并创建了一个 Google Apps 脚本,它添加了一个标题工具文档菜单,允许您:

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

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

  1. 打开您的文档 > 工具 > 脚本编辑器...
  2. 开始一个空白项目
  3. 粘贴下面的代码并使用您的首选名称保存
  4. 选择 Run > 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]+/, ''));
    }
  }

}
于 2014-02-06T17:01:00.397 回答
19

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

我发现编号标题的方法如下:

  1. 转到获取附加组件
  2. 搜索并安装Markdown 工具

Markdown 工具有一个使用编号标题的选项。使用内置的 Google 目录就像一个魅力。

要创建目录:

  1. 转到菜单项插入并选择目录
于 2020-04-07T14:05:48.227 回答
14

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

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

于 2016-05-23T09:21:09.647 回答
2

我写了一个做降价标题的版本,但它也支持普通的标题数字。源代码在这里https://github.com/jordan2175/markdown-tools并且可以通过 G Suite Marketplace 作为“Markdown 工具”获得。

于 2019-09-30T20:24:34.880 回答
1

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

于 2020-01-04T17:42:22.790 回答