这是一个简单的reST片段:
deleting this line causes all subheadings to be rendered as h1 tags
I should be an h1
=================
I should be an h2
-----------------
foo
I should also be an h2
----------------------
foo
以下是演示文稿的演示:
初始行:http://rst.ninjs.org/?n=ff67380d732a33c7844f350c240804d0
没有第一行:http://rst.ninjs.org/?n=550ea2c1b4233affdce1d158c5dc4d99
我正在使用以下Python渲染reST:
from docutils.core import publish_parts
parts = publish_parts(rest_content, writer_name="html")
html_snippet = parts['html_body']
如何在没有初始行的情况下获取子标题(特别是<h2>
标记)?是否在子标题上方提供了两级层次结构?天真地提供页眉无效:http://rst.ninjs.org/?n=e874f6eaad17c8ae7fd565f9ecb2212b
答案 0 :(得分:8)
不要将第一个标题提升为文档标题。
请注意下面示例中传递给 publish_parts()的 settings_overrides 参数:
rest_content = """
I should be an h1
=================
I should be an h2
-----------------
foo
I should also be an h2
----------------------
foo
"""
from docutils.core import publish_parts
parts = publish_parts(rest_content, writer_name="html",
settings_overrides={'doctitle_xform':False})
html_snippet = parts['html_body']
print(html_snippet)
输出:
<div class="document">
<div class="section" id="i-should-be-an-h1">
<h1>I should be an h1</h1>
<div class="section" id="i-should-be-an-h2">
<h2>I should be an h2</h2>
<p>foo</p>
</div>
<div class="section" id="i-should-also-be-an-h2">
<h2>I should also be an h2</h2>
<p>foo</p>
</div>
</div>
</div>
答案 1 :(得分:1)
刚遇到同样的问题。接受的解决方案对我不起作用。但是,以下代码确实:
content = publish_parts(
rest_content,
writer_name='html',
settings_overrides={'initial_header_level': 2})
html = content['html_body']
答案 2 :(得分:0)
ReST并不关心你为每个级别使用什么符号,“=”仅仅是一个约定。因此,如果您删除第一个,则会将“ - ”视为表示h1。不幸的是,我认为没有办法解决这个问题。