在 Markdown 文档中,标题层级的管理是至关重要的,特别是在大型文档中保持逻辑清晰与层次分明。然而,在实际编辑过程中,我们经常会遇到以下问题:
- 标题层级不连续:比如从一级标题跳到三级标题,中间缺少二级标题。
- 跨级递增:比如当前标题比前一个标题直接增加两个或多个层级。
- 改动后的影响:如果某一标题被调整,而后续标题与调整前的标题同级,则后续标题需要同步调整。
本文将通过 Python 脚本实现自动调整 Markdown 文档中的标题层级,解决这些问题。
问题分析与解决方案
问题 1:标题层级不连续
当文档中出现不连续的标题层级时,需要调整为连续的层级。例如:
# 一级标题
## 二级标题
#### 四级标题
应调整为:
# 一级标题
## 二级标题
### 三级标题
问题 2:跨级递增
如果标题层级跳跃过大,比如从二级标题直接跳到四级标题,应限制只能逐级递增。
问题 3:改动后的级联影响
当某一标题被调整后,紧随其后的同级标题需要保持一致。例如:
## 二级标题
#### 四级标题
### 三级标题
调整后为:
## 二级标题
### 三级标题
### 三级标题
实现逻辑
为了解决上述问题,我们设计了一种基于逐行分析的调整逻辑,主要包含以下步骤:
- 逐行解析标题:通过正则表达式匹配每一行的标题。
- 逐级递增调整:如果标题跨级递增,则调整为逐级递增。
- 同步调整同级标题:如果上一行标题被调整过,则检查当前标题是否与调整前的上一标题同级,必要时进行同步调整。
- 保持不变或递减:对于标题层级不变或递减的情况,保持原样。
Python 实现代码
以下是完整的 Python 实现代码:
import re
def adjust_markdown_headers