← ClaudeAtlas

md-to-word-pdflisted

把 Markdown 文件转成排版规整的 Word 文档(.docx),自动判断 A4 该用横版还是竖版;若文中含 Mermaid、Graphviz、LaTeX 公式等代码生成的图形,则渲染成图后输出 PDF。用户给一个 .md / Markdown 文件并说要转 Word、转 docx、导出 Word、"这个表格太宽了横过来"、"Typora 导出的是竖版"、要一份能发出去的正式文档时,都用这个 skill。用户只是让你写一段 Markdown 内容、或要 PPT / Excel / 纯 PDF 排版时,不要用。
Samuel-Shek/md-to-word-pdf · ★ 0 · Data & Documents · score 78
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 后改成 `![](图.png)` | Graphviz 表达不了的 | | `plantuml` / `d2` / `nomnoml` | ```` ```dot ```` | 同上 | | `vega` / `chartjs` / `echarts` / `plotly` | 用 matplotlib 画成 PNG,再写成 `![](图.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="提