在reStructuredText中的链接中设置文本格式


81

如何格式化reStructuredText中指定链接内的文本?

具体来说,我希望从我的第一个脚本中生成以下HTML:

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

结果应如下所示:

optparse.OptionParser 文件资料

其中“ 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>\_

Answers:


93

此构造:

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


2
真的好漂亮 我一直在研究各种过度设计的解决方案,包括在发现之前编写自定义扩展。
疯狂物理学家

91
不是真的很美。这太可怕了。所有理智的标记语言支持嵌入标记的不确定嵌套,因为这是2016年免费上下文分析了自1959年以来一直平凡解决(乔姆斯基:“在语法的某种形式的性质”)的新结构化分析器的不能履行真正的上下文免费解析是在本来就很纯正的外墙上产生的粗俗,丑陋的瑕疵。reST的定义明确且高度可扩展的语法值得更好地使用。(对此,应该感到难过。
塞西尔·库里

1
FAQ条目中的“ details here”链接很有趣……尤其是“如果明确,则可以嵌套其他形式的内联标记”;我不知道这是否会发生的唯一方法是,如果有人只是花一点时间制造一个处理明确情况的补丁集,然后这种RST的“稍微超规格”的味道就变得司空见惯,以至于一切都从此滚雪球(或者至少如果不是这样,我们将立即为明确的案例提供良好的支持)
JamesTheAwesomeDude

请注意,这仅适用于超链接,而不适用于文档内链接(如:ref:
Jason S

6

您是否尝试过狮身人面像?使用该扩展名,以下标记:

: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和Sphinx 1.0.5的测试。


1
嗯,嗯,我不了解狮身人面像。谢谢,很高兴知道。链接optparse实际上仅是示例。我确实关心格式化指向任何URI的链接中的文本。
gotgenes

4

取自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无法完成的复杂事情。


1
这行得通,但同时也打破了其他作者(LaTeX,PDF等)的
Jason S

0

如果您实际上想获得等效于HTML / CSS的

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

在使用Sphinx的reStructuredText中,您可以通过创建角色来做​​到这一点:

.. role:: red

然后像这样使用它:

:red:`This is red text`

`上一行的末尾应该只有一个刻度线。您当然必须

.red { color: red }

在您的CSS文件中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.