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 公式和表格都可以继续编辑。

相关阅读