159

如果你看这里:http ://en.wikipedia.org/wiki/Stack_Overflow

您会注意到有一个小的“内容”部分,如果您单击其中一个链接,它会将您发送到页面上的特定部分。

我如何在 GitHub wiki 中执行此操作?使用 Markdown 或他们使用的任何东西?

4

14 回答 14

154

它在Markdown Cheatsheet的目录中得到了很好的展示。

##### Table of Contents  
[Headers](#headers)  
[Emphasis](#emphasis)  
...snip...    
<a name="headers"/>
## Headers

如果您将鼠标悬停在 GitHub Markdown 文件中的标题上,您会在其左侧看到一个小链接示例,您也可以使用该链接。该链接的格式是<project URL#<header name>. <header name>必须全部小写。

于 2013-08-15T00:30:56.673 回答
48

由于github不能TOC直接使用,但是我们有其他的选择。

您可以通过在线工具自动生成目录:

从 GitHub Markdown 或 Wiki Online 生成 TOC 目录

在此处输入图像描述

或通过本地工具:

github-markdown-toc

于 2019-02-12T06:08:48.290 回答
30

视觉工作室代码

如果您碰巧使用Visual Studio Code ,有一个名为Markdown All in One的易于使用的扩展程序,可以立即为任何 .md 文件生成目录。

在此处输入图像描述

只需打开命令面板 ( Ctrl-Shift-P) ->Markdown: Create Table of Contents

原始md 自动 TOC 插入后

自动更新会弄乱您编辑的目录?

作为附加提示,您可能希望通过使用关闭“保存时自动 TOC 更新”

  "markdown.extension.toc.updateOnSave": false,

在您的 Visual Studio 设置中(命令面板 -> 首选项:打开设置 (JSON))。

于 2020-04-10T16:09:43.743 回答
29

一种可能的(半自动化)解决方案是 Eugene Kalinin 的github-markdown-toc. 这个工具本质上是通过你的README.md文件和snarfs out#的标题来创建一个目录。

  1. 下载脚本https://github.com/ekalinin/github-markdown-toc
  2. 将您README.md输入到脚本中(如 Eugene's 中所述README.md

    cat README.md | bash github-markdown-toc

  3. 剪切并粘贴生成的 TOC 并将其放在README.md文件顶部

请注意,此bash实现仅适用于 Linux(据我所知)。

附带说明一下,有一个 golang实现,可能更麻烦的是开始工作。

于 2016-05-14T14:54:28.737 回答
23

2021 年 8 月更新:

在 README 中的 ToC(见下文 2021 年 3 月)之后,您现在拥有:

Wiki 目录

对于 Wiki,我们现在会根据 Markdown 标题自动生成目录。

如此处所示

你维基吗?
我们刚刚在侧边栏中添加了一个自动目录以帮助导航

维基目录


您现在可以(2021 年 3 月)查看 GitHub 首席执行官 Nat Friedman刚刚宣布的内容

GitHub 现在会自动从您的标题中为您的http://README.md文件创建目录。

经过深思熟虑,我们将此作为查看器的功能,而不是编辑器的关注点:无需插入特殊的降价。

所以......它不会修改您的降价(README.md或其他.md文件)以插入或更新您的文本:它只提供一个菜单,允许基于降价标题快速访问您的测试部分。
这可能是,也可能不是,你所追求的。

降价自述文件中的目录

于 2021-03-26T20:47:56.070 回答
16

https://github.com/jonschlinkert/markdown-toc

  • git clone your-repo.wiki.git(在克隆维基.wiki之前添加权利.git
  • npm i -g markdown-toc
  • 在 wiki 的 markdown 中插入<!-- toc -->(区分大小写)
  • markdown-toc -i my-wiki-markdown.md-i将就地编辑它)
  • 利润

更新:我想也许https://github.com/thlorenz/doctoc现在更流行了。

于 2016-11-04T17:06:24.087 回答
15

目前,使用 markdown 语法 ( ) 是不可能.md的。关于在渲染的降价文件上自动生成目录 TOC的非官方讨论正在进行中,README.md其中列出了一些想法。

但是,还有一些其他解决方法,例如:

于 2017-07-27T19:39:26.837 回答
8

如果您无法坚持使用Markdown,您可以执行以下操作:

  • GitHub/wiki上:将Markdown切换到MediaWiki。使用__TOC__语法。见样本
  • GitHub/repo上:将Markdown切换到AsciiDoc。使用:toc:语法。见演示
  • GitHub/repo上:将Markdown切换到reStructuredText。使用.. contents::语法。

但是,使用GitHub/repo中的Markdown文件,您可以在GitHub 页面上获取它,例如在Wikipedia中

  • Jekyll激活后,默认使用Kramdown生成GitHub Pages
  • Kramdown附带Table Of Content. 使用{:toc}语法。见说明
于 2018-05-17T19:54:09.837 回答
3

由于 github 有自己的方式在 h1、h2、h3 等中生成 id=".." 属性...在处理 Markdown 后的 html 版本中的标头(例如 Bitbucket 使用很少不同的模式来缓和标头标题id="slug") 不要重新发明轮子并使用对这个过程进行逆向工程的库是很方便的。

我为这项任务找到了一个非常好的库,称为markdown-toc

对我来说,这似乎是最好的解决方案,因为我总是在我的机器上安装节点。

只需执行npx markdown-toc -i file.md

看起来它是这项任务中更受欢迎的工具之一——至少在 node.js 生态系统中是这样。

ls
cat <<EOF >> test.md | tee 
## Table of Contents

<!-- toc -->
- old toc 1
- old toc 2
- old toc 3
<!-- tocstop -->

## abc
This is a b c.

## xyz
This is x y z.
EOF
ls
cat test.md
npx markdown-toc -i test.md
cat test.md

输出:

在此处输入图像描述

于 2018-12-30T14:34:45.547 回答
2

您可以选择编辑模式“MediaWiki”,它将为标题生成目录,例如

== First ==

== Second ==
于 2017-09-23T13:27:01.883 回答
1

你可以使用mdtoc(我是作者)。

安装后,只需运行:

mdtoc path/to/file.md
于 2021-09-01T22:53:17.333 回答
1

Pandoc是标记的瑞​​士军刀。它可以将与 GitHub 兼容的目录添加到README.md使用以下命令调用的 markdown 文件中:

pandoc --from markdown --to markdown --table-of-contents --standalone  README.md

--from--to选项是必需的,并且--table-of-contents需要--standalone. 这些选项有简短的版本,所以这是等效的:

pandoc -f markdown -t markdown --toc -s README.md

默认情况下,该命令会添加目录并将结果写入标准输出。由于您可能只需要目录本身,因此您可能希望通过管道连接到寻呼机以查看文件的顶部。例如:

pandoc -f markdown -t markdown --toc -s README.md | less

其他有用的选项是:

  • --toc-depth=NUMBER指定要包含的标题级别。默认值为 3。
  • --output=FILE写入文件而不是标准输出。

有关安装和更多使用说明,请参见https://pandoc.org

于 2021-11-24T20:28:55.813 回答
0

例子:

[Go to Delete](#delete_lines)

#delete_lines

code here, will be pointed here

见:https ://guides.github.com/features/mastering-markdown/

并且,要制作嵌套轮廓:

* 1\. [Go to Delete](#delete_lines)
    * 1.1\. item
    * 1.2\. item
        * 1.2\. item
* 2\. item 

请参阅:https ://meta.stackexchange.com/questions/85474/how-to-write-nested-numbered-lists

有关更多信息和复杂链接:

https://stackoverflow.com/questions/6695439/how-to-link-to-a-named-anchor-in-multimarkdown#:~:text=In%20standard%20Markdown%2C%20place%20an,%5Blink% 20 文本%5D(%23abcd)%20

于 2021-05-19T01:26:02.363 回答
0

另一个在 Perl 之上实现的与 TOC 降价相关的工具(它始终随 Linux/Git-for-Windows 一起提供,并且可选地与 Cygwin 一起提供,并且不依赖于额外的包)

https://github.com/ildar-shaimordanov/git-markdown-toc

我猜我的工具的工作原理与上面其他人提到的 ekalinin/git-markdown-toc 相似或几乎相似。我从来没有比较过 tham,因为他的工具是作为 Go-Lang 实现的,而我的系统上不存在。我的脚本的主要目标是提供在本地创建 TOC 的良好解决方案——没有与任何外部主机等的任何连接,只读取本地文件(默认为 README.md)并创建 TOC 并将其嵌入到文件。

于 2021-01-30T14:13:07.313 回答