清洗合并会破坏源格式语义
一、三类现象(你当场逐个抓出来的)
| 你看到的现象 | 根因 |
|---|---|
| 4 条编号条目被渲染成一整段,没分成 4 行 | Markdown 单个换行不产生新段落,需要空行或行尾两个空格 |
| 列表前两项序号消失,第三项掉出列表变成普通段落 | 3. 后缺空格 → 该项不被识别为列表项,连带前面几项的解析一起错乱 |
| 「有序列表都是 1.」 | 飞书里手写的 1. 由显示端自动编号,导出成 Markdown 后原样保留 —— 编号是假的 |
你连问三轮(「这里的换行不是没变化吗」「为什么还有空行」「有序列表都是 1.」)才把三类问题区分开:它们根因不同,不能用一个修法糊过去。
二、两条可迁移的判断
- 显示端生成的信息,导出即失真。 自动编号、列表样式这类不属于源数据,一旦离开原编辑器就必须自己重建。
- 格式验收只能看渲染。 只 grep / diff 文本会漏掉整类结构问题;必须看渲染后的 DOM 或截图,再决定是否算修好。
三、修法
\d+.后补空格(与-后补空格同理),让列表项被正确识别- 连续列表项之间补空行,避免被当成同一段落
- 源里全为
1.的「小标题式」条目,按语义重新编号(RBAC0/1/2/3 是同一序列)
相关
- 入库前先分层清洗 —— 清洗层的职责是过滤;合并一旦动了格式,就必须有渲染级验收
- 导入要保留来源类型以选对渲染链 —— 同源的另一环节:这条讲合并,那条讲导入
- 讲bug先讲现象再讲根因 —— 你追问的始终是现象(「换行没生效」),根因要自己去找
- 先定位归属层再动手 —— 本条是该骨架的一处实例