I was wondering how to generate permalinks from the following markup, using python markdown library:
A header
========
A paragraph
The desired output would be something like
<span id="a-header"></span>
<h1>
A header
<a class="headerlink" title="Permalink to this headline" href="#a-header">¶</a>
</h1>
<p>A paragraph</p>
Answer:
Thanks @BlaXpirit (see answer)
Use headerid python markdown extension and input the following:
# A header [¶](#a-header) {#a-header}
A paragraph
This generates the following output:
<h1 id="a-header">
A header
<a href="#a-header">¶</a>
</h1>
Then use some css styling to get the common output, something like :
h1 a{visibility:hidden;}
h1:hover a{visibility:visible;}
Markdown in Python has an extension that does this.
It also lets you specify an id you like for the header, like this:
A header {#a-header} ========
You can generate permalinks with the Table of Contents extension for Python-Markdown. The Python-Markdown documentation notes that when possible it is preferable to pass an instance of an extension rather than a string.
import markdown
from markdown.extensions.toc import TocExtension
markup = """
A header
========
A paragraph
"""
html = markdown.markdown(markup, extensions=[TocExtension(permalink=True)])
print(html)
configs = {'toc': {'permalink': True}}
html = markdown.markdown(markup, extensions=['toc'], extension_configs=configs)
print(html)
An answer to a different question shows how you can change the paragraph symbol by setting the permalink option to a string.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With