3b1b/manim · error · NotImplementedError

Compiler '{compiler}' is not implemented

Error message

Compiler '{compiler}' is not implemented

What it means

Raised by full_tex_to_svg (tex_file_writing.py:99) when the compiler string is anything other than 'latex' or 'xelatex' — those two names determine the dvi extension ('.dvi' vs '.xdv'), and no other compiler is mapped. It is a NotImplementedError by design: only the DVI-producing pipelines are wired up.

Source

Thrown at manimlib/utils/tex_file_writing.py:99

    compiler, preamble = get_tex_config(template)

    preamble = "\n".join([preamble, additional_preamble])
    full_tex = get_full_tex(latex, preamble)
    return full_tex_to_svg(full_tex, compiler, message)


@cache_on_disk
def full_tex_to_svg(full_tex: str, compiler: str = "latex", message: str = ""):
    if message:
        print(message, end="\r")

    if compiler == "latex":
        dvi_ext = ".dvi"
    elif compiler == "xelatex":
        dvi_ext = ".xdv"
    else:
        raise NotImplementedError(f"Compiler '{compiler}' is not implemented")

    # Use the custom LaTeX cache directory from the config
    temp_dir = Path(manim_config.directories.latex_cache)
    temp_dir.mkdir(exist_ok=True)  # Create the directory if it does not already exist

    # Define paths for the intermediate TeX and DVI files
    tex_path = temp_dir / "working.tex"
    dvi_path = tex_path.with_suffix(dvi_ext)

    # Write tex file
    tex_path.write_text(full_tex)

    # Run latex compiler
    process = subprocess.run(
        [
            compiler,
            *(["-no-pdf"] if compiler == "xelatex" else []),
            "-interaction=batchmode",

View on GitHub (pinned to dee01804d4)

Solutions

  1. Use compiler='xelatex' (or 'latex'); for Unicode/CJK documents choose xelatex with appropriate fonts
  2. Check for typos/case in the config value; it must match exactly
  3. If you truly need another compiler, patch full_tex_to_svg to map it to a dvi-like extension — but prefer the supported pair

Example fix

# before
full_tex_to_svg(tex, compiler='pdflatex')  # raises NotImplementedError

# after
full_tex_to_svg(tex, compiler='xelatex')
Defensive patterns

Strategy: validation

Validate before calling

assert compiler in ('latex', 'xelatex'), \
    f"unsupported compiler '{compiler}': manimlib only implements 'latex' and 'xelatex'"

Prevention

When it happens

Trigger: Setting tex_compiler: 'pdflatex' or 'lualatex' in the manim config, or calling full_tex_to_svg(tex, compiler='pdflatex'). Passing 'latex' or 'xelatex' works; any other string (including case variants like 'LaTeX') raises.

Common situations: Users porting configs from manim-community (which supports pdflatex/lualatex) to manimlib; needing CJK/Unicode and trying compilers other than xelatex; typos or case mismatch in the config key.

Related errors


AI-assisted analysis of 3b1b/manim@dee01804d4 (2026-08-14). Data as JSON: /api/errors/ab913bd62842cc16. Report an issue: GitHub.