Tip
本项目采用 GitHub Projects 进行任务管理。 你可以每次选择其中的一个小的 TODO 进行开发;来帮助项目一点一点前进。
一般开发需求分为三种:
-
修改
templates/
中某个模板例:改进
ref.bib
中的示例,在main.tex
中补充注释。 -
修改
bithesis.dtx
文件例:添加新命令,更改
\BITSetup
选项。 -
修改其他文件。
Tip
Windows 开发者若运行 Makefile 遇到问题,请参考后文。
如果改动仅仅涉及某个模板,那么相对简单一些:
- 初次开发前,运行
make copy
,这会生成*.cls
等并更新到templates/
下。 - 编辑模板。
- 测试,确保你的改动能够正确编译;并且不会影响到其他效果。
- 编辑
bithesis.dtx
。 - 运行
make copy
,这会生成新的*.cls
并更新到templates/
下。 - 更新文档(
bithesis-doc.tex
以及bithesis.dtx
中的注释),然后运行make doc
编译出手册bithesis.pdf
。 - 测试,确保你的改动不会影响到其他功能。
Tip
如果要添加新命令,可以先在 templates/
中具体实现,再拷贝到 bithesis.dtx
。
- 本项目采用 LaTeX3,可以参考 LaTeX3: Programming in LaTeX with Ease、expl3 的文档等。
- 关于模板,fduthesis 项目代码有很多最佳实践,可以参考。
- 样式部分则应参考研究生院和教务部的相关文件和通知。
Makefile 主要针对 Linux 和 macOS 开发者;Windows 开发者要确保至少有:
- GNU make——可按 ScoopInstaller/Main:
make.json
中的url
下载。 - GNU coreutils——可使用内置了 coreutils 的 Git Bash 或 Cygwin,或者安装 uutils-coreutils。
当然,也欢迎你贡献更通用的开发脚本。
我们常常需要实时预览代码编译的效果,而 LaTeX 本身没有提供实时编译的功能,导致我们要来回运行 make copy
、latexmk
。
为此 Makefile 提供了一些辅助命令,以 dev-
开头,可以帮助你自动化以上流程。
或者你可以使用类似 rg --files | entr make copy
以及 rg --files | entr latexmk
来达到
「代码修改后立即重新编译」的效果。
(这些命令未必适用于 Windows,可能要手动用 watchexec 等替代。)
运行 make test
将对所有的模板进行编译测试(同样被用于 GitHub Actions)。
运行 make regression-test
进行回归测试,该命令将比较目前已发布的最新版本和本地版本生成的 PDF 的差异。
使用前请确保已经安装下面这些依赖。
- Zsh(POSIX)或 PowerShell 7(Windows)
- diff-pdf
- jq(仅用 Zsh 时需要)
make overleaf version=X.X.X
可以生成上传 overleaf 所需要的 zip 文件。make pkg
可以生成上传 CTAN 所需要的 zip 文件。若已有手册而不想重新编译,可make pkg-only
。(同样被用于 GitHub Actions)make grad version=X.X.X
可以生成用作研究生院官网附件的 zip 文件。
Note
Overleaf 链接已利用 overleaf.com/docs
API 自动指向最新发布版,不再需要手动更新。
首先运行 make overleaf
打包文件。
- 打开 Overleaf,点击左上角
New Projects > Upload Projects
,然后上传 zip 文件。 - 点击
Menu > Compiler
选择XeLaTeX
,然后重新编译。 - 修改项目名称,以便于区分。(我一般加上
BIThesis-
) - 点击
Share > Turn on link sharing
,复制 read 权限的链接。 - 在
BIThesis-wiki
项目的wiki/guide/preface.md
中,更新链接。
在一定量改进和新功能添加以后,需要开始着手发布新的版本。
版本号:参考 Semantic Versioning 2.0.0 | Semantic Versioning 。
上周展示了完整工作流,其中大部分已自动化,只需要手动触发。