使用 ocgx2 原地切换图片

使用 ocgx2 原地切换图片

使用 ocgx2 和 pdflatex,我想在两个大小相同的 tikzpicture 之间切换。如果我这样做

\switchocg{ocg23a ocg23b}{Lösung}

\begin{ocg}{OCG 1}{ocg1}{1}
  \begin{tikzpicture}
      \draw[draw=black] (0, 0) rectangle (2, 2);
  \end{tikzpicture}
\end{ocg}

\begin{ocg}{OCG 2}{ocg2}{0}
  \begin{tikzpicture}
      \draw[draw=blue] (0, 0) rectangle (2, 2);
  \end{tikzpicture}

它确实会在图像之间切换。但是,被替换的图像并不在页面上的同一位置,而是一个在另一个之上。

如何才能使图像放置在页面上的相同位置?

答案1

环境ocg不会阻止其内容占用输出空间并将后续内容(第二个tikzpicture)向前推。因此,您必须将第一个放在tikzpicture零宽度、左对齐的 LR 框中。

此外,未受保护的行尾和空行会在输出中分别产生空格和段落。

修复后的代码可能看起来像这样(ocg切换命令中的引用也必须更正):

\documentclass{article}
\usepackage{ocgx2}
\usepackage{tikz}

\begin{document}
\switchocg{ocg1,ocg2}{Lösung}

\begin{ocg}{OCG 1}{ocg1}{on}
  \makebox[0pt][l]{\begin{tikzpicture} %<== make tikzpicture zero-width
      \draw[draw=black] (0, 0) rectangle (2, 2);
  \end{tikzpicture}}
\end{ocg}%                              <== protected line ending
%                                       <== commented paragraph
\begin{ocg}{OCG 2}{ocg2}{off}
  \begin{tikzpicture}
      \draw[draw=blue] (0, 0) rectangle (2, 2);
  \end{tikzpicture}
\end{ocg}
\end{document}

相关内容