Tikz 和 OCG:使按鈕在不同層之間循環

Tikz 和 OCG:使按鈕在不同層之間循環

我想要一個 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}

相關內容