Add slice_by_tex method

This commit is contained in:
Grant Sanderson 2021-01-04 16:01:04 -08:00
parent a6d484236c
commit 2cdebeda29

View file

@ -219,11 +219,10 @@ class TexMobject(SingleStringTexMobject):
else: else:
return tex1 == tex2 return tex1 == tex2
return VGroup(*[ return VGroup(*filter(
m lambda m: isinstance(m, SingleStringTexMobject) and test(tex, m.get_tex_string()),
for m in self.submobjects self.submobjects
if isinstance(m, SingleStringTexMobject) and test(tex, m.get_tex_string()) ))
])
def get_part_by_tex(self, tex, **kwargs): def get_part_by_tex(self, tex, **kwargs):
all_parts = self.get_parts_by_tex(tex, **kwargs) all_parts = self.get_parts_by_tex(tex, **kwargs)
@ -247,25 +246,34 @@ class TexMobject(SingleStringTexMobject):
self.set_color_by_tex(tex, color, **kwargs) self.set_color_by_tex(tex, color, **kwargs)
return self return self
def set_bstroke(self, color=BLACK, width=4): def index_of_part(self, part, start=0):
self.set_stroke(color, width, background=True) return self.submobjects.index(part, start)
return self
def index_of_part(self, part): def index_of_part_by_tex(self, tex, start=0, **kwargs):
split_self = self.split()
if part not in split_self:
raise Exception("Trying to get index of part not in TexMobject")
return split_self.index(part)
def index_of_part_by_tex(self, tex, **kwargs):
part = self.get_part_by_tex(tex, **kwargs) part = self.get_part_by_tex(tex, **kwargs)
return self.index_of_part(part) return self.index_of_part(part, start)
def slice_by_tex(self, start_tex=None, stop_tex=None, **kwargs):
if start_tex is None:
start_index = 0
else:
start_index = self.index_of_part_by_tex(start_tex, **kwargs)
if stop_tex is None:
return self[start_index:]
else:
stop_index = self.index_of_part_by_tex(stop_tex, start=start_index, **kwargs)
return self[start_index:stop_index]
def sort_alphabetically(self): def sort_alphabetically(self):
self.submobjects.sort( self.submobjects.sort(
key=lambda m: m.get_tex_string() key=lambda m: m.get_tex_string()
) )
def set_bstroke(self, color=BLACK, width=4):
self.set_stroke(color, width, background=True)
return self
class TextMobject(TexMobject): class TextMobject(TexMobject):
CONFIG = { CONFIG = {