![Beamer 标题页点击后显示副标题](https://linux22.com/image/333152/Beamer%20%E6%A0%87%E9%A2%98%E9%A1%B5%E7%82%B9%E5%87%BB%E5%90%8E%E6%98%BE%E7%A4%BA%E5%89%AF%E6%A0%87%E9%A2%98.png)
如何让 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}