动画和预览之间有冲突吗?

动画和预览之间有冲突吗?

我想使用tikz和创建一个小动画animate。为了裁剪绘图,我使用preview包。没有它,我获得了一个可以正常工作的动画,但是当我激活预览时,我无法播放动画。

在下面的微电子工程协会,你可以通过注释这些行来获得正确的动画

\usepackage[active,tightpage]{preview}
\setlength\PreviewBorder{10pt}
\begin{preview}
\end{preview}

为了打开文件,我使用 OSX 10.10.5 上的 Acrobat Reader 11。

MNWE:

\documentclass{article}


\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{calc,backgrounds}
\usepackage{animate}
\usepackage[active,tightpage]{preview}
\setlength\PreviewBorder{10pt}

%data
\def\itMax{100}
\def\pas{1}
\def\vMax{5}
\def\vMin{-5}
%
\newcommand{\plotPerso}[1]{
\begin{tikzpicture}
%
\draw (-5,\vMin) rectangle (5,\vMax);
\draw[black,very thick] (-5,0) -- (0,#1);
\draw[black,very thick] (5,0) -- (0,#1);
\begin{pgfonlayer}{background}
    \path[fill=brown!20] (-5,\vMin) rectangle (5,\vMax);
\end{pgfonlayer}
\end{tikzpicture}
}


\begin{document}
\begin{preview}
\begin{animateinline}[loop, poster = first, controls,autoplay]{60}
\multiframe{\itMax}{icount=1+\pas}
{
\pgfmathsetmacro\incrP{\vMin+((\vMax-\vMin)/\itMax)*\icount}    
\plotPerso{\incrP}
%\newframe
}
\end{animateinline}
\end{preview}
\end{document}

答案1

preview严重操纵 TeX 的发货程序。PDF/Catalog对象的某些条目(例如/AcroForm字典)在完成 PDF 文件时不会写入。

我建议使用该类standalone,它似乎在这里做得更好。

原始代码中存在未受保护的行尾(缺失%),会产生虚假空间,导致动画周围的边距不均匀,即

\newcommand{\plotPerso}[1]{% <-- `%' added
...
\pgfmathsetmacro\incrP{\vMin+((\vMax-\vMin)/\itMax)*\icount}% <-- `%' added

代码中已更正这些问题:

\documentclass[margin=10pt]{standalone}

\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{calc,backgrounds}
\usepackage{animate}

%data
\def\itMax{100}
\def\pas{1}
\def\vMax{5}
\def\vMin{-5}

\newcommand{\plotPerso}[1]{%
  \begin{tikzpicture}
    \draw (-5,\vMin) rectangle (5,\vMax);
    \draw[black,very thick] (-5,0) -- (0,#1);
    \draw[black,very thick] (5,0) -- (0,#1);
    \begin{pgfonlayer}{background}
      \path[fill=brown!20] (-5,\vMin) rectangle (5,\vMax);
    \end{pgfonlayer}
  \end{tikzpicture}
}


\begin{document}
\begin{animateinline}[loop, poster = first, controls,autoplay]{60}
\multiframe{\itMax}{icount=1+\pas}
{
  \pgfmathsetmacro\incrP{\vMin+((\vMax-\vMin)/\itMax)*\icount}%    
  \plotPerso{\incrP}
}
\end{animateinline}
\end{document}

相关内容