Beamer、tcolorbox 和淡入淡出覆盖

Beamer、tcolorbox 和淡入淡出覆盖

我有以下代码用于揭示两个 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}

在此处输入图片描述

相关内容