Evidenziazione del codice incorporato in reStructuredText


130

So che reStructuredText ha questa direttiva:

.. code:: bash

    gedit pohl.m

che rende un blocco di codice. Esiste un modo per ottenere l'evidenziazione della sintassi per frammenti incorporati come questo:

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

I backtick lo segnano come codice, ma vorrei evidenziarlo con pigmenti come il blocco. È possibile?


7
I backtick contrassegnano quella parte del testo come un letterale in linea , non come un blocco di codice. In genere questo sarà pubblicato solo in un carattere monospace. Non sono sicuro di come ottenere i frammenti evidenziati della sintassi del codice in linea, temo.
Chris

Risposte:


209

Dopo aver esaminato questo argomento, mi sono imbattuto nel documento reStructuredText Interpreted Text Roles . Da questo documento:

Il testo interpretato utilizza backquotes (`) attorno al testo. Un marcatore di ruolo esplicito può facoltativamente apparire prima o dopo il testo, delimitato da due punti. Per esempio:

This is `interpreted text` using the default role.

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

Sembra che ci sia un coderuolo , quindi puoi semplicemente digitare

:code:`a = b + c`

per rendere un blocco di codice in linea. Per ottenere l'evidenziazione della sintassi è possibile definire un ruolo personalizzato. Per esempio

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

che puoi utilizzare in questo modo:

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

Si noti che la definizione del ruolo deve essere posizionata prima dei riferimenti al ruolo.

Nota, il documento a cui mi collego non menziona la versione di docutils a cui si riferisce. Il ruolo del codice non è disponibile in docutils 0.8.1 (che è l'unica versione con cui devo testare).


4
si prega di notare questo problema quando si utilizza sphinx: stackoverflow.com/questions/21591107/…
Donatello
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.