自动生成指定样式报告的流程

  • Posted on
  • by

这里我们介绍基于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库直接生成报告简单多了。

参考资料