参与开发 - nju-lug/NJUThesis GitHub Wiki

本模板的开发维护主要在 TeX Live 2021 下进行,内部代码主要由 LaTeX3 语法实现。

格式:DocStrip

从0.9.0版以后,本模板从以 DocStrip(.dtx) 格式进行维护。DocStrip 格式是一种“文学编程”,在单个文件中合并了 LaTeX 源代码和说明文档,更有利于宏包的维护与发布。

如果你希望瞅瞅这个模板最初长什么样,可以切换到 legacy 分支。相信我,回过头来看真的惨不忍睹。

由于文档类格式文件 .cls 的内容包含于 .dtx,可以通过简单命令直接释放,所以前者实际上没必要在仓库中保留,仅通过 Releases 页面提供下载。

要使用 .dtx 文件,请在 source 文件夹下打开终端,使用以下命令:

xetex njuthesis.dtxl3build ctan   # 释放文档类格式文件
latexmk njuthesis.dtx             # 生成并查看内置的文档

构建:l3build

模板的构建测试是通过 l3build 宏包实现的。该工具的配置信息存储在仓库根目录下的 build.lua 文件中。

常用命令包括:

l3build ctan     # 生成上传 CTAN 所需的压缩包
l3build doc      # 编译说明手册
l3build install  # 使用仓库中的源代码安装宏包

l3build 会将相关文件拷贝到仓库根目录下的 build 文件夹中进行操作。成功生成的说明手册和压缩包会被拷贝至仓库根目录下。

GitHub Action

通过 GitHub Action 实现了对模板的自动检查。所有被推送到主分支的 commit 都会接受构建检查,检查脚本位于 .github/workflows/ 文件夹下。不同推送方式会触发不同的构建脚本。普通推送触发的是 build.yml,含有标签的推送触发的是 release.yml。后者会生成用于发布的说明手册和两种压缩包。

发布

GitHub Releases

  1. 当你想要将某次 commit 作为 Release 版本发布时,需要对该 committag,例如:

    git tag "v0.14.0"
    
  2. 将该tag推送到主分支,版本 v0.14.0 的源代码就会被成功发布

    git push origin "v0.14.0"
    

上传 CTAN

以上方式生成的压缩包可从 njuthesis 的 CTAN 页面上传更新。