我希望我的森林节点按顺序显示。下面的代码使文本按顺序显示,但仍显示每个项目的框。我怎样才能使框和文本按顺序显示?
这是我的妈妈:
\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
{
}
edges
forest
\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}