2012-03-08 15 views
5

Ecco un semplice frammento di turismo:reStructuredText che non rispettano le sottovoci

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 

ed ecco una dimostrazione di esso che è resa:

con la linea iniziale: http://rst.ninjs.org/?n=ff67380d732a33c7844f350c240804d0
senza linea iniziale: http://rst.ninjs.org/?n=550ea2c1b4233affdce1d158c5dc4d99

I Sto visualizzando reST usando il seguente Python:

from docutils.core import publish_parts 
parts = publish_parts(rest_content, writer_name="html") 
html_snippet = parts['html_body'] 

Come ottengo sottotitoli (in particolare, tag <h2>) senza la riga iniziale? Sono disponibili due livelli di gerarchia sopra i sottotitoli? Fornire in modo ingenuo un'intestazione di pagina non aiuta: http://rst.ninjs.org/?n=e874f6eaad17c8ae7fd565f9ecb2212b

risposta

8

Non promuovere il 1 ° titolo sul titolo del documento.

Annotare il settings_overrides param passato a publish_parts() nell'esempio seguente:

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) 

e l'uscita:

<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> 
+0

Fantastico, non sapevo di quell'impostazione, per non parlare del fatto che era attivo per impostazione predefinita. Molto apprezzato. –

0

A ReST non importa quale simbolo si usa per ogni livello, "=" è semplicemente una convenzione. Quindi se rimuovi il primo, allora vedrai "-" come denotando un h1. Non penso che ci sia un modo per aggirare questo purtroppo.

+0

Qualsiasi simbolo? Stai dicendo che la stringa 'cancellazione di questa linea' è trattata come un'intestazione? Altrimenti, perché rimuovere quella linea cambia il rendering dell'intestazione? –

+1

No, deve essere una serie di caratteri non alfanumerici, ad es. ===== o ~~~~~. Vedere i [documenti di ReST] (http://docutils.sourceforge.net/docs/user/rst/quickstart.html#sections) – aquavitae

1

Proprio avuto lo stesso problema. La soluzione accettata non ha funzionato per me. Tuttavia, ha fatto il seguente codice:

content = publish_parts(
    rest_content, 
    writer_name='html', 
    settings_overrides={'initial_header_level': 2}) 
html = content['html_body'] 
Problemi correlati