是否有可能生成一个自动目录使用Github调味Markdown?


当前回答

下面是我今天为此编写的shell脚本。可能需要根据你的需要进行调整,但这应该是一个很好的起点。

cat README.md \
    | sed -e '/```/ r pf' -e '/```/,/```/d' \
    | grep "^#" \
    | tail -n +2 \
    | tr -d '`' \
    | sed 's/# \([a-zA-Z0-9`. -]\+\)/- [\1](#\L\1)/' \
    | awk -F'(' '{for(i=2;i<=NF;i++)if(i==2)gsub(" ","-",$i);}1' OFS='(' \
    | sed 's/^####/      /' \
    | sed 's/^###/    /' \
    | sed 's/^##/  /' \
    | sed 's/^#//'

如果有人知道更好的方法来做这些最终的#替换,请添加评论。我尝试了各种各样的方法,但都不满意,所以我就硬着硬着。

其他回答

我的同事@schmiedc和我已经创建了一个GreaseMonkey脚本,它在h1按钮的左侧安装了一个新的TOC按钮,它使用优秀的markdown-js库来添加/刷新目录。

与doctoc等解决方案相比,它的优势在于集成到GitHub的wiki编辑器中,不需要用户使用命令行(并要求用户安装node.js等工具)。在Chrome中,它通过拖拽到扩展页面来工作,在Firefox中,你需要安装GreaseMonkey扩展。

它将与普通markdown工作(即它不能正确处理代码块,因为这是一个GitHub扩展markdown)。贡献的欢迎。

我创建了两个选项来生成一个toc的github风味markdown:

DocToc命令行工具(源代码)需要node.js

Installation:

NPM install -g doctoc

Usage:

doctoc。向当前目录和所有子目录中的所有markdown文件添加目录。

DocToc WebApp

如果你想先在网上试试,去doctoc网站, 粘贴标记页面的链接,它将生成一个表 可以插入标记文件顶部的内容。

Github维基和锚

正如Matthew Flaschen在下面的评论中指出的那样,对于其维基页面,GitHub之前并没有生成doctoc所依赖的锚。

更新:但是,他们修复了这个问题。

无耻的“借用”这个SO答案。

你可以用Pandoc做到这一点。

pandoc -s --toc input.md -o input_toc.md 

注意:输入和输出文件的顺序在这里很重要。

更新2022 - 02年

在VSCode中,检查扩展“Markdown All In One”。自动生成并更新减记的TOC。

安装扩展。 将光标放在您想要插入TOC的位置。 运行命令“Markdown All in One:创建目录” 享受吧!

这并不是对这个问题的直接回答,因为很多人都提供了变通方法。我认为到目前为止,Github还没有正式支持生成TOC。如果你想让GitHub在他们的GFM预览页面上自动呈现一个目录,请参加关于官方功能请求问题的讨论。