Skip to main content

Figure and figcaption generator markdown extension

Project description

yafg - Yet Another Figure Generator

yafg is yet another figure generator plugin for Python's Markdown. It's written and tested with Python 2.7 and Python 3.6 as well as Markdown 3.1.1, but aims at supporting as many versions as possible. If you encounter any problems with the given versions or find yourself using yafg without problems with any others, please give me a hint using the e-mail address listed below.

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.

  • figureClass (default: ""):

    The CSS class to add to the generated <figure /> element.

  • figcaptionClass (default: ""):

    The CSS class to add to the generated <figcaption /> element.

  • figureNumbering (default: False):

    Adds a figure number like "Figure 1:" in front of the caption. It's wrapped in a <span /> for easier styling.

  • figureNumberClass (default: ""):

    The CSS class to add to the <span /> element generated for the figure number.

  • figureNumberText (default: "Figure"):

    The text to show in front of the figure number. A final non-breaking space is inserted between the content of figureNumberText and the actual figure number.

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.

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

yafg-0.3.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

yafg-0.3-py2.py3-none-any.whl (18.9 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file yafg-0.3.tar.gz.

File metadata

  • Download URL: yafg-0.3.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.6.9

File hashes

Hashes for yafg-0.3.tar.gz
Algorithm Hash digest
SHA256 1fdc01f8169913a43daa520e90786027a497edc9ccc149aacdab1409e3b4d0c4
MD5 cf3c8d463aed998f5cea6a42ac4dd911
BLAKE2b-256 e255828d7210711349a40d9744bed3630902787db5b6c4b38d74852560ef9059

See more details on using hashes here.

File details

Details for the file yafg-0.3-py2.py3-none-any.whl.

File metadata

  • Download URL: yafg-0.3-py2.py3-none-any.whl
  • Upload date:
  • Size: 18.9 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.6.9

File hashes

Hashes for yafg-0.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 8f5c31a3f62f946b33aa9e1306017435ec2e43fe30b8109b7076eafc03f9ca8b
MD5 248192dcb2d2d141df86fcd83c5a057c
BLAKE2b-256 38aa427f208daf46348774f05c9c0b186f167a3a05ec258257c539db77284efa

See more details on using hashes here.

Supported by

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