每次翻页时随机为 PDF 中的背景分配颜色

每次翻页时随机为 PDF 中的背景分配颜色

是否可以这样更改 PDF 中 Beamer 演示文稿的背景颜色,以便每当我切换页面时,颜色也会切换?

请注意,我并不是在寻找一种在编译过程中随机切换的解决方案(尽管这也很有趣),而是在寻找一种在最终 PDF 中切换页面时切换颜色的方法。因此从幻灯片 1 到幻灯片 2 再返回应该会为幻灯片 1 生成两种不同的背景颜色。

答案1

基于 OCG 和 JavaScript 的示例(pdflatex需要 Adob​​eReader)。背景颜色在显示时随机选择。

\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 中得到解决,我不会感到惊讶。:-)

相关内容