![编辑](https://linux22.com/image/333193/%E7%BC%96%E8%BE%91.png)
我正在为香农交换游戏写一个演示文稿。在这个游戏中,玩家轮流从图中挑选边。为了好玩,我决定尝试在演示文稿中加入一个示例游戏。
我想要的效果是:当我点击某个边缘时,转到指定的幻灯片。边缘并不总是垂直或水平的。
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}\label{picture:first}
\node (A) {$A$};
\node (B) [below right=2 and 3 of A] {$B$};
\path (A) edge[line width=5pt] (B); % I want this edge to be click-able
\end{tikzpicture}
\newpage
\begin{tikzpicture}\label{picture:second}
\node (A) {$A$};
\node (B) [below right=2 and 3 of A] {$B$};
\path (A) edge[line width=5pt,red] (B)
\end{tikzpicture}
\end{document}
我找到了类似问题的答案,要么节点是超链接,要么边缘是水平的。在我找到方法之前,我的临时解决方案是在每个边缘旁边放置一个节点来标记它,然后单击边缘标签。
答案1
这会沿第一条边缘创建 6 个超链接,链接到第二张幻灯片。
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{frame}{First}
\begin{tikzpicture}\label{picture:first}
\node (A) {$A$};
\node (B) [below right=2 and 3 of A] {$B$};
\path (A) edge [line width=5pt] node [pos=0, circle] {\hyperlink<1>{target}{}} node [pos=.2, circle] {\hyperlink<1>{target}{}} node [pos=.4, circle] {\hyperlink<1>{target}{}} node [pos=.6, circle] {\hyperlink<1>{target}{}} node [pos=.8, circle] {\hyperlink<1>{target}{}} node [pos=1, circle] {\hyperlink<1>{target}{}} (B);
\end{tikzpicture}
\end{frame}
\begin{frame}{Second}
\hypertarget<1>{target}{}
\begin{tikzpicture}\label{picture:second}
\node (A) {$A$};
\node (B) [below right=2 and 3 of A] {$B$};
\path (A) edge [line width=5pt, red] (B);
\end{tikzpicture}
\end{frame}
\end{document}
编辑
由于它不必是一条边,因此可以很直接地沿路径创建多个节点,并形成一个\foreach
循环。我还通过添加一些更实质性的不可见内容使链接变得更大一些 ;)。在这里,我创建了 11 个链接:
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{frame}{First}
\begin{tikzpicture}\label{picture:first}
\node (A) {$A$};
\node (B) [below right=2 and 3 of A] {$B$};
\draw [line width=5pt] (A) -- (B) \foreach \i in {0,...,10} { node [pos=\i/10, circle] {\hyperlink<1>{target}{\phantom{X}}} };
\end{tikzpicture}
\end{frame}
\begin{frame}{Second}
\hypertarget<1>{target}{}
\begin{tikzpicture}\label{picture:second}
\node (A) {$A$};
\node (B) [below right=2 and 3 of A] {$B$};
\path (A) edge [line width=5pt, red] (B);
\end{tikzpicture}
\end{frame}
\end{document}