Markdown语法说明
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。它的简单易用性使其成为一种适用于网络的书写语言。
Markdown 不是想要取代 HTML,甚至也没有要和它相近,它的语法种类很少,只对应 HTML 标记的一小部分。Markdown 的构想不是要使得 HTML 文档更容易书写。在我看来, HTML 已经很容易写了。Markdown 的理念是,能让文档更容易读、写和随意改。HTML 是一种发布的格式,Markdown 是一种书写的格式。就这样,Markdown 的格式语法只涵盖纯文本可以涵盖的范围。
- 本文大多数内容参考自 http://wowubuntu.com/markdown/#list 的文章,非常感谢来自 wowubuntu 的贡献。
- 为了便于阅读学习,本文修改了一些章节的描述与顺序。
- 本文全文都用Markdown进行编写,可见非常方便,易于发布。
如有您发现任何问题,欢迎提出。
目录
一、特性
-
简单易用
语法非常简单,只需要记住少量的标记就能够书写格式不错的文档。 -
广泛性
Markdown的使用非常广泛,因此它是一种非常通用的文档语言。 -
兼容HTML
不在 Markdown 涵盖范围之内的标签,都可以直接在文档里面用 HTML 撰写。不需要额外标注这是 HTML 或是 Markdown;只要直接加标签就可以了。
注意:
<div>、<table>、<pre>、<p>
等标签必须在前后加上空行与其他内容隔开,并且开始与结束标签不能用空格或者制表符来缩进。另外,Markdown 语法在 HTML 区段标签间是有效的。
二、语法
从标记符号的使用方式划分,可以分为:
闭合标记符: 闭合标记符需要用两个(组)相同的符号将内容包裹,形成一个闭合才能起作用,如强调 、 链接 等,一般不允许跨行。
开放标记符: 标记符只需要在开头使用,它会自动的作用于标记符后面的一行或多行内容。
特殊标记符: 一般用于引入特殊符号。
在Markdown中,绝大多数内容都用段落来进行组织。Markdown的语法里用一个空行来表示段落的结束:
第一个段落。
第二个段落。
如果需要在Markdown中对文本进行换行,只需要在前一行的最后加上两个空格,然后敲下回车即可。此效果等同于HTML中的<br/>
。
空行:只包含空白符号的行。
段落:类似于HTML中的<p>
标签达到的效果。
2.1 闭合标记符
2.2.1 强调
Markdown使用型号(*
)和下划线(_
)来作为强调符号:
*斜体*
**粗体**
***粗斜体***
注意:如果(
*
)或者(_
)两边都有空格的话,他们会被当作普通的符号。
你可以在文字之间使用强调符号。如果要在文字前后加上普通的星号,那么你需要在星号之前加上一个反斜杠。
*这段话两边的星号是可以正常显示的。*
2.1.2 代码块
如果要标记一小段行内代码,可以用反引号(`
)或双反引号(``)将他们包裹起来:
像这样可以正常显示HTML的换行符的代码`<br/>`。
行内代码在绝大多数情况下能够正常显示在HTML中,因为它会以HTML能够显示的方式进行自动转码。
如果你的代码中包含一个反引号,你可以用双反引号让其正常显示:
代码中包含单个反引号 `` `这是我需要显示的内容` ``。
代码块不允许跨段落,但允许跨行:
`
这样是可以的
`
2.1.3 链接
Markdown支持三种形式的链接语法:行内式 、 参考式 、 自动链接。
不论哪种,链接文字都用[方括号]来标记,后面紧跟用(括号)包裹起来的url链接地址。
可以在url的后面用空白字符加上 双引号 、 单引号 或 括号 包裹一个链接说明。
行内式
这是一个有说明文字的 [行内式](http://www.baidu.com "百度") 的例子。
这是一个没有说明文字的 [行内式](http://www.baidu.com) 的例子。
如果你需要链接到同一个主机的资源,可以用相对路径的形式:
这是一个引用 [相对路径](/relative) 的链接。
参考式
你可以用方括号紧跟冒号来定义一个不可见的链接标记:
[id]: http://www.baidu.com "百度"
在需要引用此链接时,在链接文字方括号的后面,用方括号接上链接的标记即可。
[百度] [id]
标记可以包含字母、数字和标点符号(甚至是空白符号),如果是字母,标记不会区分大小写。
还有一种隐式参考式链接语法,你可以省略链接标记当中的内容,Markdown会将标记认为与第一个括号中的内容相同。
[google]: http://www.google.com
这是 [google][] 的链接。
善用隐式参考式链接可以帮你节省很多工作量。
自动链接
自动链接用两个尖括号来包裹,并且要求内容符合链接地址或邮件地址的格式:
<http://www.baidu.com/>
<aquariuspj@foxmail.com>
它们会自动转换为如下形式:
<a href="http://www.baidu.com/">http://www.baidu.com/</a>
<a href="aquariuspj@foxmail.com">aquariuspj@foxmail.com</a>
事实上,Markdown会把邮件地址转化为16进制的HTML实体,以防止Email被一些技术含量较低的机器人爬取。
2.2 开放标记符
2.2.1 标题
Markdown 支持两种标题的语法,类 Setext 和类 atx 形式。
类 Atx 形式则是在行首插入 1 到 6 个 # ,对应到标题 1 到 6 阶,例如:
# 这是 H1
## 这是 H2
###### 这是 H6
你可以选择性地「闭合」类 atx 样式的标题,这纯粹只是美观用的,若是觉得这样看起来比较舒适,你就可以在行尾加上 #,而行尾的 # 数量也不用和开头一样(行首的井字符数量决定标题的阶数)。
另外的,标题也允许使用类 Setext 形式:
This is an H1
=============
This is an H2
-------------
= 表示一级标题, - 表示二级标题,任何数量的 = 和 - 都可以有效果。
2.2.2 列表
Markdown 支持有序列表和无序列表。
无序列表使用星号、加号或是减号作为列表标记:
* Red
* Green
* Blue
其中的星号可以替换为加号和减号,效果一毛一样。
有序列表则使用数字接着一个英文句点:
1. Bird
2. McHale
3. Parish
一个容易混乱的地方在于,Markdown的输出格式和你在点号前面用的数字没有任何关系。下面这段有序列表和上面这段有着一模一样的输出效果:
8. Bird
8. McHale
2. Parish
序号并不影响Markdown的顺序与输出,但我建议还是按顺序写,这样方便更清晰的查看源码。
列表项目可以包含多个段落,每个项目下的段落都必须缩进 4 个空格或是 1 个制表符:
1. This is a list item 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.
2. Suspendisse id sem consectetuer libero luctus adipiscing.
如果要在列表项目内放进引用,那 > 就需要缩进:
* A list item with a blockquote:
> This is a blockquote
> inside a list item.
如果要放代码区块的话,该区块就需要缩进两次,也就是 8 个空格或是 2 个制表符:
* 一列表项包含一个列表区块:
<代码写在这>
当然,项目列表很可能会不小心产生,像是下面这样的写法:
1986. What a great season.
换句话说,也就是在行首出现数字-句点-空白,要避免这样的状况,你可以在句点前面加上反斜杠。
1986. What a great season.
2.2.3 区块引用 Blockquotes
Markdown 标记区块引用是使用类似 email 中用 > 的引用方式。如果你还熟悉在 email 信件中的引言部分,你就知道怎么在 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.
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");
2.2.4 代码区块
和程序相关的写作或是标签语言原始码通常会有已经排版好的代码区块,通常这些区块我们并不希望它以一般段落文件的方式去排版,而是照原来的样子显示,Markdown 会用 <pre>
和 <code>
标签来把代码区块包起来。
要在 Markdown 中建立代码区块很简单,只要简单地缩进 4 个空格或是 1 个制表符就可以,例如,下面的输入:
这是一个普通段落:
这是一个代码区块。
Markdown 会转换成:
<p>这是一个普通段落:</p>
<pre><code>这是一个代码区块。
</code></pre>
一个代码区块会一直持续到没有缩进的那一行(或是文件结尾)。
在代码区块里面, & 、 < 和 > 会自动转成 HTML 实体,这样的方式让你非常容易使用 Markdown 插入范例用的 HTML 原始码,只需要复制贴上,再加上缩进就可以了,剩下的 Markdown 都会帮你处理,例如:
<div class="footer">
© 2004 Foo Corporation
</div>
会被转换为:
<pre><code><div class="footer">
&copy; 2004 Foo Corporation
</div>
</code></pre>
代码区块中,一般的 Markdown 语法不会被转换,像是星号便只是星号,这表示你可以很容易地以 Markdown 语法撰写 Markdown 语法相关的文件。
2.3 特殊标记符
2.3.1 图片
Markdown 使用一种和链接很相似的语法来标记图片,同样允许两种样式:行内式 和 参考式。
行内式
[!替代文字](/path/img.jpg "说明")
参考式
[!替代文字] [id]
[id]: /path/img.jpg "说明"
到目前为止,Markdown还没有办法指定图片的宽高。如果你非要指定,那么只能用HTML的<img>
标签。
2.3.2 分割线
你可以在一行中用三个以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西。你也可以在星号或是减号中间插入空格。下面每种写法都可以建立分隔线:
* * *
***
*****
- - -
---------------------------------------
2.3.3 反斜杠
Markdown 可以用反斜杠来插入一些在语法中有其它意义的符号:
反斜杠
` 反引号
* 星号
_ 下划线
{} 花括号
[] 方括号
() 圆括号
# 井号
+ 加号
- 减号
. 英文句点
! 惊叹号
2.3.4 版权符号
Markdown用一个很方便的办法来输出常用的版权符号 © ,只需要简单的 ©
即可。
三、感谢
本文大多数内容参考自 http://wowubuntu.com/markdown/#list 的文章,非常感谢来自 wowubuntu 的贡献。
本文为了便于阅读学习,修改了一些描述与顺序。
如有问题,欢迎提出。
[0]: #0 # <h1 id="0"> Markdown语法说明 </h1> Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。它的简单易用性使其成为一种适用于网络的书写语言。 Markdown 不是想要取代 HTML,甚至也没有要和它相近,它的语法种类很少,只对应 HTML 标记的一小部分。Markdown 的构想不是要使得 HTML 文档更容易书写。在我看来, HTML 已经很容易写了。Markdown 的理念是,能让文档更容易读、写和随意改。HTML 是一种发布的格式,Markdown 是一种书写的格式。就这样,Markdown 的格式语法只涵盖纯文本可以涵盖的范围。 * 本文大多数内容参考自 <http://wowubuntu.com/markdown/#list> 的文章,非常感谢来自 wowubuntu 的贡献。 * 为了便于阅读学习,本文修改了一些章节的描述与顺序。 * 本文全文都用Markdown进行编写,可见非常方便,易于发布。 如有您发现任何问题,欢迎提出。 ## 目录 * [一、特性](#1) * [二、语法](#2) * [2.1 闭合标记符](#2.1) * [2.1.1 强调](#2.1.1) * [2.1.2 代码块](#2.1.2) * [2.1.3 链接](#2.1.3) * [2.2 开放标记符](#2.2) * [2.2.1 标题](#2.2.1) * [2.2.2 列表](#2.2.2) * [2.2.3 区块引用](#2.2.3) * [2.2.4 代码区块](#2.2.4) * [2.3 特殊标记符](#2.3) * [2.3.1 图片](#2.3.1) * [2.3.2 分割线](#2.3.2) * [2.3.3 反斜杠](#2.3.3) * [2.3.4 版权符号](#2.3.4) * [三、感谢](#3) <h2 id="1"> 一、特性 </h2> * **简单易用** 语法非常简单,只需要记住少量的标记就能够书写格式不错的文档。 * **广泛性** Markdown的使用非常广泛,因此它是一种非常通用的文档语言。 * **兼容HTML** 不在 Markdown 涵盖范围之内的标签,都可以直接在文档里面用 HTML 撰写。不需要额外标注这是 HTML 或是 Markdown;只要直接加标签就可以了。 > **注意:**`<div>、<table>、<pre>、<p>`等标签必须在前后加上空行与其他内容隔开,并且开始与结束标签不能用空格或者制表符来缩进。另外,Markdown 语法在 HTML 区段标签间是有效的。 <h2 id="2"> 二、语法 </h2> 从标记符号的使用方式划分,可以分为: > **闭合标记符:** 闭合标记符需要用两个(组)相同的符号将内容包裹,形成一个闭合才能起作用,如**强调** 、 **链接** 等,一般不允许跨行。 > **开放标记符:** 标记符只需要在开头使用,它会自动的作用于标记符后面的一行或多行内容。 > **特殊标记符:** 一般用于引入特殊符号。 在Markdown中,绝大多数内容都用段落来进行组织。Markdown的语法里用一个空行来表示段落的结束: 第一个段落。 第二个段落。 如果需要在Markdown中对文本进行换行,只需要在前一行的最后加上两个空格,然后敲下回车即可。此效果等同于HTML中的`<br/>`。 >**空行:**只包含空白符号的行。 >**段落:**类似于HTML中的`<p>`标签达到的效果。 ### <h3 id="2.1"> 2.1 闭合标记符 </h3> #### <h4 id="2.1.1"> 2.2.1 强调 </h4> Markdown使用型号(`*`)和下划线(`_`)来作为强调符号: *斜体* **粗体** ***粗斜体*** > **注意**:如果(`*`)或者(`_`)两边都有空格的话,他们会被当作普通的符号。 你可以在文字之间使用强调符号。如果要在文字前后加上普通的星号,那么你需要在星号之前加上一个反斜杠。 *这段话两边的星号是可以正常显示的。* #### <h4 id="2.1.2"> 2.1.2 代码块 </h4> 如果要标记一小段行内代码,可以用反引号(`` ` ``)或双反引号(``)将他们包裹起来: 像这样可以正常显示HTML的换行符的代码`<br/>`。 行内代码在绝大多数情况下能够正常显示在HTML中,因为它会以HTML能够显示的方式进行自动转码。 如果你的代码中包含一个反引号,你可以用双反引号让其正常显示: 代码中包含单个反引号 `` `这是我需要显示的内容` ``。 代码块不允许跨段落,但允许跨行: ` 这样是可以的 ` #### <h4 id="2.1.3"> 2.1.3 链接 </h4> Markdown支持三种形式的链接语法:***行内式*** 、 ***参考式*** 、 ***自动链接***。 不论哪种,链接文字都用[方括号]来标记,后面紧跟用(括号)包裹起来的url链接地址。 > 可以在url的后面用空白字符加上 *双引号* 、 *单引号* 或 *括号* 包裹一个链接说明。 ##### 行内式 这是一个有说明文字的 [行内式](http://www.baidu.com "百度") 的例子。 这是一个没有说明文字的 [行内式](http://www.baidu.com) 的例子。 如果你需要链接到同一个主机的资源,可以用相对路径的形式: 这是一个引用 [相对路径](/relative) 的链接。 ##### 参考式 你可以用方括号紧跟冒号来定义一个不可见的链接标记: [id]: http://www.baidu.com "百度" 在需要引用此链接时,在链接文字方括号的后面,用方括号接上链接的标记即可。 [百度] [id] > 标记可以包含字母、数字和标点符号(甚至是空白符号),如果是字母,标记不会区分大小写。 还有一种隐式参考式链接语法,你可以省略链接标记当中的内容,Markdown会将标记认为与第一个括号中的内容相同。 [google]: http://www.google.com 这是 [google][] 的链接。 善用隐式参考式链接可以帮你节省很多工作量。 ##### 自动链接 自动链接用两个尖括号来包裹,并且要求内容符合链接地址或邮件地址的格式: <http://www.baidu.com/> <aquariuspj@foxmail.com> 它们会自动转换为如下形式: <a href="http://www.baidu.com/">http://www.baidu.com/</a> <a href="aquariuspj@foxmail.com">aquariuspj@foxmail.com</a> 事实上,Markdown会把邮件地址转化为16进制的HTML实体,以防止Email被一些技术含量较低的机器人爬取。 ### <h3 id="2.2"> 2.2 开放标记符 </h3> #### <h4 id="2.2.1"> 2.2.1 标题 </h4> Markdown 支持两种标题的语法,类 Setext 和类 atx 形式。 类 Atx 形式则是在行首插入 1 到 6 个 # ,对应到标题 1 到 6 阶,例如: # 这是 H1 ## 这是 H2 ###### 这是 H6 你可以选择性地「闭合」类 atx 样式的标题,这纯粹只是美观用的,若是觉得这样看起来比较舒适,你就可以在行尾加上 #,而行尾的 # 数量也不用和开头一样(行首的井字符数量决定标题的阶数)。 另外的,标题也允许使用类 Setext 形式: This is an H1 ============= This is an H2 ------------- = 表示一级标题, - 表示二级标题,任何数量的 = 和 - 都可以有效果。 #### <h4 id="2.2.2"> 2.2.2 列表 </h4> Markdown 支持有序列表和无序列表。 无序列表使用星号、加号或是减号作为列表标记: * Red * Green * Blue 其中的星号可以替换为加号和减号,效果一毛一样。 有序列表则使用数字接着一个英文句点: 1. Bird 2. McHale 3. Parish 一个容易混乱的地方在于,Markdown的输出格式和你在点号前面用的数字没有任何关系。下面这段有序列表和上面这段有着一模一样的输出效果: 8. Bird 8. McHale 2. Parish 序号并不影响Markdown的顺序与输出,但我建议还是按顺序写,这样方便更清晰的查看源码。 列表项目可以包含多个段落,每个项目下的段落都必须缩进 4 个空格或是 1 个制表符: 1. This is a list item 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. 2. Suspendisse id sem consectetuer libero luctus adipiscing. 如果要在列表项目内放进引用,那 > 就需要缩进: * A list item with a blockquote: > This is a blockquote > inside a list item. 如果要放代码区块的话,该区块就需要缩进两次,也就是 8 个空格或是 2 个制表符: * 一列表项包含一个列表区块: <代码写在这> 当然,项目列表很可能会不小心产生,像是下面这样的写法: 1986. What a great season. 换句话说,也就是在行首出现数字-句点-空白,要避免这样的状况,你可以在句点前面加上反斜杠。 1986. What a great season. #### <h4 id="2.2.3"> 2.2.3 区块引用 Blockquotes </h4> Markdown 标记区块引用是使用类似 email 中用 > 的引用方式。如果你还熟悉在 email 信件中的引言部分,你就知道怎么在 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. 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"); #### <h4 id="2.2.4"> 2.2.4 代码区块 </h4> 和程序相关的写作或是标签语言原始码通常会有已经排版好的代码区块,通常这些区块我们并不希望它以一般段落文件的方式去排版,而是照原来的样子显示,Markdown 会用 `<pre>` 和 `<code>` 标签来把代码区块包起来。 要在 Markdown 中建立代码区块很简单,只要简单地缩进 4 个空格或是 1 个制表符就可以,例如,下面的输入: 这是一个普通段落: 这是一个代码区块。 Markdown 会转换成: <p>这是一个普通段落:</p> <pre><code>这是一个代码区块。 </code></pre> 一个代码区块会一直持续到没有缩进的那一行(或是文件结尾)。 在代码区块里面, & 、 < 和 > 会自动转成 HTML 实体,这样的方式让你非常容易使用 Markdown 插入范例用的 HTML 原始码,只需要复制贴上,再加上缩进就可以了,剩下的 Markdown 都会帮你处理,例如: <div class="footer"> © 2004 Foo Corporation </div> 会被转换为: <pre><code><div class="footer"> &copy; 2004 Foo Corporation </div> </code></pre> 代码区块中,一般的 Markdown 语法不会被转换,像是星号便只是星号,这表示你可以很容易地以 Markdown 语法撰写 Markdown 语法相关的文件。 ### <h3 id="2.3"> 2.3 特殊标记符 </h3> #### <h4 id="2.3.1"> 2.3.1 图片 </h4> Markdown 使用一种和链接很相似的语法来标记图片,同样允许两种样式:***行内式*** 和 ***参考式***。 ##### 行内式 [!替代文字](/path/img.jpg "说明") ##### 参考式 [!替代文字] [id] [id]: /path/img.jpg "说明" 到目前为止,Markdown还没有办法指定图片的宽高。如果你非要指定,那么只能用HTML的`<img>`标签。 #### <h4 id="2.3.2"> 2.3.2 分割线 </h4> 你可以在一行中用三个以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西。你也可以在星号或是减号中间插入空格。下面每种写法都可以建立分隔线: * * * *** ***** - - - --------------------------------------- #### <h4 id="2.3.3"> 2.3.3 反斜杠 </h4> Markdown 可以用反斜杠来插入一些在语法中有其它意义的符号: 反斜杠 ` 反引号 * 星号 _ 下划线 {} 花括号 [] 方括号 () 圆括号 # 井号 + 加号 - 减号 . 英文句点 ! 惊叹号 #### <h4 id="2.3.4"> 2.3.4 版权符号 </h4> Markdown用一个很方便的办法来输出常用的版权符号 © ,只需要简单的 `©` 即可。 <h2 id="3"> 三、感谢 </h2> 本文大多数内容参考自 <http://wowubuntu.com/markdown/#list> 的文章,非常感谢来自 wowubuntu 的贡献。 本文为了便于阅读学习,修改了一些描述与顺序。 如有问题,欢迎提出。