问题/动机
在编辑大量数学公式的帖子时,很难在 Markdown 编辑器中找到渲染出的公式的确切来源。
在包含许多行内 $...$ 表达式或多个 $$...$$ 显示块的长帖子中,工作流程如下:
在预览中发现错误 → 手动在原始 Markdown 中搜索 → 调整 → 重新检查预览
这对于小的编辑(缺少负号、错误的索引、间距调整等)尤其痛苦,并且随着帖子变长而变得更糟。
建议的行为
在编辑器中:
- 点击或选择预览窗格中的渲染元素应:
- 将原始 Markdown 编辑器滚动到相应的源位置,并且
- 将光标置于生成它的源文本内部(或选中它)。
这对以下情况尤其有效:
• 数学公式($...$、$$...$$)
• 引用
• 列表
• 链接
• 其他已渲染的元素
数学公式是最引人注目的用例,但这种行为具有广泛的实用性。
为什么这与滚动同步不同
这与输入时的同步滚动无关。
这是一种预览 → 源跳转,精神上类似于 LaTeX 编辑器中的 SyncTeX:
“我正在看这个渲染出的东西——告诉我它来自哪里。”
可能的实现方向(高层次)
在渲染过程中,输出节点可以携带轻量级的源映射元数据(例如 data-sourcepos="start:end" 或类似内容)。
在编辑器预览中:
- 点击/选择时,向上遍历 DOM 直到找到最近的带有源位置元数据的节点。
- 使用现有的编辑器 API 在原始编辑器中设置选择范围并将其滚动到视图中。
这种类型的源映射在 CommonMark 工具链中已经以概念形式存在,而数学块尤其是一个自然的候选对象,因为它们已经被明确地分词处理了。
为什么这有价值
- 对大量数学公式内容的迭代速度更快
- 减轻编辑长篇技术帖子的认知负荷
- 使预览窗格真正具有交互性,而不仅仅是被动查看
- 很好地扩展到数学以外的其他已渲染元素
如果需要帮助说明这种交互,我很乐意制作一个简短的 GIF 动图。