Manim 显示乳胶 Table
Manim Display Latex Table
有没有一种方法可以使用 manim
来显示和动画乳胶 table?
例如
\begin{table}[]
\centering
\begin{tabular}{lllll}
& & \multicolumn{2}{l}{End} & \
Top & & Bottom & Bottom & \
& Top & 40 & 160 & 200 \
& Bottom & 640 & 160 & 800 \
& & 200 & 800 & 1000
\end{tabular}
\end{table}
你在manim
会怎样?
from manimlib import *
import numpy as np
class TableManim(Scene):
def construct(self):
...
如果你想直接用 LaTeX 做它会是这样的:
class Table1(Scene):
def construct(self):
table = r"""
\begin{table}[]
\centering
\begin{tabular}{|l|l|l|l|l|}\hline
& & \multicolumn{2}{l}{End} & \\hline
Top & & Bottom & Bottom & \
& Top & 40 & 160 & 200 \
& Bottom & 640 & 160 & 800 \
& & 200 & 800 & 1000 \\hline
\end{tabular}
\end{table}
"""
tex_table = TexText(table)
self.play(Write(tex_table))
但是,如果你想用 Manim 做一个 table 它有点复杂,它会像这样(你可以转换成一个函数以备不时之需)
class Table2(Scene):
def construct(self):
table = VGroup(*[
VGroup(*[
Text(f"{t}")
for t in row
]).arrange(DOWN,aligned_edge=LEFT)
for row in [
["Top"],
["Top","Bottom"],
["Bottom",40,640,200],
["Bottom",160,160,800],
[200,800,1000],
]],
)
table.scale(0.8)
BUFF = 0.5
rectangles = VGroup(*[
Rectangle(
width=mob.get_width()+BUFF,
height=max(*[t.get_height() for t in table])+BUFF,
).move_to(mob)
for mob in table
])
for t,r,align_direction in zip(table, rectangles, [UP,None,None,None,DOWN]):
if align_direction is not None:
t.align_to(r,align_direction)
t.shift(-align_direction*BUFF/2)
table_group = VGroup(*[
VGroup(t,r)
for t,r in zip(table,rectangles)
])
table_group.arrange(RIGHT,buff=0)
self.add(table_group)
有没有一种方法可以使用 manim
来显示和动画乳胶 table?
例如
\begin{table}[]
\centering
\begin{tabular}{lllll}
& & \multicolumn{2}{l}{End} & \
Top & & Bottom & Bottom & \
& Top & 40 & 160 & 200 \
& Bottom & 640 & 160 & 800 \
& & 200 & 800 & 1000
\end{tabular}
\end{table}
你在manim
会怎样?
from manimlib import *
import numpy as np
class TableManim(Scene):
def construct(self):
...
如果你想直接用 LaTeX 做它会是这样的:
class Table1(Scene):
def construct(self):
table = r"""
\begin{table}[]
\centering
\begin{tabular}{|l|l|l|l|l|}\hline
& & \multicolumn{2}{l}{End} & \\hline
Top & & Bottom & Bottom & \
& Top & 40 & 160 & 200 \
& Bottom & 640 & 160 & 800 \
& & 200 & 800 & 1000 \\hline
\end{tabular}
\end{table}
"""
tex_table = TexText(table)
self.play(Write(tex_table))
但是,如果你想用 Manim 做一个 table 它有点复杂,它会像这样(你可以转换成一个函数以备不时之需)
class Table2(Scene):
def construct(self):
table = VGroup(*[
VGroup(*[
Text(f"{t}")
for t in row
]).arrange(DOWN,aligned_edge=LEFT)
for row in [
["Top"],
["Top","Bottom"],
["Bottom",40,640,200],
["Bottom",160,160,800],
[200,800,1000],
]],
)
table.scale(0.8)
BUFF = 0.5
rectangles = VGroup(*[
Rectangle(
width=mob.get_width()+BUFF,
height=max(*[t.get_height() for t in table])+BUFF,
).move_to(mob)
for mob in table
])
for t,r,align_direction in zip(table, rectangles, [UP,None,None,None,DOWN]):
if align_direction is not None:
t.align_to(r,align_direction)
t.shift(-align_direction*BUFF/2)
table_group = VGroup(*[
VGroup(t,r)
for t,r in zip(table,rectangles)
])
table_group.arrange(RIGHT,buff=0)
self.add(table_group)