我怎样才能拥有多个标题页背景,并通过我的 beamer 主题进行控制?

我怎样才能拥有多个标题页背景,并通过我的 beamer 主题进行控制?

似乎我在定义标题页时遗漏了一些东西beamer。这是我的第一次尝试(当然在视觉上更复杂):

\documentclass[aspectratio=169]{beamer}
\usepackage{tikz}

\mode<presentation>
\defbeamertemplate*{title page}{mydefault}{%
\begin{tikzpicture}
\useasboundingbox (0,0) rectangle (\the\paperwidth,\the\paperheight);
\fill[fill=red] (0,0) rectangle (\the\paperwidth,\the\paperheight);
\node[anchor=north west,inner sep=0pt,outer sep=0pt] at (0,\the\paperheight) {This text should be in the upper left corner};
\end{tikzpicture}
}
\mode<all>

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

在此处输入图片描述

问题是,带有文本的红色框未与左上角对齐。如果我将相同的代码放入\defbeamertemplate*{background}{mydefault}定位中,则定位绝对位于左上角,但我需要为用户提供不同的背景,以便在用户输出之前进行选择\titlepage。仅供参考,我想避免使用[remember picture,overlay]current page节点以避免多次编译。


然后我意识到,也许有另一种方法可以实现我的目标,即拥有 5 种不同的背景,2 种用于标题,1 种用于章节标题,1 种用于常规页面,1 种用于演示结束页面。

我读投影机中标题和“正常”框架的不同背景之前,但它在非绝对位置上也有同样的问题。然后我遇到了在自定义主题文件的标题页上设置背景模板标题页脚注不同的主题所以我继续实施:

\documentclass[aspectratio=169]{beamer}
\usepackage{tikz}

\makeatletter
\def\ps@navigation@titlepage{%
    \setbeamertemplate{background}[color][green]
    \@nameuse{ps@navigation}}
\addtobeamertemplate{title page}{\thispagestyle{navigation@titlepage}}{}
\makeatother

\mode<presentation>
\defbeamertemplate*{background}{color}[1][red]{%
\begin{tikzpicture}
\useasboundingbox (0,0) rectangle (\the\paperwidth,\the\paperheight);
\fill[fill=#1] (0,0) rectangle (\the\paperwidth,\the\paperheight);
\node[anchor=north west,inner sep=0pt,outer sep=0pt] at (0,\the\paperheight) {This text should be in the upper left corner};
\end{tikzpicture}
}
\mode<all>

\setbeamertemplate{background}[color][red]

\begin{document}

\title{This shall be a green title}
\begin{frame}
\titlepage
\end{frame}

\begin{frame}
This shall be a regular red content page
\end{frame}

\title{This shall be a blue title}
\begin{frame}
\setbeamertemplate{background}[color][blue]
\titlepage
\end{frame}

\begin{frame}
This shall be a regular red content page
\end{frame}
\end{document}

我现在的问题是,我不知道如何为另一个标题页设置另一个背景,因为我的理解是,我只能用这种方式将一种页面样式传递给标题页,有什么想法吗?是否可以做一些事情,比如\begin{frame}[red/blue/green]\titlepage\end{frame}将信息传递到我的模板中?

答案1

您可以通过将红色矩形移动左边距的长度来避开标题页左侧的白色间隙:

\documentclass[aspectratio=169]{beamer}
\usepackage{tikz}

\makeatletter
\newcommand{\insertleftmargin}{\beamer@leftmargin}
\makeatother

\mode<presentation>
\defbeamertemplate*{title page}{mydefault}{%
\begin{tikzpicture}
\useasboundingbox (0,0) rectangle (\the\paperwidth,\the\paperheight);
\fill[fill=red] (-\insertleftmargin,0) rectangle (\the\paperwidth,\the\paperheight);
\node[anchor=north west,inner sep=0pt,outer sep=0pt] at (-\insertleftmargin,\the\paperheight) {This text should be in the upper left corner};
\end{tikzpicture}
}
\mode<all>

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

相关内容