Resaltado de código en línea en reStructuredText

130

Sé que reStructuredText tiene esta directiva:

.. code:: bash

    gedit pohl.m

que representa un bloque de código. ¿Hay alguna forma de obtener resaltado de sintaxis para fragmentos en línea como este:

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

Los backticks lo marcan como código, pero me gustaría resaltarlo con pigmentos como el bloque. es posible?

Martin Ueding
fuente
77
Los backticks marcan esa parte del texto como un literal en línea , no como un bloque de código. Por lo general, esto solo se publicará en una fuente monoespacial. No estoy seguro de cómo obtener fragmentos resaltados de sintaxis de código en línea, me temo.
Chris

Respuestas:

209

Después de analizar esto un poco más, me topé con el documento reStructuredText Interpreted Text Roles . De este documento:

El texto interpretado usa comillas inversas (`) alrededor del texto. Un marcador de función explícito puede aparecer opcionalmente antes o después del texto, delimitado con dos puntos. Por ejemplo:

This is `interpreted text` using the default role.

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

Parece que hay un coderol , por lo que simplemente puede escribir

:code:`a = b + c`

para representar un bloque de código en línea. Para obtener resaltado de sintaxis, puede definir un rol personalizado. Por ejemplo

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

que luego puedes usar así:

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

Tenga en cuenta que la definición del rol debe colocarse antes de las referencias al rol.

Tenga en cuenta que el documento que enlazo no menciona la versión de docutils a la que se refiere. El rol del código no está disponible en docutils 0.8.1 (que es la única versión con la que tengo que probar).

Chris
fuente
44
tenga en cuenta este problema cuando use sphinx: stackoverflow.com/questions/21591107/…
Donatello