使用马德里主题的 Beamer 中的 Frametitle 高度

使用马德里主题的 Beamer 中的 Frametitle 高度

考虑以下 MWE

\documentclass{beamer}
\usepackage{lmodern}
\usetheme{Madrid}
\begin{document}

\begin{frame}
  \frametitle{A frame title}
  \framesubtitle{A frame subtitle}
\end{frame}
\end{document}

如何减少框架标题(可能包含也可能不包含副标题)的高度以占用尽可能小的空间(即足够的空间以适应字体高度)?我想我需要重新定义\setbeamertemplate{frametitle}。该定义中的高度可以用etoolbox包来修补吗?

答案1

我会从头开始设计框架标题,因为马德里主题的模板非常简单。所以:

\documentclass{beamer}
\usepackage{lmodern}
\usetheme{Madrid}


\setbeamertemplate{frametitle}{%
  \nointerlineskip
    \begin{beamercolorbox}[sep=.1ex,wd=\paperwidth,leftskip=.5cm,rightskip=0cm]{frametitle}%
      \usebeamerfont{frametitle}\usebeamercolor[fg]{frametitle}\insertframetitle\\
      \usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\insertframesubtitle
    \end{beamercolorbox}%
}

\begin{document}

\begin{frame}
  \frametitle{A frame title}
  \framesubtitle{A frame subtitle}
\end{frame}
\end{document}

在此处输入图片描述

标题前和副标题后的极小空间来自键sep=.1ex。您可以根据需要将其减少为零。您还可以通过\\[-5pt]或类似方法减少标题和副标题之间的空间。

当没有字幕时恢复更多空间

\documentclass{beamer}
\usepackage{lmodern}
\usetheme{Madrid}

\makeatletter
\setbeamertemplate{frametitle}{%
  \nointerlineskip
  \begin{beamercolorbox}[sep=.1ex,wd=\paperwidth,leftskip=.5cm,rightskip=0cm]{frametitle}%
    \usebeamerfont{frametitle}\usebeamercolor[fg]{framesubtitle}\insertframetitle
  \end{beamercolorbox}
  \ifx\insertframesubtitle\@empty%
  \else
  \nointerlineskip%
  \begin{beamercolorbox}[sep=.3ex,wd=\paperwidth,leftskip=.5cm,rightskip=0cm]{frametitle}%
  \usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\insertframesubtitle%
  \end{beamercolorbox}
  \fi
}
\makeatother

\begin{document}

\begin{frame}
  \frametitle{A frame title}
  \framesubtitle{A frame subtitle}
\end{frame}

\begin{frame}
  \frametitle{A frame with no subtitle}
\end{frame}
\end{document}

在此处输入图片描述

在这个“增强”版本中,由于构造的原因,当没有字幕时,字幕空间会被隐藏ifx

相关内容