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


当前回答

Github调味Markdown使用红地毯作为他们的Markdown引擎。 摘自RedCarpet回购:

:with_toc_data -添加HTML锚的每个头在输出HTML, 允许链接到每个部分。

似乎你需要在渲染器级别设置这个标志,这在Github上显然是不可能的。然而,Github Pages的最新更新,似乎自动锚定是为标题打开的,创建可链接的标题。这不是你想要的,但它可能会帮助你更容易地为你的文档创建一个TOC(尽管是手动的)。

其他回答

下面是我今天为此编写的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/^#//'

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

2021年3月更新:GitHub增加了一个官方解决方案

readme现在显示一个ToC,就像你向下滚动它们:

演示:https://github.com/cirosantilli/test-git-web-interface/tree/master/d

它没有在文档中呈现,因为我想要更好的Ctrl + F,但总比没有强。

Also现在也适用于非readme,例如:https://github.com/cirosantilli/test-git-web-interface/blob/master/md.md

他们还添加了一个存储库设置来启用禁用该功能。太奇怪了,谁会想让它失效呢?在https://github.com/cirosantilli/test-git-web-interface/settings下面

目录 自动生成此存储库中Markdown文件的目录。目录将显示在文件顶部附近。

原来的答案

这是不可能的,除了建议的变通办法。

我建议Kramdown TOC扩展和其他可能性support@github.com和Steven!Ragnarök的回复一如既往:

谢谢你的建议和链接。我将把它添加到我们的内部功能请求列表中,供团队查看。

让我们给这个问题投票,直到它发生为止。

另一种解决方法是使用Asciidoc而不是Markdown,后者会渲染toc。现在我的内容已经采用了这种方法。

可以从README中使用http://documentup.com/自动生成一个网页。md文件。它不是创建TOC,但对于许多人来说,它可能解决了想要创建TOC的原因。

Documentup的另一个替代方案是Flatdoc: http://ricostacruz.com/flatdoc/

大多数其他答案需要安装一些工具。 我找到了一个快速简单的在线解决方案https://imthenachoman.github.io/nGitHubTOC。

对于任何markdown输入,它生成内容输出表。 您可以指定最小和最大标题级别。

源代码位于https://github.com/imthenachoman/nGitHubTOC

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

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

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