一文搞懂 reST 和 Markdown 语法

唠唠闲话

reStructuredText (reST) 是一种在 Python 社区和文档编写中广泛使用的标记语言。相比 Markdown,reST 更具灵活性和强大功能,提供了更多的语法规则和特性。

下边我们通过对比,学习 reST 和 Markdown 的主要语法规则。

reST 与 Markdown 比较

1. 标题

reST:使用下划线的样式定义标题,支持多种符号

===========
一级标题
===========二级标题
-----------三级标题
~~~~~~~~~~~

每种符号类型只要不与其他级别的符号混用,就可以继续定义更多的标题级别。约定上,用 =, -, ~, *, + 代表一到五级标题,且一级标题通常会用上下划线进行强调。

使用 # 符号定义标题,最多支持六级标题。

# 一级标题
## 二级标题
### 三级标题

2. 段落和换行

RST 段落之间使用空行分隔,段内换行需要显式使用反斜杠 \

这是一个段落。这是另一个段落。
这一行很长,\
需要换行。

Markdown 段落之间使用空行分隔,段内换行只需在行尾添加两个空格。

这是一个段落。这是另一个段落。  
这一行很长,  
需要换行。

3. 列表

reST 支持有序和无序列表,使用不同符号或数字定义,用法与 Markdown 类似。

- 无序列表项
- 无序列表项1. 有序列表项
2. 有序列表项

4. 链接

reST 支持内联和外部链接。

内联链接语法:

`链接文本 <URL>`_

示例:

访问 `Google <https://www.google.com>`_ 以获取更多信息。

匿名引用语法:

链接文本_.. _链接文本: URL

示例:

访问 Google_ 以获取更多信息。.. _Google: https://www.google.com

外部链接语法:

这是一个外部引用 `链接文本 <reference>`_。.. _reference: https://www.example.com

Markdown 使用方括号和圆括号定义链接。

这是一个[链接](https://www.example.com)。

链接和图片这两部分的规则较复杂,我们将在后续详细介绍。

5. 图片

reST 使用 .. image:: 指令来嵌入图片,允许添加多个配置项,如 alt 文本、widthheight 等。

.. image:: /path/to/image.jpg:alt: 备选文字:width: 200px:height: 100px

Markdown 则简单使用 ![]() 语法。

![备选文字](/path/to/image.jpg)

Markdown 本身不直接支持图片属性配置,但可以通过 HTML 标签实现更复杂的需求。

<img src="/path/to/image.jpg" alt="备选文字" width="200" height="100">

6. 引用块

reST 有功能强大的指令体系来创建不同类型的专用块,比如注意事项、警告等。

.. note::这是一个注意事项块。.. warning::这是一个警告块。

Markdown 通过 > 创建标准的引用块,但不支持类型区分。

> 这是一个引用块。

7. 代码块

reST 支持多种方式定义代码块,最常用的是使用 .. code:: 指令,指定编程语言,以实现语法高亮。

使用 :: 指令创建简单的代码块。

::这是一个代码块可以包含多行代码。

使用 .. code:: language 指令指定代码的语言,启用语法高亮。

.. code:: pythondef hello():print("Hello, world!")

还可以在其他指令中嵌入代码块,例如在列表或表格中。

- 这是一个包含代码块的列表项::def hello():print("Hello, world!")

Markdown 使用三个反引号来创建代码块,并可指定语言。

\```python
def hello():print("Hello, world!")
\```
代码块 plus

RST 支持嵌入其他语言,如 HTML、LaTeX、或者数学公式:

.. math::\sum_{i=1}^{n} i = \frac{n(n+1)}{2}这是行内数学公式 :math:`E = mc^2`。

Html 代码块:

.. raw:: html<p>这是一个 HTML 段落。</p>

LaTeX 代码块:

.. raw:: latex\begin{equation}E = mc^2\end{equation}

Markdown 支持直接引用 HTML 和使用 $$ 插入 LaTeX 代码。

8. 表格

reST 提供了灵活的表格定义方式,支持复杂的布局,比如

+------------+------------+
| Header 1   | Header 2   |
+============+============+
| Cell 1     | Cell 2     |
+------------+            |
| Cell 3     |            |
+------------+------------+

或者 CSV 表格:

.. csv-table:: CSV 表格:header: "Header 1", "Header 2":widths: 20, 20"Cell 1", "Cell 2""Cell 3", "Cell 4"

Markdown 表格较为简洁,通常用于简单布局。

| Header 1   | Header 2   |
|------------|------------|
| Cell 1     | Cell 2     |
| Cell 3     | Cell 4     |

9. 定义列表

reST 提供了创建定义列表的功能,通常用于术语和定义的描述,通过简单的缩进和符号定义。

术语定义内容1定义内容2

Markdown 最近的版本中也支持了类似的定义列表。

术语
:   定义内容1定义内容2

注意,如果不加 : 默认不会产生缩进。

10. 强调和内联代码

reST 使用 *** 对文本进行强调,使用反引号 `` 定义内联代码。

*斜体* **加粗**
``内联代码``

Markdown 用法相同,但内联代码只使用一个反引号。

*斜体* **加粗**
`内联代码`

11. 脚注

reST 支持复杂的脚注系统,允许在文档中创建和引用详细的注释。脚注在 reST 中通过以下几种方式使用:

  1. 基本脚注

    • 在文档中插入脚注引用,使用方括号和下划线(例如 [1]_)。
    • 在文档的任意位置定义脚注内容,使用 .. [label] 格式。
    这是一个脚注引用 [1]_。.. [1] 这是脚注的内容。
    
  2. 自动编号脚注

    • 通过使用 # 代替脚注编号,reST 会自动进行编号。
    这是一个自动编号脚注 [#]_。.. [#] 这是自动编号脚注的内容。
    
  3. 引用编号脚注

    • 允许在脚注中引用其他脚注,创建复杂的注释层级。
    这是一个脚注引用 [1]_,还有另一个引用 [2]_。.. [1] 第一个脚注的内容。
    .. [2] 参见脚注 [1]_ 以获取更多信息。
    
  4. 匿名脚注

    • 使用 .. [#] 定义匿名脚注,适用于文档中多处引用相同内容的情况。
    这是一个匿名脚注引用 [#]_。.. [#] 这是匿名脚注的内容。
    

12. 注释

reST 使用 .. 开头的行来定义注释,不会在最终渲染的文档中显示。

.. 注释内容

Markdown 使用 <!----> 定义注释。

<!-- 注释内容 -->

小结

简单来说,reST 提供了更多的功能和灵活性,尤其适合于技术和学术文档的需求,而 Markdown 则因其简洁性更受青睐于博客和简单文档的撰写。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/850065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】Socket编程基础

文章目录 字节序字节序转化函数 套接字socket通用结构体通信类型名空间套接字函数socket()&#xff1a;创建套接字bind()函数&#xff1a;绑定服务器套接字与其地址、端口listen()函数&#xff1a;侦听客户连接connect()&#xff1a;连接服务器套接字accept()函数&#xff1a;服…

Elasticsearch 认证模拟题 - 14

一、题目 在集群中输入以下指令&#xff1a; PUT phones/_doc/1 {"brand":"Samsumg","model":"Galaxy S9","features":[{"type":"os", "value":"Android"},{"type":&q…

Mysqldump常用工具参数详解

mysqldump 是 MySQL 的一个非常实用的命令行工具&#xff0c;用于进行数据库的逻辑备份。以下是一些 mysqldump 的常用参数及其详解&#xff1a; –all-databases 或 -A&#xff1a; 导出所有数据库。 示例&#xff1a;mysqldump -uroot -p --all-databases > alldb_backup.…

2024年6月8日 每周新增游戏

中医百科中药: 中医百科中药是一款非常强大的中药知识科普软件&#xff0c;该应用提供500多味中草药的文献资料&#xff0c;强大的搜索功能可根据功效、特点和关键词来快速查找中药&#xff0c;而且每味中药的图片、功效、主治、炮制方法等百科知识&#xff0c;可以很好的帮助你…

关于科技的总结与思考

文章目录 互联网时代有趣的数字数据驱动大数据的两个特性数据保护互联网免费模式的再探讨平台互联网的意义人工智能伦理的思考语言理性人梅特卡夫定律冲浪的神奇之处AR的恐怖之处叙词表、受控词表和大众分类法六度/十九度的解读知识图谱是真正的仿生智能幂次法则和优先连接现代…

选择排序(直接选择排序与堆排序)----数据结构-排序②

1、选择排序 1.1 基本思想 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;放在序列的起始位置&#xff0c;直到全部待排序的数据元素排完就停止 。 1.2 直接选择排序 排序思想&#xff1a; ①在元素集合array[i]--array[n-1]中选择…

C++三大特性之多态

1.多态 1.1多态的概念 在面向对象方法中一般是这样表述多态性的:向不同的对象发送同一个消息&#xff0c;不同的对象在接收时会产生不同的行为(即方法)也就是说&#xff0c;每个对象可以用自己的方式去响应共同的消息。所谓消息&#xff0c;就是调用函数&#xff0c;不同的行…

【JavaSE】面向对象---多态

前言 本篇以Java初学者视角写下&#xff0c;难免有不足&#xff0c;或者术语不严谨之处。如有错误&#xff0c;欢迎评论区指正。本篇说明多态相关的知识。若本文无法解决您的问题&#xff0c;可以去最下方的参考文献出&#xff0c;找出想要的答案。 多态概念 多态&#xff08…

【小白专用】C# Task 类异步操作-浅谈

注解 Task类表示不返回值并且通常以异步方式执行的单个操作。 Task 对象是在 .NET Framework 4 中首次引入的 基于任务的异步模式 的中心组件之一。 由于对象执行的工作 Task 通常在线程池线程上异步执行&#xff0c;而不是在主应用程序线程上同步执行&#xff0c;因此可以使用…

【上篇】从 YOLOv1 到 YOLOv8 的 YOLO 物体检测模型历史

YOLO 型号之所以闻名遐迩,主要有两个原因:其速度和准确性令人印象深刻,而且能够快速、可靠地检测图像中的物体。 在本文中,我将与大家分享我在阅读一篇长达 30 页的综合性论文时获得的见解,该论文深入探讨了 YOLO 模型的进步。 这篇评论全面概述了 YOLO 框架的演变过程,…

Python001

Python 是一种高级编程语言。它具有以下显著特点&#xff1a;1. 简单易学&#xff1a;语法相对简洁明了&#xff0c;对初学者很友好。2. 丰富的库&#xff1a;拥有大量强大的内置库和第三方库&#xff0c;可用于各种领域&#xff0c;如数据分析、机器学习、Web 开发等。3. 可读…

【无标题】 Notepad++ plugin JSONViewer 下载地址32位

JSONViewer download | SourceForge.net 1、下载插件压缩包并解压出dll&#xff1a;Jsonviewer2.dll&#xff08;64位&#xff09;或NPPJSONViewer.dll&#xff08;32位&#xff09;; 2.、拷贝对应dll到Notepad安装目录下的plugins目录。 3、重启Notepad程序&#xff0c;在插…

LeetCode刷题之HOT100之颜色分类

下午好呀&#xff0c;大家&#xff01;昨天估计是喝了假酒&#xff0c;现在没有胃口&#xff0c;喝酒真的没有任何好处。以后尽量避免此活动。今天几乎没睡觉&#xff0c;准备做完这题回宿舍&#xff0c;把电脑也带回去。 1、题目描述 2、逻辑分析 对颜色排序&#xff0c;要求…

Avalonia TreeDataGrid 示例代码

参考文档1 https://docs.avaloniaui.net/docs/reference/controls/detailed-reference/treedatagrid/ 参考文档2&#xff0c;英文版 https://avaloniachina.gitbook.io/avalonia/docs/controls/treedatagrid/creating-a-hierarchical-treedatagrid 参考文档3&#xff0c;中文…

Java finally catch try关键字

Java finally catch try关键字 finally&#xff1a; finally 关键字用来创建在 try 代码块后面执行的代码块&#xff1b;无论是否发生异常&#xff0c;finally 代码块中的代码总会被执行。 在 finally 代码块中&#xff0c;可以进行文件流关闭等收尾善后性质的语句 catch&am…

读书笔记:左耳听风

程序员如何用技术变现 我完全没有必要通过打工听人安排而活着&#xff0c;而是反过来通过在公司工作提高自己的技能&#xff0c;让自己可以更为独立和自由地生活。 因而&#xff0c;在工作当中&#xff0c;对于那些没什么技术含量的工作&#xff0c;我基本上就像是在学生时代那…

使用sqlldr向oracle导入大量数据

&#xff08;1&#xff09;在Oracle主机安装oracle客户端 sqlldr&#xff0c;在命令行输入sqlldr&#xff0c;若有help指导即已经安装了&#xff1b; &#xff08;2&#xff09;创建一个xxx.ctl文件 这个文件是执行导入数据的语句&#xff0c;其中包含需要导入的数据&#x…

NRF24L01(2.4G)模块的使用——SPI时序(软件)篇

一、SPI的简介&#xff1a; SPI 是英语Serial Peripheral interface的缩写&#xff0c;顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。 SPI&#xff0c;是一种高速的&#xff0c;全双工&#xff0c;同步的通信总线&#xff0c;并且在芯片的管脚…

「2017 山东一轮集训 Day3」第一题~「2017 山东一轮集训 Day3」第三题

1989: #6065. 「2017 山东一轮集训 Day3」第一题 题目描述 给定 n nn 根直的木棍&#xff0c;要从中选出 6 66 根木棍&#xff0c;满足&#xff1a;能用这 6 66 根木棍拼出一个正方形。注意木棍不能弯折。问方案数。 正方形&#xff1a;四条边都相等、四个角都是直角的四边形…

安装ps提示vcruntime140.dll丢失的解决方法,总结5种解决方法

在电脑使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“找不到vcruntime140.dll”。这个问题可能会导致程序无法正常启动或运行&#xff0c;因此了解其原因和解决方法是非常必要的。小编将从多个方面对“找不到vcruntime140.dll”这一问题进行详细…