OCGX e hiperref: visibilidade e clicabilidade de links sobrepostos

OCGX e hiperref: visibilidade e clicabilidade de links sobrepostos

Estou usando ocgxpara 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 \hreflinks, e esses links se sobrepõem na página (ocultando OCGs definidos anteriormente), mesmo quando nenhum texto está visível (!). É possível alternar ocgnã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}

passe o mouse sobre o link depois de pressionar o botão 1 passe o mouse sobre o link depois de pressionar o botão 1

Responder1

Isso pode ser feito com o pacoteocgx2além de corrigir hyperrefum 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- \actionsocgse rapidamente complicado se o número de camadas de PDF aumentar. Para simplificar, pkgocgx2permite 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 \showocgcomando simples para criar switches para cada camada:

insira a descrição da imagem aqui

\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}

informação relacionada