我想使用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}