
Ich verwende es, ocgx
um beim Klicken auf Links im PDF unterschiedliche Textblöcke anzuzeigen (im selben Bereich derselben Seite).
Jeder dieser Textblöcke hat jedoch seine eigenen \href
Links, und diese Links überlappen sich auf der Seite (wodurch zuvor definierte OCGs verdeckt werden), selbst wenn kein Text sichtbar ist(!). Ist es möglich, ocg
nicht 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}
Antwort1
Dies kann mit dem Paket erfolgenocgx2
plus hyperref
ein 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 \actionsocg
wird schnell mühsam, wenn die Anzahl der PDF-Ebenen zunimmt. Um dies zu vereinfachen, verwendet pkgocgx2
ermö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 \showocg
Befehl Schalter für jede Ebene erstellen:
\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}