Markdown创建页面和目录?

res*_*ing 297 markdown

我开始使用mardown记笔记.

我用标记来查看我的降价笔记和它的美丽.

但随着我的笔记越来越长,我发现很难找到我想要的东西.

我知道markdown可以创建表,但是它能够创建目录,跳转到部分,还是在markdown中定义页面部分?

或者,是否有降价读者/编辑可以做这些事情.搜索也是很好的功能.

简而言之,我想把它变成一个很棒的笔记,就像写一本书等工具和功能一样.

Ric*_*ick 328

你可以尝试一下.

# Table of Contents
1. [Example](#example)
2. [Example2](#example2)
3. [Third Example](#third-example)
4. [Fourth Example](#fourth-examplehttpwwwfourthexamplecom)


## Example
## Example2
## Third Example
## [Fourth Example](http://www.fourthexample.com) 
Run Code Online (Sandbox Code Playgroud)

  • 上面的第三个例子不起作用.`## Example ##"Example2"##第三个例子<a name="third-example" />`是迄今为止我唯一能够吞下空格的方法.当然,第3个标签会被解释为 - "#Third" - 后跟一个空格 - 然后是上面的代码片段中的单词Example - ?连字符根本不起作用.谢谢 (10认同)
  • 在RStudio中正常工作.只是想补充说德国的变音符号例如ü需要在没有变音符号的情况下写入,即`1.[Einführung](#einfuhrung)` (4认同)
  • 在Bitbucket v4.5.2中不会自动为标题创建锚点 (4认同)

Tum*_*Tum 183

这是一个有用的方法.应该在任何MarkDown编辑器中生成可点击引用.

# Table of contents
1. [Introduction](#introduction)
2. [Some paragraph](#paragraph1)
    1. [Sub paragraph](#subparagraph1)
3. [Another paragraph](#paragraph2)

## This is the introduction <a name="introduction"></a>
Some introduction text, formatted in heading 2 style

## Some paragraph <a name="paragraph1"></a>
The first paragraph text

### Sub paragraph <a name="subparagraph1"></a>
This is a sub paragraph, formatted in heading 3 style

## Another paragraph <a name="paragraph2"></a>
The second paragraph text
Run Code Online (Sandbox Code Playgroud)

生产:

目录

  1. 介绍
  2. 一段
    1. 分段
  3. 另一段

这是介绍

一些介绍文本,格式为标题2样式

一段

第一段文字

分段

这是一个子段落,格式为标题3样式

另一段

第二段文字

  • 我喜欢将锚标记放在标题上方的行上,因此当单击链接时,标题会显示在页面上. (16认同)
  • 就我而言,我需要使用“id”而不是“name”。 (14认同)
  • 这对我来说是唯一有用的.对于长标题,没有锚标记就不可能做到这一点. (4认同)
  • @mgarey 只需将锚点放在第一位即可: `## &lt;a name="foo" /&gt; Foo` (2认同)
  • 不适用于 Bitbucket,它会显示 `&lt;a name="paragraph1"&gt;&lt;/a&gt;` 作为标题文本的一部分。 (2认同)
  • @LucasBrito 在 GitLab `name` attr 中有效,但在 VS Code 中 - `id`。所以我都添加了。 (2认同)

mxr*_*xro 31

MultiMarkdown Composer似乎确实生成了一个目录,以便在编辑时提供帮助.

可能还有一个或哪个库可以生成TOC:请参阅Python Markdown TOC Extension.

  • MultiMarkdown Composer仅适用于MacOS (13认同)
  • 工作Python Markdown TOC链接:https://python-markdown.github.io/extensions/toc/ (2认同)
  • 该应用程序在英国地区不可用。 (2认同)

cod*_*ade 28

对于Visual Studio Code用户,最好使用Markdown TOC插件.

要安装它,请启动VS Code Quick Open(Ctrl+ P),粘贴以下命令,然后按Enter键.

Markdown TOC:Insert/Update option

要生成TOC,请打开命令调色板(Ctrl+ Shift+ P)并选择Markdown TOC:Insert/Update option或使用Ctrl+ MT.

  • VSCode 的另一种选择是 [vscode-markdown](https://github.com/neilsustc/vscode-markdown),它具有多种功能,包括 ToC (5认同)
  • 注意:我刚刚发现使用股票VSCode你可以做标题的降价链接:`[Section Foo](#foo-header-title)`,它甚至可以在预览模式之外工作(即在普通的降价处). (3认同)

alb*_*oli 25

您可以尝试使用此ruby脚本从markdown文件生成TOC.

 #!/usr/bin/env ruby

require 'uri'

fileName = ARGV[0]
fileName = "README.md" if !fileName

File.open(fileName, 'r') do |f|
  inside_code_snippet = false
  f.each_line do |line|
    forbidden_words = ['Table of contents', 'define', 'pragma']
    inside_code_snippet = !inside_code_snippet if line.start_with?('```')
    next if !line.start_with?("#") || forbidden_words.any? { |w| line =~ /#{w}/ } || inside_code_snippet

    title = line.gsub("#", "").strip
    href = URI::encode title.gsub(" ", "-").downcase
    puts "  " * (line.count("#")-1) + "* [#{title}](\##{href})"
  end
end
Run Code Online (Sandbox Code Playgroud)


小智 23

# Table of Contents
1. [Example](#example)
2. [Example2](#example2)
3. [Third Example](#third-example)

## Example [](#){name=example}
## Example2 [](#){name=example2}
## [Third Example](#){name=third-example}
Run Code Online (Sandbox Code Playgroud)

如果您使用markdown extra,请不要忘记您可以为链接,标题,代码围栏和图像添加特殊属性.
https://michelf.ca/projects/php-markdown/extra/#spe-attr


Luc*_*nzo 19

在降价文档中有两种方法可以创建TOC(摘要).

1.手动

# My Table of content
- [Section 1](#id-section1)
- [Section 2](#id-section2)

<div id='id-section1'/>
## Section 1
<div id='id-section2'/>
## Section 2
Run Code Online (Sandbox Code Playgroud)

2.以编程方式

您可以使用例如为您生成摘要的脚本,查看我在github上的项目 - summarizeMD -

我也尝试了其他脚本/ npm模块(例如doctoc),但没有人用工作锚重现TOC.


Mat*_*tTT 16

作为手工制作链接列表的替代方案,让我们概述一下所有可用的开箱即用的解决方案来插入目录(请评论并扩展以保持最新):

以下语法越来越受欢迎:

<!-- assure you have a blank line before -->
[[_TOC_]]
Run Code Online (Sandbox Code Playgroud)

这有效

  • Azure DevOps 维基中
  • GitLab wiki中(另请参阅下一段)。
  • 使用 wiki系统Gollum v5

GitLab使用 GitLab Flavored Markdown (GLFM),并理解以下两者:

[[_TOC_]]
or  
[TOC]  
Run Code Online (Sandbox Code Playgroud)

(请参阅GLFM 文档wiki 文档
另请注意第一个链接中的句子:

我们在这里尽力忠实地呈现 Markdown,但是GitLab 文档网站GitLab 手册使用不同的 Markdown 处理器。

过去,当他们从 Redcarpet 切换到 Kramdown 作为 markdown 引擎后,他们支持以下(现已过时)语法:

- TOC
{:toc}
Run Code Online (Sandbox Code Playgroud)

从 4.7 开始,MultiMarkdown有以下宏:

{{TOC}}
Run Code Online (Sandbox Code Playgroud)

根据Jannik 的回答
如果您的 Markdown 文件要显示在bitbucket.org上的存储库中,您可以在您想要目录的位置使用以下内容(更多信息请参见此处):

[TOC]
Run Code Online (Sandbox Code Playgroud)

根据Paul Jurczak 的回答:当您在文档中书写时, Markdown 编辑器
Typora还会生成目录。[TOC]


另请注意Gabriel Staples 的回答以及文本编辑器Sublime Text的一些操作方法。


目前(05/23), Sharepoint Online Markdown webpart都不支持这些。


我知道我的回答有点晚了。然而,我自己却错过了这样的概述。我对 Nicolas Thery 的回答的编辑将其扩展为概述被拒绝了。


msa*_*ord 9

为了我们这些人README.mdAtom中创建文件的好处(我是如何找到这个线程的):

apm install markdown-toc
Run Code Online (Sandbox Code Playgroud)

https://atom.io/packages/markdown-toc


Nic*_*ery 9

在 Gitlab 上,markdown 支持这个: [[_TOC_]]

  • 这对我有用(GitLab Enterprise Edition 13.6.1-ee) (2认同)

tan*_*ius 9

正如其他答案中提到的,有多种方法可以自动生成目录。大多数是开源软件,可以根据您的需求进行调整。

然而,我缺少的是使用 Markdown 提供的有限选项的目录格式,具有视觉吸引力。我们想出了以下几点:

代码

## Content

**[1. Markdown](#heading--1)**

  * [1.1. Markdown formatting cheatsheet](#heading--1-1)
  * [1.2. Markdown formatting details](#heading--1-2)

**[2. BBCode formatting](#heading--2)**

  * [2.1. Basic text formatting](#heading--2-1)

      * [2.1.1. Not so basic text formatting](#heading--2-1-1)

  * [2.2. Lists, Images, Code](#heading--2-2)
  * [2.3. Special features](#heading--2-3)

----
Run Code Online (Sandbox Code Playgroud)

在您的文档中,您可以像这样放置目标子部分标记:

<div id="heading--1-1"/>
### 1.1. Markdown formatting cheatsheet
Run Code Online (Sandbox Code Playgroud)

根据您使用 Markdown 的位置和方式,以下内容也应该有效,并提供更好看的 Markdown 代码:

### 1.1. Markdown formatting cheatsheet <a name="heading--1-1"/>
Run Code Online (Sandbox Code Playgroud)

示例渲染

内容

1.降价

2. BBCode 格式化


好处

  • 您可以根据需要添加任意多个级别的章节和子章节。在目录中,这些将显示为更深层次的嵌套无序列表。

  • 不使用有序列表。这些会创建缩进,不会链接数字,并且不能用于创建十进制分类编号,如“1.1.”。

  • 第一级不使用列表。在这里,使用无序列表是可能的,但不是必需的:缩进和项目符号只是增加了视觉混乱,这里没有任何功能,所以我们根本不使用第一个 ToC 级别的列表。

  • 以粗体字对目录中的第一级部分进行视觉强调。

  • 在浏览器的 URL 栏中看起来“漂亮”的简短、有意义的子部分标记,#heading--1-1而不是包含实际标题的转换部分的标记。

  • 代码使用 H2 标题 ( ## …) 作为部分,H3 标题 ( ### …) 用于副标题等。这使得源代码更易于阅读,因为## …与部分以 H1 标题开头的情况相比,滚动时提供了更强的视觉线索 ( # …)。当您使用 H1 标题作为文档标题本身时,它在逻辑上仍然是一致的。

  • 最后,我们添加了一个很好的水平线来将目录与实际内容分开。

有关此技术的更多信息以及我们如何在论坛软件Discourse 中使用它,请参见此处


Zhu*_* Ma 8

由不同Markdown解析器生成的锚标签不均匀.

如果你正在使用Markdown解析器GFM(GitHub Flavored Markdown)或Redcarpet,我写了一个Vim插件来处理目录.

特征

  1. 为Markdown文件生成目录.

    支持的Markdown解析器:

    • GFM(GitHub调味降价)
    • 红地毯
  2. 更新现有的目录.

  3. 保存时自动更新现有目录.

截图

VIM  - 降价 -  TOC

用法

生成目录

将光标移动到要附加目录的行,然后键入下面适合您的命令.该命令将在光标进入目录后生成标题.

  1. :GenTocGFM

    以GFM链接样式生成目录.

    此命令适用于GitHub存储库中的Markdown文件,如README.md和GitBook的Markdown文件.

  2. :GenTocRedcarpet

    在Redcarpet链接样式中生成目录.

    此命令适用于Jekyll或其他任何地方使用Redcarpet作为其Markdown解析器.

    您可以在此处查看GFM和Redcarpet样式toc链接之间的差异.

手动更新现有的目录

通常您不需要这样做,现有的目录默认会在保存时自动更新.如果你想手动完成,只需使用:UpdateToc命令.

下载和文件

https://github.com/mzlogin/vim-markdown-toc


Mar*_*vic 8

在 Visual Studio Code (VSCode) 中,您可以使用扩展Markdown All in One

安装后,请按照以下步骤操作:

  1. CTRL+ SHIFT+P
  2. 选择Markdown:创建目录

编辑:现在我使用 DocToc 来生成目录,有关详细信息,请参阅我的其他答案


Gab*_*les 8

如果使用Sublime Text 编辑器MarkdownTOC 插件工作得非常好!看:

\n
    \n
  1. https://packagecontrol.io/packages/MarkdownTOC
  2. \n
  3. https://github.com/naokazuterada/MarkdownTOC
  4. \n
\n

安装后,转到 Preferences --> Package Settings --> MarkdownTOC --> Settings -- User,自定义您的设置。以下是您可以选择的选项:https://github.com/naokazuterada/MarkdownTOC#configuration

\n

我推荐以下内容:

\n
{\n  "defaults": {\n    "autoanchor": true,\n    "autolink": true,\n    "bracket": "round",\n    "levels": [1,2,3,4,5,6],\n    "indent": "\\t",\n    "remove_image": true,\n    "link_prefix": "",\n    "bullets": ["-"],\n    "lowercase": "only_ascii",\n    "style": "ordered",\n    "uri_encoding": true,\n    "markdown_preview": ""\n  },\n  "id_replacements": [\n    {\n      "pattern": "\\\\s+",\n      "replacement": "-"\n    },\n    {\n      "pattern": "&lt;|&gt;|&amp;|&apos;|&quot;|&#60;|&#62;|&#38;|&#39;|&#34;|!|#|$|&|\'|\\\\(|\\\\)|\\\\*|\\\\+|,|/|:|;|=|\\\\?|@|\\\\[|\\\\]|`|\\"|\\\\.|\\\\\\\\|<|>|{|}|\xe2\x84\xa2|\xc2\xae|\xc2\xa9|%",\n      "replacement": ""\n    }\n  ],\n  "logging": false\n}\n
Run Code Online (Sandbox Code Playgroud)\n

要插入目录,只需单击文档顶部要插入目录的位置,然后转到“工具”-->“Markdown 目录”-->“插入目录”。

\n

它会插入这样的内容:

\n\n
<!-- MarkdownTOC -->\n\n1. [Helpful Links:](#helpful-links)\n1. [Sublime Text Settings:](#sublime-text-settings)\n1. [Packages to install](#packages-to-install)\n\n<!-- /MarkdownTOC -->\n
Run Code Online (Sandbox Code Playgroud)\n

请注意<!-- -->它为您插入的 HTML 注释。这些是特殊标记,可帮助程序了解目录的位置,以便在您每次保存时自动为您更新!因此,请保持这些完好无损。

\n

为了获得额外的奇特效果,请在其周围添加一些<details>HTML<summary>标签以使 ToC 可折叠/可展开,如下所示:

\n
<details>\n<summary><b>Table of Contents</b> (click to open)</summary>\n<!-- MarkdownTOC -->\n\n1. [Helpful Links:](#helpful-links)\n1. [Sublime Text Settings:](#sublime-text-settings)\n1. [Packages to install](#packages-to-install)\n\n<!-- /MarkdownTOC -->\n</details>\n
Run Code Online (Sandbox Code Playgroud)\n

现在,你就得到了这个超酷的效果,如下所示。请在我的主要 eRCaGuy_dotfiles 自述文件(此处)或我的Sublime_Text_editor 自述文件(此处)中查看它的实际情况。

\n
    \n
  1. 折叠:\n在此输入图像描述
  2. \n
  3. 展开:\n在此输入图像描述
  4. \n
\n

有关其用法和限制的更多信息,请务必阅读我在该自述文件中有关MarkdownTOC插件的注释。

\n


小智 7

你也可以使用pandoc,在“瑞士军刀”转换“一个标记格式转换成另一种”。如果提供--toc参数,它将自动在输出文档中生成目录。

提示:如果要在html输出中显示目录,则还需要提供-s生成一个独立文档的目录。

shell命令行示例:

./pandoc -s --toc input.md -o output.html
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。这对我有用。我需要 Markdown 文件中的输出。因此使用了以下内容:`pandoc -s --toc input.md -o input_toc.md` [必须注意确保输出名称与输入文件名不同] (2认同)

Mic*_*ott 7

使用带有插件的文本编辑器。

您的编辑器可能有一个包/插件来为您处理这个问题。例如,在Emacs中,您可以安装markdown-toc TOC 生成器。然后在编辑时,M-x markdown-toc-generate-or-refresh-toc在更改标题/部分时重复调用。如果您想经常这样做,那么键绑定是值得的。它擅长生成简单的目录,而不会用 HTML 锚点污染您的文档。

其他编辑器也有类似的插件,所以流行的列表如下:


jon*_*ert 6

如果您想使用javascript/node.js工具,请查看markdown-toc.


小智 6

你可以使用这个bash one-liner生成它.假设您的降价文件被调用FILE.md.

echo "## Contents" ; echo ; 
cat FILE.md | grep '^## ' | grep -v Contents | sed 's/^## //' | 
  while read -r title ; do 
    link=$(echo $title | tr 'A-Z ' 'a-z-') ; 
    echo "- [$title](#$link)" ; 
    done
Run Code Online (Sandbox Code Playgroud)


sda*_*aau 5

我只编写了一个扩展名python-markdown,它使用其解析器来检索标题,并将TOC输出为具有本地链接的Markdown格式的无序列表.该文件是

...它应该放在markdown/extensions/markdown安装的目录中.然后,您所要做的就是键入锚<a>标签,id="..."并将属性作为参考 - 因此对于这样的输入文本:

$ cat test.md 
Hello
=====

## <a id="sect one"></a>SECTION ONE ##

something here

### <a id='sect two'>eh</a>SECTION TWO ###

something else

#### SECTION THREE

nothing here

### <a id="four"></a>SECTION FOUR

also...
Run Code Online (Sandbox Code Playgroud)

...可以像这样调用扩展名:

$ python -m markdown -x md_toc test.md 
* Hello
    * [SECTION ONE](#sect one)
        * [SECTION TWO](#sect two)
            * SECTION THREE
        * [SECTION FOUR](#four)
Run Code Online (Sandbox Code Playgroud)

...然后你可以在你的降价文档中粘贴这个toc(或者在你的文本编辑器中有一个快捷方式,它在当前打开的文档上调用脚本,然后在同一个文档中插入生成的TOC).

请注意,旧版本python-markdown没有__main__.py模块,因此,上述命令行调用对这些版本不起作用.


Mar*_*tin 5

我刚刚开始做同样的事情(用 Markdown 做笔记)。我使用 Sublime Text 2 和MarkdownPreview 插件。内置的 Markdown 解析器支持[TOC].

  • Sublime Text 3 还有一个用于生成 toc 的插件:https://packagecontrol.io/packages/MarkdownTOC (3认同)

Ant*_*ano 5

我编写了一个python脚本来解析markdown文件并输出一个目录作为markdown列表:md-to-toc

与我发现的其他脚本不同,md-to-toc正确支持重复的标题.它也不需要互联网连接,因此它适用于任何md文件,而不仅仅是公共存储库提供的文件.


Pau*_*zak 5

Typora通过添加到您的文档来生成目录[TOC]