Sphinx代码块中的替换

时间:2012-01-11 15:05:49

标签: python python-sphinx restructuredtext

在这个reST示例中,意图由Sphinx呈现,| yaco_url |没有被替换,因为它在代码块中:

.. |yaco_url| replace:: http://yaco.es/

You can use wget to download it:

.. code-block:: console

    $ wget |yaco_url|package.tar.gz

我想知道是否有某种方法可以强制更换| yaco_url |在渲染代码块之前。

2 个答案:

答案 0 :(得分:23)

使用“parsed-literal”指令。

.. parsed-literal::

    ./home/user/somecommand-|version|

来源:https://groups.google.com/forum/?fromgroups=#!topic/sphinx-dev/ABzaUiCfO_8

答案 1 :(得分:0)

找到了一个更好的解决方案(在我看来),该解决方案可以在:samp:之类的其他指令中使用,并且可能对将来的读者有用。

config.py:

def ultimateReplace(app, docname, source):
    result = source[0]
    for key in app.config.ultimate_replacements:
        result = result.replace(key, app.config.ultimate_replacements[key])
    source[0] = result

ultimate_replacements = {
    "{TEST}" : "replaced"
}

def setup(app):
   app.add_config_value('ultimate_replacements', {}, True)
   app.connect('source-read', ultimateReplace)

这种标记:

.. http:get:: testing/replacement/{TEST}

正确生成如下:

testing/replacement/replaced

请注意,如果使用它替换:samp:指令中的参数,则必须使用双括号{

:samp:`func({{TEST}})`.

来源:https://github.com/sphinx-doc/sphinx/issues/4054