1 语法
1.1 段落和换行
- 段落的前后必须是空行:空行是指行内什么都没有,或者只有空白符;
- Markdown中多数区块都需要在两个空行之间;
- 可以在引用中使用任何 Markdown 的语法。
第一段的第一行
第一段的第二行
第二段的第一行
第二段的第二行
显示效果:
第一段的第一行
第一段的第二行
第二段的第一行
第二段的第二行
1.2 标题
- Setext 形式(上面必须空白一行)
- atx 形式:可以用对称的 # 包括文本(也可以只在左边使用 #)
= 和 - 的数量是没有限制的。通常的做法是使其和标题文本的长度相同,这样看起来比较舒服。或者可以用四个 - 或者 =。
Setext形式
H1
====
h2
----
atx 形式:
使用#包括文本:
#### h4 ####
##### h5 #####
只是在左边使用#:
#### h4
##### h5
显示效果:
Setext形式
H1
h2
atx 形式:
使用#包括文本:
h4
h5
只是在左边使用#:
h4
h5
1.3 引用
- 单行引用内容:直接在引用内容之前添加’<’;
- 多行引用内容:在每一行或者只在首行左侧添加 ‘<‘ 就可以,但是如果中间有空行且空行左边没有‘<‘,则会退出引用模式。
- 嵌套引用:可以通过多个’>‘ 表示嵌套。
> 单行引用内容
> 多行引用
> 多行引用
> 多行引用
>
> 即使空行前面也要有'<‘
省略了也被显示为引用内容
> 继续是引用内容
也是引用内容
不是引用内容了
> 这是嵌套引用
>> 又是一个引用
>>> 还是一个引用
显示效果:
单行引用内容
多行应用
多行应用
多行引用即使空行前面也要有’<‘
省略了也被显示为引用内容
继续是引用内容
也是引用内容
不是引用内容了
这是嵌套引用
又是一个引用
还是一个引用
注:在引用中是可以使用任何其他的 Markdown 语法。
1.4 列表
- 无需列表:可以用’*’,’+’,’-'标记;
- 有序列表:以数字和 ‘.'作为开始(数字的序列不影响列表序列,推荐按照自然顺序编写)。
- 嵌套的列表:无论哪一种列表都可以互相嵌套;
1. 第一层
+ 1-1
+ 1-2
2. 无序列表和有序列表可以随意相互嵌套
1. 2-1
2. 2-2
1. 有序列表1.1
2. 有序列表1.2
- 无序列表1.2.1
- 无序列表1.2.2
5. 有序列表1.3
+ 无序列表1.3.1
- 无序列表
- 无序列表
1. 有序列表
2. 有序列表
显示效果:
- 第一层
- 1-1
- 1-2
-
无序列表和有序列表可以随意相互嵌套
-
2-1
-
2-2
-
有序列表1.1
-
有序列表1.2
- 无序列表1.2.1
- 无序列表1.2.2
- 有序列表1.3
- 无序列表1.3.1
- 无序列表
- 无序列表
- 有序列表
- 有序列表
1.5 代码
- 代码块: 可以使用‘ ···’来插入代码块;
- 行内代码:也可以通过 ‘··’ 来插入行内代码;
代码块:
```
代码块
```
行内代码:
``这是行内代码块``
显示效果:
代码块
代码块
代码块
行内代码:
这是行内代码块
1.6 分隔线
可以在一行中使用三个或更多的 *、- 或 _ 来添加分隔线(每个符号之间可以用空白符,但是不能有其他字符)
紧密相连:
****
----
___
有空白符:
****
----
____
显示效果:
紧密相连:
有空白符:
1.7 超链接
- 行内式:也称为普通链接;
- 参考式:相当于行内式拆分成两部分,并通过一个 标识符来连接两部分(尽量保持文章结果的简单,也方便统一管理 URL)。
- 自动连接
行内式:
普通链接:[链接文字](链接地址)
指向本地文件的链接:[icon.png](http://www.google.com/)
包含 title 的链接:
[Google](http://www.google.com/ "Google")
参考式:
1) 首先定义链接(第二个方括号内为链接独有的 识别符,可以是字母、数字、空白或标点符号。识别符是 不区分大小写 的):
[Google][link]
2) 定义链接内容(其格式为:[识别符]: URL 'title'):
[link]: http://www.google.com/ "Google"
3) 也可以省略 识别符,使用链接文本作为 识别符:
[Google][]
[Google]: http://www.google.com/ "Google"
自动链接:
使用<>包含的 URL 或邮箱地址会被自动转移为超链接(该方式适合行内较短的链接,会使用 URL 作为链接文字。邮箱地址会自动编码,以逃避抓取机器人):
<http://www.google.com/>
<123@email.com>
显示效果:
行内式:
普通链接:链接文字
指向本地文件的链接:icon.png
包含 title 的链接:
Google
参考式:
- 首先定义链接(第二个方括号内为链接独有的 识别符,可以是字母、数字、空白或标点符号。识别符是 不区分大小写 的):
[Google][link] - 定义链接内容(其格式为:[识别符]: URL ‘title’):
[link]: http://www.google.com/ “Google” - 也可以省略 识别符,使用链接文本作为 识别符:
[Google][]
[Google]: http://www.google.com/ “Google”
自动链接:
使用<>包含的 URL 或邮箱地址会被自动转移为超链接(该方式适合行内较短的链接,会使用 URL 作为链接文字。邮箱地址会自动编码,以逃避抓取机器人):
http://www.google.com/
8.1 图片
行内式:在超链接之前添加一个‘!'就可以(方括号中的为图片的替代文本,括号中的 'title’部分和链接一样,是可选的)。
参考式:通过使用变量定义图片路径。
指定图片的显示大小:只能通过直接插入 <img/>
标签来指定相关属性:
行内式:
![GitHub](https://i-blog.csdnimg.cn/blog_migrate/25f5f27cc7d5e51d074b9936dae2d675.jpeg "GitHub,Social Coding")
参考式:
![GitHub][github]
[github]: https://i-blog.csdnimg.cn/blog_migrate/25f5f27cc7d5e51d074b9936dae2d675.jpeg "GitHub,Social Coding"
指定图片的显示大小:
<img src="https://i-blog.csdnimg.cn/blog_migrate/25f5f27cc7d5e51d074b9936dae2d675.jpeg" alt="GitHub" title="GitHub,Social Coding" width="50" height="50" />
显示效果如下:
行内式:
参考式:
![GitHub][github]
[github]: https://i-blog.csdnimg.cn/blog_migrate/25f5f27cc7d5e51d074b9936dae2d675.jpeg “GitHub,Social Coding”
指定图片的显示大小:
1.9 强调
- 使用 ‘**’ 或 ‘__’ 包括的文本会被转换为
<em></em>
,通常表现为斜体: - 使用 ‘** **’ 或 '__ __ ’ 包括的文本会被转换为
<strong></strong>
,通常表现为加粗; - 用来包括文本的 * 或 _内侧不能有空白,否则
*
和_
将不会被转换(不同的实现会有不同的表现): - 如果需要在文本中显示成对的
*
或_
,可以在符号前加入\
即可: *
、_
和__
都必须成对使用。
1. 斜体:这是一段 *演示* 文本,这也是一段 _演示_ 文本
2. 粗体:这是 **粗体** 显示,这也是一段 __演示__ 文本
3. 加空格:这是一段 * 演示 *文本,这也是一段 _ 演示 _ 文本
4. 想要显示``*``: 这是一段\*演示\*文本,这也是一段 \_演示\_ 文本
- 斜体:这是一段 演示 文本,这也是一段 演示 文本
- 粗体:这是 粗体 显示,这也是一段 演示 文本
- 加空格:这是一段 * 演示 *文本,这也是一段 _ 演示 _ 文本
- 想要显示
*
: 这是一段*演示*文本,这也是一段 _演示_ 文本
注:可以在* 或_的外侧加空格,内侧不行
1.10 字符转义
反斜线()用于插入在 Markdown 语法中有特殊作用的字符。
这些字符包括 \
、`
、*
、_
、{}
、[]
、()
、#
、+
、-
、.
、!
。
2 扩展语法
2.1 删除线
- 符号内部不能直接接空白符.
~~删 除 线~~
~~删除线~~ 在这里
显示效果:
删 除 线
删除线 在这里
2.2 代码块和语法高亮
- 代码块:通过使用 ``````来包含多行代码, ```要独占一行。
- 代码高亮:在第一组 ```之后添加代码的语言,如’javascipt’或’js’,即可将代码标记为 JavaScript。
注
:常用的代码语言有:
名称 | 关键字 |
---|---|
C# | c-sharp , csharp |
CSS | css |
SASS&SCSS | sass , scss |
Erlang | erl , erlang |
Java | java |
JavaScript | js , jscript , javascript |
PHP | php |
Shell | bash , shell |
Python | py , python |
Ruby | ruby , rails , rb |
Scala | scala |
SQL | sql |
VisualBasic | vb , vbnet |
XML | xml , xhtml |
Swift | swift |
GO | go , golang |
代码示例;
\
这是一个代码块
\``` \```html这是一个html代码块
\```
显示效果:
<p>这是一个代码块</p>
<p>这是一个html代码块</p>
- c# 语言:csharp/c-sharp
namespace TypeConversionApplication
{
class ExplicitConversion
{
static void Main(string[] args)
{
double d = 5673.74;
int i;
// 强制转换 double 为 int
i = (int)d;
Console.WriteLine(i);
Console.ReadKey();
}
}
}
- CSS: css
.a{
color:red;
}
- SASS&SCSS: sass/scss
.a{
border:1px red solid;
.b{
colr:blue;
}
}
- Erlang: erl/erlang
%% This module is in file tut5.erl
-module(tut5).
-export([format_temps/1]).
%% Only this function is exported
format_temps([])-> % No output for an empty list
ok;
format_temps([City | Rest]) ->
print_temp(convert_to_celsius(City)),
format_temps(Rest).
convert_to_celsius({Name, {c, Temp}}) -> % No conversion needed
{Name, {c, Temp}};
convert_to_celsius({Name, {f, Temp}}) -> % Do the conversion
{Name, {c, (Temp - 32) * 5 / 9}}.
print_temp({Name, {c, Temp}}) ->
io:format("~-15w ~w c~n", [Name, Temp]).
- Java: java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
- Javascript: js/jscript/javascript
for(let n = 1;n<10;n++){
console.log(n);
}
- PHP: php
<?php
echo "Hello World!";
?>
- shell 语言:bash/shell
echo "Hello World !"
- Python: py/python
flag = False
name = 'luren'
if name == 'python': # 判断变量是否为 python
flag = True # 条件成立时设置标志为真
print 'welcome boss' # 并输出欢迎信息
else:
print name # 条件不成立时输出变量名称
- Ruby: ruby/rails/rb
#!/usr/bin/ruby -w
puts "你好,世界!";
- Scala: scala
object HelloWorld {
def main(args: Array[String]): Unit = {
println("Hello, world!")
}
}
- SQL: sql
SELECT * FROM Websites;
- VisualBasic: vb/vbnet
Private Sub DoProcessing()
TraceMessage("Something happened.")
End Sub
Public Sub TraceMessage(message As String,
<System.Runtime.CompilerServices.CallerMemberName> Optional memberName As String = Nothing,
<System.Runtime.CompilerServices.CallerFilePath> Optional sourcefilePath As String = Nothing,
<System.Runtime.CompilerServices.CallerLineNumber()> Optional sourceLineNumber As Integer = 0)
System.Diagnostics.Trace.WriteLine("message: " & message)
System.Diagnostics.Trace.WriteLine("member name: " & memberName)
System.Diagnostics.Trace.WriteLine("source file path: " & sourcefilePath)
System.Diagnostics.Trace.WriteLine("source line number: " & sourceLineNumber)
End Sub
- XML: xml/ xhtml
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
- Swift:swift
var myString = "Hello, World!"
print(myString)
- GO: go/golang
package main
import "fmt"
func main() {
/* 这是我的第一个简单的程序 */
fmt.Println("Hello, World!")
}
2.3 表格
- 基础用法:使用
|
来分隔不同的单元格,使用-
来分隔表头和其他行: - 对齐:在表头下方的分隔线标记加入
:
,即可标记标记下方单元格内容的对齐方式::---
表示左对齐;:--:
表示居中对齐;---
表示右对齐。
- 插入其他内容:表格中是可以插入 Markdown 中的行内标记的。
name | age
---- | ----
Mike | 12
Ann | 10
| left | center | right |
| :--- | :---: | ---: |
| aaa | bbb | ccc |
| a | b | c |
| name | age | link |
|----|----|----|
| _Ann_ | 1 | [text1](https://www.baidu.com) |
| __Mike__| 2 | [text2](https://www.baidu.com/)|
显示效果:
name | age |
---|---|
Mike | 12 |
Ann | 10 |
left | center | right |
---|---|---|
aaa | bbb | ccc |
a | b | c |
name | age | link |
---|---|---|
Ann | 1 | text1 |
Mike | 2 | text2 |
2.4 任务列表(带复选框)
- [ ] a
- [ ] b
- [ ] c
- [x] d
- [x] e
- [x] f
- [ ] g
- a
- b
- c
- d
- e
- f
- g
3 格式转换
3.1 转HTML
- 使用 MdCharm 转换;
- 使用 Pandoc 转换;
3.2 转换为 PDF
- 使用 MdCharm 转换;
- 使用 Pandoc 转换;
- 使用 Chrome 浏览器转换。
3.3 Word
- 复制粘贴到word文档中;
- 使用 Pandoc 转换。