我目前正在开发一个自己的beamer模板(实际上我正在尝试重新构建现有的power point设计,以便我可以使用Latex进行演示)。
现有模板的标题栏右侧显示徽标,栏位下方有一个小彩条。此标题栏显示为标题页以及文本幻灯片。在文本列表中,标题栏还包含当前帧标题和副标题,每个标题栏都有自己的字体大小和颜色。
使用beamer用户指南和其他模板,我认为每个帧都有标题,有时用于显示当前部分,帧标题通常显示帧标题和副标题。标题显示在最顶部,然后是框架标题。但是,框架标题不会显示在标题页上。
A(我希望尽可能少)我的设置的工作示例是:
\setbeamercolor*{frametitle}{fg=white,bg=blue}
\setbeamercolor*{framesubtitle}{fg=gray,bg=blue}
\defbeamertemplate*{headline}{formusic}
\ifx\insertframetitle\@empty%
\begin{beamercolorbox}[wd=\paperwidth, ht=1.5cm]{frametitle}
\hfill
\includegraphics[scale=0.15]{logo.png}
\end{beamercolorbox}
\else%
\fi%
\defbeamertemplate*{frametitle}{formusic}
\ifx\insertframetitle\@empty%
\begin{beamercolorbox}[wd=\paperwidth, ht=1.5cm]{frametitle}
\end{beamercolorbox}
\else%
\ifx\insertframesubtitle\@empty%
\begin{beamercolorbox}[wd=\paperwidth, ht=1.5cm]{frametitle}
\raisebox{0.55cm}{\insertframetitle}
\hfill
\includegraphics[scale=0.15]{logo.png}
\end{beamercolorbox}
\else%
\hbox{
\vbox{
\begin{beamercolorbox}[wd=\paperwidth, ht=0.7cm]{frametitle}
\insertframetitle
\end{beamercolorbox}
\begin{beamercolorbox}[wd=\paperwidth, ht=0.7cm]{framesubtitle}
\insertframesubtitle
\end{beamercolorbox}}
\includegraphics[scale=0.15]{logo.png}}
\fi
\fi%
可以看到in these slide headers的结果。对于第一个,标题页看起来很好(我使用蓝色背景颜色以便可视化我的问题),但是对于其他幻灯片它看起来不那么好。
标题似乎不支持'\ insertframe(sub)title'命令。因此,我使用一种解决方法,在ifnum\c@framenumber=1
的第一页的标题中显示空标题栏,并在所有其他页面上显示空标题。在这些幻灯片上,标题栏由框架标题显示。这几乎可以 - 因为在幻灯片的框架标题和顶部边框之间仍然可以看到一条小白线。</ p>
我的第二个问题是:我如何理想地排列标题栏中的frametitle,-subtitle和logo?我和beamercolorbox一起玩了很多,但是我对目前为止取得的成绩并不是100%满意。我的尝试是将frametitle和副标题放在单独的beamercolorbox中(这似乎是最干净的尝试,因为我可以为每个使用单独定义的布局,而不是切换字体大小和颜色),它们彼此相互低于。但是现在我不知道如何定位徽标。
编辑:根据Werners建议添加代码示例和图像,并相应地编辑文本。
答案 0 :(得分:0)
一种快速的解决方法:完全不使用标题,但要确保在所有框架上都显示该框架标题,即使那些没有框架标题的框架也是如此:
\documentclass{beamer}
\setbeamertemplate{headline}{}
\setbeamercolor{frametitle}{fg=white,bg=blue}
\setbeamercolor{framesubtitle}{fg=gray,bg=blue}
\makeatletter
\patchcmd{\endbeamer@frameslide}{\ifx\beamer@frametitle\@empty}{\iffalse}{}{\errmessage{failed to patch}}
\makeatother
\makeatletter
\setbeamertemplate{frametitle}{%
\ifbeamercolorempty[bg]{frametitle}{}{\nointerlineskip}%
\@tempdima=\textwidth%
\advance\@tempdima by\beamer@leftmargin%
\advance\@tempdima by\beamer@rightmargin%
\begin{beamercolorbox}[sep=0.3cm,left,wd=\the\@tempdima]{frametitle}
\begin{minipage}{.81\paperwidth}
\usebeamerfont{frametitle}%
\vbox{}\vskip-1ex%
\if@tempswa\else\csname beamer@fteleft\endcsname\fi%
\strut\insertframetitle\par%
{%
\ifx\insertframesubtitle\@empty%
\else%
{\usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\strut\insertframesubtitle\par}%
\fi
}%
\end{minipage}%
\quad\raisebox{-0.3cm}{\includegraphics[width=.1\paperwidth]{example-image-duck}}
\if@tempswa\else\vskip-.3cm\fi% set inside beamercolorbox... evil here...
\end{beamercolorbox}%
}
\makeatother
\begin{document}
\begin{frame}
abc
\end{frame}
\begin{frame}
\frametitle{title}
abc
\end{frame}
\begin{frame}
\frametitle{very long title which possible spans over multiples lines...}
abc
\end{frame}
\begin{frame}
\frametitle{title}
\framesubtitle{subtitle}
abc
\end{frame}
\begin{frame}
abc
\end{frame}
\end{document}