程序员的自我修养——Markdown标记语言

了解Markdown

Markdown是一种标记语言,自2004年发布以来,至今已产生了许多扩展语法,其中最流行的为GFM(Github Flavored Markdown)

适合使用Markdown的情况

当对文章的排版没有特殊需求,且不想花太多时间在排版上时,可以使用Markdown。

不建议使用Markdown的情况

相对于适合使用Markdown的情况,在对排版如字号、段落、图片、表格等有较高要求时,建议使用专业的编辑软件如Word

注意事项

值得注意的是,Markdown只有在对Markdown语法提高支持的平台或软件的渲染下才有效。

学习Markdown语法

学习Markdown需要明确如下路线及目标:

1) 学习基础语法
2) 学习扩展语法
3) 学习写作规范

基础语法

字体

标题

在Markdown语法中,标题指出使用两种标记:底线(-/=)和#。

  • 使用底线(-/=)的语法:

    • 一级标题
      XXX(标题内容)
      ==========
      
    • 二级标题示例
      XXX(标题内容)
      ------------------
      
      语法说明:
      1) 底线是=表示一级标题。
      2) 底线是-表示二级标题。
      3) 底线符号的数量至少2个。
      4) 底线符号的语法只支持最多两级标题。
  • 使用#的语法:
    # + 空格 + 标题内容
    
    语法说明:
    1) 在行首插入#可标记处标题。
    2) #的个数表示了标题的等级。
    3) 建议在#后加一个空格。
    4) Markdown中最多只支持前六级标题。
  • 使用规范

    1) 建议使用#标记标题,而不是底线。(底线标题最多支持两级,且不利于阅读与维护)。
    2) 要保持间距,建议标题的前后各空一行(文档开头的标题除外)。
    3) 标题要在行开头写,不要留有空格。
    4) 建议标题的结尾不要有标点符号,如句号、逗号、冒号、分号等
    5) 建议标题要尽量简短,如果原拟的标题是一个长句,可以从长句中提取标题,而将长句作为标题下的内容。

粗体和斜体

在Markdown中,粗体由2个*或2个_包裹,斜体由1个*或1个_包裹。

  • 粗体的语法格式
    **加粗内容**
    或
    __加粗内容__
    
  • 斜体的语法格式
    *斜体内容*
    或
    _斜体内容_
    
  • 使用规范

    建议粗体使用2个*包裹,斜体使用1个* 包裹(*比较常见,比_可读性更强)。

段落与换行

Markdown中的段落由一行或多行文本组成,不同的段落之间用空行来标记。

  • 语法说明如下。

    1) 如果行与行之间没有空行,则会被视为同一段落
    2) 如果行与行之间有空行,则会被视为不同的段落
    3) 空行是指行内什么都没有,或者只有空格和制表符。
    4) 如果想在段内换行,则需要在上一行的结尾插入2个以上的空格然后按回车键(在对排版要求非常低时,可以会略段内换行的影响)。

  • 使用规范
    为了便于阅读,应该限制每行字符的数量,通常每行不超过80个字符。

    关于换行的建议:
    1) 当超过80个字符后进行换行。
    2) 当一句话结束(。或!或?)之后进行换行。
    3) 当URL较长时换行。

列表

在Markdown中支持使用有序列表无序列表

  • 有序列表的语法
    数字序号 + 英文句号 + 空格 + 列表内容
    
  • 无序列表的语法
    */+/- + 空格 + 列表内容
    
    小提示:使用*/+/-来标记无序列表的效果是相同的。
  • 嵌套列表的语法
    */+/- + 第一层列表
    TAB + */+/- + 第二层列表
    TAB + TAB + */+/- + 第三层列表
    
    说明
    1) 列表中可以嵌套列表。
    2) 有序列表和无序列表可以互相嵌套。
  • 使用规范
    1) 建议使用-来标记无序列表(*容易跟粗体和斜体混淆,而+不流行)。
    2) 如果一个列表中的所有列表项都没有换行,建议列表标记符和列表内容间使用1个空格。
    3) 如果列表项有换行,建议给无序列表的列表标记符和列表内容间使用3个空格,有序列表的列表标记符和列表内容间使用2个空格。
    4) 如果一个列表中的每个列表项都只有一行,建议列表项之间不要有空行
    5) 如果列表项中有换行,建议在各个列表项之间空一行(容易区分多行列表项的开始和接受)。
    6) 建议在列表前后都空1行。

分隔符

在Markdown中,分割线由3个以上的*/-/_来标记。

  • 使用分割线的语法
    ***
    或
    ---
    或
    ___
    
    说明
    1) 分割线须使用至少3个以上的*/-/_来标记。
    2) 行内不能有其他字符。
    3) 可以在标记符之间加上空格。

图片

  • 插入图片的语法
    ![图片替代文字](图片地址)
    
    说明
    1) 图片替代文字在图片无法正常显示时会比较有用,正常情况下可以为空。
    2) 图片地址可以是本地图片也可以是网络图片的地址。
    3) 本地图片支持相对路径和绝对路径两种方式。

链接

文字链接

文字链接就是把链接地址直接写在文本中。

  • 文字链接语法
    [链接文字](链接地址)
    

引用链接

引用链接就是把链接的地址作为变量先在Markdown文件的页尾定义好,然后在正文中进行引用。

  • 引用链接语法
    在正文中引用链接标记,可以理解为引用定义好的变量:
    [链接文字][链接标记]
    
    在底部定义链接标记,可以理解为定义一个地址变量:
    [链接标记]:链接地址
    
    说明
    1):链接标记可以有字母、数字、空格和标点符号。
    2):链接标记不区分大小写。
    3):定义的链接内容可以放在当前文件的任意位置,建议放在页尾。
    4):当链接地址为网络地址时要以http/https开头,否则会被识别为本地地址。

地址链接

在Markdown中,将网络地址或邮箱地址使用<>包裹起来会被自动转换为超链接。

  • 地址链接语法
    <URL或邮箱地址>
    

使用规范

在Markdown中,链接标题的信息应该更丰富,从标题中应该可以知道链接的内容,要使用有意义的链接标题。

行内代码与代码块

行内代码

在Markdown中,行内代码引用使用`包裹。

  • 行内代码语法
    `代码`
    

代码块

在Markdown中,代码块以Tab键或4个空格开头。

  • 代码块语法
    以Tab键开头:
        def test_print():
            pass
            
    以4个空格开头:
        def test_print():
            pass
    

使用规范

除行内代码可以使用包裹外,如果想转义或强调某些字符,也可以使用包裹。
如果代码超过了一行,应该使用扩展语法,并显式地声明语言(利于阅读)。
如果编写的代码片段足够简单,使用4个空格缩进的代码快更清晰。
在Shell命令的行尾使用1个\(这样既可以避免命令换行,又能提高代码可读性)。
建议不要在没有输出内容的Shell命令前加$

引用

语法

在Markdown中,引用由>加上引用内容来标记,如下所示。

> 引用内容

说明
1):多行引用也可以在每一行的开头都插入>
2):在引用中可以嵌套引用。
3):在引用中可以使用其他的Markdown语法。
4):段落与换行的格式在引用中也是适用的。

使用规范

  • 建议在引用的标记符号>添加1个空格。
  • 建议每一行引用都使用符号>
  • 不用在引用中添加空行。

转义

当想在Markdown文件中插入一些标记符号,但又不想让这些符号被渲染时,可以使用\进行转义。

  • 转义语法

    \特殊符号
    
  • 可被转义的特殊符号

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

扩展语法GFM

GFM提供了包括表格、任务列表、删除线、围栏代码、Emoij等在内的标记语法。

删除线

  • 语法
    ~~被删除的文字~~
    

表情符号

  • 语法
    :表情代码:
    

自动链接

在标准语法中,由<>包裹的URL地址被自动识别并解析为超链接,使用GFM扩展语法则可不使用<>包裹。

注意
自动链接只识别以www或http:开头的URL地址。
如果不想使用自动链接,也可以使用`包裹URL地址。

表格

  • 语法

    |表头1|表头2|表头3
    |------|------|------|
    |内容1|内容2|内容3|
    ……
    

    说明
    1):单元格使用|,分隔(建议前后都使用|)。
    2):单元格和|之间的空格会被移除。
    3):表头和其它行使用----来分隔。
    4):表格对齐方式如下。
    左对齐(默认): :----- 右对齐: ------: 居中对齐: :------:
    5):块级元素(代码区块、引用区块)不能插入到表格中。

    建议
    1):在表格的前后各空一行。
    2):在每一行的前后都使用|,每一行中的|尽量对齐。
    3):不用使用太庞大复杂的表格。

任务列表

  • 语法
    - [  ] 未勾选 
    - [x] 已勾选
    
    说明
    1):任务列表以-加上空格开头,由[+空格/x+]组成。
    2):x可以小写,也可以大写,推荐使用小写的x(防止有些编辑器不支持大写)。
    3):当方括号中的字符为空格时,复选框是未选中状态,为x时是选中状态。

围栏代码块

在基础语法中,代码块使用Tab键或4个空格开头;在扩展语法中,围栏代码块使用连续3个`或3个~包裹,还支持语法高亮,可读性和可维护性更强一些。

建议围栏代码块被空行包裹。

锚点

锚点,也称为书签,用来标记文档的特定位置,使用锚点可以跳转到当前文档或其他文档中指定的标记位置。
Markdown会被渲染成HTML页面,在HTML页面中可以通过锚点实现跳转。

  • 语法
    [锚点描述](#锚点名)
    
    说明
    1):锚点名建议使用字母和数字(中文可能有些网站支持不太好)。
    2):锚点名区分英文大小写。
    3):在锚点名中不能含有空格,也不能含有特殊字符。

排版技巧

关于空格

建议中午和英文之间加空格,中文/英文和数字之间也要加空格。

一些需要加空格的情况

  • 英文标点符号与后面的字符之间需要加空格,与前面的字符之间不需要加空格。
  • 当在中文、英文中使用>(半角)标识路径时,两边都需要加空格。

不加空格的情况

  • 中文标点符号和数字、中文、英文之间不需要添加空格。
  • 数字和百分号之间不需要加空格。
  • 数字和单位符号之间不需要添加空格。
  • 英文和数字组合成的名字之间不需要添加空格。
  • /(半角)表示”或“、”路径“时,与前后的字符之间均不加空格。
  • 货币符号后不加空格。
  • 负号后不加空格。

全角和半角

全角:中文标点符号是全角,占2个字节。
半角:英文标点符号和数字是半角,占1个字节。

  • 在中文排版中,要使用全角标点符号。
  • 在英文排版中,要使用半角标点符号。

正确的英文大小写

专有名词要使用正确的大小写,需要参考它们的官方文档。


本文主要摘取自内容:《了不起的Markdown》
推荐另一篇Markdown总结比较好的文章:https://zhuanlan.zhihu.com/p/261016461

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__hylan__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值