为什么要文字对齐 ? 
对齐原则在现实生活中无处不在,比如:书籍、货架、地铁座位等等;对齐的目的其实就是在规整文案信息,对齐有利于信息传达以及视觉规范,当我们做文字编排工作时,要根据构图形式选择合理的对齐原则,每种对齐形式所传达的视觉感受也不同:左对齐、右对齐给人以整齐、严谨、划分明显的感受;居中对齐则属于更加活跃、可塑性强;而两端对齐更适用于文本段落,底部对齐以及顶部对齐在做海报时的装饰性文本会用到。
用manim实现字体的对齐
接下来我们一步一的来,实现文字对齐
第一步:无法对齐,都指向目标的中间点
from manim import * # 导入manim库,允许我们创建数学动画
class LinearAlgebraDiagram(Scene): # 定义一个名为LinearAlgebraDiagram的场景类
def construct(self): # 定义构造函数,创建场景中的元素
# 创建中心文本
title = Text("Linear Algebra", font_size=48).set_color(WHITE) # 创建主标题文本,字体大小为48,颜色为白色
subtitle = Text("线性代数", font_size=36).next_to(title, DOWN) # 创建副标题文本,字体大小为36,并将其放置在主标题下方
Vt = VGroup(title, subtitle).arrange(DOWN, buff=0.5).shift(LEFT * 3) # 将标题和副标题组合成一个组,垂直排列,距离为0.5,向左移动3个单位
# 创建学科文本
subjects = [ # 创建一个包含不同学科的列表
Text("Computer science", font_size=36).shift(LEFT * 3 + DOWN * 2), # 计算机科学
Text("Physics", font_size=36).shift(LEFT * 3 + DOWN * 3), # 物理
Text("Electrical engineering", font_size=36).shift(LEFT * 3 + DOWN * 4), # 电气工程
Text("Mechanical engineering", font_size=36).shift(LEFT * 3 + DOWN * 5), # 机械工程
Text("Statistics", font_size=36).shift(LEFT * 3 + DOWN * 6), # 统计学
]
subject_group = VGroup(*subjects).arrange(DOWN, buff=0.5).shift(RIGHT * 3) # 将所有学科文本组合成一个组,垂直排列,右移3个单位
# 创建箭头
arrows = [] # 初始化一个空列表以存储箭头
for subject in subjects: # 对于每个学科文本
arrow = Arrow(start=title.get_bottom(), end=subject.get_top(), buff=0.1, color=YELLOW) # 创建箭头,起点为主标题底部,终点为学科文本顶部,颜色为黄色
arrows.append(arrow) # 将箭头添加到列表中
# 添加元素到场景中
self.play(Write(title), Write(subtitle)) # 播放动画,将主标题和副标题写入场景中
self.wait(1) # 等待1秒
for arrow, subject in zip(arrows, subjects): # 逐个播放箭头和学科文本的动画
self.play(Create(arrow), Write(subject)) # 创建箭头和写入学科文本
self.wait(0.5) # 每次动画之间等待0.5秒
self.wait(2) # 最后等待2秒
运行结果:
代码解释:
-
引入库: 最开始,代码导入
manim
库,这是一个用于创建数学和科学可视化动画的Python库。 -
创建场景类:
Linear