回答问题是否可以降低 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}