![设置 \setbeamercovered{transparent} 后,\onslide 后面的文本是透明的](https://linux22.com/image/396788/%E8%AE%BE%E7%BD%AE%20%5Csetbeamercovered%7Btransparent%7D%20%E5%90%8E%EF%BC%8C%5Conslide%20%E5%90%8E%E9%9D%A2%E7%9A%84%E6%96%87%E6%9C%AC%E6%98%AF%E9%80%8F%E6%98%8E%E7%9A%84.png)
我正在学习\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}
我认为“在所有幻灯片上显示”文本不应该在所有幻灯片上都是透明的。如果我注释掉 \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)