到目前为止,我建立了一个叫做NGEGTemplate.cls
的文类文件,它现有的内容为:
\LoadClass{beamer}
\NeedsTeXFormat{LaTeX2e}%宏包所属的Latex版本
\ProvidesClass{NGEGTemplate}[2020/08/14 My custom beamer class]
\RequirePackage{ctex}%中文支持
\useoutertheme{infolines}
\useinnertheme{rounded}
\usecolortheme{rose}
\usecolortheme{whale}
%% 在每个章节的前面显示目录提示
\AtBeginSection[]
{
\begin{frame}{主要内容}
\transfade%淡入淡出
\tableofcontents[sectionstyle=show/shaded,subsectionstyle=show/shaded/hide]
\addtocounter{framenumber}{-1} %目录页不计算页码
\end{frame}
}
%页面大小设置
\input{pagesize}
%背景设置
\input{background}
我的main.tex
文件的内容为:
\documentclass{NGEGTemplate}
\title{南宫二狗的Beamer模板}
\institute{Latex自学社}
\author{南宫二狗}
\begin{document}
\transblindshorizontal%一个动画效果
\begin{frame}{}
\transdissolve%溶化
\maketitle
\end{frame}
\end{document}
以上所生成的标题页是下面的样子
我想把它改成组织和姓名在同一行,使用同样的字体。同时不显示日期。使用的代码如下。
\defbeamertemplate{title page}{NGEGTitlePageTemplate}%定义一个叫做NGEGTitlePageTemplate的title page模板
{
% \vbox{}
\vfill%竖直方向空白填充,和下面的\vifll结合使用可以使它们之间的内容竖直居中
\begin{beamercolorbox}[sep=8pt,center,rounded=true]{title}%使用一个彩色盒子环境,内容和边界的距离设置为8pt,内容居中对齐,边界拐角使用圆角。盒子的颜色使用title的颜色
\usebeamerfont{title}\inserttitle\par%%插入标题内容,并对字体进行了设置
\ifx\insertsubtitle\@empty%%\ifx的作用是比较两个字符串是否相等,这里的作用是判断是否有子标题,如果没有,就什么也不做
\else%%有子标题
\vskip0.25em%%竖直跳过一段距离
{\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}%%插入子标题,并设置了所使用的字体和前景颜色
\fi%
\end{beamercolorbox}%
\vskip2cm\par%%竖直跳过一段距离
\begin{beamercolorbox}[sep=8pt,center]{institute}%使用一个彩色盒子环境,内容和边界的距离设置为8pt,内容居中对齐。盒子的颜色使用institute的颜色
\usebeamerfont{institute}\insertinstitute\hskip1cm\usebeamerfont{author}\insertauthor\par%插入机构名和作者名,之间水平间隔1cm,并设置使用institute的字体
\end{beamercolorbox}
\vfill
}
\setbeamertemplate{title page}[NGEGTitlePageTemplate]%使用这个叫做NGEGTitlePageTemplate的title page模板
命令\defbeamertemplate{title page}{template name}{template context}
的作用是对标题页定义一个模板,这个模板的名字叫做template name
,它的样式由template context
里面的代码来制定。
命令\setbeamertemplate{title page}[template name]
的作用是把叫做template name
的模板应用到标题页上。
最终得到的样式如下: