MarkDown语法分析

前言:之前项目组leader就要求用markdown来写一些产品说明文档,初次接触markdown当时确不知道是啥,写着感觉特别别扭,习惯了word排版形式,刚来接触这个一直不太习惯,跌跌撞撞好久都未曾理解所以然,所以花下心思想细细学习一番。看网上说markdown语法都很简单,但是个人经过理解后发现,要懂它还得花一段时间去适应一下,至于其好处,确实没发现多少,我个人倒是觉得很繁琐。不过大家推崇一定有其原因,还是赶潮流用用这个吧。

此文参照于Markdown语法说明(简体中文版),对于其中的说明一定要细细理解,亲身实践才算是真懂,看似简单,其实得花一些时间研究下,以下是笔记内容。

Markdown语法

段落和换行

一个 Markdown 段落是由一个或多个连续的文本行组成,在书写的时候它的前后要有一个以上的空行,在真正呈现的时候段落前后也是会有空行显示的,(空行的定义是显示上看起来像是空的,便会被视为空行。比方说,若某一行只包含空格和制表符,则该行也会被视为空行)。普通段落不该用空格或制表符来缩进

「由一个或多个连续的文本行组成」这句话其实暗示了 Markdown 允许段落内的强迫换行(插入换行符),即两个空格加一个回车即可实现强制换行。

普通段落前后空行这点,是markdown的基础,隔了好久才发现这是非常有用的,可以避免很多奇怪的问题,(比如说段落后插入代码块,用tab键突然不灵了)总之,在markdown里重视段落这个东西,并且牢记一段段落前后总有空行,除非你实现强制换行除外。

代码区块及代码

  1. 代码块开始需要首行4个空格或者tab键,而采用“紧紧为其中的文字进行标记是代码标记。
  2. 代码区块会一直持续到没有缩进的那一行(或者文件的结尾)
  3. 代码区块–换行,由于第2条,所以换行只需要按空格键,在新一行按tab键,将新一行转成代码区块后,会和上一行做拼接,由此就达到换行效果。
  4. 代码区块中的markdown语法不会被转换,一般*号就是*号,不会被作为强调。

列表

  1. 列表内换行–两个空格加上一个enter键(其实可以等同于段落的换行)但是按了enter键之后下一行会自动加上列表编号,只需把列表编号删掉就可实现换行。
  2. 列表下如果想不用列表了,改为段落,则直接两下enter键即可实现段落的输入。总之,列表区域或者单个列表前后总是有一个空行的。
  3. 列表下的段落–列表下想要另外开辟一个段落,还属于当前列表段,每个段落前都必须缩进4个空格或一个制表符,这也解释了为什么在列表里插入代码块需要缩进8个空格或2个制表符,值得注意的是列表里的段落前后仍然应保持空一行的习惯
  4. 列表嵌套

    • 列表里嵌套列表–列表里需要嵌套,那么首行就必须要缩进。首先实现换行,然后缩进(即采取tab键)其次用列表符号即可。
    • 列表里嵌套引用–同理,如果列表里需要嵌入引用,那么也需在首行缩进之后再输入引用的标记符号>。
    • 列表里嵌入代码块,那么需要缩进2次,多嵌入一层,那么就需要多缩进一次。因为列表里另起一个段落需要缩进一次,再缩进一次即成为嵌入代码块。

      值得注意的是,如果列表里嵌套的列表,那么3次缩进可以在里面一层列表产生代码块,但是外围一层列表貌似采用2次缩进无法产生代码块,只能通过代码块代码pre,code这样的标记产生代码块了。本质原因是因为2次缩进,是为内层的嵌套列表开辟新的段落,冲突了,所以产生代码块没有用

分隔线

你可以在一行中用三个以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西。如下的方式:


链接

Markdown 支持两种形式的链接语法: 行内式和参考式两种形式。不管是哪一种,链接文字都是用 [方括号] 来标记的。

要建立一个行内式的链接,只要在方块括号后面紧接着圆括号并插入网址链接即可,如果你还想要加上链接的 title 文字,只要在网址后面,用双引号把 title 文字包起来即可,例如:

This is [an example](http://example.com/ "Title") inline link.
[This link](http://example.net/) has no title attribute.

这个链接示例jixu,如果你是要链接到同样主机的资源,你可以使用相对路径:

See my [About](/about/) page for details.

参考式链接参考式的链接是在链接文字的括号后面再接上另一个方括号,而在第二个方括号里面要填入用以辨识链接的标记。比如下文:

This is [an example] [id] reference-style link.

然后你得在文中其它地方将其标注出来,如下标注此标注不能紧跟着段落内容中,需自成一行进行标记,一般可以放在文末进行标记

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

这种链接标记的形式值得注意:

  1. 方括号(前面可以选择性地加上至多三个空格来缩进),里面输入链接文字
  2. 接着一个冒号
  3. 接着一个以上的空格或制表符
  4. 接着链接的网址
  5. 选择性地接着 title 内容,可以用单引号、双引号或是括弧包着

实际使用参考式比较美观,但是相对比较麻烦,本人主要还是以行内式链接为主。

强调

Markdown 使用星号*和底线_作为标记强调字词的符号,被 * 或\ _ 包围的字词会被转成用 em 标签包围(即字体呈现斜体),用两个* 或_ 包起来的话,则会被转成 \strong标签包围(即字体加粗)

图片

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

行内式的图片语法看起来像是,和链接进行对比可以发现其实就是多了个感叹号,引用的方式也基本一样:

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

此种语法和链接其实是很想相似的。

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

![Alt text][id]

「id」是图片参考的名称,图片参考的定义方式则和链接参考一样,可以在文中的任意地方定义

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

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

反斜杠

通过反斜杠可以将一些需要强调的字符进行呈现,类似于代码里的转义字符,在本文中已经使用过很多转义了。


<think>好的,我现在需要帮用户介绍一下Markdown语法。首先,我得回顾一下用户之前的对话历史,看看他们之前问过什么,可能对现在的回答有什么影响。之前用户问的是深度学习中的CNN、RNN和GAN,我给出了结构化的回答,使用Markdown格式,有标题、列表、公式、表格等。现在用户想了解Markdown语法,可能是因为他们看到之前的回答格式清晰,想自己学习如何使用。 接下来,我要确定用户的需求。他们可能是一个刚开始学习Markdown的新手,想要快速掌握基本语法,以便在文档、笔记或编程项目中使用。用户可能希望得到简明扼要的说明,包含常用语法示例,可能还希望知道一些高级用法或工具推荐。此外,用户可能对如何在不同平台使用Markdown感兴趣,比如GitHub、VS Code等。 我需要确保回答结构清晰,按照Markdown的不同元素分点介绍,每个部分给出语法示例和效果,这样用户能直观理解。同时,需要提到Markdown的优势和适用场景,帮助用户判断是否适合他们的需求。可能还需要补充一些扩展语法,比如表格、代码块、公式等,因为用户在之前的问题中涉及到这些内容,可能已经接触过,但需要明确这些属于扩展语法,并非所有解析器都支持。 另外,用户可能不知道不同的平台对Markdown的支持程度不同,比如GitHub Flavored Markdown(GFM)支持任务列表、表格等,而其他平台可能不支持。所以需要提醒用户注意兼容性问题,并建议他们根据使用环境调整语法。 在组织内容时,应该先介绍基本语法,再讲扩展语法,最后给出使用建议。这样用户可以从基础到进阶逐步学习。同时,使用示例和效果对比能帮助用户更好地理解每个语法的应用方式。例如,标题用#号,列表用*或-,链接和图片的写法等。 还要注意用户可能对某些术语不太熟悉,比如“行内代码”和“代码块”的区别,需要明确说明。此外,强调Markdown的轻量级和易读性,让用户明白它的设计初衷是为了让文档易写易读,即使不渲染也能清晰理解内容。 最后,可能需要推荐一些工具,比如Typora、VS Code、StackEdit等,帮助用户开始实践。同时,提醒他们查看特定平台的文档,以确保语法支持。比如,如果用户使用GitHub,可以建议他们参考GFM的文档来了解更多的扩展语法。 总结下来,回答的结构应该是:简介、基本语法、扩展语法、使用建议,每个部分用标题分隔,内容用列表和示例展示,保持简洁明了。这样用户能够快速找到所需信息,并且通过示例理解每个语法的应用方法。</think>以下是Markdown语法的详细介绍,分模块说明并附带示例: --- ### **一、Markdown简介** Markdown是一种轻量级**标记语言**,通过简单符号实现文档格式化,特点: 1. **易读易写**:纯文本编写,未渲染时仍可清晰阅读。 2. **跨平台兼容**:支持GitHub、Notion、VS Code等工具。 3. **快速转换**:可转为HTML、PDF等格式。 --- ### **二、基础语法速查表** #### 1. 标题 ```markdown # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ``` #### 2. 段落与换行 - 段落:直接换行(段落间空一行) - 强制换行:行尾添加`<br>`或两个空格 #### 3. 文字样式 | 效果 | 语法 | 示例 | |------------|----------------------|--------------------| | 粗体 | `**文字**` 或 `__文字__` | `**加粗**` → **加粗** | | 斜体 | `*文字*` 或 `_文字_` | `*斜体*` → *斜体* | | 删除线 | `~~文字~~` | `~~删除~~` → ~~删除~~ | #### 4. 列表 - **无序列表**:用`-`、`*`或`+` ```markdown - 项目1 - 项目2 - 子项目(缩进2空格) ``` - **有序列表**:数字+点 ```markdown 1. 第一项 2. 第二项 - 混合子项(缩进2空格) ``` #### 5. 链接与图片 - **链接**:`[显示文本](URL "悬停提示")` ```markdown [谷歌](https://www.google.com "搜索工具") ``` - **图片**:`![替代文本](图片路径 "悬停提示")` ```markdown ![Logo](logo.png "公司标志") ``` #### 6. 代码 - **行内代码**:反引号包裹 `print("Hello")` → `print("Hello")` - **代码块**:三个反引号+语言名(支持语法高亮) ````markdown ```python def hello(): print("Markdown语法示例") ``` ```` --- ### **三、扩展语法(部分工具支持)** #### 1. 表格 ```markdown | 左对齐 | 居中对齐 | 右对齐 | |:-------|:--------:|-------:| | 单元格 | 单元格 | 单元格 | | 第二行 | 内容 | 示例 | ``` 效果: | 左对齐 | 居中对齐 | 右对齐 | |:-------|:--------:|-------:| | 单元格 | 单元格 | 单元格 | #### 2. 任务列表 ```markdown - [x] 已完成任务 - [ ] 待办任务 ``` #### 3. 数学公式(需支持LaTeX) - 行内公式:`$E=mc^2$` → $E=mc^2$ - 独立公式块: ```markdown $$ \sum_{i=1}^n i = \frac{n(n+1)}{2} $$ ``` --- ### **四、使用建议** 1. **工具推荐**: - 编辑器:Typora(实时预览)、VS Code(插件丰富) - 在线工具:StackEdit、Markdown Tables生成器 2. **兼容性注意**: - GitHub Flavored Markdown (GFM) 支持表格、任务列表 - 数学公式需平台支持(如GitHub Pages需启用MathJax) --- ### **五、示例文档** ```markdown # 报告标题 ## 1. 项目进度 - [x] 需求分析 - [ ] 开发测试 ## 2. 核心代码 ```python def calculate(a, b): return a + b ``` ## 3. 数据表格 | ID | 名称 | 数量 | |-----|--------|-----:| | 001 | 商品A | 100 | | 002 | 商品B | 200 | ``` --- 通过以上语法,可快速生成结构清晰的文档,适用于技术文档、笔记、README文件等场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值