使用点生成图形时,如何在 Beamer 中使用覆盖层?

使用点生成图形时,如何在 Beamer 中使用覆盖层?

我通常用 graphiz 来描述图表,并且我喜欢dot2tex生成相应的 TikZ 代码。

为了在演示文稿中解释算法,我需要逐步揭示图形的节点和边缘(当然,不改变布局)。例如,当人们直接编写 tikz 代码时,我可以找到一些关于如何做到这一点的文档Beamer 与 TikZ:逐步发现节点,但在我的例子中,代码是从点规范自动生成的。是否可以在点文件中包含覆盖规范?

答案1

我认为在点文件中您可以只包含标签的覆盖规范。以下是点文件的示例(我称之为 mygraph.dot):

digraph G {
  1 [texlbl="{\visible<1->{1}}"]; 
  2 [texlbl="{\visible<2->{2}}"];
  3 [texlbl="{\visible<3->{3}}"]; 
  1->2 [label="1/2"];
  2->3 [label="1/2"];
  3->1 [label="1/2"];
}

现在您可以使用终端创建相应的 TikZ 代码:

 dot2tex -ftikz mygraph.dot > mygraph.tex

如您所知,mygraph.tex 是一个完整的 tex 文档,因此您只需复制演示文稿中的图片代码即可。请注意,这仅适用于节点标签,而不适用于边缘标签。

最好的做法是:

  • 将点文件导出到 tex 文档中;
  • 编辑插入的图片\pause

大约一年后回来......

实际上,使用 GraphViz 的覆盖规范完全可以通过著名的 Daniel 风格来visible on实现思维导图 tikzpicture 在 beamer 中 (逐步显示)。由于它是一种样式,因此可以通过键将其包含在点文件中,style并为顶点和边完成工作;对于标签,可以利用构造{\visible<overlay specification>{label}},或者再次使用visible on键内的样式lblstyle

一个例子:

\documentclass{beamer}
\usepackage{lmodern}
\usepackage{tikz,dot2texi}
\usetikzlibrary{automata,shapes}

\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
  },
  state st/.style={draw,circle,top color=orange!2,bottom color=red!50!orange!50}
}

\begin{document}

\begin{frame}[fragile]{My graph}
\begin{tikzpicture}
\begin{dot2tex}[styleonly,codeonly,circo,options=-s -tmath]
digraph G {
  1 [style="state st,visible on=<2->"]; 
  2 [style="state st,visible on=<3->"]; 
  3 [style="state st,visible on=<4->"];  
  1->2 [label="1/2",style="visible on=<3->",lblstyle="visible on=<3->"];
  2->3 [label="1/2",style="visible on=<4->",lblstyle="visible on=<4->"];
  3->1 [label="1/2",style="visible on=<5->",lblstyle="visible on=<5->"];
}
\end{dot2tex}
\end{tikzpicture}
\end{frame}

\end{document}

结果:

在此处输入图片描述

假设该文件名为anim-graph.tex,则必须将其编译为:

pdflatex -shell-escape anim-graph.tex

由于包裹dot2texi需要运行 dot2tex。

相关内容