![Beamer、tcolorbox 和淡入淡出覆盖](https://linux22.com/image/368025/Beamer%E3%80%81tcolorbox%20%E5%92%8C%E6%B7%A1%E5%85%A5%E6%B7%A1%E5%87%BA%E8%A6%86%E7%9B%96.png)
我有以下代码用于揭示两个 tcolorbox:
\documentclass{beamer}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage{graphicx}
\setbeamercovered{transparent}
\usepackage{tcolorbox}
\begin{document}
\beamerdefaultoverlayspecification{<+->}
\begin{frame}{Test}
\tcbox[size=fbox,nobeforeafter,tcbox raise base]{test1}
\pause
\tcbox[size=fbox,nobeforeafter,tcbox raise base]{test2}
\end{frame}
\end{document}
它适用于框架,但不适用于内部文本(它始终为黑色),如下面的屏幕截图所示。如何让叠加也适用于文本?
谢谢!Marco
答案1
您可以使用before upper={\pause}
来获得所需结果。如果这应该对所有 都自动进行tcolorboxes
,则可以将其放入 中\tcbset{}
。
\documentclass{beamer}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\setbeamercovered{transparent}
\usepackage[most]{tcolorbox}
\tcbset{%
enhanced,
size=fbox,
nobeforeafter,
tcbox raise base,
}
\begin{document}
\beamerdefaultoverlayspecification{<+->}
\begin{frame}{Test}
\tcbox{test1}
\tcbox[before upper={\pause}]{test2}
\end{frame}
\end{document}
或者如果你正在寻找与周围的“覆盖”状态相匹配的东西(基于不幸被删除的答案https://tex.stackexchange.com/a/408650/36296):
\documentclass{beamer}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\setbeamercovered{transparent}
\usepackage[most]{tcolorbox}
\tcbset{%
enhanced,
size=fbox,
nobeforeafter,
tcbox raise base,
}
\begin{document}
\beamerdefaultoverlayspecification{<+->}
\begin{frame}{Test}
\begin{itemize}
\item tes
\item test \tcbox[only=<-.(-1)>{opacitytext=0.2}]{test1} test
\item test \tcbox[only=<-.(-1)>{opacitytext=0.2}]{test2} test
\end{itemize}
\end{frame}
\end{document}
答案2
您可以将外部颜色存储在框的开头并重新插入(遗憾的是不能使用 coltext)。请注意,这不仅会拾取不透明度(这也许可以避免,但颜色混合的代码很复杂,我从来没有真正理解过它)。
\documentclass{beamer}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\setbeamercovered{transparent}
\usepackage[most]{tcolorbox}
\begin{document}
\beamerdefaultoverlayspecification{<+->}
\begin{frame}{Test}
\color{red}\ttfamily
test
\tcbox[size=fbox,nobeforeafter,
tcbox raise base,
code=\colorlet{outercolor}{.},
before upper={\color{outercolor}},
]{test1}
\pause
test
\tcbox[size=fbox,nobeforeafter,
tcbox raise base,
code=\colorlet{outercolor}{.},
before upper={\color{outercolor}},
]{test2}
\end{frame}
\end{document}