作成されたコードの上にオーバーレイグラフィックを描画する

作成されたコードの上にオーバーレイグラフィックを描画する

スライド上のコードの周りに楕円をオーバーレイとして描画したいのですが、この答えしかし、うまく動作しないようです。実際、XeLaTeX は 2 番目のスライドをレンダリングしていません。

私のコードは次のようになります:

\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を使用しています。前述の回答にリンクされているコードをテストしたところ、正しい出力が得られました。つまり、正しい回数のパスを実行しているのだと思います。ただし、ミントされた環境を削除すると、まだ動作しません。

\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フレーム オプションを削除すると、2 番目の例では動作します。ただし、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}

関連情報