MarkDown 语法学习笔记

MarkDown,一种让写作者专注于编写的标记式纯文本语言,体验禅意一般的美!


概述

HTML兼容

  1. 在Markdown涵盖范围之外的标签,都可以直接在文件里面用HTML撰写.

  2. 区块元素──比如<div>、<table>、<pre>、<p>等标签,必需在前后加上空行,以利与内容区隔。而且这些(元素)的开始与结尾标签,不可以用tab或是空白来缩排.

    在Markdown文件里加上一段HTML表格:

     This is a regular paragraph.
    
     <table>
         <tr>
             <td>Foo</td>
         </tr>
     </table>
    
     This is another regular paragraph.
    
  3. Markdown语法在HTML区块卷标中将不会被进行处理。例如,你无法在HTML区块内使用Markdown形式的*强调*

  4. HTML的区段标签<span>、<cite>、<del>则不受限制,可以在Markdown的段落、清单或是标题里任意使用。如果比较喜欢HTML的<a><img>标签,可以直接使用这些卷标,在区段卷标的范围内,Markdown的语法是有效的。


特殊字符处理

在HTML文件中,有两个字符需要特殊处理:"<" 和 "&"。"<"符号用于起始卷标,"&"符号则用于标记HTML实体,如果你只是想要使用这些符号,你必须要使用实体的形式,像是&lt;&amp;

"&"符号 其实很容易让写作网络文件的人感到困扰,如果你要打「AT&T」 ,你必须要写成「AT&amp;T」,还得转换网址内的&符号,如果你要链接到:

http://images.google.com/images?num=30&q=larry+bird

你必须要把网址转成:

http://images.google.com/images?num=30&amp;q=larry+bird

才能放到链接卷标的href属性里。在HTML实体中使用&符号的话,它不会被转换,而在其他情形下,它则会被转换成&amp;

如果要在文件中插入一个著作权 © 的符号,可以这样写:&copy;

MarkDown可能会将 AT&T 转换为 AT&amp;T,也可能会将 4 < 5 转换为 4 &lt; 5.

需要注意的是,code范围内,不论是行内还是区块,<和&两个符号都一定会被转换成HTML实体,这项特性让你可以很容易地用Markdown写HTML code。


区块元素

段落和换行

一个段落是由一个以上相连接的行句组成,而一个以上的空行则会切分出不同的段落,
一个以上相连接的行句组成这句话其实暗示了Markdown允许段落内的强迫断行.

如果你真的想要插入<br />标签的话,在行尾加上两个以上的空白,然后按enter.


标题

Markdown支持两种标题的语法, Setextatx 形式。

Setext形式是用底线的形式,利用=(最高阶标题)和-(第二阶标题),例如:

This is an H1
=============
This is an H2
-------------

任何数量的=和-都可以有效果。

Atx形式则是在行首插入1到6个 # ,各对应到标题1到6阶,例如:

# This is an H1
## This is an H2
###### This is an H6

Atx样式的标题,可以在行尾加上#,而行尾的#数量也不用和开头一样(行首的#数量决定标题的阶数)


区块引言

Markdown使用email形式的区块引言,在每行的最前面加上>:

> 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 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.

区块引言可以有阶层(例如:引言内的引言),只要根据层数加上不同数量的>:

  • 代码:
> This is the first level of quoting.
>
> > This is nested blockquote.
> > > This is a blockquote.
  • 效果:

This is the first level of quoting.

This is nested blockquote.

This is a blockquote.

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

代码:

> ## This is a header.
>
> 1.   This is the first list item.
> 2.   This is the second list item.
>
> Here's some example code:
>
>     return shell_exec("echo $input | $markdown_script");

列表清单

Markdown支持有序列表和无序列表

无序清单使用星号、加号或是减号作为列表标记:

"* Red" 等同于 "+ Red", 也等同于 "- Red"

有序列表则使用任意整数数字(无需按顺序)接着一个英文句点:1. Bird

如果你使用懒惰的写法,建议第一个项目最好还是从「1.」开始,因为Markdown未来可能会支持有序列表的start属性。

列表项目标记通常是放在最左边,但是其实也可以缩排,最多三个空白,项目标记后面则一定要接着至少一个空白或tab。

如果列表项目间用空行分开, Markdown会把项目的内容在输出时用<p>标签包起来,如

*   Bird

*   Magic

会被转换为:

<ul>
<li><p>Bird</p></li>
<li><p>Magic</p></li>
</ul>

列表项目可以包含多个段落,每个项目下的段落都必须缩排4个空白或是一个tab,清单中不同的段落用空行隔开,同一段落前面可以缩进也可以不缩进,如:

*   This is a list item with two paragraphs.

    This is the second paragraph in the list item. You're
only required to indent the first line. Lorem ipsum dolor
sit amet, consectetuer adipiscing elit.

*   Another item in the same list.

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

*   A list item with a blockquote:

    > This is a blockquote
    > inside a list item.

如果要放程序代码区块的话,该区块就需要缩排两次,也就是8个空白或是两个tab:

*   A list item with a code block:

        <code goes here>

行首出现数字-句点-空白,要避免转化为清单的状况,可以在句点前面加上反斜杠。

1986\. What a great season.

程序代码区块

要在Markdown中建立程序代码区块很简单,只要简单地缩排4个空白或是1个tab就可以,Markdown会用<pre><code>标签来把程序代码区块包起来,例如,下面的输入:

This is a normal paragraph:

    This is a code block.

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

<div class="footer">
    &copy; 2004 Foo Corporation
</div>

在程序代码区块里面,&、<和>会自动转成HTML实体,这样的方式让你非常容易使用Markdown插入范例用的HTML原始码,只需要复制贴上,再加上缩排就可以了.

程序代码区块中,一般的Markdown语法不会被转换,像是星号便只是星号.


分隔线

可以在一行中用三个或以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西。你也可以在星号中间插入空白,行的上一行不能有内容,否则可能会变成标题。

* * *

***

*****

- - -

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

区段元素

链接

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"

连结定义的形式为:

  • 方括号,里面输入链接的辨识用卷标(链接辨识卷标可以有字母、数字、空白和标点符号,但是并不区分大小写)
  • 接着一个冒号
  • 接着一个以上的空白或tab
  • 接着连结的网址
  • 选择性地接着title内容,可以用单引号、双引号或是括号包着(已知的问题是Markdown.pl 1.0.1会忽略单引号包起来的连结title)

连结网址也可以用方括号包起来:

[id]: <http://example.com/>  "Optional Title Here"

你也可以把title属性放到下一行,也可以加一些缩排,网址太长的话,这样会比较好看:

[id]: http://example.com/longish/path/to/resource/here
    "Optional Title Here"

默认的链接卷标功能让你可以省略指定链接标签,这种情形下,链接卷标和链接文字会视为相同,要用默认链接卷标只要在链接文字后面加上一个空的方括号:

[Google][]

然后定义连结内容:

[Google]: http://google.com/

由于链接文字可能包含空白,所以这种简化的标签内也可以包含多个文字:

Visit [Daring Fireball][] for more information.

然后接着定义连结:

[Daring Fireball]: http://daringfireball.net/

连结的定义可以放在文件中的任何一个地方,可以直接放在连结出现段落的后面,也可以把它放在文件最后面,就像是批注一样。

参考式的连结其实重点不在于它比较好写,而是它比较好读,使用Markdown的参考式连结,可以让文件更像是浏览器最后产生的结果,你就可以增加连结而不让文章的阅读感觉被打断。


强调

Markdown使用星号(*)和底线(_)作为标记强调字词的符号,被*_包围的字词会被转成用<em>标签包围,用两个*_包起来的话,则会被转成<strong>,你用什么符号开启卷标,就要用什么符号结束。

但是如果你的 * 和 _ 两边都有空白的话,它们就只会被当成普通的符号。

如果要在文字前后直接插入普通的星号或底线,你可以在它前面加上反斜杠

\*this text is surrounded by literal asterisks\*

程序代码

如果要标记一小段行内程序代码,你可以用反引号把它包起来(`),例如:

Use the `printf()` function.

如果要在程序代码区段内插入反引号,你可以用多个反引号来开启和结束程序代码区段:

``There is a literal backtick (`) here.``

程序代码区段的前端和后端端都可以放入一个空白.

在程序代码区段内,"&"和"<" ">"都会被转成HTML实体,这样会比较容易插入HTML原始码,Markdown会把下面这段:

Please don't use any `<blink>` tags.

转为:

<p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>

图片

Markdown使用一种和链接很相似的语法来标记图片,同样也允许两种样式:行内和参考

行内图片的语法看起来像是:

![Alt text](/path/to/img.jpg)

![Alt text](/path/to/img.jpg "Optional title")

详细叙述如下:

  • 一个惊叹号!
  • 接着一个方括号,里面放上图片的替换文字
  • 接着一个普通括号,里面放上图片的网址,最后还可以用引号包住并加上选择性的'title'文字。

参考式的图片语法则长得像这样:

![Alt text][id]

「id」是图片参考的名称,图片参考的定义方式则和连结参考一样:

[id]: url/to/image  "Optional title attribute"

到目前为止, Markdown还没有办法指定图片的宽高,如果你需要的话,你可以使用普通的标签。


其他

自动链接

Markdown支持比较简短的自动连结形式来处理网址和电子邮件信箱,只要是用方括号包起来,Markdown就会自动把它转成链接,链接的文字就和链接地址一样.

<http://example.com/>

邮件连结也很类似,只是Markdown会先做一个编码转换的过程,把文字字符转成16进位码的HTML实体.

<address@example.com>

MD转义字符

Markdown可以利用反斜杠来插入一些在语法中有其他意义的符号,例如:如果你想要用星号加在文字旁边的方式来做出强调效果(但不用<em>标签),你可以在星号的前面加上反斜杠:

\*literal asterisks\*

Markdown支持在下面这些符号前面加上反斜杠来帮助插入普通的符号:

\   反斜杠
`   反引号
*   星号
_   底线
{}  大括号
[]  方括号
()  括号
#   井字号
+   加号
-   减号
.   英文句点
!   惊叹号

date: 2015-04-18

tags: Markdown; 语法; code; 文本; 编辑;

posted @ 2020-04-15 19:04  MoonYear530  阅读(88)  评论(0编辑  收藏  举报