table
tables: Tables using the same format as GFM https://help.github.com/articles/github-flavored-markdown#tables and PHP-Markdown Extra https://michelf.ca/projects/php-markdown/extra/#table.
之前代码里的表格一致无法正常工作,查了一下代码发现表格有专门的配置选项,它会检查配置里是否定义了tables
这个参数
def _run_block_gamut(self, text):
......
if "pyshell" in self.extras:
text = self._prepare_pyshell_blocks(text)
if "wiki-tables" in self.extras:
text = self._do_wiki_tables(text)
if "tables" in self.extras:
text = self._do_tables(text)
所以增加配置
"extras": {
"code-friendly": None,
"pyshell": None,
"demote-headers": 3,
"link-patterns": None,
# `class` attribute put on `pre` tags to enable using
# <http://code.google.com/p/google-code-prettify/> for syntax
# highlighting.
"html-classes": {"pre": "prettyprint"},
"cuddled-lists": None,
"footnotes": None,
"header-ids": None,
# "fenced-code-blocks" : {'cssclass': 'mycodehilite', "prestyles":"background-color: #d2dee8;"},
"fenced-code-blocks" : {'cssclass': 'mycodehilite',},
"tables": None,
},
生成的表格很丑,没有任何的css,回头仔细查代码看一下是否可配
header
生成的标题总是从3开始的,这样顶多能支持三级,因为最多能到h6.
这个可以通过在配置文件修改偏移demote-headers
来减少。
代码如下
"extras": {
"header-ids": None, # show id for header
"demote-headers": 2, # (origin 3), # starting from 3
# "tag-friendly" : None, # for header
},
header-ids
和tag-friendly
也是两个与header相关的配置
源代码如下
def _do_headers(self, text):
# Setext-style headers:
# Header 1
# ========
#
# Header 2
# --------
# atx-style headers:
# # Header 1
# ## Header 2
# ## Header 2 with closing hashes ##
# ...
# ###### Header 6
if 'tag-friendly' in self.extras:
return self._h_re_tag_friendly.sub(self._h_sub, text)
return self._h_re.sub(self._h_sub, text)
子函数中完成了对demote-header和header-ids等的处理
_h_re = re.compile(_h_re_base % '*', re.X | re.M)
_h_re_tag_friendly = re.compile(_h_re_base % '+', re.X | re.M)
def _h_sub(self, match):
if match.group(1) is not None:
# Setext header
n = {"=": 1, "-": 2}[match.group(3)[0]]
header_group = match.group(2)
else:
# atx header
n = len(match.group(5))
header_group = match.group(6)
demote_headers = self.extras.get("demote-headers")
if demote_headers:
n = min(n + demote_headers, 6)
header_id_attr = ""
if "header-ids" in self.extras:
header_id = self.header_id_from_text(header_group,
self.extras["header-ids"], n)
if header_id:
header_id_attr = ' id="%s"' % header_id
html = self._run_span_gamut(header_group)
if "toc" in self.extras and header_id:
self._toc_add_entry(n, header_id, html)
return "<h%d%s>%s</h%d>\n\n" % (n, header_id_attr, html, n)