Mise en évidence du code en ligne dans reStructuredText

130

Je sais que reStructuredText a cette directive:

.. code:: bash

    gedit pohl.m

qui rend un bloc de code. Existe-t-il un moyen d'obtenir la coloration syntaxique des extraits de code en ligne comme celui-ci:

Do edit the file, type ``gedit pohl.m`` into a terminal.

Les backticks le marquent comme du code, mais j'aimerais le mettre en évidence avec des pygments comme le bloc. Est-ce possible?

Martin Ueding
la source
7
Les backticks marquent cette partie du texte comme un littéral en ligne , pas comme un bloc de code. En règle générale, cela sera simplement publié dans une police monospace. Je ne sais pas comment obtenir des extraits de code en surbrillance de la syntaxe du code en ligne, j'en ai peur.
Chris

Réponses:

209

Après avoir examiné cela un peu plus, je suis tombé sur le document Rôles de texte interprété reStructuredText . À partir de ce document:

Le texte interprété utilise des guillemets (`) autour du texte. Un marqueur de rôle explicite peut éventuellement apparaître avant ou après le texte, délimité par des deux-points. Par exemple:

This is `interpreted text` using the default role.

This is :title:`interpreted text` using an explicit role.

Il semble qu'il y ait un coderôle , vous pouvez donc simplement taper

:code:`a = b + c`

pour rendre un bloc de code en ligne. Pour obtenir la coloration syntaxique, vous pouvez définir un rôle personnalisé. Par exemple

.. role:: bash(code)
   :language: bash

que vous pouvez ensuite utiliser comme ceci:

Here is some awesome bash code :bash:`a = b + c`.

Notez que la définition de rôle doit être placée avant les références au rôle.

Notez que le document auquel je renvoie ne fait aucune mention de la version de docutils à laquelle il se réfère. Le rôle de code n'est pas disponible dans docutils 0.8.1 (qui est la seule version contre laquelle je dois tester).

Chris
la source
4
veuillez noter ce problème lors de l'utilisation de sphinx: stackoverflow.com/questions/21591107/…
Donatello