Overleaf beamer 森林覆盖

Overleaf beamer 森林覆盖

我希望我的森林节点按顺序显示。下面的代码使文本按顺序显示,但仍显示每个项目的框。我怎样才能使框和文本按顺序显示?

这是我的妈妈:

\documentclass[xcolor={dvipsnames}]{beamer}
\usepackage{tikz}
\usepackage{forest}
\usepackage{pgfkeys}
\usetikzlibrary{arrows.meta}

\begin{document}

\begin{frame}

\tikzset{
invisible/.style={opacity=0, text opacity=0},
visible on/.style={alt=#1{}{invisible}},
alt/.code args={<#1>#2#3}{%
    \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} 
  },
  block/.style={rectangle, draw, fill=white!20, text width=2.75cm, text centered, rounded corners, minimum height=1.4cm},
  line/.style={draw, very thick, color=black!80, -Stealth},
}

\forestset{
  visible on/.style={
    for tree={
      /tikz/visible on={#1},
      edge+={/tikz/visible on={#1}}}}}

\begin{forest}
  arrow to/.style n args=2{%
    delay={%
      tikz+={%
      \draw [every edge, line] () -- (!#1) node [above, midway] {#2};
      },
    },
    !u.s sep+=30pt,
  },
  before typesetting nodes={%
    where n=1{%
      edge label/.wrap value={%
       node [left,pos=.75, anchor=mid east] {#1}
      },
    }{%
      edge label/.wrap value={%
        node [right,pos=.75, anchor=mid west] {#1}
      },
    },
  },
  for tree={%
  grow=east,
    parent anchor=east,
    child anchor=west,
    calign=edge midpoint,
    edge+=->,
    block,
    edge={line},
    l sep+=10pt,
  },
    forked edges
 [\visible<1->{some text}
    [\uncover<2->{some more text}
     [\uncover<3->{even more text}]
       [\uncover<3->{more text again}]
        [\uncover<3->{even some more text}]
       
    ]
    [\uncover<2->{the last text}
    ]
]
\end{forest} 
 
\end{frame}
\end{document}

谢谢你!

更新了代码:感谢您指出它没有编译。我删除了一个多余的 {。

代码来自:森林中的定位和布局

答案1

由于多个错误,您的代码无法编译。每当您遇到错误时,生成的 PDF 仅适合调试。如果编译成功,它不会像您预期的那样。如果您无法修复它,发布无法编译的代码是可以的。但请报告错误!

从您的代码中我不清楚您到底想做什么。

  • 您使用forked edges但没有加载它所需的库。
  • 您定义了visible on等等,但不使用它们。
  • 您定义了arrow to,但从未使用过它。
  • edge label您包含了您没有的定位代码。

此外,您还存在不匹配{ }、环境中有空白行forest、定义中参数使用不正确以及其他各种错误。您必须先更正所有这些错误,然后才能确定输出是否正确。

这是可以编译的版本。我保留了未使用的定义arrow to,但注释掉了处理edge label,因为这样无法正常工作。我用替换了\visible和,更正了\uncover组并删除了空白行。我还将剩余的定义移到了序言中,这样它们就可以重复使用而不会重复,添加了库并删除了无论如何使用的包的加载。visible on{ }edgesforest

在 Beamer 发现一棵森林树

\documentclass[xcolor={dvipsnames}]{beamer}
\usepackage[edges]{forest}
\usetikzlibrary{arrows.meta}
\tikzset{
  invisible/.style={opacity=0, text opacity=0},
  visible on/.style={alt=#1{}{invisible}},
  alt/.code args={<#1>#2#3}{%
    \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} 
  },
  block/.style={rectangle, draw, fill=white!20, text width=2.75cm, text centered, rounded corners, minimum height=1.4cm},
  line/.style={draw, very thick, color=black!80, -Stealth},
}

\forestset{
  visible on/.style={
    for tree={
      /tikz/visible on={#1},
      edge+={/tikz/visible on={#1}},
    },
  },
  arrow to/.style n args=2{%
    delay={%
      tikz+={%
        \draw [every edge, line] () -- (!#1) node [above, midway] {#2};
      },
    },
    !u.s sep+=30pt,
  },
}


\begin{document}

\begin{frame}

\begin{forest}
%   before typesetting nodes={%
%     where n=1{%
%       edge label/.wrap value={%
%         node [left,pos=.75, anchor=mid east] {#1}
%       },
%     }{%
%       edge label/.wrap value={%
%         node [right,pos=.75, anchor=mid west] {#1}
%       },
%     },
%   },
  for tree={%
    grow=east,
    parent anchor=east,
    child anchor=west,
    calign=edge midpoint,
    edge+=->,
    block,
    edge={line},
    l sep+=10pt,
  },
  forked edges
 [some text, visible on=<1->
    [some more text, visible on=<2->
     [even more text, visible on=<3->]
       [more text again, visible on=<3->]
        [even some more text, visible on=<3->]
    ]
    [the last text, visible on=<2->
    ]
  ]
\end{forest} 

\end{frame}
\end{document}

相关内容