想问一下,有没有可以将笔记A和笔记B的标题生成目录并可以复制到笔记C中的插件
这其实等价于 “怎么生成笔记的各级小标题列表 TOC” 然后搁到别处
有不少办法, 比如参考 DataviewJS 的提取与汇总 - 经验分享 并稍微修改
```dataviewjs
const dFiles = dv.pages(`"仓库子目录下的/某个文件夹或具体笔记"`)
const startHeadingLevel = 2 // 只输出 level >= N 的小标题
dFiles.map(async dFile=> {
const file = app.vault.getAbstractFileByPath(dFile.file.path)
const { headings } = app.metadataCache.getFileCache(file)
const lists = headings.filter(p=> p.level>=startHeadingLevel).map(p=>
`${' '.repeat(Math.max(0, (p.level - startHeadingLevel) * 2))}- [[${file.basename}#${p.heading}|${p.heading}]]`
)
dv.header(6, dFile.file.link)
dv.paragraph(lists.join('\n'))
})
```
原理就是拿到全文, 然后拼接一些 [[note_name#heading|heading]]
出来
不用 Dataview 的话, 也有好多生成小标题列表的插件, iLiftALot/insta-toc 和 johansatge/obsidian-automatic-table-of-contents 这俩是在当前笔记以代码块自动展示 TOC, 而代码块可以被嵌入到别的笔记 (通过 ^block-ref
)
还有 hipstersmoothie/obsidian-plugin-toc 比较早, 生成静态小标题文本, 目录变了就重做一次, 也挺好的, 抄到别的笔记里用, 得自己添上笔记文件名
1 个赞