是否可以使用Github Flavoured Markdown生成自动目录?
npm install -g doctoc
doctoc .
为当前目录及其所有子目录中的所有Markdown文件添加目录。
如果您想先在线尝试,请访问doctoc网站, 粘贴Markdown页面的链接,它将生成一个目录,您可以将其插入到Markdown文件的顶部。
正如Matthew Flaschen在下面的评论中指出的那样,对于其维基页面,GitHub以前没有生成doctoc
所依赖的锚点。
更新:然而,他们解决了这个问题。
GitHub Pages(基本上是Jekyll的包装器)似乎使用kramdown,它实现了Maruku的所有功能,因此可以通过toc
属性支持自动生成目录:
* auto-gen TOC:
{:toc}
如果你使用 Vim 编辑 Markdown 文件,你可以尝试使用这个插件 vim-markdown-toc。
使用方法很简单,只需将光标移动到想要添加目录的位置,运行 :GenTocGFM
命令,完成!
截图:
特性:
为 Markdown 文件生成 TOC。 (支持 GitHub Flavored Markdown 和 Redcarpet)
更新现有的 TOC。
保存时自动更新 TOC。
.md
文件时找到一个常见的TOC样式,并涉及不同的编辑器/插件,以避免在每个其他提交中更改TOC。 可能添加到 ~/.vimrc
的内容:使用 let g:vmt_list_item_char = "-"
更改列表字符,在TOC之前包含标题,使用 let g:vmt_include_headings_before = 1
。 有关更多信息,请参见文档选项部分,例如如何更改栅栏文本。 - Wolfson2021年三月更新:GitHub已添加官方解决方案
现在,当您向下滚动查看README文件时,会显示类似于此的目录:
演示: https://github.com/cirosantilli/test-git-web-interface/tree/master/d
它不会像我想要的那样在文档内呈现,以便更好地进行 Ctrl + F,但总比没有好。
现在也适用于非 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扩展和其他可能性来支持@github.com,Steven!Ragnarök做出了如下回复:
感谢您的建议和链接。我会将其添加到我们内部功能请求列表中供团队查看。
让我们投票支持这个问题,直到它实现为止。
另一个解决方法是使用Asciidoc而不是Markdown,它可以渲染TOCs。 我现在已经转向这种方法来创建我的内容。
虽然不是自动的,但它使用了Notepad++正则表达式:
将所有第一个替换为第二个(删除所有没有标题的行)
^##(#?)(#?)(.*?)$(.|\r|\n)*?(?=^##|\z)
-\1\2 [\3](#\3)\n
然后(将标题 III 转换为空格)
-##
-
-#
-
然后(删除链接标题开头和结尾处未使用的字符)
\[ *((?:(?![ .:#!\?;]*\])[^#])*)[ #:!\?;]*\]
[\1]
\]([^ \r\n]*) ([^\r\n ]*)
]\L\1-\2
(?:()[-:;!\?#]+$|(\]#)-)
\1\2
去除链接中无用的字符:
(\].*?)(?:\(|\))
\1
\](?!\()(.*?)$
\]\(\1\)
现在大功告成了!如果你重复这个过程多次,甚至可以将其放在全局宏中。
看起来你需要在渲染器级别上设置此标志,但在Github上显然不可能。然而,最新更新到Github Pages,似乎自动锚定已经打开了头,创建可链接标题。不完全是你想要的,但它可能会帮助你更轻松地为你的文档创建目录(尽管手动)。:with_toc_data-在输出HTML中为每个标题添加HTML锚点,以允许链接到每个部分。
README.md
文件自动生成网页。它不会创建目录,但对于许多人来说,这可能是创建目录的原因。
Documentup的另一种替代方案是Flatdoc: http://ricostacruz.com/flatdoc/
Gitdown是Github的Markdown预处理器。
使用Gitdown,您可以:
Gitdown简化了维护GitHub存储库文档页面所涉及的常见任务。
使用它很简单:
var Gitdown = require('gitdown');
Gitdown
// Gitdown flavored markdown.
.read('.gitdown/README.md')
// GitHub compatible markdown.
.write('README.md');
您可以将其作为单独的脚本,也可以将其作为构建脚本例程的一部分(例如Gulp)。
toc
从HTML代码本身生成TOC。 - Plato