
Estoy usando ocgx
para mostrar diferentes bloques de texto (en la misma área de la misma página) al hacer clic en enlaces en el PDF.
Sin embargo, cada uno de estos bloques de texto tiene sus propios \href
enlaces, y estos enlaces se superponen en la página (ocultando OCG definidos anteriormente) incluso cuando no hay texto visible (!). ¿Es posible alternar ocg
no solo la visibilidad, sino también el orden de las capas?
En el MWE a continuación, tenga en cuenta que alternar la visibilidad del bloque de texto con los botones 1,2no esalterna la presencia de enlaces href, y solo el enlace "google.com" está presente, incluso cuando ninguno de los ocg está visible (el puntero del mouse no se captura en mis capturas de pantalla)....
\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}
Respuesta1
Esto se puede hacer con el paquete.ocgx2
además de parchear hyperref
un poco para que tenga en cuenta las capas de PDF.
Sin embargo, tenga en cuenta que sólo Acrobat Reader respeta la visibilidad de los enlaces colocados en capas de PDF:
\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}
La creación de interruptores para ocultar capas de PDF entre sí rápidamente \actionsocg
se vuelve engorrosa si aumenta el número de capas de PDF. Para simplificar, paqueteocgx2
permite agrupar los OCG enGrupos de botones de radio. De todos los OCG que pertenecen al mismo grupo de botones de opción, solo se puede habilitar uno a la vez, ocultando automáticamente el OCG previamente visible. Se agrega un OCG a un grupo de botones de opción con la opción radiobtngrp=...
. Agrupar OCG en un grupo de botones de opción nos permite usar el \showocg
comando simple para crear interruptores para cada capa:
\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}