diff --git a/manim/mobject/text/tex_mobject.py b/manim/mobject/text/tex_mobject.py index 729fbb158b..62a977274a 100644 --- a/manim/mobject/text/tex_mobject.py +++ b/manim/mobject/text/tex_mobject.py @@ -469,7 +469,11 @@ def _locate_first_match( first_match_length = 0 first_match = None for substring in substrings_to_isolate: - match = re.match(f"(.*?)({re.escape(substring)})(.*)", unprocessed_string) + match = re.match( + f"(.*?)({re.escape(substring)})(.*)", + unprocessed_string, + flags=re.DOTALL, + ) if match and len(match.group(1)) < first_match_start: first_match = match first_match_start = len(match.group(1)) diff --git a/tests/module/mobject/text/test_texmobject.py b/tests/module/mobject/text/test_texmobject.py index 48297abec6..f32425e81c 100644 --- a/tests/module/mobject/text/test_texmobject.py +++ b/tests/module/mobject/text/test_texmobject.py @@ -136,6 +136,17 @@ def test_split_double_braces(tex_string, expected_segments): assert MathTex._split_double_braces(tex_string) == expected_segments +def test_multiline_tex(): + multiline_string = Tex( + """This is a very long string, + which will test how well the new implementation of Tex handles such long strings.""", + substrings_to_isolate=["This", "implementation"], + ) + assert len(multiline_string.get_part_by_tex("This").submobjects) == 4 + assert len(multiline_string.get_part_by_tex("implementation").submobjects) == 14 + assert len(multiline_string.submobjects[0]) == 90 + + def test_tex(config): Tex("The horse does not eat cucumber salad.") assert Path(config.media_dir, "Tex", "5384b41741a246bd.svg").exists()