Skip to content

Releases: wudream813/LuoguMarkdownEditor-in-vscode

v1.2.11 README 排版收敛

Choose a tag to compare

@wudream813 wudream813 released this 30 Aug 05:18

README 去掉装饰性 emoji,保留全部信息与 badge;同步市场展示页。功能与 v1.2.10 完全一致。

v1.2.10 开源自检 hotfix(脚注占位符/多行续行/单波浪边界)

Choose a tag to compare

@wudream813 wudream813 released this 29 Aug 06:22

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 与洛谷渲染对齐(全文差分语料)

Choose a tag to compare

@wudream813 wudream813 released this 29 Aug 05:07

与洛谷现行编辑器(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:$$ 行内/行间边界与洛谷对齐

Choose a tag to compare

@wudream813 wudream813 released this 29 Aug 03:46

🐛 修复:$$ 跨空行错配为行间公式

用例(实际报告):

文字 $$ 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:新侧边栏图标

Choose a tag to compare

@wudream813 wudream813 released this 29 Aug 03:03

🎨 外观更新

更换侧边栏活动区图标:实心圆角徽标 + Markdown「M」与文档代码行,替代原有的空心方框薄 M 图标。图标使用 currentColor,亮/暗主题下自动着色。

功能与 v1.2.6 完全一致(含 CRLF 兼容的一键排版修复链路)。

📦 安装

下载下方 luogu-markdown-editor-1.2.7.vsix,安装后重载窗口。

v1.2.6:CRLF 文档兼容

Choose a tag to compare

@wudream813 wudream813 released this 28 Aug 11:57

🔧 修复: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:句末句号逐行判定

Choose a tag to compare

@wudream813 wudream813 released this 28 Aug 11:35

🔧 修复:一键排版漏补句末句号

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:一键排版修复真正落地

Choose a tag to compare

@wudream813 wudream813 released this 28 Aug 10:43

🔧 修复:「一键排版规范修复」按钮实际生效

旧实现(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:排版规则对齐《洛谷主题库题解规范》

Choose a tag to compare

@wudream813 wudream813 released this 28 Aug 10:17

💡 排版规范检查对齐官方细则

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:任意深度嵌套链接 + 洛谷排版规范检查

Choose a tag to compare

@wudream813 wudream813 released this 28 Aug 09:57

🐛 修复

  • 任意深度平衡括号链接/图片[[[]]](sss)[a[b[c]]d](u) 等多层嵌套链接文本现在与洛谷(CommonMark)行为一致地正确渲染;链接文本内嵌套图片 [![alt](img)](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...」。