Podświetlanie kodu wbudowanego w reStructuredText

130

Wiem, że reStructuredText ma tę dyrektywę:

.. code:: bash

    gedit pohl.m

który renderuje blok kodu. Czy jest jakiś sposób, aby uzyskać podświetlanie składni dla wstawionych fragmentów, takich jak ten:

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

Backticks oznaczają to jako kod, ale chciałbym to podkreślić pygementami, takimi jak blok. czy to możliwe?

Martin Ueding
źródło
7
Tylne znaczniki oznaczają tę część tekstu jako literał wbudowany , a nie jako blok kodu. Zwykle zostanie to opublikowane czcionką o stałej szerokości. Obawiam się, że nie jestem pewien, jak uzyskać wyróżnione fragmenty składni kodu wbudowanego.
Chris

Odpowiedzi:

209

Przyjrzawszy się temu więcej, natknąłem się na dokument reStructuredText Interpreted Text Roles . Z tego dokumentu:

W tekście interpretowanym wokół tekstu stosowane są cudzysłowy odwrotne (`). Jawny znacznik roli może opcjonalnie pojawić się przed lub po tekście, rozdzielony dwukropkami. Na przykład:

This is `interpreted text` using the default role.

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

Wygląda na to, że jest coderola , więc możesz po prostu wpisać

:code:`a = b + c`

renderować wbudowany blok kodu. Aby uzyskać podświetlanie składni, możesz zdefiniować rolę niestandardową. Na przykład

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

którego możesz następnie użyć w ten sposób:

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

Zwróć uwagę, że definicja roli musi zostać umieszczona przed odniesieniami do roli.

Należy zauważyć, że dokument, do którego odsyłam, nie wspomina o wersji docutils, do której się odnosi. Rola kodu nie jest dostępna w docutils 0.8.1 (jest to jedyna wersja, dla której muszę testować).

Chris
źródło
4
zwróć uwagę na ten problem podczas korzystania ze sphinx: stackoverflow.com/questions/21591107/ ...
Donatello