생성된 코드 위에 오버레이 그래픽 그리기

생성된 코드 위에 오버레이 그래픽 그리기

슬라이드에 있는 일부 코드 주위에 오버레이로 타원을 그리고 싶습니다.이 답변. 그러나 작동하지 않는 것 같습니다. 실제로 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, FWIW를 사용하고 있습니다. 앞서 언급한 답변에 링크된 코드를 테스트한 결과 올바른 출력을 얻었으므로 올바른 패스 횟수를 수행하고 있는 것 같습니다. 그러나 발행된 환경을 제거해도 여전히 작동하지 않습니다.

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

관련 정보