Markdown简介
Markdown是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的HTML,或者其他格式的文件。Markdown也可以理解为将以MARKDOWN语言编写的语言转换成HTML内容的工具,最初是一个perl脚本Markdown.pl。这种语言由John Gruber和Aaron Swartz于2004年创建。诞生初期是为了简化HTML语法,用于编写阅读次数多、更新频率高,但内容格式相对稳定的README类的文档。所以Markdown语法支持嵌入原始的HTML标记语言,支持CSS样式。
Markdown的真正流行是在2008年Github出现以后。Github使用Markdown作为默认的Readme文件编写规范,并提供了一套渲染规范。随着Github的流行,越来越多的具有高文字输出能力的程序员开始使用Markdown作为其创作的首选工具。现在,Markdown不仅适用于工程师,其简洁的语法、规范的布局和高效的渲染能力,使其得到了越来越多文字创作者的喜爱。
Markdown使用场景:
- 各类代码托管平台,如GitHub、GitLab、BitBucket、Coding、Gitee等等,都支持Markdown语法,很多开源项目的README、开发文档、帮助文档、Wiki等都用Markdown写作。
- 技术社区和写作平台,StackOverflow、CSDN、掘金、简书、GitBook、有道云笔记
Markdown的优点:
- 专注你的文字内容而不是排版样式,安心写作
- 轻松的导出HTML、PDF和本身的.md文件
- 纯文本内容,兼容所有的文本编辑器与字处理软件
- 随时修改你的文章版本,可以方便地纳入版本控制
- 可读、直观、学习成本低,能轻松在码字的同时做出美观大方的排版。
Markdown的不足:
- 缺乏公认的、与时俱进的官方标准,其最后标准更新于2004年度;
- Markdown源代码无法嵌入图片、文件等资源,需要使用URL来定位;
- Markdown的布局形式相对单一,无法用简单方法实现图文混排。
Markdown旨在简洁、高效,也由于Markdown的易读易写,人们用不同的编程语言实现了多个版本的解析器和生成器,而且可能有不同程度的定制与扩展,这就导致了目前不同的Markdown工具集成了不同的功能(基础功能大致相同),例如流程图与时序图,复杂表格与复杂公式的呈现,比如GFM Markdown就支持使用Mermaid生成图表和流程图。
Markdown语法
Markdown自从被创建以来,已经发展出许多不同的版本和变种,以下是一些知名的版本:
- Standard Markdown/CommonMark:这是Markdown的标准版本,也被称为CommonMark。这个版本着重于确保Markdown语法的一致性和语义的精确性。
- GitHub Flavored Markdown(GFM):这是GitHub创建的一个特殊版本,它在Standard Markdown的基础上增加了一些额外的特性,比如任务列表,表格,和自动URL链接等。
- MultiMarkdown:这个版本在原有的Markdown基础上增加了对表格,脚注,参考文献,等等的支持。
- GitLab Flavored Markdown(GLFM)是GitLab的特殊Markdown版本。它在标准的GitHub Flavored Markdown(GFM)基础上增加了一些特性,以满足GitLab用户的需求。
虽然有很多不同的版本,但它们的核心语法都相同,主要的区别在于一些额外的功能和扩展。
GitHub Flavored Markdown(GFM)
GitHub Flavored Markdown,简称GFM,是GitHub基于标准Markdown语言的一个扩展版本。GFM在标准Markdown的基础上增加了一些特性,以满足GitHub用户对编写文档,评论,Pull Request等的需求。
以下是GFM的一些主要扩展特性:
除了上述Cheat Sheet中的语法外,GFM还支持的语法有:
脚注
Here is a simple footnote[^1]. A footnote can also have multiple lines[^2]. [^1]: My reference. [^2]: To add line breaks within a footnote, prefix new lines with 2 spaces. This is a second line.
渲染效果:
警告
>[!NOTE] >Useful information that users should know, even when skimming content. >[!TIP] >Helpful advice for doing things better or more easily. >[!IMPORTANT] >Key information users need to know to achieve their goal. >[!WARNING] >Urgent info that needs immediate user attention to avoid problems. >[!CAUTION] >Advises about risks or negative outcomes of certain actions.
渲染效果:
流程图
GitHub支持在Markdown文件中渲染Mermaid图表了。用户可以使用文本定义和创建复杂的图表,而无需依赖其他工具。
在GitHub上使用Mermaid的语法如下:
```mermaid graph TD; A[Hard edge]-->|Link text|B(Round edge); B-->C{Decision}; C-->|One|D[Result one]; C-->|Two|E[Result two]; ```
这将在GitHub上渲染一个带有决策节点的流程图:
除此之外,还有:
- 根据GeoJSON或TopoJSON创建地图
- 绘制STL 3D模型等
Obsidian中的Markdown语法
Obsidian使用的是GitHub Flavored Markdown (GFM)这个版本。这意味着你可以使用GFM的所有标准特性,例如任务列表,表格和代码块等。但是请注意,Obsidian也可能具有自己的一些特殊形式和扩展,例如链接其他笔记,嵌入笔记等。
Obsidian增加的语法特性:
- 链接和嵌入笔记:你可以通过[[笔记名称]]的语法在笔记之间创建链接,或者通过![[笔记名称]]的语法来嵌入其他笔记。
- 转义链接:如果你不希望Obsidian解析链接,你可以在链接前加上\进行转义。
- 块引用和块嵌入:Obsidian支持块级引用和嵌入,你可以通过光标在特定行进行^键入,Obsidian将生成一个唯一的块ID,然后你就可以在其他地方以[[^块ID]]的形式引用或嵌入这个块。
- YAML前置课题:Obsidian支持在笔记顶部添加YAML代码块(被—包围的部分),以包含元数据,如标签、别名等。
- 标签和别名:你可以用#符号添加标签,用^符号添加别名。
Obsidian不支持的语法特性:
- 自动链接:在GFM中,任何形式的URL都会被自动转换为可点击的链接。然而,在Obsidian中,这个特性可能并不总是有效。
- Mention(提及):GFM允许你使用@符号来提及其他用户。但这是GitHub特有的特性,Obsidian并不支持。
- Issue链接:在GFM中,你可以直接引用和链接到GitHub的issue。但这也是GitHub特有的特性,Obsidian并不支持。
- Emoji:在GFM中,你可以通过特定的符号代码来插入emoji。然而Obsidian并未完全支持这个特性。
- 颜色模式:GitHub支持颜色代码的可视化,Obsidian并不支持。
其他Markdown Chart Sheet
参考链接: