Переключение цветов с помощью ocgx

Переключение цветов с помощью ocgx

Я хочу использовать ocgxпакет для создания pdf с кнопкой, которая меняет свой цвет при нажатии с красного на зеленый, с невидимого на красный (и т. д.). Я попробовал следующее:

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

Но это дает только изменение с красного на зеленый и обратно на красный. Как мне получить кнопку с тремя состояниями?

решение1

Это удобно сделать с помощьюocgx2пакет, который обеспечиваетГруппы радиокнопок( ocgопция среды radiobtngrp=<name>). Из всех OCG (слоев PDF), которые принадлежат к одной группе радиокнопок, только один может быть включен за раз, автоматически скрывая ранее включенный OCG. Это позволяет создавать нажимаемые кнопки с циклической зависимостью произвольной длины цикла.

В следующем примере последовательно соединены состояния «красный», «зеленый», «синий» и «бесцветный».

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

(Возможно, потребуется удалить первый *.aux, если ocgxпакет использовался ранее.)


Тот же эффект можно было бы получить и без группы радиокнопок, используя \actionsocg{}{}{}{}команду вместо более простой \showocg{}{}, как в исходном посте. Но опять же, для этого требуется пакет ocgx2, который гарантирует, что переключающиеся ссылки, находящиеся на разных слоях, включаются/отключаются правильно в соответствии с видимостью OCG, с которой они связаны:

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

Связанный контент