Beamer 在 tikz-network 图形中叠加

Beamer 在 tikz-network 图形中叠加

我想在使用以下设计的图形中定义覆盖(Beamer 意义上的)tikz-network包裹。

例如,假设我有下图:

\documentclass{standalone}

\usepackage{tikz}
\usepackage{tikz-network}

\begin{document}
\begin{frame}
\begin{tikzpicture}
    \Vertex[x=0.0, y=1.0, label=$v_1$]{v1}
    \Vertex[x=1.0, y=1.0, label=$v_2$]{v2}
    \Vertex[x=2.0, y=1.0, label=$v_3$]{v3}

    \Edge[color=black](v1)(v2)
    \Edge[color=black](v2)(v3)
\end{tikzpicture}
\end{frame}
\end{document}

并且我希望节点v1在步骤 2 中消失。我尝试使用visible on这里建议的密钥:https://tex.stackexchange.com/a/136166/31360看起来像这样:

\documentclass{beamer}

\usepackage{tikz}
\usepackage{tikz-network}

\tikzset{
  invisible/.style={opacity=0},
  visible on/.style={alt={#1{}{invisible}}},
  alt/.code args={<#1>#2#3}{%
    \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't change the path
  },
}

\begin{document}
\begin{frame}
\begin{tikzpicture}
    \Vertex[x=0.0, y=1.0, label=$v_1$, visible on=<2->]{v1}
    \Vertex[x=1.0, y=1.0, label=$v_2$]{v2}
    \Vertex[x=2.0, y=1.0, label=$v_3$]{v3}

    \Edge[color=black](v1)(v2)
    \Edge[color=black](v2)(v3)
\end{tikzpicture}
\end{frame}
\end{document}

但它似乎不适用于tikz-network,因为我收到"Package xkeyval Error: 'on visible' undefined in families 'vertex'“错误。我猜解决方案是将密钥扩展到vertex(以及扩展到edge),但我不知道如何做到这一点。

答案1

由于不了解tikz-network软件包,我不知道是否可以调整样式visible ontikz-network不过,仍然可以使用经典控件与 beamer 进行叠加。

要做到这一点,你必须把自己置于一个框架环境中(你已经忘记了)。命令\onslide\only是相同的,除了\onslide保留它不显示的位置。

\documentclass{beamer}

\usepackage{tikz}
\usepackage{tikz-network}

%  \tikzset{
%    invisible/.style={opacity=0},
%    visible on/.style={alt={#1{}{invisible}}},
%    alt/.code args={<#1>#2#3}{%
%      \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't change the path
%    },
%  }
\begin{document}
\begin{frame}
\begin{tikzpicture}
    \onslide<1->{\Vertex[x=0.0, y=1.0, label=$v_1$]{v1}}
    \onslide<2->{\Vertex[x=1.0, y=1.0, label=$v_2$]{v2}}
    \onslide<3->{\Vertex[x=2.0, y=1.0, label=$v_3$]{v3}}

    \only<2->{\Edge[color=black](v1)(v2)}
    \only<3>{\Edge[color=black](v2)(v3)}
\end{tikzpicture}
\end{frame}

\end{document}

使用 www.DeepL.com/Translator 翻译

答案2

如果你切换到beamer,你可以使用\altTi 的命令您尝试使用的 Z 样式正在使用。不幸的是,tikz-network它有自己的不透明度键,因此您可以执行以下操作:

\documentclass{beamer}

\usepackage{tikz}
\usepackage{tikz-network}

\begin{document}
\begin{frame}[t]
\frametitle{A network}
\begin{tikzpicture}
    \begin{scope}
    \alt<2->{}{\def\VertexFillOpacity{0}\def\VertexLineOpacity{0}
    \def\VertexTextOpacity{0}}
    \Vertex[x=0.0, y=1.0, label=$v_1$]{v1}
    \end{scope}
    \Vertex[x=1.0, y=1.0, label=$v_2$]{v2}
    \Vertex[x=2.0, y=1.0, label=$v_3$]{v3}

    \Edge[color=black](v1)(v2)
    \Edge[color=black](v2)(v3)
\end{tikzpicture}
\end{frame}
\end{document}

在此处输入图片描述

或者,边缘也消失了,而风格也发生了变化。

\documentclass{beamer}

\usepackage{tikz}
\usepackage{tikz-network}
\tikzset{
  network invisible/.code={\def\VertexFillOpacity{0}\def\VertexLineOpacity{0}\def\VertexTextOpacity{0}
  \def\EdgeOpacity{0}\def\EdgeTextFillOpacity{0}\def\EdgeTextOpacity{0}},
  network visible on/.code={\alt#1{}{\tikzset{network invisible}}}}
\begin{document}
\begin{frame}[t]
\frametitle{A network}
\begin{tikzpicture}
    \begin{scope}[network visible on=<2->]
      \Vertex[x=0.0, y=1.0, label=$v_1$]{v1}
    \end{scope}
    \Vertex[x=1.0, y=1.0, label=$v_2$]{v2}
    \Vertex[x=2.0, y=1.0, label=$v_3$]{v3}
    \begin{scope}[network visible on=<2->]
    \Edge[color=black](v1)(v2)
    \end{scope}
    \Edge[color=black](v2)(v3)
\end{tikzpicture}
\end{frame}
\end{document}

在此处输入图片描述

相关内容