在铸造的代码上绘制覆盖图形

在铸造的代码上绘制覆盖图形

我想在幻灯片上的一些代码周围绘制椭圆,作为覆盖层,这个答案。但是,它似乎不起作用。事实上,XeLaTeX 甚至没有渲染第二张幻灯片。

我的代码是这样的:

\begin{frame}[fragile=singleslide]{Frame title}
  \begin{minted}[autogobble,fontfamily=myfont,escapeinside=||}{c}
    int main(int argc, char** argv) {
      return |\tikzmark{start}|0|\tikzmark{end}|;
    }
  \end{minted}

  \begin{tikzpicture}[remember picture,overlay]
    \node<2>[draw,line width=2,cyan,circle,fit={(pic cs:start) (pic cs:end)}] {};
  \end{tikzpicture}
\end{frame}

我正在使用 latexmk,仅供参考。我测试了上述答案中链接的代码,得到了正确的输出,所以我猜它执行了正确的传递次数。但是,当我删除 minted 环境时,它仍然不起作用:

\begin{frame}[fragile=singleslide]{Frame title}
  Hello \tikzmark{start}World\tikzmark{end}

  \begin{tikzpicture}[remember picture,overlay]
    \node<2>[draw,line width=2,cyan,circle,fit={(pic cs:start) (pic cs:end)}] {};
  \end{tikzpicture}
\end{frame}

答案1

好的,我找到了问题。如果我删除fragile=singleslide框架选项,那么它在第二个示例中就可以正常工作。但是,minted 环境至少需要该fragile选项。幸运的是,此组合有效:

\begin{frame}[fragile]{Frame title}
  \begin{minted}[autogobble,fontfamily=myfont,escapeinside=||}{c}
    int main(int argc, char** argv) {
      return |\tikzmark{start}|0|\tikzmark{end}|;
    }
  \end{minted}

  \begin{tikzpicture}[remember picture,overlay]
    \node<2>[draw,line width=2,cyan,circle,fit={(pic cs:start) (pic cs:end)}] {};
  \end{tikzpicture}
\end{frame}

相关内容