![Tikz 和 OCG:使按钮在不同的层之间循环](https://linux22.com/image/405548/Tikz%20%E5%92%8C%20OCG%EF%BC%9A%E4%BD%BF%E6%8C%89%E9%92%AE%E5%9C%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E5%B1%82%E4%B9%8B%E9%97%B4%E5%BE%AA%E7%8E%AF.png)
我想要一个 OCG 按钮,按下时,会循环显示一组 OCG 层。
我尝试过使用自引用 OCG 按钮,每个按钮都会切换另一个按钮(我尝试过带 和不带 的情况radiobtngrp
)。主要问题是,即使关闭 ,可点击区域仍然存在,因此点击只能切换最上面的按钮。这是一个有 2 个层的示例(但如果可能的话,我希望有更多层):
\documentclass{article}
\usepackage[tikz]{ocgx2}
\tikzstyle{button}=[minimum width=15mm, rounded corners, draw=white!50!black!100, bottom color=white]
\begin{document}
\begin{center}
\begin{tikzpicture}
\begin{ocg}[radiobtngrp=myRadioButtons]{OCG 0}{1}{1}
\node[button, hide ocg=1, show ocg=2] (n1) at (0,0) {$Button 1$};
\end{ocg}
\begin{ocg}[radiobtngrp=myRadioButtons]{OCG 1}{2}{0}
\node[button, hide ocg=2, show ocg=1] (n2) at (0.5,0){$Button 2$};
\end{ocg}
\end{tikzpicture}
\end{center}
\end{document}
可以实现这个功能吗?或者,可以创建一个按钮,并关联一个计数器,每次单击该按钮时计数器都会递增,每次切换特定图层时计数器都会递增?
答案1
Acrobat Reader 是目前唯一能够正确隐藏交互元素(链接、表单字段等)的鼠标敏感区域及其排版内容(放置在即将被禁用的 PDF 层上)的 PDF 查看器。
根据 PDF 规范,PDF 注释通过/OC <ocg object ref>
向注释字典添加条目来实现层感知。Pkgocgx2
会自动为放置在 PDF 图层上的图层切换命令执行此操作。除 AR 之外的所有 PDF 查看器似乎都会忽略此条目,这显然是这些查看器的一个错误。
在 PDF 查看器中正确实现此功能可让用户循环浏览多种的PDF 图层通过位于页面同一位置的图层切换链接显示,如下例所示:
\documentclass[margin=5]{standalone}
\usepackage[tikz]{ocgx2}
\tikzstyle{button}=[minimum width=15mm, rounded corners, draw=white!50!black!100, bottom color=white]
\begin{document}
\begin{tikzpicture}
\begin{scope}[ocg={name=OCG 1, ref=1, visibility=on, opts={radiobtngrp=myRadioButtons}}]
\node[button, show ocg=2] (n0) at (0,0) {Button 1};
\end{scope}
\begin{scope}[ocg={name=OCG 2, ref=2, visibility=off, opts={radiobtngrp=myRadioButtons}}]
\node[button, show ocg=3] at (n0) {Button 2};
\end{scope}
\begin{scope}[ocg={name=OCG 3, ref=3, visibility=off, opts={radiobtngrp=myRadioButtons}}]
\node[button, show ocg=4] at (n0) {Button 3};
\end{scope}
\begin{scope}[ocg={name=OCG 4, ref=4, visibility=off, opts={radiobtngrp=myRadioButtons}}]
\node[button, show ocg=1] at (n0) {Button 4};
\end{scope}
\end{tikzpicture}
\end{document}
对于 AR 以外的观看者,例如表明,最多可切换 2 层单身的按钮。此按钮无需放置在图层本身上:
% example with 2 PDF Layers that works in Evince
\documentclass[margin=5]{standalone}
\usepackage[tikz]{ocgx2}
\tikzstyle{button}=[minimum width=15mm, rounded corners, draw=white!50!black!100, bottom color=white]
\begin{document}
\begin{tikzpicture}
\node[button, switch ocg={1, 2}] (n0) at (0,0) {\phantom{Button 1}};
\begin{scope}[ocg={name=OCG 1, ref=1, visibility=on}]
\node[minimum width=15mm] at (n0) {Button 1};
\end{scope}
\begin{scope}[ocg={name=OCG 2, ref=2, visibility=off}]
\node[minimum width=15mm] at (n0) {Button 2};
\end{scope}
\end{tikzpicture}
\end{document}