乐于分享
好东西不私藏

Markdown与Word的无缝衔接

Markdown与Word的无缝衔接

越来越喜欢用 Markdown 记东西。

简单,方便。写的时候不用总盯着排版。标题、列表、引用这些都很直接,思路会顺很多。对我来说,这是比较接近一种低干扰的写作状态。

但也有一个很现实的问题。平时自己记笔记很好用,一旦到了交作业、交材料,或者要和别人协作,很多时候还是得回到 Word。这时候,前面写得再顺,最后还是会卡在导出这一步。

一开始用的笔记软件,导出 PDF 还可以,导出 Word 就总觉得不够顺手。后来我发现可以用 Pandoc 来做 Markdown 到 Word 的转换,这个问题一下子就有了解法。

它最吸引我的地方有两个。

一个是图片可以跟着过去。因为平时插入图片后,OB会自动创建一个文件夹,图片会保存在对应文件夹中,所以这套方法对我来说很合适。只要图片路径理顺,导出的时候基本能保持原来的状态。

另一个是标题层级能映射过去。Markdown 里的一级、二级、三级标题,转换到 Word 之后还能保留成对应的标题结构,文档的骨架还在。

一开始,这对我来说已经够用了。因为有些材料我转成 Word 之后,可以交给团队里另外的人再做最后的排版调整。也就是说,那时候我的需求主要是把内容和结构顺利送过去。

但后来自己有大作业要写,大作业排版就会让人头疼。这个时候我才真正碰到第二层问题。Pandoc 可以把结构带过去,但它不会自动把 Word 调成我想要的样子。标题字体怎么设,一级二级三级标题怎么统一,编号怎么固定成 1、1.1、1.1.1,段前段后、缩进、行距这些参数怎么保存下来,这些最后还是要自己处理。

问题倒也不是有多难,主要是细碎繁琐。

我平时办公软件用得不算多,所以一开始看到 Word 里的样式、段落、多级列表这些设置,会有点晕。中间也试着自己弄过,改样式、调参数、存模板,后来发现模板好像又没保存成功,一切归零,消磨心力。

后来我就换了个思路,把这件事拆开来看。
既然我真正需要的是一个固定的 Word 样式模板,那我就先把模板这件事解决。标题怎么设、正文怎么设、编号怎么绑、段落参数怎么定,这些都先确定下来,然后把这些需求直接发给agent,让它帮我创建一个 reference.docx。后面 Pandoc 转换的时候,直接调用这个参考模板,就能把 Markdown 的结构映射到我已经设好的 Word 样式上。

走到这一步,流程其实已经通了大半。

第三个问题又出现了,就是路径。

Pandoc 当时是装在 D 盘某个文件夹里的。一开始没有意识到,终端里直接输入 pandoc,系统其实根本认不出这个命令。后来才知道,这是环境变量的问题。准确一点说,是 Pandoc 所在的文件夹没有加到 Path 里。所以命令行报错的时候,我前面一直在怀疑文件名、命令格式、模板路径,绕了一圈,最后发现问题出在更前面。

这个点理顺之后,后面就顺了很多。
模板路径改对,文件名写对,命令里的引号补齐,再加上 chcp 65001 去减少中文编码报错的风险,整个流程就慢慢稳定下来了。到最后,其实真正固定下来的命令也就两条,一条处理编码,一条负责转换。

后来还知道,可以用 .bat 批处理文件把这套流程再往前推一步,甚至做到双击批量转换。这个方向当然也挺有意思,说明事情还能继续往下做。

但走到这里,我反而觉得暂时够了。目前的需求没有复杂到那个程度,能稳定地把 Markdown 转成带模板样式的 Word,已经够用。

有些问题没有一个一上来就很完整的解决方案,更多时候还是见招拆招。先把眼前这一步走通,再处理下一步。逢山开路,遇水搭桥。很多原来觉得细碎、有点难的东西,最后也就是这样一点点摸出来的。