简介
Markdown 是由 John Gruber 于2004年开发一种轻量级标记语言,它是一个面向web作者的 text-to-HTML 转换工具。Markdown编辑器允许您使用纯文本格式编写,然后将其转换为结构有效的XHTML或者HTML,再用各种CSS美化就可以显示出不同的样式。https://daringfireball.net/projects/markdown/dingus 网站可以查看Markdown转换后的HTML源码。
Markdown的格式化语法的主要设计目标是使其尽可能具有可读性,Markdown格式的文档应该可以以纯文本发布,而不是看起来像是由许多标签或格式化指令组成。Markdown语法的最大灵感来源是纯文本电子邮件的格式。Markdown是自由软件,可以在BSD-style的开放源码许可下使用。
标准化
Markdown 的语法分为标准语法和扩展语法。Markdown 标准语法自从 V1.0.1(2004)后就再没有更新了,标准语法适用于所有 Markdown 工具。扩展语法可能每个编辑器都不一样,这是由于Markdown 标准语法功能有限,很多需求无法被满足,因此产生了许多第三方的扩展语法,比较流行的扩展语法是 Github 风格的:GitHub Flavored Markdown(GFM)。大部分第三方的扩展语法并不互相兼容,因此若干来自 GitHub、Reddit、Stack Exchange 以及开源社区的重要代表组成了一个小型非公开工作组,打算将 Markdown 标准化,并为了进一步的改进开放该标准。工作组发布了 Standard Markdown 并且有专门的网站 standardmarkdown.com,但发布几天后应 John Gruber 的要求被迫关闭网站和将 Standard Markdown 改名为CommonMark,这个可以参考http://commonmark.org/。
编辑器
Typora是免费的,支持 Github 风格的扩展语法GFM。
MarkdownPad2免费版只支持标准语法,专业版支持扩展语法,但是要收费。
语法
HTML特殊标签与字符
Markdown 不是想要取代 HTML,它的语法很少,只对应 HTML的一小部分。HTML 是一种发布的格式,Markdown 是一种书写的格式。不是Markdown语法范围内的HTML标签,可以直接在文档中书写。
在HTML块状元素之间的Markdown文本不会被转换为HTML,例如 <div>**测试**</div> 会保持原样,但是在行内元素之间的Markdown文本会被转换为HTML,例如 <span>**测试**</span> 会被转换为 <p><span><strong>测试</strong></span></p>。
在 HTML 中,某些字符是预留的,例如 < 和 >,如果直接使用,浏览器会误以为它们是标签的一部分。要正确显示这些字符,必须在HTML中使用字符实体,比如 > 号的字符实体为 【<】 或 【<】。在Markdown文档中书写的 < 和 & 会被转换为 【<】 和 【&】,如果书写的是 < 则会保持原样。
段落
段落是指HTML中的<p>标签。空行是指行内什么都没有,或者只有空格和制表符。如果行与行之间有一个以上的空行,则会被转换为不同的<p>标签,即被视为不同的段落,否则被视为同一段落。
例如:
1
2
3
转换为:
<p>1
2</p>
<p>3</p>
换行
换行是指HTML中的<br>标签。如果想在同一个段落中换行,那么需要在上一行的结尾输入两个以上的空格然后回车,Markdown会在上一行的结尾插入<br />。
标题
标题是指HTML中的<h1>标签等。Markdown支持两种格式的标题语法。
第一种是在标题的下一行使用任何数量的=表示一级标题,任何数量的-表示二级标题,最多就两级。
例如:
标题1
=
标题2
-
转换为:
<h1>标题1</h1>
<h2>标题2</h2>
第二种是使用#,格式为#标题内容,#的数量表示标题的级别,最多6个#。
例如:
#标题
##标题
###标题
####标题
#####标题
######标题
#######标题
转换为:
<h1>标题</h1>
<h2>标题</h2>
<h3>标题</h3>
<h4>标题</h4>
<h5>标题</h5>
<h6>标题</h6>
<h6>#标题</h6>
列表
列表分为无序列表和有序列表。
无序列表
无序列表是指HTML中的<ul>标签,格式为* 列表内容,*可以用+和-代替。
例如:
* Red
* Green
* Blue
转换为:
<ul>
<li>Red</li>
<li>Green</li>
<li>Blue</li>
</ul>
有序列表
有序列表是指HTML中的<ol>标签,格式为数字英文句号 列表内容,数字不必按顺序,但是推荐按顺序书写。
例如:
1. Red
1. Green
2. Blue
转换为:
<ol>
<li>Red</li>
<li>Green</li>
<li>Blue</li>
</ol>
特殊用法
列表中的每一项都可以包含多个段落,每一段最好缩进一样的空格,空格数小于4。
例如:
* 第一段
第二段
转换为:
<ul>
<li><p>第一段</p>
<p>第二段</p></li>
</ul>
列表可限无限嵌套列表,只需要每次多加4个空格既可。
例如:
* 1
* 2
* 3
转换为:
<ul>
<li>1
<ul><li>2
<ul><li>3</li></ul></li></ul></li>
</ul>
块引用
即HTML中的<blockquote>标签,格式为>引用内容。在每个段落的第一行最前面加上> ,就可以引用整个段落,当然也可以在段落的每一行最前面加上> ,效果是一样的。块引用可以无限嵌套块引用,只需要每次多加一个>既可。块引用中可以使用其他Markdown格式如标题、列表等。
例如:
>引用1
>>引用2
>>>引用3
转换为:
<blockquote>
<p>引用1</p>
<blockquote>
<p>引用2</p>
<blockquote>
<p>引用3</p>
</blockquote>
</blockquote>
</blockquote>
代码区块
即HTML中的<pre>标签和<code>标签,只需要缩进4个空格即可,从最开始缩进4个空格的那一行到第一次没有缩进4个空格的那一行或者文档末尾都会被转换。
例如:
这是一个普通段落:
这是一个代码区块
1
2
3
转换为:
<p>这是一个普通段落:</p>
<pre><code>这是一个代码区块
1
2
</code></pre>
<p>3</p>
分隔线
即HTML中的<hr />标签,格式为一行中用三个以上的星号、减号、下划线,行内不能有其他东西,也可以在星号或是减号中间插入空格。
例如:
* * *
***
*****
- - -
---------------------------------------
链接
即HTML中的<a>标签,Markdown支持两种形式的链接语法,行内链接和参考链接。
行内链接
在方块括号后面紧接着圆括号并插入网址链接,如果你还想要加上链接的 title属性,只要在网址后面,用双引号把文字包起来即可。
例如:
[百度](https://www.baidu.com "百度")一下
转换为:
<p><a href="https://www.baidu.com" title="百度">百度</a>一下</p>
参考链接
参考链接是在链接文字的方括号后面再接上另一个方括号,而在第二个方括号里面写入链接标记,在文件的任意处,你可以把这个链接标记的内容定义出来。链接标记内容的形式为:
方括号,里面输入链接文字;
接着一个英文冒号;
接着一个以上的空格;
接着链接的网址;
紧接着 title 属性,可选,可以用单引号、双引号或是圆括号包着。
例如:
[bd]: https://www.baidu.com "百度"
[百度][bd]一下
转换为:
<p><a href="https://www.baidu.com" title="百度">百度</a>一下</p>
隐式链接标记功能让你可以省略指定链接标记,这种情形下,链接标记会视为等同于链接文字,要用隐式链接标记只要在链接文字后面加上一个空的方括号,
例如:
[bd]: https://www.baidu.com "百度"
[bd][]一下
转换为:
<p><a href="https://www.baidu.com" title="百度">bd</a>一下</p>
强调
即HTML中的<em>和<strong>标签,Markdown使用*和_作为强调的符号,被*和_包围的会被转换成用<em> 标签包围,用两个*和_包围的会被转换成用<strong> 标签包围。
例如:
*斜体*,**粗体**
转换为:
<p><em>斜体</em>,<strong>粗体</strong></p>
代码
即HTML中的<code>标签,被反引号`包围的会被转换成用<code> 标签包围。
例如:
`代码`
转换为:
<p><code>代码</code></p>
图片
即HTML中的<img>标签,Markdown支持两种形式的图片语法,行内图片和参考图片。
行内图片
格式如下:
一个英文感叹号;
接着一个方括号,里面放上图片的替代文字;
接着一个普通括号,里面放上图片的网址,最后还可以用引号包住并加上可选的 title属性。
例如:
![图片](https://t10.baidu.com/it/u=178918326,3666119923&fm=173&app=12&f=JPEG?w=550&h=367&s=ACD21DC78C5295C647F1F93A0300F012 "图片")
转换为:
<p><img src="https://t10.baidu.com/it/u=178918326,3666119923&fm=173&app=12&f=JPEG?w=550&h=367&s=ACD21DC78C5295C647F1F93A0300F012" alt="图片" title="图片" /></p>
参考图片
参考图片是在图片替代文字的方括号后面再接上另一个方括号,而在第二个方括号里面写入图片标记,在文件的任意处,你可以把这个图片标记的内容定义出来。图片标记内容的形式为:
方括号,里面输入图片替代文字;
接着一个英文冒号;
接着一个以上的空格;
接着链接的网址;
紧接着 title 属性,可选,可以用单引号、双引号或是圆括号包着。
例如:
[img]: https://t10.baidu.com/it/u=178918326,3666119923&fm=173&app=12&f=JPEG?w=550&h=367&s=ACD21DC78C5295C647F1F93A0300F012 "参考图片"
![图片][img]
转换为:
<p><img src="https://t10.baidu.com/it/u=178918326,3666119923&fm=173&app=12&f=JPEG?w=550&h=367&s=ACD21DC78C5295C647F1F93A0300F012" alt="图片" title="参考图片" /></p>
自动链接
即HTML中的<a>标签,用尖括号括起来的URL和邮箱地址会被自动转换为超链接,其中邮件地址会被转换为实体编号。
例如:
<https://www.baidu.com>
转换为:
<p><a href="https://www.baidu.com">https://www.baidu.com</a></p>
<address@example.com>
转换为:
<p><a href="mailto:address@example.com">address@example.com</a></p>
转义
Markdown 可以利用反斜杠来插入一些在语法中有特殊意义的符号,格式为\特殊字符,比如以下这些符号:
\ 反斜线
` 反引号
* 星号
_ 底线
{} 花括号
[] 方括号
() 括弧
# 井字号
+ 加号
- 减号
. 英文句点
! 惊叹号
- Markdown温故知新(0):导航目录
Markdown温故知新(0):导航目录 Markdown温故知新(1):Markdown面面观 Markdown温故知新(2):详解七大标准语法 Markdown温故知新(3):六个实用扩展语法 M ...
- 记录下 Markdown 语法
github上常用markdown语法:Mastering Markdown 目录 0. 目录 1. 锚点 2.标题 3.超链接 3.1.行内式 3.2.自动链接 4.列表 4.1.有序列表 4.2. ...
- Markdown 语法详尽笔记大全 2019
目录 0.介绍 1.快捷键 2.基本语法 2.1 分级标题 # 写法1 # 写法2 上下文标题 2.2 字体设置斜体.粗体.删除线 _*~ 2.3 分割线 --- 或 *** 2.4 引 ...
- Go实战--也许最快的Go语言Web框架kataras/iris初识(basic认证、Markdown、YAML、Json)
ris自称是Go语言中所有Web框架最快的,它的特点如下: 1.聚焦高性能 2.健壮的静态路由支持和通配符子域名支持. 3.视图系统支持超过5以上模板 4.支持定制事件的高可扩展性Websocket ...
- Markdown 轻量级标记语言
1.Markdown 语言 1.1 Markdown 简介 Markdown 是一种轻量级的标记语言,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷 ...
- Markdown教程 <1>
Markdown教程 <1> 本文在本地使用atom编辑后,直接将代码赋值到博客园中的markdown编辑器中生成 1. markdown字体,段落控制 以下引用块里面为源码,引用块下方为 ...
- 最新 Markdown for GitHub教程
Markdown 教程 Markdown 是什么? Markdown 是一种方便记忆.书写的纯文本标记语言,用户可以使用这些标记符号以最小的输入代价生成极富表现力的文档:譬如您正在阅读的这份文档. 它 ...
- Python黑帽编程1.3 Python运行时与包管理工具
Python黑帽编程1.3 Python运行时与包管理工具 0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and ...
- 【转载】Python的包管理工具Pip
接触了Ruby,发现它有个包管理工具RubyGem很好用,并且有很完备的文档系统http://rdoc.info 发现Python下也有同样的工具,包括easy_install和Pip.不过,我没有细 ...
随机推荐
- Asp.NetCore 3.1 使用AutoMapper自动映射转换实体 DTO,Data2ViewModel
1:什么是AutoMapper? 下面为AutoMapper官方的解释: AutoMapper是一个对象-对象映射器.对象-对象映射通过将一种类型的输入对象转换为另一种类型的输出对象来工作. 使Aut ...
- 详细分析链表的数据结构的实现过程(Java 实现)
目录 链表的数据结构的实现过程(Java 实现) 前言 基本概念 链表的基本结构 链表的基本操作的实现 在链表中添加元素 在链表头添加元素 在链表指定位置处添加元素 链表的虚拟头节点 链表的查询和修改 ...
- RabbitMQ配置文件(advanced.config)
这是advanced.config配置文件示例: [ %% ------------------------------------------------ --------------------- ...
- 自定义吐司以及Toast的各种用法,详解。教你学会使用各种各样的Toast
package com.david_Custoast; import com.david_Custoast.R; import android.app.Activity; import android ...
- android开发之gridView的一些属性。(项目经验总结)
1.android:numColumns="auto_fit" //GridView的列数设置为自动 2.android:columnWidth="90dp &quo ...
- cookies、sessionStorage和localStorage
浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互.浏览器查看方式: HTML4的本地存储 cookie 一.cookie和sess ...
- 【转】对初学LoadRunner朋友的建议
对初学LoadRunner朋友的建议 作者:wind摘要:随着Internet的普及与迅速发展,企业业务量的迅速加大,数据大集中成为一种趋势,IT系统承载的负荷越来越重,系统性能的好坏严重的影响了企业 ...
- POJ-1273Drainage Ditches(网络流入门题,最大流)
Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch. This ...
- C#中SQL Server的几点注意事项
背景 在C#中处理sql会遇到一些奇怪的问题,在这里做一个小的总结,内容会随着经历不断积累. 内容 1.DataTime?和DataTime的区别. DataTime?定义的数据为可空类型,允许其为 ...
- 怎么把后台传过来的Json拼成table 用Jquery ajax()
页面上的表格定义:<table id="tableId"></table> js中的代码:var $parent0 = $('#tableId);//获取页 ...