LaTeXbeamer排版
LaTeXbeamer排版
自己排版了一个beamer的模板。
一、主要功能
- 演示文档可以分成frontmatter、mainmatter、backmatter三个部分。其中,frontmatter部分用于排版引入的部分,如课题引入、知识复习、课前准备等,这一部分不进入目录;mainmatter部分是演示文档的正文,可以分成两个或多个学时,每个学时有独立的目录;backmatter用于排版结束前的辅助内容,如作业、提问、致谢等,不进入目录。
- 正文部分根据section、subsection、subsubsection等章节结构生成演示文档的各级标题,对各级标题的编号、位置、字体等内容进行了设置。
二、文档结构
主文档同目录下有一个beamercolorthemewonderbeamer.sty、beamerouterthemewonderbeamer.sty、beamerthemewonderbeamer.sty三个文件,分别定义了beamer的颜色主题、外部主题和模板基础,这三个文件是以清华的主题为基础而进行了部分的修改;同目录下有一个template目录,里面存放了个人的图标myogo.jpg。文档结构如下:
- 项目主目录
- ├── 主文档.tex
- ├── beamercolorthemewonderbeamer.sty
- ├── beamerouterthemewonderbeamer.sty
- ├── beamerthemewonderbeamer.sty
- ├── template
- ├── myogo.jpg
三、字体准备
系统要安装有新罗马字体、Courier New字体、楷体_GB2312。
四、运行引擎
我安装的是texlive2025-20250308.iso,使用的引擎是xelatex。
五、模板文档的内容
1. beamerthemewonderbeamer.sty
- % ==============================================================================
- % 一、模板基础声明:指定LaTeX版本、包信息(必填,确保模板兼容性)
- % ==============================================================================
- % 声明所需LaTeX版本:需LaTeX2e及以上(当前主流LaTeX版本)
- \NeedsTeXFormat{LaTeX2e}
- % 声明包名称、版本、更新日期和功能描述
- \ProvidesPackage{beamerthemewonderbeamer}
- [2021/11/15 v1.1.0 A Beamer Theme for Tsinghua University (THU)]
- % 定义模板简称命令:\thubeamer 输出 "thu-Beamer"(textsc:小型大写字母)
- \def\thubeamer{\textsc{thu}\-\textsc{Beamer}}
- % ==============================================================================
- % 二、导入依赖包(Package):加载Beamer所需功能模块,覆盖排版、绘图、数学等
- % ==============================================================================
- % 中文处理包:支持中文标题、正文、图表注释等中文排版
- \RequirePackage{ctex}
- % 代码高亮包:用于插入源代码并实现语法高亮(如C++、Python代码)
- \RequirePackage{listings}
- % 绘图核心包:用于绘制图形、节点、流程框图等
- \RequirePackage{tikz}
- % tikz外部化库:支持将tikz图形导出为独立文件(优化编译速度)
- \usetikzlibrary{external}
- % tikz箭头库:提供丰富的箭头样式(如带圆角的箭头、双向箭头)
- \usetikzlibrary{arrows.meta}
- % tikz定位库:支持节点相对定位(如下方、右侧等,方便排版)
- \usetikzlibrary{positioning}
- % tikz形状库:提供预定义几何形状(如圆形、菱形、多边形)
- \usetikzlibrary{shapes}
- % PGF绘图基础包:tikz的底层依赖,支持基础图形绘制
- \RequirePackage{pgf}
- % 多列排版包:支持将页面分成多列(如两栏展示内容)
- \RequirePackage{multicol}
- % 多媒体包:支持在Beamer中插入视频、音频文件
- \RequirePackage{multimedia}
- % 数学计算包:支持长度、数值计算(如调整间距、尺寸)
- \RequirePackage{calc}
- % AMS数学包:提供更丰富的数学公式排版功能(如矩阵、分式)
- \RequirePackage{amsmath}
- % AMS定理包:支持自定义定理、定义、引理等环境
- \RequirePackage{amsthm}
- % AMS符号包:提供更多数学符号(如集合符号、希腊字母变体)
- \RequirePackage{amssymb}
- % 数学粗体包:用于设置粗体数学符号(如\bm{\alpha} 表示粗体α)
- \RequirePackage{bm}
- % 图形包:支持插入图片(JPG、PNG、PDF等格式)
- \RequirePackage{graphicx}
- % 自适应表格包:支持表格宽度自适应页面(避免表格溢出)
- \RequirePackage{tabularx}
- % 表格增强包:提供更灵活的表格列格式定义
- \RequirePackage{array}
- % 彩色表格包:支持表格背景色、文字色设置
- \RequirePackage{colortbl}
- % 专业表格包:提供更美观的表格线(如粗线、细线组合)
- \RequirePackage{booktabs}
- % 跨行表格包:支持表格单元格跨行合并(\multirow命令)
- \RequirePackage{multirow}
- % 枚举增强包:支持自定义枚举列表样式(如字母、罗马数字编号)
- \RequirePackage{enumerate}
- % 超链接包:支持插入可点击的超链接(如引用文献、网页链接)
- \RequirePackage{hyperref}
- % 算法环境包:用于排版算法步骤(如伪代码)
- \RequirePackage{algorithm}
- % 算法语法包:定义算法伪代码的语法规则(如if、for关键字)
- \RequirePackage{algorithmic}
- % 字体编码包:使用T1编码(优化英文字体显示,支持特殊字符)
- \RequirePackage[T1]{fontenc}
- % 补充包:latexsym(额外符号)、xcolor(颜色增强)、multicol(多列)、calligra(书法字体)
- \RequirePackage{latexsym,xcolor,multicol,calligra}
- % 补充包:pstricks(PostScript绘图)、listings(代码高亮)、stackengine(文本叠加)
- \RequirePackage{pstricks,listings,stackengine}
- % 参考文献包:支持参考文献排序与压缩、数字编号格式
- \RequirePackage[sort&compress,numbers]{natbib}
- % 彩色框包:用于创建自定义彩色框(如提示框、代码框)
- \RequirePackage{tcolorbox}
- % tcolorbox皮肤库:提供更多框体样式(如圆角、阴影)
- \tcbuselibrary{skins}
- % tcolorbox栅格库:支持彩色框栅格布局(多框体排列)
- \tcbuselibrary{raster}
- % tcolorbox分页库:支持彩色框跨页显示(避免内容被截断)
- \tcbuselibrary{breakable}
- % tcolorbox外部化库:支持将彩色框导出为独立文件
- \tcbuselibrary{external}
- % 文本装饰包:支持下划线、删除线(normalem:保留\em命令的斜体功能)
- \RequirePackage[normalem]{ulem}
- % 现代表格包:提供更强大的表格功能(支持跨页、彩色、自适应)
- \RequirePackage{tabularray}
- % 处理Beamer选项:解析用户传入的模板选项(如主题颜色、字体大小)
- \ProcessOptionsBeamer
- % ==============================================================================
- % 三、文档分区控制:定义前言/正文/附录分区,用于区分不同区域的排版逻辑
- % ==============================================================================
- % 定义布尔变量:是否为前言区(默认false,即不处于前言区)
- \newif\ifisfrontmatter\isfrontmatterfalse
- % 定义布尔变量:是否为正文区(默认true,即处于正文区)
- \newif\ifismainmatter\ismainmattertrue
- % 定义布尔变量:是否为附录区(默认false,即不处于附录区)
- \newif\ifisbackmatter\isbackmatterfalse
- % 前言区命令:调用后切换为前言区(isfrontmatter=true,其余为false)
- \newcommand{\frontmatter}{\isfrontmattertrue\ismainmatterfalse\isbackmatterfalse}
- % 正文区命令:调用后切换为正文区(ismainmatter=true,其余为false)
- \newcommand{\mainmatter}{\isfrontmatterfalse\ismainmattertrue\isbackmatterfalse}
- % 附录区命令:调用后切换为附录区(isbackmatter=true,其余为false)
- \newcommand{\backmatter}{\isfrontmatterfalse\ismainmatterfalse\isbackmattertrue}
- % ==============================================================================
- % 四、自定义变量与核心功能命令:封装课程名、封面、目录等常用功能
- % ==============================================================================
- % 定义课程名变量(toks类型:存储文本内容)
- \newtoks\kecheng
- % 课程名设置命令:\KeCheng{课程名称},将参数存入\kecheng变量
- \newcommand{\KeCheng}[1]{\kecheng={#1}}
- % 封面页命令:\CoverPage 生成封面页(调用\maketitle,使用Beamer默认标题样式)
- \newcommand{\CoverPage}{
- \begin{frame}{} % 新建无标题帧(幻灯片)
- \maketitle % 生成标题页(需提前设置\title、\author、\institute等)
- \end{frame}
- }
- % 标题页命令:\TitlePage 生成自定义样式标题页(居中布局,带彩色框)
- \newcommand{\TitlePage}{
- \begin{frame}{} % 无标题帧
- \vbox{} % 空盒子(占位,调整页面顶部间距)
- \vfill % 垂直填充(将内容推至页面中间)
- \begin{centering} % 内容居中
- % 标题彩色框:sep=内边距8pt,居中,圆角
- \begin{beamercolorbox}[sep=8pt,center,rounded=true]{title}
- \usebeamerfont{title}\inserttitle\par% 应用标题字体,插入标题(\title内容),换行
- \ifx\insertsubtitle\@empty% 判断是否有副标题
- \else% 若有副标题
- \vskip0.25em% 垂直间距0.25em
- {\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}% 应用副标题字体和颜色,插入副标题
- \fi% 结束判断
- \end{beamercolorbox}% 结束标题框
- \vskip2cm\par% 垂直间距2cm,换行
- % 作者/单位框:sep=内边距8pt,居中
- \begin{beamercolorbox}[sep=8pt,center]{author}
- \usebeamerfont{institute}\insertinstitute\hskip1cm\usebeamerfont{author}\insertauthor
- % 应用单位字体,插入单位(\institute内容)→ 1cm水平间距 → 应用作者字体,插入作者(\author内容)
- \end{beamercolorbox}
- \end{centering}
- \vfill % 垂直填充(平衡页面底部间距)
- \end{frame}
- }
- % 目录页命令:\makecontentspage 生成主要内容目录(隐藏子章节)
- \newcommand{\makecontentspage}{
- \begin{frame}{主要内容} % 标题为"主要内容"的帧
- \transfade% 页面切换效果:淡入淡出
- \tableofcontents[hideallsubsections] % 生成目录,隐藏所有子章节
- \end{frame}
- }
- % 红色下划线命令:\reduline{文本},生成红色粗下划线(替代默认黑色下划线)
- \newcommand{\reduline}{\bgroup% 开始局部作用域(不影响全局)
- \markoverwith{\textcolor{red}{\rule[0.5ex]{2pt}{3pt}}}% 定义下划线样式:红色、位置0.5ex(对齐文本基线)、宽度2pt、高度3pt
- \ULon}% 启用下划线功能
- % 描述列表标签命令:自定义描述列表(description)的标签样式(红色粗体)
- \newcommand{\descriptionlabel}[1]{\hspace{\labelsep}\normalfont\bfseries\textcolor{red}{#1}}
- % 自定义表格列格式:x列 → 居中对齐的自适应宽度列(基于tabularx的X列)
- \newcolumntype{x}{>{\centering\arraybackslash}X}
- % 重定义强调命令:\emph{文本} 改为红色文本(默认是斜体,此处自定义为红色突出)
- \let\oldemph\emph % 保存原始\emph命令(备份,可通过\oldemph调用)
- \renewcommand{\emph}[1]{{\color{red}#1}} % 新\emph:将文本设为红色
- % 页面切换效果命令:\guodu 等同于淡入淡出效果(简化\transfade调用)
- \newcommand{\guodu}{\transfade}
- % 部分命令:\mypart{部分名称},新建部分并重置章节编号
- \newcommand{\mypart}[1]{\part{#1} % 新建部分(Beamer的\part命令)
- \setcounter{section}{0} % 重置章节计数器(新部分从第1节开始)
- \makeatletter % 允许使用@开头的内部命令
- \beamer@tocsectionnumber=0 % 重置目录章节编号(同步计数器)
- \makeatother} % 结束内部命令使用
- % 章节开头自动生成目录页:每节开始前插入当前章节的目录(仅显示当前节,隐藏子节)
- \AtBeginSection[]
- {
- \begin{frame} % 无标题帧
- \tableofcontents[
- currentsection, % 高亮显示当前章节
- hideallsubsections] % 隐藏所有子章节
- \end{frame}
- }
- % ==============================================================================
- % 五、尺寸定义:设置页眉、标题、副标题、页脚的固定高度(控制布局)
- % ==============================================================================
- % 定义页眉高度:10pt
- \newlength{\headlineheight}
- \setlength{\headlineheight}{10pt}
- % 定义帧标题高度:20pt
- \newlength{\frametitleheight}
- \setlength{\frametitleheight}{20pt}
- % 定义帧副标题高度:15pt
- \newlength{\framesubtitleheight}
- \setlength{\framesubtitleheight}{15pt}
- % 定义页脚高度:10pt
- \newlength{\footlineheight}
- \setlength{\footlineheight}{10pt}
- % ==============================================================================
- % 六、Beamer主题核心配置:指定内部/外部/颜色主题,设置块样式、枚举样式
- % ==============================================================================
- % 进入演示模式(仅对Beamer演示生效,不影响打印)
- \mode<presentation>
- {
- \useinnertheme{thubeamer} % 使用内部主题thubeamer(控制列表、标题、块的内部样式)
- \useoutertheme{wonderbeamer} % 使用外部主题wonderbeamer(控制页眉、页脚、帧布局)
- \usecolortheme{wonderbeamer} % 使用颜色主题wonderbeamer(控制整体配色方案)
- \setbeamercolor{block body}{bg=beamer@headercolor!30} % 设置块体背景色:页眉颜色的30%透明度(淡色背景)
- \setbeamertemplate{enumerate item}{\insertenumlabel.} % 枚举列表项样式:编号后加句号(如1.、2.)
- }
- % 幻灯片logo设置:页面角落显示半透明logo(路径为template/mylogo.jpg,宽度8%行宽,透明度0.1)
- \logo{\tikz\node[opacity=0.1]{\includegraphics[width=0.08\linewidth]{template/mylogo.jpg}};}
- % 退出演示模式(恢复全局设置)
- \mode<all>
- % ==============================================================================
- % 七、字体与代码高亮配置:自定义英文/中文字体,优化代码显示效果
- % ==============================================================================
- % 字体设置:新建字体族(仅对指定文本生效)
- \newfontfamily\TimesNewRoman{times.ttf}% 英文新罗马字体(用于英文文本,需系统有times.ttf文件)
- \newfontfamily\CourierNew{Courier New}% Courier New字体(用于代码排版,等宽字体,清晰易读)
- \setCJKfamilyfont{KTzh}[AutoFakeBold=true]{simkai.ttf}% 中文楷体:AutoFakeBold=true(自动伪粗体),字体文件为simkai.ttf(楷体_GB2312)
- % 注释:tcolorbox全局设置(预留,当前未启用)
- % \tcbset{enhanced,attach boxed title to top left={xshift=1em,yshift=-3mm,yshifttext=-3mm},boxed title style={colback=MyRed},size = small,nobeforeafter,colback=white,colframe=MyRed,valign=center}
- % 代码高亮(listings)全局设置:定义代码显示样式
- \newcommand{\SourceCodeFont}{\bfseries\CJKfamily{KTzh}\CourierNew}% 代码字体命令:粗体 + 中文楷体 + Courier New英文
- \renewcommand{\thelstnumber}{(\arabic{lstnumber})}% 代码行号样式:带括号的阿拉伯数字(如(1)、(2))
- \lstset{
- % xleftmargin = 0pt,% 代码左缩进(当前注释,默认无缩进)
- basicstyle = \SourceCodeFont,% 代码基础字体(应用上述\SourceCodeFont)
- showspaces=true,% 显示空格(用下划线标识,方便调试代码格式)
- % showtabs=true,% 显示制表符(当前注释)
- % stepnumber=4,% 行号步进(每4行显示一个行号,当前注释,默认每行显示)
- firstnumber =1,% 起始行号为1
- numberblanklines=false,% 空白行不显示行号
- % columns = flexible,% 列格式:松散对齐(当前注释)
- aboveskip = 0pt,% 代码环境上方空白为0pt(紧凑排版)
- belowskip = 0pt,% 代码环境下方空白为0pt(紧凑排版)
- tabsize = 4,% 制表符宽度为4个字符
- backgroundcolor=\color{Snow3},% 代码背景色:Snow3(浅灰色,保护视力)
- breaklines = true,% 长行自动换行(避免代码溢出)
- numbers = left,% 行号显示在左侧
- numbersep=5pt,% 行号与代码的间距为5pt
- framexleftmargin=25pt,% 代码框左侧内边距25pt(为行号预留空间)
- xleftmargin=25pt% 代码左侧外边距25pt(整体右移,避免贴边)
- % floatplacement=ht% 代码浮动位置(当前注释)
- }
2. beamerouterthemewonderbeamer.sty
- % ==============================================================================
- % 一、模板基础声明:指定兼容性与包信息(Beamer主题包必备)
- % ==============================================================================
- % 声明所需LaTeX版本:需LaTeX2e及以上(确保与主流LaTeX环境兼容)
- \NeedsTeXFormat{LaTeX2e}
- % 声明包名称、版本、更新日期和功能描述(明确为清华大学Beamer主题的外部主题)
- \ProvidesPackage{beamerouterthemewonderbeamer}
- [2021/11/15 v1.1.0 A Beamer Theme for Tsinghua University (THU)]
- % ==============================================================================
- % 二、主题选项定义:支持用户传入布局选项(侧边栏/平滑导航栏)
- % ==============================================================================
- % 定义"smoothbars"选项:用户传入时,将\beamer@thubar设为smoothbars(平滑导航栏模式)
- \DeclareOptionBeamer{smoothbars}{\def\beamer@thubar{smoothbars}}
- % 定义"sidebar"选项:用户传入时,将\beamer@thubar设为sidebar(侧边栏模式)
- \DeclareOptionBeamer{sidebar}{\def\beamer@thubar{sidebar}}
- % 处理用户传入的选项:解析并应用上述定义的选项
- \ProcessOptionsBeamer
- % 定义默认侧边栏模式:默认使用sidebar(侧边栏)布局(即使未传入选项)
- \def\beamer@thusidebar{sidebar}
- % ==============================================================================
- % 三、演示模式配置:仅对Beamer演示生效(不影响打印等其他模式)
- % ==============================================================================
- \mode<presentation>
- % ==============================================================================
- % 四、页眉样式(headline)定制:正文区显示章节导航,非正文区隐藏
- % ==============================================================================
- % 定义页眉模板:名为"headlinetheme"(后续通过\setbeamertemplate启用)
- \defbeamertemplate{headline}{headlinetheme}
- {
- \usebeamerfont{headline} % 应用页眉预设字体(在颜色主题中定义)
- \leavevmode% 离开垂直模式,进入水平模式(确保后续内容按行排列,避免排版错乱)
- % 页眉颜色框:宽度=整页宽(\paperwidth),高度=预设页眉高度(\headlineheight),配色为"palette quaternary"(第四调色板)
- \begin{beamercolorbox}[wd=\paperwidth,ht=\headlineheight]{palette quaternary}
- \ifismainmatter % 判断是否处于正文区(\mainmatter标记的区域)
- % 垂直盒子:高度=页眉高度,用于居中对齐导航内容
- \vbox to \headlineheight{
- \vfil % 垂直填充(将内容推至垂直居中)
- {
- % 插入水平章节导航:宽度=整页宽,左右自动填充空白,导航项均匀分布
- \insertsectionnavigationhorizontal{\paperwidth}{\hskip0pt plus1filll}{\hskip0pt plus1filll}
- }
- \vfil % 垂直填充(平衡上下间距)
- }
- \fi% 结束正文区判断(非正文区页眉为空)
- \end{beamercolorbox}% 结束页眉颜色框
- }
- % 启用自定义页眉模板:将Beamer默认页眉替换为上述"headlinetheme"
- \setbeamertemplate{headline}[headlinetheme]
- % ==============================================================================
- % 五、帧标题(frametitle)与帧副标题(framesubtitle)样式定制:
- % 核心逻辑:正文区带章节/小节编号,非正文区无编号;支持三级标题(subsubsection)显示
- % ==============================================================================
- % 定义帧标题模板:名为"frametitletheme"
- \defbeamertemplate{frametitle}{frametitletheme}{%
- \nointerlineskip% 去掉行间默认粘连(避免标题与上方内容间距异常)
- % \vskip\headlineheight% (注释:原本用于添加页眉高度的间距,当前无需手动调整)
- \ifismainmatter% 判断是否为正文区(\mainmatter标记)
- % 帧标题颜色框:宽度=整页宽,高度=预设帧标题高度(\frametitleheight),配色为"frametitle"
- \begin{beamercolorbox}[wd=\paperwidth,ht=\frametitleheight]{frametitle}%
- % 垂直盒子:高度=帧标题高度,用于居中对齐标题文本
- \vbox to \frametitleheight{
- \vfil % 垂直居中
- {\hskip10pt\chinese{section}、\insertframetitle}% 标题内容:左移10pt + 中文章节号(如"一、") + 帧标题(\insertframetitle)
- \vfil % 垂直居中
- }
- \end{beamercolorbox}% 结束帧标题框
- \nointerlineskip% 去掉行间粘连(避免标题与副标题间距异常)
- \ifx\insertframesubtitle\empty% 判断帧副标题是否为空(\ifx测试两个记号是否相同)
- \else{% 若副标题非空,插入副标题框
- % 帧副标题颜色框:宽度=整页宽,高度=预设副标题高度(\framesubtitleheight),配色为"framesubtitle"
- \begin{beamercolorbox}[wd=\paperwidth,ht=\framesubtitleheight]{framesubtitle}%
- \vbox to \framesubtitleheight{
- \vfil % 垂直居中
- % 副标题内容:左移20pt + 应用副标题字体/颜色 + 小节编号(如"1.") + 副标题文本(\insertframesubtitle)
- \hskip20pt\usebeamerfont*{framesubtitle}{\usebeamercolor[fg]{framesubtitle}\thesubsection.\insertframesubtitle}
- }
- \end{beamercolorbox}% 结束副标题框
- \ifx\insertsubsubsection\empty% 判断三级标题(subsubsection)是否为空
- \else{% 若三级标题非空,在页面右上角添加红色标签显示三级标题
- % tikz绝对定位:overlay(覆盖在内容上方)、remember picture(记住页面坐标)
- \begin{tikzpicture}[overlay,remember picture]%
- % 红色圆角标签:填充色MyRed(自定义红色)、文字白色、圆角1mm、内边距2pt、锚点靠右
- \node[fill = MyRed,align = center,text = white,rounded corners = 1mm,inner sep=2pt,anchor=east]
- at ([yshift=-1.4cm,xshift=-1em]current page.north east) % 位置:页面右上角下移1.4cm、左移1em
- {{\small (\thesubsubsection)\insertsubsubsection}}; % 内容:小字体 + 三级标题编号(如"(1)") + 三级标题文本
- \end{tikzpicture}%
- }% 结束三级标题判断
- \fi
- }% 结束副标题判断
- \fi%结束判断
- \else% 非正文区(前言/附录区):标题无编号,样式简化
- % 帧标题颜色框(与正文区一致,仅内容无编号)
- \begin{beamercolorbox}[wd=\paperwidth,ht=\frametitleheight]{frametitle}%
- \vbox to \frametitleheight{
- \vfil % 垂直居中
- {\hskip10pt\insertframetitle}% 标题内容:左移10pt + 纯帧标题(无章节编号)
- \vfil % 垂直居中
- }
- \end{beamercolorbox}% 结束帧标题框
- \nointerlineskip% 去掉行间粘连
-
- \ifx\insertframesubtitle\empty% 判断副标题是否为空
- \else{% 若副标题非空,插入无编号副标题
- \begin{beamercolorbox}[wd=\paperwidth,ht=\framesubtitleheight]{framesubtitle}%
- \vbox to \framesubtitleheight{
- \vfil % 垂直居中
- % 副标题内容:左移20pt + 纯副标题文本(无小节编号)
- \hskip20pt\usebeamerfont*{framesubtitle}{\usebeamercolor[fg]{framesubtitle}\insertframesubtitle}
- }
- \end{beamercolorbox}% 结束副标题框
- \ifx\insertsubsubsection\empty% 判断三级标题是否为空
- \else{% 若三级标题非空,在页面顶部居中添加红色标签
- \begin{tikzpicture}[overlay,remember picture]%
- \node[fill = MyRed,align = center,text = white,rounded corners = 1mm,inner sep=2pt]
- at ([yshift=-1.4cm,xshift=-1em]current page.north) % 位置:页面顶部居中下移1.4cm、左移1em
- {{\small \insertsubsubsection}}; % 内容:小字体 + 纯三级标题文本(无编号)
- \end{tikzpicture}%
- }% 结束三级标题判断
- \fi
- }% 结束副标题判断
- \fi% 结束正文区/非正文区总判断
- \fi
- }
- % 启用自定义帧标题模板:将Beamer默认帧标题替换为上述"frametitletheme"
- \setbeamertemplate{frametitle}[frametitletheme]
- % ==============================================================================
- % 六、导航符号隐藏:去掉Beamer默认的导航按钮(如前后页、目录按钮)
- % ==============================================================================
- \setbeamertemplate{navigation symbols}{}
- % ==============================================================================
- % 注释:侧边栏/平滑导航栏备选布局(当前未启用,预留扩展)
- % ==============================================================================
- %\ifx\beamer@thubar\beamer@thusidebar
- % \useoutertheme[width=0.17\linewidth]{sidebar} % 启用侧边栏外部主题,宽度17%行宽
- % \logo{\includegraphics[width=0.08\linewidth]{thulogo.pdf}} % 侧边栏模式下的logo设置
- %\else
- % \useoutertheme[footline=authorinstitutetitle,subsection=false]{smoothbars} % 启用平滑导航栏,页脚显示作者/单位,隐藏小节
- %\fi
- % ==============================================================================
- % 七、页脚样式(footline)定制:正文区显示标题+页码,非正文区仅显示页码
- % ==============================================================================
- \makeatletter % 允许使用@开头的Beamer内部命令
- \newcommand{\frameofframes}{/}
- \newcommand{\setframeofframes}[1]{
- \renewcommand{\frameofframes}{#1}
- }
- % 定义页脚模板:高度=预设页脚高度(\footlineheight),宽度=整页宽,配色为"secondbottomline"
- \setbeamertemplate{footline}{%
- \begin{beamercolorbox}[ht=\footlineheight,wd=\paperwidth]{secondbottomline}%
- % 垂直盒子:高度=页脚高度,用于居中对齐内容
- \vbox to \footlineheight{
- \vfil % 垂直居中
- \hbox to \paperwidth{ % 水平盒子:宽度=整页宽,用于分布内容
- \ifisfrontmatter % 判断是否为前言区
- {{}\hfill{\insertframenumber/\inserttotalframenumber\hspace*{1em}}}% 前言区:仅显示页码(当前页/总页数),右对齐,右留1em间距
- \else % 正文区/附录区
- % 左侧:与页码等宽的空白占位(平衡布局);中间:短标题(\insertshorttitle);右侧:页码
- {\hphantom{\insertframenumber/\inserttotalframenumber\hspace*{1em}}\usebeamerfont{title in head/foot}{}\hfill\insertshorttitle\hfill{}{\insertframenumber/\inserttotalframenumber\hspace*{1em}}}%
- \fi% 结束前言区判断
- }
- \vfil % 垂直居中
- }
- \end{beamercolorbox}% 结束页脚颜色框
- }
- \makeatother % 结束内部命令使用
- % ==============================================================================
- % 八、标题页样式(title page)定制:显示课程名、单位、作者,居中布局
- % ==============================================================================
- % 定义标题页模板:名为"titlepagetemplate"
- \defbeamertemplate{title page}{titlepagetemplate}
- {
- \vbox{} % 空盒子(占位,调整页面顶部间距)
- \vfill % 垂直填充(将内容推至页面中间)
- \begin{centering} % 内容居中
- % 课程名彩色框:内边距8pt、居中、圆角,配色为"title"
- \begin{beamercolorbox}[sep=8pt,center,rounded=true]{title}
- \usebeamerfont{title}\the\kecheng\par% 应用标题字体,显示课程名(\kecheng变量内容),换行
- \end{beamercolorbox}% 结束课程名框
- \vskip2cm\par% 垂直间距2cm,换行
- % 作者/单位框:内边距8pt、居中,配色为"author"
- \begin{beamercolorbox}[sep=8pt,center]{author}
- % 单位(\insertinstitute) + 1cm水平间距 + 作者(\insertauthor),分别应用对应字体
- \usebeamerfont{institute}\insertinstitute\hskip1cm\usebeamerfont{author}\insertauthor
- \end{beamercolorbox}
- % \vskip0.5em % (注释:预留的垂直间距,当前未启用)
- % {\usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par} % (注释:预留的标题图片插入,当前未启用)
- \end{centering}
- \vfill % 垂直填充(平衡页面底部间距)
- }
- % 启用自定义标题页模板:将Beamer默认标题页替换为上述"titlepagetemplate"
- \setbeamertemplate{title page}[titlepagetemplate]
- % ==============================================================================
- % 九、退出演示模式:恢复全局模式设置
- % ==============================================================================
- \mode<all>
3. beamercolorthemewonderbeamer.sty
- % ==============================================================================
- % 一、模板基础声明:指定兼容性与包信息(Beamer颜色主题必备)
- % ==============================================================================
- % 声明所需LaTeX版本:需LaTeX2e及以上(确保与主流LaTeX环境兼容)
- \NeedsTeXFormat{LaTeX2e}
- % 声明包名称、版本、更新日期和功能描述(明确为清华大学Beamer主题的颜色主题)
- \ProvidesPackage{beamercolorthemewonderbeamer}
- [2021/11/15 v1.1.0 A Beamer Theme for Tsinghua University (THU)]
- % 处理用户传入的Beamer选项(此处无自定义选项,仅执行默认处理逻辑)
- \ProcessOptionsBeamer
- % ==============================================================================
- % 二、颜色主题变量定义:预设主题相关变量(紫色主题标识、侧边栏模式标识)
- % ==============================================================================
- % 定义紫色主题标识变量:\beamer@thucolorpurple = thupurple(用于主题内部配色关联)
- \def\beamer@thucolorpurple{thupurple}
- % 定义侧边栏模式标识变量:\beamer@thusidebar = sidebar(与外部主题的布局选项联动)
- \def\beamer@thusidebar{sidebar}
- % ==============================================================================
- % 三、演示模式配置:仅对Beamer演示生效(不影响打印等其他模式)
- % ==============================================================================
- \mode<presentation>
- % ==============================================================================
- % 四、核心颜色定义:自定义基础颜色(RGB值精确控制,适配学术演示专业审美)
- % ==============================================================================
- % 自定义紫色:MyPurple(RGB:129,48,140)→ 主题主色(页眉、标题背景)
- \definecolor{MyPurple}{RGB}{129,48,140} %
- % 自定义蓝色:MyBlue(RGB:24,114,202)→ 预留备用(如强调内容、链接)
- \definecolor{MyBlue}{RGB}{24,114,202}
- % 自定义红色:MyRed(RGB:192,80,77)→ 用于三级标题标签、强调文本(外部主题中使用)
- \definecolor{MyRed}{RGB}{192,80,77}
- % 自定义绿色:MyGreen(RGB:84,130,53)→ 用于示例块(example block)背景
- \definecolor{MyGreen}{RGB}{84,130,53}
- % 自定义灰色:MyGray(RGB:124,124,124)→ 预留备用(如次要文本、阴影)
- \definecolor{MyGray}{RGB}{124,124,124}
- % 自定义淡紫色:MyLightPurple → MyPurple的30%透明度(淡化主色,用于次要背景)
- \colorlet{MyLightPurple}{MyPurple!30} %
- % ==============================================================================
- % 五、主题配色变量关联:将自定义颜色绑定到Beamer内部变量(方便统一修改)
- % ==============================================================================
- % 页眉颜色:绑定到MyPurple(主题主色)
- \definecolor{beamer@headercolor}{named}{MyPurple} % purple
- % 文本强调色:RGB(119,33,151)→ 略深于主色,用于侧边栏章节文本
- \definecolor{beamer@textcolor}{RGB}{119,33,151}
- % 侧边栏背景色:绑定到MyPurple(与主色一致,保证风格统一)
- \definecolor{beamer@sidebarcolor}{RGB}{129,48,140}
- % ==============================================================================
- % 六、Beamer组件配色设置:逐一定义核心组件的前景色(fg)和背景色(bg)
- % 核心逻辑:以MyPurple为主色,通过透明度(!xx!black)生成渐变,保证视觉协调
- % ==============================================================================
- % 1. 标题页标题(\title):文字白色(fg=white),背景主色(bg=beamer@headercolor)
- \setbeamercolor{title}{fg=white,bg=beamer@headercolor}
- % 2. 帧标题(frametitle):文字白色,背景主色80% + 黑色20%(加深主色,突出标题)
- \setbeamercolor{frametitle}{fg=white,bg=beamer@headercolor!80!black}
- % 帧标题字体大小:Large(大号字体,符合学术演示标题层级)
- \setbeamerfont{frametitle}{size=\Large}
- % 3. 帧副标题(framesubtitle):文字黑色(fg=black),背景白色(bg=white)
- \setbeamercolor{framesubtitle}{fg=black,bg=white}
- % 帧副标题字体大小:large(中大号字体,低于帧标题层级)
- \setbeamerfont{framesubtitle}{size=\large}
- % 4. 页脚第二行(secondbottomline):文字白色,背景主色50% + 黑色50%(浅于帧标题,避免抢焦点)
- \setbeamercolor{secondbottomline}{fg=white,bg=beamer@headercolor!50!black}
- % 5. 页脚第一行(firstbottomline):文字白色,背景主色(预留,外部主题未使用)
- \setbeamercolor{firstbottomline}{fg=white,bg=beamer@headercolor}
- % 6. 调色板主色(palette primary):复用结构色(structure),文字白色,背景结构色
- \setbeamercolor{palette primary}{use=structure,fg=white,bg=structure.fg}
- % 调色板次色(palette secondary):结构色75% + 黑色25%,文字白色
- \setbeamercolor{palette secondary}{use=structure,fg=white,bg=structure.fg!75!black}
- % 调色板第三色(palette tertiary):结构色50% + 黑色50%,文字白色
- \setbeamercolor{palette tertiary}{use=structure,fg=white,bg=structure.fg!50!black}
- % 调色板第四色(palette quaternary):同第三色(用于页眉背景,外部主题中使用)
- \setbeamercolor{palette quaternary}{fg=white,bg=structure.fg!50!black}
- % 7. 普通块标题(block title):文字白色,背景主色(与标题页风格一致)
- \setbeamercolor{block title}{fg=white,bg=beamer@headercolor}
- % 普通块内容(block body):背景主色10%(淡紫色,保护视力,不干扰文字阅读)
- \setbeamercolor{block body}{bg=beamer@headercolor!10}
- % 8. 示例块标题(block title example):复用普通文本和示例文本颜色,文字白色,背景示例色75% + 绿色
- \setbeamercolor{block title example}{%
- use={normal text,example text},fg=white,bg=example text.fg!75!green
- }
- % 9. 细分隔线(fine separation line):无特定颜色(继承父组件颜色)
- \setbeamercolor{fine separation line}{}
- % 10. 项目投影色(item projected):文字白色(用于列表项投影效果,如圆形项目符号背景)
- \setbeamercolor{item projected}{fg=white}
- % 11. 侧边栏调色板(palette sidebar primary/tertiary):文字颜色复用普通文本色
- \setbeamercolor{palette sidebar primary}{use=normal text,fg=normal text.fg}
- % 侧边栏调色板(palette sidebar secondary/quaternary):文字颜色复用结构色
- \setbeamercolor{palette sidebar secondary}{use=structure,fg=structure.fg}
- \setbeamercolor{palette sidebar tertiary}{use=normal text,fg=normal text.fg}
- \setbeamercolor{palette sidebar quaternary}{use=structure,fg=structure.fg}
- % 12. 侧边栏章节文本(section in sidebar):文字颜色为强调色(beamer@textcolor)
- \setbeamercolor{section in sidebar}{fg=beamer@textcolor}
- % 侧边栏未选中章节文本(section in sidebar shaded):文字灰色(灰色,弱化未选中项)
- \setbeamercolor{section in sidebar shaded}{fg=gray}
- % 13. 分隔线(separation line):无特定颜色(继承父组件颜色)
- \setbeamercolor{separation line}{}
- % 14. 侧边栏背景色:根据布局模式切换(与外部主题选项联动)
- \ifx\beamer@thubar\beamer@thusidebar % 若为侧边栏模式(sidebar)
- \setbeamercolor{sidebar}{bg=beamer@sidebarcolor!10} % 侧边栏背景为主色10%(淡紫色,避免过深)
- \else % 若为平滑导航栏模式(smoothbars)
- \setbeamercolor{sidebar}{bg=beamer@sidebarcolor} % 侧边栏背景为主色(纯色背景)
- \fi
- % 15. 侧边栏颜色继承:继承调色板主色(palette primary)的样式(保证颜色一致性)
- \setbeamercolor{sidebar}{parent=palette primary}
- % 16. 结构色(structure):绑定到主色(beamer@headercolor)→ 控制列表项、标题编号等基础结构的颜色
- \setbeamercolor{structure}{fg=beamer@headercolor}
- % 17. 侧边栏小节文本(subsection in sidebar):文字颜色为强调色(beamer@textcolor)
- \setbeamercolor{subsection in sidebar}{fg=beamer@textcolor}
- % 侧边栏未选中小节文本(subsection in sidebar shaded):文字灰色(弱化未选中项)
- \setbeamercolor{subsection in sidebar shaded}{fg=gray}
- % 18. Logo背景色:主色20%(淡紫色,避免logo与背景冲突)
- \setbeamercolor{logo}{bg=beamer@headercolor!20}
- % ==============================================================================
- % 七、退出演示模式:恢复全局模式设置
- % ==============================================================================
- \mode<all>
- % ==============================================================================
- % 注释:模板文件说明(记录主题包含的衍生文件,便于维护)
- % ==============================================================================
- %%
- %% This package consists of the file thubeamer.dtx,
- %% and the derived files thubeamer.pdf,
- %% beamerthemethubeamer.sty,
- %% beamercolorthemethubeamer.sty,
- %% beamerinnerthemethubeamer.sty,
- %% beamerouterthemethubeamer.sty.
- %%
- %%
- %% End of file `beamercolorthemethubeamer.sty'.
六、模板使用
以下主文档示例了模板的使用方法。
- % ===================== 底层编译/格式配置区 =====================
- % 1. dvipdfmx编译器配置指令:强制关闭PDF压缩功能
- % dvipdfmx是LaTeX生成PDF的核心编译器之一,z 0表示关闭压缩(z 1为开启)
- % 作用:关闭压缩可大幅加快编译速度(尤其图片多的幻灯片),适合调试阶段;
- % 注意:生成最终交付版时必须注释/删除此行,否则PDF体积会大幅增大
- \special{dvipdfmx:config z 0}%用于关闭压缩,加快编译速度,当生成最终版时应注释掉这句
- % 2. 向xcolor宏包传递参数:启用X11标准颜色名称集
- % PassOptionsToPackage{参数}{宏包名}:在加载宏包前预先传递配置参数
- % x11names:xcolor包的扩展颜色库,包含如AliceBlue、FireBrick等直观的颜色名称(默认不启用)
- % 注:此处虽未显式写\usepackage{xcolor},但beamer/主题会隐式加载xcolor,因此提前传参生效
- \PassOptionsToPackage{x11names}{xcolor}%允许使用xcolor包中的x11names所给出的颜色名称
- % 3. 文档类声明:定义文档类型为beamer(幻灯片),并设置宽高比
- % \documentclass[可选参数]{文档类}:LaTeX核心指令,指定文档基础格式
- % aspectratio=169:设置幻灯片宽高比为16:9(主流投影设备适配,默认4:3)
- % beamer:专用于制作演示幻灯片的文档类,自带标题页、分节、导航等幻灯片特性
- \documentclass[aspectratio=169]{beamer}
- % ===================== 主题/自定义变量配置区 =====================
- % 4. 加载自定义/第三方beamer主题:wonderbeamer
- % \usetheme{主题名}:应用beamer的主题样式(控制整体排版、配色、布局)
- % wonderbeamer:第三方主题文件,需确保同名.sty文件在编译目录
- \usetheme{wonderbeamer}
- % 5. 自定义课程名称变量:为幻灯片设置课程标题(非beamer原生指令,是wonderbeamer主题的自定义命令)
- % \KeCheng{}:主题自定义的命令,用于定义课程名称(如封面/页眉显示)
- \KeCheng{SQL安全课程}
- % 6. 幻灯片主标题配置:设置核心标题,方括号内为短标题(用于页眉/导航栏)
- % \title[短标题]{主标题}:beamer原生指令,短标题适配空间有限的区域(如页眉),主标题显示在标题页
- % 此处短标题和主标题一致,也可简化为\title{SQL注入攻击与防护}
- \title[SQL注入攻击与防护]{SQL注入攻击与防护}
- % 7. 作者信息配置:设置幻灯片制作者/演讲人
- % \author{}:beamer原生指令,通常显示在标题页、页脚等位置
- \author{南宫二狗}
- % 8. 机构/单位信息配置:设置所属机构,方括号内为短机构名(适配导航/页脚)
- % \institute[短机构名]{完整机构名}:beamer原生指令,显示在标题页、页脚,短名简化显示
- \institute[631室]{XXXX教研室}
- % ===================== 文档主体内容区 =====================
- % 9. 开始文档主体:LaTeX核心指令,所有正文/幻灯片内容必须放在\begin{document}和\end{document}之间
- \begin{document}
- % 10. 前端内容区标记:wonderbeamer主题的自定义指令(非beamer原生)
- % \frontmatter:通常用于划分「封面/引入页」等前置内容(类比book类的\frontmatter)
- \frontmatter
- % 11. 生成封面页:主题自定义指令,基于\KeCheng/\title等变量自动生成封面排版
- \CoverPage
- % 12. 导入外部tex文件:引入「课程引入」相关幻灯片内容
- % \input{文件路径}:将指定tex文件的内容嵌入当前位置,便于拆分多章节内容(模块化管理)
- % doc/引入.tex:表示当前目录下doc文件夹中的「引入.tex」文件,需确保文件存在
- \input{doc/引入.tex}
- % 13. 生成标题页:主题自定义指令,区别于\CoverPage(可能是带课程/机构信息的正式标题页)
- \TitlePage
-
- % 14. 主体内容区标记:主题自定义指令,划分「核心教学内容」区域
- \mainmatter
- % 15. 划分学时模块:主题自定义指令,用于标记「第一学时」的开始(生成学时标题页/分隔页)
- \mypart{第一学时}
- % 16-18. 导入第一学时的分章节内容:拆分多个tex文件,便于分模块编辑(如01=基础概念,02=攻击案例,03=防护原理)
- \input{doc/第一学时-01.tex}
- \input{doc/第一学时-02.tex}
- \input{doc/第一学时-03.tex}
-
- % 19. 划分第二学时模块:标记「第二学时」开始
- \mypart{第二学时}
- % 20. 再次生成标题页:推测是第二学时的子标题页(复用标题页样式,显示第二学时主题)
- \TitlePage
- % 21-23. 导入第二学时的分章节内容
- \input{doc/第二学时-01.tex}
- \input{doc/第二学时-02.tex}
- \input{doc/第二学时-03.tex}
-
- % 24. 后端内容区标记:主题自定义指令,划分「作业/总结/附录」等后置内容
- \backmatter
- % 25. 导入作业相关内容:幻灯片最后展示作业/思考题
- \input{doc/作业.tex}
-
- % 26. 结束文档主体:LaTeX核心指令,标记文档结束
- \end{document}
部分页面的效果如下:


enter description here

enter description here

enter description here
浙公网安备 33010602011771号