TikZ:是否可以将 ocgx 或 ocgx2 与缩放一起使用?

TikZ:是否可以将 ocgx 或 ocgx2 与缩放一起使用?

为了制作讲义,我在 A4 纸上画了一些多边形,以横向模式排列。为了创建与这些文档相关的带有投影仪的交互式幻灯片,我必须缩小尺寸,scale=.25以便所有图形都出现在幻灯片上。为了简化演示,多边形已被矩形取代。

讲义代码:

\documentclass[10pt,landscape,a4paper]{article}

\usepackage{tikz}   
\begin{document}
\begin{tikzpicture}[scale=.5]
\draw[thick](0,4)rectangle(21,10);
\draw[thick](24,-10)rectangle(39,-3);
\draw[thick](24,0)rectangle(34,10);% carré
\end{tikzpicture}

\end{document}

投影机代码

\documentclass[aspectratio=1610,10pt]{beamer} % Présentation générale et mise en page
\usepackage[tikz]{ocgx2}            

\begin{document}
\begin{frame}{test ocgx2}
\begin{tikzpicture}[scale=.25]
\draw[switch ocg=Un,thick](0,4)rectangle(21,10);
\begin{scope}[ocg={name=Un,ref=Un,status=invisible},every path/.style={blue,line width=.8pt}]
\draw[fill=green!30](0,4)rectangle(21,10);
\end{scope}

\draw[switch ocg=Deux,thick](24,-10)rectangle(39,-3);
\begin{scope}[ocg={name=Deux,ref=Deux,status=invisible},every path/.style={blue,line width=.8pt}]
\draw[fill=green!30](24,-10)rectangle(39,-3);
\end{scope}

\draw[thick,switch ocg=Trois](24,0)rectangle(34,10);% squarre
\begin{scope}[ocg={name=Trois,ref=Trois,status=invisible},every path/.style={blue,line width=.5pt}]
\draw[fill=green!30](24,0)rectangle(34,10);% carré
\end{scope}
\end{tikzpicture}
\end{frame}
\end{document}

编辑:每个矩形都是可交互的。单击它时,它会交替显示绿色或白色(操作\switchocg)。缩放时,交互区域与其他矩形重叠并变为非活动状态。例如,单击下方矩形时,上方矩形链接将被激活。

是否可以使用ocgx或者ocgx2缩放?

使用 www.DeepL.com/Translator 翻译

ocgx2 测试

答案1

ocgx这是和包当前版本中的一个错误ocgx2

一个新的ocgx2版本(0.35 2018/06/26)正在向 CTAN 发送。在此期间,修复文件ocgx2.sty可以下载↗这里


背景:

通过将链接制作命令(\switchocg...)作为 TikZ- 叠加到当前路径的边界框上,可将 TikZ 路径转换为可点击的 PDF 层切换链接postaction。命令\switchocg...需要适当大小的文本框作为其第二个参数,以便创建鼠标敏感矩形。最初,使用了\rule放置在 中的 ,\phantom其宽度和高度是根据边界框左下角和右上角坐标计算的。结果保存在\p3(请参阅下面的差异)。但是,如果在的对象\p3中使用,似乎不受缩放的影响。相反,我们从和创建坐标和,并在嵌套的 中直接使用它们:nodepath picture(p1)(p2)\p1\p2tikzpicture

\tikz \useasboundingbox (p1) rectangle (p2);

修复版本和旧版本之间的差异摘录ocgx2.sty

   switch ocg/.style={
     postaction={
       path picture={
         \path let
         \p1 = (path picture bounding box.south west),
-        \p2 = (path picture bounding box.north east),
-        \p3 = (\x2-\x1,\y2-\y1)
+        \p2 = (path picture bounding box.north east)
         in
-        (path picture bounding box.center)
-        node[inner sep=0pt,anchor=center,outer sep=0pt]
-        {\switchocg*{#1}{\phantom{\rule{\x3}{\y3}}}};
+        coordinate (p1) at (\p1) coordinate (p2) at (\p2)
+        node[inner sep=0pt,anchor=south west,outer sep=0pt] at (p1)
+        {\switchocg*{#1}{\tikz \useasboundingbox (p1) rectangle (p2);}};
       }
     }
   },

答案2

我必须承认,ocgx(2)在看这个问题之前我甚至没有听说过这些软件包。所以我无法真正解释原因,但似乎用 替换就\begin{tikzpicture}[scale=.25]可以\begin{tikzpicture}[x={(0.25,0)},y={(0,0.25)}]了。(当然,我明白这些选项有何不同,这就是我尝试这样做的原因,但同样,我不知道软件包的详细信息,ocgx(2)无法判断如果使用 会出现什么问题scale。)

因此,完整的 MWE 变为:

\documentclass[aspectratio=1610,10pt]{beamer} % Présentation générale et mise en page
\usepackage[tikz]{ocgx2}            

\begin{document}
\begin{frame}{test ocgx2}
\begin{tikzpicture}[x={(0.25,0)},y={(0,0.25)}]
\draw[switch ocg=Un,thick](0,4)rectangle(21,10);
\begin{scope}[ocg={name=Un,ref=Un,status=invisible},every path/.style={blue,line width=.8pt}]
\draw[fill=green!30](0,4)rectangle(21,10);
\end{scope}

\draw[switch ocg=Deux,thick](24,-10)rectangle(39,-3);
\begin{scope}[ocg={name=Deux,ref=Deux,status=invisible},every path/.style={blue,line width=.8pt}]
\draw[fill=green!30](24,-10)rectangle(39,-3);
\end{scope}

\draw[thick,switch ocg=Trois](24,0)rectangle(34,10);% squarre
\begin{scope}[ocg={name=Trois,ref=Trois,status=invisible},every path/.style={blue,line width=.5pt}]
\draw[fill=green!30](24,0)rectangle(34,10);% carré
\end{scope}
\end{tikzpicture}
\end{frame}
\end{document}

相关内容