如何对 Google Docs/Drive 文档中的标题进行编号?
Posted
技术标签:
【中文标题】如何对 Google Docs/Drive 文档中的标题进行编号?【英文标题】:How to number the headings in a Google Docs/Drive document? 【发布时间】:2012-09-05 12:39:17 【问题描述】:是否可以对 Google Docs/Drive 文档中的标题进行编号?
【问题讨论】:
怎么还不原生支持? 【参考方案1】:如果您想要更简单的内容,可以使用名为 "Table of Contents" 的 Google 插件来为标题编号。
要安装此插件:
-
点击加载项 > 获取加载项。
点击“目录”图标或搜索此插件进行安装
然后您的目录应该出现在您的侧边栏中。单击标题编号格式菜单,然后选择 1.2.3
如果您有旧文档,则必须重新格式化您的文档才能“刷新”数字,但实际上插件运行良好。
我见过the answer in this forum。
【讨论】:
如果侧边栏未显示,请转到“附加组件->目录->在侧边栏中显示”。 我认为任何人都可以将他们的附加组件称为“目录”。因此,指向实际附加组件的链接很有帮助。我猜你的意思是这个:chrome.google.com/webstore/detail/table-of-contents/… 插件是如何安装的——每台机器/浏览器、每个文档、每个用户在谷歌文档上?如果其他人想要编辑文档会怎样? 很遗憾,这个插件好像坏了。由于授权问题,它无法安装。其他人是否得到相同的结果? @gavdotnet 它对我有用,所以他们必须修复它。【参考方案2】:更新:现已在 github 中提供。
更新 2: 由于 github 上的 2 个拉取请求,现在可以处理空标题和空行。
更新 3: github 和下面的代码已修复以处理新的 Docs HEADING 标识。
我修改了script mentioned by Mikko Ohtamaa 并创建了一个 Google Apps 脚本,它添加了一个标题工具文档菜单,让您可以:
自动编号标题 清除标题编号如何为 Google 文档标题自动编号:
-
打开您的文档 > 工具 > 脚本编辑器...
开始一个空白项目
粘贴下面的代码并使用您的首选名称保存
选择 Run > onOpen 并首次授权脚本
选择运行 > onOpen
切换到您的文档并尝试创建的标题工具自定义菜单上的功能。
~~免责声明:您可能会遇到空标题的问题。但您可以随时修复它们并再次执行操作。~~
要复制和粘贴的代码:
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 我正计划制作一个改进版本以作为附加组件启动,这样我们就不需要每次都打开脚本编辑器...... @IvanCachicatari 好主意,你有它! github.com/lpanebr/autoNumberHeadings @MrGravity 实现这一目标的方法是将脚本转换为 Add-On for Google Drive 我计划这样做,但现在没时间了.. 哇!感觉又是90年代了。我们真的需要一个脚本来完成像标题编号这样的基本事情吗?现在我明白为什么会有所有这些编程计划了——我们的孩子真的需要知道他们的 javascript 才能编写任何工作文档;P @Luciano 有点的作品。我看到一件奇怪的事情正在发生。如果我从 git 剪切并粘贴代码,我会得到以下两个结果之一:在第 38 行没有任何反应或正则表达式解析错误。为了使其正常工作,我必须 1) 从 10/16/ 剪切并粘贴 git 代码17, 2) 保存, 3) 手动进行 nsof 建议的更改, 4) 保存并按照上面列出的方式运行。我注意到一个细微的差别:您的版本中的第 38 行删除了 \d 周围的括号。【参考方案3】:自撰写(2020 年 4 月)以来,许多提议的应用都已过时或不再工作。
我发现编号标题的方法如下:
-
转到获取插件
搜索并安装 Markdown 工具
Markdown 工具有一个使用编号标题的选项。与 Google 的内置目录相得益彰。
创建目录:
-
转到菜单项插入并选择目录
【讨论】:
这个超级有用!我不会想到一个简单的 TOC 编号功能会出现在降价工具中,但效果很好,谢谢! 起初我不喜欢每次想要标题编号时都必须选择菜单项。但是可以只输入标题编号,并且仅在不连续的标题编号开始烦人时才使用菜单项。我现在很欣赏这种管道类型的实现。【参考方案4】:您所要做的就是复制/粘贴以前的标题。
如果您复制并粘贴编号列表的任何项目,则它会保留其编号,并在相关情况下自动更改编号。
【讨论】:
多么务实,这个解决方案被低估了。 确实,这是最简单的 NATIVE 解决方案(如果您仍处于编辑阶段)! 据我所知,这要求您缩进每个标题级别。是这样还是有其他方法? 问题是:你需要从同一个文档中复制标题。例如,如果您从另一个 html 文档中复制“标题 1”,尽管保留了“标题 x”格式,但它不会有数字。这意味着,如果您已经有另一个包含大量文本的文档要复制粘贴,那么您的解决方案将需要太多的手动工作。或者实际上:如果您已经有一个文档并且您只想在其中枚举标题,那也是一样的。【参考方案5】:我写了一个做markdown标题的版本,但它也支持普通的标题数字。源代码在此处https://github.com/jordan2175/markdown-tools,可通过 G Suite Marketplace 作为“Markdown Tools”获得。
【讨论】:
嗨@jordan2175,插件很棒。如果它生成的 TOC 有页码就好了。【参考方案6】:之前提到的插件“目录”从今天开始不可用。 我安装了一个名为“Markdown Tools”的 安装后,您必须应用原生标题样式,然后转到 Add-Ons>Markdown 工具 >标题编号 并选择将应用于文档中所有标题的所需编号样式。
【讨论】:
以上是关于如何对 Google Docs/Drive 文档中的标题进行编号?的主要内容,如果未能解决你的问题,请参考以下文章
如何在带有独立脚本的Google文档上使用“getBody()”?
如何使用nodejs和request将不同请求的响应放在同一个文档中?
如何在 Google BigQuery 的记录中查询字符串?文档不工作