自动生成指定样式报告的流程
这里我们介绍基于pandoc、pandoc-crossref软件,使用markdown文件格式作为输入,生成个性化样式的word文档。网上已经有很多相关的文章,最复杂的是生成带有参考文献的论文。我这里所描述的,是和我的工作环境相结合的,便于快速生成报告的流程。我需要的报告,带有层级关系、格式固定,有一些图片和表格的引用。
为了实现这个功能,首先需要配置环境,也就是安装软件。具体步骤如下:
1. 安装 Scoop
打开PowerShell,执行以下命令安装Scoop:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
2. 安装 Pandoc
在 PowerShell 下,运行以下命令安装Pandoc。由于Pandoc需要与pandoc-crossref 版本匹配,当前最高版本为 3.6,但pandoc-crossref版本为 3.5,因此需要指定 Pandoc 3.5 版本:
scoop install [email protected]
3. 安装 pandoc-crossref
运行以下命令安装pandoc-crossref。
scoop install pandoc-crossref
在完成环境配置后,需要进行模板的设置,这一部分是比较个性化的工作,工作量也比较大,首次编辑会遇到各种奇怪的问题,建议在现有模板的基础上进行修改,主要步骤如下:
1. 生成默认模板文件
在工作目录下,运行以下命令生成默认模板文件 ref.docx:
pandoc --print-default-data-file reference.docx > ref.docx
2. 修改模板样式
- 样式修改原则:编辑样式的设置值,而不是直接改动已有元素的样式。
- 参考文档:自定义或创建新样式
3. 表格样式
- 表格默认的样式名称必须是 Table。
- 修改表格样式时,选择"基于该模板的新文档"。
在完成环境配置和报告模板的设置后,就到了最关心的报告生成步骤,这个步骤其实比较简单,虽然命令行比较长,但使用几次也就习惯了,最重要的是要按照一定的流程进行工作,就可以大幅减少工作量:
1. 编写 Markdown 文件
- 编写报告内容,按照要求设置文档的层级、格式及图、表的引用关系。
- 将图片存放在指定路径,并在 Markdown 文件中正确引用。
2. 修改元数据文件
创建一个元数据文件 ref.yaml,示例如下:
title: "报告标题"
author: "作者姓名"
toc: true # 是否生成目录
3. 放置所需文件
将以下文件放在同一路径下(建议使用英文路径):模板文件ref.docx、报告内容文件report.md、图片资源和元数据文件ref.yaml
4. 生成报告
在当前路径下运行以下命令:
pandoc -F pandoc-crossref --reference-doc=ref.docx -M link-citations=true ref.yaml report.md -o report.docx
5. 编辑生成的报告
生成的报告基本满足样式要求,但部分样式(如图片大小等)可能需要手动调整。
使用 Pandoc 自动生成报告,可以将更多精力用于内容的编辑和优化,提高工作效率。这种方式,比在word里用vba实现或者是python库直接生成报告简单多了。
参考资料