无痛让AI由Markdown转Word:Pandoc模板了解一下

用AI写东西最大的烦恼就是格式转换问题。

AI返回的是Markdown格式。就是喜欢用#来表示标题、*来表示斜体、**来表示加粗的那种。但你习惯的是word。

之前也写过可以用预览模式复制粘贴到Word里,避免手动删除的麻烦。但是作为一个每天都要跟word打交道的人,老这样复制粘贴也不是个办法。

最近,经过一番摸索,我觉得用Pandoc模板是最省事的。


Pandoc 是什么

Pandoc 是一个开源命令行工具,一句话,把 Markdown 转成 Word(还有 PDF、HTML、PPT 等等几十种格式)。

它自动识别 Markdown 里的所有格式元素,标题层级、有序无序列表、表格、代码块、引用块、图片、数学公式,全部转成 Word 里的对应对象。一行命令就能用:

powershell 复制代码
pandoc input.md -o output.docx

而且 Pandoc 有一个杀手锏参数,--reference-doc,可以指定一个 Word 模板文件,转出来的 Word 自动套用模板里的所有样式。这就是它跟其他 Markdown 转 Word 工具最大的区别,其他工具转出来的 Word 格式乱七八遭,Pandoc 加模板能让转出来的 Word 跟你手动调的一模一样。


核心思路:Markdown 写到底,模板管格式

我现在的工作流是这样的。

第一步:跟 AI 交互全用 Markdown

markdown是AI最喜欢也是用起来最顺手的格式,前面的博客也写过很多,不再赘述了。

第二步:最后输出前,跑一条 Pandoc 命令

powershell 复制代码
pandoc "稿子.md" --reference-doc="我的模板.docx" -o "稿子_交付版.docx"

就这一行。转出来的 Word 自动套用模板里的所有格式,标题 1 是什么字体字号、正文是宋体小四还是微软雅黑五号、行距是 1.5 倍还是固定值、一级标题有没有自动编号,全部跟你模板里设的一模一样。

第三步:Word 模板是什么

模板就是一个你预先调好格式的空 Word 文档。你在 Word 里手动设好样式,存成 我的模板.docx,以后每次 Pandoc 转换都引用它。

模板里要设什么?举个项目方案模板的例子:

Word 样式 我设的值 对应的 Markdown 写法
Title 微软雅黑二号居中加粗 用 ::: {custom-style="Title"} 围栏指定
Heading 1 微软雅黑小四加粗,绑定自动编号(1. 2. 3.) # 标题
Heading 2 微软雅黑小四加粗,绑定自动编号(1.1 1.2 1.3) ## 标题
Heading 3 微软雅黑小四,绑定自动编号(1.1.1 1.1.2) ### 标题
Normal(正文) 微软雅黑小四,1.5 倍行距,首行缩进 2 字符 直接写段落
代码块 Consolas 五号 ```````````围栏
表格标题(自定义) 微软雅黑五号居中 ::: {custom-style="表格标题"} 围栏

模板设好之后,就不用再碰了。你每次写新东西,只需要关注 Markdown 里的内容对不对,格式就听模板的样式。


需要注意的地方

当然,上面方法虽好,但也有一个问题:

Markdown 自己是纯文本,没有自动编号功能。为了通读方便,我写 Markdown 的时候习惯手动加编号,这样整篇文档结构一目了然。但 Pandoc 把编号原样带进 Word 之后就会跟模板里的自动编号撞车。

模板里 Heading 1/2/3 都绑定了自动编号,Word 看到 Heading 1 就自动在前面加"1.",看到 Heading 2 就加"1.1"。如果 Markdown 里写的是 # 一、背景介绍,转出来就变成了"1. 一、背景介绍",双重编号,丑得没法看。

所以有两种处理方式,看你的偏好:

方式一(推荐):Markdown 里不带编号,直接让 Word 模板管编号。改后的写法:

markdown 复制代码
# 背景介绍
## 市场分析
### 核心指标

好处是省一步脚本处理,直接 Pandoc 转就行。缺点是 Markdown 通读时没有编号,长文档看着不太方便。

方式二:Markdown 里带编号,转 Word 前用脚本一键去掉 。这种我平时用得更多,毕竟 Markdown 是我跟 AI 交互的主要载体,带编号通读起来更顺。转 Word 前跑一下 fix_headings.py 就行,脚本自动备份原文件、去掉编号前缀,不用手动改。


把这条流程固化成 Skill

如果你日常也需要这样的工作流程,不妨做一个 skill。

我自己也在用 Trae 里的 skill 来跑这条链路,触发条件就是说"把 Markdown 转成 Word"。

skill 里有三个核心东西:一个脚本、一条命令、一个 Word 模板。

第一个是 fix_headings.py,功能很简单,扫一遍 Markdown 的标题行,把一、二、三、(一)、(二)、1.、2. 这些编号前缀删掉,自动备份原文件。你如果习惯写带编号的 Markdown 便于通读,转 Word 前让 skill 跑一下这个脚本就行。

第二个是一条 Pandoc 命令,功能就是把 Markdown 转成 Word。命令模板写在 skill 里,长这样:

powershell 复制代码
pandoc "输入文件.md" --reference-doc="模板.docx" -o "输出文件.docx"

核心是 --reference-doc 参数,指向你的 Word 模板文件。转出来的 Word 会自动套用模板里的所有样式,标题字体字号、正文格式、行距、自动编号,全部跟你模板里设的一模一样。

第三个就是那个 Word 模板文件。skill 里要把模板带着,不然换电脑就没了。模板里设什么,前面的表格已经列过了,一句话,你在 Word 里手动调好所有样式,存成空文档,以后 Pandoc 每次转换都引用它。

skill 本身不复杂,就是把上面这三件事串起来。但如果让我手写 Python 脚本来实现,我可能搞不定。我自己的做法是把这条流程的需求、脚本要做什么、Pandoc 命令怎么写、模板要带什么,全部说给 AI 听,然后让 AI 帮我写出来。实际上我就是这么做的,现在的这个 skill 就是 AI 帮我生成的。

你也可以试试。如果你对写脚本没把握,把这篇文章粘贴给 AI,告诉它你要一个 skill,一般情况下 AI 都能帮你写出来。


最后总结一下

你现在有了一套可以复用的markdown转word的工作流:

  • 跟 AI 交互:全用 Markdown,好改、好迭代、好让 AI 读懂改
  • 格式规范:固化在 Word 模板里,不用每次手动调
  • 翻译官:Pandoc 负责把 Markdown 变成 Word,一行命令搞定

你再也不用在 Word 里复制粘贴调格式调半小时了。

快去试试吧。

相关推荐
慢慢来不要急14 分钟前
Anthropic 不用 Git 了,GitHub 也在为智能体重建存储 · 11-06
人工智能·开发工具
宅小年20 分钟前
为什么你的 Grok Bot 总走偏?教你写一个真正好用的 Bot 模板
人工智能
明月_清风21 分钟前
Meta 开源了一个 AI Native 组件库:Astryx,150+ React 组件,专为 AI Agent 而设计
前端·人工智能·ai编程
神鹰手哥_起飞版24 分钟前
一句「你确定吗」能让 AI 把白的说成黑的?我用直接用豆包来做实验
人工智能
afumu31 分钟前
把五个网页版 AI 拉进同一个群聊:不用 API key 的多 Agent 编排
人工智能·chrome·typescript
寂寞的船1 小时前
【Unity知识速递】第4期 MCP for Unity:用 AI 自然语言控制编辑器
人工智能·unity·编辑器
彭祥.1 小时前
Jetson边缘计算实现 红外测温+可见光AI识别系统
人工智能·边缘计算
明王明王2 小时前
从零搭建一个 AI Infra 实验室㉑:llm-d——从单个 vLLM 走向分布式推理
人工智能·ai infra
武子康2 小时前
图片删了,为什么旧链接还能打开、后台还能生成回来?
人工智能·agent