把仓库按 TeX Live 年份组织分支的约定写进 README: 分支名是哪一年,就表示该分支可用那一年的 TeX Live 直接编译通过。 新增内容包括各分支与 TeX Live / beamer 版本对应表、分支选择方法、 这样划分的原因(beamer 3.69 起 frametitle 内部宏变更导致补丁失效, 现已加入版本自动判别),以及后续新年份的维护约定。
中国海洋大学幻灯片LaTex模板
中国海洋大学幻灯片LaTex非官方模板。
本模板修改自HelmholtzAI模板。在原有模板基础上进行了大量修改。
模板主要使用海大公布的标准色,包括海大蓝、海大天蓝、海大红、樱缤粉、文脉棕、专金、专银。
此外,使用了大量的信息框来增加模板的活力。
文件结构
模板中的文件主要包括:
- slide.tex:主文件,编写的演示文稿内容主要存放在该文件当中。
- oucslide.sty:模板的样式文件。
- font:字体文件夹,所有编译需要用到的字体。默认字体使用的是华为鸿蒙字体。
- theme:主题文件夹。
- beamercolorthemeOUCSlide.sty:颜色定义文件。
- beamerfontthemeOUCSlide.sty:字体定义文件。
- beamerinnerthemeOUCSlide.sty:内部元素定义文件。
- beamerouterthemeOUCSlide.sty:整体布局定义文件。
- beamerthemeOUCSlide.sty:主题定义文件。
- logos:模板中使用的Logo存放文件夹。
- figs:插入的图片文件夹。
- fontawesome.pdf:图标使用说明文件。
使用方法
- 从git上clone项目到本地。目前,共有多个git库供选择,分别是:Github、Gitee、Gitlab、阿里云Code。这些库都和源库保持一致和同步,从理论上来讲,使用任何一个库都可以。
- 安装Tex编译器,推荐使用TexLive,安装成功后,可以使用自带的TeXworks打开目录下的tex文件进行编译。
- 可以安装其他的IDE工具进行Tex文件的编写和修改,推荐使用Visual Studio Code。
- 编译时,请选择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:切到同名的那个分支即可。
# 例如本机是 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 年份发布时:
- 在新版本的 TeX Live 下,用 XeLaTeX 编译当前的
main; - 如果编译不通过,进行修复,注意保持向后兼容,不要破坏旧年份分支;
- 修复通过后,新建一个以该年份命名的分支并提交;
- 把该年份分支快进合并到
main,让main始终是最新版本。
附注:不同年份的 TeX Live 生成的 PDF 在体积上可能略有差异(例如 TeX Live 2024 的 xdvipdfmx 曾一度不做跨页图像去重,导致成品偏大约 4 倍),但页面渲染内容是一致的,不影响使用。
元素介绍
基本信息
Tex文件的开头,是基本信息部分,可以根据需要添加\title{标题}、\subtitle{子标题}、\author{作者}、\date{\today}、\institute{所属机构}。
\newcommand{\last}{敬请批评指正!} 的作用是为了制作最后一页致谢页面而单独设置的,可以修改为任何致谢语句。
特殊页面
模板中有三个特殊的页面,分别是:标题页(首页)、目录页和结尾页。这三个页面由于其特殊性,不能使用frame的常规模板,因此,为它们创建了三个命令进行生成:
\maketitle
\makeoutline
\makelast
使用者三个命令后,将会自动创建首页、目录页和结尾页。
首页和结尾页,使用的是基本信息中的数据,而目录页的内容,将根据\section进行填充。
使用分节
本模板使用分节进行整体规划,章节共三级,对应的关键字分别是:
\section
\subsection
\subsubsection
其中,\section 会有单独的页面进行显示。如下图所示。而且,section还将会出现在目录页面中。
\subsection 和 \subsubsection都没有单独的页面相对应,他们会出现在对应章节的frame中,作为标题进行呈现,并且加入了自动编号的效果。需要说明的是,\subsection是必须的,而 \subsubsection 却可有可无。他们呈现出的最终的效果,如下图所示。
需要注意的是,虽然frame的标题,是由subsection和subsubsection自动生成的,但是frame中的frametitle仍然是必须的,否则没有frametitle这个元素,标题无法自动填充。
使用Frame
章节确定好后,就可以增加Frame来编写幻灯片。使用代码:
\begin{frame}
\frametitle{测试}
\end{frame}
就可以插入一张幻灯片。
需要注意的是:如果幻灯片中使用了代码块,则需要加入关键字fragile。这样,引入的代码才能保持它们原有的样子,如下所示:
\begin{frame}[fragile]
\frametitle{测试}
\end{frame}
当然,也可以使用定义的特殊的frame模板来达到这种效果。
\begin{fragileframe}
\frametitle{测试}
\end{fragileframe}
他们的效果是一样的。
字体
模板使用的默认字体是华为鸿蒙字体 (HarmonyOS Sans)。该字体可以免费商用。
如果对字体不满意,可下载其他字体,放入fonts文件夹,并在beamerfontthemeOUCSlide.sty文件中修改。
推荐的字体包括:思源黑体、阿里普惠字体、OPPO字体、小米字体。这些字体基本上都可以免费商用,并且效果都很不错。关于他们是否能够继续免费商用的政策,请查阅其官方网站以得到最准确的信息。
颜色
根据海大公布的标准颜色,定义了相关颜色,主要包括海大蓝、海大天蓝、海大红、樱缤粉、文脉棕、专金、专银。其中文名称和代码如下表所示。
当然,也可以使用LaTex自带的颜色,例如white、black等。
| 名称 | 中文名 |
|---|---|
| oucblue | 海大蓝 |
| ouclightblue | 海大天蓝 |
| oucred | 海大红 |
| ouccherry | 樱缤粉 |
| oucbrown | 文脉棕 |
| oucgolden | 专金 |
| oucsilver | 专银 |
颜色等级
为了显示更丰富的色彩,定义的海大标准色,每一种颜色,都有十个等级,等级越低,颜色越浅。例如:对于海大蓝,其等级颜色从oucblue90-oucblue10不等,分成10个等级。
信息框
信息框使用边框的形式,提升幻灯片的表现力。
主要的信息框包括:列表框(vcolorbox)、提示框(notebox、importantbox)、信息框(titlebox)、要点框(pointbox)、块(block、exampleblock、alertblock)、标题框(headbox)和文本框(textbox)。它们的效果,如下图所示。
代码
模板可以插入代码块,使用lstlisting即可。
公式
模板中可以直接插入公式,和LaTex中没有什么区别。
脚注
可以在任何地方使用脚注。即便是在各种信息框中也可以。





