md-to-word-pdflisted
Install: claude install-skill Samuel-Shek/md-to-word-pdf
# Markdown → Word(横竖版自动判断)
一个脚本干完所有事:`scripts/md2docx.py`。它解析 Markdown、量出表格想要多宽、决定 A4 横竖,套用中文办公标准排版,再把图形渲染成图片。
## 两条自动规则
**规则一 · 输出格式**:文档里只要出现一个 Word 渲染不了的「代码生成的图形」(```mermaid、```dot、```plantuml、`$$...$$` 公式、内嵌 `<svg>` 等),最终产物就是 **PDF**——因为这些东西在 Word 里只能是一段源码,转成图再固化成 PDF 才是用户真正想要的。没有这类内容,就一律输出 **.docx**。
**规则二 · 页面方向**:按最宽的表格实际需要多少毫米来定。A4 竖版正文宽 166mm,横版 261mm;装不下就横过来。这两条规则互不影响——横版 PDF、竖版 docx 都是正常结果。
## 标准流程
### 第 1 步:先看一眼
```bash
python3 <skill-dir>/scripts/md2docx.py 输入.md --plan --json
```
`--plan` 只分析不写文件。重点看 `needs_translation`:里面列出的图形块本地渲染不了,需要你先翻译(见第 2 步)。为空就直接跳到第 3 步。
### 第 2 步:把渲染不了的图形翻译掉
沙箱里通常没有浏览器,所以 Mermaid **跑不了 mmdc**。这不是问题——你自己读得懂 Mermaid,把它改写成脚本能渲染的等价形式即可:
| 原始 | 改写成 | 适用 |
|---|---|---|
| `mermaid` flowchart / graph / stateDiagram / classDiagram / erDiagram | ```` ```dot ```` | 绝大多数情况 |
| `mermaid` sequenceDiagram / gantt / pie / journey | ```` ```svg ```` 手写,或用 matplotlib 生成 PNG 后改成 `` | Graphviz 表达不了的 |
| `plantuml` / `d2` / `nomnoml` | ```` ```dot ```` | 同上 |
| `vega` / `chartjs` / `echarts` / `plotly` | 用 matplotlib 画成 PNG,再写成 `` | 数据图表 |
**别改用户的原文件。** 复制一份到临时目录改,例如 `cp 输入.md /tmp/work.md`,在副本上替换代码块,最后用副本生成文档。
翻译时保住原图的信息:节点文字一字不改、箭头方向和标签照搬、判断节点用 `shape=diamond`、数据库用 `shape=cylinder`。配色跟正文一致会好看很多:
```dot
digraph g {
rankdir=LR;
node [shape=box, style="rounded,filled", fillcolor="#DCE6F1", color="#4472C4"];
A [label="用户提交申请"];
B [label="风控审核", shape=diamond, fillcolor="#FFF2CC", color="#BF8F00"];
A -> B [label="提