Skip to main content

markdown-it-py plugin to convert image paragraphs to HTML figure elements

Project description

mdit-py-figure

PyPI version Python versions License

mdit-py-figure is a markdown-it-py plugin to parse markdown paragraphs that start with an image into HTML <figure> elements. One nice thing is it doesn't use any new markdown syntaxes.

Example markdown source:

![Picture of Oscar.](/path/to/cat.jpg)
Awesome caption about **Oscar** the kitty.

Render result:

<figure>
<img src="/path/to/cat.jpg" alt="Picture of Oscar." />
<figcaption>Awesome caption about <strong>Oscar</strong> the kitty.</figcaption>
</figure>

Multiple images are supported:

![Picture of Oscar.](/path/to/cat1.jpg)
![Picture of Luna.](/path/to/cat2.jpg)
Awesome captions about the **kitties**.
<figure>
<img src="/path/to/cat1.jpg" alt="Picture of Oscar.">
<img src="/path/to/cat2.jpg" alt="Picture of Luna.">
<figcaption>Awesome captions about the <strong>kitties</strong>.</figcaption>
</figure>

Why?

Using dedicated <figure> and <figcaption> elements makes styling images with descriptions much easier. Here is an example:

Example of an HTML figure with figcaption.

I hear they are also good for SEO.

Installation

pip install mdit-py-figure

Or with uv:

uv add mdit-py-figure

Usage

from markdown_it import MarkdownIt
from mdit_py_figure import figure_plugin

md = MarkdownIt().use(figure_plugin)

source = """
![Picture of Oscar.](/path/to/cat.jpg)
Awesome caption about **Oscar** the kitty.
"""

html = md.render(source)
print(html)

Option to add link to the image

Example:

md = MarkdownIt().use(figure_plugin, image_link=True)

Render result:

<figure>
<a href="/path/to/cat.jpg">
<img src="/path/to/cat.jpg" alt="Picture of Oscar." />
</a>
<figcaption>Awesome caption about <strong>Oscar</strong> the kitty.</figcaption>
</figure>

See tests/test_figure.py for more examples.

Option to skip images without captions

Example:

md = MarkdownIt().use(figure_plugin, skip_no_caption=True)

In case a link to an image doesn't have a caption (a line of text following it without any linebreaks in between), it won't be wrapped in a <figure>.

See test_skip_no_caption_option() in tests/test_figure.py for an example.

Changelog

See CHANGELOG.md.

LICENSE

Apache-2.0

Project details


Download files

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

Source Distribution

mdit_py_figure-1.1.0.tar.gz (3.1 MB view details)

Uploaded Source

Built Distribution

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

mdit_py_figure-1.1.0-py3-none-any.whl (9.1 kB view details)

Uploaded Python 3

File details

Details for the file mdit_py_figure-1.1.0.tar.gz.

File metadata

  • Download URL: mdit_py_figure-1.1.0.tar.gz
  • Upload date:
  • Size: 3.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mdit_py_figure-1.1.0.tar.gz
Algorithm Hash digest
SHA256 8acfd6ca4bfab1814e4bff184915661a5f3f3f00f33e7b85d8acd1fb47768205
MD5 dbd57178a7d7b72b42fa44bfafcc6a53
BLAKE2b-256 1760c357ce77dd642b9e0e9e549dd09ec8c5ef6e1d567a246ff3007bbed422f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdit_py_figure-1.1.0.tar.gz:

Publisher: pypi_upload.yml on mangoumbrella/mdit-py-figure

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mdit_py_figure-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: mdit_py_figure-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mdit_py_figure-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 561511d2042360bf6784af9f06361a454235bfaf39e8204c359de2a92383f85a
MD5 cda3d6ca53f8000178819140623795d7
BLAKE2b-256 e4a825a57270aa2c4f14076563b3f30693354753d526de579ca9c0a2e41d8d05

See more details on using hashes here.

Provenance

The following attestation bundles were made for mdit_py_figure-1.1.0-py3-none-any.whl:

Publisher: pypi_upload.yml on mangoumbrella/mdit-py-figure

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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