2022-05-14 17:21:41 +08:00
# 中国海洋大学幻灯片LaTex模板
2022-05-12 04:56:24 +00:00
2022-05-14 17:21:41 +08:00
中国海洋大学幻灯片LaTex非官方模板。
2022-05-12 04:56:24 +00:00
2022-05-13 17:09:13 +08:00
本模板修改自<a href="https://github.com/Helmholtz-AI-Energy/beamer-template" target="_blank">HelmholtzAI</a>模板。在原有模板基础上进行了大量修改。
2022-05-12 04:56:24 +00:00
2026-10-13 08:46:29 +08:00
模板主要使用海大公布的标准色,包括海大蓝、海大天蓝、海大红、樱缤粉、文脉棕、专金、专银,以及后加的苍松绿、暮山紫、琥珀橙。
2022-05-12 04:56:24 +00:00
2022-05-12 12:58:31 +08:00
此外,使用了大量的信息框来增加模板的活力。
2022-05-12 04:56:24 +00:00
2022-05-12 12:58:31 +08:00
# 文件结构
2022-05-12 04:56:24 +00:00
2022-05-12 12:58:31 +08:00
模板中的文件主要包括:
2022-05-12 04:56:24 +00:00
2022-05-12 12:58:31 +08:00
1. slide.tex:主文件,编写的演示文稿内容主要存放在该文件当中。
2. oucslide.sty:模板的样式文件。
3. font:字体文件夹,所有编译需要用到的字体。默认字体使用的是华为鸿蒙字体。
4. theme:主题文件夹。
1. beamercolorthemeOUCSlide.sty:颜色定义文件。
2. beamerfontthemeOUCSlide.sty:字体定义文件。
3. beamerinnerthemeOUCSlide.sty:内部元素定义文件。
4. beamerouterthemeOUCSlide.sty:整体布局定义文件。
5. beamerthemeOUCSlide.sty:主题定义文件。
2022-05-12 16:52:16 +08:00
5. logos:模板中使用的Logo存放文件夹。
2022-05-12 12:58:31 +08:00
6. figs:插入的图片文件夹。
7. fontawesome.pdf:图标使用说明文件。
2022-05-12 16:52:16 +08:00
# 使用方法
2022-05-14 13:34:36 +08:00
1. 从git上clone项目到本地。目前,共有多个git库供选择,分别是:<a href="https://github.com/dryangyq/ouc-slide-latex-template.git" target="_blank">Github</a>、<a href="https://gitee.com/dryangyq/ouc-slide-latex-template.git" target="_blank">Gitee</a>、<a href="https://gitlab.com/dryangyq/ouc-slide-latex-template.git" target="_blank">Gitlab</a>、<a href="https://code.aliyun.com/dryangyq/ouc-slide-latex-template.git">阿里云Code</a>。这些库都和<a href="https://git.yangyq.net/laoyang/ouc-slide-latex-template.git" target="_blank">源库</a>保持一致和同步,从理论上来讲,使用任何一个库都可以。
2022-05-13 17:09:13 +08:00
2. 安装Tex编译器,推荐使用<a href="https://tug.org/texlive/" target="_blank">TexLive</a>,安装成功后,可以使用自带的TeXworks打开目录下的tex文件进行编译。
3. 可以安装其他的IDE工具进行Tex文件的编写和修改,推荐使用<a href="https://code.visualstudio.com/" target="_blank">Visual Studio Code</a>。
2022-05-12 16:52:16 +08:00
4. 编译时,请选择XeLaTex,有时候,可能需要连续编译两次,以得到正确的页码和图表编号。
2026-10-12 11:25:25 +08:00
# 分支与编译器版本
本仓库按 **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 | 无需改动源码即可编译通过(PDF 体积说明见下) |
| `2023` | TeX Live 2023 | 3.69 | 适配 beamer 3.69 的 frametitle 变更,并修复 allcaps 选项 |
| `2022` | TeX Live 2022 | 3.66 | 保留早期 beamer 的写法(旧版 frametitle 补丁) |
### 两点说明
**一、各分支的 PDF 都是用对应年份的 TeX Live 编译出来的。**
也就是说,`2023` 分支里的 `slides.pdf` 出自 TeX Live 2023,
`2026` 分支里的出自 TeX Live 2026,以此类推。功能上各分支内容一致,
差别只在于适配各自 beamer 版本的源码写法。
**二、`2024` 分支的 PDF 体积明显偏大(约 9.7 MB,其他年份约 2.4 MB)。**
这是 TeX Live 2024 的 `xdvipdfmx` 一度不做跨页图像去重导致的,
从 TeX Live 2025 起恢复正常。**页面渲染内容与其他年份完全一致**,不影响使用。
## 我该用哪个分支
- **想用最新版本**:直接用 `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 倍),但**页面渲染内容是一致的**,不影响使用。
2022-05-12 16:52:16 +08:00
# 元素介绍
2022-05-12 17:46:35 +08:00
## 基本信息
Tex文件的开头,是基本信息部分,可以根据需要添加`\title` {标题}、`\subtitle` {子标题}、`\author` {作者}、`\date` {\today}、`\institute` {所属机构}。
`\newcommand{\last}{敬请批评指正!}` 的作用是为了制作最后一页致谢页面而单独设置的,可以修改为任何致谢语句。
## 特殊页面
模板中有三个特殊的页面,分别是:标题页(首页)、目录页和结尾页。这三个页面由于其特殊性,不能使用frame的常规模板,因此,为它们创建了三个命令进行生成:
```
\maketitle
\makeoutline
\makelast
```
使用者三个命令后,将会自动创建首页、目录页和结尾页。
首页和结尾页,使用的是基本信息中的数据,而目录页的内容,将根据`\section` 进行填充。
2026-10-12 11:25:25 +08:00
## 目录页样式(自适应方框)
目录页默认使用**自适应方框**样式:每一个一级标题(`\section` )被放进一个独立的方框里,**方框的高度、以及方框内文字的字号,都会根据一级标题的数目自动计算**,并且方框会自动均分、铺满整个目录页。章节少时方框又高又大、字号醒目;章节多时方框自动变矮、字号自动缩小,不需要手工调任何一个数字。
方框内的文字**左对齐**,左侧只留一点点缩进,读起来更像一份正常的目录。

### 配色:默认海大红,蓝色可选
目录页默认使用**海大红**( `oucred` )——和各章节标题页的颜色保持一致。
这是因为目录页上「目录」二字本身是**海大蓝**的,如果目录项再用蓝色,整页就分不出层次。用海大红正好和章节标题页呼应。
如果就喜欢蓝色,改一行即可切回海大蓝:
```
\toctheme{red} % 默认:海大红,与各章节标题页同色
\toctheme{blue} % 海大蓝,与目录页标题「目录」同色
```

### 三种方框样式
在导言区用一行命令即可切换,样式与配色可以自由组合:
```
\settocstyle{box} % 默认:浅色底 + 圆角框 + 圆形序号
\settocstyle{solid} % 实心色底 + 白色文字
\settocstyle{bar} % 白底 + 左侧粗色条
```


章节较多时(下面这张是 9 个一级标题),方框和字号会自动压缩:

### 可调参数
所有参数都可以在导言区用 `\setlength` 覆盖,一般**不需要改**:
| 参数 | 默认值 | 含义 |
|------|--------|------|
| `\tocareamargin` | `52pt` | 目录区上下预留的高度(自动模式下从 `\textheight` 中扣除) |
| `\tocareaheight` | `0pt` | 直接指定目录区高度;`0pt` 表示自动 |
| `\tocboxgap` | `10pt` | 方框之间的理想间距(空间紧张时会自动压缩) |
| `\tocboxgapmin` | `2pt` | 方框之间允许的最小间距 |
| `\tocboxmaxheight` | `110pt` | 单个方框的最大高度 |
| `\tocboxleftpad` | `2.5pt` | 方框内文字距左边框的距离(只留一点点) |
| `\tocfontmax` | `26pt` | 方框内文字的最大字号 |
| `\tocfontwarn` | `8pt` | 字号低于该值时会给出警告 |
例如,希望方框之间更紧凑一些:
```
\setlength{\tocboxgap}{6pt}
```
### 几点说明
1. **目录页需要连续编译两次** :章节数目是从上一次编译生成的 `.toc` 文件里读出来的。第一次编译时 `.toc` 还是空的,目录页会是空白,再编译一次即可正常。
2. 方框的序号和标题是**超链接**,在 PDF 里点击会直接跳到对应章节。
3. 一级标题**太多时(大约 9 个以上)**,方框和字号会变得偏小,编译日志里会有 `oucslide Warning` 提示。这种情况下建议合并章节,或者把目录页改回普通的列表样式。
4. 如果确实想换回旧版那种简洁的列表目录,把 `\makeoutline` 里的 `\ouc@toc@body` 换回 `\tableofcontents[hideallsubsections]` 即可(旧的模板定义仍保留在 `beamerouterthemeOUCSlide.sty` 中)。
2022-05-12 16:52:16 +08:00
## 使用分节
本模板使用分节进行整体规划,章节共三级,对应的关键字分别是:
```
\section
\subsection
\subsubsection
```
2022-05-12 17:46:35 +08:00
其中,`\section` 会有单独的页面进行显示。如下图所示。而且,section还将会出现在目录页面中。
2022-05-12 16:52:16 +08:00

2022-05-14 13:38:35 +08:00
`\subsection` 和 `\subsubsection` 都没有单独的页面相对应,他们会出现在对应章节的frame中,作为标题进行呈现,并且加入了自动编号的效果。需要说明的是,`\subsection` 是必须的,而 `\subsubsection` 却可有可无。他们呈现出的最终的效果,如下图所示。
2022-05-12 16:52:16 +08:00

2022-05-12 17:46:35 +08:00
**需要注意的是,虽然frame的标题,是由subsection和subsubsection自动生成的,但是frame中的frametitle仍然是必须的,否则没有frametitle这个元素,标题无法自动填充。**
## 使用Frame
章节确定好后,就可以增加Frame来编写幻灯片。使用代码:
```
\begin{frame}
\frametitle{测试}
\end{frame}
```
就可以插入一张幻灯片。
2022-05-14 13:44:35 +08:00
需要注意的是:如果幻灯片中使用了代码块,则需要加入关键字`fragile` 。这样,引入的代码才能保持它们原有的样子,如下所示:
2022-05-12 17:46:35 +08:00
```
\begin{frame}[fragile]
\frametitle{测试}
\end{frame}
```
当然,也可以使用定义的特殊的frame模板来达到这种效果。
```
\begin{fragileframe}
\frametitle{测试}
\end{fragileframe}
```
他们的效果是一样的。
## 字体
2022-05-13 17:09:13 +08:00
模板使用的默认字体是<a href="https://developer.harmonyos.com/cn/docs/design/font-0000001157868583" target="_blank">华为鸿蒙字体 (HarmonyOS Sans)</a>。该字体可以免费商用。
2022-05-12 17:46:35 +08:00
如果对字体不满意,可下载其他字体,放入fonts文件夹,并在`beamerfontthemeOUCSlide.sty` 文件中修改。
2022-05-14 13:44:35 +08:00
推荐的字体包括:<a href="https://github.com/adobe-fonts/source-han-sans" target="_blank">思源黑体</a>、<a href="https://alibabafont.taobao.com/wow/alibabafont/act/alifont" target="_blank">阿里普惠字体</a>、<a href="https://www.thosefree.com/oppo-sans" target="_blank">OPPO字体</a>、<a href="https://web.vip.miui.com/page/info/mio/mio/detail?postId=33935854" target="_blank">小米字体</a>。这些字体基本上都可以免费商用,并且效果都很不错。关于他们是否能够继续免费商用的政策,请查阅其官方网站以得到最准确的信息。
2022-05-12 17:46:35 +08:00
## 颜色
2026-10-13 08:46:29 +08:00
根据海大公布的标准颜色,定义了相关颜色。其中文名称和代码如下表所示。
2022-05-12 17:46:35 +08:00
2022-05-14 17:21:41 +08:00
当然,也可以使用LaTex自带的颜色,例如white、black等。
2026-10-13 08:46:29 +08:00
| 名称 | 中文名 | 说明 |
|--------------|--------------|------|
| oucblue | 海大蓝 | 海大标准色 |
| ouclightblue | 海大天蓝 | 海大标准色 |
| oucred | 海大红 | 海大标准色 |
| ouccherry | 樱缤粉 | 海大标准色 |
| oucbrown | 文脉棕 | 海大标准色 |
| oucgolden | 专金 | 海大标准色 |
| oucsilver | 专银 | 海大标准色 |
| oucpine | 苍松绿 | 新增,深绿 |
| oucdusk | 暮山紫 | 新增,深紫 |
| oucamber | 琥珀橙 | 新增,深橘 |
### 新增的三个颜色
已有的浅色(樱缤粉、专金、专银)在内容多的时候不太够用,因此补充了三个**较深的颜色**——
深色的好处是**和白色文字有足够的对比度**,可以直接当作色块底色(`pointbox` 、`titlebox` 、
`block` 等)使用,不必再担心白字看不清。
| 名称 | 色值 | 白字对比度 | 命名与定位 |
|------|------|-----------|-----------|
| `oucpine` | RGB 30, 86, 64 | 8.54 | **苍松绿** ——取自传统色「苍松」,色相偏青的深绿,沉静稳重 |
| `oucdusk` | RGB 92, 58, 118 | 9.04 | **暮山紫** ——取自传统色「暮山紫」(暮色中的远山),深紫而不艳 |
| `oucamber` | RGB 196, 82, 16 | 4.60 | **琥珀橙** ——取自传统色「琥珀」,高饱和的深橘 |
三点说明:
1. **琥珀橙和文脉棕不会混淆** :文脉棕是「低饱和的暗褐」,琥珀橙是「高饱和的深橘」,
两者在饱和度上拉开了明显差距(色相接近,但饱和度 0.61 vs 0.98)。
2. 三个新颜色**同样带十个色阶**( `oucpine10` ~ `oucpine90` 等),浅色等级可以当背景底。
3. 对比度按 WCAG 计算,**≥ 4.5 即白字清晰可读**。三个新颜色都在 4.5 以上
(对比度越高,白字越清晰)。

2022-05-12 17:46:35 +08:00
## 颜色等级
为了显示更丰富的色彩,定义的海大标准色,每一种颜色,都有十个等级,等级越低,颜色越浅。例如:对于海大蓝,其等级颜色从oucblue90-oucblue10不等,分成10个等级。
## 信息框
信息框使用边框的形式,提升幻灯片的表现力。
2022-05-13 11:11:18 +08:00
主要的信息框包括:列表框(`vcolorbox` )、提示框(`notebox` 、`importantbox` )、信息框(`titlebox` )、要点框(`pointbox` )、块(`block` 、`exampleblock` 、`alertblock` )、标题框(`headbox` )和文本框(`textbox` )。它们的效果,如下图所示。
2022-05-12 17:46:35 +08:00





2022-05-13 11:11:18 +08:00

2022-05-12 17:46:35 +08:00
2026-10-13 08:46:29 +08:00
### 要点框自动排布(pointboxgrid)
要点框数量多的时候,不需要自己摆 `columns` ——用 `pointboxgrid` 环境会自动排成网格:
```
\begin{pointboxgrid}{高度}
\pointitem{标题}{颜色}{内容}
\pointitem{标题}{颜色}{内容}
...
\end{pointboxgrid}
```
**排布规则:每行最多 4 个;超过 4 个自动分成多行,并尽量均匀(上行不少于下行)。**
| 个数 | 排布 | 个数 | 排布 |
|------|------|------|------|
| 1~4 | 一行 | 9 | 3 + 3 + 3 |
| 5 | 3 + 2 | 10 | 4 + 3 + 3 |
| 6 | 3 + 3 | 11 | 4 + 4 + 3 |
| 7 | 4 + 3 | 12 | 4 + 4 + 4 |
| 8 | 4 + 4 | N | 行数 = ⌈N/4⌉,前 N mod 行数 行每行多放一个 |

几点说明:
1. **高度参数的含义和 `pointbox` 的 `height` 一样** ,是固定高度——内容别写超,超了会画到框外(见下)。数量多时记得**把高度调小**。
2. **行数多了会超出页面底部** 。经验值:正文区高约 243pt,总高 ≈ `69 + 行数×高度 + (行数−1)× 25` ( pt)。
所以 **4 行时高度不要超过 24pt** 。超过时编译日志里会有 `oucslide Warning` 提醒。
3. 想让每行放更多/更少,可改 `\l_ouc_pbg_max` (默认 4);间距可改 `\l_ouc_pbg_gap` (横向,默认 8pt)与
`\l_ouc_pbg_vgap` (纵向,默认 6pt)。
4. 单个要点框仍然可以像以前那样手写 `columns` + `pointbox` ,两种用法并存。
2026-10-13 15:12:07 +08:00
## 图示组件(扁平风格)
模板自带 9 个**扁平简约**图示组件:圆角色块 + 实心纯色 + 白字 + 细箭头,
**无渐变、无阴影、无立体** 。全部用纯 TikZ 绘制,不依赖任何外部绘图宏包。

### 颜色:一个或多个都可以
所有组件的**颜色列表写在方括号里**(可选参数)。写一个就是全部同色,
写多个就**按顺序取色、不够时自动循环**:
```
\flatflow[oucblue]{数据采集, 数据清洗, 模型训练, 结果评估} % 全部海大蓝
\flatflow[oucblue,oucred,oucpine,oucamber]{数据采集, 数据清洗, 模型训练, 结果评估}
% ← 4 个块 4 种颜色
\flatflow[oucred,oucblue]{块一, 块二, 块三, 块四, 块五, 块六}
% ← 2 色循环:红蓝红蓝红蓝
```
> ⚠️ 颜色**必须写成方括号 `[ ]`**。若误写成花括号 `{ }`,颜色会被当成第一个条目,
> 编译时会报 `图示组件的颜色要写在方括号里` 的明确错误(不会静默出错)。
### 九个组件速查
| 命令 | 说明 |
|------|------|
| `\flatflow[颜色]{条目1, 条目2, ...}` | **横向箭头流程** ,自动等分满宽 |
| `\flatstack[颜色]{条目1, 条目2, ...}` | 纵向流程 |
| `\flatcycle[颜色]{条目1, ...}` | 循环图(弧线箭头首尾相接) |
| `\flathub[颜色]{中心文字}{环绕1, 环绕2, ...}` | **中心辐射** (中心圆 + 环绕卡片) |
| `\flatsteps[颜色]{条目1, ...}` | 阶梯递进 |
| `\flattime[颜色]{年份列表}{事件列表}` | 时间轴(节点上下交替) |
| `\flatquad[颜色]{左上}{右上}{左下}{右下}` | 四象限 |
| `\flatpyramid[颜色]{顶层, ..., 底层}` | 金字塔(上窄下宽) |
| `\flatcompare[左色][右色]{左标题}{左内容}{右标题}{右内容}` | 左右对比 |
示例(`slides.tex` 里有完整的 5 页演示):
```
\flatflow[oucblue,oucred,oucpine,oucamber]{数据采集, 数据清洗, 模型训练, 结果评估}
\flathub[oucblue,oucred,oucpine,oucamber,oucdusk]{核心}{可行性, 必要性, 创新性, 实用性}
\flattime[oucblue,oucred,oucpine,oucdusk]{2020, 2021, 2023, 2025}{立项, 方案设计, 中期检查, 结题验收}
\flatcompare[oucpine][oucred]{优势}{响应快、成本低、易于维护}{不足}{精度受限、依赖数据质量}
```
`\flatquad` 与 `\flatcompare` 的颜色是独立的固定参数(分别 1 个和 2 个),
不参与循环取色。
### 几点说明
1. 颜色可以直接用模板的 10 个颜色(`oucblue` 、`oucred` 、`oucpine` 、`oucdusk` 、`oucamber` 等)。
2. 横向流程会自动把 N 个块加间隙**摊满整行**,不需要手算宽度。
3. 纵向对比、四象限这类元素较宽,建议用 `\begin{center}...\end{center}` 居中。
4. 这套组件已用 TeX Live 2022~2026 逐一编译验证:0 错误、0 溢出,且跨版本渲染逐像素一致。
2022-05-12 17:46:35 +08:00
## 代码
模板可以插入代码块,使用`lstlisting` 即可。
## 公式
模板中可以直接插入公式,和LaTex中没有什么区别。
## 脚注
可以在任何地方使用脚注。即便是在各种信息框中也可以。