%20-%20poss%C3%ADvel%20ou%20imposs%C3%ADvel%3F.png)
Estou executando o Windows 10 ou 11 (não sei), tenho o WSL2 em execução no meu sistema - distribuição Ubuntu e baixei o SageMath no meu computador. Estabeleci contato com sucesso entre todos os três softwares e consegui executar arquivos .tex contendo código Sage.
No terminal Ubuntu, eu executo:
cd /mnt/c/users/myname
pdflatex filename.tex
sage filename.sagetex.sage
pdflatex filename.tex
Eu gostaria de fazer uma animação TikZ (ou assíntota, mas isso é mais complicado e acredito que provavelmente requer legitimamente o método python mencionado abaixo) que é baseada em matemática que está além das capacidades do TeX, usando o pacote sagetex. Estou tendo problemas para fazer isso funcionar e gostaria de alguns conselhos. O pior cenário seria criar um script Python para reescrever todo o documento para cada quadro - sem usar o pacote animate e, em seguida, anexá-los usando o ImageMagick ou algo assim - o que está certo se eu precisar. Tudo que me importa é o produto; Eu não me importo quanto tempo leva para meu computador fazer isso.
Aqui está um exemplo mínimo não funcional:
\documentclass{beamer}
\usepackage{sagetex,animate,tikz}
\begin{document}
\begin{sageblock}
f(x) = x
\end{sageblock}
\begin{animateinline}[palindrome]{1}
\multiframe{10}{x=0+1}{
\begin{tikzpicture}
\draw (0,0) -- (\sage{f(\x)},0);
\end{tikzpicture}}
\end{animateinline}
\end{document}
Por favor, diga; posso fazer isso funcionar para tikz ou a opção de script Python é a melhor opção? Acho que não preciso perguntar se isso funcionaria para assíntota, haha :)
Obrigado!
Responder1
Sua abordagem no código acima, usando o animate
pacoteem LaTeXnão funciona porque seu código LaTeX inclui o código \sage{f(\x)}
. Para que o sagetex
pacote funcione seu documento foi compilado corretamente no passo 2 ( pdflatex filename.tex
). Como Sage
não será executado até a etapa 3 e o conteúdo/cálculo ausente é necessário para construir o gráfico na etapa 2, a compilação do LaTeX falha. Essa é a razão essencial pela qual, em muitas das minhas respostas para sagetex
problemas, eu crio uma string de código LaTeX que é então inserida no documento LaTeX na etapa 4. Por exemplo, veja minha resposta paraComo você plota a função Riemann Zeta usando Tikz/Pgfplot?. No entanto, não vejo como essa abordagem pode funcionar com o animate
pacoteem LaTeX. Eu acho que você poderia com muito tempo e esforço usar o animate
comandoem sábiopara criar um .gif animado. Isso envolveria a criação de imagens Tikz usando o Sage junto com o animate
comandoem sábio. Sua lista de objetos gráficos no animate
código do Sage seriam as imagens Tikz. Acho que isso aumentaria significativamente o tempo/complexidade na criação do gif animado. Se fosse eu, eu construiria a animação usando a plotagem do Sage junto com o Sage `animate'. Para ilustrar essa abordagem, vá para oServidor Sage Cell. Copie/cole o código abaixo na caixa. Em seguida, pressione o botão 'Avaliar' conforme mostrado na imagem. Você verá Sage executar a animação.
def Rotate(A,P,degrees):
A1 = [A[0]-P[0],A[1]-P[1]]
theta = degrees*pi/180
R = [A1[0]*cos(theta)-A1[1]*sin(theta), A1[0]*sin(theta)+A1[1]*cos(theta)]
return [R[0]+P[0],R[1]+P[1]]
L=[]
for j in range(1,15):
G = Graphics()
N = j
Start = [1,0]
Finish = [0,0]
Curve = [[1,0], [0,0]]
n = 1
while n<N:
CurveR=[]
for i in range(0,len(Curve)-1):
CurveR += [Rotate(Curve[i],Curve[len(Curve)-1],-90)]
for i in range(len(CurveR)-1,-1,-1):
Curve += [CurveR[i]]
n += 1
G += line(Curve)
L += [G.plot()]
d=animate([L[k]for k in range(1,14)],xmin=-22,xmax=87,ymin=-44,ymax=90,axes=False)
d.show(delay=100)
O resultado é a animação da imagem abaixo:
Você pode fazer o download gif
clicando com o botão direito na imagem. Com relação ao seu código acima, acho que esse código está mais próximo do que você escreveu:
f(x)=x
L=[]
for j in range(0,15):
G = Graphics()
Curve = line([(0,0), (f(j),0)])
G += Curve
L += [G.plot()]
d=animate([L[k]for k in range(1,14)],xmin=0,xmax=15,ymin=0,ymax=2,axes=False)
d.show(delay=100)
Você pode ver o resultado clicando com o botão direito abaixo:
Criar a animação usando apenas o Sage deve ser relativamente rápido e fácil. Para ter uma animação de imagens Tikz, a linha L += [G.plot()]
teria que ser modificada para incluir gráficos Tikz png/pdf que já foram criados (etapas extras) ou são criados instantaneamente (muita codificação extra). Então eu suspeito que você poderia se adaptaranimate
em sábiopara criar uma animação de imagens do Tikz, mas isso é muito mais complicado e demorado.