Beamer标题设置

时间:2015-11-04 08:31:52

标签: latex beamer

我目前正在开发一个自己的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建议添加代码示例和图像,并相应地编辑文本。

1 个答案:

答案 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}