让 TikZ 取消 Beamer 中的“覆盖感知”

让 TikZ 取消 Beamer 中的“覆盖感知”

如何让 TikZ 取消 Beamer 中的“覆盖感知”?

代码取自 使用向下箭头取消数学表达式

\documentclass{beamer}
\usepackage{tikz}
\tikzset{
main node/.style={inner sep=0,outer sep=0},
label node/.style={inner sep=0,outer ysep=.2em,outer xsep=.4em,font=\scriptsize,overlay},
strike out/.style={shorten <=-.2em,shorten >=-.5em,overlay},
strikee out/.style={shorten <=-.2em,shorten >=-.2em,overlay}
}
%
\newcommand{\cancel}[2][]{\tikz[baseline=(N.base)]{
  \node[main node](N){$#2$};
  \draw[strikee out,#1]  (N.south west) -- (N.north east);
}}
%
\begin{document}
%
\begin{frame}
\begin{align*}
a &= \frac{b}{c}\\
&= \frac{b}{b \cdot d}\\
\end{align*}
\end{frame}
%
%
\begin{frame}
\begin{align*}
a &= \frac{b}{c}\\
&= \frac{\cancel[red]{b}}{\cancel[red]{b} \cdot d}\\
\end{align*}
\end{frame}
%
\end{document}

答案1

我认为您只想在某些帧上取消。如果是这样,您可能正在寻找库overlay-beamer-styles。您只需添加visible on=<...>在帧上可见的取消行即可...

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{overlay-beamer-styles}
\tikzset{
main node/.style={inner sep=0,outer sep=0},
label node/.style={inner sep=0,outer ysep=.2em,outer xsep=.4em,font=\scriptsize,overlay},
strike out/.style={shorten <=-.2em,shorten >=-.5em,overlay},
strikee out/.style={shorten <=-.2em,shorten >=-.2em,overlay}
}
%
\newcommand{\Cancel}[2][]{\tikz[baseline=(N.base)]{
  \node[main node](N){$#2$};
  \draw[strikee out,#1]  (N.south west) -- (N.north east);
}}
%
\begin{document}
%
%
\begin{frame}
\begin{align*}
a &= \frac{b}{c}\\
&= \frac{\Cancel[red,visible on=<2>]{b}}{\Cancel[red,visible on=<2>]{b} \cdot d}\\
\end{align*}
\end{frame}
%
\end{document}

在此处输入图片描述

相关内容