XCPC-templates 生成(XCPC 模板生成)
今年在准备我们队模板的时候,发现模板一多,整理就会变得很麻烦。于是搜索了一下其他队的模板库,看看别的队伍是如何整理的:
Markdown 文本编辑
https://github.com/lnkkerst/XCPC-templates/tree/main 可以说是最硬核的方式,因为 Markdown 不存在文件内容引用的方式,会导致文件内容异常庞大。
LaTeX 文本编辑
https://github.com/sunkafei/xcpc-algorithm-templates 该库内虽然没有明显信息,但可以通过 Releases 的 PDF 文件观测出是通过 LaTeX 生成的。
LeTeX (前端等)非侵入式生成
https://github.com/Chen-Jr/ICPC-Code-Template-in-Latex, https://github.com/jasison27/ACM-ICPC-CodeTemplate-LateX 即通过编程语言,自动生成利用 LaTeX
lstinputlisting
来引入代码文件的最终 tex 文件。又或者是 https://github.com/lnkkerst/XCPC-templates/tree/main 通过 Markdown 文件生成前端页面,再打印成 PDF。
这种非侵入的方式、自动生成的方式无疑是优于前两种的。
但目前我所找到的采用第 3 种方式生成的库,可能有以下缺点:
需要自己手动更新配置文件;
需要在自己的电脑上安装相应的环境(比如
g++
,make
,LaTex
编译环境);生成的文件不够自定义,比如有需求:
- 我想要代码前后插入一些说明性文字;
- 某个章节我只想要有一些说明性文字。
配置选项不够完善:比如不能通过配置的方式修改
author
和title
;LaTeX 没有配置好中文;
README 不是很完善。
于是,我重新用 Python 写了一个项目用于解决以上问题:
- 可以通过
gen.ps1
和gen.sh
脚本来自动递归生成每个目录配置文件; - 通过 GitHub Actions 自动化 Build 流程,并发布到 GitHub Releases 下;
- 拓展了配置文件配置项;
- 增加项目根目录的配置用于配置项目元信息;
- 按照自己的审美调整了 LaTeX 的格式,并增加中文支持;
- 完善的 README 文件。
目前我们队正在使用该项目生成我们队的模板,希望也有别的队能够尝试并且提 Issue 或 PR :)。