Typora自动对其脚注序号
欢迎转载,但请标明出处和引用本文地址
Markdown中的脚注
脚注引用:[^2]
脚注定义:[^2]: xxxxxxx
问题:脚注需要 使用者自己定义排序。写作过程中,在文章最前面引用脚注序号,需要递增其后所有的脚注引用,很是繁琐。所以根据大佬的提醒,完善了他的代码,可以自动的更新所有的脚注的序号。
大佬原文地址:https://zhuanlan.zhihu.com/p/649723221
更新方法
注意点
脚注需要核实已经是一一对应的关系(可以不连续,不可以一对多),否则会出问题
方法代码
// footnote
// order footnote
// 用css选择器 获取所有脚注引用,按序编号
const fns = document.querySelectorAll(".md-footnote>.md-text>.md-plain")
let cnt = 1
// 获取文章中的新编号-旧编号集合,
let oldNumberMap = new Map()
for (var i = 0; i < fns.length; i++) {// 获取文档中的旧编号let number = fns[i].textContent// deal duplicate entryif (!oldNumberMap.has(cnt)) {oldNumberMap.set(cnt, number)}fns[i].textContent = cntcnt++
}// 更新脚注定义的序号(参考文献中的)
let footnoteMap = new Map()
const rfns = document.querySelectorAll(".md-def-footnote.md-end-block")
// 查找、存储原先的对应关系
for (var i = 0; i < rfns.length; i++) {const documentNumber= rfns[i].querySelectorAll(".md-def-name")[0]let number = documentNumber.textContentconst documentText = rfns[i].querySelectorAll(".md-def-content")[0]let text = documentText.textContentif (!footnoteMap.has(number)) {footnoteMap.set(number, text);}
}cnt = 1
// 更新脚注的引用序号
for (var i = 0; i < rfns.length; i++) {// 获取旧编号let oldNumber = oldNumberMap.get(cnt)// 获取就编号对应的内容let oldText = footnoteMap.get(oldNumber)// 更新编号和内容const documentNumber= rfns[i].querySelectorAll(".md-def-name")[0]documentNumber.textContent = cntconst documentText = rfns[i].querySelectorAll(".md-def-content")[0]documentText.textContent = oldTextcnt++
}
使用方法
在Typora中按住Shif+F12 打开开发者工具,点击控制台,把代码粘贴进去,然后回车运行即可,也可参考下图