Beamer 标题页点击后显示副标题

Beamer 标题页点击后显示副标题

如何让 Beamer 中的标题页以主标题行开始,然后在每次连续单击时添加副标题行和第二个副标题行?重要的是,已经可见的行不会移动,这意味着它们应该首先显示到它们的最终位置。

这是一个几乎可以实现我想要的目标的 hack:

\documentclass{beamer}
\usetheme{default}
\begin{document}
\title{Title Line}
\subtitle{\vspace{\baselineskip} \vspace{\baselineskip}}
\maketitle
\title{Title Line}
\subtitle{Subtitle Line 1 \vspace{\baselineskip}}
\maketitle
\title{Title Line}
\subtitle{Subtitle Line 1 \\ Subtitle Line 2}
\maketitle
\end{document}

但是,请注意(至少在我呈现的文档中)中间的标题幻灯片(仅包含两个字幕中的一个)的中间字幕行并不位于与第三张幻灯片完全相同的位置和大小,因此在它们之间传输时看起来很尴尬。

请注意,我使用的是带有 \vspace{\baselineskip} 的空白 \subtitle,以便第一张幻灯片在正确的最终位置显示标题行。(虽然这有时是个问题,但不是在这个特定的代码中,而是当我插入实际文本时,我希望标题行在幻灯片之间“跳跃”几个像素……这是我的主要问题,可以在此示例中看到幻灯片 2 和幻灯片 3 之间的字幕)

答案1

\insertsubtitle通过在标题页的默认定义中替换\visible<2>{\insertsubtitle},副标题仅在第二张幻灯片上可见,但其空间已在第一张幻灯片上保留。

欲了解更多信息,我推荐 beameruserguide 中有关覆盖的部分。

\documentclass{beamer}
\usetheme{default}

\title{bla}
\subtitle{blub}

\makeatletter
\setbeamertemplate{title page}
{
    \vbox{}
    \vfill
    \begingroup
    \centering
    \begin{beamercolorbox}[sep=8pt,center]{title}
        \usebeamerfont{title}\inserttitle\par%
        \ifx\insertsubtitle\@empty%
        \else%
        \vskip0.25em%
        {\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\visible<2>{\insertsubtitle}\par}%
        \fi%     
    \end{beamercolorbox}%
    \vskip1em\par
    \begin{beamercolorbox}[sep=8pt,center]{author}
        \usebeamerfont{author}\insertauthor
    \end{beamercolorbox}
    \begin{beamercolorbox}[sep=8pt,center]{institute}
        \usebeamerfont{institute}\insertinstitute
    \end{beamercolorbox}
    \begin{beamercolorbox}[sep=8pt,center]{date}
        \usebeamerfont{date}\insertdate
    \end{beamercolorbox}\vskip0.5em
    {\usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par}
    \endgroup
    \vfill
}
\makeatother

\begin{document}
\begin{frame}
    \titlepage
\end{frame}
\end{document}

在此处输入图片描述


编辑:

快速获得第二行:

\documentclass{beamer}
\usetheme{default}

\title{bla}
\subtitle{blub}

\makeatletter
\setbeamertemplate{title page}
{
    \vbox{}
    \vfill
    \begingroup
    \centering
    \begin{beamercolorbox}[sep=8pt,center]{title}
        \usebeamerfont{title}\inserttitle\par%
        \ifx\insertsubtitle\@empty%
        \else%
        \vskip0.25em%
        {\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}%
            \visible<2->{\insertsubtitle}

            \visible<3>{I am a second line}\par}%
        \fi%     
    \end{beamercolorbox}%
    \vskip1em\par
    \begin{beamercolorbox}[sep=8pt,center]{author}
        \usebeamerfont{author}\insertauthor
    \end{beamercolorbox}
    \begin{beamercolorbox}[sep=8pt,center]{institute}
        \usebeamerfont{institute}\insertinstitute
    \end{beamercolorbox}
    \begin{beamercolorbox}[sep=8pt,center]{date}
        \usebeamerfont{date}\insertdate
    \end{beamercolorbox}\vskip0.5em
    {\usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par}
    \endgroup
    \vfill
}
\makeatother

\begin{document}
\begin{frame}
    \titlepage
\end{frame}
\end{document}

答案2

此处已有答案很棒,但有点遗憾的是你必须从头开始修改模板标题页。你可以通过重新定义来解决这个问题\insertsubtitle,如下所示:

\documentclass{beamer}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\title{Foobar}
\subtitle{baz}

\begin{document}

\let\oldinsertsubtitle\insertsubtitle
\renewcommand{\insertsubtitle}[1]{\visible<2->{\oldinsertsubtitle{#1}}}
\maketitle

\end{document}

相关内容