DS随心转DS随心转

Markdown 转 Word:五种方法怎么选,以及哪些格式一定会丢

深度教程 约 7 分钟读完 DS随心转团队
五种方法底层几乎都是同一个引擎,真正的差别是谁来维护那套环境。按这份转换要接进什么流程来选,而不是按转多少篇。
Markdown 转 Word:五种方法怎么选,以及哪些格式一定会丢

Word 至今没有内置的 Markdown 解析能力。你可以用 Word 打开一个 .md 文件,但它只会当纯文本处理——满屏的 #** 原样躺在那儿。

所以这件事一定需要一个转换工具。下面五种方法,先看对比:

方法 转换引擎 需要装环境 公式可编辑 Mermaid 流程图 中文字体
在线转换工具 Pandoc 自动渲染 已配好
Pandoc 命令行 Pandoc 需另配过滤器 要自己配
Typora 导出 Pandoc(需另装) 视版本而定 要自己配
VS Code 插件 多为 Pandoc 封装 视插件而定 通常不支持 要自己配
手工整理 手工处理 手工截图

看这张表会发现一件事:除了手工整理,几乎所有方法底层都是 Pandoc——包括 DS随心转,它的转换引擎就是 Pandoc。所以真正的差别不在转换质量,而在谁来维护那套环境

方法一:在线转换工具

不装任何东西,粘贴即转。

DS随心转:把 Markdown 粘进编辑区,右侧实时预览 A4 分页效果,选 Word 格式下载。

转换过程中处理掉的:标题层级映射到 Word 的样式层级(这决定了能不能自动生成目录)、表格变成带边框的真实表格、LaTeX 公式转成可编辑的 Word 公式对象、代码块保留等宽字体、Mermaid 流程图渲染成图形嵌入。

它和你自己装 Pandoc 的关系:引擎是同一个,公式转 OMML、标题层级、表格这些底层行为完全一致。区别在于下面三件 Pandoc 用起来最花时间的事,在线版已经替你处理好了:

  • 中文字体:不用再准备 reference-doc 去调各级样式的中文字体;
  • Mermaid 流程图:Pandoc 原生不认 mermaid,命令行要额外装过滤器,在线版直接渲染成图;
  • 公式的边界情况:行内公式被写成 $$、正文里落单的 $、公式里的中文,这些在转换前就做了处理。

适合:不想在本机维护一套转换环境;内容里有流程图、公式这类需要额外处理的元素。

局限:一次处理一篇;需要联网。

方法二:Pandoc 命令行

文档转换领域的通用工具,也是很多其他工具背后实际在用的引擎。

最简单的用法:

pandoc input.md -o output.docx

Pandoc 原生支持把 LaTeX 公式转成 OMML,所以公式在 Word 里是可编辑的。

控制样式:Pandoc 不接受 CSS,它靠一个"参考文档"来决定样式。做法是先导出一个默认的模板,改好里面的样式(字体、字号、行距、标题样式),之后每次转换都引用它:

pandoc --print-default-data-file reference.docx > custom.docx
# 用 Word 打开 custom.docx,修改各级样式后保存
pandoc input.md --reference-doc=custom.docx -o output.docx

中文字体:这是 Pandoc 路线最常见的坑。默认模板的正文字体不是中文字体,转出来的文档中文显示可能不理想。解决办法就是在上面的参考文档里,把"正文"和各级标题样式的中文字体设置好。

批量:命令行的真正长处在这里——本地一批 .md 文件、或者要把转换接进脚本和 CI 流程时,只有命令行做得到。

for f in *.md; do pandoc "$f" --reference-doc=custom.docx -o "${f%.md}.docx"; done

局限:要安装;Mermaid 流程图不会被渲染,需要额外的过滤器;命令行参数有学习成本。

适合:有技术基础、需要批量或接进自动化流程、对样式有精细要求。

方法三:Typora 等编辑器导出

如果你本来就在用 Typora 写作,文件 → 导出 → Word 是最顺手的。

需要注意的是,Typora 的 Word 导出依赖本地安装的 Pandoc,没装的话这个菜单项会提示报错。装好 Pandoc 之后,效果和方法二基本一致,只是省掉了敲命令。

Obsidian、Marktext 等编辑器的情况类似,大多也是调用 Pandoc。

方法四:VS Code 插件

在 VS Code 里写 Markdown 的话,市场里有若干转 Word 的插件,多数同样是对 Pandoc 的封装。装之前留意两点:是否需要另外安装 Pandoc、公式转出来是对象还是图片。

方法五:手工整理

内容极短、只有标题和段落时,直接在 Word 里重新排一遍反而最快。但凡有表格、公式或者超过两屏,就别这么干了。

格式保留对照表

不同方法的具体表现会有差异,但大致规律是一致的:

Markdown 元素 转换后的表现 需要留意
标题 # ## 映射到 Word 标题样式 保住样式才能自动生成目录
加粗、斜体 正常保留
有序 / 无序列表 正常保留 多级缩进偶尔需要手工调
表格 带边框的 Word 表格 合并单元格无法自动实现
代码块 等宽字体独立区域 语法高亮是否保留看工具
LaTeX 公式 Word 公式对象(OMML) 部分工具产出的是图片
图片 嵌入文档 相对路径必须正确
链接 超链接
脚注 Word 脚注 部分简易工具会丢
Mermaid 流程图 渲染成图形 Pandoc 默认不处理
HTML 内嵌标签 视工具而定 复杂 HTML 大概率丢失

四个常见坑

一、标题层级跳级

# 直接跳到 ###,转出来的 Word 目录会缺一层。写的时候按顺序用,别跳。

二、图片路径

Markdown 里的 ![](./images/a.png) 是相对路径。转换工具要能按这个路径找到文件才能嵌入。用在线工具时,本地图片一般需要另外上传;网络图片则要求转换时能访问到那个地址。

三、公式里的中文

LaTeX 里的中文必须包在 \text{} 里,否则容易转换失败或者中文被吞。这一条在公式那篇里有更详细的说明。

四、正文里落单的 $

写"预算 $50 万"时,这个 $ 会被当成公式的起点,可能吞掉后面一大段内容。改成"美元"或者写成 \$。内容越长这个问题越严重,长文档导出失败那篇里有完整的排查方法。

怎么选

引擎都是 Pandoc,所以别按转多少篇来选,按这份转换要接进什么流程来选:

  • 手边就要一份能交付的 Word → 在线工具。中文字体、Mermaid、公式边界情况都已处理好,粘贴即得;
  • 要把转换接进脚本、CI 或定时任务 → Pandoc 命令行,这是它不可替代的地方;
  • 本地有一整批 .md 文件要一次转完 → Pandoc 命令行,配好 reference-doc 后循环处理;
  • 对模板有精细到样式级的要求(比如公司统一的公文格式)→ Pandoc 命令行,自己维护 reference-doc;
  • 已经在用 Typora 写作 → 装个 Pandoc 用它的导出,省掉敲命令;但 Mermaid 和中文字体仍要自己解决。

一句话:在线工具省的是环境维护,命令行换来的是可编程。 两者的转换质量本身没有差别。

常见问题

Word 能直接打开 .md 文件吗?

Word 能把 .md 文件当纯文本打开,但不会解析 Markdown 语法——你会看到满屏的 # 和 *。Word 至今没有内置的 Markdown 解析能力。

Markdown 转 Word 后公式还能编辑吗?

取决于工具。Pandoc 和 DS随心转都会把 LaTeX 公式转成 Word 原生公式对象(OMML),双击可以继续编辑。而截图或者部分简易转换器产出的是图片,不能编辑。

Pandoc 和在线工具该选哪个?

DS随心转的转换引擎就是 Pandoc,两者的转换质量没有差别,选择取决于你要不要可编程能力。要把转换接进脚本、CI,或批量处理本地一批 .md 文件,用 Pandoc 命令行;只是要一份能直接交付的 Word,用在线工具——中文字体、Mermaid 流程图、公式的边界情况都已经配好,不用自己维护环境。

转换后中文字体不对怎么办?

这是自己跑 Pandoc 时的经典问题,需要准备一个设置好中文字体的参考文档,用 --reference-doc 参数指定。在线工具用的是同一个引擎,但中文模板已经配好,不需要额外处理。

图片会一起带过去吗?

本地图片需要保证相对路径正确,转换工具才能找到并嵌入。网络图片要求转换时能访问到该地址。路径错误时图片会变成一个占位符或直接丢失。

动手试一试

本文提到的转换与修复,DS随心转在线就能完成,无需安装软件,导出的 Word 公式和表格都可以继续编辑。

相关阅读