Releases: wudream813/LuoguMarkdownEditor-in-vscode
Release list
v1.2.11 README 排版收敛
README 去掉装饰性 emoji,保留全部信息与 badge;同步市场展示页。功能与 v1.2.10 完全一致。
v1.2.10 开源自检 hotfix(脚注占位符/多行续行/单波浪边界)
Hotfix:v1.2.9 对齐洛谷引入的 4 个 edge bug 全部修复
详差分语料:57 例对基准管线(unified + remark + GFM + directive + math + katex)57/57 一致;对抗性自检 45 项全绿。
修复:
- 脚注
[^x]占位符命名空间漏FNREFTOKEN,正文遗留占位符(v1.2.9 线上 bug) - 脚注多行续行定义因惰性
(.*?)空命中,正文流失;改贪婪(.*) - 单波浪
~x~边界过严(实测洛谷a~b~c、中~x~文、约 ~5 元与~9~定全出 delete),已对齐 remark-gfm render(undefined)非字符串输入崩溃 → 守卫为空串
测试矩阵:45 项对抗(状态泄漏/URL 边界/CJK/CRLF/ReDoS/XSS/幂等)+ 57 例差分 + 42 例 fixer + 58 例风格 + v1.1.1 特性全套绿。
开源准备(已满足)
- MIT LICENSE、README、CHANGELOG、.vscodeignore、预览/暗黑主题自适应、图标齐全
- 57 例差分语料、45 项对抗测试、120+ 项回归全部绿
test-harness/含基准渲染链(unified/remark 全家桶),可直接复现对账
v1.2.9 与洛谷渲染对齐(全文差分语料)
与洛谷现行编辑器(remark/rehype + remark-gfm + remark-math + remark-directive)差分对齐
51 例差分语料对基准管线 51/51 一致,修复 4 个真实渲染差异:
- 段内
$$…$$改为行内公式(display 只属独占块),与洛谷一致;独占行块级$$语义不变 - GFM 裸 URL 自动链接:
https://…、www.…无需尖括号自动成链,尾部标点按 GFM 规则剥离 - 单波浪
~删除线~(~~双波浪~~继续支持) - GFM 脚注
[^标记]:文末按首次引用次序集中渲染,正文引用上标,双向跳转;多行定义保源码行号 - 表格分隔行无对齐标记不再默认输出
text-align:left(与 remark 一致)
承认超集(与手册一致,非差异):未标注语言代码块默认按 C++ 高亮。
回归:lint/fixer 42 例、样式 58 例、滚动、特性测试、差分 51 例全部通过。
v1.2.8:$$ 行内/行间边界与洛谷对齐
🐛 修复:$$ 跨空行错配为行间公式
用例(实际报告):
文字 $$ s
$$
s
$$- 修复前(本扩展):单条
$$[\s\S]*?$$全文档配对,把「文字 $$ s」与空行后的$$错配成一个行间公式 → 显示文字 s / s / $$,与洛谷不一致。 - 洛谷(markdown-it):行内公式只在段落内生效,
文字 $$ s显示字面文本;块级$$独占行起止的规则允许中间有空行,$$ …… s …… $$渲染为居中的行间公式 s。
本版改为与洛谷对齐的三级匹配:① $$ 独占行开/闭的块级公式(允许跨空行);② $$x$$ 整行单行;③ 段内 $$...$$ 绝不跨越空行。
修复后上述用例在预览中与洛谷呈现完全一致:文字 $$ s(字面)+ 居中的行间公式 s。连续 $$\n…\n$$ 块、段内 $$x+y$$ 等既有用法不受影响。
✅ 测试
test-v111 新增 6 条边界断言;test-fix 42 / test-style 58 / 滚动套装全部通过。
📦 安装
下载下方 luogu-markdown-editor-1.2.8.vsix,安装后重载窗口。
v1.2.7:新侧边栏图标
🎨 外观更新
更换侧边栏活动区图标:实心圆角徽标 + Markdown「M」与文档代码行,替代原有的空心方框薄 M 图标。图标使用 currentColor,亮/暗主题下自动着色。
功能与 v1.2.6 完全一致(含 CRLF 兼容的一键排版修复链路)。
📦 安装
下载下方 luogu-markdown-editor-1.2.7.vsix,安装后重载窗口。
v1.2.6:CRLF 文档兼容
🔧 修复:CRLF(\r\n)换行的文档一键修复失灵
症状:文件是 CRLF 换行(Windows 习惯或外部粘贴)时,点击「一键排版规范修复」提示「排版已符合规范」,但句末句号、行尾空格全都没动,问题面板的 Hint 却仍在。
根因:修复器按 \n 切行后每行末尾残留 \r,所有「行尾判定」的正则(/[ \t]+$/、句末末字符检查)被 \r 挡住全部落空——只有文档最后一行没有 \r 所以唯独它被补上了句号。lint 的行尾空格检测同样失明。
修复:
- lint 入口统一将 CRLF 归一为 LF 再判定(行列号不受影响);
- 修复器逐行剥除
\r跑全部规则、写回时原样补回——文档的换行风格保持不变; - 行内代码、围栏代码、硬换行两个空格等原有语义在 CRLF 下与 LF 完全一致。
修复后 CRLF 文档点一次修复:全篇句末句号补齐、行尾空格清理,\r\n 原样保留,lint 复检零残留。
✅ 测试
test-fix 42 项(新增 CRLF 补句号/剥行尾空格/硬换行保留/围栏不动)、test-style 58 项(CRLF 检出回归)全绿。
📦 安装
下载下方 luogu-markdown-editor-1.2.6.vsix,安装后重载窗口。
v1.2.5:句末句号逐行判定
🔧 修复:一键排版漏补句末句号
v1.2.4 引入的「段落感知」在洛谷题解最常见的「一句一行、行间无空行」写法下,会把整段软换行视为一个段落,导致一键修复只在段落最后一行补句号,前面各行的句号全部漏补——表现为点了修复,文中大部分句末仍没有句号。
本版恢复逐行判定:每一行内容行都按完整句子处理,行尾无标点即补「。」;以 「,、:(」等延续性标点结尾的行自然跳过,不会误伤真正跨行的长句。
lint 提示与一键修复同步生效。修复示例:
先考虑暴力做法
枚举所有子集计算答案
显然不优,考虑背包思想一键修复后:
先考虑暴力做法。
枚举所有子集计算答案。
显然不优,考虑背包思想。✅ 测试
test-fix 38 项(含「一句一行」回归用例)、test-style 56 项、原有套件全绿。
📦 安装
下载下方 luogu-markdown-editor-1.2.5.vsix,在 VSCode 中执行「Extensions: Install from VSIX...」后重载窗口。
v1.2.4:一键排版修复真正落地
🔧 修复:「一键排版规范修复」按钮实际生效
旧实现(fixSpacing)只会处理盘古空格,面对规范中的绝大多数条目(半角标点、公式规范、行尾、空行等)点击后毫无变化。本版替换为与 lint 同源的全量修复器 autoFixLuoguStyle,点击后自动改写并把不可修复项继续留在问题面板:
§1 标点与空格
- 中文语境半角标点、括号 → 全角(
你好,世界→你好,世界) - 句末自动补「。」(含公式结尾的段落;硬换行的两个空格保留在句号后)
- 中文 ↔ 英文/数字/公式 自动补半角空格(
设$n$为正整数→设 $n$ 为正整数) - 全角标点两侧空格自动剥除(
中文 ,中文、$n \le 10^5$ ,)
§2 数学公式
- 公式内
<= >= != ==→\le \ge \ne =;*→\times;裸mod→\bmod;公式内全角标点 → 半角 - 公式碎拼自动合并:
$a$ + $b$ = $c$→$a + b = c$ $DFS$式英文误用 LaTeX → 自动脱壳- 正文
2*3→$2 \times 3$,O(n log n)→$\mathcal{O}(n log n)$,5e9→$5 \times 10^{9}$
整理:连续空行压缩为一个;行尾空格规范化(恰好两个空格的硬换行保留)。
安全:围栏代码、行内代码、数学块内容在修复过程被占位符严格隔离,绝不动代码。
改进:句末标点规则段落感知——软换行跨行段落只在末行判定,不再把半句话误补「。」。
修复完成后与 lint 同日复检零残留(幂等,可放心重复点击);无法机械判定的(标题层级、代码块语言、公式内混入中文文字)保留 Hint 提示交人工处理。
✅ 测试
新增 test-fix(37 项,含豁免/幂等/零残留);test-style 56 项同步更新;原有套件全绿。
📦 安装
下载下方 luogu-markdown-editor-1.2.4.vsix,在 VSCode 中执行「Extensions: Install from VSIX...」。
v1.2.3:排版规则对齐《洛谷主题库题解规范》
💡 排版规范检查对齐官方细则
Hint 级排版检查(source「luogu-排版」)现按《洛谷主题库题解规范》与《专栏推荐规范》可机器判定的条目逐项实现:
§1 基本标点与空格
- 句末必须有标点(含公式结尾的段落),提示补充「。」
- 中文与英文单词/数字/LaTeX 公式之间需半角空格(
设$n$为正整数→ 提示) - 中文标点与英文/数字/公式之间严禁空格(
$n \le 10^5$ ,→ 提示),改在原始行上判定,不再误报
§2 数学公式与 LaTeX
- 公式碎拼
$a$ + $b$ = $c$→ 提示合写进同一个$环境 - 公式内禁用
<= >= != ==(→\le/\ge/\ne/=)、禁用*作乘号(→\times/\cdot)、裸mod→\bmod - 公式内混入中文或全角标点提示
- 非数学内容(英文单词/算法名/题目名,如
$DFS$)误用 LaTeX 提示 - 正文数字
*数字、纯文本O(…)、5e9→ 分别提示\times、\mathcal{O}、科学计数法
§3 代码块
- 无语言声明的 ``` 围栏 → 提示显式指定编程语言
(§4 题解内容质量要求无法机器判定,不在检查范围)
修复:图片/链接结尾 ] 遮罩导致的句末误报;「公式内混入中文」正则缺陷。
✅ 测试
test-style 56 项全绿(含规范示例文档零误报);test-v111 / test-scroll / test-scroll-reverse 全绿。
📦 安装
下载下方 luogu-markdown-editor-1.2.3.vsix,在 VSCode 中执行「Extensions: Install from VSIX...」。
v1.2.2:任意深度嵌套链接 + 洛谷排版规范检查
🐛 修复
- 任意深度平衡括号链接/图片:
[[[]]](sss)、[a[b[c]]d](u)等多层嵌套链接文本现在与洛谷(CommonMark)行为一致地正确渲染;链接文本内嵌套图片[](url)也已支持。 - 实现上将行内正则替换升级为逃逸安全的平衡括号深度扫描(图片与链接共用),未闭合/非链接情形保持字面文本回退;顺带修复链接目标写成
<https://...>时被自动链接抢先吞掉的边界问题。
💡 新增:洛谷排版规范检查 → 问题面板(Hint 级)
新增 style-lint.js,按洛谷社区通行排版规范给出轻量提示(与语法 Error/Warning 区分,source 标注「luogu-排版」,精确到列):
- 中英文、中文与数字之间建议空格(盘古之白)
- 中文语境下的半角标点建议全角(含推荐字符提示)
- 中文语境下的括号建议全角「()」
- 全角标点两侧不需要空格
- 行尾多余空格(洛谷硬换行需恰好两个空格)
- 连续多余空行、标题层级跳跃
围栏代码块、行内代码、数学公式、裸 URL 与链接目标区域自动豁免。
✅ 测试
test-v111(+13 项扫描器断言)、test-scroll、test-scroll-reverse、test-style(31 项)全部通过。
📦 安装
下载下方 luogu-markdown-editor-1.2.2.vsix,在 VSCode 中执行「Extensions: Install from VSIX...」。