我正在准备演讲,我不喜欢现有的 Beamer 主题。它们对我来说似乎都太臃肿了,那些简约的主题在我看来太“松散”了。我喜欢在内容周围设置一个框架,就像我在文章中使用页眉和页脚一样。
我采用了一些其他人制作的自定义主题,并将它们与可用的主题相结合,几乎达到了我想要的效果。
我的目标是制作一个带有框架标题的彩色标题(矩形)。标题应该始终存在,但由于您不应该使用没有标题的框架,因此这应该不是问题。
因为脚注应该与右下角的帧号几乎相同。
标题框应该一半是彩色,一半是白色。
以下是我得到的:主题:
\usepackage{tikz}
\colorlet{sharky_main}{DodgerBlue3!80}
\colorlet{sharky_secondary}{white}
\definecolor{sharky_black}{RGB}{43,40,40}
\setbeamercolor{section in head/foot}{fg=white, bg=sharky_main}
\newdimen\sharky@titleheight
\sharky@titleheight=0.5\paperheight
\newdimen\sharky@authorheight
\sharky@authorheight=3cm
\newdimen\sharky@framebarheight
\sharky@framebarheight=1cm
\newdimen\sharky@frametitlespace
\sharky@frametitlespace=0.25cm
\newdimen\sharky@footbarheight
\sharky@footbarheight=0.35cm
% disable navigation
\setbeamertemplate{navigation symbols}{}
% custom draw the title page above
\setbeamertemplate{title page}{
\begin{beamercolorbox}[wd=\paperwidth, ht=0.99\paperheight]{title page}
\begin{tikzpicture}
% set up the entire slide as the canvas
\useasboundingbox (0,0) rectangle(\the\paperwidth,\the\paperheight);
% the background
\fill[color=sharky_secondary] (0,0) rectangle(\the\paperwidth,\the\paperheight);
% draw the fills
\fill[color=sharky_main] (\paperwidth,\paperheight) rectangle +(-\paperwidth,-\paperheight+\sharky@titleheight);
% draw the actual text
\node[above, text width=\paperwidth-0.5cm, align=center] at (0.5\paperwidth, \paperheight-\sharky@titleheight) {
\color{sharky_secondary}\Huge\bfseries\inserttitle \par\vspace{0.5cm} \small\insertsubtitle };
%\node[above] at(0.5\paperwidth,2.3cm) {\color{sharky_black}\tiny by};
\node at (0.5\paperwidth, \sharky@authorheight) { \color{sharky_black}\LARGE\bfseries\insertauthor };
% add the date in the corner
\node[above] at(0.5\paperwidth,2cm) {\color{sharky_black}\small\insertdate};
\end{tikzpicture}
\end{beamercolorbox}
}
\setbeamertemplate{frametitle}
{
\begin{beamercolorbox}[wd=\paperwidth, ht=0.95\sharky@framebarheight]{frametitle}
\begin{tikzpicture}
\path[fill=sharky_main] (0, \paperheight) rectangle (\paperwidth, \paperheight-\sharky@framebarheight);
\node[right, color=sharky_secondary] at (0, \paperheight-0.5\sharky@framebarheight)
{\hspace{\sharky@frametitlespace}\color{sharky_secondary}\LARGE\textbf{\insertframetitle}};
\end{tikzpicture}
\end{beamercolorbox}
}
\setbeamertemplate{footline}%
{
\leavevmode%
\begin{beamercolorbox}[wd=\paperwidth,ht=0.95\sharky@footbarheight]{section in head/foot}%
\begin{tikzpicture}
\path[fill=sharky_main] (0, 0) rectangle (\paperwidth, \sharky@footbarheight);
\node[left=0.15cm, color=sharky_secondary] at (\paperwidth, 0.5*\sharky@footbarheight) { \scriptsize \insertframenumber/\inserttotalframenumber };
\end{tikzpicture}
\end{beamercolorbox}
}
测试文件:
\documentclass[x11names, svgnames]{beamer}
\usetheme{sharky}
\title{A nice beamer theme}
\subtitle{Some thoughts}
\author{Patrick Schulz}
\date{Today}
\begin{document}
\frame{\maketitle}
\begin{frame}
\frametitle{A sample frame}
Did we get what we wanted?
\end{frame}
\end{document}
所以这看起来不太糟糕,但我有一些担心:
标题页上可以看到脚注线。我读过这里一个问题的答案,他们建议使用
\ifnum\thepage=1\else
。使用这个,脚注线会向下移动,并且只有一半可见。为什么会发生这种情况?我尝试了很多,但还是不明白如何放置投影仪框。为什么我需要在框架标题中使用投影仪颜色框?据我所知,我可以使用它来获取此特定项目的字体和颜色。但它也有助于框架标题的放置。如果没有它,框架标题的整个蓝色矩形就会向右移动。
- 我感觉我使用 beamer 的方式不对。我更愿意使用内置模板,只调整颜色、尺寸和字体,但我尝试了一些方法,但没有成功(我知道这很荒谬。我很抱歉)。我不觉得“我的”主题如此复杂,但看起来确实如此。
我很高兴能得到一个关于 Beamer 如何放置模板的一般描述。我经常使用 tikz,在这里我对事物如何运作以及如何改变它们的直觉大多是正确的。如果不对,我可以查阅手册。在 Beamer 中我感到非常迷茫。非常感谢您阅读这篇长文。
附言:这个主题叫做sharky,因为我喜欢鲨鱼。
答案1
我只需将标题页放入plain
框架中。
\frame[plain]{\titlepage}
我个人重新定义标题如下:
\def\maketitle{%
\ifbeamer@inframe
\titlepage
\else
\frame[plain]{\titlepage}
\fi
}
这样,我就可以\maketitle
直接在演示文稿中使用它,而不必将其放入框架中。
我不太明白你的第二个问题。
回答你的第三个问题。是的,你的实现不太“像 Beamer”。例如,你不使用\setbeamerfont{•}{•}
。而且在我看来,你到处使用 tikz 让事情变得过于复杂。所以这里有一个实现,我认为它更符合 Beamer 的预期用途。
\colorlet{sharky_main}{DodgerBlue3!80}
\colorlet{sharky_secondary}{white}
\definecolor{sharky_black}{RGB}{43,40,40}
\setbeamercolor{section in head/foot}{fg=white, bg=sharky_main}
\setbeamercolor{frametitle}{fg=white, bg=sharky_main}
\setbeamercolor{title page top}{fg=sharky_secondary, bg=sharky_main}
\setbeamercolor{title page bottom}{fg=sharky_black, bg=sharky_secondary}
\setbeamerfont{frametitle}{size=\Large, series=\bfseries}
\setbeamerfont{title}{size=\Huge, series=\bfseries}
\setbeamerfont{subtitle}{size=\small}
\setbeamerfont{author}{size=\LARGE, series=\bfseries}
\setbeamerfont{date}{size=\small}
\newdimen\sharky@frametitlesep
\sharky@frametitlesep=1.5ex
\newdimen\sharky@footbarsep
\sharky@footbarsep=1ex
% disable navigation
\setbeamertemplate{navigation symbols}{}
\def\maketitle{%
\ifbeamer@inframe
\titlepage
\else
\frame[plain]{\titlepage}
\fi
}
% custom draw the title page above
\setbeamertemplate{title page}{%
\begin{beamercolorbox}[wd=\paperwidth, ht=0.5\paperheight, center, sep=0pt]{title page top}
\usebeamerfont{title}\inserttitle\par
\vspace{0.5em}%
\usebeamerfont{subtitle}\insertsubtitle\par
\vspace{1em}%
\end{beamercolorbox}%
\begin{beamercolorbox}[wd=\paperwidth, ht=0.5\paperheight, center]{title page bottom}
\vbox to 0.5\paperheight{%
\vfil%
\usebeamerfont{author}\insertauthor\par%
\vspace{0.5em}%
\usebeamerfont{date}\insertdate\par%
\vfil%
}%
\end{beamercolorbox}
}
\setbeamertemplate{frametitle}{%
\nointerlineskip%
\usebeamerfont{frametitle}%
\begin{beamercolorbox}[wd=\paperwidth,sep=\sharky@frametitlesep]{frametitle}
\usebeamerfont{frametitle}\insertframetitle%
\end{beamercolorbox}
}
\setbeamertemplate{footline}{
\nointerlineskip%
\usebeamerfont{frametitle}%
\begin{beamercolorbox}[wd=\paperwidth, sep=\sharky@footbarsep]{section in head/foot}
\hfill\scriptsize\insertframenumber/\inserttotalframenumber%
\end{beamercolorbox}
}