如果我重新定义框架标题,为什么 beamer framesubtitle 会消失?

如果我重新定义框架标题,为什么 beamer framesubtitle 会消失?

回答问题是否可以降低 beamer 中框架标题框的高度?:如果我这样做,框架字幕就会消失。我猜只有框架标题会受到影响。我错了吗?

并且

\setbeamertemplate{framesubtitle}{%
    \nointerlineskip%
\begin{beamercolorbox}[wd=\paperwidth,ht=2.0ex,dp=0.6ex]{framesubtitle}
        \hspace*{1ex}\insertsubsection: \insertframesubtitle%
    \end{beamercolorbox}%
}

是无效的。

\documentclass{beamer}
\usetheme[hideothersubsections] {Goettingen}
\usecolortheme{spruce}

\setbeamertemplate{frametitle}{%
    \nointerlineskip%
    \begin{beamercolorbox}[wd=\paperwidth,ht=6.5ex,dp=0.6ex]{frametitle}
        \hspace*{1ex}\insertframetitle%
    \end{beamercolorbox}%
}
\begin{document}

\section{Sec one}
\subsection{OneOne}
\begin{frame}{Frame Number 1}{Frame 1}
{1}
\end{frame}
\subsection{OneTwo}
\begin{frame}{Frame Number 2}
{Frame 2}

{2}
\end{frame}
\section{Sec two}
\subsection{TwoOne}
\begin{frame}{Frame Number 3}

{Frame 3}
{3}
\end{frame}
\end{document}

答案1

我想你的困惑是我的错。在答案中你提到没有涉及字幕,所以我写了这个容易理解的解决方案。但如果有字幕,问题就复杂得多,因为无论是否存在 framesubtitle,都必须调整框的高度。但不是重新发明轮子,而是对默认的 frametitle-template 进行微小修改。更改标记为<- changed from 1ex !!!

\documentclass{beamer}

\mode<presentation>
{
  \usetheme{Copenhagen}
  \useoutertheme[footline=institutetitle]{miniframes}
}

\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}
    \usebeamerfont{frametitle}%
    \vbox{}\vskip-1.7ex%  <-  changed from 1ex !!!
    \if@tempswa\else\csname beamer@fteleft\endcsname\fi%
    \strut\insertframetitle\strut\par%
    {%
        \ifx\insertframesubtitle\@empty%
        \else%
        {\usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\insertframesubtitle\strut\par}%
        \fi
    }%
    \vskip-1ex%
    \if@tempswa\else\vskip-.3cm\fi% set inside beamercolorbox... evil here...
  \end{beamercolorbox}%
}
\makeatletter

\usepackage{etoolbox}

\begin{document}
\section{Foo}
\subsection{Bar}

\begin{frame}{Baz}
  Foobar
\end{frame}

\begin{frame}{Baz}{djh}
    Foobar
\end{frame}

\end{document}

在此处输入图片描述

相关内容