スライド上で動くものをアニメーション化しようとしています。これを実現するために、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}
私の結果では、アニメーション内のテキストの位置にオフセットがあります。アニメーションでオーバーレイ オプションを使用すると、次の 2 つのエラーも発生します。
「最初のフレームのコンテンツの幅は 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}