2012-03-08 14 views
5

Aquí está un simple fragmento de ocio:subtítulos reStructuredText que no respeten

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 

y aquí es una demostración de que está representando:

con la línea inicial: http://rst.ninjs.org/?n=ff67380d732a33c7844f350c240804d0
sin línea inicial: http://rst.ninjs.org/?n=550ea2c1b4233affdce1d158c5dc4d99

I 'm render reST usando el siguiente Python:

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

¿Cómo obtengo subtítulos (específicamente, etiquetas <h2>) sin la línea inicial? ¿Han proporcionado dos niveles de jerarquía por encima de los subtítulos? Naively proporcionar un encabezado de página no ayuda: http://rst.ninjs.org/?n=e874f6eaad17c8ae7fd565f9ecb2212b

Respuesta

8

No promocione el 1er título del título del documento.

Nota del settings_overrides parámetro pasado a publish_parts() en el ejemplo siguiente:

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) 

y la salida:

<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

Fantástico, no sabía acerca de esa configuración, y mucho menos de que estuviera activada de manera predeterminada. Muy apreciado. –

0

A ReST no le importa qué símbolo utilice para cada nivel, "=" es simplemente una convención. Entonces, si quita el primero, entonces ve "-" como denotando un h1. No creo que haya una manera de eludir esto desafortunadamente.

+0

¿Algún símbolo en absoluto? ¿Estás diciendo que la cadena 'borrar esta línea' se trata como un encabezado? Si no, ¿por qué la eliminación de esa línea cambia la representación del título? –

+1

No, tiene que ser una serie de caracteres no alfanuméricos, p. ===== o ~~~~~. Consulte los [documentos ReST] (http://docutils.sourceforge.net/docs/user/rst/quickstart.html#sections) – aquavitae

1

Sólo tenían el mismo problema. La solución aceptada no funcionó para mí. Sin embargo, el siguiente código lo hizo:

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