Render images occurring by itself in a paragraph as <figure><img ...></figure>
, similar to pandoc's implicit figures.
Example input:
text with ![](img.png)
![](fig.png)
works with links too:
[![](fig.png)](page.html)
Output:
<p>text with <img src="img.png" alt=""></p>
<figure><img src="fig.png" alt=""></figure>
<p>works with links too:</p>
<figure><a href="page.html"><img src="fig.png" alt=""></a></figure>
$ npm install --save markdown-it-implicit-figures
const md = require('markdown-it')();
const implicitFigures = require('markdown-it-implicit-figures');
md.use(implicitFigures, {
dataType: false, // <figure data-type="image">, default: false
figcaption: false, // <figcaption>alternative text</figcaption>, default: false
keepAlt: false // <img alt="alt text" .../><figcaption>alt text</figcaption>, default: false
lazyLoading: false, // <img loading="lazy" ...>, default: false
link: false // <a href="img.png"><img src="img.png"></a>, default: false
tabindex: false, // <figure tabindex="1+n">..., default: false
});
const src = 'text with ![](img.png)\n\n![](fig.png)\n\nanother paragraph';
const res = md.render(src);
console.log(res);
-
dataType
: SetdataType
totrue
to declare the data-type being wrapped, e.g.:<figure data-type="image">
. This can be useful for applying special styling for different kind of figures. -
figcaption
: Setfigcaption
totrue
oralt
to put the alternative text in a<figcaption>
-block after the image. E.g.:![text](img.png)
renders to<figure> <img src="img.png" alt=""> <figcaption>text</figcaption> </figure>
- Set
figcaption
totitle
to put the title text in a<figcaption>
-block after the image. E.g.:![text](img.png "title")
renders to<figure> <img src="img.png" alt="text"> <figcaption>title</figcaption> </figure>
- Set
-
keepAlt
: SetkeepAlt
totrue
to prevent it from being cleared when turned into afigcaption
, E.g.:![text](img.png)
renders to<figure> <img src="img.png" alt="text"> <figcaption>text</figcaption> </figure>
-
tabindex
: Settabindex
totrue
to add atabindex
property to each figure, beginning attabindex="1"
and incrementing for each figure encountered. Could be used with this css-trick, which expands figures upon mouse-over. -
lazyLoading
: SetlazyLoading
totrue
to addloading="lazy"
to image element. -
link
: Put a link around the image if there is none yet. -
copyAttrs
: Copy attributes matching (RegExp or string)copyAttrs
tofigure
element.
MIT © Arve Seljebu