ocgx 和 ocgx2 包中的“switch ocg with mark on”键是否存在错误?

ocgx 和 ocgx2 包中的“switch ocg with mark on”键是否存在错误?

确实,使用此键,可见性就无法正常工作。

我引用手册:

/tikz/switch ocg with mark on={<ocg reference»}{<OCGs list> }这些样式将当前路径或链接中的当前节点转换为就像它是由宏生成的一样\switchocg(列表中引用的 OCG 的可见性状态被反转)。

在以 ocg reference 为参考的 OCG 中,当前路径或节点上会绘制一个标记(目前是一个简单的十字)。此 OCG 的可见性状态将与整个列表的可见性状态相反。

因此,以下两个示例应该以相同的方式工作。但是,只有第二个带有键的示例switchocgstatus=invisible一开始就使矩形不可见。

\documentclass{article}
\usepackage[margin=1cm]{geometry}
\usepackage[tikz]{ocgx2} 
\usetikzlibrary{positioning}

\tikzset{%
  button on/.style={%
    draw,minimum size=5mm,
    line width=1pt,
    fill=blue!50,rounded corners,
    switch ocg with mark on={#1}{},
  },
}
\begin{document}


\begin{tikzpicture}
\begin{scope}[ocg={name=rect1,ref=rect1,status=invisible}]
\draw[fill=green!50](0,0)rectangle(2,1);
\end{scope}
\node[button on=rect1]at (-1.5,.5)(but){};
    \node[right=0 of but]{rect1};
\end{tikzpicture}

\begin{tikzpicture}
\begin{scope}[ocg={name=rect2,ref=rect2,status=invisible}]
\draw[fill=green!50](0,0)rectangle(2,1);
\end{scope}
\node[draw,rounded corners,switch ocg=rect2] at (-1,.5) {rectangle};
\end{tikzpicture}

\end{document}

截屏

答案1

switch ocg with mark onz 样式隐式地将 PDF 图层(其 ID 作为参数传递给它)设置为可见性状态 ON。

在问题列出的文档代码中,插入按钮rectangle与按钮的十字标记属于同一 PDF 图层的形状。使用 时,ocgx2最后出现的图层可见性设置将优先于之前的设置。您可以通过交换rectangle和 按钮轻松检查这一点:

原始代码:

\begin{scope}[ocg={name=rect1,ref=rect1,status=invisible}] % layer `rect1' set to OFF,
\draw[fill=green!50](0,0)rectangle(2,1);
\end{scope}
\node[button on=rect1]at (-1.5,.5)(but){}; % but ON wins, as it comes last

供测试用:

\node[button on=rect1] at (-1.5,.5)(but){}; % layer `rect1' set to ON,
\begin{scope}[ocg={name=rect1,ref=rect1,status=invisible}] % OFF wins, as desired
\draw[fill=green!50](0,0)rectangle(2,1);
\end{scope}

答案2

包装中的英文和法文手册ocgx并未标示相同的按键。

法国手册指出了关键

/tikz/switch OCG 带有 mark={< 基本名称 >}{< OCG 列表 > }

英文手册中没有标明这个键,英文手册中标明有两个键:

/tikz/switch ocg 带标记={< ocg 参考 > }{< OCGs 列表 > }

/tikz/switch ocg with mark off={< ocg 参考 >}{< OCGs 列表 > }

为了确保一开始就不默认显示矩形,我们必须使用键switch ocg with mark off

截屏

\documentclass{article}
\usepackage[margin=1cm]{geometry}
\usepackage[tikz]{ocgx2} 
\usetikzlibrary{positioning}

\tikzset{%
  button on/.style={%
    draw,minimum size=5mm,
    line width=1pt,
    fill=blue!50,rounded corners,
    switch ocg with mark off={#1}{},
  },
}
\begin{document}


\begin{tikzpicture}
\begin{scope}[ocg={name=rect1,ref=rect1}]
\draw[fill=green!50](0,0)rectangle(2,1);
\end{scope}
\node[button on=rect1]at (-1.5,.5)(but){};
    \node[right=0 of but]{rect1};
\end{tikzpicture}

\begin{tikzpicture}
\begin{scope}[ocg={name=rect2,ref=rect2,status=invisible}]
\draw[fill=green!50](0,0)rectangle(2,1);
\end{scope}
\node[draw,rounded corners,switch ocg=rect2] at (-1,.5) {rectangle};
\end{tikzpicture}

\end{document}

如果亚历克斯 (ocgx2 维护者)保罗·加博利 (ocgx 维护者)很友善地澄清了这一点,我很乐意接受他们的回答。

相关内容