是否可以这样更改 PDF 中 Beamer 演示文稿的背景颜色,以便每当我切换页面时,颜色也会切换?
请注意,我并不是在寻找一种在编译过程中随机切换的解决方案(尽管这也很有趣),而是在寻找一种在最终 PDF 中切换页面时切换颜色的方法。因此从幻灯片 1 到幻灯片 2 再返回应该会为幻灯片 1 生成两种不同的背景颜色。
答案1
基于 OCG 和 JavaScript 的示例(pdflatex
需要 AdobeReader)。背景颜色在显示时随机选择。
\documentclass{beamer}
\usepackage{multido}
\usepackage{animate} %defines \@anim@newocg
\makeatletter
\let\newocg\@anim@newocg
\def\lastOCGobj{\@anim@curocg}
\makeatother
%JavaScript action to be executed on page open event
\pdfpageattr{ /AA <<
/O <<
/S/JavaScript/JS (
if(typeof(bgOCGs)==='undefined'){
bgOCGs=this.getOCGs();
curOCG=bgOCGs[0];
for(i=1;i<bgOCGs.length;i++)bgOCGs[i].state=false;
curOCG.state=true;
}
var l = bgOCGs.length;
randomIndex = Math.floor(Math.random()*l)\%l;
curOCG.state=false;
curOCG=bgOCGs[randomIndex];
curOCG.state=true;
)
>>
>>}
\begin{document}
\newsavebox\bgbox
\multido{\i=1+1}{100}{%
\pgfmathsetmacro{\R}{random(0,10000)/10000}%
\pgfmathsetmacro{\G}{random(0,10000)/10000}%
\pgfmathsetmacro{\B}{random(0,10000)/10000}%
\definecolor{bgcolor}{rgb}{\R,\G,\B}%
\savebox\bgbox{\color{bgcolor!40}\rule{\paperwidth}{\paperheight}}%
\newocg{bg}{\i}% %create new ocg
\immediate\pdfxform attr{/OC \lastOCGobj}\bgbox%
\expandafter\xdef\csname cbox\i\endcsname{\the\pdflastxform}%
}
\setbeamertemplate{background canvas}{%
\makebox[\paperwidth][l]{%
\rule{0pt}{\paperheight}%
\multido{\i=1+1}{100}{%
\makebox[0pt][l]{\expandafter\pdfrefxform\csname cbox\i\endcsname}%
}%
}%
}
\begin{frame}{Frame 1}
\end{frame}
\begin{frame}{Frame 2}
\end{frame}
\begin{frame}{Frame 3}
\end{frame}
\begin{frame}{Frame 4}
\end{frame}
\end{document}
答案2
因为你(本质上)想要随机颜色的页面背景在 显示时间PDF,这只能通过 JavaScript 来实现。正如评论中指出的那样,OCG 会有所帮助。
如果这个问题已经在 ConTeXt 中得到解决,我不会感到惊讶。:-)