You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandoc将多份Markdown转为带标题页、目录的Docx并替换占位符?

实现方法

完全可以通过Pandoc实现你的需求,以下是两种可行方案:

方案1:快速实现(无需自定义模板)

适合对标题页格式要求不高的场景:

  • 新建一个标题页文件title-page.md,内容如下:
    ---
    title: "你的文档标题"
    project: "目标项目名称"
    author: "你的名字"
    ---
    
    # ${title}$ {-}
    
    **项目:** ${project}
    
    **作者:** ${author}
    
    \pagebreak
    
    说明:{-}用于排除该标题出现在目录中,\pagebreak强制标题页后分页,确保目录从第二页开始。
  • 执行转换命令,按顺序传入标题页和所有Markdown文件,加上--toc参数生成目录:
    pandoc --toc title-page.md chapter1.md chapter2.md ... -o final.docx
    

方案2:自定义模板(精细控制格式)

如果需要标题页有特定排版(比如居中、特殊字体),可以用自定义Docx模板:

  • 先导出Pandoc默认的Docx模板:
    pandoc -o reference-template.docx --print-default-data-file reference.docx
    
  • 用Word打开该模板,编辑标题页区域,插入变量占位符(格式为${变量名}),比如在标题位置输入${title},项目位置输入${project},作者位置输入${author},并在标题页末尾添加分页符。编辑完成后保存模板。
  • 准备元数据(可以放在单独的metadata.yaml文件,或第一个Markdown文件开头):
    ---
    title: "产品需求文档"
    project: "XX系统V2.0"
    author: "产品部"
    ---
    
  • 执行转换命令,指定模板和文件顺序:
    pandoc --toc --template=reference-template.docx metadata.yaml chapter1.md chapter2.md ... -o final.docx
    

额外注意事项

  • 变量名必须完全匹配:YAML中的键要和模板/标题页里的${变量名}大小写一致
  • 可通过--toc-depth=N控制目录显示的标题层级(比如--toc-depth=2只显示H1、H2标题)
  • 确保各Markdown文件的标题层级规范(章节用#,小节用##等),这样目录才能正确生成

内容的提问来源于stack exchange,提问作者Padawan42

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 12:05:24