2011-01-20 43 views
49

如何设置reStructuredText中指定链接的文本格式?在reStructuredText链接中设置文本格式

具体来说,我想从我的第一个生成以下HTML:

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

结果应该是这样的:

optparse.OptionParser documentation

其中“optparse.OptionParser “部分是固定宽度的字体。

我试图

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

然而,这给了

<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;`_ 

它看起来像这样

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

回答

51

此构造:

Here you have |optparse.OptionParser|_. 

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

产生这个HTML(一些换行补充):

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

我知道这是不是正是你问什么,但也许这是足够接近。另见http://docutils.sourceforge.net/FAQ.html#is-nested-inline-markup-possible

.. role:: red 

然后你使用这样的:

+1

这真的很漂亮。我正在研究各种过度设计的解决方案,包括在我发现之前编写自定义扩展。 – 2015-11-19 15:57:49

+37

**这不太美丽。**这太可怕了。所有理智的标记语言都支持内联标记的无限嵌套,因为这是2016年。自1959年以来,无上下文解析已经得到了平凡解决。(_Chomsky:[“关于语法的某些形式特性。”](http://www.sciencedirect。 com/science/article/pii/S0019995859903626#)_)reStructuredText解析器无法执行真正的上下文无关解析是一个粗糙的丑陋的瑕疵,否则就是纯正的立面。定义良好且高度可扩展的reST语法应该更好。 (_Someone应该对此感觉不好。) – 2016-08-13 04:52:11

4

您是否试过intersphinx?使用该扩展名,下面的标记:

:py:class:`optparse.OptionParser` 

产生这个HTML:

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

测试与Python 2.6和狮身人面像1.0.5。

+1

啊,好吧,我不知道intersphinx。谢谢,很高兴知道。 “optparse”的链接实际上只是一个例子。我关心格式化文本到任何URI的链接,真的。 – gotgenes 2011-01-20 18:53:20

0

如果你想基本上是做得到的HTML/CSS相当于

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

使用Sphinx的reStructuredText的,你可以通过创建一个角色这样做:

:red:`This is red text` 

应该在李的结束只是一个刻度`以上。 你,当然,得有

.red { color: red } 
在你的CSS文件

3

从mzjn引用相同的FAQ页面以:

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> 

它在理论上应该可以做到与不能用RST来完成复杂的事情。