我开始使用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)
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)
生产:
一些介绍文本,格式为标题2样式
第一段文字
这是一个子段落,格式为标题3样式
第二段文字
mxr*_*xro 31
MultiMarkdown Composer似乎确实生成了一个目录,以便在编辑时提供帮助.
可能还有一个或哪个库可以生成TOC:请参阅Python Markdown TOC Extension.
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.
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(摘要).
# 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)
您可以使用例如为您生成摘要的脚本,查看我在github上的项目 - summarizeMD -
我也尝试了其他脚本/ npm模块(例如doctoc),但没有人用工作锚重现TOC.
Mat*_*tTT 16
作为手工制作链接列表的替代方案,让我们概述一下所有可用的开箱即用的解决方案来插入目录(请评论并扩展以保持最新):
以下语法越来越受欢迎:
<!-- assure you have a blank line before -->
[[_TOC_]]
Run Code Online (Sandbox Code Playgroud)
这有效
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)
{{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 的回答的编辑将其扩展为概述被拒绝了。
为了我们这些人README.md
在Atom中创建文件的好处(我是如何找到这个线程的):
apm install markdown-toc
Run Code Online (Sandbox Code Playgroud)
https://atom.io/packages/markdown-toc
正如其他答案中提到的,有多种方法可以自动生成目录。大多数是开源软件,可以根据您的需求进行调整。
然而,我缺少的是使用 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.1.”。
第一级不使用列表。在这里,使用无序列表是可能的,但不是必需的:缩进和项目符号只是增加了视觉混乱,这里没有任何功能,所以我们根本不使用第一个 ToC 级别的列表。
以粗体字对目录中的第一级部分进行视觉强调。
在浏览器的 URL 栏中看起来“漂亮”的简短、有意义的子部分标记,#heading--1-1
而不是包含实际标题的转换部分的标记。
代码使用 H2 标题 ( ## …
) 作为部分,H3 标题 ( ### …
) 用于副标题等。这使得源代码更易于阅读,因为## …
与部分以 H1 标题开头的情况相比,滚动时提供了更强的视觉线索 ( # …
)。当您使用 H1 标题作为文档标题本身时,它在逻辑上仍然是一致的。
最后,我们添加了一个很好的水平线来将目录与实际内容分开。
有关此技术的更多信息以及我们如何在论坛软件Discourse 中使用它,请参见此处。
由不同Markdown解析器生成的锚标签不均匀.
如果你正在使用Markdown解析器GFM(GitHub Flavored Markdown)或Redcarpet,我写了一个Vim插件来处理目录.
为Markdown文件生成目录.
支持的Markdown解析器:
更新现有的目录.
保存时自动更新现有目录.
生成目录
将光标移动到要附加目录的行,然后键入下面适合您的命令.该命令将在光标进入目录后生成标题.
:GenTocGFM
以GFM链接样式生成目录.
此命令适用于GitHub存储库中的Markdown文件,如README.md和GitBook的Markdown文件.
:GenTocRedcarpet
在Redcarpet链接样式中生成目录.
此命令适用于Jekyll或其他任何地方使用Redcarpet作为其Markdown解析器.
您可以在此处查看GFM和Redcarpet样式toc链接之间的差异.
手动更新现有的目录
通常您不需要这样做,现有的目录默认会在保存时自动更新.如果你想手动完成,只需使用:UpdateToc
命令.
https://github.com/mzlogin/vim-markdown-toc
在 Visual Studio Code (VSCode) 中,您可以使用扩展Markdown All in One。
安装后,请按照以下步骤操作:
编辑:现在我使用 DocToc 来生成目录,有关详细信息,请参阅我的其他答案。
如果使用Sublime Text 编辑器,MarkdownTOC 插件工作得非常好!看:
\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": "<|>|&|'|"|<|>|&|'|"|!|#|$|&|\'|\\\\(|\\\\)|\\\\*|\\\\+|,|/|:|;|=|\\\\?|@|\\\\[|\\\\]|`|\\"|\\\\.|\\\\\\\\|<|>|{|}|\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 注释。这些是特殊标记,可帮助程序了解目录的位置,以便在您每次保存时自动为您更新!因此,请保持这些完好无损。
为了获得额外的奇特效果,请在其周围添加一些<details>
HTML<summary>
标签以使 ToC 可折叠/可展开,如下所示:
<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有关其用法和限制的更多信息,请务必阅读我在该自述文件中有关MarkdownTOC插件的注释。
\n小智 7
你也可以使用pandoc
,在“瑞士军刀”转换“一个标记格式转换成另一种”。如果提供--toc
参数,它将自动在输出文档中生成目录。
提示:如果要在html
输出中显示目录,则还需要提供-s
生成一个独立文档的目录。
shell命令行示例:
./pandoc -s --toc input.md -o output.html
Run Code Online (Sandbox Code Playgroud)
使用带有插件的文本编辑器。
您的编辑器可能有一个包/插件来为您处理这个问题。例如,在Emacs中,您可以安装markdown-toc TOC 生成器。然后在编辑时,M-x markdown-toc-generate-or-refresh-toc
在更改标题/部分时重复调用。如果您想经常这样做,那么键绑定是值得的。它擅长生成简单的目录,而不会用 HTML 锚点污染您的文档。
其他编辑器也有类似的插件,所以流行的列表如下:
小智 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)
我只编写了一个扩展名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
模块,因此,上述命令行调用对这些版本不起作用.
我刚刚开始做同样的事情(用 Markdown 做笔记)。我使用 Sublime Text 2 和MarkdownPreview 插件。内置的 Markdown 解析器支持[TOC]
.