我尝试了以下代码片段:
\begin{frame}
\begin{tikzpicture}
\tikzstyle{every node} = [draw, align=center,circle, scale = 0.5, thick]
\begin{tabular}{ccc}
\tikz\node (n1) {N1}; &
&
\tikz\node (n2) {N2}; \\
&
\tikz\node (n3) {N3};&
\tikz\node (n4) {N4}; \\
\tikz\node (n5) {N5}; &
\tikz\node (n6) {N6}; &
\tikz\node (n7) {N7};\\
\end{tabular}
\path<1>[blue,->] (n1.south) edge [out= 60, in= 135] (n2.north west);
\path<2>[red,->] (n1.south) edge [out=-70, in=-110] (n3.south);
\end{tikzpicture}
\end{frame}
i 的行为与我预期的不符。路径没有放置在节点上,而是放置在某个奇怪的地方。
我该如何修复这个问题并且仍然将笔记排列得像现在这样整齐?
答案1
我认为这是一份完美的工作matrix of nodes
。但请注意,在 beamer 框架中插入 tikz 矩阵需要[fragile]
选项。
这是代码:
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{frame}[fragile]
\begin{tikzpicture}
\tikzstyle{every node} = [draw, align=center,circle, scale = 0.5, thick]
\node[draw=none, matrix of nodes, row sep=1em, column sep=1em] (N) {
N1 & & N2 \\
& N3 & N4 \\
N5 & N6 & N7 \\
};
\path<1>[blue,->] (N-1-1.south) edge [out= 60, in= 135] (N-1-3.north west);
\path<2>[red,->] (N-1-1.south) edge [out=-70, in=-110] (N-2-2.south);
\end{tikzpicture}
\end{frame}
\end{document}
结果如下:
注意,代码只(N)
为\matrix
节点提供了一个名称。矩阵的所有单元也自动有一个名称,即矩阵名称加上行号和列号。
您还可以使用以下语法为某些节点赋予特定名称:
\node[draw=none, matrix of nodes, row sep=1em, column sep=1em] (N) {
|(N1)| N1 & & |(N2)| N2 \\
& |(N3)| N3 & |(N4)| N4 \\
|(N5)| N5 & |(N6)| N6 & |(N7)| N7 \\
};
\path<1>[blue,->] (N1.south) edge [out= 60, in= 135] (N2.north west);
\path<2>[red,->] (N1.south) edge [out=-70, in=-110] (N3.south);
在每个单元格中,您可以指定和之间的任何内容|
,这些内容将传递给正在\node
构建的。您还可以使用它来传递[options]
。