下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/lingjiakeji--mlsbs-s5-zhuangeshi.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @lingjiakeji/mlsbs-s5-zhuangeshi。将审核通过的 Markdown 按中文标准页边距与字体硬约束转换为可交付的 Word 文档。
阅读全文 (展开查看完整说明)
概述
投标方案转格式(转格式)
木老师MLS标书分身体系的"S5-转格式"阶段。审核通过后的 Markdown 全文转换为 Word 文档(.docx),作为最终交付物。
触发条件
- S4-审方案完成,全文 MD 已确认无误
- 用户说"转格式""导出Word""生成docx""转docx"
- 标书需要正式交付 Word 文件
核心原则
不碰内置样式定义。 Word/WPS 的「正文缩进」是内置样式,脚本只做一件事——告诉每个段落用哪个 styleId。字体、缩进、字号全部由 Word 自己的内置样式库决定。只修文档默认值(docDefaults),不动任何样式。
页面格式硬约束。 导出的Word文档必须使用以下页面参数,不可使用python-docx默认值:
| 参数 | 标准值 | 说明 |
|---|---|---|
| 纸张 | A4竖版(21.0×29.7cm) | — |
| 上下边距 | 2.54cm | 1英寸 |
| 左右边距 | 3.18cm | 1.25英寸 |
| 页眉距边界 | 1.5cm | — |
| 页脚距边界 | 1.75cm | — |
⚠️ python-docx默认页边距是1.27cm(0.5英寸),不符合中文Word标准。脚本中必须显式设置上述参数,不可省略。
字体硬约束。 导出的Word文档必须使用以下字体:
| 元素 | 中文字体 | 西文字体 |
|---|---|---|
| 正文 | 宋体 | Times New Roman |
| 标题1-4 | 黑体 | 黑体 |
⚠️ 不可使用python-docx默认的Calibri/等线,会导致中英混排粗细不一。
前置条件
投标技术方案_全文.md存在于工作目录根路径- 已安装
python-docx(pip install python-docx) - 已安装
lxml
执行流程
Step 1: 复制脚本到工作目录
cp ~/.workbuddy/skills/mlsbs-S5-zhuangeshi/scripts/md2docx.py {工作目录}/_md2docx.pyStep 2: 运行转换
python _md2docx.pyStep 3: 交付
生成的 投标技术方案_全文.docx 位于工作目录根路径。用户打开后检查:
- 页边距:上下2.54cm、左右3.18cm、页眉1.5cm、页脚1.75cm
- 样式面板中「正文缩进」是否正确显示
- 标题字体是否统一(黑体)
- 正文字体是否统一(宋体+Times New Roman)
- 首行缩进是否为 2 字符
脚本做了什么
页面设置
- A4 竖版(21.0 × 29.7 cm)
- 页边距:上下 2.54cm,左右 3.18cm(Word标准默认值,非python-docx默认的1.27cm)
- 页眉距边界 1.5cm,页脚距边界 1.75cm
标题(Heading 1-5)
- 使用 Word 内置 Heading 1/2/3/4/5 样式
- 黑体,不区分西文/东亚字体
- 支持1-5级标题,五级标题(#####)正常导出为Heading 5
正文
- 使用 Word 内置「正文缩进」样式(styleId="BodyTextIndent")
- 在 latentStyles 中注册,确保 Word/WPS 识别为内置样式
- 样式定义仅含:首行缩进 2 字符 + basedOn Normal
- 字体走文档默认值:宋体 + Times New Roman
文档默认值修复
python-docx 默认模板为英文设计,存在两个问题:
- 字体混排:西文用 Calibri,东亚用等线 → 中英混排时数字和中文粗细不一
- 语言设置:lang eastAsia="en-US" → 影响字符间距规则
修复(在 docDefaults 层面,不改任何样式):
- 拉丁字体 → Times New Roman
- 东亚字体 → 宋体
- 语言 → zh-CN
段落顺序
- 正文段落通过
addprevious(sectPr)插入,确保标题与正文交错排列(不会全部跑到 sectPr 后面)
Markdown 表格
- 自动识别并转为 Word 表格(Table Grid 样式)
- 表头自动加粗
加粗文本
- 支持
**加粗**Markdown 语法
踩过的坑
- 样式名称:w:name 必须用中文「正文缩进」,否则英文名 "Body Text Indent" 在中文 Word 中会被直译为「正文文本缩进」
- 风格不一致:不是样式问题,是文档默认字体混排问题。正文用宋体+TNR,标题用黑体,统一后解决
- 段落顺序错乱:
body.append()会跑到 sectPr 后面 → 改成sectPr.addprevious() - 不要定义样式:bodyTextIndent 不在 python-docx 模板中,需要在 latentStyles 注册+最小定义。但定义中不设字体/字号,只设缩进
- 标题字体也要修:Heading 1-4 自带主题字体引用(majorHAnsi+majorEastAsia),不分修会同样出现粗细不一
- 页边距默认值错误:python-docx默认页边距是1.27cm(0.5英寸),不符合中文Word标准。必须显式设置为上下2.54cm、左右3.18cm、页眉1.5cm、页脚1.75cm
- 五级标题残留Markdown符号:脚本原只识别1-4级标题,五级标题(#####)被当普通正文原样写入,导致Word中出现
#####符号。已修复:脚本支持1-5级标题,五级正常导出为Heading 5,字体同步设为黑体。
输出物
| 文件 | 说明 |
|---|---|
{工作目录}/投标技术方案_全文.docx | Word 文档,可直接交付 |
注意事项
- 脚本默认读取同目录下的
投标技术方案_全文.md,文件名不同需修改 md_path - 章节标题需以
#开头(一级到四级分别对应 #/##/###/####) - 如果 md 文件非常大(>10万字),转换可能需要 30 秒以上