%20gif%20%E3%81%AE%20animate%20%E3%81%A7%20sagetex%20%E3%82%92%E3%83%8D%E3%82%B9%E3%83%88%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E5%8F%AF%E8%83%BD%E3%81%8B%E3%80%81%E4%B8%8D%E5%8F%AF%E8%83%BD%E3%81%8B%3F.png)
私は Windows 10 または 11 (わかりません) を実行しており、システム (Ubuntu ディストリビューション) で WSL2 を実行しており、コンピューターに SageMath をダウンロードしています。3 つのソフトウェア間の接続を正常に確立し、Sage コードを含む .tex ファイルを実行できました。
Ubuntu ターミナルから次のコマンドを実行します:
cd /mnt/c/users/myname
pdflatex filename.tex
sage filename.sagetex.sage
pdflatex filename.tex
私は、TeX の能力を超えた数学に基づいた、sagetex パッケージを使用した TikZ (または asymptote ですが、これはより複雑で、おそらく下記の Python メソッドが正当に必要になると思います) アニメーションを作成したいと考えています。これをうまく機能させるのに苦労しており、アドバイスをいただきたいです。最悪のシナリオは、各フレームのドキュメント全体を書き換える Python スクリプトを作成することです (animate パッケージを使用せずに)。その後、ImageMagick などを使用してそれらを結合します。必要な場合は問題ありません。私が気にするのは製品だけです。コンピューターで作成するのにどれだけ時間がかかるかは気にしません。
以下は最小限の動作しない例です:
\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}
教えてください。これを tikz で動作させることができますか、それとも Python スクリプト オプションの方がよい方法でしょうか。これが asymptote で動作するかどうかは尋ねる必要はないと思います、笑 :)
ありがとう!
答え1
上記のコードでは、animate
パッケージを使用してアプローチしますLaTeXでは動作しません。LaTeX コードにコード が含まれているためです\sage{f(\x)}
。sagetex
パッケージが動作するには、ドキュメントがステップ 2 ( pdflatex filename.tex
) で適切にコンパイルされている必要があります。Sage
はステップ 3 まで実行されず、その欠落しているコンテンツ/計算はステップ 2 でプロットを作成するために必要であるため、LaTeX コンパイルは失敗します。これが、私が多くのsagetex
問題に対する回答で、ステップ 4 で LaTeX ドキュメントに挿入される LaTeX コードの文字列を作成する主な理由です。たとえば、Tikz/Pgfplot を使用してリーマン ゼータ関数をプロットするにはどうすればよいですか?animate
しかし、このアプローチがパッケージでどのように機能するかはわかりませんLaTeXで時間と労力をかけてコマンドを使用すればanimate
、セージアニメーション.gifを作成する。これには、Sageと以下のanimate
コマンドを使用してTikz画像を作成する必要がある。セージグラフィックスオブジェクトのリストは、Sageのanimate
コードではTikz画像になります。これにより、アニメーションgifの作成にかかる時間と複雑さが大幅に増加すると思います。私なら、SageプロットとSage `animate'を使用してアニメーションを作成します。このアプローチを説明するには、Sage セル サーバー以下のコードをボックスにコピー/貼り付けします。次に、図に示すように「評価」ボタンを押します。Sage がアニメーションを実行するのがわかります。
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)
結果は次の図のアニメーションになります。
画像を右クリックするとダウンロードできますgif
。上記のコードに関しては、次のコードの方があなたが書いたものに近いと思います:
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)
右クリックした結果は以下で確認できます。
Sageのみを使用してアニメーションを作成するのは比較的簡単で迅速です。Tikz画像のアニメーションを作成するには、L += [G.plot()]
すでに作成されているpng/pdf Tikzプロット(追加の手順)またはオンザフライで作成される(多くの追加のコーディング)ように行を変更する必要があります。したがって、適応できると思います。animate
セージTikz 画像のアニメーションを作成することもできますが、これは非常に複雑で時間がかかります。