sublime text 导出 markdown 为 word 需依赖 pandoc,必须正确安装并配置 path 或写死全路径;构建系统需精准使用 ${file} 等变量、加双引号防空格,并通过 --reference-doc 指定样式模板控制输出格式。

Sublime Text 本身不支持直接导出 Markdown 为 Word(.docx),必须依赖外部工具 pandoc,且需手动配置构建系统——没装 pandoc 或路径没进 PATH,按 Ctrl + B 只会报错 "pandoc is not recognized"。
确认 pandoc 已正确安装并可被 Sublime 调用
这是最常卡住的一步。Sublime 的构建系统默认使用系统 shell,但不会读取你终端里生效的别名或用户级 PATH 修改。
- 在终端/命令提示符中运行
pandoc --version,确认有输出(≥3.0 推荐) - 如果终端能跑、Sublime 构建却报“command not found”,大概率是 Windows 上没勾选安装时的
Add to PATH,或 macOS/Linux 下用了 zsh/bash profile 但 GUI 应用没加载它 - 临时解法:在
Pandoc.sublime-build里写死pandoc全路径,比如"shell_cmd": "/usr/local/bin/pandoc -o ${file_path}/${file_base_name}.docx ${file}" - Windows 用户注意:路径含空格(如
C:\Program Files\...)必须用双引号包裹整个命令,且反斜杠要转义或改用正斜杠
构建系统配置要点与常见错误
Sublime 的构建系统本质是 shell 命令封装,参数顺序、扩展名、路径变量稍错就生成空文件或报错。
-
${file}是当前文件完整路径,${file_base_name}不含扩展名,${file_path}是目录路径——三者混用会导致输出位置错乱 - 基础命令应为:
pandoc "${file}" -o "${file_path}/${file_base_name}.docx"(双引号防空格路径崩) - 若原文含中文、公式或引用,需加参数:
pandoc "${file}" -f markdown+tex_math_dollars --filter pandoc-citeproc -o "${file_path}/${file_base_name}.docx" - 构建后无反应?检查 Sublime 底部状态栏是否显示“Building...”;无声无息通常是 JSON 文件语法错误(比如多逗号、单引号代替双引号)
为什么不用插件而选手动构建系统
Sublime 上曾有 sublimetext-Pandoc 插件,但它已多年未维护,对 Pandoc 3.x 的新语法(如 markdown+attributes)支持差,且无法控制输出模板。
- 插件隐藏了命令细节,出错时只报“failed”,没法快速判断是语法问题、路径问题还是 filter 缺失
- 构建系统可自由增删参数:加
--reference-doc=custom.docx指定样式模板,加--toc --toc-depth=3插入目录,插件通常不开放这些选项 - 同一份
.sublime-build文件可复用在多台机器,比插件配置更易同步
导出后的 Word 格式控制关键点
Pandoc 生成的 .docx 默认用内置样式,标题、列表能识别,但中文字体、段前距、行高全是英文默认值,直接交稿会被打回来。
- 必须用
--reference-doc参数挂载自定义 Word 模板,模板文件需提前在 Word 里设好「标题 1」「标题 2」等样式的中文字体、段落间距 - 导出模板命令:
pandoc -o reference.docx --print-default-data-file reference.docx,然后用 Word 打开这个reference.docx改样式,保存即可复用 - 不加
--reference-doc时,Pandoc 会把所有内容塞进 Normal 样式,后续在 Word 里手动改样式等于重排一遍 - 表格边框、代码块底色等高级样式,仅靠
--reference-doc不够,还需在 Markdown 源码里用属性语法,例如{.table .striped},否则 Pandoc 不知道该映射到哪个 Word 样式
真正麻烦的不是转换动作本身,而是 Word 样式与 Markdown 语义之间的映射关系——Pandoc 不会猜你想要几号仿宋小标题,它只认 ## 对应 Heading 2 样式,而这个样式长什么样,全看你给的 reference.docx 里怎么定义。











