Skip to main content

yafg - Yet Another Figure Generator

yafg is yet another figure generator plugin for Python's Markdown and its HTML output path. It's currently written and only tested with Python 2.7 and Markdown 3.1, but aims at supporting as many versions as possible.

It uses the title attribute given to an image within Markdown to generate a <figure> environment with a <figcaption> containing the title's text, e.g.:

![Alt text](/path/to/image.png "This is the title of the image.")

becomes

<figure>
<img alt="Alt text" src="/path/to/image.png" title="This is the title of the image." />
<figcaption>This is the title of the image.</figcaption>
</figure>

How?

Install

yafg can be installed via PyPI using:

pip install yafg

Standard Usage

When parsing your input, you can add yafg to Markdown as follows:

import yafg

# ...

outputString = markdown.markdown(inputString, extensions = [yafg.YafgExtension(stripTitle=False)])

Pelican

Pelican users can add yafg to their generator process by adding it to the MARKDOWN variable in the pelicanconf.py as follows:

MARKDOWN = {
    'extensions_configs': {
        'yafg': {
            'stripTitle': 'False',
        },
    },
}

Options

Currently supported options are listed below:

  • stripTitle (default: False):

    Removes the original title attribute from the <img /> element. Since its usage is discouraged anyways (see below), this may be an option worth considering.

Why?

yafg arose from the dissatisfaction with the existing solutions, namely:

  • markdown_captions which uses the alt attribute for the <figcaption>.
  • markdown-figcap which uses a cryptic syntax that doesn't integrate well into Markdown, IMHO.
  • figureAltCaption which cannot handle multi-line descriptions and uses the alt attribute for the <figcaption>.

Using the alt attribute to fill the <figcaption> is not correct, because as the standard states

[...] the alternative text is a replacement for the image, not a description [...]

for the most common case of a text accompanied by an augmenting image. It should be used for an exact reproduction of what can be seen on the image for those who cannot see it, for example because they're blind or their internet connection is too slow. A figure's caption in turn should provide a description helping to understand the content of the image.

The title attribute on the other hand should contain "[a]dvisory information associated with the element (W3C Core Attribute List). This is rather vague and often used by browser vendors to show tooltips containing the title. Since tooltips are highly problematic for a11y reasons and the browser support varies, "[r]elying on the title attribute is currently discouraged" (HTML Living Standard). This makes it an ideal candidate to store the wanted figcaption inside of the standard Markdown syntax.

Author

yafg has been written by:

License

yafg has been published under a GPL 3.0 or later license. See the LICENSE file for more information.

Metadata

Release files for yafg 0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for yafg 0.1
File Size Uploaded
yafg-0.1.tar.gz 4.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for yafg 0.1
File Interpreter ABI Platform
yafg-0.1-py2-none-any.whl Python 2 none any Details

Total release size: 22.0 kB

Release files / yafg-0.1.tar.gz

Download URL yafg-0.1.tar.gz
Size 4.4 kB
Tags Source
SHA-256 checksum
How to use checksums
56d5015d66ca5e7b146e295ebaaddf13d7c9c6e80f660c4fa0412711adf9faf2
BLAKE2b-256 checksum
How to use checksums
f06e2b4297e5199cafd401cac18b2f425121550fa880aa59d290e33b40f7ab76
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.14.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/2.7.15+

Release files / yafg-0.1-py2-none-any.whl

Download URL yafg-0.1-py2-none-any.whl
Size 17.6 kB
Tags Python 2
SHA-256 checksum
How to use checksums
28f2ffb383f3f9148497fc46d48c19ed1952fdb92299d02d89d276b940763c35
BLAKE2b-256 checksum
How to use checksums
e083867f05ac03686a57611d133c9378f149c203b3f910df43a4fa916a2ff297
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.14.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/2.7.15+

Release history Release notifications | RSS feed

0.4

2 release files

0.3

2 release files

0.2

2 release files

This release

0.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page