2011-01-20 43 views
49

Làm cách nào để định dạng văn bản trong liên kết được biểu thị trong reStructuredText?Định dạng văn bản trong liên kết trong reStructuredText

Cụ thể, tôi muốn tạo ra mã HTML sau đây từ đầu tiên của tôi:

<a href="http://docs.python.org/library/optparse.html"><tt>optparse.OptionParser</tt> documentation documentation</a> 

Kết quả sẽ giống như thế này:

optparse.OptionParser documentation

nơi "optparse.OptionParser "phần nằm trong phông chữ có chiều rộng cố định.

tôi đã cố gắng

```optparse.OptionParser`` <http://docs.python.org/library/optparse.html>`_ 

Tuy nhiên, điều này đã

<tt class="docutils literal">`optparse.OptionParser</tt> documentation &lt;<a class="reference external" href="http://docs.python.org/library/optparse.html">http://docs.python.org/library/optparse.html</a>&gt;`_ 

mà trông như thế này

'' optparse.OptionParser documentation <http://docs.python.org/library/optparse.html>\ _

Trả lời

51

cấu trúc này:

Here you have |optparse.OptionParser|_. 

.. |optparse.OptionParser| replace:: ``optparse.OptionParser`` documentation 
.. _optparse.OptionParser: http://docs.python.org/library/optparse.html 

tạo HTML này (một số xuống hàng gia tăng):

<p>Here you have 
    <a class="reference external" href="http://docs.python.org/library/optparse.html"> 
    <tt class="docutils literal"><span class="pre">optparse.OptionParser</span></tt> documentation</a>. 
</p> 

Tôi nhận ra rằng đây không phải chính xác gì bạn yêu cầu là, nhưng có lẽ nó đủ gần. Xem thêm http://docutils.sourceforge.net/FAQ.html#is-nested-inline-markup-possible.

+1

Điều này thực sự đẹp. Tôi đã xem xét tất cả các loại giải pháp được thiết kế kỹ lưỡng, bao gồm viết các tiện ích mở rộng tùy chỉnh trước khi tôi tìm thấy điều này. –

+37

** Đây là _not_ thực sự đẹp. ** Điều này thật khủng khiếp. Tất cả các ngôn ngữ đánh dấu bằng sane đều hỗ trợ việc đánh dấu nội tuyến vô hạn định, vì đây là năm 2016. Phân tích cú pháp theo ngữ cảnh đã được giải quyết một cách trivially kể từ năm 1959. (_Chomsky: ["Về các đặc tính chính thức của ngữ pháp."] (Http: //www.sciencedirect. com/science/article/pii/S0019995859903626 #) _) Sự không có khả năng của trình phân tích cú pháp reStructuredText để thực hiện phân tích cú pháp không phải bối cảnh chính hãng là một nhược điểm xấu xí, xấu xí trên mặt tiền mặt khác. Cú pháp được xác định và mở rộng của reST xứng đáng tốt hơn. (_Một người nào đó sẽ cảm thấy xấu về điều này._) –

4

Bạn đã thử intersphinx chưa? Sử dụng phần mở rộng đó, đánh dấu sau:

:py:class:`optparse.OptionParser` 

tạo HTML này:

<a class="reference external" href="http://docs.python.org/2.6/library/optparse.html#optparse.OptionParser" title="(in Python v2.6)"><tt class="xref py py-class docutils literal"><span class="pre">optparse.OptionParser</span></tt></a> 

Thử nghiệm với Python 2.6 và Sphinx 1.0.5.

+1

Ah, vâng, tôi không biết về intersphinx. Cảm ơn, rất tốt để biết. Liên kết tới 'optparse' thực ra chỉ là một ví dụ. Tôi thực sự quan tâm đến việc định dạng văn bản trong một liên kết đến bất kỳ URI nào. – gotgenes

0

Nếu bạn muốn về cơ bản làm được HTML/CSS tương đương với

<span class="red">This is red text</span> 

trong reStructuredText sử dụng Sphinx, bạn có thể làm điều này bằng cách tạo ra một vai trò:

.. role:: red 

Sau đó, bạn sử dụng nó như thế này :

:red:`This is red text` 

Chỉ nên có một dấu tick ` ở cuối của li ne ở trên. Bạn, tất nhiên, phải có

.red { color: red } 

trong tệp CSS của bạn.

3

Lấy từ trang FAQ cùng tham chiếu bởi mzjn:

The "raw" directive can be used to insert raw HTML into HTML output: 

Here is some |stuff|. 

.. |stuff| raw:: html 

    <em>emphasized text containing a 
    <a href="http://example.org">hyperlink</a> and 
    <tt>inline literals</tt></em> 

Nó nên về mặt lý thuyết có thể làm những điều phức tạp với điều đó mà không thể được thực hiện với RST.

+0

tác phẩm này, nhưng nó cũng phá vỡ các nhà văn khác (LaTeX, PDF, v.v.) –

Các vấn đề liên quan