pgfplots/beamer를 사용하여 애니메이션을 만드는 방법은 무엇입니까?

pgfplots/beamer를 사용하여 애니메이션을 만드는 방법은 무엇입니까?

슬라이드에서 움직이는 무언가를 애니메이션화하려고 합니다. 나는 이것을 달성하기 위해 pgfplots 및 animate 패키지를 사용하고 있습니다. 예는 다음과 같습니다.

\documentclass[aspectratio=1610]{beamer}
\setbeamertemplate{navigation symbols}{}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{animate}

\newcommand{\Textfield}[3]{%
    \draw%
        (current page.south west) ++(#1,#2)node[anchor=south west](N0){#3}%
    ;%
}%

\begin{document}
\begin{frame}
\begin{tikzpicture}[remember picture,overlay]%
    \useasboundingbox (current page.south west) rectangle (current page.north east);%
    \Textfield{1cm}{1cm}{Moving Text}
\end{tikzpicture}
\end{frame}
\begin{frame}
\begin{animateinline}[autoplay,controls=all,%
        begin={\begin{tikzpicture}[remember picture]%,overlay
        \useasboundingbox (current page.south west) rectangle (current page.north east);},%
        end=\end{tikzpicture}]{20}%
    \multiframe{61}{dPosTy=10mm+1mm}%
    {\Textfield{1cm}{\dPosTy}{Moving Text}}%
\end{animateinline}%
\end{frame}
\end{document}

결과적으로 애니메이션의 텍스트 위치에 오프셋이 발생했습니다. 애니메이션에서 오버레이 옵션을 사용하면 두 가지 오류도 발생합니다.
'첫 번째 프레임의 내용은 너비가 0이 아니어야 합니다.'
'첫 번째 프레임의 내용은 높이가 0이 아니어야 합니다.'
누구든지 그 이유와 해결 방법을 설명할 수 있습니까? 바르게?
미리 감사드립니다

답변1

tikzpicture의 옵션을 사용 하면 overlay결과 TeX 상자의 크기가 0이 됩니다. animateinline애니메이션 위젯의 너비, 높이, 깊이가 첫 번째 프레임의 크기에 따라 결정되기 때문에 이는 환경 내에서 허용되지 않습니다 . 0이면 위젯 크기도 0이 되며 이는 의미가 없습니다. 이것이 오류 메시지가 나타나는 이유입니다.

다음 해결책을 제안합니다. (슬라이드 채우기) 애니메이션은 중첩 환경(더 이상 사용되지 않는 방식으로 간주됨)을 lrbox피하기 위해 첫 번째 로 조판됩니다. tikzpicture그런 lrbox다음 페이지 노드를 사용하여 절대적으로 배치할 수 있습니다 current page.

\documentclass[aspectratio=1610]{beamer}
\setbeamertemplate{navigation symbols}{}

\usepackage{animate}

\usepackage{tikz}
%\usepackage{pgfplots} % not used here
%\pgfplotsset{compat=newest}

\newsavebox\animation

\newcommand{\Textfield}[3]{\node[anchor=south west, draw] at (#1,#2) {#3};}%
%\newcommand{\Textfield}[3]{\draw (0,0) -- (#1,#2) node[anchor=south west, draw] {#3};}%

\begin{document}

\begin{lrbox}{\animation}
  \begin{animateinline}[
    autoplay,controls,
    begin={\begin{tikzpicture}
      \useasboundingbox (0,0) rectangle (\paperwidth,\paperheight);},
    end=\end{tikzpicture}
  ]{20}
    \multiframe{61}{dPosTy=10mm+1mm}{\Textfield{1cm}{\dPosTy}{Moving Text}}
  \end{animateinline}
\end{lrbox}

\begin{frame}
  \begin{tikzpicture}[overlay,remember picture]
    \node [inner sep=0pt, outer sep=0pt, anchor=base west] at (current page.south west) {\usebox\animation};
  \end{tikzpicture}
\end{frame}

\end{document}

관련 정보