
Estou usando ocgx
para exibir diferentes blocos de texto (na mesma área da mesma página) ao clicar em links no PDF.
No entanto, cada um desses blocos de texto possui seus próprios \href
links, e esses links se sobrepõem na página (ocultando OCGs definidos anteriormente), mesmo quando nenhum texto está visível (!). É possível alternar ocg
não apenas a visibilidade, mas também a ordem das camadas?
No MWE abaixo, observe que alternar a visibilidade do bloco de texto com os botões 1,2nãoalterne a presença de links href, e apenas o link "google.com" estará presente, mesmo quando nenhum ocg estiver visível (ponteiro do mouse não capturado em minhas capturas de tela)....
\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}
Responder1
Isso pode ser feito com o pacoteocgx2
além de corrigir hyperref
um pouco para torná-lo compatível com a camada PDF.
Observe, entretanto, que apenas o Acrobat Reader respeita a visibilidade dos links colocados nas camadas do 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}
Criar opções para ocultar mutuamente camadas de PDF torna- \actionsocg
se rapidamente complicado se o número de camadas de PDF aumentar. Para simplificar, pkgocgx2
permite que os GCO sejam agrupados emGrupos de botões de opção. De todos os OCGs pertencentes ao mesmo Grupo de Botões de Rádio, apenas um pode ser habilitado por vez, ocultando automaticamente o OCG anteriormente visível. Um OCG é adicionado a um grupo de botões de opção com a opção radiobtngrp=...
. Agrupar OCGs em um grupo de botões de opção nos permite usar o \showocg
comando simples para criar switches para cada camada:
\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}