Solución:
Dado que el OP solicita la creación de un PDF animado utilizando el animate
paquete sin la necesidad de tener los fotogramas de animación en un archivo (PDF) separado, el tikzpicture
El medio ambiente se puede poner directamente en un animateinline
medio ambiente:
documentclass{article}
usepackage{animate}
usepackage{tikz}
usetikzlibrary{lindenmayersystems}
pgfdeclarelindenmayersystem{A}{%
symbol{F}{pgflsystemstep=0.6pgflsystemsteppgflsystemdrawforward}
rule{A->F[+A][-A]}
}
begin{document}
begin{animateinline}[controls,autoplay,loop]{2}
multiframe{8}{n=1+1}{
begin{tikzpicture}[scale=10,rotate=90]
draw (-.1,-.2) rectangle (.4,0.2);
draw [blue,opacity=0.5,line width=0.1cm,line cap=round]
l-system [l-system={A,axiom=A,order=n,angle=45,step=0.25cm}];
end{tikzpicture}
}
end{animateinline}
end{document}
Hay dos cosas aquí
- para producir un archivo gif (lo que hacemos aquí normalmente, en este sitio para cargar).
- para tener la animación dentro del archivo pdf.
Primero, mi opinión será imagemagick. Instalar en pc imagemagick
y asegúrate de que convert.exe
está en la ruta del sistema. Produzca su archivo pdf (como lo ha mostrado en el enlace en OP). Luego emita este comando desde la misma carpeta usando el símbolo del sistema.
convert -delay 10 -loop 0 -density 400 -alpha remove lsystems.pdf lsystems.gif
Cambie los parámetros según sea necesario. Para obtener más información, consulte la documentación de imagemagick. Por lo general, prefiero un archivo por lotes para uso repetido. Guarde el contenido a continuación en un archivo llamado mygifbatch.bat
dentro de la misma carpeta que su archivo pdf.
@ECHO ON
cls
REM convert to animated gif
CD /D %~dp0
mkdir gifs
SET Program="convert.exe"
for %%A in (*.pdf) do %Program% -delay 30 -loop 0 -density 200 -alpha remove %%A gifs/%%~nA.gif
Pause
Para convertir, haga doble clic en mygifbatch.bat
archivo y se convertirá todos archivos pdf en la carpeta actual en archivos gif dentro de un subdirectorio gifs
.
Ahora el segundo. Puedes usar animate
paquete como en el siguiente código:
documentclass[preview,border={10pt 0pt 10pt 10pt}]{standalone}
usepackage{filecontents}
%% This is your file to be animated
begin{filecontents*}{lsystems.tex}
documentclass{article}
usepackage{tikz}
usepackage[active,tightpage]{preview}PreviewEnvironment{tikzpicture}
usetikzlibrary{lindenmayersystems}
pgfdeclarelindenmayersystem{A}{
symbol{F}{pgflsystemstep=0.6pgflsystemsteppgflsystemdrawforward}
rule{A->F[+A][-A]}
}
begin{document}
foreach n in {1,...,8} {
begin{tikzpicture}[scale=10,rotate=90]
draw (-.1,-.2) rectangle (.4,0.2);
draw
[blue,opacity=0.5,line width=0.1cm,line cap=round]
l-system [l-system={A,axiom=A
,order=n,angle=45,step=0.25cm}];
end{tikzpicture}
}
end{document}
end{filecontents*}
%
immediatewrite18{pdflatex lsystems}
%% convert to GIF animation. Uncomment following line to have a gif animation in the same folder.
%immediatewrite18{convert -delay 10 -loop 0 -density 400 -alpha remove lsystems.pdf lsystems.gif}
%%
usepackage{animate}
begin{document}
begin{preview}
%animategraphics[controls,autoplay,loop,scale=<integer>]{<frame rate>}{<PDF filename without extension>}{<left blank>}{<left blank>}
animategraphics[controls,autoplay,loop,scale=1]{2}{lsystems}{}{}
end{preview}
end{document}
Aquí usé filecontents
para escribir tu .tex
archivo y pdflatex
editado desde el documento principal. Por lo tanto, necesitará usar --shell-escape
mientras se compila. Si ya tiene el archivo pdf, no necesita líneas 3--32
. El pdf debe verse con adobe reader. Para obtener más detalles, consulte animate
documentacióntexdoc animate
o en texdoc.net).
Hay una buena regla arara escrita por Chris (cmhughes) que facilita la producción de gif desde pdf. Instale la genial herramienta arara del repositorio github de Paulo. Está incluido en texlive. Pero tienes que instalarlo tú mismo si eres usuario de miktex. Ahora guarde el contenido del código cmhughes en un archivo por nombre animate.yaml
. Pon este archivo en alguna carpeta, di C:Users<your name>AppDataRoamingArararules
(para ventanas). Luego crea un archivo araraconfig.yaml
en su directorio personalC:Users<your name>
generalmente) con el siguiente contenido:
!config
paths:
- C:Users<your name>AppDataRoamingArararules
Puede agregar muchos caminos como este. Ahora estás listo para irte. Agregue lo siguiente en su archivo tex
% arara: pdflatex
% arara: animate: {density: 200, delay: 20}
Código de muestra (lsystems.tex):
% arara: pdflatex
% arara: animate: {density: 200, delay: 20}
documentclass[tikz]{standalone}
usetikzlibrary{lindenmayersystems}
pgfdeclarelindenmayersystem{A}{
symbol{F}{pgflsystemstep=0.6pgflsystemsteppgflsystemdrawforward}
rule{A->F[+A][-A]}
}
begin{document}
foreach n in {1,...,8} {
begin{tikzpicture}[scale=10,rotate=90]
draw (-.1,-.2) rectangle (.4,0.2);
draw
[blue,opacity=0.5,line width=0.1cm,line cap=round]
l-system [l-system={A,axiom=A
,order=n,angle=45,step=0.25cm}];
end{tikzpicture}
}
%
end{document}
Compilar lsystems.tex
con – arara lsystems.tex
. arara
también se puede integrar con muchos editores. Para obtener más información, consulte el hermoso manual de arara.
Puedes crear animaciones .gif siguiendo los siguientes pasos:
- Crea un PDF con varias páginas. Cada página es una parte de la animación. La forma más sencilla de hacer esto podría ser la
beamer
clase de documento - Usar
pdfcrop
e imagemagicksconvert
para crear la animación.
Para usuarios de Linux
Para hacer que el paso 2 sea trivial, utilizo el siguiente Makefile para cada proyecto:
SOURCE = bellman-ford-algorithm
DELAY = 80
DENSITY = 300
WIDTH = 512
make:
pdflatex $(SOURCE).tex -output-format=pdf
make clean
clean:
rm -rf $(TARGET) *.class *.html *.log *.aux *.toc *.snm *.out *.nav
gif:
pdfcrop $(SOURCE).pdf
convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
make clean
animatedGif:
make
pdfcrop $(SOURCE).pdf
convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
make clean
transparentGif:
convert $(SOURCE).pdf -transparent white result.gif
make clean
png:
make
make svg
inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
svg:
make
#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
pdf2svg $(SOURCE).pdf $(SOURCE).svg
# Necessary, as pdf2svg does not always create valid svgs:
inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg
rsvg-convert -a -w $(WIDTH) -f svg $(SOURCE).svg -o $(SOURCE)2.svg
inkscape $(SOURCE)2.svg --export-plain-svg=$(SOURCE).svg
rm $(SOURCE)2.svg
- Solo guárdalo como
Makefile
(tenga en cuenta el hecho de que los Makefiles tienen pestañas, no cuatro espacios, por lo que copiar y pegar podría no funcionar) - Reemplaza las primeras 4 variables según tus necesidades
- Escribe
make animatedGif
en el caparazón de su elección (la mayoría podría usarbash
, perozsh
con eloh-my-zsh
El complemento ofrece autocompletado con pestañas para Makefiles :-))
Ejemplos de
Camino euleriano
Consulte mi artículo “Cómo visualizar algoritmos de gráficos” para obtener más información sobre cómo se creó:
Descomposición de Cholesky
Fuente: LaTeX-examples