Files
ElyOffice/tasks/reviews/R8.4-r1.md
T

4.7 KiB
Raw Blame History

FAIL

  1. ../Ely-GPUI-Components/src/documents/render/math_text.rs:182:U+00A0 占位不能保证公式整体换行;当前 GPUI 会在这些字符之间断行,图片却仍从占位起点整张绘制。160px 宽的段落显示 aaaaaaaaaa $x^2+y^2=r^2$ tail 时,探针测得同一公式占位从 (105.6, 0) 跨到 (76.8, 26),公式越过右边界,下一行留下空位,点击位置也不再对应画面。不符合 R8.4 的行内排版,agents.md 的“不断行”说明亦不成立。修正方向:让公式宽度以不可拆分的单元参与换行,并测试公式接近行尾时的排版与命中。证据:.work/r84-r1-probe-tests.log 的 formula_space_is_indivisible;原有窗口测试未覆盖换行。

  2. ../Ely-GPUI-Components/src/documents/markdown.rs:64:把两端替换为 $ 和 $ 会把相邻公式的边界拼成 $$。\(x\)\(y\) 实际变成 $ x $$ y $,只解析出一个内容为 x $$ y 的公式;$x$\(y\) 同样合并。可视模式与导出都失去原来的两条公式。修正方向:保留每对分隔符的独立公式节点,避免转换产生新的美元符号连续串,并覆盖两种分隔符相邻的组合。证据:.work/r84-r1-probe-tests.log 的 adjacent_formulas_remain_distinct、.work/r84-r1-parser.log。

  3. ../Ely-GPUI-Components/src/documents/markdown.rs:40:保护范围没有排除链接和图片的目标地址,整文件扫描会把地址里的转义括号当公式。合法的 [go](https://e.test/\(x\)) 原本指向 https://e.test/(x),现在变成正文碎片与指向 https://e.test/$ 的错误链接;![p](pics/\(x\).png) 则不再是图片。违反 MARK-03,也影响使用同一解析入口的输出。修正方向:只在允许公式的正文范围转换,保留目标地址、标题和定义的语法;增加地址含转义括号的回归测试。证据:.work/r84-r1-probe-tests.log 的 links_and_images_keep_their_addresses、.work/r84-r1-parser.log。

  4. ../Ely-GPUI-Components/src/documents/markdown.rs:62:只要内容出现 $ 就拒绝整对分隔符,连合法的 TeX 转义 \$ 也拒绝。\(\$5\) 因此显示为普通文字 ($5),没有公式节点,而相同的 \$5 可由本项目的 RaTeX 正常排版。不符合 R8.4 的 \(…\) 支持。修正方向:按 TeX 的转义语义处理内容,不能用任意美元符号否决整对分隔符;覆盖含 \$ 的行内与块公式。证据:.work/r84-r1-probe-tests.log 的 escaped_dollar_is_valid_tex 先确认排版成功,再在公式节点数量上失败。

  5. ../Ely-GPUI-Components/src/documents/markdown.rs:56:配对状态只在 LF 空行处清除,可以跨两个不同的 Markdown 块配对,且漏掉 CR 换行的空行。两项列表 - \(a\n- b\) 原本分别显示 (a、b),现在分别显示 $ a、b $;\(a\r\rb\) 也会凭空出现美元符号。转换既未形成公式,又改变了普通文本。修正方向:按实际块边界限定配对范围,并使用 CommonMark 支持的 LF、CRLF、CR 换行规则;覆盖跨列表项和 CR 空行。证据:.work/r84-r1-probe-tests.log 的 unrelated_blocks_do_not_acquire_dollars、.work/r84-r1-parser.log。

  6. ../Ely-GPUI-Components/src/documents/markdown.rs:44:仅保护 Html 节点的标签字节,没有保护 HTML 代码标签的正文。a <code>\(x\)</code> b 中的代码内容被转换成公式节点,渲染时会排成公式,失去应展示的代码文字,与 agents.md 所称代码、HTML 中不转换不符。修正方向:识别并保留 HTML 代码内容的范围,使解析、可视显示与导出都保持代码语义;增加 <code> 内分隔符的回归测试。证据:.work/r84-r1-probe-tests.log 的 html_code_stays_literal。

  7. ../Ely-GPUI-Components/src/documents/render/math_text.rs:187:行内排版失败时直接丢弃 MathError,只记固定警告,界面保留着色 TeX 而没有错误原因或位置。例如 $x^2^3$ 的错误本应是 Double superscript at 3,此分支不把它交给任何可见元素。违反 §14.2“语法错误显示原文与错误位置”,也违反不吞错的规则;块公式已有可见错误处理。修正方向:保留并展示行内公式的错误及位置,同时保留原文,并增加失败公式的可见错误断言;日志继续不含公式内容。

  8. ../Ely-GPUI-Components/src/documents/tree/mod.rs:321、../Ely-GPUI-Components/src/typography/math.rs:196:两条新增或改写的注释分别为 “Text split at its images; lone $$ or \[ math is block.” 和 “svg's drawing under a root viewing [left, top, w, h] in px.”,按空白分词均为 12 个词,超过十词上限。修正方向:各缩至十词以内。