This extension to Python Markdown is inspired by the support for citations in R Markdown.
It looks for all citation keys with the form @<citekey>
inside matching square brackets and appends a bibliography to the output.
The references associated with the citation keys can be defined manually or generated from a BibTeX file.
Running
$ python setup.py build
$ python setup.py install
will install a module named mdx_bib
.
import markdown
from mdx_bib import CitationsExtension
cite = CitationsExtension(bibtex_file='library.bib', order='unsorted')
html = markdown.markdown(text, extensions=[cite])
Citation keys are any identifiers inside square brackets with a @
-prefix
Some claim [see @adams98].
Some claim [@adams98; @barney04].
The first line will be converted
<p>Some claim [see <a id="cite-adams98" href="#ref-adams98" class="citation>@adams98</a>.</p>
This extension will first look for any manually defined bibligraphy entries, for example
[@barney04]: Barneby, C.D. *A review of reviews*. Annual Reviews of Something (2104)
If a matching reference definition cannot be found, then the extension looks in the BibTeX file for a matching citation key.
- replace from
markdown.util import etree
withimport xml.etree.ElementTree as etree
per this Python-Markdown 3.2 changelog