Skip to content

A thin sphinx theme to customize pydata-sphinx-theme consistently cross Matplotlib projects.

License

Notifications You must be signed in to change notification settings

matplotlib/mpl-sphinx-theme

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3d40411 · Mar 22, 2025
Jan 5, 2023
Mar 3, 2025
Mar 21, 2025
Mar 21, 2025
Apr 19, 2023
Dec 19, 2022
Oct 20, 2021
Apr 6, 2023
Feb 18, 2024
Mar 21, 2025

Repository files navigation

Matplotlib Sphinx Theme

This is the official Sphinx theme for Matplotlib documentation. It extends the pydata-sphinx-theme project, but adds custom styling and a navigation bar.

A demo of the theme built with the main branch can be seen at https://matplotlib.org/mpl-sphinx-theme/.

When creating a Matplotlib subproject you can include this theme by changing this line in your conf.py file

html_theme = 'mpl_sphinx_theme'

And by including mpl_sphinx_theme as a requirement in your documentation installation.

See the docs/conf.py file for other settings.

There are two main templates that replace the defaults in pydata-sphinx-theme:

navbar_center = mpl_nav_bar.html
navbar_end = mpl_icon_links.html

Note that the logo options need not be specified as they are included in theme initialization. The logo is stored at mpl_sphinx_theme/static/logo_{light,dark}.svg.

To change the top navbar, edit mpl_sphinx_theme/mpl_nav_bar.html

To change the social icons, edit mpl_sphinx_theme/mpl_icon_links.html

To change the style, edit mpl_sphinx_theme/static/css/style.css

Overriding hard coded elements

This theme is primarily designed to be used with subprojects that are part of the main Matplotlib webiste (e.g., [our cheatseets](https://github.com/matplotlib/cheatsheets] and [list of third-party packages](https://github.com/matplotlib/mpl-third-party)). As such several elements are hard coded. However, the theme may also be used by other subprojects that need to change the hard-coded defaults. The following sections explain how to reset these back to their defaults by modifying html_theme_options in conf.py.

Header section links

Use a copy of [the default pydata-sphinx-theme navbar](https://github.com/pydata/pydata-sphinx-theme/blob/main/src/pydata_sphinx_theme/theme/pydata_sphinx_theme/components/navbar-nav.html) and set the 'navbar_center' key to this HTML file in html_theme_options.

Building

To build the theme with a sample page, navigate into the doc/ directory and run

make html

The built html pages can be found in doc/_build/html/

Releasing

This project uses GitHub Actions to automatically push a new release to PyPI whenever a release is made.

For example, to release a new 3.9.0 version of mpl-sphinx-theme:

  • be sure to edit mpl_sphinx_theme/_version.py
  • checkout the commit you would like to release
  • add a git tag
  • push the tag to the matplotlib/mpl-sphinx-theme repository
$ git checkout <commit-hash>
$ git tag -s -a v3.9.0 -m 'REL: 3.9.0'
$ git push upstream --tags

Finally, turn the tag into a GitHub release.

Update the required mpl-sphinx-theme version in the following files:

  • matplotlib/matplotlib: requirements/doc/doc-requirements.txt
  • matplotlib/mpl-brochure-site: requirements.txt
  • matplotlib/mpl-third-party: docs/requirements.txt
  • matplotlib/governance: requirements-doc.txt
  • matplotlib/mpl-gui: requirements-doc.txt

About

A thin sphinx theme to customize pydata-sphinx-theme consistently cross Matplotlib projects.

Resources

License

Stars

Watchers

Forks

Packages

No packages published