Markdown 语法详解

2017-09-25 11:10:38 +08:00
 cdoco

V2EX 的 Markdown 支持不完善, 可以查看 github 地址 https://github.com/cdoco/markdown-syntax

什么是 Markdown ?

Markdown 是一种可以使用普通文本编辑器编写的标记语言, 通过简单的标记语法, 它可以使普通文本内容具有一定的格式。

目录

分级标题

第一种写法:

这是一个一级标题
============================

这是一个二级标题
--------------------------------------------------

这是一个一级标题

这是一个二级标题


第二种写法:

# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题

一级标题

二级标题

三级标题

四级标题

五级标题
六级标题

分隔线

你可以在一行中用三个以上的星号、减号、底线来建立一个分隔线, 行内不能有其他东西。你也可以在星号或是减号中间插入空格。下面每种写法都可以建立分隔线:

* * *

***

*****

- - -

---------------------------------------


超链接

Markdown 支持两种形式的链接语法: 行内式和参考式两种形式, 行内式一般使用较多。

行内式

[]里写链接文字,()里写链接地址, ()中的 "" 中可以为链接指定 title 属性, title 属性可加可不加。title 属性的效果是鼠标悬停在链接上会出现指定的 title 文字。[链接文字](链接地址 "链接标题") 这样的形式。链接地址与链接标题前有一个空格。

[Markdown Syntax]( https://github.com/cdoco/markdown-syntax)
[Markdown Syntax]( https://github.com/cdoco/markdown-syntax "Markdown Syntax")

Markdown Syntax

Markdown Syntax

参考式

参考式超链接一般用在学术论文上面, 或者另一种情况, 如果某一个链接在文章中多处使用, 那么使用引用的方式创建链接将非常好, 它可以让你对链接进行统一的管理。

参考式链接分为两部分, 文中的写法 [链接文字][链接标记],在文本的任意位置添加 [链接标记]:链接地址 "链接标题", 链接地址与链接标题前有一个空格。

全球最大的搜索引擎网站是[Google][1]。

[1]:http://www.google.com "Google"

全球最大的搜索引擎网站是 Google

自动链接

Markdown 支持以比较简短的自动链接形式来处理网址和电子邮件信箱, 只要是用 <> 包起来,Markdown 就会自动把它转成链接。一般网址的链接文字就和链接地址一样, 例如:

<https://google.com/>

<ocdoco@gmail.com>

https://google.com/

ocdoco@gmail.com

区块引用

区块引用需要在被引用的文本前加上 > 符号。

> 这是一个区块引用实例,

> Markdown.

这是一个区块引用实例,

Markdown.

Markdown 也允许你偷懒只在整个段落的第一行最前面加上 > :

> 平生不会相思,
才会相思,
便害相思。

> 空一缕余香在此,
盼千金游子何之。

平生不会相思, 才会相思, 便害相思。

空一缕余香在此, 盼千金游子何之。

引用的多层嵌套

区块引用可以嵌套(例如:引用内的引用), 只要根据层次加上不同数量的 > :

>>> 锄禾日当午, 汗滴禾下土。 - 李绅

>> 山有木兮木有枝, 心悦君兮君不知。 - 越人歌

> 去年今日此门中, 人面桃花相映红。 - 崔护

锄禾日当午, 汗滴禾下土。 - 李绅

山有木兮木有枝, 心悦君兮君不知。 - 越人歌

去年今日此门中, 人面桃花相映红。 - 题都城南庄

引用其它要素

引用的区块内也可以使用其他的 Markdown 语法,包括标题、列表、代码区块等:

> - 入我相思门, 知我相思苦。
>
> - 长相思兮长相忆, 短相思兮无穷极。
>
> - 给出一些例子代码:
> ```markdown
>   return debug_backtrace();
> ```
  • 入我相思门, 知我相思苦。

  • 长相思兮长相忆, 短相思兮无穷极。

  • 给出一些例子代码:

  return debug_backtrace();

锚点

网页中, 锚点其实就是页内超链接, 也就是链接本文档内部的某些元素, 实现当前页面中的跳转。比如我这里写下一个锚点, 点击回到目录, 就能跳转到目录。 在目录中点击这一节, 就能跳过来。还有下一节的注脚。这些根本上都是用锚点来实现的。

**[⬆ top](#什么是-markdown-)**

⬆ top

强调

Markdown 使用星号*和底线_作为标记强调字词的符号。

斜体

*花自飘零水自流*

花自飘零水自流

粗体

**花自飘零水自流**

花自飘零水自流

删除线

~~花自飘零水自流~~

~~花自飘零水自流~~

列表

使用 *,+,- 表示无序列表。

无序列表

- 白头吟
- 击鼓
- 断句
  • 白头吟

  • 击鼓

  • 断句

有序列表

有序列表则使用数字接着一个英文句点。

1. 白头吟
2. 击鼓
3. 断句
  1. 白头吟

  2. 击鼓

  3. 断句

包含引用的列表

如果要在列表项目内放进引用,那 > 就需要缩进:

* 菩提偈:

  > 菩提本无树,明镜亦非台。
  > 本来无一物,何处惹尘埃!

插入图片

图片的创建方式与超链接相似, 而且和超链接一样也有两种写法, 行内式和参考式写法。

语法中图片 Alt 的意思是如果图片因为某些原因不能显示, 就用定义的图片 Alt 文字来代替图片。 图片 Title 则和链接中的 Title 一样, 表示鼠标悬停与图片上时出现的文字。Alt 和 Title 都不是必须的, 可以省略, 但建议写上。

图片行内式

![图片 Alt](图片地址 "图片 Title")

![哆啦 A 梦]( https://cdoco.com/images/duolaameng.jpeg "哆啦 A 梦")

图片参考式

在文档要插入图片的地方写 ![图片 Alt][标记]

在文档的最后写上 [标记]:图片地址 "Title"

![哆啦 A 梦][duolaameng]

[duolaameng]:https://cdoco.com/images/duolaameng.jpeg "哆啦 A 梦"

表格

  1. 不管是哪种方式, 第一行为表头, 第二行分隔表头和主体部分, 第三行开始每一行为一个表格行。
  2. 列于列之间用管道符|隔开。原生方式的表格每一行的两边也要有管道符。
  3. 第二行还可以为不同的列指定对齐方向。默认为左对齐, 在-右边加上:就右对齐。

简单方式:

诗名|作者|朝代
-|-|-
白头吟|卓文君|两汉
锦瑟|李商隐|唐代
登科后|孟郊|唐代

诗名|作者|朝代 -|-|- 白头吟|卓文君|两汉 锦瑟|李商隐|唐代 登科后|孟郊|唐代

原生方式:

|诗名|作者|朝代|
|-|-|-|
|白头吟|卓文君|两汉|
|锦瑟|李商隐|唐代|
|登科后|孟郊|唐代|

|诗名|作者|朝代| |-|-|-| |白头吟|卓文君|两汉| |锦瑟|李商隐|唐代| |登科后|孟郊|唐代|

为表格第二列指定方向:

诗名|名句
-|-:
梦微之|君埋泉下泥销骨。
上邪|上邪,我欲与君相知,长命无绝衰。

诗名|名句 -|-: 梦微之|君埋泉下泥销骨。 上邪|上邪,我欲与君相知,长命无绝衰。

代码

对于程序员来说这个功能是必不可少的, 插入程序代码的方式有两种, 一种是利用缩进(Tab), 另一种是利用 "`" 符号(一般在 ESC 键下方)包裹代码。

代码行内式

PHP 打印堆栈信息 `debug_backtrace()`。

PHP 打印堆栈信息 debug_backtrace()

缩进式多行代码

缩进 4 个空格或是 1 个制表符。

一个代码区块会一直持续到没有缩进的那一行(或是文件结尾)。

    $closure = function () use($name) {
      return $name;
    }
$closure = function () use($name) {
  return $name;
}

用六个 ` 包裹多行代码

```php
$closure = function () use($name) {
  return $name;
}
` ``
$closure = function () use($name) {
  return $name;
}

HTML 原始码

在代码区块里面, &<> 会自动转成 HTML 实体, 这样的方式让你非常容易使用 Markdown 插入范例用的 HTML 原始码, 只需要复制贴上, 剩下的 Markdown 都会帮你处理,例如:

<table>
    <tr>
        <th rowspan="2">值班人员</th>
        <th>星期一</th>
        <th>星期二</th>
        <th>星期三</th>
    </tr>
    <tr>
        <td>李强</td>
        <td>张明</td>
        <td>王平</td>
    </tr>
</table>
值班人员 星期一 星期二 星期三
李强 张明 王平

内容目录

在段落中填写 [TOC] 以显示全文内容的目录结构。

注脚

在需要添加注脚的文字后加上脚注名字[^注脚名字], 称为加注。 然后在文本的任意位置(一般在最后)添加脚注, 脚注前必须有对应的脚注名字。

使用 Markdown[^1]可以效率的书写文档, 直接转换成 HTML[^2]。

[^1]: Markdown 是一种纯文本标记语言

[^2]: HyperText Markup Language 超文本标记语言

PS: github 不支持注脚

LaTeX 公式

$ 表示行内公式

质能守恒方程可以用一个很简洁的方程式 $E=mc^2$ 来表达。

质能守恒方程可以用一个很简洁的方程式 来表达。

$$ 表示整行公式

$$\sum_{i=1}^n a_i=0$$
$$f(x_1,x_x,\ldots,x_n) = x_1^2 + x_2^2 + \cdots + x_n^2 $$
$$\sum^{j-1}_{k=0}{\widehat{\gamma}_{kj} z_k}$$

PS: github 不支持 LaTeX 公式

流程图

st=>start: Start:>https://www.markdown-syntax.com
io=>inputoutput: verification
op=>operation: Your Operation
cond=>condition: Yes or No?
sub=>subroutine: Your Subroutine
e=>end
st->io->op->cond
cond(yes)->e
cond(no)->sub->io

PS: github 不支持流程图

时序图

Alice->Bob: Hello Bob, how are you ?
Note right of Bob: Bob thinks
Bob-->Alice: I am good thanks!

PS: github 不支持时序图

待办事宜列表

使用带有 [ ][x] (未完成或已完成)项的列表语法撰写一个待办事宜列表, 例如:

- [ ]早起跑步
- [x]看书

⬆ top

8482 次点击
所在节点    Markdown
24 条回复
flaneurse
2017-09-25 12:04:39 +08:00
无聊么?
AltairT
2017-09-25 12:12:03 +08:00
这个也来水一贴? v 站里不会 md 的人很少吧……
sunjourney
2017-09-25 12:28:44 +08:00
@AltairT #2 默默看一眼右下角收藏数
hundan
2017-09-25 12:38:39 +08:00
本来是想吐槽的,不过进来一看感觉楼主发的还是蛮全面的,公式流程图什么的都有
Williamwang
2017-09-25 13:30:34 +08:00
@sunjourney 经此评论提醒,默默点了收藏哈哈哈
bbvps
2017-09-25 13:31:54 +08:00
Alice->Bob: Hello Bob, how are you ?
Note right of Bob: Bob thinks
Bob-->Alice: I am good thanks!
bp0
2017-09-25 13:50:33 +08:00
默默收藏就好
xfspace
2017-09-25 14:01:29 +08:00
不是所有编辑器都支持所有语法。。。。。。。
delogn
2017-09-25 16:09:24 +08:00
这个表格语法不对吧 原生的不应该是 |---|---|---|
soratadori
2017-09-25 16:22:34 +08:00
markdown 的设计有很多缺陷,我干脆自己写了个新的标记语言。
ctsed
2017-09-25 16:24:52 +08:00
井号后面要有空格吗,有的编辑器能正常显示,有的就不行
Bigears
2017-09-25 16:30:21 +08:00
zeroten
2017-09-25 16:48:30 +08:00
这不是 markdown 语法,而是某种方言,不要误导人。。。正宗语法: https://daringfireball.net/projects/markdown/syntax
zeroten
2017-09-25 16:49:15 +08:00
@delogn 原生 markdown 哪里来的表格????
tamlok
2017-09-25 16:54:27 +08:00
@zeroten md 语法没有正不正宗,当初只是一个实现给出的,不像其他语言,是通过标准给出。后面才慢慢有一个 common markdown,但也不能说谁正宗或不正宗,只能说基本语法和扩展语法?
kingcos
2017-09-25 16:58:01 +08:00
表格不太对。。不过 V2 不是有预览?难道渲染效果跟直接发出来不一样吗= =
还是直接在本地 Markdown 写好就复制到这里来了= =
rogwan
2017-09-25 17:05:05 +08:00
markdown 除了标准语法之外,其他的衍生语法都是累赘。

制表,科学公式这些用专门的工具处理更好。理论上讲,只要你不嫌烦,可以拿 md 来绘图不是?别都让 md 处理,一来复杂语法用的少,记不住;二是根本没有通用性,你一分享就乱作一团,还不是要转成图片或 PDF 分享?
lybtongji
2017-09-25 17:25:09 +08:00
markdown 感觉太杂,不敢正式用
rogwan
2017-09-25 18:57:29 +08:00
@lybtongji 楼主的这篇文章,是来给 markdown 拉仇恨的😄

乍一看,都快赶上一门 shell 语言啦 (●—●) 实际原生的 md 语法很克制的。
AltairT
2017-09-26 00:36:03 +08:00
@sunjourney 总体来讲不会的还是少,在说对有编程基础的人来说上手很快.我现在也尝试用 MD 做笔记,记完就推到 Hexo 搭建的 github 博客上.图片是新建个文件夹拖进去就行.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/393386

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX