Markdown 转 Word

转出来的是真正的 .docx:标题带大纲级别,列表带编号定义,表格和代码块都在,Word 里可以接着改。

约 99 字,3 个标题,28 行

关于 Markdown 转 Word

.docx 就是一个装 XML 的 ZIP。把任意 .docx 后缀改成 .zip 再解开,会看到 word/document.xml、styles.xml、numbering.xml 这些文件。正文、样式、编号各自独立,所以「Word 转 Markdown」本质上就是把 document.xml 里的段落属性翻译成 Markdown 语法。这也解释了为什么转换总是丢东西:文本框、批注、修订痕迹、域代码、嵌入对象都各有自己的 XML 分支,不在正文流里。

标题级别来自样式名而不是字号。Word 里的「标题 1」是一个段落样式(pStyle w:val="Heading1"),不是「加大加粗的一行字」。所以有人手动把正文调大加粗来当标题时,转换工具只能看到普通段落,转出来就是普通段落。反过来也一样:从 Markdown 转出去的 Word,标题带的是真正的标题样式,导航窗格和大纲级别都能用。

编号定义在 numbering.xml 里。段落本身只记「我用第几个编号定义的第几层」(numPr 里的 numId 和 ilvl),具体是圆点还是数字、从几开始、缩进多少,全在 numbering.xml 里。所以光看 document.xml 判断不了一个列表是项目符号还是数字编号,必须把两份 XML 对照着读。

往哪边转都会掉信息。Markdown 的表达能力是 Word 的子集:没有分栏、页眉页脚、字体、颜色、批注。Word 的表达能力又超出 Markdown:脚注、交叉引用、域、样式继承都没地方放。所以这两个方向都适合「把内容搬过去继续编辑」,不适合当无损存档。需要严格的格式还原,还是得用 PDF 或者原文件。