2012-03-08 35 views
5

Dưới đây là một đoạn còn lại đơn giản:phân nhóm reStructuredText không tôn trọng

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 

và đây là một cuộc biểu tình của nó được hiển thị:

với dòng đầu tiên: http://rst.ninjs.org/?n=ff67380d732a33c7844f350c240804d0
mà không cần dòng đầu tiên: http://rst.ninjs.org/?n=550ea2c1b4233affdce1d158c5dc4d99

tôi 're rendering reST bằng cách sử dụng Python sau đây:

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

Làm cách nào để nhận các tiêu đề phụ (cụ thể là <h2> thẻ) mà không có dòng đầu tiên? Có cung cấp hai mức phân cấp cao hơn các tiêu đề phụ không? Naively cung cấp tiêu đề trang không giúp được: http://rst.ninjs.org/?n=e874f6eaad17c8ae7fd565f9ecb2212b

Trả lời

8

Không quảng bá tiêu đề thứ nhất cho tiêu đề tài liệu.

Lưu ý settings_overrides param truyền cho publish_parts() trong ví dụ dưới đây:

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) 

Và kết quả:

<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

Tuyệt vời, tôi không biết về cài đặt đó, hãy để một mình rằng nó đã được bật theo mặc định. Nhiều đánh giá cao. –

0

ReST không quan tâm bạn sử dụng biểu tượng nào cho mỗi cấp, "=" chỉ là một quy ước. Vì vậy, nếu bạn loại bỏ cái đầu tiên thì nó sẽ thấy "-" như biểu thị một h1. Tôi không nghĩ rằng có một cách xung quanh điều này không may.

+0

Bất kỳ biểu tượng nào? Bạn đang nói rằng chuỗi 'xóa dòng này' được coi là một tiêu đề? Nếu không, tại sao loại bỏ dòng đó thay đổi tiêu đề hiển thị? –

+1

Không, nó phải là một chuỗi ký tự không phải chữ và số, ví dụ: ===== hoặc ~~~~~. Xem [ReST tài liệu] (http://docutils.sourceforge.net/docs/user/rst/quickstart.html#sections) – aquavitae

1

Chỉ cần có cùng một vấn đề. Các giải pháp được chấp nhận đã không làm việc cho tôi. Tuy nhiên, mã sau đây đã làm:

content = publish_parts(
    rest_content, 
    writer_name='html', 
    settings_overrides={'initial_header_level': 2}) 
html = content['html_body'] 
Các vấn đề liên quan