用 Markdown 写东西很爽,但交作业、交论文、交报告的时候,老师/期刊/甲方要的是 Word。
直接用 Pandoc 转一下?能转,但出来的 docx 打开一看:水平线是过时的 VML 矢量图、表格全贴在左边、代码块没有颜色、有些属性 Word 还会报兼容性警告。能用,但不好看。
于是就有了 M2W。
M2W 是什么
M2W(Markdown → Word)是一个自部署的在线转换服务,底层是 Pandoc 引擎,上层包了一层精心调校的 DOCX 后处理。你在浏览器里写 Markdown,右侧实时预览,点一下就能下载一份排版精致的 .docx 文件。
在线体验:md2doc.mrwuliu.top

它解决了什么问题
Pandoc 是文档转换领域的瑞士军刀,功能强大,但它直接输出的 DOCX 有几个硬伤:
- 水平线丑——Pandoc 用的是已被废弃的 VML
<v:rect>矢量图形画水平线,在新版 Word 里显示异常。 - 表格不居中——表格默认紧贴页面左侧,学术论文里非常难看。
- 没有三线表——中文学术论文标配的「三线表」(上下粗线 + 表头下方细线,无竖线)Pandoc 做不到。
- 代码没颜色——代码块输出后是一片灰白,没有语法高亮。
- 兼容性警告——部分冗余的 OOXML 属性会触发 Word 的格式校验警告。
M2W 在 Pandoc 转完之后,额外跑了五步 OOXML 后处理,一次性解决以上全部问题。
核心功能
LaTeX 公式实时渲染
行内公式 $E=mc^2$ 和独立公式块都能写,编辑器里用 KaTeX 实时渲染,导出的 Word 里是真正的 LaTeX 公式(不是图片)。配合 pandoc-crossref,公式还能自动编号、用 \eqref{} 交叉引用,编号右对齐。

深色 / 浅色主题
编辑器和预览区都支持深色、浅色、跟随系统三种主题。深夜写论文的时候,眼睛会感谢你。

输出效果:Word 里长这样
这是转换后的 docx 在 Microsoft Word 里打开的样子——标题层级、正文、公式、代码块,排版干净。

隐私模式:Pandoc 跑在你的浏览器里
这是我最喜欢的功能。点一下「离线模式」,M2W 会加载一份编译成 WebAssembly 的 Pandoc(pandoc-wasm),在浏览器的 Web Worker 里完成全部转换。你的文档内容不会离开你的设备,不会经过任何服务器。
更厉害的是,服务端那套五步 DOCX 后处理逻辑,用 JavaScript 完整重写了一遍(基于 JSZip),所以离线模式输出的 docx 和服务端输出的一模一样。
其他特性
- 实时预览——左侧编辑,右侧即时渲染标题、代码高亮、表格、公式。
- 拖拽导入——直接把
.md文件拖进页面,自动加载内容。 - 分页控制——工具栏一键插入分页符,精确控制文档分页。
- 交叉引用——基于 pandoc-crossref,图表公式自动编号,中英文前缀自适应(图/表/公式 vs Figure/Table/Equation)。
- 参考文献——支持上传 CSL 引用样式和 BibTeX 文献库,自动生成符合学术规范的参考文献列表。
- 自定义模板——上传
.docx参考模板,输出文档继承模板的字体、段落样式和页面布局。
五步 DOCX 后处理:让输出「能看」
Pandoc 生成 docx 后,M2W 不是简单地修修补补,而是对 OOXML 做了一次完整的「单遍重写」——解压 docx(本质是个 zip),在一次读取、一次写入的过程中,按固定顺序依次完成五个变换:
- 水平线修正——把 Pandoc 那套废弃的 VML
<v:rect>替换成干净的<w:pBdr>段落底边框。 - 表格居中——给每个表格的
<w:tblPr>注入jc="center"。 - 三线表——应用经典学术三线表样式:上下粗边框(sz=12)、表头下方细边框(sz=6)、垂直居中、无内部竖线。
- 代码着色——把 Pandoc 的约 30 种语法 token 类型映射到 GitHub Light 配色(关键字
#CF222E、字符串#0A3069、注释#6E7781……),代码块背景色#F6F8FA。 - 兼容性清理——剥离会触发 Word 校验警告的冗余属性(
tblLook、cnfStyle、durableId等)。
这五个步骤的顺序是有讲究的——水平线修正必须在表格处理之前,代码着色必须在兼容性清理之前。换一次 zip 就改完,高效且正确。
怎么用
网页版(最简单)
打开 md2doc.mrwuliu.top,在编辑器里写 Markdown,点转换,下载 docx。不需要注册,匿名就能用(有速率限制)。
API 调用
# 提交转换
curl -X POST https://md2doc.mrwuliu.top/api/ \
-H "Content-Type: application/json" \
-d '{"text": "# Hello\n\nWorld", "crossref": true}'
# 轮询状态
curl https://md2doc.mrwuliu.top/api/task/{task_id}
# 下载结果
curl https://md2doc.mrwuliu.top/api/task/{task_id}/download -o output.docx
请求体支持 24 个字段,覆盖 Pandoc 的主要能力:目录深度、章节编号、交叉引用前缀、CSL/BibTeX 引用、自定义模板、附件嵌入等。
写在最后
M2W 起初是为了解决自己写论文时的痛点——脑子里想的是 Markdown,但交出去必须是 Word。Pandoc 能转,但转出来不好看;手动调格式又太累。于是花了几天时间,把 Pandoc 包了一层精心调校的后处理,又加了个浏览器端的离线模式,最后打磨成了一个可以自部署的完整服务。
如果你也经常在 Markdown 和 Word 之间反复横跳,不妨试试:md2doc.mrwuliu.top
登录后评论
评论需要先登录。
登录