diff --git a/README.md b/README.md index e7f471b..c787f65 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,53 @@ 3. 可以安装其他的IDE工具进行Tex文件的编写和修改,推荐使用Visual Studio Code。 4. 编译时,请选择XeLaTex,有时候,可能需要连续编译两次,以得到正确的页码和图表编号。 +# 分支与编译器版本 + +本仓库按 **TeX Live 年份**组织分支,规则很简单:**分支名是哪一年,就说明该分支可以用那一年的 TeX Live 直接编译通过**。 + +| 分支 | 对应 TeX Live | beamer 版本 | 说明 | +|------|---------------|-------------|------| +| `main` | 最新版 | 最新 | 始终指向最新的年份分支(当前等于 `2026`) | +| `2026` | TeX Live 2026 | 3.77 | 无需改动源码即可编译通过 | +| `2025` | TeX Live 2025 | 3.72 | 无需改动源码即可编译通过 | +| `2024` | TeX Live 2024 | 3.71 | 无需改动源码即可编译通过 | +| `2023` | TeX Live 2023 | 3.69 | 适配 beamer 3.69 的 frametitle 变更,并修复 allcaps 选项 | +| `2022` | TeX Live 2022 | 3.66 | 原始基线,未做修改 | + +## 我该用哪个分支 + +- **想用最新版本**:直接用 `main` 分支,并配合**最新版 TeX Live**。 +- **本机已经装了某个特定年份的 TeX Live**:切到**同名的那个分支**即可。 + +```bash +# 例如本机是 TeX Live 2023,就用 2023 分支 +git clone -b 2023 https://code.yangyq.net/laoyang/ouc-slide-latex-template.git + +# 已经克隆过的仓库,可以这样切换 +git checkout 2023 +``` + +简单说:**编译器是哪一年的,就用哪一年的分支**,不需要自己去改模板代码。 + +## 为什么要这样分 + +beamer 的内部实现会随 TeX Live 版本变化,而模板中对内部宏的补丁(`\patchcmd`)会因此失效。最典型的一次是: + +- **beamer 3.69(TeX Live 2023)** 起,`\beamer@@frametitle` 改用 `\beamer@insertframetitlecontinuation`,使得面向旧版写法的补丁匹配失败,报 `Patching original frame title failed`。 +- 模板现已加入**版本自动判别**(依据 `\beamer@insertframetitlecontinuation` 是否存在,判断逻辑写在文件顶层),因此 `2023` 及之后的各年份分支**不需要再改动源码**。 +- `2022` 分支保留原始写法,只保证在 TeX Live 2022(beamer 3.66)下编译通过。 + +## 维护约定 + +每当有新的 TeX Live 年份发布时: + +1. 在新版本的 TeX Live 下,用 **XeLaTeX 编译当前的 `main`**; +2. 如果编译不通过,进行修复,注意保持向后兼容,不要破坏旧年份分支; +3. 修复通过后,新建一个**以该年份命名**的分支并提交; +4. 把该年份分支**快进合并到 `main`**,让 `main` 始终是最新版本。 + +> 附注:不同年份的 TeX Live 生成的 PDF 在体积上可能略有差异(例如 TeX Live 2024 的 xdvipdfmx 曾一度不做跨页图像去重,导致成品偏大约 4 倍),但**页面渲染内容是一致的**,不影响使用。 + # 元素介绍 ## 基本信息 Tex文件的开头,是基本信息部分,可以根据需要添加`\title`{标题}、`\subtitle`{子标题}、`\author`{作者}、`\date`{\today}、`\institute`{所属机构}。