我想要在 beamer 的框架标题中显示当前章节的标题

我想要在 beamer 的框架标题中显示当前章节的标题

我尝试了以下操作,但没有成功:

\documentclass[serif]{beamer}

\usetheme{Boadilla}
\usecolortheme{whale}

\usepackage{amsmath,amsfonts,amsthm}
\usepackage[utf8]{inputenc}

\setbeamertemplate{headline}{\insertsection}%Does not seem to do anything at all
%\setbeamertemplate{frametitle}{...} doesnt help either

\begin{document}

\section{Calculus}
\subsection{Calculus1}
\begin{frame}
\frametitle{Calculus1}
Calculus1
\end{frame}

\subsection{Calculus2}
\begin{frame}
\frametitle{Calculus2}
Calculus2
\end{frame}

\end{document}

一个想法是手动完成,将frametitleframesubstitle彼此相邻(可能是标题中的两个“框”)而不是彼此之下,但我无法实现。与\setbeamertemplate(frametitle}{...}

答案1

像这样?

\secname您可以在和之间放置任何\subsecname您喜欢的内容:

\documentclass[serif]{beamer}

\usetheme{Boadilla}
\usecolortheme{whale}

\usepackage{amsmath,amsfonts,amsthm}

\begin{document}

\section{Calculus}
\subsection{Calculus1}
\begin{frame}{\secname$\,\to\,$\subsecname}
Calculus1
\end{frame}

\subsection{Calculus2}
\begin{frame}{\secname\ – \subsecname}
Calculus2
\end{frame}

\end{document}

secname 和 subsecname

答案2

据我了解,您希望将当前部分名称自动放入框架标题中。使用您提供的代码,您的主要问题是,您尝试在白色背景上绘制白色文本。尝试将文本设置为不同的颜色,您会看到,您的代码实际上做了一些事情:

\setbeamertemplate{headline}{\color{red}\insertsection}
\setbeamertemplate{frametitle}{\color{green}\insertsection}

在此处输入图片描述

现在要将当前部分放入框架标题中,我们应该看看当前框架标题是如何定义的,然后对其进行修改。因此,您正在使用Boadilla加载的主题,beamerthemeboadilla.sty然后我们可以看到\useoutertheme{infolines}。但是,beamerouterthemeinfolines.sty没有出现定义,因此使用frametitle默认的。beamerouterthemedefault.sty

现在我们来修改一下,在章节标题前面写上带有冒号的章节名称:

\documentclass[serif]{beamer}

\usetheme{Boadilla}
\usecolortheme{whale}

\usepackage{amsmath,amsfonts,amsthm}
\usepackage[utf8]{inputenc}

\makeatletter
\defbeamertemplate*{frametitle}{myownframetitle}[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\insertsection: \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}%
}
\makeatother

\begin{document}

\section{Calculus}
\subsection{Calculus1}
\begin{frame}
\frametitle{Calculus1}
Calculus1
\end{frame}

\subsection{Calculus2}
\begin{frame}
\frametitle{Calculus2}
Calculus2
\end{frame}

\end{document}

结果: 在此处输入图片描述

相关内容