我正在阅读演示文稿这里每张幻灯片的背景图像都会发生变化。我在想如何在 Beamer 中做到这一点。伪代码
\documentclass{beamer}
\usetheme{Berkeley}
% TODO random background generation here
\begin{document}
\usepackage{lipsum}
\begin{frame}
\frametitle{Normal}
% lorem
\end{frame}
\end{document}
如果 TeXLive 中有背景图片的测试集,那就最好使用它们。否则,虚拟测试图像也可以。
操作系统:Debian 9.1 Stretch
TeXLive:2017
答案1
下面使用pgf
/tikz
从 1、2 和 3 中生成一个随机数。在mwe
包中(包含在中xcolor
)有图像文件example-image-a
、example-image-b
和example-image-c
,所以我们用 选择它们\@alph
。
\documentclass{beamer}
\usetheme{Berkeley}
\usepackage{pgf}% or \usepackage{tikz}
\usepackage{lipsum}
\makeatletter
\newcommand*{\randimg}{%
\pgfmathrandom{3}%
\includegraphics[width=\paperwidth,height=\paperheight]%
{example-image-\@alph{\pgfmathresult}}}
\makeatother
\setbeamertemplate{background}{%
\randimg%
}
\begin{document}
\begin{frame}
\frametitle{Normal}
\lipsum
\end{frame}
\begin{frame}
Foo
\end{frame}
\begin{frame}
Bar
\end{frame}
\begin{frame}
Baz
\end{frame}
\end{document}
下面使用一个 TeX 计数来\mycount
循环播放图像,并且不再需要pgf
或tikz
(仅需要 的定义\randimg
和 的初始化\mycount
,其余部分保持不变):
\newcount\mycount
\newcommand*{\randimg}{%
\global\advance\mycount by 1\relax%
\ifnum\mycount>3\relax%
\global\mycount=1\relax%
\fi%
\includegraphics[width=\paperwidth,height=\paperheight]%
{example-image-\@alph{\mycount}}}