是否可以在Google文档/云端硬盘文档中为标题编号?
Answers:
更新:现在在github中可用。
更新2:由于在github上有2个pull请求,现在可以处理空标题和空白行。
更新3:修复了github和以下代码,以处理新的Docs HEADING标识。
我修改了Mikko Ohtamaa提到的脚本,并创建了Google Apps脚本,该脚本添加了标题工具“文档”菜单,该菜单使您可以:
如何为Google文档标题自动编号:
~~ 免责声明:您可能会遇到空白标题的问题。但是您始终可以修复它们并再次执行操作。~~
复制和粘贴的代码:
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]+/, ''));
}
}
}
您要做的就是复制/粘贴以前的标头。
如果您复制并粘贴编号列表中的任何项目,则它将保留其编号,并在相关情况下自动更改编号。
自编写(2020年4月)以来,许多建议的应用程序已过时或不再起作用。
我发现可以使用的编号标题方法如下:
Markdown工具提供了使用编号标题的选项。内置的Google目录中的内容就像魅力一样。
要创建目录:
我写了一个用于降价标题的版本,但它也支持普通的标题数字。来源位于https://github.com/jordan2175/markdown-tools,可通过G Suite商城以“ Markdown工具”的形式获得。
前面提到的附加组件“目录”到今天为止不可用。我安装了一个名为“ Markdown Tools ”的工具,安装后,您必须应用本机标题样式,然后转到“ 附件”>“ Markdown工具”>“标题编号”,然后选择所需的编号样式,该样式将应用于文档中的所有标题。