Saltar al contenido

Animaciones en LaTeX

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í

  1. para producir un archivo gif (lo que hacemos aquí normalmente, en este sitio para cargar).
  2. 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 pdflatexeditado 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.

ingrese la descripción de la imagen aquí

Puedes crear animaciones .gif siguiendo los siguientes pasos:

  1. 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
  2. Usar pdfcrop e imagemagicks convert 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
  1. 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)
  2. Reemplaza las primeras 4 variables según tus necesidades
  3. Escribe make animatedGif en el caparazón de su elección (la mayoría podría usar bash, pero zsh con el oh-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ó:

ingrese la descripción de la imagen aquí

Descomposición de Cholesky

Fuente: LaTeX-examples

ingrese la descripción de la imagen aquí

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *