# LaTeX in Manim

Manim has native support for rendering LaTeX, making it perfect for mathematical animations and educational content.

## MathTex - Mathematical Formulas

```python
from manim import *

class BasicMath(Scene):
    def construct(self):
        # Simple equation
        equation = MathTex(r"E = mc^2")

        self.play(Write(equation))
        self.wait(2)
```

## Tex - Mixed Text and Math

```python
class TexExample(Scene):
    def construct(self):
        # Mix text and math
        formula = Tex(r"The famous equation: $E = mc^2$")

        self.play(Write(formula))
        self.wait(2)
```

## Complex Equations

```python
class ComplexEquations(Scene):
    def construct(self):
        # Quadratic formula
        quadratic = MathTex(
            r"x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}"
        )

        # Integral
        integral = MathTex(
            r"\int_0^{\infty} e^{-x^2} dx = \frac{\sqrt{\pi}}{2}"
        )

        # Matrix
        matrix = MathTex(
            r"\begin{bmatrix} a & b \\ c & d \end{bmatrix}"
        )

        formulas = VGroup(quadratic, integral, matrix)
        formulas.arrange(DOWN, buff=1)

        self.play(Write(formulas))
        self.wait(2)
```

## Colored Parts

Color specific parts of equations:

```python
class ColoredMath(Scene):
    def construct(self):
        # Split equation into parts
        equation = MathTex(
            r"a^2", "+", "b^2", "=", "c^2"
        )

        # Color individual parts
        equation[0].set_color(RED)    # a^2
        equation[2].set_color(BLUE)   # b^2
        equation[4].set_color(GREEN)  # c^2

        self.play(Write(equation))
        self.wait(2)
```

## Transform Between Equations

```python
class EquationTransform(Scene):
    def construct(self):
        # Start with one equation
        eq1 = MathTex(r"x^2 + y^2 = r^2")

        # Transform to another
        eq2 = MathTex(r"(x-h)^2 + (y-k)^2 = r^2")

        self.play(Write(eq1))
        self.wait(1)

        self.play(TransformMatchingShapes(eq1, eq2))
        self.wait(2)
```

## Step-by-Step Derivation

```python
class Derivation(Scene):
    def construct(self):
        # Create a series of equations
        line1 = MathTex(r"x + 5 = 10")
        line2 = MathTex(r"x + 5 - 5 = 10 - 5")
        line3 = MathTex(r"x = 5")

        # Position them
        equations = VGroup(line1, line2, line3)
        equations.arrange(DOWN, buff=0.8)

        # Show derivation step by step
        self.play(Write(line1))
        self.wait(1)

        self.play(TransformMatchingShapes(line1.copy(), line2))
        self.wait(1)

        self.play(TransformMatchingShapes(line2.copy(), line3))
        self.wait(2)
```

## Aligned Equations

```python
class AlignedEquations(Scene):
    def construct(self):
        # Use aligned environment
        aligned = MathTex(
            r"\begin{aligned}"
            r"x + 5 &= 10 \\"
            r"x &= 10 - 5 \\"
            r"x &= 5"
            r"\end{aligned}"
        )

        self.play(Write(aligned))
        self.wait(2)
```

## Greek Letters and Symbols

```python
class GreekSymbols(Scene):
    def construct(self):
        # Common Greek letters
        greeks = MathTex(
            r"\alpha, \beta, \gamma, \delta, \theta, \pi, \sigma, \omega"
        )

        # Common symbols
        symbols = MathTex(
            r"\sum_{i=1}^{n} i = \frac{n(n+1)}{2}"
        )

        # Limits
        limit = MathTex(
            r"\lim_{x \to \infty} \frac{1}{x} = 0"
        )

        group = VGroup(greeks, symbols, limit)
        group.arrange(DOWN, buff=1)

        self.play(Write(group))
        self.wait(2)
```

## Font Sizes

```python
class FontSizes(Scene):
    def construct(self):
        # Different font sizes
        small = MathTex(r"E = mc^2").scale(0.5)
        normal = MathTex(r"E = mc^2")
        large = MathTex(r"E = mc^2").scale(2)

        sizes = VGroup(small, normal, large)
        sizes.arrange(DOWN, buff=1)

        self.play(Write(sizes))
        self.wait(2)
```

## Highlighting Parts

```python
class HighlightParts(Scene):
    def construct(self):
        equation = MathTex(
            r"f(x) = ax^2 + bx + c"
        )

        # Create a box around the quadratic term
        box = SurroundingRectangle(equation[0][4:7], color=YELLOW)

        self.play(Write(equation))
        self.wait(1)

        self.play(Create(box))
        self.wait(2)
```

## Resources

- [MathTex Reference](https://docs.manim.community/en/stable/reference/manim.mobject.text.tex_mobject.MathTex.html)
- [LaTeX Symbols Guide](https://www.overleaf.com/learn/latex/List_of_Greek_letters_and_math_symbols)
