TikZ 动画键“end on”被解释为“begin on”

TikZ 动画键“end on”被解释为“begin on”

PGF/TikZ 手册描述了一个名为 的键/tikz/animate/options/end on。我理解它应该定义一个结束时间线的触发器。但是,我无法让它工作。当我尝试使用它时,它似乎开始时间线而不是结束它。

我有以下文档,名为test.tex

\documentclass[dvisvgm, tikz]{standalone}
\usetikzlibrary{animations}

\begin{document}
\begin{tikzpicture}
    \node[fill = blue!20, draw = blue, ultra thick, circle] (node) {node 1};
    \node :stage = {base = "false", 0s="true", 1000s="false", begin on = {mouse over, of=node}, end on = {mouse out, of=node} }
    [fill = red!20, draw = red, ultra thick, circle] at (2,2) {node 2};
\end{tikzpicture}
\end{document}

然后我使用它进行编译latex test.tex,然后使用将其转换为 svg dvisvgm -n test.dvi

预期行为是node 2当我将鼠标指针移到 上时出现node 1,然后当我将指针移开时消失。但是,鼠标移到 和 鼠标移开 显然都是显示 的触发器node 2

生成的 svg 中有一行如下内容:

<animate attributeName='visibility' begin='pgf0.mouseover +0.0s;pgf0.mouseout +0.0s' calcMode='spline' dur='1000.0' keySplines='0 0 1 1' keyTimes='0.0;1.0' values='visible;hidden' xlink:href='#pgf2'/>

但我认为输出应该是这样的:

<animate attributeName='visibility' begin='pgf0.mouseover +0.0s' end='pgf0.mouseout +0.0s' calcMode='spline' dur='1000.0' keySplines='0 0 1 1' keyTimes='0.0;1.0' values='visible;hidden' xlink:href='#pgf2'/>

这是一个错误还是我遗漏了什么?

我在 Linux 上使用 TeX Live 2023。

答案1

对我来说,这看起来像是一个错误,因为两个键的作用相同来源

\tikzanimateset{
  options/.cd,
  begin on/.code=\tikz@anim@event{begin}{#1},
  end on/.code=\tikz@anim@event{begin}{#1},
}

但我们可以修复它。

代码

% arara: latex
% arara: dvisvgm
\documentclass[dvisvgm, tikz]{standalone}
\usetikzlibrary{animations}
\makeatletter
\tikzanimateset{options/end on/.code=\tikz@anim@event{end}{#1}}
\makeatother
\begin{document}
\begin{tikzpicture}
\node[fill = blue!20, draw = blue, ultra thick, circle] (node) {node 1};
\node :stage = {base = "false", 0s="true", 1000s="false",
                begin on = {mouse over, of=node}, end on = {mouse out, of=node}}
     [fill = red!20, draw = red, ultra thick, circle] at (2,2) {node 2};
\end{tikzpicture}
\end{document}

相关内容