开发者

Generate permalinks on header with python markdown library

开发者 https://www.devze.com 2023-02-24 19:39 出处:网络
I was wondering how to generate per开发者_开发问答malinks from the following markup, using python markdown library:

I was wondering how to generate per开发者_开发问答malinks 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.


Pandoc associates a unique identifier to each header based on the rule you imagined: the id is the downcase heading, spaces replace by hyphens. This is used to generate optional tables of contents for HTML and LaTeX and other output formats. In HTML it automatically makes linkable ids and in particular can be used for internal cross references; the markdown syntax is:

 See the section on [header identifiers](#header-identifiers-in-html).

as we read in the user's guide at http://johnmacfarlane.net/pandoc/README.html#header-identifiers-in-html

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号