OCGX und Hyperref: Sichtbarkeit und Anklickbarkeit überlappender Links

OCGX und Hyperref: Sichtbarkeit und Anklickbarkeit überlappender Links

Ich verwende es, ocgxum beim Klicken auf Links im PDF unterschiedliche Textblöcke anzuzeigen (im selben Bereich derselben Seite).

Jeder dieser Textblöcke hat jedoch seine eigenen \hrefLinks, und diese Links überlappen sich auf der Seite (wodurch zuvor definierte OCGs verdeckt werden), selbst wenn kein Text sichtbar ist(!). Ist es möglich, ocgnicht nur die Sichtbarkeit, sondern auch die Ebenenreihenfolge umzuschalten?

Beachten Sie im folgenden MWE, dass das Umschalten der Textblocksichtbarkeit mit den Schaltflächen 1,2nichtdas Vorhandensein von href-Links umschalten, und nur der Link „google.com“ ist vorhanden, auch wenn keines der OCGs sichtbar ist (Mauszeiger in meinen Screenshots nicht erfasst) …

\documentclass{article}
\usepackage{ocgx}
\usepackage{hyperref}

\usepackage{textpos}
\setlength{\TPHorizModule}{12pt}
\setlength{\TPVertModule}{12pt}

\begin{document}
\actionsocg{ocg1}{}{ocg2}{{\color{blue}{button 1}}}$|$ %toggle ocg1, hide ocg2
\actionsocg{ocg2}{}{ocg1}{{\color{blue}{button 2}}}%toggle ocg2, hide ocg1

%define OCGs:
  \begin{ocg}{}{ocg1}{0}
    \begin{textblock}{40}(1,1)
      \href{http://overleaf.com}{Link 1}
    \end{textblock}
  \end{ocg}

  \begin{ocg}{}{ocg2}{0}
    \begin{textblock}{40}(1,1)
      \href{http://google.com}{Link 2}    
    \end{textblock}
  \end{ocg}

\end{document}

Mauszeiger über Link nach Drücken der Taste 1 Mauszeiger über Link nach Drücken der Taste 1

Antwort1

Dies kann mit dem Paket erfolgenocgx2plus hyperrefein paar Patches, um es PDF-Ebenen-fähig zu machen.

Beachten Sie jedoch, dass nur Acrobat Reader die Sichtbarkeit von Links berücksichtigt, die auf PDF-Ebenen platziert sind:

\documentclass{article}

\usepackage{ocgx2}
\usepackage{hyperref}
%patch hyperref to make PDF Annotations PDF-Layer-(OCG)-aware
\makeatletter
  \let\Hy@setpdfborderOrig\Hy@setpdfborder
  \def\Hy@setpdfborder{\ocgbase@insert@oc\Hy@setpdfborderOrig}%
\makeatother

\usepackage{textpos}
\setlength{\TPHorizModule}{12pt}
\setlength{\TPVertModule}{12pt}

\begin{document}
\actionsocg{ocg1}{}{ocg2}{{\color{blue}{button 1}}}$|$ %toggle ocg1, hide ocg2
\actionsocg{ocg2}{}{ocg1}{{\color{blue}{button 2}}}%toggle ocg2, hide ocg1

%define OCGs:
  \begin{ocg}{}{ocg1}{0}
    \begin{textblock}{40}(1,1)
      \href{http://overleaf.com}{Link 1}
    \end{textblock}
  \end{ocg}

  \begin{ocg}{}{ocg2}{0}
    \begin{textblock}{40}(1,1)
      \href{http://google.com}{Link 2}
    \end{textblock}
  \end{ocg}

\end{document}

Das Erstellen von Schaltern zum gegenseitigen Ausblenden von PDF-Ebenen mit \actionsocgwird schnell mühsam, wenn die Anzahl der PDF-Ebenen zunimmt. Um dies zu vereinfachen, verwendet pkgocgx2ermöglicht die Gruppierung von OCGs inOptionsfeldgruppen. Von allen OCGs, die zur gleichen Radio Button Group gehören, kann immer nur eines gleichzeitig aktiviert werden, wodurch das zuvor sichtbare OCG automatisch ausgeblendet wird. Ein OCG wird mit der Option zu einer Radio Button Group hinzugefügt radiobtngrp=.... Durch die Gruppierung von OCGs in einer Radio Button Group können wir mit dem einfachen \showocgBefehl Schalter für jede Ebene erstellen:

Bildbeschreibung hier eingeben

\documentclass{article}

\usepackage{ocgx2}
\usepackage{hyperref}
%patch hyperref to make PDF Annotations PDF-Layer-(OCG)-aware
\makeatletter
  \let\Hy@setpdfborderOrig\Hy@setpdfborder
  \def\Hy@setpdfborder{\ocgbase@insert@oc\Hy@setpdfborderOrig}%
\makeatother

\usepackage{fontawesome,pgffor}
\parindent=0pt

\begin{document}

\foreach \ocgname / \urlicon in {%
  GitHub/\faGithub, StackExchange/\faStackExchange, StackOverflow/\faStackOverflow, Google/\faGoogle% 
}{\showocg{\ocgname}{\urlicon}\ }\\[1ex]
%define OCGs, within the same Radio Button Group
\foreach \ocgname / \weburl in {%
  GitHub/{https://github.com}, StackExchange/{https://stackexchange.com}, StackOverflow/{https://stackoverflow.com}, Google/{https://google.com}%
}{%
  \makebox[0pt][l]{%
  \begin{ocg}[radiobtngrp=myURLs]{\ocgname}{\ocgname}{off}
    \url{\weburl}
  \end{ocg}}%
}

\end{document}

verwandte Informationen