reStructuredText без учета подзаголовков - PullRequest
5 голосов
/ 08 марта 2012

Вот простой фрагмент 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

Я рендеринг reST с использованием следующего Python:

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

Ответы [ 3 ]

8 голосов
/ 08 марта 2012

Не рекламируйте первый заголовок в заголовке документа.

Обратите внимание на параметр settings_overrides , переданный publish_parts () в следующем примере:

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 голос
/ 29 октября 2015

Просто была такая же проблема. Принятое решение не сработало для меня. Тем не менее, следующий код сделал:

content = publish_parts(
    rest_content,
    writer_name='html',
    settings_overrides={'initial_header_level': 2})
html = content['html_body']
0 голосов
/ 08 марта 2012

ReST не волнует, какой символ вы используете для каждого уровня, "=" - это просто соглашение. Таким образом, если вы удалите первый, он увидит «-» как обозначение h1. Я не думаю, что есть способ обойти это, к сожалению.

...