Quick Guide =========== This guide will walk you through creating a simple presentation with Beanim. By the end, you'll understand how to use templates, define slide objects, and create an animated presentation. Available Templates ------------------- Beanim comes equipped with eight different templates to homogenise the look of your slides: * 🎨 **default_template** - Clean and minimalist design * 🌿 **green_mint** - Fresh mint green theme * 🧊 **blue_ice** - Cool blue color scheme * 🍂 **red_autumn** - Warm autumn colors * 🔵 **beamer_blue** - Classic Beamer style in blue * 🟢 **beamer_green** - Classic Beamer style in green * 🌌 **quantum_dusk** - Elegant purple-lavender theme * ⚫ **dark_energy** - Dark theme with bright cyan accents Template Gallery ^^^^^^^^^^^^^^^^ .. raw:: html

🎨 default_template

default_template title

default_template generic

🌿 green_mint

green_mint title

green_mint generic

🧊 blue_ice

blue_ice title

blue_ice generic

🍂 red_autumn

red_autumn title

red_autumn generic

🔵 beamer_blue

beamer_blue title

beamer_blue generic

🟢 beamer_green

beamer_green title

beamer_green generic

🌌 quantum_dusk

quantum_dusk title

quantum_dusk generic

⚫ dark_energy

dark_energy title

dark_energy generic
Step 1: Import and Setup ------------------------- These templates can be called by importing them at the preamble of your ``file.py`` to compile with ``manim-slides``: .. code-block:: python from manim import * from manim_slides import Slide from manim_beanim import * # Choose your template import_template_beanim('default_template') class Your_Fancy_Presentation(Slide): def construct(self): # Your presentation code here pass ---- Step 2: Define Your Slide Objects ---------------------------------- Before building the presentation script, define all the objects (s, bullet points, equations, references) you'll use. This makes your code more organized and easier to maintain. **Available Basic Object Types:** * **Title_Presentation()** - with project name, affiliation, and author * **Title_Section()** - Section header that appears at the top-left corner * **BlB()** - Bulleted List Boxed with iterative animation support * **Reference()** - Citations and references (manual or from .bib file) * **Equation()** - LaTeX equations (manual or extracted from .tex file) .. note:: You can define all objects in a separate ``objects.py`` file and import them into your main script for better organization. ---- Step 3: Build Your Presentation -------------------------------- Here's a complete example showing how to create a simple presentation: .. code-block:: python from manim import * from manim_slides import Slide from manim_beanim import * import_template_beanim('default_template') class Generic_Presentation(Slide): def construct(self): # ============================================ # SLIDE OBJECTS DEFINITION # ============================================ title_slide = Title_Presentation(content=[title_of_project, affiliation, author]) slide_0_points = BlB(the_title="About previous slide", content=[ "Previous slide contained the Title of the Presentation", "You call it with Title\\_Presentation() class", "It has 3 entries: title of slides, your affiliation, your name" ]).to_corner(LEFT) slide_1_title = Title_Section(content="This a Title\\_Section to Show") slide_1_points_1 = BlB( content=[ "What you see upstairs is a Title\\_Section()", "It is defined so that it will always be placed to the UL corner" ]).to_corner(LEFT) slide_1_points_2 = BlB( content=[ "This is Bulleted list boxed", "Its class is BlB()", "Use its inbuilt function .next\\_point() to iterate over points", "... And for the last point you can recover all points in the initial color", ]).to_corner(LEFT) ref_1 = Reference(dictionary="example_extract_ref_equation/dictionaries_extracted/refs.txt", content=['ref_extract_1', 'ref_extract_2']) ref_2 = Reference(content='[Manually input ref, 2025]') refs = VGroup(ref_1, ref_2).arrange(DOWN, aligned_edge=LEFT).to_corner(UR) slide_2_points_1 = BlB( content=[ "This is a reference/citation (Look up-right)", "Its class is Reference()", "You can manually input your references...", "... Or you can extract references from a .bib file and call them from a dictionary", "Check documentation/tools for more information on this" ]).to_corner(LEFT) eq_1 = Equation( content=["x^{2}+y^{2} = R^{2}, \quad", "e^{i \pi} = -1"], text_size=30, direction=DOWN, ).shift(1.5*UP) eq_2 = Equation( dictionary="example_extract_ref_equation/dictionaries_extracted/equations.txt", content="equation_extract_2", ).shift(1.5*UP) slide_3_points_1 = BlB( content=[ "This is an equation", "Its class is Equation()", "You can manually input your equations...", "... Or you can extract equations from a .tex file and call them from a dictionary", "Check documentation/tools for more information on this" ]).to_corner(DOWN) slide_4_points = BlB( content=[ "This is a table", "Similar to equations and refs, you can manually input or use dictionary", "This is a picture. It has two modes: Techno and Polaroid", "This is a simple post-it with a To-do list", ]).to_corner(UP) table_1 = Table([["1", "2"], ["3", "4"]]).to_corner(DOWN) photo_1 = Photo("figures/pedro.png", decorator_style="polaroid", caption="My Photo") photo_2 = Photo("figures/pedro.png", decorator_style="techno") photos = Group(photo_1, photo_2).arrange(RIGHT, buff=0.5).to_corner(DOWN) p_it = Post_It(to_dos=["Task 1", "Task 2"], text_color=BLACK, pin_color=BLACK).to_corner(DOWN) # ============================================ # SLIDE OBJECTS DEFINITION # ============================================ # self.play(FadeIn(title_slide)) self.next_slide(notes='to slide about title') self.wipe(title_slide, slide_0_points) for _ in range(len(slide_0_points.content) + 1): self.next_slide() self.play(slide_0_points.next_point()) # Slide 1 self.next_slide(notes='to slide about section and bulleted list') self.wipe(slide_0_points, slide_1_title) self.play(FadeIn(slide_1_points_1)) # Slide 2 self.next_slide(notes='to slide about section and bulleted list') self.play(ReplacementTransform(slide_1_points_1, slide_1_points_2)) for _ in range(len(slide_1_points_2.content) + 2): self.next_slide() self.play(slide_1_points_2.next_point()) # Slide 3 self.next_slide(notes='to slide about refs') self.wipe(Group(slide_1_title, slide_1_points_2), refs) self.play(Write(slide_2_points_1)) # Slide 4 self.next_slide(notes='to slide about equations') self.wipe(Group(slide_2_points_1, refs), Group(eq_1, slide_3_points_1)) for _ in range(len(slide_3_points_1.content)-1): self.next_slide() self.play(slide_3_points_1.next_point()) self.next_slide() self.play(ReplacementTransform(eq_1, eq_2)) self.play(slide_3_points_1.next_point()) self.next_slide() self.play(slide_3_points_1.next_point()) # Slide 5 self.next_slide(notes="to minor things", auto_next=True) self.wipe(Group(slide_3_points_1, eq_2), Group(slide_4_points)) self.next_slide() self.play(slide_4_points.next_point(), FadeIn(table_1)) self.next_slide() self.play(slide_4_points.next_point()) self.next_slide() self.wipe(table_1, photos) self.play(slide_4_points.next_point()) self.next_slide() self.wipe(photos, p_it) self.play(slide_4_points.next_point()) self.next_slide() self.play(FadeOut(slide_4_points, p_it)) ---- Step 4: Render Your Presentation --------------------------------- Render the slides using the ``manim-slides`` command: .. code-block:: bash manim-slides render file_name.py Generic_Presentation After rendering, you can present your slides with: .. code-block:: bash manim-slides present Generic_Presentation ---- Final Result ------------ Here's what the final presentation looks like: .. raw:: html
---- Next Steps ---------- Now that you've created your first presentation with Beanim, explore more advanced features: * 🔧 Learn about extracting equations and references from files in the :doc:`api/modules` section * 🎨 Experiment with different templates and customize your slides * 💡 Visit the `Manim-Slides documentation `_ for additional animation techniques .. tip:: **Pro tip:** Start simple and gradually add complexity. Define all your objects first, then build the animation script step by step.