有没有办法发现 xymatrix 中的箭头?

有没有办法发现 xymatrix 中的箭头?

有没有办法发现 中的箭头xymatrix?通常当我遇到问题时\uncover,我会使用多个框架,但我希望能够在单个框架上执行此操作。

以下是示例:我希望第一张幻灯片显示“B”,然后显示“A →”。以下代码不显示“→”。

\documentclass{beamer}
\usepackage[all]{xy}    

\begin{document}

\begin{frame}[plain]

\xymatrix{
\uncover<2->{A \ar[r]}& B
}

\end{frame}

\end{document}

答案1

(我对 xy 如何解析其内容一无所知,因此 xy 位纯粹是猜测。但是,我确实对 beamer 如何发挥其魔力有所了解,因此这一点并不那么具有推测性。)

我认为 Ryan 的第一条评论要么是正确的,要么非常接近,可以作为合理的工作假设。这意味着,在您不希望箭头出现的幻灯片上,您必须确保代码\ar[r]根本不出现。正确的投影仪代码是命令,\only因为它会丢弃其参数而不对其进行处理(在必需的幻灯片上)。

但是,您不希望整个A \ar[r]被丢弃,因为A会影响间距。您希望A存在但不显示。这就是它的\uncover作用。它排版其材料,但使用字体的背景颜色,以便不显示。因此,您希望\uncoverA\only因此\ar[r]

\documentclass{beamer}
%\url{http://tex.stackexchange.com/q/39578/86}
\usepackage[all]{xy}    

\begin{document}

\begin{frame}[plain]

\xymatrix{
\uncover<2->{A} \only<2->{\ar[r]}& B
}

\end{frame}

\end{document}

我同意如果能以某种方式自动完成这一点会很好,但是我对 xy 的内部结构了解不够(任何事情!)所以无法建议如何做到这一点。

答案2

\documentclass{beamer}
\usepackage[all]{xy}    
\begin{document}

\begin{frame}[plain]
\xymatrix{\onslide*<2->{A \ar[r]} & B}
\end{frame}

\end{document}

答案3

@Andrew:您的解决方案非常有效,除非您的箭头也会影响间距。例如,如果您的图表中有弯曲的箭头,就会发生这种情况。

所以你也想要\uncover箭头。由于这不起作用,一个非常肮脏的解决方法是\only模仿以下行为\uncover:写

\only<1>{\ar@[white][r]}
\only<2>{\ar[r]}

用于箭头。假设您的背景是白色的,这将在幻灯片 1 上排版箭头并使其不可见。在幻灯片 2 上,您将看到箭头。您必须color为此设置 xy 包的选项。如有必要,您还可以使用该color包使标签不可见:

\only<1>{\ar@[white][r]^-{\color{white}f}}
\only<2>{\ar[r]^-{f}}

这样做感觉不对,但确实有用。在所有幻灯片上,整个图表都必须用某种颜色绘制。否则,它会摇来晃去,观众会晕船。

相关内容