Могу ли я создать собственный литеральный класс в RST? - PullRequest
0 голосов
/ 04 ноября 2019

Я пишу несколько учебных пособий по кодированию в rST / Sphinx, и я хотел бы дифференцировать ввод (то есть: кодовый блок) от вывода (в терминал). Поскольку выходные данные тоже должны быть буквальными, я не могу просто использовать пользовательский класс или контейнер, так как они по-прежнему интерпретируются и отображаются некорректно (см. Ниже). Как я могу создать класс или контейнер или что-то, что я могу применить к подмножеству литеральных блоков?

Обратите внимание, что это не должно быть чем-то причудливым - возможно, просто изменив цвет фона на моих «выходных» блоках по сравнению с моими блоками «кодовых блоков».

Я пробовал:

Создание пользовательского класса с именем "терминал", но он все еще интерпретируется и возвращает ошибки о его содержимом:

.. container:: terminal

    -----------------------------------------------
                  MY **EXAMPLE** GOES HERE   
    -----------------------------------------------

... создает интерпретированный вывод, класс применяется правильно, но горизонтальные линии отсутствуют, «ПРИМЕР» выделен жирным шрифтом и т. д.

Вложение литерального блока в контейнер терминала:

::

    .. container:: terminal

        -----------------------------------------------
                    MY **EXAMPLE** GOES HERE   
        -----------------------------------------------

... создает литеральный вывод, отформатированный как вводкод:

.. container:: terminal

    -----------------------------------------------
                MY **EXAMPLE** GOES HERE
    -----------------------------------------------

Вложение наоборот:

.. container:: terminal

    ::

    -----------------------------------------------
            MY **EXAMPLE** GOES HERE
    -----------------------------------------------

... создает div с форматированием terminal вокруг вложенного div с литеральным блоком, который сохраняетстандартное буквальное форматирование (которое я хочу перевернуть).

Я думаю, должно быть что-то очень простое, что мне не хватает, но я действительно не вижу этого!

1 Ответ

0 голосов
/ 04 ноября 2019

Попробуйте .. code-block:: bash, где "bash" - это имя языка, к которому вы хотите применить подсветку синтаксиса. Доступные синтаксисы предоставляются Pygments как "лексеры".

.. code-block:: bash

    -----------------------------------------------
                  MY **EXAMPLE** GOES HERE   
    -----------------------------------------------

Если вы недовольны подсветкой синтаксиса, предоставляемой вашей темой Sphinx, вы можете переопределить ее с помощью пользовательскогоstyle .

В качестве примера того, что возможно, я изменил стиль для определенного селектора. Поместите что-то похожее в CSS вашей темы.

div.highlight-text > table > tbody > tr > td.code > div > pre {
    background-color: #32cd32;
}

Custom Sphinx Style

...