Markdown 语法的超快速上手

本文支持WTFPL协议,所以你想往哪转就往哪转。html

[TOC]ios

Why markdown?

Markdown是一种可使用普通文本编辑器编写的标记语言,经过简单的标记语法,它可使普通文本内容具备必定的格式。 Markdown具备一系列衍生版本,用于扩展Markdown的功能(如表格、脚注、内嵌HTML等等),这些功能原初的Markdown尚不具有,它们能让Markdown转换成更多的格式,例如LaTeX,Docbook。Markdown加强版中比较有名的有Markdown Extra、 MultiMarkdown、 Maruku等。这些衍生版本要么基于工具,如Pandoc;要么基于网站,如GitHub和Wikipedia,在语法上基本兼容,但在一些语法和渲染效果上有改动。 - Baidu Baike程序员

上述内容告诉你,Markdown是一种标记语言,再粗暴一点说,就是排版用的,再再粗暴一点,就是如何让你看起来如同记事本通常平淡的文本可以变得花里胡哨。安全

偷偷告诉你:这篇文章就是用Markdown写的。服务器

标记语言??我知道HTML啊,有什么区别么??

他俩啥关系

Markdown是基于HTML所开发的,与HTML不一样的是,Markdown(如下简称MD)并不受W3C基金会管理,但自己也是开放的。 Markdown容许内嵌HTML代码(尽管不彻底支持HTML标准下的全部标签,这是出于安全考虑,并且这也不是倡用的行为),而在网页显示的时候这些Markdown语法也会被转换成对应的HTML标记文本显示在你的面前。 可是如今的Markdown并不仅限于能够转换为HTML,新的技术(Pandoc)标明他们实际上还能够转换成doc或者pdf之类的……markdown

他俩谁好用

这不是一个能够很快下定论的东西,无所谓谁更好或者更糟,若是Markdown和HTML真能像这样一较高下的话恐怕另外一个也就不复存在了不是。 他们两个的面向是不一样的,HTML专一于一种通用的,可以在各个设备上在必定的文本协议(HTTP/HTTPS)下正确的进行显示,因此论强大的话,HTML能够支持更加花哨强大的功能,可是相对应的,使用起来就要繁琐一些,而且具有一个至关庞大的语法标准和一些协议性的说明。 而Markdown则是面向于快速标记的,并且对程序员很是友好(由于自己针对代码的排版作了相关的处理,可比HTML的<code>再配上一堆乱七八糟的CSS方便多了),所以广受IT行业的青睐,不只如此,最近的Markdown甚至能够支持部分$\mathrm{\LaTeX}$语法(固然主要用于写数学公式用,而另外一方面用于HTML的MathML彷佛没能推广起来的样子)网络

因此简单来讲,Markdown比HTML用起来快,但HTML具备Markdown没法替代的功能。 Markdown 用起来有多快??看看下面这段话就知道了:编辑器

万维网联盟建立于1994年,是Web技术领域最具权威影响力的国际中立性技术标准机构。到目前为止,W3C已发布了200多项影响深远的Web技术标准及实施指南工具

Markdown:网站

> *万维网联盟*建立于**1994**年,是Web技术领域**最具权威**和**影响力**的国际中立性技术标准机构。到目前为止,W3C已发布了200多项影响深远的Web技术标准及实施指南

HTML:

<blockquote><p><i>万维网联盟</i>建立于<b>1994</b>年,是Web技术领域<b>最具权威</b>和<b>影响力</b>的国际中立性技术标准机构。到目前为止,W3C已发布了200多项影响深远的Web技术标准及实施指南<br /></p></blockquote>

据上述内容统计,当输入一个HTML标签的时候,你须要按下若干次的Shift+,+Shift+.+←[+/]+标签键位,而在Markdown里至多只须要若干次的Shift+8而已,根据时间复杂度o(n)的分析和人体工学的相关……

How?

本人的资历尚浅,即使如此本身仍是能但愿经过本身绵薄的力量帮助你们快速上手,本身从大二开始常用Markdown记录笔记,所以用的还算方便和熟练。所以这里针对一些很是很是经常使用的功能进行说明:。

标题文本(巧了,说的不就是我么??)

标题文本通常用#开始,#的数量决定标题的等级,这和HTML里面的<h1><h6>多少有些相似,尽管Markdown的最终渲染结果取决于各服务器提供的CSS文件但通常来讲,层级越高(##...## Title)的标题一般字会越小做为副标题使用。 好比,这段的标题实际上就是这么写的

## 标题文本

是的,根据井号的数量来看,这是个二级标题。 如没有特殊规定,通常标题最大支持到六级(正好对应HTML的<h6>) 在有些Markdown系统下,#能够(甚至会要求)成对出现

## 标题文本 ##

可是博客园里的没作这种要求

标题属于行级格式,所以标题只能出现于一行的行首,而不容许在行的中间或结尾出现,并且当某一行被标注为标题的时候,整个一行的文字都会变成标题的格式。位于行中间的井号会被真的处理为#

位于分割线上方的文本会被自动处理为标题

粗体、斜体、粗斜体、删除线

不怕影子

正是这样,Markdown提供了一种很是快速方式进行这种文字版式的替换,使用若干个成对的*完成: 一对*斜体*斜体*)(不知何种缘由,博客园的MD编辑器彷佛不支持斜体,天然,粗斜体也会一样变成粗体,好吧,跟皮肤有关系,有的皮肤样式对应的Markdown渲染样式就没有斜体,换个皮肤就行了) 两对*粗体**粗体**) 我想又粗又斜怎么办,很简单,1+2=3(***粗斜***

此外,Markdown还容许使用一堆双浪线~~包围文本做为删除线使用,例如: 浪个里格浪

~~浪个里格浪~~

不幸的是,Markdown语法里并未提供<u>下划线</u>,尽管如此能够经过内嵌HTML的<u>标签来实现。

引用

著名的做家鲁迅先生曾经在这里说了不少的东西,好比“我历来没说过这句话”……

引用在Markdown里由一个>开始,值得注意的是,引用是一个块级结构,这意味着引用不会对文段的一部分进行修饰,而是直接做用于一整个文段 若是想要让后文内容脱离引用,根据上面的说法就是让后文内容脱离被引用的文段,也就是在引用文段的最后一行与非引用文段的第一行之间加个回车好比:

鲁迅说过:……

鲁迅没说过……

用Markdown写出来就是:

> 鲁迅说过:……

鲁迅没说过……

但若是是

> 鲁迅说过:……
鲁迅也说过……

就会变成:

鲁迅说过:…… 鲁迅也说过……

和标题相似,引用也能够经过增长>的数量进行嵌套引用:

鲁迅先生曾经说过

世界上本没有路,走的人多了,便成了路

> 鲁迅先生曾经说过
>> 世界上本没有路,走的人多了,便成了路

引用内的文段同样能够加上其余的格式标注,好比:

鲁迅先生强调过:真的勇士猛士,勇于直面惨淡的人生,勇于正视淋漓的鲜血。

> [鲁迅](https://baike.baidu.com/item/鲁迅/36231?fr=aladdin)先生**强调**过:**真的~~勇士~~猛士,勇于直面惨淡的人生,勇于正视淋漓的鲜血。**

表格

0 VS 0
×
×
× ×

住手!!大家住手!!不要再下啦!! 这已是大家下的第4294967295盘啦!!

Markdown提供了一个很是简单的关于表格的格式支持,尽管这本来并不存在于最初的Markdown语法集当中,Markdown对于表格功能上的支持是没法与HTML的<table>标签抗衡的,由于它支持最完整的表格,也只有这种格式:

表头1 表头2 表头3
左对齐的文本 居中的文本 右对齐的文本
左对齐 居中 右对齐
左对齐 居中 右对齐

只有表格的第一行能够做为表头使用,其余的项只能做为普通的元组使用,表格是向下排开的,因此想写横向表格的话也不是一个很好的选择,和引用相似,表格也是一个块级结构,而表格要求在其先后都要有一个回车,不然内容不被视为表格,表格的基本语法以下(这恐怕是Markdown里最麻烦的语法格式了):

上一段文本……

|表头1|表头2|表头3|
|:---|:---:|---:|
|左对齐的文本|居中的文本|右对齐的文本|
|左对齐|居中|右对齐|
|左对齐|居中|右对齐|

下一段文本

第一行做为表头使用表头的格式与表格其余项会略有不一样,他的字更粗并且他所在的单元格与其余的单元格长得也略有不一样。 第二行那个很像火星文的东西用于指定整列的对齐方式,横线的数量不限,冒号肯定文本的对齐锚点位置,表示以下含义:

|:---|:---:|---:|
 左     中    右

并不必定非要指定成这个样子,也能够全是左的,也能够全是右的……总之是这样。 后面的行就是普通的表格项了,以|分割,不限于3列,能够更多,每列用|分割,并且请注意,MD中一张表格的列数是固定的,所以,你不能够指定被合并的单元格,也不能够弄出那种像砖墙那样的锯齿表格,并且表格的列宽是自适应内容的,所以在原生MD中你没法指定列宽。 但若是真的须要这样怎么办呢,因为MD容许内嵌HTML代码,所以可使用HTML的<table><tr><td>...这些标签来实现(i.e.写成HTML表格),由于HTML的table功能足够强大,尽管如此内嵌HTML也不是倡用的作法

代码块与行内代码

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello World" << endl;
    return 0;
}

这是Markdown最受IT从业者青睐的地方了,由于一样的功能若是让HTML来作会须要用各类各样的标签控制等宽文本而后还要用CSS或者JS脚原本控制高亮…… 可是在Markdown里你彻底不须要考虑这些(固然,高亮与否以及高亮的方式取决于服务器提供的CSS样式)。

这里先介绍代码块,它由一对三个反单引号包围```,反单引号在哪呢??在键盘Tab键的上方你会找到一个标有~的键,这个键用Shift打出来就是浪线,可是直接敲出来就是反单引号,在中文标点下,这个键会打出间隔符· 代码块是块级结构,被修饰的内容即便被写到某一段内,也会被另起一行做为新的段落,直至再出现三个反单引号结束,好比本节最开始的那个Hello World其实是这样婶儿的:

(请无视反斜线`\`,我没找到好方法可以让代码块里显示代码块的写法)
\```cpp
#include <iostream>

using namespace std;

int main()
{
    cout << "Hello World" << endl;
    return 0;
}
\```

其中,第一个三反单引号后面能够加入你的语言名称的缩写(cpp表示C++),这个有助于文档确认你这段代码基于何种语法进行高亮,你也能够指定JavaScript之类的

在有些Markdown系统中,容许经过另一种方式定义代码块,将整个文段向内进行一次Tab(缩进)便可,这个文段整个就被看成代码块处理。这里不对此方法进行描述。

除了代码块之外,Markdown还支持行内代码,对就是这样,行内代码和加粗相似,属于对文段内部的修饰,由一对反单引号包围,好比这段内容的Markdown语法就是这样的:

除了代码块之外,`Markdown`还支持**行内代码**,对就是这样,……

这种写法在有些时候是很是方便的,好比:

这里介绍关于System.Collection.Generic所包含的接口和类……

这样,在文本内排放代码是很是容易而且美观的

可比某课设里面往Word里面粘代码来的顺畅多了……

连接

这个连接正好就是这篇文章的地址

连接在Markdown中的组织形式也很是简单,连接有两部分构成,一个是连接的显示文本,还有一个就是连接的符号地址: 好比沈阳航空航天大学官网 Markdown语法就是:

[沈阳航空航天大学官网](http://www.sau.edu.cn)
[显示文本](符号地址)

若是显示文本为空,则连接将直接取符号地址做为显示文本。

图片

Mona Lisa (上图来自于百度搜索结果)

在Markdown中因为图片也是直接连接网络资源,所以她的格式多少与连接有些相似:

![图片描述](图片地址)
![Mona Lisa](https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1554392569440&di=978dfe9d1b6f5fc3def15e9febbac1ce&imgtype=0&src=http%3A%2F%2Fwww.lvyou168.cn%2Fupload%2F20180519%2F113713872.jpg)

图片描述一般不会显示出来,有些页面容许图片描述做为鼠标悬停在图片上的提示文本出现,图片描述的另外一个做用在于,当对服务器进行检索的时候,提供图片描述的关键字能够直接检索出该图片。 图片地址表示图片在网络上的位置(URI),若是图片存在,则直接显示图片,不然图森破

列表

  1. 吃饭
    • 早饭
    • 午餐
    • 晚饭
      • 夜宵
  2. 睡觉
  3. 打豆豆
    • 红豆
    • 黄豆
    • 绿豆

有序列表

有序列表就是带编号的列表,Markdown最基础的语法只支持这种格式的编号:

  1. 项目1
  2. 项目2
  3. 项目3
1. 项目1
2. 项目2
3. 项目3

是的!你没看错,就是这么写的!其中,若是手动编号顺序错误,有些Markdown编辑器会矫正过来(这种矫正可能不会在编辑期间完成,而是在最终显示的时候被修正),有些编辑器甚至会自动产生编号。 有些编辑器甚至支持下级的编号,以及其余的编号格式,如abc等,博客园的支持多级编号:

  1. 项目1
    1. 子项目1
      1. 孙子项目1.1
    2. 子项目2
  2. 项目2
  3. 项目3

产生次级编号的方法是对次级编号进行缩进:

1. 项目1
    1. 子项目1
        1. 孙子项目1.1
    2. 子项目2
2. 项目2
3. 项目3

无序列表

无序列表固然也就没有编号,他们用圆点做为项目符,在Markdown中可使用加号+,减号-,星号*引领一个无序项,使用哪一个符号的最终结果是同样的,一样,无序列表也支持多级列表,例如:

  • Who
    • cares
  • my
  • order
    • out
    • of
      • its
      • own
        • ORDER

写出来就是:

+ Who
    + cares
+ my
+ order
    + out
    + of
        + its
        + own
            + ORDER

数学公式($\mathrm{\LaTeX}$扩展语法)

$$ E=mc^2 $$ $$ e^{i\pi}+1=0 $$ $$ \Phi (x)=\frac{1}{\sqrt{2\pi}}\int_{-\infty}^x e^{-\frac{t^2}{2}} \mathrm{d}t $$ $$ \mathbf{E} = \begin{bmatrix} 1 & 0 & 0 \ 0 & 1 & 0 \ 0 & 0 & 1 \ \end{bmatrix} $$ $$ \mathbf{A}\vec{x} = \begin{bmatrix} a_{11} & a_{12} & a_{13} \ a_{21} & a_{22} & a_{23} \ a_{31} & a_{32} & a_{33} \ \end{bmatrix} \begin{bmatrix} x_1 \ x_2 \ x_3 \end{bmatrix}

\begin{bmatrix} b_1 \ b_2 \ b_3 \end{bmatrix} = \vec {b} \implies \begin{equation} \begin{cases} a_{11}x_1+a_{12}x_2+a_{13}x_3 &= b_1 \ a_{21}x_1+a_{22}x_2+a_{23}x_3 &= b_2 \ a_{31}x_1+a_{32}x_2+a_{33}x_3 &= b_3 \ \end{cases} \end{equation} $$

好吧,我估计错了,博客园的数学公式支持功能须要本身在设置里面打开。 这里不介绍关于如何开启该功能的方法,可自行查找其余博文。 这里也不介绍如何控制$\mathrm{\LaTeX}$文本的语法,这不属于标准Markdown语法而是$\mathrm{\LaTeX}$的语法 这里只说如何在Markdown中嵌入,相似于代码块,公式块也能够块级键入或者行内嵌入,块级嵌入的公式使用一对双美圆号$$,而行内则使用一对单美圆号$(这里只用块级的,有些系统不支持使用行内嵌入,固然,有的系统干脆不支持这个东西):

$$
E=mc^2
$$

$$
e^{i\pi}+1=0
$$

$$
\Phi (x)=\frac{1}{\sqrt{2\pi}}\int_{-\infty}^x e^{-\frac{t^2}{2}} \mathrm{d}t
$$

$$
\mathbf{E} = 
\begin{bmatrix}
    1 & 0 & 0 \\
    0 & 1 & 0 \\
    0 & 0 & 1 \\
\end{bmatrix}
$$

$$
\mathbf{A}\vec{x} =
\begin{bmatrix}
    a_{11} & a_{12} & a_{13} \\
    a_{21} & a_{22} & a_{23} \\
    a_{31} & a_{32} & a_{33} \\
\end{bmatrix}
\begin{bmatrix}
    x_1 \\ x_2 \\ x_3
\end{bmatrix}
= 
\begin{bmatrix}
    b_1 \\ b_2 \\ b_3
\end{bmatrix}
= \vec {b} \implies
\begin{equation}
    \begin{cases}
        a_{11}x_1+a_{12}x_2+a_{13}x_3 &= b_1 \\
        a_{21}x_1+a_{22}x_2+a_{23}x_3 &= b_2 \\ 
        a_{31}x_1+a_{32}x_2+a_{33}x_3 &= b_3 \\
    \end{cases}
\end{equation}
$$
相关文章
相关标签/搜索