tikz-带有鼠标位置的交互式图表

tikz-带有鼠标位置的交互式图表

我希望创建一个与鼠标交互的图表,比如说如果鼠标悬停在某个文本标签上,则突出显示相关区域。下面是一个示例图表:

\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[yscale=-1,>=latex]
\foreach \a/\b/\c/\d/\desc [count=\j] in {
    0/0/5/8/box1,
    0/0/5/8/box2,
    1/1/4/7/box3,
    0/0/3/6/box4
}{
    \path (-2,0) ++(0,\j) coordinate (A);
    \draw (\a,\b) rectangle (\c,\d);
    \draw[<-,red] (\a,\b) -- (A) node[anchor=east,pos=1] {\desc};
}
\end{tikzpicture}
\end{document}

如果鼠标悬停在 box1 上,它应该突出显示区域 (0,0) - (5,8)。我知道动画支持,但它不是交互式的(通过鼠标位置控制)。

在此处输入图片描述

答案1

这是使用 ocgx2 包的示例。该文件必须编译两次,并且需要 PDF 阅读器 Acrobat Reader、Foxit Reader 或 evince。要激活区域,必须单击框的名称。

非常感谢该ocgx2软件包的维护者@AlexG,他在评论中指定了如何确保激活一个层会通过选项禁用其他层opts={radiobtngrp=myBoxes}}

截屏

\documentclass[border=2mm]{standalone}
\usepackage[tikz]{ocgx2}
\begin{document}
\begin{tikzpicture}[yscale=-1,>=latex]
\foreach \a/\b/\c/\d/\desc [count=\j] in {
    0/0/5/8/box1,
    0/0/2/4/box2,
    1/1/4/7/box3,
    0/0/3/6/box4
}{
    \path (-2,0) ++(0,\j) coordinate (A);
    \draw (\a,\b) rectangle (\c,\d);
    \begin{scope}[ocg={name=box\j,ref=box\j,status=invisible,opts={radiobtngrp=myBoxes}}]
        \fill[red!30] (\a,\b) rectangle (\c,\d);
    \end{scope}
    \draw[<-,red] (\a,\b) -- (A) node[anchor=east,pos=1,switch ocg=box\j] {\desc};
}
\end{tikzpicture}
\end{document}

相关内容