A markdown-it.rs plugin to process footnotes.
It is based on the
pandoc definition <http://johnmacfarlane.net/pandoc/README.html#footnotes>
__:
```md Normal footnote:
Here is a footnote reference,[^1] and another.[^longnote]
Here is an inline note.^[my note is here!]
Subsequent paragraphs are indented to show that they
belong to the previous footnote. ```
See the tests for more examples.
To load the full plugin:
```rust let parser = &mut markdownit::MarkdownIt::new(); markdownit::plugins::cmark::add(parser);
markdownitfootnote::add(parser);
let ast = parser.parse("Example^[my note]"); let html = ast.render(); ```
Alternatively, you can load the separate components:
```rust let parser = &mut markdownit::MarkdownIt::new(); markdownit::plugins::cmark::add(parser);
markdownitfootnote::definitions::add(md); markdownitfootnote::references::add(md); markdownitfootnote::inline::add(md); markdownitfootnote::collect::add(md); markdownitfootnote::back_refs::add(md); ```
Which have the following roles:
definitions
: parse footnote definitions, e.g. [^1]: foo
references
: parse footnote references, e.g. [^1]
inline
: parse inline footnotes, e.g. ^[foo]
collect
: collect footnote definitions (removing duplicate/unreferenced ones) and move them to be the last child of the root node.back_refs
: add anchor(s) to footnote definitions, with links back to the reference(s)