Search code examples
pythonvariablesblockpython-sphinxsubstitution

Sphinx variable substitution in code blocks


Using Sphinx 1.2.3 and given this RST snippet:

.. code-block:: xml

    <foo>
        <bar>|version|</bar>
    </foo>

and in conf.py I have:

version = '1.0.2'

How do you ensure that the above RST snippet renders as:

<foo>
    <bar>1.0.2</bar>
</foo>

This previous question indicates that we should use .. parsed-literal:: instead of .. code-block::, but that does not work, nor does the referenced link in that question work either.

I also want to retain syntax highlighting.


Solution

  • You can get the wanted output by using backslash-escaped whitespace:

    .. parsed-literal::
    
      <foo>
           <bar>\ |release|\ </bar>
      </foo>
    

    Unfortunately it is not possible to also retain syntax highlighting (you can get that with the code-block directive of course, but then the substitution won't work).