Feature/md to docx#102
Merged
Merged
Conversation
- 新增 `wordf md` 命令,支持将 Markdown 文件转换为格式化 .docx - 基于 mistune 解析 Markdown AST,复用现有 FormatNode 树 + YAML 配置驱动的格式管线 - apply 模式采用"先写后 diff"策略:只对修正失败的残留差异写批注,已成功修正的不再产生噪音 - 修复标点检测批注误用红色的问题(标点 → 提醒 → 蓝色) - 修复 NodeConfigRoot.__getattr__ 对缺失 key 返回 None 导致的 .enabled 崩溃 - 新增 17 个 Markdown 解析器单元测试
- FigureImage.NODE_TYPE: "figure_image" → "figures.image",与 YAML figures.image 对齐 - TableObject.NODE_TYPE: "table_object" → "tables.object",与 YAML tables.object 对齐 - 移除 tables.content 配置块(无对应 FormatNode 消费者) - 移除 numbering.captions 配置块(与 figures/tables.rules.caption_numbering 重复) - 移除 wordformat-skill/scripts/ 目录(自定义验证脚本)
- abstract.chinese.{chinese_title→title, chinese_content→body}
- abstract.english.{english_title→title, english_content→body}
- abstract.{keywords.chinese→chinese.keywords, keywords.english→english.keywords}
- {body_text→body.text}
- {figures→figures.caption, figures.image}
- {tables→tables.caption, tables.object}
- {references.content→references.entry}
- {acknowledgements.content→acknowledgements.body}
- DEFAULTS 内部 key 同步改名(chinese_title→title, etc.)
- 同步更新 YAML 配置和测试夹具
- DotDict.__getattr__: key 缺失时自动到 paragraph/font 子字典查找
- BASE_FORMAT 改为 {paragraph: {...}, font: {...}} 分组结构
- 所有 FormatNode DEFAULTS 改用 deep_merge(BASE_FORMAT, {...}) 覆盖
- YAML global_format 锚点改用 paragraph/font 分组
- 各节点平铺覆盖字段保持不变,框架透明处理查找
- 图片:FigureImage._try_insert_image 从 value 路径插入实际图片,图在题注上 - 表格:TableObject._try_insert_table 创建 Word 表格,通过 addnext 定位到段落后 - 题注: 自动拆为 figure_image + caption_figure 节点 - 代码块:按行拆为独立 body_text 段落,每行一个节点 - 换行符:parser 层统一 \r\n→\n,apply 时自动清除 <w:br/> - codespan:_extract_text 补充处理内联代码 `` `xxx` `` - NodeConfigRoot 加 paragraph/font fallback,编号颜色/字体跟随标题样式
- 图片:FigureImage._try_insert_image 从 value 路径插入实际图片,图在题注上 - 表格:TableObject._try_insert_table 创建 Word 表格,通过 addnext 定位到段落后 - 题注: 自动拆为 figure_image + caption_figure 节点 - 代码块:按行拆为独立 body_text 段落,每行一个节点 - 换行符:parser 层统一 \r\n→\n,apply 时自动清除 <w:br/> - codespan:_extract_text 补充处理内联代码 `` `xxx` `` - NodeConfigRoot 加 paragraph/font fallback,编号颜色/字体跟随标题样式
- SKILL.md: 去掉已删除脚本引用,新增 wordf md 命令,精简为三个流程 - config_spec.md: 更新到新配置路径和 paragraph/font 分组,移除死字段 - category_reference.md: 从 155 行精简到 60 行 - README: 移除 AI Skill 集成段(体验差,浪费 token),保留预设配置说明
- 所有配置路径匹配新命名: title/body/keywords/caption/entry/object - global_format 改用 paragraph/font 分组结构 - style_checks_warning: font_name→font_name_cn+font_name_en, line_spacingrule→line_spacing_rule - 删除死字段: tables.content, numbering.captions - FormatConfig.vue 覆盖全部 16 个 paragraph+font 字段,无需改动
- parser: 表格/引用/图片+题注/删除线/链接/crlf/内联代码/换行 等 12 个测试 - stages_md: LoadMarkdownStage/MarkdownParseStage/DocumentCreationStage 4 个测试 - object: FigureImage._base/_try_insert_image, TableObject 表格创建/位置 6 个测试
- 测试内容改用 ASCII,mock logger 避免中文日志触发 charmap 编码错误
LaTeX → latex2mathml → MathML → mathml2omml → OMML,基于 python-docx 的 OxmlElement 构建 OMML 元素,集成到 md→docx 管线中: - 解析器使用 mistune math 插件识别 $ 和 $$ 分隔符 - DocumentCreationStage 渲染 m:oMath / m:oMathPara
- 新增 MathBlock FormatNode (@register("math_block")),避免 node_factory 跳过 - tree_builder 将 math_block 排除在 heading 之外,防止嵌套吸收后续段落 - 移除 README/CLAUDE.md/docs 中所有 wordformat[api] 引用(extra 不存在)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📌 关联 Issue
🎯 变更概述
受影响的用户场景
具体变更点
迁移建议
是否提供自动迁移工具?
scripts/migrate_v02_to_v03.py)✅ 提交前自查清单
🔹 测试保障
make test(或等效命令)tests/目录)io.BytesIO,未保存任何临时.docx文件到磁盘🔹 配置与兼容性
example/中提供示例requirements.txt或pyproject.toml已更新)🔹 文档与示例
README.md已更新(如新增功能说明、命令参数)example/)能正常运行且反映最新能力python-docx底层操作的部分)🔹 安全与资源
pickle、yaml.load未指定Loader)🔹 其他
master切出,无无关提交feat: add table caption check)