我正在使用qtree
来绘制语法树(在有中文支持的beamer
情况下,尽管我认为这不会影响这个问题)。我能够逐步显示树的不同级别,使用(请参阅下面的 MWE)。但此外,我希望能够以相同的方式发现树内的边缘(线)。(抱歉 - StackExchange 界面不允许我发布带有 CJK 字符的问题,所以我用每个字符替换了。)xeCJK
\uncover
X
%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass[compress]{beamer}
\usepackage{qtree} % allows syntax trees
\usepackage{textcomp} % allows \textrightarrow
\usepackage[AutoFallBack=true]{xeCJK}
\begin{document}
\frame{
\Tree [.{\uncover<3->{(V)-V}}
[.{\uncover<2->{(V)-V}} [.V X\\ten ] [.N\textrightarrow V X\\day ] ]
[.{\uncover<2->{(V)-V}} [.V X\\one ] [.V X\\{to rain} ] ]
]
\uncover<4->{\vskip12pt To rain once in ten days.}
}
\end{document}
(最后一张幻灯片省略)
答案1
我建议你换tikz-qtree
这样你就可以使用 TikZ 的功能:
\documentclass[compress]{beamer}
\usepackage{tikz-qtree} % allows syntax trees
\usepackage{textcomp} % allows \textrightarrow
\usepackage[AutoFallBack=true]{xeCJK}
\tikzset{
invisible/.style={opacity=0},
visible on/.style={alt={#1{}{invisible}}},
alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}
}
}
\begin{document}
\begin{frame}
\centering
\begin{tikzpicture}
\Tree
[. \node[visible on=<3->] {(V)-V};\edge [visible on=<3->];
[. \node[visible on=<2->] {(V)-V};\edge [visible on=<2->];
[.V \node[align=center] {X\\ ten}; ]
\edge [visible on=<2->]; [.N\textrightarrow V \node[align=center] {X\\ day}; ]
]
\edge [visible on=<3->]; [.\node[visible on=<2->] {(V)-V};\edge [visible on=<2->];
[.V \node[align=center] {X\\ one}; ]
\edge [visible on=<2->]; [.V \node[align=center] {X \\ to rain}; ]
]
];
\end{tikzpicture}
\uncover<4->{\vskip12pt To rain once in ten days.}
\end{frame}
\end{document}
答案2
这能做到吗?
- 是的,至少在一定范围内。例如,你当然可以顺着树的生长方向发现它,还有其他一些可能性。
我该这么做吗?
- 可能不会。有更简单的方法、更好的软件包和方法。我现在绝不会尝试这样做。我只会使用
forest
。
我想要这么做吗?
- 除非你有明显的受虐倾向,否则可能不会。请参阅上一个答案。
我怎样才能做到这一点?
- 查看前面的答案:你不应该问这个问题。
这样做危险吗?
- 绝对如此。它会让你的思想感觉像是被彻底颠覆了一样——而且不是以一种好的方式。
这值得么?
- 取决于你喜欢什么。你自己判断:
但实际上,我该怎么做呢?
- 这是我做这件事的方式……或多或少。它比这更复杂一点,但这就是想法。别说我没有警告过你……
代码:
\documentclass[compress]{beamer}
\usepackage{qtree} % allows syntax trees
\usepackage{textcomp} % allows \textrightarrow
% uncover tableaux proofs incrementally by typesetting using the background colour for text and then resetting to normal
\mode<presentation>
{
\newcommand<>{\cuddio}[1]{\color#2{bg}#1}
\newcommand<>{\dangos}[1]{\color#2{fg}#1}
}
\mode<article>
{
\def\cuddio<#1>#2{#2}
\def\dangos<#1>#2{#2}
}
\begin{document}
\frame{
\Tree [.{(V)-V} !{\cuddio<1>}
[.{(V)-V} !{\cuddio<1>} [.V X\\ten ] [.N\textrightarrow V X\\day ] !{\dangos<1>} ]
[.{(V)-V} !{\cuddio<1-3>} [.V X\\one ] [.V X\\{to rain} ] !{\dangos<3>} ] !{\dangos<4>}
]
\uncover<4->{\vskip12pt To rain once in ten days.}
}
\end{document}