Мне бы хотелось иметь кнопку 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 становятся Layer-aware путем добавления /OC <ocg object ref>
записи в словарь Annotation. Pkg ocgx2
делает это автоматически для своих команд переключения слоев, которые размещаются в слоях PDF. Все просмотрщики PDF, за исключением AR, похоже, игнорируют эту запись, что явно является ошибкой этих просмотрщиков.
Правильная реализация этой функции в программах просмотра 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}