Markdown简介与简明语法
简介
Markdown 是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容具有一定的格式。
用途
Markdown 语法简洁明了、学习容易,而且功能比纯文本更强,因此有很多人用它写博客。世界上最流行的博客平台 WordPress 和 大型CMS如 Joomla、Drupal都能很好的支持Markdown。完全采用Markdown编辑器的博客平台有 Ghost 和 Typecho。
特殊字符自动转换
在 HTML 文件中,有两个字符需要特殊处理: <和 & 。 < 符号用于起始标签,& 符号则用于标记 HTML 实体,如果你只是想要显示这些字符的原型,你必须要使用实体的形式,像是 < 和 &。
& 字符尤其让网络文档编写者受折磨,如果你要打「AT&T」 ,你必须要写成「AT&T」。而网址中的 & 字符也要转换。比如你要链接到:
http://images.google.com/images?num=30&q=larry+bird
你必须要把网址转换写为:
http://images.google.com/images?num=30&q=larry+bird
才能放到链接标签的 href 属性里。不用说也知道这很容易忽略,这也可能是 HTML 标准检验所检查到的错误中,数量最多的。
Markdown 让你可以自然地书写字符,需要转换的由它来处理好了。如果你使用的 & 字符是 HTML 字符实体的一部分,它会保留原状,否则它会被转换成 &。
所以你如果要在文档中插入一个版权符号 ©,你可以这样写:
©
Markdown 会保留它不动。而若你写:
AT&T
Markdown 就会将它转为:
AT&T
类似的状况也会发生在 < 符号上,因为 Markdown 允许兼容HTML,如果你是把 < 符号作为 HTML 标签的定界符使用,那 Markdown 也不会对它做任何转换,但是如果你写:
4 < 5
Markdown 将会把它转换为:
4 < 5
不过需要注意的是,code范围内,不论是行内还是区块, < 和 & 两个符号都一定会被转换成 HTML 实体,这项特性让你可以很容易地用 Markdown 写 HTML code(和HTML相对而言,HTML语法中,你要把所有的 < 和 & 都转换为HTML实体,才能在HTML文件里面写出HTML code)
Markdown简明语法
区块元素
段落和换行
一个Markdown段落是由一个或多个连续的文本行组成的,它的前后要有一个以上的空行。(空行的定义是显示上看起来像是空的,便会被视为空行。比如说,若某一行只包含空格和制表符,则该行也会被视为空行)普通段落不该用空格或制表符来缩进。
「由一个或多个连续的文本行组成」这句话其实暗示了Markdown允许段落内的强迫换行(插入换行符),这个特性和其他大部分的text-to-HTML格式不一样,其他的格式会把每个换行符都转成<br/>标签
如果你确实想要依赖Markdown来插入<br/>标签的话,在插入处先按入两个以上的空格然后回车。
标题
Markdown 支持两种标题的语法,类Setext 和 类Atx 形式
类Setext 形式是用底线的形式,利用 = (最高阶标题)和 - (第二阶标题),例如:
This is an H1
=============
This is an H2
-------------
说明
任何数量的=和-都可以有效果。
类Atx 形式则是在行首插入1到6个 #,对应一级标题到六级标题,例如:
# 这是 H1
## 这是 H2
###### 这是 H6
你可以选择性的闭合类Atx样式的标题,这纯粹只是美观用的,若是觉得这样看起来比较舒适,你就可以在行尾也加上 #
说明
行尾的#数量可以不用和开头的一样(行首的井字符数量才决定标题的阶数)
# 这是 H1 #
## 这是 H2 ##
### 这是 H3 ######
区块引用
如果你需要引用一小段别处的句子,那么就要用到引用的格式了。
要使用区块引用,你只需要在文本前加入 > 这种尖括号(大于号)即可:
> 例如这样
Markdown 允许你偷懒只在整个段落的第一行最前面加上 > :
> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
id sem consectetuer libero luctus adipiscing.
区块引用可以嵌套(例如:引用内的引用),只要根据层次加上不同数量的 > :
> This is the first level of quoting.
>
> > This is nested blockquote.
>
> Back to the first level.
引用的区块内也可以使用其他的 Markdown 语法,包括标题、列表、代码区块等:
> ## 这是一个标题。
>
> 1. 这是第一行列表项。
> 2. 这是第二行列表项。
>
> 给出一些例子代码:
>
> return shell_exec("echo $input | $markdown_script");
列表
Markdown 支持 有序列表 和 无序列表。
无序列表 使用星号(*)、加号(+)或者减号(-)作为列表标记:
* Red
* Green
* Blue
等价于
+ Red
+ Green
+ Blue
等价于
- Red
- Green
- Blue
有序列表 使用数字接一个英文句点(.)作为列表标记:
1. Bird
2. McHale
3. Parish
表格
| | | | #表头
| -- | --: | :--: | #设置字体对齐方式
| | | | #表项内容
| | | |
| | | |
说明
| -- |默认左对齐| --: |右对齐| :--: |居中对齐
代码区块
和程序相关的写作或是标签语言原始码通常会有已经排版好的代码区块,通常这些区块我们并不希望它以一般段落文件的方式去排版,而是照原来的样子显示,Markdown 会用 <pre> 和 <code> 标签来把代码区块包起来。
要在 Markdown 中建立代码区块很简单,只要简单地缩进 4 个空格或者 1 个制表符就可以,例如:
这是一个普通段落:
这是一个代码区块。
Markdown 会转换成:
<p>这是一个普通段落:</p>
<pre><code>这是一个代码区块。
</code></pre>
代码高亮显示
` ` `python
@requires_authorization
class SomeClass:
pass
if __name__ == '__main__':
# A comment
print 'hello world'
` ` `
分割线
在一行中用三个以上的星号(*)、减号(-)、底线(_)来建立一个分割线,行内不能有其他东西。你也可以在星号或者减号中间插入空格。下面的每种写法都可以建立分割线:
* * *
***
*****
- - -
---------------------------------------
区段元素
链接
Markdown 支持两种形式的链接语法:行内式 和 参考式 两种形式。
行内式
链接文字用 [方括号] 来标记,然后在方括号后面紧接着圆括号并插入网址链接即可,如果你还想要加上链接的 title 文字,只要在网址后面,用双引号(")把 title 文字包起来即可,例如:
This is [an example](http://example.com/ "Title") inline link.
[This link](http://example.net/) has no title attribute.
如果你是要链接到同样主机的资源,你可以使用相对路径:
See my [About](/about/) page for details.
参考式
链接文字也用 [方括号] 来标记,然后在链接文字的方括号后面再接上另一个方括号,而在第二个方括号里面要填入用以辨识链接的标记:
This is [an example][id] reference-style link.
接着,在文件的任意处,你可以把这个标记的链接内容定义出来:
[id]: http://example.com/ "Optional Title Here"
链接内容定义的形式为:
- 方括号(前面可以选择性地加上至多三个空格来缩进),里面输入链接文字
- 接着一个冒号
- 接着一个以上的空格或制表符
- 接着链接的网址
- 选择性地接着 title 内容,可以用单引号、双引号或者括弧包着
下面这三种链接的定义都是相同:
[foo]: http://example.com/ "Optional Title Here"
[foo]: http://example.com/ 'Optional Title Here'
[foo]: http://example.com/ (Optional Title Here)
说明
有一个已知的问题是 Markdown.pl 1.0.1 会忽略单引号包起来的链接 title。
强调
Markdown 使用星号(*)和底线(_)作为标记强调字词的符号,被 * 或 _ 包围的字词会被转成用 <em> 标签包围,用两个 * 或 _ 包起来的话,则会被转成 <strong>,例如:
*single asterisks*
_single underscores_
**double asterisks**
__double underscores__
会转成:
<em>single asterisks</em>
<em>single underscores</em>
<strong>double asterisks</strong>
<strong>double underscores</strong>
说明
如果要在文字前后直接插入普通的星号或底线,你可以用反斜线:
\*this text is surrounded by literal asterisks\*
代码
如果要标记一小段行内代码,你可以用反引号(`)把它包起来,例如:
Use the `printf()` function.
会产生:
<p>Use the <code>printf()</code> function.</p>
图片
很明显地,要在纯文字应用中设计一个「自然」的语法来插入图片是有一定难度的。
Markdown 使用一种和链接很相似的语法来标记图片,同样也允许两种样式: 行内式 和 参考式
行内式
行内式的图片语法如下:


详细叙述如下:
- 一个惊叹号 !
- 接着一个方括号,里面放上图片的替代文字
- 接着一个普通括号,里面放上图片的网址,最后还可以用引号包住并加上选择性的 title 文字。
参考式
参考式的图片语法如下:
![Alt text][id]
「id」是图片参考的名称,图片参考的定义方式和链接参考一样:
[id]: url/to/image "Optional title attribute"
说明
到目前为止, Markdown 还没有办法指定图片的宽高,如果你需要的话,你可以使用普通的<img>标签。
其它
自动链接
Markdown 支持以比较简短的自动链接形式来处理网址和电子邮件信箱,只要是用方括号包起来即可,Markdown就会自动把它转成链接,一般网址的链接文字就和链接地址一样,例如:
<http://example.com/>
Markdown 会转为:
<a href="http://example.com/">http://example.com/</a>
反斜杠
Markdown 可以利用反斜杠来插入一些在语法中有其它意义的符号
Markdown 支持以下这些符号前面加上反斜杠来帮助插入普通的符号:
\ 反斜线
` 反引号
* 星号
_ 底线
{} 花括号
[] 方括号
() 括弧
# 井字号
+ 加号
- 减号
. 英文句点
! 惊叹号
最后推荐一款Markdown编辑器:Typora
说明
可惜的是Typora从2022年11月23日正式发布1.0版本开始进入了付费时代。
如果你嫌安装软件太麻烦了,没关系,也有在线Markdown编辑器