我正在开发 Beamer 主题,我想让标题页的背景颜色变成一种颜色,而让所有其他幻灯片具有不同的颜色。
我有成立我可以使用以下方法更改幻灯片的背景颜色:
\setbeamercolor{background canvas}{bg=violet}
我想在 beamer 主题样式文件中执行此操作,而不是在 latex 文档中,但我不知道如何做到这一点。
我知道我可以像这样更改幻灯片 1 上的背景颜色:
\setbeamertemplate{background}{%
\ifnum\c@framenumber=1%
\begin{tikzpicture}[background rectangle/.style={fill=blue}, show background rectangle]
\hspace*{20em}
\node[opacity=0.45, scale=5.6]{\includegraphics{background}};
\end{tikzpicture}
\else%
\begin{tikzpicture}[background rectangle/.style={fill=white}, show background rectangle]
\hspace*{20em}
\node[opacity=0.09, scale=5.6]{\includegraphics{background}};
\end{tikzpicture}
\fi%
如果标题幻灯片是第一张幻灯片,这种方法就有效——几乎总是如此。如果将多张标题幻灯片放在同一个文件中,这种方法就无效,我有时这样做。
这就是我想要实现的目标。在这个例子中,我使用了出色的 Metropolis 主题。这个例子表明,我可以在同一演示文稿中拥有两个不同的标题幻灯片。它确实不是显示标题幻灯片中有不同的背景颜色。当然,我想在自己的主题中实现这一点。(很抱歉我不能分享我的所有样式文件。)
\documentclass{beamer}
\usetheme{metropolis}
\begin{document}
\title{First Title}
\begin{frame}
\maketitle
\end{frame}
\begin{frame}{Some title}
Some content here
\end{frame}
\title{Second Title}
\begin{frame}
\maketitle
\end{frame}
\end{document}
答案1
您可以向绘制背景的模板tikzpicture
中添加一个title page
,直接使用以下坐标current page
:
beamerthememytheme.sty
\usetheme{metropolis}
\usetikzlibrary{backgrounds}
\addtobeamertemplate{title page}{%
\begin{tikzpicture}[remember picture, overlay]
\draw[fill=violet!20!white] (current page.south west) rectangle
(current page.north east);
\end{tikzpicture}%
}{}
主文件
\documentclass{beamer}
\usetheme{mytheme}
\begin{document}
\title{First Title}
\begin{frame}
\maketitle
\end{frame}
\begin{frame}{Some title}
Some content here
\end{frame}
\title{Second Title}
\begin{frame}
\maketitle
\end{frame}
\end{document}
答案2
\setbeamercolor{background canvas}{bg=violet}
确实有效,但我还没有找到在其中使用它的方法setbeamertemplate
。
它可以用于框架之间的文档,以改变其背景,如下所示:
\begin{document}
% Switch to custom background color for title frame
\setbeamercolor{background canvas}{bg=violet}
\title{First Title}
\begin{frame}
\maketitle
\end{frame}
% Set back the background color for other frames.
\setbeamercolor{background canvas}{bg=white}
\begin{frame}{Some title}
Some content here
\end{frame}
\title{Second Title}
\begin{frame}
\maketitle
\end{frame}
\end{document}