Skip to main content

mkdocs-revealjs

Embed Reveal.js presentations — written in Markdown — directly inside your MkDocs site, with full light / dark theme support.

PyPI License: GPLv3+

Documentation & live demo → https://rod2ik.gitlab.io/mkdocs-revealjs/


What it does

  • Write slides in plain Markdown inside any MkDocs page
  • Presentations render as embedded Reveal.js decks — no separate site needed
  • Horizontal and vertical slide navigation
  • Light / dark themes swap automatically when the MkDocs Material colour scheme toggles — no page reload
  • Three independent theming scopes: Reveal.js visual theme, Highlight.js code theme, Mermaid diagram theme
  • Mermaid diagrams with per-scheme themes (opt-in)
  • Auto-animate code transitions with a simple fence annotation
  • Automatic runtime compatibility with mkdocs-maths-admonitions after slide creation
  • TikZJax compatibility in ordinary slides, admonitions, collapsible details and Material content tabs
  • Fragments, speaker notes, fullscreen, keyboard shortcuts
  • Per-page overrides for every option
  • Import slides from a separate .md file

Quick start

Install

pip install mkdocs-revealjs

Enable in mkdocs.yml

plugins:
  - search
  - revealjs:
      transition: slide
      controls: true

Write a presentation page

---
revealjs:
  presentation: true
---

## Slide 1

Hello world!

---

## Slide 2

- Point A
- Point B

Note: Speaker notes — press **S** to open speaker view.

That page now renders as an embedded Reveal.js presentation. Press F for fullscreen, O for overview, S for speaker view.


Slide syntax

Horizontal separator  →  blank line + --- + blank line
Vertical separator    →  blank line + ---- + blank line
Speaker notes         →  Note: at start of line
End of presentation   →  blank line + ===== + blank line

Content after ===== is rendered as normal MkDocs page content below the presentation (useful for page titles, summaries, etc.).


Theming

Each of the three scopes (theme, highlight, mermaid) supports a three-layer pipeline per scheme:

starter  →  hack (inline CSS overrides)  →  custom (CSS file)
plugins:
  - revealjs:
      theme:
        light: solarized
        dark:  dracula
      highlight:
        light: github
        dark:  github-dark
      mermaid:
        activate: true
        light: sky      # bundled custom theme
        dark:  fire     # bundled custom theme

Custom Mermaid themes

The plugin ships two ready-made Mermaid themes (sky and fire) and auto-discovers any additional theme you add: just drop a file named mermaid-theme-NAME.js into mkdocs_revealjs/themes/ and use NAME in your config. No Python editing required.

Full theming reference → https://rod2ik.gitlab.io/mkdocs-revealjs/documentation/theming/


Mermaid diagrams

mermaid:
  activate: true
  light: sky
  dark:  fire
<div class="mermaid">
flowchart LR
    A[Client] --> B[API] --> C[Database]
</div>

Diagrams re-render on every slide change and on every scheme switch.

Full Mermaid reference → https://rod2ik.gitlab.io/mkdocs-revealjs/documentation/mermaid/


Repository layout

mkdocs-revealjs/
├── src/
│   ├── mkdocs_revealjs/          # Python plugin and packaged assets
│   └── frontend/                 # SCSS sources compiled by Vite
├── site/                         # MkDocs documentation source
├── tests/
├── scripts/
├── dist/                         # generated wheel and source distribution
├── public/                       # generated GitLab Pages artifact
├── package.json                  # sole version source of truth
├── pyproject.toml
└── vite.config.mjs

Documentation

The full documentation lives at https://rod2ik.gitlab.io/mkdocs-revealjs/ and covers:


Development

git clone https://gitlab.com/rod2ik/mkdocs-revealjs
cd mkdocs-revealjs
corepack enable
yarn install
yarn dev

To test the development site from a phone on the same local network:

yarn dev:lan

Then open http://<computer-LAN-IP>:8000/ on the phone. The regular yarn dev command remains bound to localhost.

Main workflow commands:

yarn build
yarn build:full
yarn build:full:check
yarn bfc
yarn zip

package.json is the only version source of truth. The generated Python __version__ file and the documentation token __REVEALJS_VERSION__ are synchronized automatically by the build.


License

GNU GPLv3 or later — see LICENSE.

Dynamic MkDocs content inside Reveal.js

Rich MkDocs fragments such as admonitions and content tabs are transported as opaque HTML islands and hydrated only after Reveal.js has initialized. This prevents Reveal's Markdown parser from changing radio groups, labels, nested HTML, executable source blocks or third-party widget markup.

Browser libraries can integrate through the public lifecycle API:

window.MkDocsRevealJS.registerContentAdapter("my-plugin", {
  refresh(root, context) {
    window.MyPlugin?.refresh?.(root, context)
  }
})

See site/docs/documentation/content-lifecycle.md for events and the build-time REVEALJS_MANAGED_PATTERNS compatibility contract.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mkdocs_revealjs-0.9.4.tar.gz (56.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mkdocs_revealjs-0.9.4-py3-none-any.whl (47.6 kB view details)

Uploaded Python 3

File details

Details for the file mkdocs_revealjs-0.9.4.tar.gz.

File metadata

  • Download URL: mkdocs_revealjs-0.9.4.tar.gz
  • Upload date:
  • Size: 56.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.14.6

File hashes

Hashes for mkdocs_revealjs-0.9.4.tar.gz
Algorithm Hash digest
SHA256 e2d1761b6c9711ca98e219fb267fcb96b8aee08724f9d0eaab43466a9a87674a
MD5 4748880a2308e3be88188386b3f85f06
BLAKE2b-256 c0d8e2d04b189676f4ffe65e6217cd7ac3ac43ec561e8158f710989a0e13c6fe

See more details on using hashes here.

File details

Details for the file mkdocs_revealjs-0.9.4-py3-none-any.whl.

File metadata

File hashes

Hashes for mkdocs_revealjs-0.9.4-py3-none-any.whl
Algorithm Hash digest
SHA256 33b86a3e27288d87f89181d500003b39127a9032e44f2e63d86e991399cdf9b1
MD5 7242c68095ebca23d5a2c0377f8fecc8
BLAKE2b-256 d821dbc621498d3b9ffc5ca67f85cc4edf4539444a4f4b21f5a7bee3cb1e84a2

See more details on using hashes here.

Release history Release notifications | RSS feed

0.11.4

2 files

0.11.2

2 files

0.11.1

2 files

0.11.0

2 files

0.10.10

2 files

0.10.8

2 files

0.10.7

2 files

0.10.6

2 files

0.10.5

2 files

0.10.1

2 files

0.10.0

2 files

0.9.7

2 files

0.9.6

2 files

0.9.5

2 files

This release

0.9.4 This release

2 files

0.9.3

2 files

0.9.1

2 files

0.9.0

2 files

0.8.9

2 files

0.8.8

2 files

0.8.7

2 files

0.8.6

2 files

0.8.5

2 files

0.8.4

2 files

0.8.3

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.0

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

1 file

0.0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page