Eu gostaria de ter um botão OCG que, quando pressionado, percorresse um conjunto de camadas OCG.
Tentei usar botões OCG de autorreferência, onde cada um alternava entre si (tentei com e sem radiobtngrp
). O principal problema é que mesmo quando desativadas, as áreas clicáveis ainda persistem, portanto, clicar só pode alternar o botão superior. Aqui está um exemplo com 2 camadas (mas gostaria de ter mais, se possível):
\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}
É possível fazer isso funcionar? Alternativamente, seria possível criar um único botão com um contador associado a ele que aumenta cada vez que é clicado, alternando cada vez em uma determinada camada?
Responder1
O Acrobat Reader é atualmente o único visualizador de PDF que oculta corretamente a área sensível ao mouse de um elemento interativo (link, campo de formulário, ...) junto com seu conteúdo digitado que é colocado em uma camada de PDF que está prestes a ser desativada.
De acordo com a especificação do PDF, as anotações do PDF reconhecem a camada adicionando uma /OC <ocg object ref>
entrada ao ditado de anotação. O Pkg ocgx2
faz isso automaticamente para seus comandos de troca de camadas que são colocados nas camadas do PDF. Todos os visualizadores de PDF, exceto AR, parecem ignorar esta entrada, o que é claramente um bug desses visualizadores.
A implementação correta deste recurso em visualizadores de PDF permite percorrermúltiploCamadas PDF por meio de links de troca de camada localizados no mesmo local da página, como no exemplo a seguir:
\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}
Para outros visualizadores além de AR, comoEvidência, no máximo 2 camadas podem ser alternadas por umsolteirobotão. Este botão não precisaria ser colocado em uma camada:
% 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}