Tikz 和 Beamer:“暂停后”改变颜色

Tikz 和 Beamer:“暂停后”改变颜色

我有一张 tikz 绘图,我想更改第二张幻灯片中边缘的颜色。现在,我使用蛮力方法在前一个边缘上用红色绘制一条新边缘。

有什么方法可以减少代码中的冗余,而又不必一遍又一遍地重新定义整个箭头?就像\alert<2>在标准 beamer 环境中一样?

特别是,如果在第三张幻灯片上,我希望边缘再次变黑,我就必须第三次绘制它,黑色 - 这听起来不是最理想的。

目前的方法:

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{positioning}

\tikzstyle{block} = [rectangle, draw, 
text width=6em, text centered, rounded corners, minimum height=3em]

\begin{document}

    \begin{frame}

    \begin{tikzpicture}
    \node [block] (I2) {I2};
    \node [block] [left=5cm of I2] (I1) {I1};

\path[->] (I1) edge[shorten >=0.5cm, shorten <= 0.5 cm] node [right, near start, align=center] {$q=1$\\$p=2$} (I2);

    \visible<2>{    \path[->] (I1) edge[shorten >=0.5cm, shorten <= 0.5 cm, color=red] node [right, near start, color=red, align=center] {$q=1$\\$p=2$} (I2);}


    \end{tikzpicture}

    \end{frame}
\end{document}

答案1

在这个简单的情况下,你只需使用以下方法更改颜色即可\only<2>{\color{red}}

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{positioning}

\tikzset{block/.style={rectangle, draw, text width=6em, text centered, rounded corners, minimum height=3em}}

\begin{document}

    \begin{frame}

    \begin{tikzpicture}
    \node [block] (I2) {I2};
    \node [block] [left=5cm of I2] (I1) {I1};

    {\only<2>{\color{red}}\path[->] (I1) edge[shorten >=0.5cm, shorten <= 0.5 cm] node [right, near start, align=center] {$q=1$\\$p=2$} (I2);}

    \end{tikzpicture}

    \end{frame}
\end{document}

简洁且更灵活的方法是使用overlay-beamer-styles库。然后您可以使用alt=<2>{red}{black}它来指定不同的颜色。

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{positioning}

\usetikzlibrary{overlay-beamer-styles}

\tikzset{block/.style={rectangle, draw, text width=6em, text centered, rounded corners, minimum height=3em}}

\begin{document}

    \begin{frame}

    \begin{tikzpicture}
    \node [block] (I2) {I2};
    \node [block] [left=5cm of I2] (I1) {I1};

    \path[->,alt=<2>{red}{black}] (I1) edge[shorten >=0.5cm, shorten <= 0.5 cm] node [right, near start, align=center] {$q=1$\\$p=2$} (I2);

    \end{tikzpicture}

    \end{frame}
\end{document}

在此处输入图片描述

相关内容