Manim中连分数展开动画分母分数尺寸过小问题求助
解决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生成的分数在分母位置时,LaTeX默认采用textstyle排版,导致分数尺寸远小于原分数,视觉不协调。
解决方案
LaTeX中,\displaystyle命令可强制内容以全局显示模式排版,让分母中的分数保持与原分数一致的尺寸;也可使用\dfrac(Manim默认支持amsmath包,直接可用)生成正常大小的分数。
方案1:使用\displaystyle修改原代码
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", "}" ) # 用\displaystyle强制分母中的分数以正常尺寸显示 f4=MathTex( r"{2+}",r"{1 \over ", r"\displaystyle{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)
方案2:使用\dfrac简化代码
from manim import * class Eq(Scene): def construct(self): f1=MathTex(r"\dfrac{75}{33}") f2=MathTex(r"\dfrac{66+9}{33}") f3=MathTex(r"2+\dfrac{9}{33}") f4=MathTex(r"2+\dfrac{1}{\dfrac{33}{9}}") self.add(f1) self.wait(2) self.play(ReplacementTransform(f1,f2)) self.wait(2) self.play(ReplacementTransform(f2,f3)) self.wait(2) self.play(ReplacementTransform(f3,f4)) self.wait(2)
说明
\displaystyle:忽略当前上下文(如分母、下标)的缩小规则,强制LaTeX使用全局显示模式排版,让分数保持正常大小。\dfrac:amsmath包提供的命令,直接生成displaystyle模式的分数,代码更简洁易读。
内容的提问来源于stack exchange,提问作者Maik Pickl
相关产品推荐
相关产品推荐

