设置 \setbeamercovered{transparent} 后,\onslide 后面的文本是透明的

设置 \setbeamercovered{transparent} 后,\onslide 后面的文本是透明的

我正在学习\onslide。我从 beameruserguide 复制了示例。设置后,最后的文本“显示在所有幻灯片上”是透明的\setbeamercovered{transparent}。我不知道为什么。有人能回答我这个问题吗?谢谢。

\documentclass{beamer}
\setbeamercovered{transparent}
\begin{document}
\begin{frame}
Shown on first slide.
\onslide<2-3>
Shown on second and third slide.
\begin{itemize}
\item
Still shown on the second and third slide.
\onslide+<4->
\item
Shown from slide 4 on.
\end{itemize}
Shown from slide 4 on.
\onslide
Shown on all slides.
\end{frame}

\end{document}

第一张幻灯片 第二张幻灯片 第三张幻灯片 第 4 张幻灯片 我认为“在所有幻灯片上显示”文本不应该在所有幻灯片上都是透明的。如果我注释掉 \setbeamercovered{transparent},它就不再透明了。有人能告诉我原因吗?

答案1

beamer 在命令中重新定义,beamerbasecolor\reset@color允许某些颜色设置在分组后继续存在。最重要的是,它插入了以下行

 \pgfsys@color@unstacked{beamer@tempcolor}%

在 pdflatex 中\pgfsys@color@unstacked定义pgfsys-pdftex.def为(在 pgf 驱动程序中)

\def\pgfsys@color@unstacked#1{%
    \pdfliteral{\csname\string\color@#1\endcsname}%
}

在 pgf 的 xetex 驱动程序中它没有定义,因此使用空的 fallback 定义。

此命令负责重置一组之后的颜色:

\documentclass{beamer}
\setbeamercovered{transparent}
\setbeamertemplate{navigation symbols}{}
\makeatletter
% \pgfsys@color@unstacked definition in pdflatex: 
% \pdfliteral {\csname \string \color@ #1\endcsname }
% in xelatex: {}
\def\pgfsys@color@unstacked#1{} %now it fails with pdflatex too

\begin{document}
\begin{frame}[plain]
1A
\onslide<1>
\begingroup
1B
\onslide<2>
2C
\endgroup
2D
\onslide
1-2E
\end{frame}

\end{document} 

答案2

你的问题的前提

“设置后,最后一段文字“显示在所有幻灯片上”是透明的\setbeamercovered{transparent}

是错误的。至少在我的计算机上,“显示在所有幻灯片上”文本在所有幻灯片上显示为正常(非透明)文本。该选项\setbeamercovered{transparent}仅对覆盖中的文本有影响。

编辑:我电脑上编译后的 PDF 与 Keqi Ma 提供的屏幕截图不同。我使用以下方法观察到了正确的行为

Document Class: beamer 2015/01/05 3.36

Package: beamerbaseoverlay 2013/12/25 (rcs-revision f6bd5e3805da)

相关内容