无论内容如何,​​保持框架标题高度恒定

无论内容如何,​​保持框架标题高度恒定

我希望框架标题背景(顶部的栏)具有恒定的高度,无论我是否只有标题或还有副标题。

一个原因是一致性 - 我不喜欢从一张幻灯片跳到另一张幻灯片。另一个原因是我还在右上角放置了一个徽标,我不知道如何才能使其相对于右上角的位置保持不变。

现在我正在通过添加与背景颜色相同的隐形字幕来解决这个问题,但我希望有一个更优雅的解决方案!

\PassOptionsToPackage{demo}{graphicx}
\documentclass{beamer}

\usepackage[english]{babel}
\usetheme{Madrid}
\definecolor{myblue}{RGB}{44,80,109}
\setbeamercolor{frametitle}{fg=white, bg=myblue}

\usepackage{textpos}
\addtobeamertemplate{frametitle}{}{%
\begin{textblock*}{10mm}(.94\textwidth,-1.3cm)
\includegraphics[height=1cm,width=1cm]{logo}
\end{textblock*}}

\begin{document}

\begin{frame}{Title}{Subtitle}
\end{frame}


\begin{frame}{Title with no Subtitle}
\end{frame}

\begin{frame}{Title with no Subtitle}{\textcolor{myblue}{placeholder for subtitle}}
\end{frame}

\end{document}

答案1

您可以重新定义frametitle模板(Madrid使用default可以在中找到原始定义的模板 beamerouterthemedefault.sty):

\documentclass{beamer}
\usepackage[english]{babel}
\usetheme{Madrid}
\definecolor{myblue}{RGB}{44,80,109}
\setbeamercolor{frametitle}{fg=white, bg=myblue}

\makeatletter
\defbeamertemplate*{frametitle}{mydefault}[1][left]
{
  \ifbeamercolorempty[bg]{frametitle}{}{\nointerlineskip}%
  \@tempdima=\textwidth%
  \advance\@tempdima by\beamer@leftmargin%
  \advance\@tempdima by\beamer@rightmargin%
  \begin{beamercolorbox}[sep=0.3cm,#1,wd=\the\@tempdima]{frametitle}
    \usebeamerfont{frametitle}%
    \vbox{}\vskip-1ex%
    \if@tempswa\else\csname beamer@fte#1\endcsname\fi%
    \strut\insertframetitle\strut\par%
    {%
      {\usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\insertframesubtitle\strut\par}%
    }%
    \vskip-1ex%
    \if@tempswa\else\vskip-.3cm\fi% set inside beamercolorbox... evil here...
  \end{beamercolorbox}%
}
\makeatother
\begin{document}

\begin{frame}
\frametitle{Title}
\framesubtitle{Subtitle}
test
\end{frame}

\begin{frame}{Title with no Subtitle}
test
\end{frame}

\end{document}

在此处输入图片描述

相关内容