Alternar cores com ocgx

Alternar cores com ocgx

Quero usar o ocgxpacote para criar um pdf com um botão que muda de cor ao clicar nele, de vermelho para verde, de invisível para vermelho (e assim por diante). Eu tentei o seguinte:

\documentclass{beamer}
\usepackage{xcolor}
\usepackage{ocgx}
\begin{document}
\begin{frame}
\begin{ocg}{Bul01r}{ocg01r}{1}\actionsocg{ocg01g ocg01r}{}{}{\textcolor{red}{\textbullet}}\end{ocg} \hspace{-0.32cm}
\begin{ocg}{Bul01g}{ocg01g}{0}\actionsocg{ocg01g}{}{}{\textcolor{green}{\textbullet}}\end{ocg}
\end{frame}
\end{document}

Mas isso apenas dá a mudança do vermelho para o verde e de volta para o vermelho. Como posso obter um botão com três estados?

Responder1

Isto é feito convenientemente com oocgx2pacote que forneceGrupos de botões de opção( ocgopção de ambiente radiobtngrp=<name>). De todos os OCGs (Camadas PDF) que pertencem ao mesmo Grupo de Botões de Rádio, apenas um pode ser habilitado por vez, ocultando automaticamente o OCG habilitado anteriormente. Isso permite construir botões clicáveis ​​com dependência cíclica de duração de ciclo arbitrária.

O exemplo a seguir encadeia estados vermelhos, verdes, azuis e sem cor.

\documentclass{beamer}
\usepackage{xcolor}
\usepackage{ocgx2}

\begin{document}
\begin{frame}
  \makebox[0pt][l]{%
    \begin{ocg}[radiobtngrp=myBullets]{Bul01r}{ocg01r}{1}\showocg{ocg01g}{\textcolor{red}{\textbullet}}\end{ocg}%
  }%
  \makebox[0pt][l]{%
    \begin{ocg}[radiobtngrp=myBullets]{Bul01g}{ocg01g}{0}\showocg{ocg01b}{\textcolor{green}{\textbullet}}\end{ocg}%
  }%
  \makebox[0pt][l]{%
    \begin{ocg}[radiobtngrp=myBullets]{Bul01b}{ocg01b}{0}\showocg{ocg01x}{\textcolor{blue}{\textbullet}}\end{ocg}%
  }%
  \begin{ocg}[radiobtngrp=myBullets]{Bul01x}{ocg01x}{0}\showocg{ocg01r}{$\circ$}\end{ocg}%
\end{frame}
\end{document}

(Pode ser necessário excluir o *.auxprimeiro, caso o ocgxpacote tenha sido usado antes.)


O mesmo efeito também poderia ser alcançado sem um grupo de botões de opção, usando o \actionsocg{}{}{}{}comando em vez do mais simples \showocg{}{}, como na postagem original. Mas, novamente, isso requer o ocgx2pacote, que garante que os links de comutação residentes nas diferentes camadas sejam ativados/desativados corretamente de acordo com a visibilidade do OCG ao qual estão associados:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% version without radio button group, using \actionsocg
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass{beamer}
\usepackage{xcolor}
\usepackage{ocgx2}

\begin{document}
\begin{frame}
  \makebox[0pt][l]{%
    \begin{ocg}{Bul01r}{ocg01r}{1}\actionsocg{}{ocg01g}{ocg01r}{\color{red}\textbullet}\end{ocg}%
  }%
  \makebox[0pt][l]{%
    \begin{ocg}{Bul01g}{ocg01g}{0}\actionsocg{}{ocg01b}{ocg01g}{\color{green}\textbullet}\end{ocg}%
  }%
  \makebox[0pt][l]{%
    \begin{ocg}{Bul01b}{ocg01b}{0}\actionsocg{}{ocg01x}{ocg01b}{\color{blue}\textbullet}\end{ocg}%
  }%
  \begin{ocg}{Bul01x}{ocg01x}{0}\actionsocg{}{ocg01r}{ocg01x}{$\circ$}\end{ocg}%
\end{frame}
\end{document}

informação relacionada