如何使用 \pause 使投影機示範中的每個層級依序出現?

如何使用 \pause 使投影機示範中的每個層級依序出現?
\documentclass[tikz,border=10pt]{standalone}  
\usepackage{pgfplots}  
\usepackage{forest}  
\usetikzlibrary{shadows}  
\begin{document}  
\begin{forest}
  shade me/.style={%  
    bottom color=#1!25,  
    top color=#1!5,  
    draw=#1,  
    drop shadow,  
    font=\Huge,  
  },  
  my label/.style n args=2{%  
    edge label={node [midway, black, font=\sffamily\large, #1] {#2}}  
  },  
  where n children=0{%  
    shade me=green!95!gray,
  }{%  
    if level=0{%  
      shade me=green!95!gray,  
    }{%  
      shade me=green!95!gray, 
    }  
  },  
  for tree={%  
    delay={content/.wrap value={\strut #1}},  
    edge={red,->},  
    l sep+=45pt,  
    s sep+=60pt  
  }  
  [100000 individuals  
  [100 affected, my label={above, xshift=1cm}{}  
      [{95\% true positives}, my label={below, xshift=-1.7cm}{}  
    [,phantom] [{95 + 999 test positive, Total = 1094}, my label={above, sloped}{}, name=aux1]]]  
    [99900 unaffected, my label={above, sloped}{}  
      [{1\% false positives}, my label={below, xshift=1.5cm}{}, name=aux  
 % [{95 + 999 test positive Total = 1094}, my label={above, sloped}{}]
 ]]        ]  
    ]  
  ]  
  \draw[red, ->] (aux)--(aux1);
\end{forest}  
\end{document} 

答案1

請注意,我必須以各種方式修改您的 MWE,以便在開始解決方案之前做好問題準備。

  1. 當問題本質上是關於特定類別時,合適的 MWE 需要使用該類別。在這種情況下,第一個明顯需要的改變是使用beamer。否則,嘗試實施增量發現是沒有意義的。 (也許您可以使用 選項beamerstandalone但您的 MWE 沒有使用該選項。)

  2. 第二個明顯需要的修改是,在你甚至可以思考關於花俏的覆蓋規範,您需要修改樹規範,因為它非常不適合 Beamer 投影片。這簡直就是巨大的

  3. 樹的大量程式碼完全未使用,可以簡單地從範例中刪除。對於這個目的來說,沒有邊緣標籤與空標籤一樣好——也許更好。

完成後,這是一個基於我使用的方法的解決方案,該解決方案非常感謝各個作者,尤其是代碼中註明的 Qrrbrbirlbel。

\begin{filecontents}{mytree.tex}
\documentclass[tikz,border=10pt,multi]{standalone}
\usepackage{forest}
\usetikzlibrary{shadows}
\begin{document}
\begin{forest}
    shade me/.style={%
      bottom color=#1!25,
      top color=#1!5,
      draw=#1,
    },
    where n children=0{%
      shade me=green!95!gray,
    }{%
      if level=0{%
        shade me=green!95!gray,
      }{%
        shade me=green!95!gray,
      }
    },
    for tree={%
      delay={content/.wrap value={\strut #1}},
      edge={red,->},
      l sep+=20pt,
      s sep+=20pt,
      from slide/.wrap pgfmath arg={#1}{int(level()+1)},
    },
    delay={%
      for tree={%
        visible on=<\forestoption{from slide}->,
        alt=<\forestoption{from slide}->{drop shadow}{},
      }
    }
    [100000 individuals
      [100 affected
        [{95\% true positives}
          [,phantom
          ]
          [{95 + 999 test positive, Total = 1094}, name=aux1
          ]
        ]
      ]
      [99900 unaffected
        [{1\% false positives}, tikz+={\scoped[visible on=<4>]{\draw [red, ->] () -- (aux1);}}
        ]
      ]
    ]
  \end{forest}
\end{document}
\end{filecontents}
\documentclass{beamer}
\usepackage{forest,standalone}
\usetikzlibrary{shadows}
\tikzset{% set up for transitions using tikz with beamer overlays - developed by Daniel (http://tex.stackexchange.com/a/55849/) and, in ear lier form, by Matthew Leingang (http://tex.stackexchange.com/a/6155/) and modified for this use, I think by Qrrbrbirlbel (http://tex.stacke xchange.com/a/112471/)
  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}} % \pgfkeysalso doesn't change the path
  },
}
\forestset{%
  visible on/.style={% developed by Qrrbrbirlbel (http://tex.stackexchange.com/a/112471/)
    for tree={%
      /tikz/visible on={#1},
      edge={/tikz/visible on={#1}}}},
  % based on Qrrbrbirlbel's answer at http://tex.stackexchange.com/a/112895/
  declare toks={from slide}{1},
}
\begin{document}
\begin{frame}
  \centering
  \input{mytree}
\end{frame}
\end{document}

逐級增量揭示

相關內容