Adding Documentation

Building the documentation

When you clone the Manim repository from GitHub, you can access the docs/ folder which contains the necessary files to build the documentation.

To build the docs locally, open a CLI, enter the docs/ folder with the cd command and execute the following depending on your OS:

  • Windows: ./make.bat html

  • macOS and Linux: make html

The first time you build the docs, the process will take several minutes because it needs to generate all the .rst (reST: reStructured Text) files from scratch by reading and parsing all the Manim content. The process becomes much shorter the next time, as it rebuilds only the parts which have changed.

Sphinx library and extensions

Manim uses Sphinx for building the docs. It also makes use of Sphinx extensions such as:

  • Autodoc: imports Manim’s Python source code, extracts its docstrings and generates documentation from them.

  • Autosummary: a complement to Autodoc which adds a special directive autosummary, used in Manim to automatically document classes, methods, attributes, functions, module-level variables and exceptions. Autosummary makes use of Jinja templates, which Manim defines for autosummarizing classes and modules inside docs/source/_templates/.

  • Graphviz extension for Sphinx: embeds graphs generated by the Graphviz module, which must be installed in order to render the inheritance diagrams in the Reference Manual.

  • Napoleon: enables Sphinx to read Google style docstrings and, in particular for Manim, NumPy style docstrings - see Adding Docstrings for more information.

Sphinx theme

The theme used for this website is Furo.

Custom Sphinx directives

Manim implements custom directives for use with Autodoc and Autosummary, which are defined in docbuild:

autoaliasattr_directive

A directive for documenting type aliases and other module-level attributes.

autocolor_directive

A directive for documenting colors in Manim.

manim_directive

A directive for including Manim videos in a Sphinx document

Index