manim中的连分数
我刚开始使用manim,想做一个简单的动画,展示一个分数的连分数展开。到目前为止,我的代码是这样的:
from manim import *
class Eq(Scene):
def construct(self):
f1=MathTex(
r"{75 \over ",
r"33",
"}"
)
f2=MathTex(
r"{66+9 \over ",
"33",
"}"
)
f3=MathTex(
r"{2+}",r"{9 \over ",
"33",
"}"
)
f4=MathTex(
r"{2+}",r"{1 \over ",
r"{33 \over",
"9",
"}","}"
)
self.add(f1)
self.wait(2)
self.play(ReplacementTransform(f1[0],f2[0]))
self.wait(2)
self.play(ReplacementTransform(f1,f3))
self.wait(2)
self.play(ReplacementTransform(f3,f4))
self.wait(2)
可能效率不是最高的,但这不是我关心的问题。当我把分数放到分母时,\over
生成的分数看起来比原来的分数小,这让它看起来有点奇怪。有没有办法避免这种情况呢?
我看到过一些视频,里面的连分数展开保持了相同的大小,所以这应该是可行的。可惜我找不到针对这个具体问题的指南。如果有人能帮忙就太好了。
如你所见,分母中的分数比较小。我希望它和原来的分数大小一样。
1 个回答
1
一般来说,这个问题更像是关于“LaTeX”的,而不是“manim/python”的。Manim 只是把 LaTeX 方程渲染成一个 *.svg 文件,然后把这个文件添加到场景中。所以真正的问题是,如何以你想要的方式渲染 LaTeX 方程。在这里你可以找到一些可能的解决方案。
把第一个解决方案应用到你的例子中,可以得到这样的结果:
...
f4=MathTex(
r"{2+}",r"\begin{array}{@{\,}c@{\,}} 1\\ \hline 33\\ \hline 9\end{array}"
)
...
看起来是这样的: